diff --git a/README.md b/README.md
index 45e7619b..0ff914c3 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
[![Build Status](https://github.com/aneisch/home-assistant-config/actions/workflows/check-ha-release-compatibility.yml/badge.svg)](https://github.com/aneisch/home-assistant-config/actions)
[![GitHub last commit](https://img.shields.io/github/last-commit/aneisch/home-assistant-config)](https://github.com/aneisch/home-assistant-config/commits/master)
[![GitHub commit activity](https://img.shields.io/github/commit-activity/y/aneisch/home-assistant-config)](https://github.com/aneisch/home-assistant-config/graphs/commit-activity)
-[![HA Version](https://img.shields.io/badge/Running%20Home%20Assistant-2024.8.3%20(Latest)-brightgreen)](https://github.com/home-assistant/home-assistant/releases/latest)
+[![HA Version](https://img.shields.io/badge/Running%20Home%20Assistant-2024.9.3%20(Latest)-brightgreen)](https://github.com/home-assistant/home-assistant/releases/latest)
I do my best to keep [Home Assistant](https://github.com/home-assistant/home-assistant) on the [latest release](https://github.com/home-assistant/home-assistant/releases/latest). I'm heavily utilizing [AppDaemon](http://appdaemon.readthedocs.io/en/latest/) and [NodeRed](https://flows.nodered.org/node/node-red-contrib-home-assistant-websocket) for advanced/templated automations. See [Appdaemon config](https://github.com/aneisch/home-assistant-config/tree/master/extras/appdaemon) and my NodeRed screenshots below for details. Most of my setup is run as Docker containers (see [docker-compose](https://github.com/aneisch/home-assistant-config/tree/master/extras/docker-compose) for container list).
@@ -58,55 +58,55 @@ Home Assistant and other containers have ingress handled automatically by [Traef
## Some statistics about my installation:
Description | value
-- | --
-Lines of ESPHome YAML | 3254
-Lines of Home Assistant YAML | 9685
-[Integrations](https://www.home-assistant.io/integrations/) in use | 62
+Lines of ESPHome YAML | 3250
+Lines of Home Assistant YAML | 9707
+[Integrations](https://www.home-assistant.io/integrations/) in use | 64
Zigbee devices in [`zha`](https://www.home-assistant.io/integrations/zha/) | 26
Z-Wave devices in [`zwave_js`](https://www.home-assistant.io/integrations/zwave_js/) | 37
Description | value
-- | --
-Entities in the [`automation`](https://www.home-assistant.io/components/automation) domain | 129
-Entities in the [`binary_sensor`](https://www.home-assistant.io/components/binary_sensor) domain | 157
-Entities in the [`button`](https://www.home-assistant.io/components/button) domain | 46
+Entities in the [`automation`](https://www.home-assistant.io/components/automation) domain | 130
+Entities in the [`binary_sensor`](https://www.home-assistant.io/components/binary_sensor) domain | 162
+Entities in the [`button`](https://www.home-assistant.io/components/button) domain | 48
Entities in the [`camera`](https://www.home-assistant.io/components/camera) domain | 16
-Entities in the [`climate`](https://www.home-assistant.io/components/climate) domain | 1
+Entities in the [`climate`](https://www.home-assistant.io/components/climate) domain | 2
Entities in the [`conversation`](https://www.home-assistant.io/components/conversation) domain | 2
Entities in the [`counter`](https://www.home-assistant.io/components/counter) domain | 1
Entities in the [`cover`](https://www.home-assistant.io/components/cover) domain | 16
Entities in the [`datetime`](https://www.home-assistant.io/components/datetime) domain | 6
-Entities in the [`device_tracker`](https://www.home-assistant.io/components/device_tracker) domain | 4
+Entities in the [`device_tracker`](https://www.home-assistant.io/components/device_tracker) domain | 6
Entities in the [`event`](https://www.home-assistant.io/components/event) domain | 14
Entities in the [`fan`](https://www.home-assistant.io/components/fan) domain | 3
Entities in the [`group`](https://www.home-assistant.io/components/group) domain | 19
Entities in the [`image`](https://www.home-assistant.io/components/image) domain | 8
-Entities in the [`input_boolean`](https://www.home-assistant.io/components/input_boolean) domain | 30
+Entities in the [`input_boolean`](https://www.home-assistant.io/components/input_boolean) domain | 31
Entities in the [`input_datetime`](https://www.home-assistant.io/components/input_datetime) domain | 33
Entities in the [`input_number`](https://www.home-assistant.io/components/input_number) domain | 6
Entities in the [`input_select`](https://www.home-assistant.io/components/input_select) domain | 19
Entities in the [`input_text`](https://www.home-assistant.io/components/input_text) domain | 16
Entities in the [`light`](https://www.home-assistant.io/components/light) domain | 39
-Entities in the [`lock`](https://www.home-assistant.io/components/lock) domain | 4
+Entities in the [`lock`](https://www.home-assistant.io/components/lock) domain | 5
Entities in the [`media_player`](https://www.home-assistant.io/components/media_player) domain | 19
Entities in the [`notify`](https://www.home-assistant.io/components/notify) domain | 2
-Entities in the [`number`](https://www.home-assistant.io/components/number) domain | 15
+Entities in the [`number`](https://www.home-assistant.io/components/number) domain | 16
Entities in the [`person`](https://www.home-assistant.io/components/person) domain | 2
Entities in the [`plant`](https://www.home-assistant.io/components/plant) domain | 1
Entities in the [`remote`](https://www.home-assistant.io/components/remote) domain | 4
-Entities in the [`script`](https://www.home-assistant.io/components/script) domain | 51
-Entities in the [`select`](https://www.home-assistant.io/components/select) domain | 4
-Entities in the [`sensor`](https://www.home-assistant.io/components/sensor) domain | 523
+Entities in the [`script`](https://www.home-assistant.io/components/script) domain | 52
+Entities in the [`select`](https://www.home-assistant.io/components/select) domain | 8
+Entities in the [`sensor`](https://www.home-assistant.io/components/sensor) domain | 543
Entities in the [`setter`](https://www.home-assistant.io/components/setter) domain | 1
Entities in the [`siren`](https://www.home-assistant.io/components/siren) domain | 1
Entities in the [`sun`](https://www.home-assistant.io/components/sun) domain | 1
-Entities in the [`switch`](https://www.home-assistant.io/components/switch) domain | 186
+Entities in the [`switch`](https://www.home-assistant.io/components/switch) domain | 189
Entities in the [`timer`](https://www.home-assistant.io/components/timer) domain | 6
Entities in the [`tts`](https://www.home-assistant.io/components/tts) domain | 1
-Entities in the [`update`](https://www.home-assistant.io/components/update) domain | 81
+Entities in the [`update`](https://www.home-assistant.io/components/update) domain | 84
Entities in the [`vacuum`](https://www.home-assistant.io/components/vacuum) domain | 1
Entities in the [`weather`](https://www.home-assistant.io/components/weather) domain | 1
Entities in the [`zone`](https://www.home-assistant.io/components/zone) domain | 6
-**Total state objects** | **1475**
+**Total state objects** | **1520**
## The HACS integrations/plugins that I use:
**Appdaemon**:
@@ -128,12 +128,14 @@ Entities in the [`zone`](https://www.home-assistant.io/components/zone) domain |
[AlexxIT/WebRTC](https://github.com/AlexxIT/WebRTC)
[PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor](https://github.com/PiotrMachowski/Home-Assistant-custom-components-Xiaomi-Cloud-Map-Extractor)
[alandtse/alexa_media_player](https://github.com/alandtse/alexa_media_player)
+[alandtse/tesla](https://github.com/alandtse/tesla)
[blakeblackshear/frigate-hass-integration](https://github.com/blakeblackshear/frigate-hass-integration)
[claytonjn/hass-circadian_lighting](https://github.com/claytonjn/hass-circadian_lighting)
[custom-components/readme](https://github.com/custom-components/readme)
[dlashua/hass-setter](https://github.com/dlashua/hass-setter)
[frenck/spook](https://github.com/frenck/spook)
[hacs/integration](https://github.com/hacs/integration)
+[magico13/ha-emporia-vue](https://github.com/magico13/ha-emporia-vue)
[moralmunky/Home-Assistant-Mail-And-Packages](https://github.com/moralmunky/Home-Assistant-Mail-And-Packages)
[rospogrigio/localtuya](https://github.com/rospogrigio/localtuya)
[rroller/dahua](https://github.com/rroller/dahua)
diff --git a/alexa.yaml b/alexa.yaml
index f8f5ed7e..40d97928 100644
--- a/alexa.yaml
+++ b/alexa.yaml
@@ -107,6 +107,7 @@ smart_home:
- switch.ferris_wheel
- switch.nativity
- switch.santa_tree
+ - script.surround_mute
entity_config:
climate.thermostat:
diff --git a/automations.yaml b/automations.yaml
index 3c1b7f8b..518ff3ce 100644
--- a/automations.yaml
+++ b/automations.yaml
@@ -1238,6 +1238,8 @@
- Error
- Waste container warning
- Warning
+ - Water empty
+ - Internal Error
condition: []
action:
- action: notify.signal_homeassistant
@@ -1246,3 +1248,19 @@
'
mode: single
+- id: '1727469189792'
+ alias: Total Power Alert
+ description: ''
+ trigger:
+ - platform: numeric_state
+ entity_id:
+ - sensor.total_power
+ above: 18000
+ condition: []
+ action:
+ - action: script.notify_wrapper
+ data:
+ message: Total power has exceeded 18k Watts! Currently {{trigger.to_state.state}}
+ data:
+ priority: 1
+ mode: single
diff --git a/configuration.yaml b/configuration.yaml
index 619617f9..7b7cd1b8 100644
--- a/configuration.yaml
+++ b/configuration.yaml
@@ -456,7 +456,7 @@ readme:
# ORDER BY
# COUNT(*) DESC;
recorder:
- db_url: mysql://homeassistant:homeassistant@127.0.0.1/homeassistant?charset=utf8
+ db_url: mysql://homeassistant:homeassistant@127.0.0.1/homeassistant?charset=utf8mb4
purge_keep_days: 182
commit_interval: 30
exclude:
diff --git a/custom_components/alexa_media/.translations/de.json b/custom_components/alexa_media/.translations/de.json
index 9e830f1e..b7d96f96 100644
--- a/custom_components/alexa_media/.translations/de.json
+++ b/custom_components/alexa_media/.translations/de.json
@@ -34,7 +34,7 @@
"debug": "Erweitertes Debugging",
"email": "E-Mail-Adresse",
"exclude_devices": "Ausgeschlossene Geräte (Komma getrennt)",
- "extended_entity_discovery": "Include devices connected via Echo",
+ "extended_entity_discovery": "Über Echo verbundene Geräte einbeziehen",
"hass_url": "Home Assistant-URL",
"include_devices": "Eingebundene Geräte (Komma getrennt)",
"otp_secret": "Integrierter 2FA-App-Schlüssel (automatisch generierte 2FA-Code)",
@@ -62,8 +62,8 @@
"queue_delay": "Sekunden zu warten, um Befehle in die Warteschlange zu stellen",
"scan_interval": "Sekunden zwischen den Scans"
},
- "description": "Required *",
- "title": "Alexa Media Player - Reconfiguration"
+ "description": "Erforderlich *",
+ "title": "Alexa Media Player - Neukonfiguration"
}
}
},
diff --git a/custom_components/alexa_media/__init__.py b/custom_components/alexa_media/__init__.py
index 594def60..d561e3c5 100644
--- a/custom_components/alexa_media/__init__.py
+++ b/custom_components/alexa_media/__init__.py
@@ -26,6 +26,7 @@
hide_serial,
obfuscate,
)
+from alexapy.helpers import delete_cookie as alexapy_delete_cookie
import async_timeout
from homeassistant import util
from homeassistant.components.persistent_notification import (
@@ -53,7 +54,7 @@
import voluptuous as vol
from .alexa_entity import AlexaEntityData, get_entity_data, parse_alexa_entities
-from .config_flow import in_progess_instances
+from .config_flow import in_progress_instances
from .const import (
ALEXA_COMPONENTS,
CONF_ACCOUNTS,
@@ -1297,15 +1298,19 @@ async def http2_error_handler(message):
async def async_unload_entry(hass, entry) -> bool:
- """Unload a config entry."""
+ """Unload a config entry"""
email = entry.data["email"]
login_obj = hass.data[DATA_ALEXAMEDIA]["accounts"][email]["login_obj"]
- _LOGGER.debug("Attempting to unload entry for %s", hide_email(email))
+ _LOGGER.debug("Unloading entry: %s", hide_email(email))
for component in ALEXA_COMPONENTS + DEPENDENT_ALEXA_COMPONENTS:
- _LOGGER.debug("Forwarding unload entry to %s", component)
- await hass.config_entries.async_forward_entry_unload(entry, component)
- # notify has to be handled manually as the forward does not work yet
- await notify_async_unload_entry(hass, entry)
+ try:
+ if component == "notify":
+ await notify_async_unload_entry(hass, entry)
+ else:
+ _LOGGER.debug("Forwarding unload entry to %s", component)
+ await hass.config_entries.async_forward_entry_unload(entry, component)
+ except Exception as ex:
+ _LOGGER.error("Error unloading: %s", component)
await close_connections(hass, email)
for listener in hass.data[DATA_ALEXAMEDIA]["accounts"][email][DATA_LISTENER]:
listener()
@@ -1341,22 +1346,6 @@ async def async_unload_entry(hass, entry) -> bool:
_LOGGER.debug("Removing alexa_media data structure")
if hass.data.get(DATA_ALEXAMEDIA):
hass.data.pop(DATA_ALEXAMEDIA)
- # Delete cookiefile
- if callable(getattr(AlexaLogin, "delete_cookiefile", None)):
- try:
- await login_obj.delete_cookiefile()
- _LOGGER.debug("Deleted cookiefile")
- except Exception as ex:
- _LOGGER.error(
- "Failed to delete cookiefile: %s",
- ex,
- )
- else:
- _LOGGER.warn(
- "Could not remove cookiefile: /config/.storage/alexa_media.%s.pickle."
- " Please manually delete the file.",
- email,
- )
else:
_LOGGER.debug(
"Unable to remove alexa_media data structure: %s",
@@ -1366,6 +1355,53 @@ async def async_unload_entry(hass, entry) -> bool:
return True
+async def async_remove_entry(hass, entry) -> bool:
+ """Handle removal of an entry."""
+ email = entry.data["email"]
+ obfuscated_email = hide_email(email)
+ _LOGGER.debug("Removing config entry: %s", hide_email(email))
+ login_obj = AlexaLogin(
+ url="",
+ email=email,
+ password="",
+ outputpath=hass.config.path,
+ )
+ # Delete cookiefile
+ cookiefile = hass.config.path(f".storage/{DOMAIN}.{email}.pickle")
+ obfuscated_cookiefile = hass.config.path(
+ f".storage/{DOMAIN}.{obfuscated_email}.pickle"
+ )
+ if callable(getattr(AlexaLogin, "delete_cookiefile", None)):
+ try:
+ await login_obj.delete_cookiefile()
+ _LOGGER.debug("Cookiefile %s deleted.", obfuscated_cookiefile)
+ except Exception as ex:
+ _LOGGER.error(
+ "delete_cookiefile() exception: %s;"
+ " Manually delete cookiefile before re-adding the integration: %s",
+ ex,
+ obfuscated_cookiefile,
+ )
+ else:
+ if os.path.exists(cookiefile):
+ try:
+ await alexapy_delete_cookie(cookiefile)
+ _LOGGER.debug(
+ "Successfully deleted cookiefile: %s", obfuscated_cookiefile
+ )
+ except (OSError, EOFError, TypeError, AttributeError) as ex:
+ _LOGGER.error(
+ "alexapy_delete_cookie() exception: %s;"
+ " Manually delete cookiefile before re-adding the integration: %s",
+ ex,
+ obfuscated_cookiefile,
+ )
+ else:
+ _LOGGER.error("Cookiefile not found: %s", obfuscated_cookiefile)
+ _LOGGER.debug("Config entry %s removed.", obfuscated_email)
+ return True
+
+
async def close_connections(hass, email: str) -> None:
"""Clear open aiohttp connections for email."""
if (
@@ -1415,7 +1451,7 @@ async def test_login_status(hass, config_entry, login) -> bool:
if login.status and login.status.get("login_successful"):
return True
account = config_entry.data
- _LOGGER.debug("Logging in: %s %s", obfuscate(account), in_progess_instances(hass))
+ _LOGGER.debug("Logging in: %s %s", obfuscate(account), in_progress_instances(hass))
_LOGGER.debug("Login stats: %s", login.stats)
message: str = (
f"Reauthenticate {login.email} on the [Integrations](/config/integrations) page. "
@@ -1434,7 +1470,7 @@ async def test_login_status(hass, config_entry, login) -> bool:
f"{account[CONF_EMAIL]} - {account[CONF_URL]}"
)
if flow:
- if flow.get("flow_id") in in_progess_instances(hass):
+ if flow.get("flow_id") in in_progress_instances(hass):
_LOGGER.debug("Existing config flow detected")
return False
_LOGGER.debug("Stopping orphaned config flow %s", flow.get("flow_id"))
diff --git a/custom_components/alexa_media/alexa_entity.py b/custom_components/alexa_media/alexa_entity.py
index ccd277b5..2e24f741 100644
--- a/custom_components/alexa_media/alexa_entity.py
+++ b/custom_components/alexa_media/alexa_entity.py
@@ -350,10 +350,11 @@ def parse_temperature_from_coordinator(
coordinator: DataUpdateCoordinator, entity_id: str
) -> Optional[str]:
"""Get the temperature of an entity from the coordinator data."""
- value = parse_value_from_coordinator(
+ temperature = parse_value_from_coordinator(
coordinator, entity_id, "Alexa.TemperatureSensor", "temperature"
)
- return value.get("value") if value and "value" in value else None
+ _LOGGER.debug("parse_temperature_from_coordinator: %s", temperature)
+ return temperature
def parse_air_quality_from_coordinator(
diff --git a/custom_components/alexa_media/config_flow.py b/custom_components/alexa_media/config_flow.py
index 9dd32173..a026c163 100644
--- a/custom_components/alexa_media/config_flow.py
+++ b/custom_components/alexa_media/config_flow.py
@@ -84,9 +84,13 @@ def configured_instances(hass):
@callback
-def in_progess_instances(hass):
- """Return a set of in progress Alexa Media flows."""
- return {entry["flow_id"] for entry in hass.config_entries.flow.async_progress()}
+def in_progress_instances(hass):
+ """Return a set of in-progress Alexa Media flows."""
+ return {
+ entry["flow_id"]
+ for entry in hass.config_entries.flow.async_progress()
+ if entry["handler"] == DOMAIN # Ensure only Alexa Media flows are included
+ }
@config_entries.HANDLERS.register(DOMAIN)
@@ -646,7 +650,8 @@ async def _test_login(self):
event_data={"email": hide_email(email), "url": login.url},
)
async_dismiss_persistent_notification(
- f"alexa_media_{slugify(email)}{slugify(login.url[7:])}"
+ self.hass,
+ notification_id=f"alexa_media_{slugify(email)}{slugify(login.url[7:])}",
)
if not self.hass.data[DATA_ALEXAMEDIA]["accounts"].get(
self.config[CONF_EMAIL]
@@ -699,7 +704,8 @@ async def _test_login(self):
_LOGGER.debug("Login failed: %s", login.status.get("login_failed"))
await login.close()
async_dismiss_persistent_notification(
- f"alexa_media_{slugify(email)}{slugify(login.url[7:])}"
+ self.hass,
+ notification_id=f"alexa_media_{slugify(email)}{slugify(login.url[7:])}",
)
return self.async_abort(reason="login_failed")
new_schema = self._update_schema_defaults()
diff --git a/custom_components/alexa_media/const.py b/custom_components/alexa_media/const.py
index abddbfaa..679ff8ff 100644
--- a/custom_components/alexa_media/const.py
+++ b/custom_components/alexa_media/const.py
@@ -15,7 +15,7 @@
PERCENTAGE,
)
-__version__ = "4.12.11"
+__version__ = "4.13.2"
PROJECT_URL = "https://github.com/alandtse/alexa_media_player/"
ISSUE_URL = f"{PROJECT_URL}issues"
NOTIFY_URL = f"{PROJECT_URL}wiki/Configuration%3A-Notification-Component#use-the-notifyalexa_media-service"
@@ -139,3 +139,180 @@
ALEXA_ICON_DEFAULT = "mdi:molecule"
UPLOAD_PATH = "www/alexa_tts"
+
+# Note: Some of these are likely wrong
+MODEL_IDS = {
+ "A10A33FOX2NUBK": "Echo Spot (Gen1)",
+ "A10L5JEZTKKCZ8": "Vobot Bunny",
+ "A11QM4H9HGV71H": "Echo Show 5 (Gen3)",
+ "A12GXV8XMS007S": "Fire TV (Gen1)",
+ "A12IZU8NMHSY5U": "Generic Device",
+ "A132LT22WVG6X5": "Samsung Soundbar Q700A",
+ "A13B2WB920IZ7X": "Samsung HW-Q70T Soundbar",
+ "A13W6HQIHKEN3Z": "Echo Auto",
+ "A14ZH95E6SE9Z1": "Bose Home Speaker 300",
+ "A15996VY63BQ2D": "Echo Show 8 (Gen2)",
+ "A15ERDAKK5HQQG": "Sonos",
+ "A15QWUTQ6FSMYX": "Echo Buds (Gen2)",
+ "A16MZVIFVHX6P6": "Generic Echo",
+ "A17LGWINFBUTZZ": "Anker Roav Viva",
+ "A18BI6KPKDOEI4": "Ecobee4",
+ "A18O6U1UQFJ0XK": "Echo Plus (Gen2)",
+ "A18TCD9FP10WJ9": "Orbi Voice",
+ "A18X8OBWBCSLD8": "Samsung Soundbar",
+ "A195TXHV1M5D4A": "Echo Auto",
+ "A1C66CX2XD756O": "Fire Tablet HD",
+ "A1EIANJ7PNB0Q7": "Echo Show 15 (Gen1)",
+ "A1ENT81UXFMNNO": "Unknown",
+ "A1ETW4IXK2PYBP": "Talk to Alexa",
+ "A1F1F76XIW4DHQ": "Unknown TV",
+ "A1F8D55J0FWDTN": "Fire TV (Toshiba)",
+ "A1H0CMF1XM0ZP4": "Bose SoundTouch 30",
+ "A1J16TEDOYCZTN": "Fire Tablet",
+ "A1JJ0KFC4ZPNJ3": "Echo Input",
+ "A1L4KDRIILU6N9": "Sony Speaker",
+ "A1LOQ8ZHF4G510": "Samsung Soundbar Q990B",
+ "A1M0A9L9HDBID3": "One-Link Safe and Sound",
+ "A1MUORL8FP149X": "Unknown",
+ "A1N9SW0I0LUX5Y": "Ford/Lincoln Alexa App",
+ "A1NL4BVLQ4L3N3": "Echo Show (Gen1)",
+ "A1NQ0LXWBGVQS9": "2021 Samsung QLED TV",
+ "A1P31Q3MOWSHOD": "Zolo Halo Speaker",
+ "A1P7E7V3FCZKU6": "Fire TV (Gen3)",
+ "A1Q69AKRWLJC0F": "TV",
+ "A1Q7QCGNMXAKYW": "Generic Tablet",
+ "A1QKZ9D0IJY332": "Samsung TV 2020-U",
+ "A1RABVCI4QCIKC": "Echo Dot (Gen3)",
+ "A1RTAM01W29CUP": "Windows App",
+ "A1SCI5MODUBAT1": "Pioneer DMH-W466NEX",
+ "A1TD5Z1R8IWBHA": "Tablet",
+ "A1VGB7MHSIEYFK": "Fire TV Cube Gen3",
+ "A1W2YILXTG9HA7": "Nextbase 522GW Dashcam",
+ "A1W46V57KES4B5": "Cable TV box Brazil",
+ "A1WZKXFLI43K86": "Fire TV Stick MAX",
+ "A1XWJRHALS1REP": "Echo Show 5 (Gen2)",
+ "A1Z88NGR2BK6A2": "Echo Show 8 (Gen1)",
+ "A25EC4GIHFOCSG": "Unrecognized Media Player",
+ "A25OJWHZA1MWNB": "2021 Samsung QLED TV",
+ "A265XOI9586NML": "Fire TV Stick",
+ "A27VEYGQBW3YR5": "Echo Link",
+ "A2A3XFQ1AVYLHZ": "SONY WF-1000XM5",
+ "A2BRQDVMSZD13S": "SURE Universal Remote",
+ "A2C8J6UHV0KFCV": "Alexa Gear",
+ "A2DS1Q2TPDJ48U": "Echo Dot Clock (Gen5)",
+ "A2E0SNTXJVT7WK": "Fire TV (Gen2)",
+ "A2E5N6DMWCW8MZ": "Brilliant Smart Switch",
+ "A2EZ3TS0L1S2KV": "Sonos Beam",
+ "A2GFL5ZMWNE0PX": "Fire TV (Gen3)",
+ "A2H4LV5GIZ1JFT": "Echo Dot Clock (Gen4)",
+ "A2HZENIFNYTXZD": "Facebook Portal",
+ "A2I0SCCU3561Y8": "Samsung Soundbar Q800A",
+ "A2IS7199CJBT71": "TV",
+ "A2IVLV5VM2W81": "Alexa Mobile Voice iOS",
+ "A2J0R2SD7G9LPA": "Lenovo SmartTab M10",
+ "A2JKHJ0PX4J3L3": "Fire TV Cube (Gen2)",
+ "A2LH725P8DQR2A": "Fabriq Riff",
+ "A2LWARUGJLBYEW": "Fire TV Stick (Gen2)",
+ "A2M35JJZWCQOMZ": "Echo Plus (Gen1)",
+ "A2M4YX06LWP8WI": "Fire Tablet",
+ "A2N49KXGVA18AR": "Fire Tablet HD 10 Plus",
+ "A2OSP3UA4VC85F": "Sonos",
+ "A2R2GLZH1DFYQO": "Zolo Halo Speaker",
+ "A2RU4B77X9R9NZ": "Echo Link Amp",
+ "A2TF17PFR55MTB": "Alexa Mobile Voice Android",
+ "A2TTLILJHVNI9X": "LG TV",
+ "A2U21SRK4QGSE1": "Echo Dot Clock (Gen4)",
+ "A2UONLFQW0PADH": "Echo Show 8 (Gen3)",
+ "A2V9UEGZ82H4KZ": "Fire Tablet HD 10",
+ "A2VAXZ7UNGY4ZH": "Wyze Headphones",
+ "A2WFDCBDEXOXR8": "Bose Soundbar 700",
+ "A2WJ2CM9ARLMRH": "Rivian Electric Vehicle",
+ "A2WN1FJ2HG09UN": "Ultimate Alexa App",
+ "A2X8WT9JELC577": "Ecobee5",
+ "A2XPGY5LRKB9BE": "Fitbit Versa 2",
+ "A2Y04QPFCANLPQ": "Bose QuietComfort 35 II",
+ "A303PJF6ISQ7IC": "Echo Auto",
+ "A30YDR2MK8HMRV": "Echo (Gen3)",
+ "A31DTMEEVDDOIV": "Fire TV Stick Lite",
+ "A324YMIUSWQDGE": "Samsung 8K TV",
+ "A32DDESGESSHZA": "Echo Dot (Gen3)",
+ "A32DOYMUN6DTXA": "Echo Dot (Gen3)",
+ "A339L426Y220I4": "Teufel Radio",
+ "A347G2JC8I4HC7": "Roav Car Charger Pro",
+ "A37CFAHI1O0CXT": "Logitech Blast",
+ "A37M7RU8Z6ZFB": "Garmin Speak",
+ "A37SHHQ3NUL7B5": "Bose Home Speaker 500",
+ "A38949IHXHRQ5P": "Echo Tap",
+ "A38BPK7OW001EX": "Raspberry Alexa",
+ "A38EHHIB10L47V": "Fire Tablet HD 8",
+ "A39BU42XNMN516": "Generic Device",
+ "A3B50IC5QPZPWP": "Polk Command Bar",
+ "A3B5K1G3EITBIF": "Facebook Portal",
+ "A3BRT6REMPQWA8": "Bose Home Speaker 450",
+ "A3BW5ZVFHRCQPO": "BMW Alexa Integration",
+ "A3C9PE6TNYLTCH": "Speaker Group",
+ "A3CY98NH016S5F": "Facebook Portal Mini",
+ "A3D4YURNTARP5K": "Facebook Portal TV",
+ "A3EH2E0YZ30OD6": "Echo Spot (Gen2)",
+ "A3EVMLQTU6WL1W": "Fire TV (GenX)",
+ "A3F1S88NTZZXS9": "Dash Wand",
+ "A3FX4UWTP28V1P": "Echo (Gen3)",
+ "A3GFRGUNIGG1I5": "Samsung TV QN50Q60CAGXZD",
+ "A3HF4YRA2L7XGC": "Fire TV Cube",
+ "A3IYPH06PH1HRA": "Echo Frames",
+ "A3K69RS3EIMXPI": "Hisense Smart TV",
+ "A3KULB3NQN7Z1F": "Unknown TV",
+ "A3L0T0VL9A921N": "Fire Tablet HD 8",
+ "A3NPD82ABCPIDP": "Sonos Beam",
+ "A3QPPX1R9W5RJV": "Fabriq Chorus",
+ "A3QS1XP2U6UJX9": "SONY WF-1000XM4",
+ "A3R9S4ZZECZ6YL": "Fire Tablet HD 10",
+ "A3RBAYBE7VM004": "Echo Studio",
+ "A3RCTOK2V0A4ZG": "LG TV",
+ "A3RMGO6LYLH7YN": "Echo Dot (Gen4)",
+ "A3S5BH2HU6VAYF": "Echo Dot (Gen2)",
+ "A3SSG6GR8UU7SN": "Echo Sub",
+ "A3SSWQ04XYPXBH": "Generic Tablet",
+ "A3TCJ8RTT3NVI7": "Alexa Listens",
+ "A3VRME03NAXFUB": "Echo Flex",
+ "A4ZP7ZC4PI6TO": "Echo Show 5 (Gen1)",
+ "A4ZXE0RM7LQ7A": "Echo Dot (Gen5)",
+ "A52ARKF0HM2T4": "Facebook Portal+",
+ "A6SIQKETF3L2E": "Unknown Device",
+ "A7WXQPH584YP": "Echo (Gen2)",
+ "A81PNL0A63P93": "Home Remote",
+ "A8DM4FYR6D3HT": "TV",
+ "AA1IN44SS3X6O": "Ecobee Thermostat Premium",
+ "AB72C64C86AW2": "Echo (Gen1)",
+ "ABJ2EHL7HQT4L": "Unknown Amplifier",
+ "ADVBD696BHNV5": "Fire TV Stick (Gen1)",
+ "AE7X7Z227NFNS": "HiMirror Mini",
+ "AF473ZSOIRKFJ": "Onkyo VC-PX30",
+ "AFF50AL5E3DIU": "Fire TV (Insignia)",
+ "AFF5OAL5E3DIU": "Fire TV",
+ "AGHZIK8D6X7QR": "Fire TV",
+ "AHJYKVA63YCAQ": "Sonos",
+ "AIPK7MM90V7TB": "Echo Show 10 (Gen3)",
+ "AKKLQD9FZWWQS": "Jabra Elite",
+ "AKNO1N0KSFN8L": "Echo Dot (Gen1)",
+ "AKO51L5QAQKL2": "Alexa Jams",
+ "AKPGW064GI9HE": "Fire TV Stick 4K (Gen3)",
+ "ALCIV0P5M8TZ0": "Samsung Soundbar S800B",
+ "ALT9P69K6LORD": "Echo Auto",
+ "AMCZ48H33RCDF": "Samsung HW-Q910B 9.1.2 ch Soundbar",
+ "AN630UQPG2CA4": "Fire TV (Toshiba)",
+ "AO6HHP9UE6EOF": "Unknown Media Device",
+ "AP1F6KUH00XPV": "Stereo/Subwoofer Pair",
+ "AP4RS91ZQ0OOI": "Fire TV (Toshiba)",
+ "APHEAY6LX7T13": "Samsung Smart Refrigerator",
+ "AQCGW9PSYWRF": "TV",
+ "AR6X0XNIME80V": "Unknown TV",
+ "ASQZWP4GPYUT7": "Echo Pop",
+ "ATNLRCEBX3W4P": "Generic Tablet",
+ "AUPUQSVCVHXP0": "Ecobee Switch+",
+ "AVD3HM0HOJAAL": "Sonos",
+ "AVE5HX13UR5NO": "Logitech Zero Touch",
+ "AVN2TMX8MU2YM": "Bose Home Speaker 500",
+ "AVU7CPPF2ZRAS": "Fire Tablet HD 8",
+ "AWZZ5CVHX2CD": "Echo Show (Gen2)",
+}
diff --git a/custom_components/alexa_media/manifest.json b/custom_components/alexa_media/manifest.json
index 7ee58639..1b34116b 100644
--- a/custom_components/alexa_media/manifest.json
+++ b/custom_components/alexa_media/manifest.json
@@ -8,6 +8,6 @@
"iot_class": "cloud_polling",
"issue_tracker": "https://github.com/alandtse/alexa_media_player/issues",
"loggers": ["alexapy", "authcaptureproxy"],
- "requirements": ["alexapy==1.28.2", "packaging>=20.3", "wrapt>=1.14.0"],
- "version": "4.12.11"
+ "requirements": ["alexapy==1.29.2", "packaging>=20.3", "wrapt>=1.14.0"],
+ "version": "4.13.2"
}
diff --git a/custom_components/alexa_media/media_player.py b/custom_components/alexa_media/media_player.py
index ae2c79de..b5455f9b 100644
--- a/custom_components/alexa_media/media_player.py
+++ b/custom_components/alexa_media/media_player.py
@@ -44,6 +44,7 @@
DEPENDENT_ALEXA_COMPONENTS,
MIN_TIME_BETWEEN_FORCED_SCANS,
MIN_TIME_BETWEEN_SCANS,
+ MODEL_IDS,
PLAY_SCAN_INTERVAL,
UPLOAD_PATH,
)
@@ -180,9 +181,14 @@ async def async_setup_entry(hass, config_entry, async_add_devices):
_LOGGER.debug(
"%s: Loading config entry for %s", hide_email(account), component
)
- await hass.config_entries.async_forward_entry_setups(
- config_entry, [component]
- )
+ try:
+ await hass.config_entries.async_forward_entry_setups(
+ config_entry, [component]
+ )
+ except (asyncio.TimeoutError, TimeoutException) as ex:
+ raise ConfigEntryNotReady(
+ f"Timeout while loading config entry for {component}"
+ ) from ex
return True
raise ConfigEntryNotReady
@@ -412,6 +418,15 @@ async def _refresh_if_no_audiopush(already_refreshed=False):
self.hass.data[DATA_ALEXAMEDIA]["accounts"][email]["http2"]
)
self.async_schedule_update_ha_state(force_refresh=force_refresh)
+ if self._last_called:
+ self.hass.bus.async_fire(
+ "alexa_media_last_called_event",
+ {
+ "last_called": self.device_serial_number,
+ "timestamp": self._last_called_timestamp,
+ "summary": self._last_called_summary,
+ },
+ )
elif "bluetooth_change" in event:
if event_serial == self.device_serial_number:
_LOGGER.debug(
@@ -1607,7 +1622,9 @@ def device_info(self):
"identifiers": {(ALEXA_DOMAIN, self.unique_id)},
"name": self.name,
"manufacturer": "Amazon",
- "model": f"{self._device_family} {self._device_type}",
+ "model": MODEL_IDS.get(
+ self._device_type, f"{self._device_family} {self._device_type}"
+ ),
"sw_version": self._software_version,
}
diff --git a/custom_components/alexa_media/sensor.py b/custom_components/alexa_media/sensor.py
index 6ad68bba..e66ef2ae 100644
--- a/custom_components/alexa_media/sensor.py
+++ b/custom_components/alexa_media/sensor.py
@@ -182,9 +182,10 @@ async def create_temperature_sensors(account_dict, temperature_entities):
coordinator = account_dict["coordinator"]
for temp in temperature_entities:
_LOGGER.debug(
- "Creating entity %s for a temperature sensor with name %s",
+ "Creating entity %s for a temperature sensor with name %s (%s)",
temp["id"],
temp["name"],
+ temp,
)
serial = temp["device_serial"]
device_info = lookup_device_info(account_dict, serial)
@@ -254,16 +255,25 @@ def __init__(self, coordinator, entity_id, name, media_player_device_id):
"""Initialize temperature sensor."""
super().__init__(coordinator)
self.alexa_entity_id = entity_id
+ # Need to append "+temperature" because the Alexa entityId is for a physical device
+ # and a single physical device can have multiple HA entities
+ self._attr_unique_id = entity_id + "_temperature"
self._attr_name = name + " Temperature"
self._attr_device_class = SensorDeviceClass.TEMPERATURE
self._attr_state_class = SensorStateClass.MEASUREMENT
- self._attr_native_value: Optional[datetime.datetime] = (
+ value_and_scale: Optional[datetime.datetime] = (
parse_temperature_from_coordinator(coordinator, entity_id)
)
- self._attr_native_unit_of_measurement: Optional[str] = UnitOfTemperature.CELSIUS
- # This includes "_temperature" because the Alexa entityId is for a physical device
- # A single physical device could have multiple HA entities
- self._attr_unique_id = entity_id + "_temperature"
+ self._attr_native_value = self._get_temperature_value(value_and_scale)
+ self._attr_native_unit_of_measurement = self._get_temperature_scale(
+ value_and_scale
+ )
+ _LOGGER.debug(
+ "Coordinator init: %s: %s %s",
+ self._attr_name,
+ self._attr_native_value,
+ self._attr_native_unit_of_measurement,
+ )
self._attr_device_info = (
{
"identifiers": {media_player_device_id},
@@ -276,11 +286,38 @@ def __init__(self, coordinator, entity_id, name, media_player_device_id):
@callback
def _handle_coordinator_update(self) -> None:
"""Handle updated data from the coordinator."""
- self._attr_native_value = parse_temperature_from_coordinator(
+ value_and_scale = parse_temperature_from_coordinator(
self.coordinator, self.alexa_entity_id
)
+ self._attr_native_value = self._get_temperature_value(value_and_scale)
+ self._attr_native_unit_of_measurement = self._get_temperature_scale(
+ value_and_scale
+ )
+ _LOGGER.debug(
+ "Coordinator update: %s: %s %s",
+ self._attr_name,
+ self._attr_native_value,
+ self._attr_native_unit_of_measurement,
+ )
super()._handle_coordinator_update()
+ def _get_temperature_value(self, value):
+ if value and "value" in value:
+ _LOGGER.debug("TemperatureSensor value: %s", value.get("value"))
+ return value.get("value")
+ return None
+
+ def _get_temperature_scale(self, value):
+ if value and "scale" in value:
+ _LOGGER.debug("TemperatureSensor scale: %s", value.get("scale"))
+ if value.get("scale") == "CELSIUS":
+ return UnitOfTemperature.CELSIUS
+ if value.get("scale") == "FAHRENHEIT":
+ return UnitOfTemperature.FAHRENHEIT
+ if value.get("scale") == "KELVIN":
+ return UnitOfTemperature.KELVIN
+ return None
+
class AirQualitySensor(SensorEntity, CoordinatorEntity):
"""A air quality sensor reported by an Amazon indoor air quality monitor."""
diff --git a/custom_components/alexa_media/translations/de.json b/custom_components/alexa_media/translations/de.json
index 9e830f1e..b7d96f96 100644
--- a/custom_components/alexa_media/translations/de.json
+++ b/custom_components/alexa_media/translations/de.json
@@ -34,7 +34,7 @@
"debug": "Erweitertes Debugging",
"email": "E-Mail-Adresse",
"exclude_devices": "Ausgeschlossene Geräte (Komma getrennt)",
- "extended_entity_discovery": "Include devices connected via Echo",
+ "extended_entity_discovery": "Über Echo verbundene Geräte einbeziehen",
"hass_url": "Home Assistant-URL",
"include_devices": "Eingebundene Geräte (Komma getrennt)",
"otp_secret": "Integrierter 2FA-App-Schlüssel (automatisch generierte 2FA-Code)",
@@ -62,8 +62,8 @@
"queue_delay": "Sekunden zu warten, um Befehle in die Warteschlange zu stellen",
"scan_interval": "Sekunden zwischen den Scans"
},
- "description": "Required *",
- "title": "Alexa Media Player - Reconfiguration"
+ "description": "Erforderlich *",
+ "title": "Alexa Media Player - Neukonfiguration"
}
}
},
diff --git a/custom_components/alexa_media/translations/es.json b/custom_components/alexa_media/translations/es.json
index ce234579..2f9d1fe9 100644
--- a/custom_components/alexa_media/translations/es.json
+++ b/custom_components/alexa_media/translations/es.json
@@ -34,7 +34,7 @@
"debug": "Depuración avanzada",
"email": "Dirección de correo electrónico",
"exclude_devices": "Dispositivo excluido (separado por comas)",
- "extended_entity_discovery": "Include devices connected via Echo",
+ "extended_entity_discovery": "Incluir dispositivos conectados vía Echo",
"hass_url": "Url para acceder a Home Assistant",
"include_devices": "Dispositivo incluido (separado por comas)",
"otp_secret": "Clave de aplicación 2FA incorporada (genera automáticamente códigos 2FA). Esto no tiene seis dígitos.",
@@ -62,8 +62,8 @@
"queue_delay": "Segundos a esperar para agrupar comandos",
"scan_interval": "Segundos entre escaneos"
},
- "description": "Required *",
- "title": "Alexa Media Player - Reconfiguration"
+ "description": "Obligatorio*",
+ "title": "Alexa Media Player - Reconfiguración"
}
}
},
diff --git a/custom_components/alexa_media/translations/ja.json b/custom_components/alexa_media/translations/ja.json
new file mode 100644
index 00000000..a890dfee
--- /dev/null
+++ b/custom_components/alexa_media/translations/ja.json
@@ -0,0 +1,106 @@
+{
+ "config": {
+ "abort": {
+ "forgot_password": "「パスワードを忘れた場合」ページが検出されました。これは通常、ログインに何度も失敗した結果です。Amazonでは、再ログインを試みる前に対応を求める場合があります。",
+ "login_failed": "Alexa Media Playerがログインに失敗しました。",
+ "reauth_successful": "Alexa Media Playerは正常に再認証されました。Home Assistant からの \"Aborted\" メッセージは無視してください。"
+ },
+ "error": {
+ "2fa_key_invalid": "無効な Built-In 2FA key",
+ "connection_error": "接続エラー:ネットワークを確認して再試行してください",
+ "identifier_exists": "Alexa URLのメールアドレスはすでに登録されています",
+ "invalid_credentials": "無効な資格情報",
+ "invalid_url": "URL が無効です:{message}",
+ "unable_to_connect_hass_url": "Home Assistant URL に接続できません。[設定] -> [全般] の [外部 URL] を確認してください。",
+ "unknown_error": "不明なエラー:{message}"
+ },
+ "step": {
+ "proxy_warning": {
+ "data": {
+ "proxy_warning": "無視して続行 - この警告を回避するためのログイン問題のサポートは提供されていないことを理解しています。"
+ },
+ "description": "Home Assistant サーバーへ、指定された URL {hass_url}で接続できません。 \n> {error}\n\nこの問題を解決するには、あなたのHome Assistant サーバーに{hass_url}でアクセスできることを確認してください。このフィールドは、[設定] -> [全般] の [外部 URL] からのものですが、内部 URL を試すこともできます。クライアントがこの URL にアクセスできることが 確実であれば、この警告をバイパスできます。",
+ "title": "Alexa Media Player - Home Assistant URLに接続できません"
+ },
+ "totp_register": {
+ "data": {
+ "registered": "Built-in 2FA App KeyからのOTPが正常に確認されました。"
+ },
+ "description": "** {email} - alexa. {url} **\nAmazon のBuilt-in 2FA App Keyからの OTP を正常に確認しましたか? \n>OTP コード{message}",
+ "title": "Alexa Media Player - OTP 確認"
+ },
+ "user": {
+ "data": {
+ "debug": "高度なデバッグ",
+ "email": "メールアドレス",
+ "exclude_devices": "除外するデバイス(カンマ区切り)",
+ "extended_entity_discovery": "Echo経由で接続されたデバイスを含める",
+ "hass_url": "Home AssistantにアクセスするためのURL",
+ "include_devices": "含まれるデバイス(カンマ区切り)",
+ "otp_secret": "Built-in 2FA App Key (自動生成 2FA コード). これは6桁ではありません。",
+ "password": "パスワード",
+ "queue_delay": "コマンドをキューにまとめて待機させる秒数",
+ "scan_interval": "スキャン間隔秒数",
+ "securitycode": "[%key_id:55616596%]",
+ "url": "Amazon 地域ドメイン (例: amazon.co.jp)"
+ },
+ "description": "以下の情報を確認してください。レガシー構成の場合は、`Use Login Proxy method`オプションを無効にしてください。",
+ "title": "Alexa Media Player - 設定"
+ }
+ }
+ },
+ "options": {
+ "step": {
+ "init": {
+ "data": {
+ "debug": "高度なデバッグ",
+ "exclude_devices": "除外するデバイス(カンマ区切り)",
+ "extended_entity_discovery": "Echo経由で接続されたデバイスを含める",
+ "hass_url": "Home Assistant にアクセスするための公開URL (末尾の '/' を含む)",
+ "include_devices": "含まれるデバイス(カンマ区切り)",
+ "public_url": "Home Assistant にアクセスするための公開URL (末尾の '/' を含む)",
+ "queue_delay": "コマンドをキューにまとめて待機させる秒数",
+ "scan_interval": "スキャン間隔秒数"
+ },
+ "description": "必須 *",
+ "title": "Alexa Media Player - 再設定"
+ }
+ }
+ },
+ "services": {
+ "clear_history": {
+ "description": "各AlexaアカウントのAlexa音声履歴から最後のエントリを消去します。",
+ "fields": {
+ "email": {
+ "description": "削除するアカウント 空にするとすべて削除されます",
+ "name": "メールアドレス"
+ },
+ "entries": {
+ "description": "クリアするエントリー数 (1〜50個)。空の場合は50個をクリア。",
+ "name": "エントリー数"
+ }
+ },
+ "name": "Amazon音声履歴を消去"
+ },
+ "force_logout": {
+ "description": "アカウントを強制的にログアウトさせます (主にデバッグに使用します)",
+ "fields": {
+ "email": {
+ "description": "削除するアカウント 空にするとすべて削除されます",
+ "name": "メールアドレス"
+ }
+ },
+ "name": "強制ログアウト"
+ },
+ "update_last_called": {
+ "description": "各Alexaアカウントの最後に呼び出されたEchoデバイスを強制的に更新します。",
+ "fields": {
+ "email": {
+ "description": "更新する Alexa アカウントの一覧。空の場合、既知のすべてのアカウントが更新されます。",
+ "name": "メールアドレス"
+ }
+ },
+ "name": "最後に呼び出されたセンサーを更新"
+ }
+ }
+}
diff --git a/custom_components/alexa_media/translations/pt-BR.json b/custom_components/alexa_media/translations/pt-BR.json
index 537744a3..a7ac4e0f 100644
--- a/custom_components/alexa_media/translations/pt-BR.json
+++ b/custom_components/alexa_media/translations/pt-BR.json
@@ -8,7 +8,7 @@
"error": {
"2fa_key_invalid": "Chave integrada 2FA inválida",
"connection_error": "Erro de conexão; verifique a sua conexão e tente novamente",
- "identifier_exists": "E-mail para URL Alexa já registrado",
+ "identifier_exists": "Email para URL Alexa já registrado",
"invalid_credentials": "Credenciais inválidas",
"invalid_url": "O URL é inválido: {message}",
"unable_to_connect_hass_url": "Não foi possível conectar ao URL do Home Assistant. Por favor, verifique o URL Externo em Configuração - > Geral",
@@ -32,10 +32,10 @@
"user": {
"data": {
"debug": "Depuração avançada",
- "email": "Endereço de e-mail",
+ "email": "Endereço de email",
"exclude_devices": "Dispositivos excluídos (separado por vírgula)",
"extended_entity_discovery": "Incluir dispositivos conectados via Echo",
- "hass_url": "Url para acesso ao Home Assistant",
+ "hass_url": "URL para acesso ao Home Assistant",
"include_devices": "Dispositivos incluídos (separado por vírgula)",
"otp_secret": "Chave de aplicativo 2FA integrada (gera códigos 2FA automaticamente). Isso não tem seis dígitos.",
"password": "Senha",
@@ -76,7 +76,7 @@
"name": "Endereço de email"
},
"entries": {
- "description": "\nNúmero de entradas para limpar de 1 a 50. Se deixar vazio, vai limpar as 50.",
+ "description": "Número de entradas para limpar de 1 a 50. Se deixar vazio, vai limpar as 50.",
"name": "Número de entradas"
}
},
diff --git a/custom_components/emporia_vue/__init__.py b/custom_components/emporia_vue/__init__.py
index 64b8bba3..7ef02fd0 100644
--- a/custom_components/emporia_vue/__init__.py
+++ b/custom_components/emporia_vue/__init__.py
@@ -1,32 +1,34 @@
"""The Emporia Vue integration."""
+
import asyncio
-from datetime import datetime, timedelta, timezone
-from typing import Any
-import dateutil.tz
-import dateutil.relativedelta
+from datetime import UTC, datetime, timedelta
import logging
+import re
+from typing import Any
+import dateutil.relativedelta
+import dateutil.tz
from pyemvue import PyEmVue
from pyemvue.device import (
VueDevice,
VueDeviceChannel,
- VueUsageDevice,
VueDeviceChannelUsage,
+ VueUsageDevice,
)
from pyemvue.enums import Scale
-import re
-
+import requests
import voluptuous as vol
-from homeassistant.config_entries import ConfigEntry, SOURCE_IMPORT
+from homeassistant.config_entries import SOURCE_IMPORT, ConfigEntry
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady, HomeAssistantError
-import homeassistant.helpers.config_validation as cv
from homeassistant.helpers import entity_registry as er
+import homeassistant.helpers.config_validation as cv
+from homeassistant.helpers.typing import ConfigType
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
-from .const import DOMAIN, VUE_DATA, ENABLE_1M, ENABLE_1D, ENABLE_1MON
+from .const import DOMAIN, ENABLE_1D, ENABLE_1M, ENABLE_1MON, VUE_DATA
CONFIG_SCHEMA = vol.Schema(
{
@@ -47,14 +49,15 @@
PLATFORMS = ["sensor", "switch"]
-DEVICE_GIDS: list[int] = []
+DEVICE_GIDS: list[str] = []
DEVICE_INFORMATION: dict[int, VueDevice] = {}
+DEVICES_ONLINE: list[str] = []
LAST_MINUTE_DATA: dict[str, Any] = {}
LAST_DAY_DATA: dict[str, Any] = {}
-LAST_DAY_UPDATE: datetime = None
+LAST_DAY_UPDATE: datetime | None = None
-async def async_setup(hass: HomeAssistant, config: dict):
+async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
"""Set up the Emporia Vue component."""
hass.data.setdefault(DOMAIN, {})
conf = config.get(DOMAIN)
@@ -77,7 +80,7 @@ async def async_setup(hass: HomeAssistant, config: dict):
return True
-async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
+async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Emporia Vue from a config entry."""
global DEVICE_GIDS
global DEVICE_INFORMATION
@@ -87,29 +90,31 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
entry_data = entry.data
email = entry_data[CONF_EMAIL]
password = entry_data[CONF_PASSWORD]
- # _LOGGER.info(entry_data)
vue = PyEmVue()
loop = asyncio.get_event_loop()
try:
result = await loop.run_in_executor(None, vue.login, email, password)
+ # result = await loop.run_in_executor(None, vue.login_simulator, "http://localhost:8000", email, password)
if not result:
- raise Exception("Could not authenticate with Emporia API")
- except Exception:
- _LOGGER.error("Could not authenticate with Emporia API")
+ _LOGGER.error("Failed to login to Emporia Vue")
+ return False
+ except Exception as err:
+ _LOGGER.error("Failed to login to Emporia Vue: %s", err)
return False
try:
devices = await loop.run_in_executor(None, vue.get_devices)
for device in devices:
- if not device.device_gid in DEVICE_GIDS:
- DEVICE_GIDS.append(device.device_gid)
+ if str(device.device_gid) not in DEVICE_GIDS:
+ DEVICE_GIDS.append(str(device.device_gid))
+ _LOGGER.info("Adding gid %s to DEVICE_GIDS list", device.device_gid)
# await loop.run_in_executor(None, vue.populate_device_properties, device)
DEVICE_INFORMATION[device.device_gid] = device
else:
DEVICE_INFORMATION[device.device_gid].channels += device.channels
total_channels = 0
- for _, device in DEVICE_INFORMATION.items():
+ for device in DEVICE_INFORMATION.values():
total_channels += len(device.channels)
_LOGGER.info(
"Found %s Emporia devices with %s total channels",
@@ -118,7 +123,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry):
)
async def async_update_data_1min():
- """Fetch data from API endpoint at a 1 minute interval
+ """Fetch data from API endpoint at a 1 minute interval.
This is the place to pre-process the data to lookup tables
so entities can quickly look up their data.
@@ -131,8 +136,8 @@ async def async_update_data_1min():
LAST_MINUTE_DATA = data
return data
- async def async_update_data_1hr():
- """Fetch data from API endpoint at a 1 hour interval
+ async def async_update_data_1mon():
+ """Fetch data from API endpoint at a 1 hour interval.
This is the place to pre-process the data to lookup tables
so entities can quickly look up their data.
@@ -142,7 +147,7 @@ async def async_update_data_1hr():
async def async_update_day_sensors():
global LAST_DAY_UPDATE
global LAST_DAY_DATA
- now = datetime.now(timezone.utc)
+ now = datetime.now(UTC)
if not LAST_DAY_UPDATE or (now - LAST_DAY_UPDATE) > timedelta(minutes=15):
_LOGGER.info("Updating day sensors")
LAST_DAY_UPDATE = now
@@ -164,7 +169,7 @@ async def async_update_day_sensors():
):
# if we just passed midnight, then reset back to zero
timestamp: datetime = data["timestamp"]
- check_for_midnight(timestamp, int(device_gid), day_id)
+ await check_for_midnight(timestamp, int(device_gid), day_id)
LAST_DAY_DATA[day_id]["usage"] += data[
"usage"
@@ -184,19 +189,19 @@ async def async_update_day_sensors():
)
await coordinator_1min.async_config_entry_first_refresh()
_LOGGER.info("1min Update data: %s", coordinator_1min.data)
- coordinator_1hr = None
+ coordinator_1mon = None
if ENABLE_1MON not in entry_data or entry_data[ENABLE_1MON]:
- coordinator_1hr = DataUpdateCoordinator(
+ coordinator_1mon = DataUpdateCoordinator(
hass,
_LOGGER,
# Name of the data. For logging purposes.
name="sensor",
- update_method=async_update_data_1hr,
+ update_method=async_update_data_1mon,
# Polling interval. Will only be polled if there are subscribers.
update_interval=timedelta(hours=1),
)
- await coordinator_1hr.async_config_entry_first_refresh()
- _LOGGER.info("1hr Update data: %s", coordinator_1hr.data)
+ await coordinator_1mon.async_config_entry_first_refresh()
+ _LOGGER.info("1mon Update data: %s", coordinator_1mon.data)
coordinator_day_sensor = None
if ENABLE_1D not in entry_data or entry_data[ENABLE_1D]:
@@ -213,31 +218,39 @@ async def async_update_day_sensors():
# Setup custom services
async def handle_set_charger_current(call):
- """Handle setting the EV Charger current"""
+ """Handle setting the EV Charger current."""
_LOGGER.debug(
"executing set_charger_current: %s %s",
str(call.service),
str(call.data),
)
current = call.data.get("current")
+ current = int(current)
device_id = call.data.get("device_id", None)
entity_id = call.data.get("entity_id", None)
+ # if device or entity ids are strings, convert to list
+ if isinstance(device_id, str):
+ device_id = [device_id]
+ if isinstance(entity_id, str):
+ entity_id = [entity_id]
+
+ # technically we should loop through all the passed device and entities and update all
+ # but for now we'll just use the first one
charger_entity = None
+ entity_registry = er.async_get(hass)
if device_id:
- entity_registry = er.async_get(hass)
entities = er.async_entries_for_device(entity_registry, device_id[0])
for entity in entities:
_LOGGER.info("Entity is %s", str(entity))
if entity.entity_id.startswith("switch"):
charger_entity = entity
break
- if not charger_entity:
+ if not charger_entity and entities:
charger_entity = entities[0]
elif entity_id:
- entity_registry = er.async_get(hass)
charger_entity = entity_registry.async_get(entity_id[0])
- else:
+ if not charger_entity:
raise HomeAssistantError("Target device or Entity required.")
unique_entity_id = charger_entity.unique_id
@@ -256,7 +269,17 @@ async def handle_set_charger_current(call):
f"Set Charging Current called on invalid device with entity id {charger_entity.entity_id} (unique id {unique_entity_id})"
)
+ state = hass.states.get(charger_entity.entity_id)
+ _LOGGER.info("State is %s", str(state))
+ if not state:
+ raise HomeAssistantError(
+ f"Could not find state for entity {charger_entity.entity_id}"
+ )
charger_info = DEVICE_INFORMATION[charger_gid]
+ if charger_info.ev_charger is None:
+ raise HomeAssistantError(
+ f"Could not find charger info for device {charger_gid}"
+ )
# Scale the current to a minimum of 6 amps and max of the circuit max
current = max(6, current)
current = min(current, charger_info.ev_charger.max_charging_rate)
@@ -264,10 +287,33 @@ async def handle_set_charger_current(call):
"Setting charger %s to current of %d amps", charger_gid, current
)
- updated_charger = await loop.run_in_executor(
- None, vue.update_charger, charger_info.ev_charger, None, current
- )
- DEVICE_INFORMATION[charger_gid].ev_charger = updated_charger
+ try:
+ updated_charger = await loop.run_in_executor(
+ None,
+ vue.update_charger,
+ charger_info.ev_charger,
+ state.state == "on",
+ current,
+ )
+ DEVICE_INFORMATION[charger_gid].ev_charger = updated_charger
+ # update the state of the charger entity using the updated data
+ state = hass.states.get(charger_entity.entity_id)
+ if state:
+ newState = "on" if updated_charger.charger_on else "off"
+ newAttributes = state.attributes.copy()
+ newAttributes["charging_rate"] = updated_charger.charging_rate
+ # good enough for now, update the state in the registry
+ hass.states.async_set(
+ charger_entity.entity_id, newState, newAttributes
+ )
+
+ except requests.exceptions.HTTPError as err:
+ _LOGGER.error(
+ "Error updating charger status: %s \nResponse body: %s",
+ err,
+ err.response.text,
+ )
+ raise
hass.services.async_register(
DOMAIN, "set_charger_current", handle_set_charger_current
@@ -277,28 +323,25 @@ async def handle_set_charger_current(call):
_LOGGER.warning("Exception while setting up Emporia Vue. Will retry. %s", err)
raise ConfigEntryNotReady(
f"Exception while setting up Emporia Vue. Will retry. {err}"
- )
+ ) from err
hass.data[DOMAIN][entry.entry_id] = {
VUE_DATA: vue,
"coordinator_1min": coordinator_1min,
- "coordinator_1hr": coordinator_1hr,
+ "coordinator_1mon": coordinator_1mon,
"coordinator_day_sensor": coordinator_day_sensor,
}
try:
- for component in PLATFORMS:
- hass.async_create_task(
- hass.config_entries.async_forward_entry_setup(entry, component)
- )
+ await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
except Exception as err:
_LOGGER.warning("Error setting up platforms: %s", err)
- raise ConfigEntryNotReady(f"Error setting up platforms: {err}")
+ raise ConfigEntryNotReady(f"Error setting up platforms: {err}") from err
return True
-async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry):
+async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry."""
unload_ok = all(
await asyncio.gather(
@@ -315,13 +358,14 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry):
async def update_sensors(vue: PyEmVue, scales: list[str]):
+ """Fetch data from API endpoint."""
try:
# Note: asyncio.TimeoutError and aiohttp.ClientError are already
# handled by the data update coordinator.
data = {}
loop = asyncio.get_event_loop()
for scale in scales:
- utcnow = datetime.now(timezone.utc)
+ utcnow = datetime.now(UTC)
usage_dict = await loop.run_in_executor(
None, vue.get_device_list_usage, DEVICE_GIDS, utcnow, scale
)
@@ -333,155 +377,221 @@ async def update_sensors(vue: PyEmVue, scales: list[str]):
None, vue.get_device_list_usage, DEVICE_GIDS, utcnow, scale
)
if usage_dict:
- recurse_usage_data(usage_dict, scale, data, utcnow)
+ flattened, data_time = flatten_usage_data(usage_dict, scale)
+ await parse_flattened_usage_data(
+ flattened,
+ scale,
+ data,
+ utcnow,
+ data_time,
+ )
else:
raise UpdateFailed(f"No channels found during update for scale {scale}")
return data
except Exception as err:
_LOGGER.error("Error communicating with Emporia API: %s", err)
- raise UpdateFailed(f"Error communicating with Emporia API: {err}")
+ raise UpdateFailed(f"Error communicating with Emporia API: {err}") from err
-def recurse_usage_data(
+def flatten_usage_data(
usage_devices: dict[int, VueUsageDevice],
scale: str,
+) -> tuple[dict[str, VueDeviceChannelUsage], datetime]:
+ """Flattens the raw usage data into a dictionary of channel ids and usage info."""
+ flattened: dict[str, VueDeviceChannelUsage] = {}
+ data_time: datetime = datetime.now(UTC)
+ for usage in usage_devices.values():
+ data_time = usage.timestamp or data_time
+ if usage.channels:
+ for channel in usage.channels.values():
+ identifier = make_channel_id(channel, scale)
+ flattened[identifier] = channel
+ if channel.nested_devices:
+ nested_flattened, _ = flatten_usage_data(
+ channel.nested_devices, scale
+ )
+ flattened.update(nested_flattened)
+ return (flattened, data_time)
+
+
+async def parse_flattened_usage_data(
+ flattened_data: dict[str, VueDeviceChannelUsage],
+ scale: str,
data: dict[str, Any],
requested_time: datetime,
+ data_time: datetime,
):
- """Loop through the result from get_device_list_usage and pull out the data we want to use."""
- for gid, device in usage_devices.items():
- if device.device_gid in DEVICE_INFORMATION:
- info = DEVICE_INFORMATION[device.device_gid]
- local_time = change_time_to_local(device.timestamp, info.time_zone)
- requested_time_local = change_time_to_local(requested_time, info.time_zone)
- if abs((local_time - requested_time_local).total_seconds()) > 30:
- _LOGGER.warning(
- "More than 30 seconds have passed between the requested datetime and the returned datetime. Requested: %s Returned: %s",
- requested_time,
- device.timestamp,
+ """Loop through the device list and find the corresponding update data."""
+ unused_data = flattened_data.copy()
+ for gid, info in DEVICE_INFORMATION.items():
+ local_time = await change_time_to_local(data_time, info.time_zone)
+ requested_time_local = await change_time_to_local(
+ requested_time, info.time_zone
+ )
+ if abs((local_time - requested_time_local).total_seconds()) > 30:
+ _LOGGER.warning(
+ "More than 30 seconds have passed between the requested datetime and the returned datetime. Requested: %s Returned: %s",
+ requested_time,
+ data_time,
+ )
+ for info_channel in info.channels:
+ identifier = make_channel_id(info_channel, scale)
+ channel_num = info_channel.channel_num
+ channel = flattened_data.get(identifier)
+ if not channel:
+ _LOGGER.info(
+ "Could not find usage info for device %s channel %s",
+ gid,
+ channel_num,
+ )
+ unused_data.pop(identifier, None)
+ reset_datetime = None
+
+ if scale in [Scale.DAY.value, Scale.MONTH.value]:
+ # We need to know when the value reset
+ # For day, that should be midnight local time, but we need to use the timestamp returned to us
+ # for month, that should be midnight of the reset day they specify in the app
+ reset_datetime = determine_reset_datetime(
+ local_time,
+ info.billing_cycle_start_day,
+ scale == Scale.MONTH.value,
)
- for channel_num, channel in device.channels.items():
- if not channel:
- continue
- reset_datetime = None
- identifier = make_channel_id(channel, scale)
- handle_special_channels_for_device(channel)
-
- if scale in [Scale.DAY.value, Scale.MONTH.value]:
- # We need to know when the value reset
- # For day, that should be midnight local time, but we need to use the timestamp returned to us
- # for month, that should be midnight of the reset day they specify in the app
- reset_datetime = determine_reset_datetime(
- local_time,
- info.billing_cycle_start_day,
- scale == Scale.MONTH.value,
- )
- # Fix the usage if we got None
- # Use the last value if we have it, otherwise use zero
- fixed_usage = channel.usage
- if fixed_usage is None:
- fixed_usage = handle_none_usage(scale, identifier)
- _LOGGER.info(
- "Got None usage for device %s channel %s scale %s and timestamp %s. Instead using a value of %s",
- gid,
- channel_num,
- scale,
- local_time.isoformat(),
- fixed_usage,
- )
+ # Fix the usage if we got None
+ # Use the last value if we have it, otherwise use zero
+ fixed_usage = channel.usage if channel else 0
+ if fixed_usage is None:
+ fixed_usage = handle_none_usage(scale, identifier)
+ _LOGGER.info(
+ "Got None usage for device %s channel %s scale %s and timestamp %s. Instead using a value of %s",
+ gid,
+ channel_num,
+ scale,
+ local_time.isoformat(),
+ fixed_usage,
+ )
- fixed_usage = fix_usage_sign(channel_num, fixed_usage)
-
- data[identifier] = {
- "device_gid": gid,
- "channel_num": channel_num,
- "usage": fixed_usage,
- "scale": scale,
- "info": info,
- "reset": reset_datetime,
- "timestamp": local_time,
- }
- if channel.nested_devices:
- recurse_usage_data(
- channel.nested_devices, scale, data, requested_time
- )
+ fixed_usage = fix_usage_sign(
+ channel_num, fixed_usage, "bidirectional" in info_channel.type.lower()
+ )
+
+ data[identifier] = {
+ "device_gid": gid,
+ "channel_num": channel_num,
+ "usage": fixed_usage,
+ "scale": scale,
+ "info": info,
+ "reset": reset_datetime,
+ "timestamp": local_time,
+ }
+ if unused_data:
+ # unused_data is not json serializable because VueDeviceChannelUsage is not JSON serializable
+ # instead print out dictionary as a string
+ _LOGGER.info(
+ "Unused data found during update. Unused data: %s",
+ str(unused_data),
+ )
+ channels_were_added = False
+ for channel in unused_data.values():
+ channels_were_added |= await handle_special_channels_for_device(channel)
+ # we'll also need to register these entities I think. They might show up automatically on the first run
+ # When we're done handling the unused data we need to rerun the update
+ if channels_were_added:
+ _LOGGER.info("Rerunning update due to added channels")
+ await parse_flattened_usage_data(
+ flattened_data, scale, data, requested_time, data_time
+ )
-def handle_special_channels_for_device(channel: VueDeviceChannelUsage):
+async def handle_special_channels_for_device(channel: VueDeviceChannel) -> bool:
+ """Handle the special channels for a device, if they exist."""
device_info = None
if channel.device_gid in DEVICE_INFORMATION:
device_info = DEVICE_INFORMATION[channel.device_gid]
- if channel.channel_num in [
- "MainsFromGrid",
- "MainsToGrid",
- "Balance",
- "TotalUsage",
- ]:
- found = False
- channel_123 = None
- for device_channel in device_info.channels:
- if device_channel.channel_num == channel.channel_num:
- found = True
- break
- if device_channel.channel_num == "1,2,3":
- channel_123 = device_channel
- if not found:
- _LOGGER.info(
- "Adding channel for channel %s-%s",
- channel.device_gid,
- channel.channel_num,
- )
- multiplier = 1.0
- type_gid = 1
- if channel_123:
- multiplier = channel_123.channel_multiplier
- type_gid = channel_123.channel_type_gid
-
- device_info.channels.append(
- VueDeviceChannel(
- gid=channel.device_gid,
- name=channel.name,
- channelNum=channel.channel_num,
- channelMultiplier=multiplier,
- channelTypeGid=type_gid,
- )
+ # if channel.channel_num in [
+ # "MainsFromGrid",
+ # "MainsToGrid",
+ # "Balance",
+ # "TotalUsage",
+ # ]:
+ found = False
+ channel_123 = None
+ for device_channel in device_info.channels:
+ if device_channel.channel_num == channel.channel_num:
+ found = True
+ break
+ if device_channel.channel_num == "1,2,3":
+ channel_123 = device_channel
+ if not found:
+ _LOGGER.info(
+ "Adding channel for channel %s-%s",
+ channel.device_gid,
+ channel.channel_num,
+ )
+ multiplier = 1.0
+ type_gid = 1
+ if channel_123:
+ multiplier = channel_123.channel_multiplier
+ type_gid = channel_123.channel_type_gid
+
+ device_info.channels.append(
+ VueDeviceChannel(
+ gid=channel.device_gid,
+ name=channel.name,
+ channelNum=channel.channel_num,
+ channelMultiplier=multiplier,
+ channelTypeGid=type_gid,
)
- return device_info
-
-
-def make_channel_id(channel: VueDeviceChannelUsage, scale: str):
- """Format the channel id for a channel and scale"""
- return "{0}-{1}-{2}".format(channel.device_gid, channel.channel_num, scale)
-
+ )
-def fix_usage_sign(channel_num: str, usage: float):
- """If the channel is not '1,2,3' or 'Balance' we need it to be positive (see https://github.com/magico13/ha-emporia-vue/issues/57)"""
- if usage and channel_num not in ["1,2,3", "Balance"]:
+ # register the entity
+ # registry = await async_get_registry(hass)
+ # registry.async_get_or_create(
+ # domain='your_domain',
+ # platform='your_platform',
+ # unique_id=entity_id,
+ # name=entity_name,
+ # config_entry=config_entry,
+ # device_id=device_id,
+ # )
+ return True
+ return False
+
+
+def make_channel_id(channel: VueDeviceChannel, scale: str):
+ """Format the channel id for a channel and scale."""
+ return f"{channel.device_gid}-{channel.channel_num}-{scale}"
+
+
+def fix_usage_sign(channel_num: str, usage: float, bidirectional: bool):
+ """If the channel is not '1,2,3' or 'Balance' we need it to be positive (see https://github.com/magico13/ha-emporia-vue/issues/57)."""
+ if usage and not bidirectional and channel_num not in ["1,2,3", "Balance"]:
+ # With bidirectionality, we need to also check if bidirectional. If yes, we either don't abs, or we flip the sign.
return abs(usage)
return usage
-def change_time_to_local(time: datetime, tz_string: str):
+async def change_time_to_local(time: datetime, tz_string: str):
"""Change the datetime to the provided timezone, if not already."""
- tz_info = dateutil.tz.gettz(tz_string)
+ loop = asyncio.get_event_loop()
+ tz_info = await loop.run_in_executor(None, dateutil.tz.gettz, tz_string)
if not time.tzinfo or time.tzinfo.utcoffset(time) is None:
# unaware, assume it's already utc
- time = time.replace(tzinfo=timezone.utc)
+ time = time.replace(tzinfo=UTC)
return time.astimezone(tz_info)
-def check_for_midnight(timestamp: datetime, device_gid: int, day_id: str):
- """If midnight has recently passed, reset the LAST_DAY_DATA for Day sensors to zero"""
+async def check_for_midnight(timestamp: datetime, device_gid: int, day_id: str):
+ """If midnight has recently passed, reset the LAST_DAY_DATA for Day sensors to zero."""
if device_gid in DEVICE_INFORMATION:
device_info = DEVICE_INFORMATION[device_gid]
- local_time = change_time_to_local(timestamp, device_info.time_zone)
+ local_time = await change_time_to_local(timestamp, device_info.time_zone)
local_midnight = local_time.replace(hour=0, minute=0, second=0, microsecond=0)
last_reset = LAST_DAY_DATA[day_id]["reset"]
if local_midnight > last_reset:
# New reset time found
- _LOGGER.warning(
+ _LOGGER.info(
"Midnight happened recently for id %s! Timestamp is %s, midnight is %s, previous reset was %s",
day_id,
local_time,
@@ -495,7 +605,7 @@ def check_for_midnight(timestamp: datetime, device_gid: int, day_id: str):
def determine_reset_datetime(
local_time: datetime, monthly_cycle_start: int, is_month: bool
):
- """Determine the last reset datetime (aware) based on the passed time and cycle start date"""
+ """Determine the last reset datetime (aware) based on the passed time and cycle start date."""
reset_datetime = local_time.replace(hour=0, minute=0, second=0, microsecond=0)
if is_month:
# Month should use the last billing_cycle_start_day of either this or last month
diff --git a/custom_components/emporia_vue/charger_entity.py b/custom_components/emporia_vue/charger_entity.py
index 45f24969..c947d9cf 100644
--- a/custom_components/emporia_vue/charger_entity.py
+++ b/custom_components/emporia_vue/charger_entity.py
@@ -1,30 +1,28 @@
-import logging
-from typing import Any, Mapping
-
-from homeassistant.helpers.update_coordinator import (
- CoordinatorEntity,
-)
-
-from .const import DOMAIN
+"""Emporia Charger Entity."""
+from typing import Any, Optional
from pyemvue import pyemvue
-from pyemvue.device import VueDevice
+from pyemvue.device import ChargerDevice, VueDevice
-_LOGGER = logging.getLogger(__name__)
+from homeassistant.helpers.device_registry import DeviceInfo
+from homeassistant.helpers.update_coordinator import CoordinatorEntity
+
+from .const import DOMAIN
class EmporiaChargerEntity(CoordinatorEntity):
- """Emporia Charger Entity"""
+ """Emporia Charger Entity."""
def __init__(
self,
coordinator,
vue: pyemvue.PyEmVue,
device: VueDevice,
- units: str,
+ units: Optional[str],
device_class: str,
enabled_default=True,
- ):
+ ) -> None:
+ """Initialize the sensor."""
super().__init__(coordinator)
self._coordinator = coordinator
self._device = device
@@ -33,15 +31,23 @@ def __init__(
self._attr_unit_of_measurement = units
self._attr_device_class = device_class
- self._attr_name = device.device_name
+ self._attr_has_entity_name = True
+ self._attr_name = None
@property
- def entity_registry_enabled_default(self):
+ def available(self) -> bool:
+ """Return True if entity is available."""
+ return self._device
+
+ @property
+ def entity_registry_enabled_default(self) -> bool:
+ """Return whether the entity should be enabled when first added to the entity registry."""
return self._enabled_default
@property
- def extra_state_attributes(self) -> Mapping[str, Any]:
- data = self._coordinator.data[self._device.device_gid]
+ def extra_state_attributes(self) -> dict[str, Any]:
+ """Return the state attributes of the device."""
+ data: ChargerDevice = self._coordinator.data[self._device.device_gid]
if data:
return {
"charging_rate": data.charging_rate,
@@ -49,26 +55,26 @@ def extra_state_attributes(self) -> Mapping[str, Any]:
"status": data.status,
"message": data.message,
"fault_text": data.fault_text,
+ "icon_name": data.icon,
+ "icon_label": data.icon_label,
+ "icon_detail_text": data.icon_detail_text,
}
- return None
+ return {}
@property
def unique_id(self) -> str:
- """Unique ID for the charger"""
+ """Unique ID for the charger."""
return f"charger.emporia_vue.{self._device.device_gid}"
@property
- def device_info(self):
+ def device_info(self) -> DeviceInfo:
"""Return the device information."""
- return {
- "identifiers": {(DOMAIN, "{0}-1,2,3".format(self._device.device_gid))},
- "name": self._device.device_name + "-1,2,3",
- "model": self._device.model,
- "sw_version": self._device.firmware,
- "manufacturer": "Emporia",
- }
+ return DeviceInfo(
+ identifiers={(DOMAIN, f"{self._device.device_gid}-1,2,3")},
+ name=self._device.device_name,
+ model=self._device.model,
+ sw_version=self._device.firmware,
+ manufacturer="Emporia",
+ )
+
- @property
- def available(self):
- """Return True if entity is available."""
- return self._device
diff --git a/custom_components/emporia_vue/config_flow.py b/custom_components/emporia_vue/config_flow.py
index 651d9aef..ce5c9cf9 100644
--- a/custom_components/emporia_vue/config_flow.py
+++ b/custom_components/emporia_vue/config_flow.py
@@ -1,15 +1,15 @@
"""Config flow for Emporia Vue integration."""
-import logging
+
import asyncio
+import logging
+
+from pyemvue import PyEmVue
import voluptuous as vol
from homeassistant import config_entries, core, exceptions
from homeassistant.const import CONF_EMAIL, CONF_PASSWORD
-from .const import DOMAIN # pylint:disable=unused-import
-from .const import ENABLE_1M, ENABLE_1D, ENABLE_1MON
-
-from pyemvue import PyEmVue
+from .const import DOMAIN, ENABLE_1D, ENABLE_1M, ENABLE_1MON
_LOGGER = logging.getLogger(__name__)
@@ -19,7 +19,7 @@
vol.Required(CONF_PASSWORD): str,
vol.Optional(ENABLE_1M, default=True): bool,
vol.Optional(ENABLE_1D, default=True): bool,
- vol.Optional(ENABLE_1MON, default=True): bool
+ vol.Optional(ENABLE_1MON, default=True): bool,
}
)
@@ -27,16 +27,14 @@
class VueHub:
"""Hub for the Emporia Vue Integration."""
- def __init__(self):
+ def __init__(self) -> None:
"""Initialize."""
self.vue = PyEmVue()
- pass
async def authenticate(self, username, password) -> bool:
"""Test if we can authenticate with the host."""
loop = asyncio.get_event_loop()
- result = await loop.run_in_executor(None, self.vue.login, username, password)
- return result
+ return await loop.run_in_executor(None, self.vue.login, username, password)
async def validate_input(hass: core.HomeAssistant, data):
@@ -59,7 +57,7 @@ async def validate_input(hass: core.HomeAssistant, data):
"gid": f"{hub.vue.customer.customer_gid}",
ENABLE_1M: data[ENABLE_1M],
ENABLE_1D: data[ENABLE_1D],
- ENABLE_1MON: data[ENABLE_1MON]
+ ENABLE_1MON: data[ENABLE_1MON],
}
@@ -69,13 +67,13 @@ class ConfigFlow(config_entries.ConfigFlow, domain=DOMAIN):
VERSION = 1
CONNECTION_CLASS = config_entries.CONN_CLASS_CLOUD_POLL
- async def async_step_user(self, user_input=None):
+ async def async_step_user(self, user_input=None) -> config_entries.ConfigFlowResult:
"""Handle the initial step."""
errors = {}
if user_input is not None:
try:
info = await validate_input(self.hass, user_input)
- #prevent setting up the same account twice
+ # prevent setting up the same account twice
await self.async_set_unique_id(info["gid"])
self._abort_if_unique_id_configured()
diff --git a/custom_components/emporia_vue/const.py b/custom_components/emporia_vue/const.py
index 5b370316..7db0b5a8 100644
--- a/custom_components/emporia_vue/const.py
+++ b/custom_components/emporia_vue/const.py
@@ -5,4 +5,4 @@
ENABLE_1S = "enable_1s"
ENABLE_1M = "enable_1m"
ENABLE_1D = "enable_1d"
-ENABLE_1MON = "enable_1mon"
\ No newline at end of file
+ENABLE_1MON = "enable_1mon"
diff --git a/custom_components/emporia_vue/manifest.json b/custom_components/emporia_vue/manifest.json
index 9d0824a5..08654bfb 100644
--- a/custom_components/emporia_vue/manifest.json
+++ b/custom_components/emporia_vue/manifest.json
@@ -1,14 +1,16 @@
{
"domain": "emporia_vue",
"name": "Emporia Vue",
+ "codeowners": ["@magico13"],
"config_flow": true,
+ "dependencies": [],
"documentation": "https://github.com/magico13/ha-emporia-vue",
- "requirements": ["pyemvue==0.16.1"],
- "ssdp": [],
- "zeroconf": [],
"homekit": {},
- "dependencies": [],
- "codeowners": ["@magico13"],
+ "integration_type": "hub",
"iot_class": "cloud_polling",
- "version": "0.8.0"
+ "issue_tracker": "https://github.com/magico13/ha-emporia-vue/issues",
+ "requirements": ["pyemvue==0.18.6"],
+ "ssdp": [],
+ "version": "0.10.0",
+ "zeroconf": []
}
diff --git a/custom_components/emporia_vue/sensor.py b/custom_components/emporia_vue/sensor.py
index 42013cd5..5da4d611 100644
--- a/custom_components/emporia_vue/sensor.py
+++ b/custom_components/emporia_vue/sensor.py
@@ -1,31 +1,37 @@
"""Platform for sensor integration."""
-from homeassistant.components.sensor import (
- SensorStateClass,
- SensorDeviceClass,
- SensorEntity,
-)
+
+from datetime import datetime
import logging
-from homeassistant.const import (
- POWER_WATT,
- ENERGY_KILO_WATT_HOUR,
-)
+from pyemvue.device import VueDevice, VueDeviceChannel
+from pyemvue.enums import Scale
-from homeassistant.helpers.update_coordinator import (
- CoordinatorEntity,
+from homeassistant.components.sensor import (
+ SensorDeviceClass,
+ SensorEntity,
+ SensorStateClass,
)
+from homeassistant.config_entries import ConfigEntry
+from homeassistant.const import UnitOfEnergy, UnitOfPower
+from homeassistant.core import HomeAssistant
+from homeassistant.helpers.device_registry import DeviceInfo
+from homeassistant.helpers.entity_platform import AddEntitiesCallback
+from homeassistant.helpers.update_coordinator import CoordinatorEntity
from .const import DOMAIN
-from pyemvue.enums import Scale
-
_LOGGER = logging.getLogger(__name__)
+
# def setup_platform(hass, config, add_entities, discovery_info=None):
-async def async_setup_entry(hass, config_entry, async_add_entities):
+async def async_setup_entry(
+ hass: HomeAssistant,
+ config_entry: ConfigEntry,
+ async_add_entities: AddEntitiesCallback,
+) -> None:
"""Set up the sensor platform."""
coordinator_1min = hass.data[DOMAIN][config_entry.entry_id]["coordinator_1min"]
- coordinator_1hr = hass.data[DOMAIN][config_entry.entry_id]["coordinator_1hr"]
+ coordinator_1mon = hass.data[DOMAIN][config_entry.entry_id]["coordinator_1mon"]
coordinator_day_sensor = hass.data[DOMAIN][config_entry.entry_id][
"coordinator_day_sensor"
]
@@ -34,41 +40,41 @@ async def async_setup_entry(hass, config_entry, async_add_entities):
if coordinator_1min:
async_add_entities(
- CurrentVuePowerSensor(coordinator_1min, id)
- for _, id in enumerate(coordinator_1min.data)
+ CurrentVuePowerSensor(coordinator_1min, identifier)
+ for _, identifier in enumerate(coordinator_1min.data)
)
- if coordinator_1hr:
+ if coordinator_1mon:
async_add_entities(
- CurrentVuePowerSensor(coordinator_1hr, id)
- for _, id in enumerate(coordinator_1hr.data)
+ CurrentVuePowerSensor(coordinator_1mon, identifier)
+ for _, identifier in enumerate(coordinator_1mon.data)
)
if coordinator_day_sensor:
async_add_entities(
- CurrentVuePowerSensor(coordinator_day_sensor, id)
- for _, id in enumerate(coordinator_day_sensor.data)
+ CurrentVuePowerSensor(coordinator_day_sensor, identifier)
+ for _, identifier in enumerate(coordinator_day_sensor.data)
)
class CurrentVuePowerSensor(CoordinatorEntity, SensorEntity):
"""Representation of a Vue Sensor's current power."""
- def __init__(self, coordinator, identifier):
+ def __init__(self, coordinator, identifier) -> None:
"""Pass coordinator to CoordinatorEntity."""
super().__init__(coordinator)
self._id = identifier
- self._scale = coordinator.data[identifier]["scale"]
- device_gid = coordinator.data[identifier]["device_gid"]
- channel_num = coordinator.data[identifier]["channel_num"]
- self._device = coordinator.data[identifier]["info"]
- self._channel = None
+ self._scale: str = coordinator.data[identifier]["scale"]
+ device_gid: int = coordinator.data[identifier]["device_gid"]
+ channel_num: str = coordinator.data[identifier]["channel_num"]
+ self._device: VueDevice = coordinator.data[identifier]["info"]
+ final_channel: VueDeviceChannel | None = None
if self._device is not None:
for channel in self._device.channels:
if channel.channel_num == channel_num:
- self._channel = channel
+ final_channel = channel
break
- if self._channel is None:
+ if final_channel is None:
_LOGGER.warning(
"No channel found for device_gid %s and channel_num %s",
device_gid,
@@ -77,88 +83,85 @@ def __init__(self, coordinator, identifier):
raise RuntimeError(
f"No channel found for device_gid {device_gid} and channel_num {channel_num}"
)
- device_name = self._device.device_name
- if self._channel.name and self._channel.name not in [
- "Main",
- "Balance",
- "TotalUsage",
- "MainsToGrid",
- "MainsFromGrid",
- ]:
- device_name = self._channel.name
- self._name = f"{device_name} {channel_num} {self._scale}"
+ self._channel: VueDeviceChannel = final_channel
self._iskwh = self.scale_is_energy()
- self._attr_name = self._name
+ self._attr_has_entity_name = True
if self._iskwh:
- self._attr_native_unit_of_measurement = ENERGY_KILO_WATT_HOUR
+ self._attr_native_unit_of_measurement = UnitOfEnergy.KILO_WATT_HOUR
self._attr_device_class = SensorDeviceClass.ENERGY
self._attr_state_class = SensorStateClass.TOTAL
+ self._attr_suggested_display_precision = 3
+ self._attr_name = f"Energy {self.scale_readable()}"
else:
- self._attr_native_unit_of_measurement = POWER_WATT
+ self._attr_native_unit_of_measurement = UnitOfPower.WATT
self._attr_device_class = SensorDeviceClass.POWER
self._attr_state_class = SensorStateClass.MEASUREMENT
+ self._attr_suggested_display_precision = 1
+ self._attr_name = f"Power {self.scale_readable()}"
@property
- def native_value(self):
- """Return the state of the sensor."""
- if self._id in self.coordinator.data:
- usage = self.coordinator.data[self._id]["usage"]
- return self.scale_usage(usage)
- return None
+ def device_info(self) -> DeviceInfo:
+ """Return the device info."""
+ device_name = self._channel.name or self._device.device_name
+ return DeviceInfo(
+ identifiers={
+ (DOMAIN, f"{self._device.device_gid}-{self._channel.channel_num}")
+ },
+ name=device_name,
+ model=self._device.model,
+ sw_version=self._device.firmware,
+ manufacturer="Emporia",
+ )
@property
- def last_reset(self):
+ def last_reset(self) -> datetime | None:
"""The time when the daily/monthly sensor was reset. Midnight local time."""
if self._id in self.coordinator.data:
return self.coordinator.data[self._id]["reset"]
return None
@property
- def unique_id(self):
- """Unique ID for the sensor"""
+ def native_value(self) -> float | None:
+ """Return the state of the sensor."""
+ if self._id in self.coordinator.data:
+ usage = self.coordinator.data[self._id]["usage"]
+ return self.scale_usage(usage) if usage is not None else None
+ return None
+
+ @property
+ def unique_id(self) -> str:
+ """Unique ID for the sensor."""
if self._scale == Scale.MINUTE.value:
return f"sensor.emporia_vue.instant.{self._channel.device_gid}-{self._channel.channel_num}"
return f"sensor.emporia_vue.{self._scale}.{self._channel.device_gid}-{self._channel.channel_num}"
- @property
- def device_info(self):
- device_name = self._channel.name or self._device.device_name
- return {
- "identifiers": {
- # Serial numbers are unique identifiers within a specific domain
- (
- DOMAIN,
- "{0}-{1}".format(
- self._device.device_gid, self._channel.channel_num
- ),
- )
- },
- "name": device_name,
- "model": self._device.model,
- "sw_version": self._device.firmware,
- "manufacturer": "Emporia"
- # "via_device": self._device.device_gid # might be able to map the extender, nested outlets
- }
-
def scale_usage(self, usage):
"""Scales the usage to the correct timescale and magnitude."""
if self._scale == Scale.MINUTE.value:
- usage = round(60 * 1000 * usage) # convert from kwh to w rate
+ usage = 60 * 1000 * usage # convert from kwh to w rate
elif self._scale == Scale.SECOND.value:
- usage = round(3600 * 1000 * usage) # convert to rate
+ usage = 3600 * 1000 * usage # convert to rate
elif self._scale == Scale.MINUTES_15.value:
- usage = round(
+ usage = (
4 * 1000 * usage
) # this might never be used but for safety, convert to rate
- else:
- usage = round(usage, 3)
return usage
def scale_is_energy(self):
- """Returns True if the scale is an energy unit instead of power (hour and bigger)"""
+ """Return True if the scale is an energy unit instead of power."""
return self._scale not in (
Scale.MINUTE.value,
Scale.SECOND.value,
Scale.MINUTES_15.value,
)
+
+ def scale_readable(self):
+ """Return a human readable scale."""
+ if self._scale == Scale.MINUTE.value:
+ return "Minute Average"
+ if self._scale == Scale.DAY.value:
+ return "Today"
+ if self._scale == Scale.MONTH.value:
+ return "This Month"
+ return self._scale
diff --git a/custom_components/emporia_vue/services.yaml b/custom_components/emporia_vue/services.yaml
index 6de49976..99f5cf02 100644
--- a/custom_components/emporia_vue/services.yaml
+++ b/custom_components/emporia_vue/services.yaml
@@ -6,13 +6,14 @@ set_charger_current:
# If the service accepts entity IDs, target allows the user to specify entities by entity, device, or area. If `target` is specified, `entity_id` should not be defined in the `fields` map. By default it shows only targets matching entities from the same domain as the service, but if further customization is required, target supports the entity, device, and area selectors (https://www.home-assistant.io/docs/blueprint/selectors/). Entity selector parameters will automatically be applied to device and area, and device selector parameters will automatically be applied to area.
target:
entity:
- manufacturer: Emporia
+ integration: emporia_vue
device_class: outlet
- multiple: false
device:
manufacturer: Emporia
model: VVDN01
- multiple: false
+ entity:
+ integration: emporia_vue
+ device_class: outlet
# Different fields that your service accepts
fields:
# Key of the field
diff --git a/custom_components/emporia_vue/strings.json b/custom_components/emporia_vue/strings.json
index d39d7207..c760cb75 100644
--- a/custom_components/emporia_vue/strings.json
+++ b/custom_components/emporia_vue/strings.json
@@ -1,5 +1,4 @@
{
- "title": "Emporia Vue",
"config": {
"step": {
"user": {
diff --git a/custom_components/emporia_vue/switch.py b/custom_components/emporia_vue/switch.py
index 7ba61581..9c89c970 100644
--- a/custom_components/emporia_vue/switch.py
+++ b/custom_components/emporia_vue/switch.py
@@ -2,20 +2,20 @@
import asyncio
from datetime import timedelta
import logging
+from typing import Any
-from homeassistant.components.switch import (
- SwitchDeviceClass,
- SwitchEntity,
-)
+from requests import exceptions
+
+from homeassistant.components.switch import SwitchDeviceClass, SwitchEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
+from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import (
CoordinatorEntity,
DataUpdateCoordinator,
UpdateFailed,
)
-
from pyemvue.device import ChargerDevice, OutletDevice, VueDevice
from .charger_entity import EmporiaChargerEntity
@@ -30,17 +30,14 @@ async def async_setup_entry(
hass: HomeAssistant,
config_entry: ConfigEntry,
async_add_entities: AddEntitiesCallback,
-):
+) -> None:
"""Set up the sensor platform."""
vue = hass.data[DOMAIN][config_entry.entry_id][VUE_DATA]
loop = asyncio.get_event_loop()
devices: list[VueDevice] = await loop.run_in_executor(None, vue.get_devices)
for device in devices:
- if device.outlet is not None:
- await loop.run_in_executor(None, vue.populate_device_properties, device)
- device_information[device.device_gid] = device
- elif device.ev_charger is not None:
+ if device.outlet or device.ev_charger:
await loop.run_in_executor(None, vue.populate_device_properties, device)
device_information[device.device_gid] = device
@@ -68,7 +65,7 @@ async def async_update_data():
data[charger.device_gid] = charger
return data
except Exception as err:
- raise UpdateFailed(f"Error communicating with Emporia API: {err}")
+ raise UpdateFailed(f"Error communicating with Emporia API: {err}") from err
coordinator = DataUpdateCoordinator(
hass,
@@ -84,9 +81,11 @@ async def async_update_data():
switches = []
for _, gid in enumerate(coordinator.data):
+ if gid not in device_information:
+ continue
if device_information[gid].outlet:
switches.append(EmporiaOutletSwitch(coordinator, vue, gid))
- elif device_information[gid].ev_charger:
+ elif device_information[gid].ev_charger:
switches.append(
EmporiaChargerSwitch(
coordinator,
@@ -101,29 +100,20 @@ async def async_update_data():
class EmporiaOutletSwitch(CoordinatorEntity, SwitchEntity):
- """Representation of an Emporia Smart Outlet state"""
+ """Representation of an Emporia Smart Outlet state."""
- def __init__(self, coordinator, vue, gid):
+ def __init__(self, coordinator, vue, gid) -> None:
"""Pass coordinator to CoordinatorEntity."""
super().__init__(coordinator)
# self._state = coordinator.data[index]['usage']
self._vue = vue
self._device_gid = gid
self._device = device_information[gid]
- self._name = f"Switch {self._device.device_name}"
+ self._attr_has_entity_name = True
+ self._attr_name = None
self._attr_device_class = SwitchDeviceClass.OUTLET
- @property
- def name(self):
- """Return the name of the switch."""
- return self._name
-
- @property
- def is_on(self):
- """Return the state of the switch."""
- return self.coordinator.data[self._device_gid].outlet_on
-
- async def async_turn_on(self, **kwargs):
+ async def async_turn_on(self, **kwargs: Any) -> None:
"""Turn the switch on."""
loop = asyncio.get_event_loop()
await loop.run_in_executor(
@@ -131,7 +121,7 @@ async def async_turn_on(self, **kwargs):
)
await self.coordinator.async_request_refresh()
- async def async_turn_off(self, **kwargs):
+ async def async_turn_off(self, **kwargs: Any) -> None:
"""Turn the switch off."""
loop = asyncio.get_event_loop()
await loop.run_in_executor(
@@ -143,51 +133,57 @@ async def async_turn_off(self, **kwargs):
await self.coordinator.async_request_refresh()
@property
- def unique_id(self):
- """Unique ID for the switch"""
- return f"switch.emporia_vue.{self._device_gid}"
+ def device_info(self) -> DeviceInfo:
+ """Return the device information."""
+ return DeviceInfo(
+ identifiers={(DOMAIN, f"{self._device_gid}-1,2,3")},
+ name=self._device.device_name,
+ model=self._device.model,
+ sw_version=self._device.firmware,
+ manufacturer="Emporia",
+ )
@property
- def device_info(self):
- return {
- "identifiers": {
- # Serial numbers are unique identifiers within a specific domain
- (DOMAIN, "{0}-1,2,3".format(self._device_gid))
- },
- "name": self._device.device_name + "-1,2,3",
- "model": self._device.model,
- "sw_version": self._device.firmware,
- "manufacturer": "Emporia"
- # "via_device": self._device.device_gid # might be able to map the extender, nested outlets
- }
+ def is_on(self) -> bool:
+ """Return the state of the switch."""
+ return self.coordinator.data[self._device_gid].outlet_on
+ @property
+ def unique_id(self) -> str:
+ """Unique ID for the switch."""
+ return f"switch.emporia_vue.{self._device_gid}"
class EmporiaChargerSwitch(EmporiaChargerEntity, SwitchEntity):
- """Representation of an Emporia Charger switch state"""
+ """Representation of an Emporia Charger switch state."""
+
+ async def async_turn_on(self, **kwargs: Any) -> None:
+ """Turn the charger on."""
+ await self._update_switch(True)
+
+ async def async_turn_off(self, **kwargs: Any) -> None:
+ """Turn the charger off."""
+ await self._update_switch(False)
@property
- def is_on(self):
+ def is_on(self) -> bool:
"""Return the state of the switch."""
return self.coordinator.data[self._device.device_gid].charger_on
- async def async_turn_on(self, **kwargs):
- """Turn the charger on."""
- loop = asyncio.get_event_loop()
- await loop.run_in_executor(
- None,
- self._vue.update_charger,
- self._coordinator.data[self._device.device_gid],
- True,
- )
- await self._coordinator.async_request_refresh()
-
- async def async_turn_off(self, **kwargs):
- """Turn the charger off."""
+ async def _update_switch(self, on: bool):
+ """Update the switch."""
loop = asyncio.get_event_loop()
- await loop.run_in_executor(
- None,
- self._vue.update_charger,
- self._coordinator.data[self._device.device_gid],
- False,
- )
+ try:
+ await loop.run_in_executor(
+ None,
+ self._vue.update_charger,
+ self._coordinator.data[self._device.device_gid],
+ on,
+ )
+ except exceptions.HTTPError as err:
+ _LOGGER.error(
+ "Error updating charger status: %s \nResponse body: %s",
+ err,
+ err.response.text,
+ )
+ raise
await self._coordinator.async_request_refresh()
diff --git a/custom_components/emporia_vue/translations/en.json b/custom_components/emporia_vue/translations/en.json
index 3971b93e..b27c9509 100644
--- a/custom_components/emporia_vue/translations/en.json
+++ b/custom_components/emporia_vue/translations/en.json
@@ -4,7 +4,7 @@
"already_configured": "Device is already configured"
},
"error": {
- "cannot_connect": "Failed to connect, please try again",
+ "cannot_connect": "Failed to connect",
"invalid_auth": "Invalid authentication",
"unknown": "Unexpected error"
},
@@ -12,14 +12,13 @@
"user": {
"data": {
"email": "Email",
- "password": "Password",
- "enable_1s": "One Second Sensor",
- "enable_1m": "One Minute Sensor",
- "enable_1d": "One Day Sensor",
- "enable_1mon": "One Month Sensor"
+ "enable_1d": "Energy Today Sensor",
+ "enable_1m": "Power Minute Average Sensor",
+ "enable_1mon": "Energy This Month Sensor",
+ "enable_1s": "Power Second Average Sensor",
+ "password": "Password"
}
}
- },
- "title": "Emporia Vue"
+ }
}
}
\ No newline at end of file
diff --git a/custom_components/hacs/hacs_frontend/entrypoint.js b/custom_components/hacs/hacs_frontend/entrypoint.js
index 7a16dbc0..c03b701b 100644
--- a/custom_components/hacs/hacs_frontend/entrypoint.js
+++ b/custom_components/hacs/hacs_frontend/entrypoint.js
@@ -1 +1 @@
-!function(){function n(n){var e=document.createElement("script");e.src=n,document.body.appendChild(e)}if(/.*Version\/(?:11|12)(?:\.\d+)*.*Safari\//.test(navigator.userAgent))n("/hacsfiles/frontend/frontend_es5/entrypoint.4G_vEpsjfjQ.js");else try{new Function("import('/hacsfiles/frontend/frontend_latest/entrypoint.xkDQGhK7H8M.js')")()}catch(e){n("/hacsfiles/frontend/frontend_es5/entrypoint.4G_vEpsjfjQ.js")}}()
\ No newline at end of file
+!function(){function n(n){var e=document.createElement("script");e.src=n,document.body.appendChild(e)}if(/.*Version\/(?:11|12)(?:\.\d+)*.*Safari\//.test(navigator.userAgent))n("/hacsfiles/frontend/frontend_es5/entrypoint.W8HpFKTV-jg.js");else try{new Function("import('/hacsfiles/frontend/frontend_latest/entrypoint.3UR5SnLC394.js')")()}catch(e){n("/hacsfiles/frontend/frontend_es5/entrypoint.W8HpFKTV-jg.js")}}()
\ No newline at end of file
diff --git a/custom_components/hacs/hacs_frontend/extra.js b/custom_components/hacs/hacs_frontend/extra.js
index 19532699..4a9bbe9b 100644
--- a/custom_components/hacs/hacs_frontend/extra.js
+++ b/custom_components/hacs/hacs_frontend/extra.js
@@ -1 +1 @@
-!function(){function e(e){var n=document.createElement("script");n.src=e,document.body.appendChild(n)}if(/.*Version\/(?:11|12)(?:\.\d+)*.*Safari\//.test(navigator.userAgent))e("/hacsfiles/frontend/frontend_es5/extra.5ic2wwdWbRo.js");else try{new Function("import('/hacsfiles/frontend/frontend_latest/extra.13BG-bIk2Ko.js')")()}catch(n){e("/hacsfiles/frontend/frontend_es5/extra.5ic2wwdWbRo.js")}}()
\ No newline at end of file
+!function(){function e(e){var n=document.createElement("script");n.src=e,document.body.appendChild(n)}if(/.*Version\/(?:11|12)(?:\.\d+)*.*Safari\//.test(navigator.userAgent))e("/hacsfiles/frontend/frontend_es5/extra.q122U5iLLF0.js");else try{new Function("import('/hacsfiles/frontend/frontend_latest/extra.13BG-bIk2Ko.js')")()}catch(n){e("/hacsfiles/frontend/frontend_es5/extra.q122U5iLLF0.js")}}()
\ No newline at end of file
diff --git a/custom_components/hacs/hacs_frontend/frontend_es5/1010.TH7_KSkfLS4.js b/custom_components/hacs/hacs_frontend/frontend_es5/1010.TH7_KSkfLS4.js
new file mode 100644
index 00000000..ce085ccf
--- /dev/null
+++ b/custom_components/hacs/hacs_frontend/frontend_es5/1010.TH7_KSkfLS4.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkhacs_frontend=self.webpackChunkhacs_frontend||[]).push([[1010],{6776:function(e,t,n){n.d(t,{K:function(){return u},t:function(){return l}});var a,r,i=n(64599),o=n(66360),u=(0,o.qy)(a||(a=(0,i.A)(['']))),l=(0,o.qy)(r||(r=(0,i.A)([''])))},67403:function(e,t,n){var a=n(22858).A,r=n(33994).A;n.a(e,function(){var e=a(r().mark((function e(t,a){var i,o,u,l,s;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,i=n(75766),o=n(22201),u=n(15960),!(l=t([i,o])).then){e.next=12;break}return e.next=8,l;case 8:e.t1=e.sent,e.t0=(0,e.t1)(),e.next=13;break;case 12:e.t0=l;case 13:s=e.t0,i=s[0],o=s[1],(0,u.U)(i.$4,o.t),a(),e.next=23;break;case 20:e.prev=20,e.t2=e.catch(0),a(e.t2);case 23:case"end":return e.stop()}}),e,null,[[0,20]])})));return function(t,n){return e.apply(this,arguments)}}())},9921:function(e,t,n){n.d(t,{WA:function(){return c},mm:function(){return d}});var a,r,i,o,u,l=n(64599),s=n(66360),c=(0,s.AH)(a||(a=(0,l.A)(["button{-webkit-appearance:none;-moz-appearance:none;appearance:none;position:relative;display:block;margin:0;padding:0;background:0 0;color:inherit;border:none;font:inherit;text-align:left;text-transform:inherit;-webkit-tap-highlight-color:transparent}"]))),d=((0,s.AH)(r||(r=(0,l.A)(["a{-webkit-tap-highlight-color:transparent;position:relative;display:inline-block;background:initial;color:inherit;font:inherit;text-transform:inherit;text-decoration:none;outline:0}a:focus,a:focus.page-selected{text-decoration:underline}"]))),(0,s.AH)(i||(i=(0,l.A)(["svg{display:block;min-width:var(--svg-icon-min-width,24px);min-height:var(--svg-icon-min-height,24px);fill:var(--svg-icon-fill,currentColor);pointer-events:none}"]))),(0,s.AH)(o||(o=(0,l.A)(["[hidden]{display:none!important}"]))),(0,s.AH)(u||(u=(0,l.A)([":host{display:block}*{box-sizing:border-box}"]))))},75766:function(e,t,n){var a=n(22858).A,r=n(33994).A;n.a(e,function(){var e=a(r().mark((function e(a,i){var o,u,l,s,c,d,f,h,v,m,p,y,b,w,g,_,k,x,D,M,S,T,A,C;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n.d(t,{$4:function(){return C},$g:function(){return S},B0:function(){return _},Gf:function(){return D},YB:function(){return A},eB:function(){return M},tn:function(){return T}}),o=n(81027),n.n(o),u=n(95737),n.n(u),l=n(39790),n.n(l),s=n(74268),n.n(s),c=n(24545),n.n(c),d=n(51855),n.n(d),f=n(82130),n.n(f),h=n(31743),n.n(h),v=n(22328),n.n(v),m=n(4959),n.n(m),p=n(62435),n.n(p),y=n(99019),n.n(y),b=n(96858),n.n(b),w=n(13265),!(g=a([w])).then){e.next=37;break}return e.next=33,g;case 33:e.t1=e.sent,e.t0=(0,e.t1)(),e.next=38;break;case 37:e.t0=g;case 38:w=e.t0[0],_=Intl&&Intl.DateTimeFormat,k=[38,33,36],x=[40,34,35],D=new Set([37].concat(k)),M=new Set([39].concat(x)),S=new Set([39].concat(k)),T=new Set([37].concat(x)),A=new Set([37,39].concat(k,x)),C="app-datepicker","app-datepicker-dialog",i(),e.next=55;break;case 52:e.prev=52,e.t2=e.catch(0),i(e.t2);case 55:case"end":return e.stop()}}),e,null,[[0,52]])})));return function(t,n){return e.apply(this,arguments)}}())},22201:function(e,t,n){var a=n(22858).A,r=n(33994).A;n.a(e,function(){var e=a(r().mark((function e(a,i){var o,u,l,s,c,d,f,h,v,m,p,y,b,w,g,_,k,x,D,M,S,T,A,C,W,F,N,P,Y,L,E,U,q,O,B,H,z,j,V,Z,G,K,X,I,J,Q,R,$,ee,te,ne,ae,re,ie,oe,ue,le,se,ce,de,fe,he,ve,me,pe,ye,be,we,ge,_e,ke;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,n.d(t,{t:function(){return ke}}),o=n(33994),u=n(22858),l=n(64599),s=n(71008),c=n(35806),d=n(62193),f=n(35890),h=n(2816),v=n(95737),n.n(v),m=n(97741),n.n(m),p=n(29193),n.n(p),y=n(39790),n.n(y),b=n(74268),n.n(b),w=n(24545),n.n(w),g=n(51855),n.n(g),_=n(82130),n.n(_),k=n(31743),n.n(k),x=n(22328),n.n(x),D=n(4959),n.n(D),M=n(62435),n.n(M),S=n(99019),n.n(S),T=n(16891),n.n(T),A=n(96858),n.n(A),C=n(79192),W=n(66360),F=n(29818),N=n(19234),P=n(65520),Y=n(93603),L=n(80494),E=n(6776),U=n(9921),q=n(75766),O=n(6411),B=n(13718),H=n(52518),z=n(54113),j=n(69830),V=n(41137),Z=n(6406),G=n(16543),K=n(50097),X=n(84852),I=n(28771),J=n(99233),Q=n(50089),R=n(17231),$=n(20148),ee=n(24622),te=n(21673),ne=n(68647),ae=n(23467),!(re=a([q,B,V,K])).then){e.next=77;break}return e.next=73,re;case 73:e.t1=e.sent,e.t0=(0,e.t1)(),e.next=78;break;case 77:e.t0=re;case 78:ie=e.t0,q=ie[0],B=ie[1],V=ie[2],K=ie[3],ke=function(e){function t(){var e;(0,s.A)(this,t),(e=(0,d.A)(this,t)).firstDayOfWeek=0,e.showWeekNumber=!1,e.weekNumberType="first-4-day-week",e.landscape=!1,e.locale=(0,K.f)(),e.disabledDays="",e.disabledDates="",e.weekLabel="Wk",e.inline=!1,e.dragRatio=.15,e._hasMin=!1,e._hasMax=!1,e._disabledDaysSet=new Set,e._disabledDatesSet=new Set,e._dx=-1/0,e._hasNativeWebAnimation="animate"in HTMLElement.prototype,e._updatingDateWithKey=!1;var n=(0,G.t)(),a=(0,V.G)(e.locale),r=(0,ee.h)(n),i=(0,G.t)("2100-12-31");return e.value=r,e.startView="calendar",e._min=new Date(n),e._max=new Date(i),e._todayDate=n,e._maxDate=i,e._yearList=(0,te.N)(n,i),e._selectedDate=new Date(n),e._focusedDate=new Date(n),e._formatters=a,e}return(0,h.A)(t,e),(0,c.A)(t,[{key:"startView",get:function(){return this._startView},set:function(e){var t=e||"calendar";if("calendar"===t||"yearList"===t){var n=this._startView;this._startView=t,this.requestUpdate("startView",n)}}},{key:"min",get:function(){return this._hasMin?(0,ee.h)(this._min):""},set:function(e){var t=(0,G.t)(e),n=(0,I.v)(e,t);this._min=n?t:this._todayDate,this._hasMin=n,this.requestUpdate("min")}},{key:"max",get:function(){return this._hasMax?(0,ee.h)(this._max):""},set:function(e){var t=(0,G.t)(e),n=(0,I.v)(e,t);this._max=n?t:this._maxDate,this._hasMax=n,this.requestUpdate("max")}},{key:"value",get:function(){return(0,ee.h)(this._focusedDate)},set:function(e){var t=(0,G.t)(e),n=(0,I.v)(e,t)?t:this._todayDate;this._focusedDate=new Date(n),this._selectedDate=this._lastSelectedDate=new Date(n)}},{key:"disconnectedCallback",value:function(){(0,f.A)(t,"disconnectedCallback",this,3)([]),this._tracker&&(this._tracker.disconnect(),this._tracker=void 0)}},{key:"render",value:function(){this._formatters.locale!==this.locale&&(this._formatters=(0,V.G)(this.locale));var e="yearList"===this._startView?this._renderDatepickerYearList():this._renderDatepickerCalendar(),t=this.inline?null:(0,W.qy)(oe||(oe=(0,l.A)(['
"])),this._renderHeaderSelectorButton());return(0,W.qy)(ue||(ue=(0,l.A)([" ",' ',"
"])),t,(0,N.P)(e))}},{key:"firstUpdated",value:function(){var e;e="calendar"===this._startView?this.inline?this.shadowRoot.querySelector(".btn__month-selector"):this._buttonSelectorYear:this._yearViewListItem,(0,H.w)(this,"datepicker-first-updated",{firstFocusableElement:e,value:this.value})}},{key:"updated",value:(n=(0,u.A)((0,o.A)().mark((function e(t){var n,a,r,i,l,s,c,d,f,h,v,m=this;return(0,o.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=this._startView,(t.has("min")||t.has("max"))&&(this._yearList=(0,te.N)(this._min,this._max),"yearList"===n&&this.requestUpdate(),a=+this._min,r=+this._max,(0,j.u)(a,r)>864e5&&(i=+this._focusedDate,l=i,ir&&(l=r),this.value=(0,ee.h)(new Date(l)))),(t.has("_startView")||t.has("startView"))&&("yearList"===n&&(s=48*(this._selectedDate.getUTCFullYear()-this._min.getUTCFullYear()-2),(0,$.G)(this._yearViewFullList,{top:s,left:0})),"calendar"===n&&null==this._tracker&&(c=this.calendarsContainer,d=!1,f=!1,h=!1,c&&(v={down:function(){h||(d=!0,m._dx=0)},move:function(e,t){if(!h&&d){var n=m._dx,a=n<0&&(0,X.n)(c,"has-max-date")||n>0&&(0,X.n)(c,"has-min-date");!a&&Math.abs(n)>0&&d&&(f=!0,c.style.transform="translateX(".concat((0,J.b)(n),"px)")),m._dx=a?0:n+(e.x-t.x)}},up:function(){var e=(0,u.A)((0,o.A)().mark((function e(t,n,a){var r,i,u,l;return(0,o.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!d||!f){e.next=17;break}return r=m._dx,i=c.getBoundingClientRect().width/3,u=Math.abs(r)>Number(m.dragRatio)*i,l=u?(0,J.b)(i*(r<0?-1:1)):0,h=!0,e.next=10,(0,O.K)(c,{hasNativeWebAnimation:m._hasNativeWebAnimation,keyframes:[{transform:"translateX(".concat(r,"px)")},{transform:"translateX(".concat(l,"px)")}],options:{duration:350,easing:"cubic-bezier(0, 0, .4, 1)"}});case 10:u&&m._updateMonth(r<0?"next":"previous").handleEvent(),d=f=h=!1,m._dx=-1/0,c.removeAttribute("style"),(0,H.w)(m,"datepicker-animation-finished"),e.next=18;break;case 17:d&&(m._updateFocusedDate(a),d=f=!1,m._dx=-1/0);case 18:case"end":return e.stop()}}),e)})));return function(t,n,a){return e.apply(this,arguments)}}()},this._tracker=new ae.J(c,v))),t.get("_startView")&&"calendar"===n&&this._focusElement('[part="year-selector"]')),this._updatingDateWithKey&&(this._focusElement('[part="calendars"]:nth-of-type(2) .day--focused'),this._updatingDateWithKey=!1);case 4:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"_focusElement",value:function(e){var t=this.shadowRoot.querySelector(e);t&&t.focus()}},{key:"_renderHeaderSelectorButton",value:function(){var e=this._formatters,t=e.yearFormat,n=e.dateFormat,a="calendar"===this.startView,r=this._focusedDate,i=n(r),o=t(r);return(0,W.qy)(le||(le=(0,l.A)(['
"])),(0,P.H)({"btn__year-selector":!0,selected:!a}),"yearList",this._updateView("yearList"),o,(0,P.H)({"btn__calendar-selector":!0,selected:a}),"calendar",this._updateView("calendar"),i)}},{key:"_renderDatepickerYearList",value:function(){var e=this._formatters.yearFormat,t=this._focusedDate.getUTCFullYear();return(0,W.qy)(se||(se=(0,l.A)([' "])),this._updateYear,this._yearList.map((function(n){return(0,W.qy)(ce||(ce=(0,l.A)(['"])),(0,P.H)({"year-list-view__list-item":!0,"year--selected":t===n}),n,e((0,L.m)(n,0,1)))})))}},{key:"_renderDatepickerCalendar",value:function(){var e=this,t=this._formatters,n=t.longMonthYearFormat,a=t.dayFormat,r=t.fullDateFormat,i=t.longWeekdayFormat,o=t.narrowWeekdayFormat,u=(0,R.S)(this.disabledDays,Number),s=(0,R.S)(this.disabledDates,G.t),c=this.showWeekNumber,d=this._focusedDate,f=this.firstDayOfWeek,h=(0,G.t)(),v=this._selectedDate,m=this._max,p=this._min,y=(0,Z.n)({dayFormat:a,fullDateFormat:r,longWeekdayFormat:i,narrowWeekdayFormat:o,firstDayOfWeek:f,disabledDays:u,disabledDates:s,locale:this.locale,selectedDate:v,showWeekNumber:this.showWeekNumber,weekNumberType:this.weekNumberType,max:m,min:p,weekLabel:this.weekLabel}),b=y.calendars,w=y.disabledDaysSet,g=y.disabledDatesSet,_=y.weekdays,k=!b[0].calendar.length,x=!b[2].calendar.length,D=_.map((function(e){return(0,W.qy)(de||(de=(0,l.A)([' '," | "])),e.label,e.value)})),M=(0,Y.u)(b,(function(e){return e.key}),(function(t,a){var r=t.calendar;if(!r.length)return(0,W.qy)(fe||(fe=(0,l.A)([''])));var i="calendarcaption".concat(a),o=r[1][1].fullDate,u=1===a,s=u&&!e._isInVisibleMonth(d,v)?(0,B.Y)({disabledDaysSet:w,disabledDatesSet:g,hasAltKey:!1,keyCode:36,focusedDate:d,selectedDate:v,minTime:+p,maxTime:+m}):d;return(0,W.qy)(he||(he=(0,l.A)([' "])),i,i,o?n(o):"",D,r.map((function(e){return(0,W.qy)(ve||(ve=(0,l.A)(['',"
"])),e.map((function(e,t){var n=e.disabled,a=e.fullDate,r=e.label,i=e.value;if(!a&&i&&c&&t<1)return(0,W.qy)(me||(me=(0,l.A)([''," | "])),r,r,i);if(!i||!a)return(0,W.qy)(pe||(pe=(0,l.A)([' | '])));var o=+new Date(a),f=+d===o,v=u&&s.getUTCDate()===Number(i);return(0,W.qy)(ye||(ye=(0,l.A)([' '," | "])),v?"0":"-1",(0,P.H)({"full-calendar__day":!0,"day--disabled":n,"day--today":+h===o,"day--focused":!n&&f}),+h===o?" calendar-today":"",n?"true":"false",r,f?"true":"false",a,i,+h===o?" today":"",i)})))})))}));return this._disabledDatesSet=g,this._disabledDaysSet=w,(0,W.qy)(be||(be=(0,l.A)([' "])),k?null:(0,W.qy)(we||(we=(0,l.A)([' "])),this._updateMonth("previous"),E.K),x?null:(0,W.qy)(ge||(ge=(0,l.A)([' "])),this._updateMonth("next"),E.t),(0,P.H)({"calendars-container":!0,"has-min-date":k,"has-max-date":x}),this._updateFocusedDateWithKeyboard,M)}},{key:"_updateView",value:function(e){var t=this;return(0,Q.c)((function(){"calendar"===e&&(t._selectedDate=t._lastSelectedDate=new Date((0,ne.V)(t._focusedDate,t._min,t._max))),t._startView=e}))}},{key:"_updateMonth",value:function(e){var t=this;return(0,Q.c)((function(){if(null==t.calendarsContainer)return t.updateComplete;var n=t._lastSelectedDate||t._selectedDate,a=t._min,r=t._max,i="previous"===e,o=(0,L.m)(n.getUTCFullYear(),n.getUTCMonth()+(i?-1:1),1),u=o.getUTCFullYear(),l=o.getUTCMonth(),s=a.getUTCFullYear(),c=a.getUTCMonth(),d=r.getUTCFullYear(),f=r.getUTCMonth();return ud||u>=d&&l>f)||(t._lastSelectedDate=o,t._selectedDate=t._lastSelectedDate),t.updateComplete}))}},{key:"_updateYear",value:function(e){var t=(0,z.z)(e,(function(e){return(0,X.n)(e,"year-list-view__list-item")}));if(null!=t){var n=(0,ne.V)(new Date(this._focusedDate).setUTCFullYear(+t.year),this._min,this._max);this._selectedDate=this._lastSelectedDate=new Date(n),this._focusedDate=new Date(n),this._startView="calendar"}}},{key:"_updateFocusedDate",value:function(e){var t=(0,z.z)(e,(function(e){return(0,X.n)(e,"full-calendar__day")}));null==t||["day--empty","day--disabled","day--focused","weekday-label"].some((function(e){return(0,X.n)(t,e)}))||(this._focusedDate=new Date(t.fullDate),(0,H.w)(this,"datepicker-value-updated",{isKeypress:!1,value:this.value}))}},{key:"_updateFocusedDateWithKeyboard",value:function(e){var t=e.keyCode;if(13===t||32===t)return(0,H.w)(this,"datepicker-value-updated",{keyCode:t,isKeypress:!0,value:this.value}),void(this._focusedDate=new Date(this._selectedDate));if(9!==t&&q.YB.has(t)){var n=this._selectedDate,a=(0,B.Y)({keyCode:t,selectedDate:n,disabledDatesSet:this._disabledDatesSet,disabledDaysSet:this._disabledDaysSet,focusedDate:this._focusedDate,hasAltKey:e.altKey,maxTime:+this._max,minTime:+this._min});this._isInVisibleMonth(a,n)||(this._selectedDate=this._lastSelectedDate=a),this._focusedDate=a,this._updatingDateWithKey=!0,(0,H.w)(this,"datepicker-value-updated",{keyCode:t,isKeypress:!0,value:this.value})}}},{key:"_isInVisibleMonth",value:function(e,t){var n=e.getUTCFullYear(),a=e.getUTCMonth(),r=t.getUTCFullYear(),i=t.getUTCMonth();return n===r&&a===i}},{key:"calendarsContainer",get:function(){return this.shadowRoot.querySelector(".calendars-container")}}]);var n}(W.WF),ke.styles=[U.mm,U.WA,(0,W.AH)(_e||(_e=(0,l.A)([":host{width:312px;background-color:var(--app-datepicker-bg-color,#fff);color:var(--app-datepicker-color,#000);border-radius:var(--app-datepicker-border-top-left-radius,0) var(--app-datepicker-border-top-right-radius,0) var(--app-datepicker-border-bottom-right-radius,0) var(--app-datepicker-border-bottom-left-radius,0);contain:content;overflow:hidden}:host([landscape]){display:flex;min-width:calc(568px - 16px * 2);width:calc(568px - 16px * 2)}.datepicker-header+.datepicker-body{border-top:1px solid var(--app-datepicker-separator-color,#ddd)}:host([landscape])>.datepicker-header+.datepicker-body{border-top:none;border-left:1px solid var(--app-datepicker-separator-color,#ddd)}.datepicker-header{display:flex;flex-direction:column;align-items:flex-start;position:relative;padding:16px 24px}:host([landscape])>.datepicker-header{min-width:calc(14ch + 24px * 2)}.btn__calendar-selector,.btn__year-selector{color:var(--app-datepicker-selector-color,rgba(0,0,0,.55));cursor:pointer}.btn__calendar-selector.selected,.btn__year-selector.selected{color:currentColor}.datepicker-toolbar{width:100%}.btn__year-selector{font-size:16px;font-weight:700}.btn__calendar-selector{font-size:36px;font-weight:700;line-height:1}.datepicker-body{position:relative;width:100%;overflow:hidden}.datepicker-body__calendar-view{min-height:56px}.calendar-view__month-selector{display:flex;align-items:center;position:absolute;top:0;left:0;width:100%;padding:0 8px;z-index:1}.month-selector-container{max-height:56px;height:100%}.month-selector-container+.month-selector-container{margin:0 0 0 auto}.btn__month-selector{padding:calc((56px - 24px)/ 2);line-height:0}.btn__month-selector>svg{fill:currentColor}.calendars-container{display:flex;justify-content:center;position:relative;top:0;left:calc(-100%);width:calc(100% * 3);transform:translateZ(0);will-change:transform;touch-action:pan-y}.year-list-view__full-list{max-height:calc(48px * 7);overflow-y:auto;scrollbar-color:var(--app-datepicker-scrollbar-thumb-bg-color,rgba(0,0,0,.35)) rgba(0,0,0,0);scrollbar-width:thin}.year-list-view__full-list::-webkit-scrollbar{width:8px;background-color:rgba(0,0,0,0)}.year-list-view__full-list::-webkit-scrollbar-thumb{background-color:var(--app-datepicker-scrollbar-thumb-bg-color,rgba(0,0,0,.35));border-radius:50px}.year-list-view__full-list::-webkit-scrollbar-thumb:hover{background-color:var(--app-datepicker-scrollbar-thumb-hover-bg-color,rgba(0,0,0,.5))}.calendar-weekdays>th,.weekday-label{color:var(--app-datepicker-weekday-color,rgba(0,0,0,.55));font-weight:400;transform:translateZ(0);will-change:transform}.calendar-container,.calendar-label,.calendar-table{width:100%}.calendar-container{position:relative;padding:0 16px 16px}.calendar-table{-moz-user-select:none;-webkit-user-select:none;user-select:none;border-collapse:collapse;border-spacing:0;text-align:center}.calendar-label{display:flex;align-items:center;justify-content:center;height:56px;font-weight:500;text-align:center}.calendar-weekday,.full-calendar__day{position:relative;width:calc(100% / 7);height:0;padding:calc(100% / 7 / 2) 0;outline:0;text-align:center}.full-calendar__day:not(.day--disabled):focus{outline:#000 dotted 1px;outline:-webkit-focus-ring-color auto 1px}:host([showweeknumber]) .calendar-weekday,:host([showweeknumber]) .full-calendar__day{width:calc(100% / 8);padding-top:calc(100% / 8);padding-bottom:0}:host([showweeknumber]) th.weekday-label{padding:0}.full-calendar__day:not(.day--empty):not(.day--disabled):not(.weekday-label){transform:translateZ(0);will-change:transform}.full-calendar__day:not(.day--empty):not(.day--disabled):not(.day--focused):not(.weekday-label):hover::after,.full-calendar__day:not(.day--empty):not(.day--disabled):not(.weekday-label).day--focused::after{content:'';display:block;position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--app-datepicker-accent-color,#1a73e8);border-radius:50%;opacity:0;pointer-events:none}.full-calendar__day:not(.day--empty):not(.day--disabled):not(.weekday-label){cursor:pointer;pointer-events:auto;-webkit-tap-highlight-color:transparent}.full-calendar__day.day--focused:not(.day--empty):not(.day--disabled):not(.weekday-label)::after,.full-calendar__day.day--today.day--focused:not(.day--empty):not(.day--disabled):not(.weekday-label)::after{opacity:1}.calendar-weekday>.weekday,.full-calendar__day>.calendar-day{display:flex;align-items:center;justify-content:center;position:absolute;top:5%;left:5%;width:90%;height:90%;color:currentColor;font-size:14px;pointer-events:none;z-index:1}.full-calendar__day.day--today{color:var(--app-datepicker-accent-color,#1a73e8)}.full-calendar__day.day--focused,.full-calendar__day.day--today.day--focused{color:var(--app-datepicker-focused-day-color,#fff)}.full-calendar__day.day--disabled>.calendar-day,.full-calendar__day.day--empty,.full-calendar__day.weekday-label{pointer-events:none}.full-calendar__day.day--disabled:not(.day--today){color:var(--app-datepicker-disabled-day-color,rgba(0,0,0,.55))}.year-list-view__list-item{position:relative;width:100%;padding:12px 16px;text-align:center}.year-list-view__list-item::after{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background-color:var(--app-datepicker-focused-year-bg-color,#000);opacity:0;pointer-events:none}.year-list-view__list-item:focus::after{opacity:.05}.year-list-view__list-item.year--selected{color:var(--app-datepicker-accent-color,#1a73e8);font-size:24px;font-weight:500}@media (any-hover:hover){.btn__month-selector:hover,.year-list-view__list-item:hover{cursor:pointer}.full-calendar__day:not(.day--empty):not(.day--disabled):not(.day--focused):not(.weekday-label):hover::after{opacity:.15}.year-list-view__list-item:hover::after{opacity:.05}}@supports (background:-webkit-canvas(squares)){.calendar-container{padding:56px 16px 16px}table>caption{position:absolute;top:0;left:50%;transform:translate3d(-50%,0,0);will-change:transform}}"])))],(0,C.__decorate)([(0,F.MZ)({type:Number,reflect:!0})],ke.prototype,"firstDayOfWeek",void 0),(0,C.__decorate)([(0,F.MZ)({type:Boolean,reflect:!0})],ke.prototype,"showWeekNumber",void 0),(0,C.__decorate)([(0,F.MZ)({type:String,reflect:!0})],ke.prototype,"weekNumberType",void 0),(0,C.__decorate)([(0,F.MZ)({type:Boolean,reflect:!0})],ke.prototype,"landscape",void 0),(0,C.__decorate)([(0,F.MZ)({type:String,reflect:!0})],ke.prototype,"startView",null),(0,C.__decorate)([(0,F.MZ)({type:String,reflect:!0})],ke.prototype,"min",null),(0,C.__decorate)([(0,F.MZ)({type:String,reflect:!0})],ke.prototype,"max",null),(0,C.__decorate)([(0,F.MZ)({type:String})],ke.prototype,"value",null),(0,C.__decorate)([(0,F.MZ)({type:String})],ke.prototype,"locale",void 0),(0,C.__decorate)([(0,F.MZ)({type:String})],ke.prototype,"disabledDays",void 0),(0,C.__decorate)([(0,F.MZ)({type:String})],ke.prototype,"disabledDates",void 0),(0,C.__decorate)([(0,F.MZ)({type:String})],ke.prototype,"weekLabel",void 0),(0,C.__decorate)([(0,F.MZ)({type:Boolean})],ke.prototype,"inline",void 0),(0,C.__decorate)([(0,F.MZ)({type:Number})],ke.prototype,"dragRatio",void 0),(0,C.__decorate)([(0,F.MZ)({type:Date,attribute:!1})],ke.prototype,"_selectedDate",void 0),(0,C.__decorate)([(0,F.MZ)({type:Date,attribute:!1})],ke.prototype,"_focusedDate",void 0),(0,C.__decorate)([(0,F.MZ)({type:String,attribute:!1})],ke.prototype,"_startView",void 0),(0,C.__decorate)([(0,F.P)(".year-list-view__full-list")],ke.prototype,"_yearViewFullList",void 0),(0,C.__decorate)([(0,F.P)(".btn__year-selector")],ke.prototype,"_buttonSelectorYear",void 0),(0,C.__decorate)([(0,F.P)(".year-list-view__list-item")],ke.prototype,"_yearViewListItem",void 0),(0,C.__decorate)([(0,F.Ls)({passive:!0})],ke.prototype,"_updateYear",null),(0,C.__decorate)([(0,F.Ls)({passive:!0})],ke.prototype,"_updateFocusedDateWithKeyboard",null),i(),e.next=113;break;case 110:e.prev=110,e.t2=e.catch(0),i(e.t2);case 113:case"end":return e.stop()}}),e,null,[[0,110]])})));return function(t,n){return e.apply(this,arguments)}}())},6411:function(e,t,n){n.d(t,{K:function(){return o}});var a=n(33994),r=n(658),i=n(22858);n(10507),n(39790),n(66457),n(253),n(54846),n(66555);function o(e,t){return u.apply(this,arguments)}function u(){return(u=(0,i.A)((0,a.A)().mark((function e(t,n){var i,o,u,l,s,c,d;return(0,a.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o=(i=n||{}).hasNativeWebAnimation,u=void 0!==o&&o,l=i.keyframes,s=void 0===l?[]:l,c=i.options,d=void 0===c?{duration:100}:c,Array.isArray(s)&&s.length){e.next=3;break}return e.abrupt("return");case 3:return e.abrupt("return",new Promise((function(e){if(u){t.animate(s,d).onfinish=function(){return e()}}else{var n=s||[],a=(0,r.A)(n,2)[1],i=function(){t.removeEventListener("transitionend",i),e()};t.addEventListener("transitionend",i),t.style.transitionDuration="".concat(d.duration,"ms"),d.easing&&(t.style.transitionTimingFunction=d.easing),Object.keys(a).forEach((function(e){e&&(t.style[e]=a[e])}))}})));case 4:case"end":return e.stop()}}),e)})))).apply(this,arguments)}},13718:function(e,t,n){var a=n(22858).A,r=n(33994).A;n.a(e,function(){var e=a(r().mark((function e(a,i){var o,u,l,s,c,d;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,d=function(e){var t=e.hasAltKey,n=e.keyCode,a=e.focusedDate,r=e.selectedDate,i=e.disabledDaysSet,s=e.disabledDatesSet,c=e.minTime,d=e.maxTime,f=a.getUTCFullYear(),h=a.getUTCMonth(),v=a.getUTCDate(),m=+a,p=r.getUTCFullYear(),y=r.getUTCMonth(),b=f,w=h,g=v,_=!0;switch((y!==h||p!==f)&&(b=p,w=y,g=1,_=34===n||33===n||35===n),_){case m===c&&u.Gf.has(n):case m===d&&u.eB.has(n):break;case 38===n:g-=7;break;case 40===n:g+=7;break;case 37===n:g-=1;break;case 39===n:g+=1;break;case 34===n:t?b+=1:w+=1;break;case 33===n:t?b-=1:w-=1;break;case 35===n:w+=1,g=0;break;default:g=1}if(34===n||33===n){var k=(0,o.m)(b,w+1,0).getUTCDate();g>k&&(g=k)}return(0,l.i)({keyCode:n,maxTime:d,minTime:c,disabledDaysSet:i,disabledDatesSet:s,focusedDate:(0,o.m)(b,w,g)})},n.d(t,{Y:function(){return d}}),o=n(80494),u=n(75766),l=n(23079),!(s=a([u,l])).then){e.next=14;break}return e.next=10,s;case 10:e.t1=e.sent,e.t0=(0,e.t1)(),e.next=15;break;case 14:e.t0=s;case 15:c=e.t0,u=c[0],l=c[1],i(),e.next=24;break;case 21:e.prev=21,e.t2=e.catch(0),i(e.t2);case 24:case"end":return e.stop()}}),e,null,[[0,21]])})));return function(t,n){return e.apply(this,arguments)}}())},15960:function(e,t,n){function a(e,t){window.customElements&&!window.customElements.get(e)&&window.customElements.define(e,t)}n.d(t,{U:function(){return a}})},52518:function(e,t,n){function a(e,t,n){return e.dispatchEvent(new CustomEvent(t,{detail:n,bubbles:!0,composed:!0}))}n.d(t,{w:function(){return a}})},54113:function(e,t,n){n.d(t,{z:function(){return a}});n(44124),n(39790),n(253),n(94438);function a(e,t){return e.composedPath().find((function(e){return e instanceof HTMLElement&&t(e)}))}},69830:function(e,t,n){function a(e,t){return+t-+e}n.d(t,{u:function(){return a}})},41137:function(e,t,n){var a=n(22858).A,r=n(33994).A;n.a(e,function(){var e=a(r().mark((function e(a,i){var o,u,l,s;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,s=function(e){var t=(0,u.B0)(e,{timeZone:"UTC",weekday:"short",month:"short",day:"numeric"}),n=(0,u.B0)(e,{timeZone:"UTC",day:"numeric"}),a=(0,u.B0)(e,{timeZone:"UTC",year:"numeric",month:"short",day:"numeric"}),r=(0,u.B0)(e,{timeZone:"UTC",year:"numeric",month:"long"}),i=(0,u.B0)(e,{timeZone:"UTC",weekday:"long"}),l=(0,u.B0)(e,{timeZone:"UTC",weekday:"narrow"}),s=(0,u.B0)(e,{timeZone:"UTC",year:"numeric"});return{locale:e,dateFormat:(0,o.f)(t),dayFormat:(0,o.f)(n),fullDateFormat:(0,o.f)(a),longMonthYearFormat:(0,o.f)(r),longWeekdayFormat:(0,o.f)(i),narrowWeekdayFormat:(0,o.f)(l),yearFormat:(0,o.f)(s)}},n.d(t,{G:function(){return s}}),o=n(26120),u=n(75766),!(l=a([u])).then){e.next=13;break}return e.next=9,l;case 9:e.t1=e.sent,e.t0=(0,e.t1)(),e.next=14;break;case 13:e.t0=l;case 14:u=e.t0[0],i(),e.next=21;break;case 18:e.prev=18,e.t2=e.catch(0),i(e.t2);case 21:case"end":return e.stop()}}),e,null,[[0,18]])})));return function(t,n){return e.apply(this,arguments)}}())},6406:function(e,t,n){n.d(t,{n:function(){return f}});var a=n(50281),r=n(64782),i=(n(13025),n(95737),n(79243),n(97741),n(89655),n(6566),n(61532),n(26098),n(39790),n(74268),n(24545),n(51855),n(82130),n(31743),n(22328),n(4959),n(62435),n(99019),n(253),n(2075),n(96858),n(52427),n(46469),n(37679),n(80494));n(42942),n(48062),n(67336),n(71499),n(18193),n(50693),n(36016),n(98185),n(7760);function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=Array(t);n=e.length?{done:!0}:{done:!1,value:e[a++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,l=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return u=e.done,e},e:function(e){l=!0,i=e},f:function(){try{u||null==n.return||n.return()}finally{if(l)throw i}}}}n(81027),n(16891);function l(e,t){var n=function(e,t){var n=t.getUTCFullYear(),a=t.getUTCMonth(),r=t.getUTCDate(),o=t.getUTCDay(),u=o;return"first-4-day-week"===e&&(u=3),"first-day-of-year"===e&&(u=6),"first-full-week"===e&&(u=0),(0,i.m)(n,a,r-o+u)}(e,t),a=(0,i.m)(n.getUTCFullYear(),0,1),r=1+(+n-+a)/864e5;return Math.ceil(r/7)}function s(e){return e>=0&&e<7?Math.abs(e):((e<0?7*Math.ceil(Math.abs(e)):0)+e)%7}function c(e,t,n){var a=s(e-t);return n?1+a:a}n(26120);var d=["disabledDatesSet","disabledDaysSet"];function f(e){var t,n=e.dayFormat,o=e.fullDateFormat,f=e.locale,h=e.longWeekdayFormat,v=e.narrowWeekdayFormat,m=e.selectedDate,p=e.disabledDates,y=e.disabledDays,b=e.firstDayOfWeek,w=e.max,g=e.min,_=e.showWeekNumber,k=e.weekLabel,x=e.weekNumberType,D=null==g?Number.MIN_SAFE_INTEGER:+g,M=null==w?Number.MAX_SAFE_INTEGER:+w,S=function(e){var t=e||{},n=t.firstDayOfWeek,a=void 0===n?0:n,r=t.showWeekNumber,o=void 0!==r&&r,u=t.weekLabel,l=t.longWeekdayFormat,s=t.narrowWeekdayFormat,c=1+(a+(a<0?7:0))%7,d=u||"Wk",f=o?[{label:"Wk"===d?"Week":d,value:d}]:[];return Array.from(Array(7)).reduce((function(e,t,n){var a=(0,i.m)(2017,0,c+n);return e.push({label:l(a),value:s(a)}),e}),f)}({longWeekdayFormat:h,narrowWeekdayFormat:v,firstDayOfWeek:b,showWeekNumber:_,weekLabel:k}),T=function(e){return[f,e.toJSON(),null==p?void 0:p.join("_"),null==y?void 0:y.join("_"),b,null==w?void 0:w.toJSON(),null==g?void 0:g.toJSON(),_,k,x].filter(Boolean).join(":")},A=m.getUTCFullYear(),C=m.getUTCMonth(),W=[-1,0,1].map((function(e){var t=(0,i.m)(A,C+e,1),a=+(0,i.m)(A,C+e+1,0),r=T(t);if(aM)return{key:r,calendar:[],disabledDatesSet:new Set,disabledDaysSet:new Set};var d=function(e){for(var t=e||{},n=t.date,a=t.dayFormat,r=t.disabledDates,o=void 0===r?[]:r,d=t.disabledDays,f=void 0===d?[]:d,h=t.firstDayOfWeek,v=void 0===h?0:h,m=t.fullDateFormat,p=t.locale,y=void 0===p?"en-US":p,b=t.max,w=t.min,g=t.showWeekNumber,_=void 0!==g&&g,k=t.weekLabel,x=void 0===k?"Week":k,D=t.weekNumberType,M=void 0===D?"first-4-day-week":D,S=s(v),T=n.getUTCFullYear(),A=n.getUTCMonth(),C=(0,i.m)(T,A,1),W=new Set(f.map((function(e){return c(e,S,_)}))),F=new Set(o.map((function(e){return+e}))),N=[C.toJSON(),S,y,null==b?"":b.toJSON(),null==w?"":w.toJSON(),Array.from(W).join(","),Array.from(F).join(","),M].filter(Boolean).join(":"),P=c(C.getUTCDay(),S,_),Y=null==w?+new Date("2000-01-01"):+w,L=null==b?+new Date("2100-12-31"):+b,E=_?8:7,U=(0,i.m)(T,1+A,0).getUTCDate(),q=[],O=[],B=!1,H=1,z=0,j=[0,1,2,3,4,5];zL;Q&&F.add(J),O.push({fullDate:I,label:m(I),value:a(I),key:"".concat(N,":").concat(I.toJSON()),disabled:Q}),(H+=1)>U&&(B=!0)}else{var R=Z<1?S:0,$=l(M,(0,i.m)(T,A,H-R)),ee="".concat(x," ").concat($);O.push({fullDate:null,label:ee,value:"".concat($),key:"".concat(N,":").concat(ee),disabled:!0})}}}catch(te){G.e(te)}finally{G.f()}q.push(O),O=[]}return{disabledDatesSet:F,calendar:q,disabledDaysSet:new Set(f.map((function(e){return s(e)}))),key:N}}({dayFormat:n,fullDateFormat:o,locale:f,disabledDates:p,disabledDays:y,firstDayOfWeek:b,max:w,min:g,showWeekNumber:_,weekLabel:k,weekNumberType:x,date:t});return Object.assign(Object.assign({},d),{},{key:r})})),F=[],N=new Set,P=new Set,Y=(0,r.A)(W);try{for(Y.s();!(t=Y.n()).done;){var L=t.value,E=L.disabledDatesSet,U=L.disabledDaysSet,q=(0,a.A)(L,d);if(q.calendar.length>0){if(U.size>0){var O,B=(0,r.A)(U);try{for(B.s();!(O=B.n()).done;){var H=O.value;P.add(H)}}catch(Z){B.e(Z)}finally{B.f()}}if(E.size>0){var z,j=(0,r.A)(E);try{for(j.s();!(z=j.n()).done;){var V=z.value;N.add(V)}}catch(Z){j.e(Z)}finally{j.f()}}}F.push(q)}}catch(Z){Y.e(Z)}finally{Y.f()}return{calendars:F,weekdays:S,disabledDatesSet:N,disabledDaysSet:P,key:T(m)}}},16543:function(e,t,n){n.d(t,{t:function(){return r}});n(36016),n(98185);var a=n(80494);function r(e){var t=null==e?new Date:new Date(e),n="string"==typeof e&&(/^\d{4}-\d{2}-\d{2}$/i.test(e)||/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}(Z|\+00:00|-00:00)$/i.test(e)),r="number"==typeof e&&e>0&&isFinite(e),i=t.getFullYear(),o=t.getMonth(),u=t.getDate();return(n||r)&&(i=t.getUTCFullYear(),o=t.getUTCMonth(),u=t.getUTCDate()),(0,a.m)(i,o,u)}},50097:function(e,t,n){var a=n(22858).A,r=n(33994).A;n.a(e,function(){var e=a(r().mark((function e(a,i){var o,u,l;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,l=function(){return o.B0&&(0,o.B0)().resolvedOptions&&(0,o.B0)().resolvedOptions().locale||"en-US"},n.d(t,{f:function(){return l}}),o=n(75766),!(u=a([o])).then){e.next=12;break}return e.next=8,u;case 8:e.t1=e.sent,e.t0=(0,e.t1)(),e.next=13;break;case 12:e.t0=u;case 13:o=e.t0[0],i(),e.next=20;break;case 17:e.prev=17,e.t2=e.catch(0),i(e.t2);case 20:case"end":return e.stop()}}),e,null,[[0,17]])})));return function(t,n){return e.apply(this,arguments)}}())},23079:function(e,t,n){var a=n(22858).A,r=n(33994).A;n.a(e,function(){var e=a(r().mark((function e(a,i){var o,u,l,s,c;return r().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,c=function(e){var t=e.keyCode,n=e.disabledDaysSet,a=e.disabledDatesSet,r=e.focusedDate,i=e.maxTime,s=e.minTime,c=+r,d=ci;if((0,l.u)(s,i)<864e5)return r;var h=d||f||n.has(r.getUTCDay())||a.has(c);if(!h)return r;for(var v=0,m=d===f?r:new Date(d?s-864e5:864e5+i),p=m.getUTCFullYear(),y=m.getUTCMonth(),b=m.getUTCDate();h;)(d||!f&&u.$g.has(t))&&(b+=1),(f||!d&&u.tn.has(t))&&(b-=1),v=+(m=(0,o.m)(p,y,b)),d||(d=vi)&&(v=+(m=new Date(i)),b=m.getUTCDate()),h=n.has(m.getUTCDay())||a.has(v);return m},n.d(t,{i:function(){return c}}),o=n(80494),u=n(75766),l=n(69830),!(s=a([u])).then){e.next=14;break}return e.next=10,s;case 10:e.t1=e.sent,e.t0=(0,e.t1)(),e.next=15;break;case 14:e.t0=s;case 15:u=e.t0[0],i(),e.next=22;break;case 19:e.prev=19,e.t2=e.catch(0),i(e.t2);case 22:case"end":return e.stop()}}),e,null,[[0,19]])})));return function(t,n){return e.apply(this,arguments)}}())},84852:function(e,t,n){function a(e,t){return e.classList.contains(t)}n.d(t,{n:function(){return a}})},28771:function(e,t,n){function a(e,t){return!(null==e||!(t instanceof Date)||isNaN(+t))}n.d(t,{v:function(){return a}})},99233:function(e,t,n){n.d(t,{b:function(){return a}});n(82115);function a(e){return e-Math.floor(e)>0?+e.toFixed(3):e}},50089:function(e,t,n){function a(e){return{passive:!0,handleEvent:e}}n.d(t,{c:function(){return a}})},17231:function(e,t,n){n.d(t,{S:function(){return a}});n(97741),n(36016),n(17001),n(16891);function a(e,t){var n="string"==typeof e&&e.length>0?e.split(/,\s*/i):[];return n.length?"function"==typeof t?n.map(t):n:[]}},20148:function(e,t,n){function a(e,t){if(null==e.scrollTo){var n=t||{},a=n.top,r=n.left;e.scrollTop=a||0,e.scrollLeft=r||0}else e.scrollTo(t)}n.d(t,{G:function(){return a}})},24622:function(e,t,n){n.d(t,{h:function(){return a}});n(36016),n(43037);function a(e){if(e instanceof Date&&!isNaN(+e)){var t=e.toJSON();return null==t?"":t.replace(/^(.+)T.+/i,"$1")}return""}},21673:function(e,t,n){n.d(t,{N:function(){return r}});n(52427),n(99019);var a=n(69830);function r(e,t){if((0,a.u)(e,t)<864e5)return[];var n=e.getUTCFullYear();return Array.from(Array(t.getUTCFullYear()-n+1),(function(e,t){return t+n}))}},68647:function(e,t,n){function a(e,t,n){var a="number"==typeof e?e:+e,r=+t,i=+n;return ai?i:e}n.d(t,{V:function(){return a}})},23467:function(e,t,n){n.d(t,{J:function(){return s}});var a=n(71008),r=n(35806),i=(n(44124),n(52427),n(39790),n(99019),n(253),n(94438),n(15208));function o(e){var t=e.clientX,n=e.clientY,a=e.pageX,r=e.pageY,i=Math.max(a,t),o=Math.max(r,n),u=e.identifier||e.pointerId;return{x:i,y:o,id:null==u?0:u}}function u(e,t){var n=t.changedTouches;if(null==n)return{newPointer:o(t),oldPointer:e};var a=Array.from(n,(function(e){return o(e)}));return{newPointer:null==e?a[0]:a.find((function(t){return t.id===e.id})),oldPointer:e}}function l(e,t,n){e.addEventListener(t,n,!!i.QQ&&{passive:!0})}var s=function(){return(0,r.A)((function e(t,n){(0,a.A)(this,e),this._element=t,this._startPointer=null;var r=n.down,i=n.move,o=n.up;this._down=this._onDown(r),this._move=this._onMove(i),this._up=this._onUp(o),t&&t.addEventListener&&(t.addEventListener("mousedown",this._down),l(t,"touchstart",this._down),l(t,"touchmove",this._move),l(t,"touchend",this._up))}),[{key:"disconnect",value:function(){var e=this._element;e&&e.removeEventListener&&(e.removeEventListener("mousedown",this._down),e.removeEventListener("touchstart",this._down),e.removeEventListener("touchmove",this._move),e.removeEventListener("touchend",this._up))}},{key:"_onDown",value:function(e){var t=this;return function(n){n instanceof MouseEvent&&(t._element.addEventListener("mousemove",t._move),t._element.addEventListener("mouseup",t._up),t._element.addEventListener("mouseleave",t._up));var a=u(t._startPointer,n).newPointer;e(a,n),t._startPointer=a}}},{key:"_onMove",value:function(e){var t=this;return function(n){t._updatePointers(e,n)}}},{key:"_onUp",value:function(e){var t=this;return function(n){t._updatePointers(e,n,!0)}}},{key:"_updatePointers",value:function(e,t,n){n&&t instanceof MouseEvent&&(this._element.removeEventListener("mousemove",this._move),this._element.removeEventListener("mouseup",this._up),this._element.removeEventListener("mouseleave",this._up));var a=u(this._startPointer,t),r=a.newPointer;e(r,a.oldPointer,t),this._startPointer=n?null:r}}])}()},54630:function(e,t,n){var a=n(72148);e.exports=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(a)},36686:function(e,t,n){var a=n(13113),r=n(93187),i=n(53138),o=n(90924),u=n(22669),l=a(o),s=a("".slice),c=Math.ceil,d=function(e){return function(t,n,a){var o,d,f=i(u(t)),h=r(n),v=f.length,m=void 0===a?" ":i(a);return h<=v||""===m?f:((d=l(m,c((o=h-v)/m.length))).length>o&&(d=s(d,0,o)),e?f+d:d+f)}};e.exports={start:d(!1),end:d(!0)}},90924:function(e,t,n){var a=n(33616),r=n(53138),i=n(22669),o=RangeError;e.exports=function(e){var t=r(i(this)),n="",u=a(e);if(u<0||u===1/0)throw new o("Wrong number of repetitions");for(;u>0;(u>>>=1)&&(t+=t))1&u&&(n+=t);return n}},47924:function(e,t,n){n(41765)({target:"Math",stat:!0},{trunc:n(49030)})},61532:function(e,t,n){n(41765)({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991})},82115:function(e,t,n){var a=n(41765),r=n(13113),i=n(33616),o=n(64849),u=n(90924),l=n(26906),s=RangeError,c=String,d=Math.floor,f=r(u),h=r("".slice),v=r(1..toFixed),m=function(e,t,n){return 0===t?n:t%2==1?m(e,t-1,n*e):m(e*e,t/2,n)},p=function(e,t,n){for(var a=-1,r=n;++a<6;)r+=t*e[a],e[a]=r%1e7,r=d(r/1e7)},y=function(e,t){for(var n=6,a=0;--n>=0;)a+=e[n],e[n]=d(a/t),a=a%t*1e7},b=function(e){for(var t=6,n="";--t>=0;)if(""!==n||0===t||0!==e[t]){var a=c(e[t]);n=""===n?a:n+f("0",7-a.length)+a}return n};a({target:"Number",proto:!0,forced:l((function(){return"0.000"!==v(8e-5,3)||"1"!==v(.9,0)||"1.25"!==v(1.255,2)||"1000000000000000128"!==v(0xde0b6b3a7640080,0)}))||!l((function(){v({})}))},{toFixed:function(e){var t,n,a,r,u=o(this),l=i(e),d=[0,0,0,0,0,0],v="",w="0";if(l<0||l>20)throw new s("Incorrect fraction digits");if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return c(u);if(u<0&&(v="-",u=-u),u>1e-21)if(n=(t=function(e){for(var t=0,n=e;n>=4096;)t+=12,n/=4096;for(;n>=2;)t+=1,n/=2;return t}(u*m(2,69,1))-69)<0?u*m(2,-t,1):u/m(2,t,1),n*=4503599627370496,(t=52-t)>0){for(p(d,0,n),a=l;a>=7;)p(d,1e7,0),a-=7;for(p(d,m(10,a,1),0),a=t-1;a>=23;)y(d,1<<23),a-=23;y(d,1<0?v+((r=w.length)<=l?"0."+f("0",l-r)+w:h(w,0,r-l)+"."+h(w,r-l)):v+w}})},79977:function(e,t,n){var a=n(41765),r=n(36686).start;a({target:"String",proto:!0,forced:n(54630)},{padStart:function(e){return r(this,e,arguments.length>1?arguments[1]:void 0)}})},22486:function(e,t,n){n.d(t,{q:function(){return r}});var a={};function r(){return a}},3941:function(e,t,n){n.d(t,{my:function(){return a},w4:function(){return r}});Math.pow(10,8);var a=6048e5,r=864e5},59613:function(e,t,n){function a(e,t){return e instanceof Date?new e.constructor(t):new Date(t)}n.d(t,{w:function(){return a}})},8055:function(e,t,n){n.d(t,{m:function(){return u}});var a=n(3941),r=n(63165),i=n(30429);function o(e){var t=(0,i.a)(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}function u(e,t){var n=(0,r.o)(e),i=(0,r.o)(t),u=+n-o(n),l=+i-o(i);return Math.round((u-l)/a.w4)}},7680:function(e,t,n){n.d(t,{GP:function(){return ue}});n(71499),n(79243),n(97741),n(36016),n(29276),n(43037),n(16891),n(39790),n(7760);var a={lessThanXSeconds:{one:"less than a second",other:"less than {{count}} seconds"},xSeconds:{one:"1 second",other:"{{count}} seconds"},halfAMinute:"half a minute",lessThanXMinutes:{one:"less than a minute",other:"less than {{count}} minutes"},xMinutes:{one:"1 minute",other:"{{count}} minutes"},aboutXHours:{one:"about 1 hour",other:"about {{count}} hours"},xHours:{one:"1 hour",other:"{{count}} hours"},xDays:{one:"1 day",other:"{{count}} days"},aboutXWeeks:{one:"about 1 week",other:"about {{count}} weeks"},xWeeks:{one:"1 week",other:"{{count}} weeks"},aboutXMonths:{one:"about 1 month",other:"about {{count}} months"},xMonths:{one:"1 month",other:"{{count}} months"},aboutXYears:{one:"about 1 year",other:"about {{count}} years"},xYears:{one:"1 year",other:"{{count}} years"},overXYears:{one:"over 1 year",other:"over {{count}} years"},almostXYears:{one:"almost 1 year",other:"almost {{count}} years"}};function r(e){return function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}var i={date:r({formats:{full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},defaultWidth:"full"}),time:r({formats:{full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},defaultWidth:"full"}),dateTime:r({formats:{full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},defaultWidth:"full"})},o={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"};n(29193),n(95737),n(96858);function u(e){return function(t,n){var a;if("formatting"===(null!=n&&n.context?String(n.context):"standalone")&&e.formattingValues){var r=e.defaultFormattingWidth||e.defaultWidth,i=null!=n&&n.width?String(n.width):r;a=e.formattingValues[i]||e.formattingValues[r]}else{var o=e.defaultWidth,u=null!=n&&n.width?String(n.width):e.defaultWidth;a=e.values[u]||e.values[o]}return a[e.argumentCallback?e.argumentCallback(t):t]}}var l={ordinalNumber:function(e,t){var n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},era:u({values:{narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},defaultWidth:"wide"}),quarter:u({values:{narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},defaultWidth:"wide",argumentCallback:function(e){return e-1}}),month:u({values:{narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},defaultWidth:"wide"}),day:u({values:{narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},defaultWidth:"wide"}),dayPeriod:u({values:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},defaultWidth:"wide",formattingValues:{narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},defaultFormattingWidth:"wide"})};n(22871),n(18193),n(98185);function s(e){return function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=n.width,r=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],i=t.match(r);if(!i)return null;var o,u=i[0],l=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],s=Array.isArray(l)?function(e,t){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:{},n=e.match(c.matchPattern);if(!n)return null;var a=n[0],r=e.match(c.parsePattern);if(!r)return null;var i=c.valueCallback?c.valueCallback(r[0]):r[0];return{value:i=t.valueCallback?t.valueCallback(i):i,rest:e.slice(a.length)}}),era:s({matchPatterns:{narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},defaultMatchWidth:"wide",parsePatterns:{any:[/^b/i,/^(a|c)/i]},defaultParseWidth:"any"}),quarter:s({matchPatterns:{narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},defaultMatchWidth:"wide",parsePatterns:{any:[/1/i,/2/i,/3/i,/4/i]},defaultParseWidth:"any",valueCallback:function(e){return e+1}}),month:s({matchPatterns:{narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},defaultParseWidth:"any"}),day:s({matchPatterns:{narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},defaultMatchWidth:"wide",parsePatterns:{narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},defaultParseWidth:"any"}),dayPeriod:s({matchPatterns:{narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},defaultMatchWidth:"any",parsePatterns:{any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},defaultParseWidth:"any"})},f={code:"en-US",formatDistance:function(e,t,n){var r,i=a[e];return r="string"==typeof i?i:1===t?i.one:i.other.replace("{{count}}",t.toString()),null!=n&&n.addSuffix?n.comparison&&n.comparison>0?"in "+r:r+" ago":r},formatLong:i,formatRelative:function(e,t,n,a){return o[e]},localize:l,match:d,options:{weekStartsOn:0,firstWeekContainsDate:1}},h=n(22486),v=(n(47924),n(8055)),m=n(30429),p=n(59613);function y(e){var t=(0,m.a)(e),n=(0,p.w)(e,0);return n.setFullYear(t.getFullYear(),0,1),n.setHours(0,0,0,0),n}function b(e){var t=(0,m.a)(e);return(0,v.m)(t,y(t))+1}var w=n(3941),g=n(24085);function _(e){return(0,g.k)(e,{weekStartsOn:1})}function k(e){var t=(0,m.a)(e),n=t.getFullYear(),a=(0,p.w)(e,0);a.setFullYear(n+1,0,4),a.setHours(0,0,0,0);var r=_(a),i=(0,p.w)(e,0);i.setFullYear(n,0,4),i.setHours(0,0,0,0);var o=_(i);return t.getTime()>=r.getTime()?n+1:t.getTime()>=o.getTime()?n:n-1}function x(e){var t=k(e),n=(0,p.w)(e,0);return n.setFullYear(t,0,4),n.setHours(0,0,0,0),_(n)}function D(e){var t=(0,m.a)(e),n=+_(t)-+x(t);return Math.round(n/w.my)+1}function M(e,t){var n,a,r,i,o,u,l=(0,m.a)(e),s=l.getFullYear(),c=(0,h.q)(),d=null!==(n=null!==(a=null!==(r=null!==(i=null==t?void 0:t.firstWeekContainsDate)&&void 0!==i?i:null==t||null===(o=t.locale)||void 0===o||null===(o=o.options)||void 0===o?void 0:o.firstWeekContainsDate)&&void 0!==r?r:c.firstWeekContainsDate)&&void 0!==a?a:null===(u=c.locale)||void 0===u||null===(u=u.options)||void 0===u?void 0:u.firstWeekContainsDate)&&void 0!==n?n:1,f=(0,p.w)(e,0);f.setFullYear(s+1,0,d),f.setHours(0,0,0,0);var v=(0,g.k)(f,t),y=(0,p.w)(e,0);y.setFullYear(s,0,d),y.setHours(0,0,0,0);var b=(0,g.k)(y,t);return l.getTime()>=v.getTime()?s+1:l.getTime()>=b.getTime()?s:s-1}function S(e,t){var n,a,r,i,o,u,l=(0,h.q)(),s=null!==(n=null!==(a=null!==(r=null!==(i=null==t?void 0:t.firstWeekContainsDate)&&void 0!==i?i:null==t||null===(o=t.locale)||void 0===o||null===(o=o.options)||void 0===o?void 0:o.firstWeekContainsDate)&&void 0!==r?r:l.firstWeekContainsDate)&&void 0!==a?a:null===(u=l.locale)||void 0===u||null===(u=u.options)||void 0===u?void 0:u.firstWeekContainsDate)&&void 0!==n?n:1,c=M(e,t),d=(0,p.w)(e,0);return d.setFullYear(c,0,s),d.setHours(0,0,0,0),(0,g.k)(d,t)}function T(e,t){var n=(0,m.a)(e),a=+(0,g.k)(n,t)-+S(n,t);return Math.round(a/w.my)+1}n(79977);function A(e,t){return(e<0?"-":"")+Math.abs(e).toString().padStart(t,"0")}var C=function(e,t){var n=e.getFullYear(),a=n>0?n:1-n;return A("yy"===t?a%100:a,t.length)},W=function(e,t){var n=e.getMonth();return"M"===t?String(n+1):A(n+1,2)},F=function(e,t){return A(e.getDate(),t.length)},N=function(e,t){return A(e.getHours()%12||12,t.length)},P=function(e,t){return A(e.getHours(),t.length)},Y=function(e,t){return A(e.getMinutes(),t.length)},L=function(e,t){return A(e.getSeconds(),t.length)},E=function(e,t){var n=t.length,a=e.getMilliseconds();return A(Math.trunc(a*Math.pow(10,n-3)),t.length)},U="midnight",q="noon",O="morning",B="afternoon",H="evening",z="night",j={G:function(e,t,n){var a=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(a,{width:"abbreviated"});case"GGGGG":return n.era(a,{width:"narrow"});default:return n.era(a,{width:"wide"})}},y:function(e,t,n){if("yo"===t){var a=e.getFullYear(),r=a>0?a:1-a;return n.ordinalNumber(r,{unit:"year"})}return C(e,t)},Y:function(e,t,n,a){var r=M(e,a),i=r>0?r:1-r;return"YY"===t?A(i%100,2):"Yo"===t?n.ordinalNumber(i,{unit:"year"}):A(i,t.length)},R:function(e,t){return A(k(e),t.length)},u:function(e,t){return A(e.getFullYear(),t.length)},Q:function(e,t,n){var a=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(a);case"QQ":return A(a,2);case"Qo":return n.ordinalNumber(a,{unit:"quarter"});case"QQQ":return n.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(a,{width:"narrow",context:"formatting"});default:return n.quarter(a,{width:"wide",context:"formatting"})}},q:function(e,t,n){var a=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(a);case"qq":return A(a,2);case"qo":return n.ordinalNumber(a,{unit:"quarter"});case"qqq":return n.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(a,{width:"narrow",context:"standalone"});default:return n.quarter(a,{width:"wide",context:"standalone"})}},M:function(e,t,n){var a=e.getMonth();switch(t){case"M":case"MM":return W(e,t);case"Mo":return n.ordinalNumber(a+1,{unit:"month"});case"MMM":return n.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(a,{width:"narrow",context:"formatting"});default:return n.month(a,{width:"wide",context:"formatting"})}},L:function(e,t,n){var a=e.getMonth();switch(t){case"L":return String(a+1);case"LL":return A(a+1,2);case"Lo":return n.ordinalNumber(a+1,{unit:"month"});case"LLL":return n.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(a,{width:"narrow",context:"standalone"});default:return n.month(a,{width:"wide",context:"standalone"})}},w:function(e,t,n,a){var r=T(e,a);return"wo"===t?n.ordinalNumber(r,{unit:"week"}):A(r,t.length)},I:function(e,t,n){var a=D(e);return"Io"===t?n.ordinalNumber(a,{unit:"week"}):A(a,t.length)},d:function(e,t,n){return"do"===t?n.ordinalNumber(e.getDate(),{unit:"date"}):F(e,t)},D:function(e,t,n){var a=b(e);return"Do"===t?n.ordinalNumber(a,{unit:"dayOfYear"}):A(a,t.length)},E:function(e,t,n){var a=e.getDay();switch(t){case"E":case"EE":case"EEE":return n.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},e:function(e,t,n,a){var r=e.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(t){case"e":return String(i);case"ee":return A(i,2);case"eo":return n.ordinalNumber(i,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,a){var r=e.getDay(),i=(r-a.weekStartsOn+8)%7||7;switch(t){case"c":return String(i);case"cc":return A(i,t.length);case"co":return n.ordinalNumber(i,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n){var a=e.getDay(),r=0===a?7:a;switch(t){case"i":return String(r);case"ii":return A(r,t.length);case"io":return n.ordinalNumber(r,{unit:"day"});case"iii":return n.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},a:function(e,t,n){var a=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(e,t,n){var a,r=e.getHours();switch(a=12===r?q:0===r?U:r/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},B:function(e,t,n){var a,r=e.getHours();switch(a=r>=17?H:r>=12?B:r>=4?O:z,t){case"B":case"BB":case"BBB":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},h:function(e,t,n){if("ho"===t){var a=e.getHours()%12;return 0===a&&(a=12),n.ordinalNumber(a,{unit:"hour"})}return N(e,t)},H:function(e,t,n){return"Ho"===t?n.ordinalNumber(e.getHours(),{unit:"hour"}):P(e,t)},K:function(e,t,n){var a=e.getHours()%12;return"Ko"===t?n.ordinalNumber(a,{unit:"hour"}):A(a,t.length)},k:function(e,t,n){var a=e.getHours();return 0===a&&(a=24),"ko"===t?n.ordinalNumber(a,{unit:"hour"}):A(a,t.length)},m:function(e,t,n){return"mo"===t?n.ordinalNumber(e.getMinutes(),{unit:"minute"}):Y(e,t)},s:function(e,t,n){return"so"===t?n.ordinalNumber(e.getSeconds(),{unit:"second"}):L(e,t)},S:function(e,t){return E(e,t)},X:function(e,t,n){var a=e.getTimezoneOffset();if(0===a)return"Z";switch(t){case"X":return Z(a);case"XXXX":case"XX":return G(a);default:return G(a,":")}},x:function(e,t,n){var a=e.getTimezoneOffset();switch(t){case"x":return Z(a);case"xxxx":case"xx":return G(a);default:return G(a,":")}},O:function(e,t,n){var a=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+V(a,":");default:return"GMT"+G(a,":")}},z:function(e,t,n){var a=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+V(a,":");default:return"GMT"+G(a,":")}},t:function(e,t,n){return A(Math.trunc(e.getTime()/1e3),t.length)},T:function(e,t,n){return A(e.getTime(),t.length)}};function V(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e>0?"-":"+",a=Math.abs(e),r=Math.trunc(a/60),i=a%60;return 0===i?n+String(r):n+String(r)+t+A(i,2)}function Z(e,t){return e%60==0?(e>0?"-":"+")+A(Math.abs(e)/60,2):G(e,t)}function G(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=e>0?"-":"+",a=Math.abs(e);return n+A(Math.trunc(a/60),2)+t+A(a%60,2)}var K=function(e,t){switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},X=function(e,t){switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},I={p:X,P:function(e,t){var n,a=e.match(/(P+)(p+)?/)||[],r=a[1],i=a[2];if(!i)return K(e,t);switch(r){case"P":n=t.dateTime({width:"short"});break;case"PP":n=t.dateTime({width:"medium"});break;case"PPP":n=t.dateTime({width:"long"});break;default:n=t.dateTime({width:"full"})}return n.replace("{{date}}",K(r,t)).replace("{{time}}",X(i,t))}},J=(n(81027),n(82386),/^D+$/),Q=/^Y+$/,R=["D","DD","YY","YYYY"];var $=n(91001);function ee(e){return e instanceof Date||"object"===(0,$.A)(e)&&"[object Date]"===Object.prototype.toString.call(e)}function te(e){if(!ee(e)&&"number"!=typeof e)return!1;var t=(0,m.a)(e);return!isNaN(Number(t))}var ne=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,ae=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,re=/^'([^]*?)'?$/,ie=/''/g,oe=/[a-zA-Z]/;function ue(e,t,n){var a,r,i,o,u,l,s,c,d,v,p,y,b,w,g=(0,h.q)(),_=null!==(a=null!==(r=null==n?void 0:n.locale)&&void 0!==r?r:g.locale)&&void 0!==a?a:f,k=null!==(i=null!==(o=null!==(u=null!==(l=null==n?void 0:n.firstWeekContainsDate)&&void 0!==l?l:null==n||null===(s=n.locale)||void 0===s||null===(s=s.options)||void 0===s?void 0:s.firstWeekContainsDate)&&void 0!==u?u:g.firstWeekContainsDate)&&void 0!==o?o:null===(c=g.locale)||void 0===c||null===(c=c.options)||void 0===c?void 0:c.firstWeekContainsDate)&&void 0!==i?i:1,x=null!==(d=null!==(v=null!==(p=null!==(y=null==n?void 0:n.weekStartsOn)&&void 0!==y?y:null==n||null===(b=n.locale)||void 0===b||null===(b=b.options)||void 0===b?void 0:b.weekStartsOn)&&void 0!==p?p:g.weekStartsOn)&&void 0!==v?v:null===(w=g.locale)||void 0===w||null===(w=w.options)||void 0===w?void 0:w.weekStartsOn)&&void 0!==d?d:0,D=(0,m.a)(e);if(!te(D))throw new RangeError("Invalid time value");var M=t.match(ae).map((function(e){var t=e[0];return"p"===t||"P"===t?(0,I[t])(e,_.formatLong):e})).join("").match(ne).map((function(e){if("''"===e)return{isToken:!1,value:"'"};var t=e[0];if("'"===t)return{isToken:!1,value:le(e)};if(j[t])return{isToken:!0,value:e};if(t.match(oe))throw new RangeError("Format string contains an unescaped latin alphabet character `"+t+"`");return{isToken:!1,value:e}}));_.localize.preprocessor&&(M=_.localize.preprocessor(D,M));var S={firstWeekContainsDate:k,weekStartsOn:x,locale:_};return M.map((function(a){if(!a.isToken)return a.value;var r=a.value;return(null!=n&&n.useAdditionalWeekYearTokens||!function(e){return Q.test(e)}(r))&&(null!=n&&n.useAdditionalDayOfYearTokens||!function(e){return J.test(e)}(r))||function(e,t,n){var a=function(e,t,n){var a="Y"===e[0]?"years":"days of the month";return"Use `".concat(e.toLowerCase(),"` instead of `").concat(e,"` (in `").concat(t,"`) for formatting ").concat(a," to the input `").concat(n,"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md")}(e,t,n);if(console.warn(a),R.includes(e))throw new RangeError(a)}(r,t,String(e)),(0,j[r[0]])(D,r,_.localize,S)})).join("")}function le(e){var t=e.match(re);return t?t[1].replace(ie,"'"):e}},63165:function(e,t,n){n.d(t,{o:function(){return r}});var a=n(30429);function r(e){var t=(0,a.a)(e);return t.setHours(0,0,0,0),t}},24085:function(e,t,n){n.d(t,{k:function(){return i}});var a=n(30429),r=n(22486);function i(e,t){var n,i,o,u,l,s,c=(0,r.q)(),d=null!==(n=null!==(i=null!==(o=null!==(u=null==t?void 0:t.weekStartsOn)&&void 0!==u?u:null==t||null===(l=t.locale)||void 0===l||null===(l=l.options)||void 0===l?void 0:l.weekStartsOn)&&void 0!==o?o:c.weekStartsOn)&&void 0!==i?i:null===(s=c.locale)||void 0===s||null===(s=s.options)||void 0===s?void 0:s.weekStartsOn)&&void 0!==n?n:0,f=(0,a.a)(e),h=f.getDay(),v=(hh)&&(i[s]=h,d.push(s,h),o[s]=u));if(void 0!==e&&void 0===i[e]){var l=["Could not find a path from ",r," to ",e,"."].join("");throw new Error(l)}return o},extract_shortest_path_from_predecessor_list:function(t,r){for(var e=[],n=r;n;)e.push(n),t[n],n=t[n];return e.reverse(),e},find_path:function(t,r,e){var o=n.single_source_shortest_paths(t,r,e);return n.extract_shortest_path_from_predecessor_list(o,e)},PriorityQueue:{make:function(t){var r,e=n.PriorityQueue,o={};for(r in t=t||{},e)e.hasOwnProperty(r)&&(o[r]=e[r]);return o.queue=[],o.sorter=t.sorter||e.default_sorter,o},default_sorter:function(t,r){return t.cost-r.cost},push:function(t,r){var e={value:t,cost:r};this.queue.push(e),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};t.exports=n},50240:function(t,r,e){e(71499),e(18193),e(39790),e(66457),e(7760);var n=e(8526),o=e(14038),i=e(36864),a=e(58533);function u(t,r,e,i,a){var u=[].slice.call(arguments,1),s=u.length,f="function"==typeof u[s-1];if(!f&&!n())throw new Error("Callback required as last argument");if(!f){if(s<1)throw new Error("Too few arguments provided");return 1===s?(e=r,r=i=void 0):2!==s||r.getContext||(i=e,e=r,r=void 0),new Promise((function(n,a){try{var u=o.create(e,i);n(t(u,r,i))}catch(s){a(s)}}))}if(s<2)throw new Error("Too few arguments provided");2===s?(a=e,e=r,r=i=void 0):3===s&&(r.getContext&&void 0===a?(a=i,i=void 0):(a=i,i=e,e=r,r=void 0));try{var c=o.create(e,i);a(null,t(c,r,i))}catch(h){a(h)}}r.create=o.create,r.toCanvas=u.bind(null,i.render),r.toDataURL=u.bind(null,i.renderToDataURL),r.toString=u.bind(null,(function(t,r,e){return a.render(t,e)}))},8526:function(t,r,e){e(39790),e(66457),t.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},74180:function(t,r,e){e(89655),e(53165);var n=e(90039).getSymbolSize;r.getRowColCoords=function(t){if(1===t)return[];for(var r=Math.floor(t/7)+2,e=n(t),o=145===e?26:2*Math.ceil((e-13)/(2*r-2)),i=[e-7],a=1;a>>7-t%8&1)},put:function(t,r){for(var e=0;e>>r-e-1&1))},getLengthInBits:function(){return this.length},putBit:function(t){var r=Math.floor(this.length/8);this.buffer.length<=r&&this.buffer.push(0),t&&(this.buffer[r]|=128>>>this.length%8),this.length++}},t.exports=n},67235:function(t,r,e){function n(t){if(!t||t<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=t,this.data=new Uint8Array(t*t),this.reservedBit=new Uint8Array(t*t)}e(71499),e(95737),e(96678),e(57308),e(99770),e(3443),e(42699),e(39790),e(33026),e(809),e(1965),e(47185),e(96141),e(40142),e(5255),e(854),e(95308),e(98333),e(12723),e(89593),e(55422),e(40866),e(24952),e(19363),e(9208),e(46182),e(88917),e(16252),e(44514),e(73432),e(50164),e(70800),e(8691),e(14920),e(2452),e(86115),e(89811),e(97152),n.prototype.set=function(t,r,e,n){var o=t*this.size+r;this.data[o]=e,n&&(this.reservedBit[o]=!0)},n.prototype.get=function(t,r){return this.data[t*this.size+r]},n.prototype.xor=function(t,r,e){this.data[t*this.size+r]^=e},n.prototype.isReserved=function(t,r){return this.reservedBit[t*this.size+r]},t.exports=n},72212:function(t,r,e){e(95737),e(96678),e(57308),e(99770),e(3443),e(42699),e(39790),e(33026),e(809),e(1965),e(47185),e(96141),e(40142),e(5255),e(854),e(95308),e(98333),e(12723),e(89593),e(55422),e(40866),e(24952),e(19363),e(9208),e(46182),e(88917),e(16252),e(44514),e(73432),e(50164),e(70800),e(8691),e(14920),e(2452),e(86115),e(89811),e(97152);var n=e(43300);function o(t){this.mode=n.BYTE,this.data="string"==typeof t?(new TextEncoder).encode(t):new Uint8Array(t)}o.getBitsLength=function(t){return 8*t},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(t){for(var r=0,e=this.data.length;r=0&&t.bit<4},r.from=function(t,e){if(r.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.toLowerCase()){case"l":case"low":return r.L;case"m":case"medium":return r.M;case"q":case"quartile":return r.Q;case"h":case"high":return r.H;default:throw new Error("Unknown EC Level: "+t)}}(t)}catch(n){return e}}},78087:function(t,r,e){var n=e(90039).getSymbolSize;r.getPositions=function(t){var r=n(t);return[[0,0],[r-7,0],[0,r-7]]}},18520:function(t,r,e){var n=e(90039),o=n.getBCHDigit(1335);r.getEncodedBits=function(t,r){for(var e=t.bit<<3|r,i=e<<10;n.getBCHDigit(i)-o>=0;)i^=1335<=33088&&e<=40956)e-=33088;else{if(!(e>=57408&&e<=60351))throw new Error("Invalid SJIS character: "+this.data[r]+"\nMake sure your charset is UTF-8");e-=49472}e=192*(e>>>8&255)+(255&e),t.put(e,13)}},t.exports=i},28583:function(t,r,e){e(71499),e(10507),e(22871),r.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var n=3,o=3,i=40,a=10;function u(t,e,n){switch(t){case r.Patterns.PATTERN000:return(e+n)%2==0;case r.Patterns.PATTERN001:return e%2==0;case r.Patterns.PATTERN010:return n%3==0;case r.Patterns.PATTERN011:return(e+n)%3==0;case r.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(n/3))%2==0;case r.Patterns.PATTERN101:return e*n%2+e*n%3==0;case r.Patterns.PATTERN110:return(e*n%2+e*n%3)%2==0;case r.Patterns.PATTERN111:return(e*n%3+(e+n)%2)%2==0;default:throw new Error("bad maskPattern:"+t)}}r.isValid=function(t){return null!=t&&""!==t&&!isNaN(t)&&t>=0&&t<=7},r.from=function(t){return r.isValid(t)?parseInt(t,10):void 0},r.getPenaltyN1=function(t){for(var r=t.size,e=0,o=0,i=0,a=null,u=null,s=0;s=5&&(e+=n+(o-5)),a=c,o=1),(c=t.get(f,s))===u?i++:(i>=5&&(e+=n+(i-5)),u=c,i=1)}o>=5&&(e+=n+(o-5)),i>=5&&(e+=n+(i-5))}return e},r.getPenaltyN2=function(t){for(var r=t.size,e=0,n=0;n=10&&(1488===n||93===n)&&e++,o=o<<1&2047|t.get(u,a),u>=10&&(1488===o||93===o)&&e++}return e*i},r.getPenaltyN4=function(t){for(var r=0,e=t.data.length,n=0;n=1&&r<10?t.ccBits[0]:r<27?t.ccBits[1]:t.ccBits[2]},r.getBestModeForData=function(t){return o.testNumeric(t)?r.NUMERIC:o.testAlphanumeric(t)?r.ALPHANUMERIC:o.testKanji(t)?r.KANJI:r.BYTE},r.toString=function(t){if(t&&t.id)return t.id;throw new Error("Invalid mode")},r.isValid=function(t){return t&&t.bit&&t.ccBits},r.from=function(t,e){if(r.isValid(t))return t;try{return function(t){if("string"!=typeof t)throw new Error("Param is not a string");switch(t.toLowerCase()){case"numeric":return r.NUMERIC;case"alphanumeric":return r.ALPHANUMERIC;case"kanji":return r.KANJI;case"byte":return r.BYTE;default:throw new Error("Unknown mode: "+t)}}(t)}catch(n){return e}}},81350:function(t,r,e){e(39790),e(22871),e(7760);var n=e(43300);function o(t){this.mode=n.NUMERIC,this.data=t.toString()}o.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)},o.prototype.getLength=function(){return this.data.length},o.prototype.getBitsLength=function(){return o.getBitsLength(this.data.length)},o.prototype.write=function(t){var r,e,n;for(r=0;r+3<=this.data.length;r+=3)e=this.data.substr(r,3),n=parseInt(e,10),t.put(n,10);var o=this.data.length-r;o>0&&(e=this.data.substr(r),n=parseInt(e,10),t.put(n,3*o+1))},t.exports=o},44610:function(t,r,e){e(95737),e(18193),e(96678),e(57308),e(99770),e(3443),e(42699),e(39790),e(33026),e(809),e(1965),e(47185),e(96141),e(40142),e(5255),e(854),e(95308),e(98333),e(12723),e(89593),e(55422),e(40866),e(24952),e(19363),e(9208),e(46182),e(88917),e(16252),e(44514),e(73432),e(50164),e(70800),e(8691),e(14920),e(2452),e(86115),e(89811),e(97152);var n=e(79516);r.mul=function(t,r){for(var e=new Uint8Array(t.length+r.length-1),o=0;o=0;){for(var o=e[0],i=0;i>n&1),n<6?t.set(n,8,o,!0):n<8?t.set(n+1,8,o,!0):t.set(i-15+n,8,o,!0),n<8?t.set(8,i-n-1,o,!0):n<9?t.set(8,15-n-1+1,o,!0):t.set(8,15-n-1,o,!0);t.set(i-8,8,1,!0)}function w(t,r,e){var o=new i;e.forEach((function(r){o.put(r.mode.bit,4),o.put(r.getLength(),l.getCharCountIndicator(r.mode,t)),r.write(o)}));var a=8*(n.getSymbolTotalCodewords(t)-c.getTotalCodewordsCount(t,r));for(o.getLengthInBits()+4<=a&&o.put(0,4);o.getLengthInBits()%8!=0;)o.putBit(0);for(var u=(a-o.getLengthInBits())/8,s=0;s=0&&u<=6&&(0===f||6===f)||f>=0&&f<=6&&(0===u||6===u)||u>=2&&u<=4&&f>=2&&f<=4?t.set(i+u,a+f,!0,!0):t.set(i+u,a+f,!1,!0))}(E,r),function(t){for(var r=t.size,e=8;e=7&&function(t,r){for(var e,n,o,i=t.size,a=g.getEncodedBits(r),u=0;u<18;u++)e=Math.floor(u/3),n=u%3+i-8-3,o=1==(a>>u&1),t.set(e,n,o,!0),t.set(n,e,o,!0)}(E,r),function(t,r){for(var e=t.size,n=-1,o=e-1,i=7,a=0,u=e-1;u>0;u-=2)for(6===u&&u--;;){for(var s=0;s<2;s++)if(!t.isReserved(o,u-s)){var f=!1;a>>i&1)),t.set(o,u-s,f),-1==--i&&(a++,i=7)}if((o+=n)<0||e<=o){o-=n,n=-n;break}}}(E,l),isNaN(o)&&(o=f.getBestMask(E,p.bind(null,E,e))),f.applyMask(o,E),p(E,e,o),{modules:E,version:r,errorCorrectionLevel:e,maskPattern:o,segments:i}}r.create=function(t,r){if(void 0===t||""===t)throw new Error("No input text");var e,i,a=o.M;return void 0!==r&&(a=o.from(r.errorCorrectionLevel,o.M),e=g.from(r.version),i=f.from(r.maskPattern),r.toSJISFunc&&n.setToSJISFunction(r.toSJISFunc)),m(t,e,a,i)}},66015:function(t,r,e){e(71499),e(95737),e(96678),e(57308),e(99770),e(3443),e(42699),e(39790),e(33026),e(809),e(1965),e(47185),e(96141),e(40142),e(5255),e(854),e(95308),e(98333),e(12723),e(89593),e(55422),e(40866),e(24952),e(19363),e(9208),e(46182),e(88917),e(16252),e(44514),e(73432),e(50164),e(70800),e(8691),e(14920),e(2452),e(86115),e(89811),e(97152);var n=e(44610);function o(t){this.genPoly=void 0,this.degree=t,this.degree&&this.initialize(this.degree)}o.prototype.initialize=function(t){this.degree=t,this.genPoly=n.generateECPolynomial(this.degree)},o.prototype.encode=function(t){if(!this.genPoly)throw new Error("Encoder not initialized");var r=new Uint8Array(t.length+this.degree);r.set(t);var e=n.mod(r,this.genPoly),o=this.degree-e.length;if(o>0){var i=new Uint8Array(this.degree);return i.set(e,o),i}return e},t.exports=o},36889:function(t,r,e){e(66385),e(13448),e(36016),e(64646),e(98185),e(7760),e(43037);var n="[0-9]+",o="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+",i="(?:(?![A-Z0-9 $%*+\\-./:]|"+(o=o.replace(/u/g,"\\u"))+")(?:.|[\r\n]))+";r.KANJI=new RegExp(o,"g"),r.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),r.BYTE=new RegExp(i,"g"),r.NUMERIC=new RegExp(n,"g"),r.ALPHANUMERIC=new RegExp("[A-Z $%*+\\-./:]+","g");var a=new RegExp("^"+o+"$"),u=new RegExp("^"+n+"$"),s=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");r.testKanji=function(t){return a.test(t)},r.testNumeric=function(t){return u.test(t)},r.testAlphanumeric=function(t){return s.test(t)}},31634:function(t,r,e){e(71499),e(81027),e(97741),e(89655),e(46469),e(33231),e(39790),e(36016),e(7760),e(253),e(16891),e(37679);var n=e(43300),o=e(81350),i=e(70232),a=e(72212),u=e(96658),s=e(36889),f=e(90039),c=e(2689);function h(t){return unescape(encodeURIComponent(t)).length}function g(t,r,e){for(var n,o=[];null!==(n=t.exec(e));)o.push({data:n[0],index:n.index,mode:r,length:n[0].length});return o}function d(t){var r,e,o=g(s.NUMERIC,n.NUMERIC,t),i=g(s.ALPHANUMERIC,n.ALPHANUMERIC,t);return f.isKanjiModeEnabled()?(r=g(s.BYTE,n.BYTE,t),e=g(s.KANJI,n.KANJI,t)):(r=g(s.BYTE_KANJI,n.BYTE,t),e=[]),o.concat(i,r,e).sort((function(t,r){return t.index-r.index})).map((function(t){return{data:t.data,mode:t.mode,length:t.length}}))}function l(t,r){switch(r){case n.NUMERIC:return o.getBitsLength(t);case n.ALPHANUMERIC:return i.getBitsLength(t);case n.KANJI:return u.getBitsLength(t);case n.BYTE:return a.getBitsLength(t)}}function v(t,r){var e,s=n.getBestModeForData(t);if((e=n.from(r,s))!==n.BYTE&&e.bit=0?t[t.length-1]:null;return e&&e.mode===r.mode?(t[t.length-1].data+=r.data,t):(t.push(r),t)}),[])}(u))},r.rawSplit=function(t){return r.fromArray(d(t,f.isKanjiModeEnabled()))}},90039:function(t,r,e){var n;e(71499);var o=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];r.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return 4*t+17},r.getSymbolTotalCodewords=function(t){return o[t]},r.getBCHDigit=function(t){for(var r=0;0!==t;)r++,t>>>=1;return r},r.setToSJISFunction=function(t){if("function"!=typeof t)throw new Error('"toSJISFunc" is not a valid function.');n=t},r.isKanjiModeEnabled=function(){return void 0!==n},r.toSJIS=function(t){return n(t)}},68011:function(t,r){r.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40}},70050:function(t,r,e){e(71499),e(39790),e(22871),e(253),e(54846),e(66555);var n=e(90039),o=e(18571),i=e(42710),a=e(43300),u=e(68011),s=n.getBCHDigit(7973);function f(t,r){return a.getCharCountIndicator(t,r)+4}function c(t,r){var e=0;return t.forEach((function(t){var n=f(t.mode,r);e+=n+t.getBitsLength()})),e}r.from=function(t,r){return u.isValid(t)?parseInt(t,10):r},r.getCapacity=function(t,r,e){if(!u.isValid(t))throw new Error("Invalid QR Code version");void 0===e&&(e=a.BYTE);var i=8*(n.getSymbolTotalCodewords(t)-o.getTotalCodewordsCount(t,r));if(e===a.MIXED)return i;var s=i-f(e,t);switch(e){case a.NUMERIC:return Math.floor(s/10*3);case a.ALPHANUMERIC:return Math.floor(s/11*2);case a.KANJI:return Math.floor(s/13);case a.BYTE:default:return Math.floor(s/8)}},r.getBestVersionForData=function(t,e){var n,o=i.from(e,i.M);if(Array.isArray(t)){if(t.length>1)return function(t,e){for(var n=1;n<=40;n++)if(c(t,n)<=r.getCapacity(n,e,a.MIXED))return n}(t,o);if(0===t.length)return 1;n=t[0]}else n=t;return function(t,e,n){for(var o=1;o<=40;o++)if(e<=r.getCapacity(o,n,t))return o}(n.mode,n.getLength(),o)},r.getEncodedBits=function(t){if(!u.isValid(t)||t<7)throw new Error("Invalid QR Code version");for(var r=t<<12;n.getBCHDigit(r)-s>=0;)r^=7973<':"",h="0&&f>0&&t[s-1]||(n+=a?i("M",f+e,.5+c+e):i("m",o,0),o=0,a=!1),f+1',g='viewBox="0 0 '+f+" "+f+'"',d='\n";return"function"==typeof e&&e(null,d),d}},24887:function(t,r,e){function n(t){if("number"==typeof t&&(t=t.toString()),"string"!=typeof t)throw new Error("Color should be defined as hex string");var r=t.slice().replace("#","").split("");if(r.length<3||5===r.length||r.length>8)throw new Error("Invalid hex color: "+t);3!==r.length&&4!==r.length||(r=Array.prototype.concat.apply([],r.map((function(t){return[t,t]})))),6===r.length&&r.push("F","F");var e=parseInt(r.join(""),16);return{r:e>>24&255,g:e>>16&255,b:e>>8&255,a:255&e,hex:"#"+r.slice(0,6).join("")}}e(71499),e(81027),e(79243),e(97741),e(89655),e(18193),e(39790),e(22871),e(36016),e(7760),e(43037),e(16891),r.getOptions=function(t){t||(t={}),t.color||(t.color={});var r=void 0===t.margin||null===t.margin||t.margin<0?4:t.margin,e=t.width&&t.width>=21?t.width:void 0,o=t.scale||4;return{width:e,scale:e?4:o,margin:r,color:{dark:n(t.color.dark||"#000000ff"),light:n(t.color.light||"#ffffffff")},type:t.type,rendererOpts:t.rendererOpts||{}}},r.getScale=function(t,r){return r.width&&r.width>=t+2*r.margin?r.width/(t+2*r.margin):r.scale},r.getImageWidth=function(t,e){var n=r.getScale(t,e);return Math.floor((t+2*e.margin)*n)},r.qrToImageData=function(t,e,n){for(var o=e.modules.size,i=e.modules.data,a=r.getScale(o,n),u=Math.floor((o+2*n.margin)*a),s=n.margin*a,f=[n.color.light,n.color.dark],c=0;c=s&&h>=s&&c2?e:n(r),a=new t(i);i>o;)a[o]=r[o++];return a}},32350:function(t,r,e){"use strict";var n=e(32174),o=e(23444),i=e(33616),a=e(36565),u=e(87149),s=Math.min,f=[].lastIndexOf,c=!!f&&1/[1].lastIndexOf(1,-0)<0,h=u("lastIndexOf"),g=c||!h;t.exports=g?function(t){if(c)return n(f,this,arguments)||0;var r=o(this),e=a(r);if(0===e)return-1;var u=e-1;for(arguments.length>1&&(u=s(u,i(arguments[1]))),u<0&&(u=e+u);u>=0;u--)if(u in r&&r[u]===t)return u||0;return-1}:f},90924:function(t,r,e){"use strict";var n=e(33616),o=e(53138),i=e(22669),a=RangeError;t.exports=function(t){var r=o(i(this)),e="",u=n(t);if(u<0||u===1/0)throw new a("Wrong number of repetitions");for(;u>0;(u>>>=1)&&(r+=r))1&u&&(e+=r);return e}},82115:function(t,r,e){"use strict";var n=e(41765),o=e(13113),i=e(33616),a=e(64849),u=e(90924),s=e(26906),f=RangeError,c=String,h=Math.floor,g=o(u),d=o("".slice),l=o(1..toFixed),v=function(t,r,e){return 0===r?e:r%2==1?v(t,r-1,e*t):v(t*t,r/2,e)},p=function(t,r,e){for(var n=-1,o=e;++n<6;)o+=r*t[n],t[n]=o%1e7,o=h(o/1e7)},w=function(t,r){for(var e=6,n=0;--e>=0;)n+=t[e],t[e]=h(n/r),n=n%r*1e7},m=function(t){for(var r=6,e="";--r>=0;)if(""!==e||0===r||0!==t[r]){var n=c(t[r]);e=""===e?n:e+g("0",7-n.length)+n}return e};n({target:"Number",proto:!0,forced:s((function(){return"0.000"!==l(8e-5,3)||"1"!==l(.9,0)||"1.25"!==l(1.255,2)||"1000000000000000128"!==l(0xde0b6b3a7640080,0)}))||!s((function(){l({})}))},{toFixed:function(t){var r,e,n,o,u=a(this),s=i(t),h=[0,0,0,0,0,0],l="",E="0";if(s<0||s>20)throw new f("Incorrect fraction digits");if(u!=u)return"NaN";if(u<=-1e21||u>=1e21)return c(u);if(u<0&&(l="-",u=-u),u>1e-21)if(e=(r=function(t){for(var r=0,e=t;e>=4096;)r+=12,e/=4096;for(;e>=2;)r+=1,e/=2;return r}(u*v(2,69,1))-69)<0?u*v(2,-r,1):u/v(2,r,1),e*=4503599627370496,(r=52-r)>0){for(p(h,0,e),n=s;n>=7;)p(h,1e7,0),n-=7;for(p(h,v(10,n,1),0),n=r-1;n>=23;)w(h,1<<23),n-=23;w(h,1<0?l+((o=E.length)<=s?"0."+g("0",s-o)+E:d(E,0,o-s)+"."+d(E,o-s)):l+E}})},33026:function(t,r,e){"use strict";e(76402)("Uint8",(function(t){return function(r,e,n){return t(this,r,e,n)}}))}}]);
+//# sourceMappingURL=1021.gYL3YrwhKbg.js.map
\ No newline at end of file
diff --git a/custom_components/hacs/hacs_frontend/frontend_es5/1021.gYL3YrwhKbg.js.gz b/custom_components/hacs/hacs_frontend/frontend_es5/1021.gYL3YrwhKbg.js.gz
new file mode 100644
index 00000000..12daed9b
Binary files /dev/null and b/custom_components/hacs/hacs_frontend/frontend_es5/1021.gYL3YrwhKbg.js.gz differ
diff --git a/custom_components/hacs/hacs_frontend/frontend_es5/1021.gYL3YrwhKbg.js.map b/custom_components/hacs/hacs_frontend/frontend_es5/1021.gYL3YrwhKbg.js.map
new file mode 100644
index 00000000..7a37a843
--- /dev/null
+++ b/custom_components/hacs/hacs_frontend/frontend_es5/1021.gYL3YrwhKbg.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"1021.gYL3YrwhKbg.js","mappings":"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","sources":["no-source/node_modules/dijkstrajs/dijkstra.js","no-source/node_modules/qrcode/lib/browser.js","no-source/node_modules/qrcode/lib/can-promise.js","no-source/node_modules/qrcode/lib/core/alignment-pattern.js","no-source/node_modules/qrcode/lib/core/alphanumeric-data.js","no-source/node_modules/qrcode/lib/core/bit-buffer.js","no-source/node_modules/qrcode/lib/core/bit-matrix.js","no-source/node_modules/qrcode/lib/core/byte-data.js","no-source/node_modules/qrcode/lib/core/error-correction-code.js","no-source/node_modules/qrcode/lib/core/error-correction-level.js","no-source/node_modules/qrcode/lib/core/finder-pattern.js","no-source/node_modules/qrcode/lib/core/format-info.js","no-source/node_modules/qrcode/lib/core/galois-field.js","no-source/node_modules/qrcode/lib/core/kanji-data.js","no-source/node_modules/qrcode/lib/core/mask-pattern.js","no-source/node_modules/qrcode/lib/core/mode.js","no-source/node_modules/qrcode/lib/core/numeric-data.js","no-source/node_modules/qrcode/lib/core/polynomial.js","no-source/node_modules/qrcode/lib/core/qrcode.js","no-source/node_modules/qrcode/lib/core/reed-solomon-encoder.js","no-source/node_modules/qrcode/lib/core/regex.js","no-source/node_modules/qrcode/lib/core/segments.js","no-source/node_modules/qrcode/lib/core/utils.js","no-source/node_modules/qrcode/lib/core/version-check.js","no-source/node_modules/qrcode/lib/core/version.js","no-source/node_modules/qrcode/lib/renderer/canvas.js","no-source/node_modules/qrcode/lib/renderer/svg-tag.js","no-source/node_modules/qrcode/lib/renderer/utils.js","no-source/node_modules/core-js/internals/array-from-constructor-and-list.js","no-source/node_modules/core-js/internals/array-last-index-of.js","no-source/node_modules/core-js/internals/string-repeat.js","no-source/node_modules/core-js/modules/es.number.to-fixed.js","no-source/node_modules/core-js/modules/es.typed-array.uint8-array.js"],"names":["require","dijkstra","single_source_shortest_paths","graph","s","d","predecessors","costs","closest","u","v","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","open","PriorityQueue","make","push","empty","pop","value","cost","hasOwnProperty","msg","join","Error","extract_shortest_path_from_predecessor_list","nodes","reverse","find_path","opts","key","T","t","queue","sorter","default_sorter","a","b","item","this","sort","shift","length","module","exports","canPromise","QRCode","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","text","cb","args","slice","call","arguments","argsNum","isLastArgCb","undefined","getContext","Promise","resolve","reject","data","create","e","toCanvas","bind","render","toDataURL","renderToDataURL","toString","_","prototype","then","getSymbolSize","getRowColCoords","version","posCount","Math","floor","size","intervals","ceil","positions","i","getPositions","coords","pos","posLength","j","Mode","ALPHA_NUM_CHARS","AlphanumericData","mode","ALPHANUMERIC","getBitsLength","getLength","write","bitBuffer","indexOf","put","BitBuffer","buffer","get","index","bufIndex","num","putBit","getLengthInBits","bit","BitMatrix","Uint8Array","reservedBit","set","row","col","reserved","xor","isReserved","ByteData","BYTE","TextEncoder","encode","l","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","L","M","Q","H","getTotalCodewordsCount","isValid","level","from","defaultValue","string","toLowerCase","fromString","Utils","G15_BCH","getBCHDigit","getEncodedBits","mask","EXP_TABLE","LOG_TABLE","x","log","n","exp","mul","y","KanjiData","KANJI","toSJIS","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","maskPattern","isNaN","parseInt","getPenaltyN1","points","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","last","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","abs","applyMask","pattern","getBestMask","setupFormatFunc","numPatterns","Object","keys","bestPattern","lowerPenalty","Infinity","p","penalty","VersionCheck","Regex","NUMERIC","id","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","NumericData","group","substr","remainingNum","GF","p1","p2","coeff","mod","divident","divisor","result","offset","generateECPolynomial","degree","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","setupFormatInfo","matrix","bits","createData","segments","forEach","dataTotalCodewordsBits","getSymbolTotalCodewords","remainingByte","totalCodewords","ecTotalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","rs","dcData","Array","ecData","maxDataSize","dataSize","max","r","createCodewords","createSymbol","isArray","fromArray","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","modules","c","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","dark","setupData","options","toSJISFunc","setToSJISFunction","Polynomial","genPoly","initialize","paddedData","remainder","start","buff","numeric","kanji","byte","replace","RegExp","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","str","test","getStringByteLength","unescape","encodeURIComponent","getSegments","regex","exec","getSegmentsFromString","byteSegs","kanjiSegs","numSegs","alphaNumSegs","isKanjiModeEnabled","concat","s1","s2","map","obj","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","array","reduce","acc","seg","segs","buildNodes","table","prevNodeIds","nodeGroup","currentNodeIds","node","lastCount","prevNodeId","end","buildGraph","path","optimizedSegs","curr","prevSeg","mergeSegments","toSJISFunction","CODEWORDS_COUNT","digit","f","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getCapacity","usableBits","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","qrData","canvasEl","document","createElement","getCanvasElement","getOptions","getImageWidth","ctx","image","createImageData","qrToImageData","clearRect","width","height","style","clearCanvas","putImageData","type","rendererOpts","quality","getColorAttrib","color","attrib","alpha","hex","toFixed","svgCmd","cmd","qrcodesize","margin","bg","light","moveBy","newRow","lineLength","qrToPath","viewBox","svgTag","hex2rgba","hexCode","split","apply","hexValue","g","scale","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","lengthOfArrayLike","Constructor","list","$length","toIndexedObject","toIntegerOrInfinity","arrayMethodIsStrict","min","$lastIndexOf","lastIndexOf","NEGATIVE_ZERO","STRICT_METHOD","FORCED","searchElement","O","requireObjectCoercible","$RangeError","RangeError","count","$","uncurryThis","thisNumberValue","$repeat","fails","$String","String","repeat","stringSlice","nativeToFixed","pow","multiply","c2","divide","dataToString","target","proto","forced","fractionDigits","z","k","number","fractDigits","sign","x2","createTypedArrayConstructor","init","byteOffset"],"sourceRoot":""}
\ No newline at end of file
diff --git a/custom_components/hacs/hacs_frontend/frontend_es5/1027.sBHiReAn-AY.js b/custom_components/hacs/hacs_frontend/frontend_es5/1027.sBHiReAn-AY.js
new file mode 100644
index 00000000..65b8d511
--- /dev/null
+++ b/custom_components/hacs/hacs_frontend/frontend_es5/1027.sBHiReAn-AY.js
@@ -0,0 +1,2 @@
+"use strict";(self.webpackChunkhacs_frontend=self.webpackChunkhacs_frontend||[]).push([[1027],{33444:function(e,t,i){var r=i(22858).A,n=i(33994).A;i.a(e,function(){var e=r(n().mark((function e(t,r){var a,s,d,o,l,c,u,h,v,f,p,k,y,m,b,A,_,g,x,M,w,Z,F,S,D,q,C;return n().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,a=i(41981),s=i(33994),d=i(22858),o=i(64599),l=i(35806),c=i(71008),u=i(62193),h=i(2816),v=i(27927),f=i(81027),i.n(f),p=i(13025),i.n(p),k=i(82386),i.n(k),y=i(97741),i.n(y),m=i(39790),i.n(m),b=i(36604),i.n(b),A=i(253),i.n(A),_=i(2075),i.n(_),g=i(16891),i.n(g),x=i(66360),M=i(29818),w=i(50880),Z=i(31627),F=i(4569),!(S=t([F])).then){e.next=41;break}return e.next=37,S;case 37:e.t1=e.sent,e.t0=(0,e.t1)(),e.next=42;break;case 41:e.t0=S;case 42:F=e.t0[0],(0,v.A)([(0,M.EM)("ha-areas-picker")],(function(e,t){var i,r=function(t){function i(){var t;(0,c.A)(this,i);for(var r=arguments.length,n=new Array(r),a=0;a '])),t.map((function(t){return(0,x.qy)(q||(q=(0,o.A)(['
'])),t,e.noAdd,e.hass,t,e.pickedAreaLabel,e.includeDomains,e.excludeDomains,e.includeDeviceClasses,e.deviceFilter,e.entityFilter,e.disabled,e._areaChanged)})),this.noAdd,this.hass,this.pickAreaLabel,this.helper,this.includeDomains,this.excludeDomains,this.includeDeviceClasses,this.deviceFilter,this.entityFilter,this.disabled,this.placeholder,this.required&&!t.length,this._addArea,t)}},{kind:"get",key:"_currentAreas",value:function(){return this.value||[]}},{kind:"method",key:"_updateAreas",value:(i=(0,d.A)((0,s.A)().mark((function e(t){return(0,s.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:this.value=t,(0,w.r)(this,"value-changed",{value:t});case 2:case"end":return e.stop()}}),e,this)}))),function(e){return i.apply(this,arguments)})},{kind:"method",key:"_areaChanged",value:function(e){e.stopPropagation();var t=e.currentTarget.curValue,i=e.detail.value;if(i!==t){var r=this._currentAreas;i&&!r.includes(i)?this._updateAreas(r.map((function(e){return e===t?i:e}))):this._updateAreas(r.filter((function(e){return e!==t})))}}},{kind:"method",key:"_addArea",value:function(e){e.stopPropagation();var t=e.detail.value;if(t){e.currentTarget.value="";var i=this._currentAreas;i.includes(t)||this._updateAreas([].concat((0,a.A)(i),[t]))}}},{kind:"field",static:!0,key:"styles",value:function(){return(0,x.AH)(C||(C=(0,o.A)(["div{margin-top:8px}"])))}}]}}),(0,Z.E)(x.WF)),r(),e.next=50;break;case 47:e.prev=47,e.t2=e.catch(0),r(e.t2);case 50:case"end":return e.stop()}}),e,null,[[0,47]])})));return function(t,i){return e.apply(this,arguments)}}())},27783:function(e,t,i){var r,n,a,s=i(64599),d=i(35806),o=i(71008),l=i(62193),c=i(2816),u=i(27927),h=i(35890),v=(i(81027),i(30116)),f=i(43389),p=i(66360),k=i(29818);(0,u.A)([(0,k.EM)("ha-list-item")],(function(e,t){var i=function(t){function i(){var t;(0,o.A)(this,i);for(var r=arguments.length,n=new Array(r),a=0;a '])),this.hass,this.value,this.helper,this.label,null!==(t=this.selector.area)&&void 0!==t&&t.device?this._filterDevices:void 0,null!==(i=this.selector.area)&&void 0!==i&&i.entity?this._filterEntities:void 0,this.disabled,this.required):(0,y.qy)(q||(q=(0,s.A)([' '])),this.hass,this.value,this.label,this.helper,null!==(r=this.selector.area)&&void 0!==r&&r.device?this._filterDevices:void 0,null!==(n=this.selector.area)&&void 0!==n&&n.entity?this._filterEntities:void 0,this.disabled,this.required)}},{kind:"field",key:"_filterEntities",value:function(){var e=this;return function(t){var i;return null===(i=e.selector.area)||void 0===i||!i.entity||(0,A.e)(e.selector.area.entity).some((function(i){return(0,w.Ru)(i,t,e._entitySources)}))}}},{kind:"field",key:"_filterDevices",value:function(){var e=this;return function(t){var i;if(null===(i=e.selector.area)||void 0===i||!i.device)return!0;var r=e._entitySources?e._deviceIntegrationLookup(e._entitySources,Object.values(e.hass.entities),Object.values(e.hass.devices),e._configEntries):void 0;return(0,A.e)(e.selector.area.device).some((function(e){return(0,w.vX)(e,t,r)}))}}}]}}),y.WF),a(),e.next=49;break;case 46:e.prev=46,e.t2=e.catch(0),a(e.t2);case 49:case"end":return e.stop()}}),e,null,[[0,46]])})));return function(t,i){return e.apply(this,arguments)}}())},43527:function(e,t,i){i.d(t,{c:function(){return d}});i(10507);var r=i(33994),n=i(22858),a=(i(81027),i(39790),i(66457),function(){var e=(0,n.A)((0,r.A)().mark((function e(t,i,n,s,d){var o,l,c,u,h,v,f,p=arguments;return(0,r.A)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(o=p.length,l=new Array(o>5?o-5:0),c=5;c1&&(d=o(d,a(arguments[1]))),d<0&&(d=i+d);d>=0;d--)if(d in t&&t[d]===e)return d||0;return-1}:l},15814:function(e,t,i){var r=i(41765),n=i(32350);r({target:"Array",proto:!0,forced:n!==[].lastIndexOf},{lastIndexOf:n})}}]);
+//# sourceMappingURL=1027.sBHiReAn-AY.js.map
\ No newline at end of file
diff --git a/custom_components/hacs/hacs_frontend/frontend_es5/1027.sBHiReAn-AY.js.gz b/custom_components/hacs/hacs_frontend/frontend_es5/1027.sBHiReAn-AY.js.gz
new file mode 100644
index 00000000..5871c803
Binary files /dev/null and b/custom_components/hacs/hacs_frontend/frontend_es5/1027.sBHiReAn-AY.js.gz differ
diff --git a/custom_components/hacs/hacs_frontend/frontend_es5/1027.sBHiReAn-AY.js.map b/custom_components/hacs/hacs_frontend/frontend_es5/1027.sBHiReAn-AY.js.map
new file mode 100644
index 00000000..7a9da295
--- /dev/null
+++ b/custom_components/hacs/hacs_frontend/frontend_es5/1027.sBHiReAn-AY.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"1027.sBHiReAn-AY.js","mappings":"+wBAU0B,EAAAA,EAAAC,GAAA,EADzB,EAAAC,EAAAC,IAAc,qBAAkB,SAAAC,EAAAC,GAAA,IAyG9BC,EAxGUC,EAAa,SAAAC,GAAA,SAAAD,IAAA,IAAAE,GAAA,EAAAC,EAAAT,GAAA,KAAAM,GAAA,QAAAI,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAAA,OAAAP,GAAA,EAAAQ,EAAAhB,GAAA,KAAAM,EAAA,GAAAW,OAAAJ,IAAAV,EAAAK,GAAAA,CAAA,UAAAU,EAAAlB,GAAAM,EAAAC,IAAA,EAAAY,EAAAnB,GAAAM,EAAA,EAAAF,GAAA,OAAAgB,EAAbd,EAAae,EAAA,EAAAC,KAAA,QAAAC,WAAA,EACvB,EAAAtB,EAAAuB,IAAS,CAAEC,WAAW,KAAQC,IAAA,OAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAE9B,EAAAtB,EAAAuB,OAAUE,IAAA,QAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAEV,EAAAtB,EAAAuB,IAAS,CAAEI,KAAMd,SAAQY,IAAA,QAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAEzB,EAAAtB,EAAAuB,OAAUE,IAAA,SAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAEV,EAAAtB,EAAAuB,OAAUE,IAAA,cAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAEV,EAAAtB,EAAAuB,IAAS,CAAEI,KAAMC,QAASJ,UAAW,YAAWC,IAAA,QAAAC,MAAA,kBAClC,CAAK,IAAAL,KAAA,QAAAC,WAAA,EAOnB,EAAAtB,EAAAuB,IAAS,CAAEI,KAAMd,MAAOW,UAAW,qBAAoBC,IAAA,iBAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAQvD,EAAAtB,EAAAuB,IAAS,CAAEI,KAAMd,MAAOW,UAAW,qBAAoBC,IAAA,iBAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAQvD,EAAAtB,EAAAuB,IAAS,CAAEI,KAAMd,MAAOW,UAAW,4BAA2BC,IAAA,uBAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAG9D,EAAAtB,EAAAuB,IAAS,CAAEC,WAAW,KAAQC,IAAA,eAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAG9B,EAAAtB,EAAAuB,IAAS,CAAEC,WAAW,KAAQC,IAAA,eAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAG9B,EAAAtB,EAAAuB,IAAS,CAAEC,UAAW,uBAAsBC,IAAA,kBAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAG5C,EAAAtB,EAAAuB,IAAS,CAAEC,UAAW,qBAAoBC,IAAA,gBAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAG1C,EAAAtB,EAAAuB,IAAS,CAAEI,KAAMC,WAAUH,IAAA,WAAAC,MAAA,kBAAmB,CAAK,IAAAL,KAAA,QAAAC,WAAA,EAEnD,EAAAtB,EAAAuB,IAAS,CAAEI,KAAMC,WAAUH,IAAA,WAAAC,MAAA,kBAAmB,CAAK,IAAAL,KAAA,SAAAI,IAAA,SAAAC,MAEpD,WAAmB,IAAAG,EAAA,KACjB,IAAKC,KAAKC,KACR,OAAOC,EAAAC,GAGT,IAAMC,EAAeJ,KAAKK,cAC1B,OAAO,EAAAH,EAAAI,IAAIC,IAAAA,GAAA,EAAAC,EAAAvC,GAAA,2TACPmC,EAAaK,KACb,SAACC,GAAI,OAAK,EAAAR,EAAAI,IAAIK,IAAAA,GAAA,EAAAH,EAAAvC,GAAA,+QAGIyC,EACHX,EAAKa,MACNb,EAAKE,KACJS,EACAX,EAAKc,gBACId,EAAKe,eACLf,EAAKgB,eACChB,EAAKiB,qBACbjB,EAAKkB,aACLlB,EAAKmB,aACTnB,EAAKoB,SACApB,EAAKqB,aAAY,IAO7BpB,KAAKY,MACNZ,KAAKC,KACJD,KAAKqB,cACJrB,KAAKsB,OACGtB,KAAKc,eACLd,KAAKe,eACCf,KAAKgB,qBACbhB,KAAKiB,aACLjB,KAAKkB,aACTlB,KAAKmB,SACFnB,KAAKuB,YACRvB,KAAKwB,WAAapB,EAAavB,OAC1BmB,KAAKyB,SACNrB,EAIxB,GAAC,CAAAb,KAAA,MAAAI,IAAA,gBAAAC,MAED,WACE,OAAOI,KAAKJ,OAAS,EACvB,GAAC,CAAAL,KAAA,SAAAI,IAAA,eAAAC,OAAAtB,GAAA,EAAAoD,EAAAzD,IAAA,EAAA0D,EAAA1D,KAAA2D,MAED,SAAAC,EAA2BC,GAAK,SAAAH,EAAA1D,KAAA8D,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAC9BlC,KAAKJ,MAAQkC,GAEb,EAAAK,EAAAC,GAAUpC,KAAM,gBAAiB,CAC/BJ,MAAOkC,IACN,wBAAAE,EAAAK,OAAA,GAAAR,EAAA,UACJ,SANyBS,GAAA,OAAAhE,EAAAiE,MAAC,KAAD3D,UAAA,KAAAW,KAAA,SAAAI,IAAA,eAAAC,MAQ1B,SAAqB4C,GACnBA,EAAGC,kBACH,IAAMC,EAAYF,EAAGG,cAAsBD,SACrCE,EAAWJ,EAAGK,OAAOjD,MAC3B,GAAIgD,IAAaF,EAAjB,CAGA,IAAMtC,EAAeJ,KAAKK,cACrBuC,IAAYxC,EAAa0C,SAASF,GAIvC5C,KAAK+C,aACH3C,EAAaK,KAAI,SAACuC,GAAG,OAAMA,IAAQN,EAAWE,EAAWI,CAAG,KAJ5DhD,KAAK+C,aAAa3C,EAAa6C,QAAO,SAACD,GAAG,OAAKA,IAAQN,CAAQ,IAHjE,CASF,GAAC,CAAAnD,KAAA,SAAAI,IAAA,WAAAC,MAED,SAAiB4C,GACfA,EAAGC,kBAEH,IAAMS,EAAQV,EAAGK,OAAOjD,MACxB,GAAKsD,EAAL,CAGCV,EAAGG,cAAsB/C,MAAQ,GAClC,IAAMQ,EAAeJ,KAAKK,cACtBD,EAAa0C,SAASI,IAI1BlD,KAAK+C,aAAa,GAAD7D,QAAC,EAADiE,EAAAlF,GAAKmC,GAAY,CAAE8C,IAPpC,CAQF,GAAC,CAAA3D,KAAA,QAAA6D,QAAA,EAAAzD,IAAA,SAAAC,MAAA,kBAEwB,EAAAM,EAAAmD,IAAGC,IAAAA,GAAA,EAAA9C,EAAAvC,GAAA,kCAnJK,EAAAsF,EAAAC,GAAetD,EAAAuD,K,sVCJ3BC,EAAAA,EAAAA,GAAA,EADtBC,EAAAA,EAAAA,IAAc,kBAAe,SAAAvF,EAAAwF,GAAA,IACjBC,EAAU,SAAAC,GAAA,SAAAD,IAAA,IAAApF,GAAAsF,EAAAA,EAAAA,GAAA,KAAAF,GAAA,QAAAlF,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAAA,OAAAP,GAAAuF,EAAAA,EAAAA,GAAA,KAAAH,EAAA,GAAA3E,OAAAJ,IAAAV,EAAAK,GAAAA,CAAA,QAAAwF,EAAAA,EAAAA,GAAAJ,EAAAC,IAAAI,EAAAA,EAAAA,GAAAL,EAAA,EAAAD,GAAA,OAAAvE,EAAVwE,EAAUvE,EAAA,EAAAC,KAAA,SAAAI,IAAA,eAAAC,MACrB,WACE,OAAII,KAAKmE,eACA,IAETC,EAAAA,EAAAA,GALSP,EAAU,sBAKnBO,CALmB,GAMrB,GAAC,CAAA7E,KAAA,MAAA6D,QAAA,EAAAzD,IAAA,SAAAC,MAED,WACE,MAAO,CACLyE,EAAAA,GACAC,EAAAA,EAAAA,IAAG/D,IAAAA,GAAAgE,EAAAA,EAAAA,GAAA,4mDAgFc,QAAjBC,SAASC,KACLH,EAAAA,EAAAA,IAAG3D,IAAAA,GAAA4D,EAAAA,EAAAA,GAAA,oHAOHD,EAAAA,EAAAA,IAAGhB,IAAAA,GAAAiB,EAAAA,EAAAA,GAAA,QAEX,IAAC,GArG6BG,EAAAA,E,ysBCiBnBC,GAAc,EAAAC,EAAA3G,GAAA,EAD1B,EAAA4G,EAAA1G,IAAc,sBAAmB,SAAAC,EAAA0G,GAAA,IACrBH,EAAc,SAAAI,GAAA,SAAAJ,IAAA,IAAAlG,GAAA,EAAAuG,EAAA/G,GAAA,KAAA0G,GAAA,QAAAhG,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAAA,OAAAP,GAAA,EAAAwG,EAAAhH,GAAA,KAAA0G,EAAA,GAAAzF,OAAAJ,IAAAV,EAAAK,GAAAA,CAAA,UAAAyG,EAAAjH,GAAA0G,EAAAI,IAAA,EAAAI,EAAAlH,GAAA0G,EAAA,EAAAG,GAAA,OAAAzF,EAAdsF,EAAcrF,EAAA,EAAAC,KAAA,QAAAC,WAAA,EACxB,EAAAqF,EAAApF,IAAS,CAAEC,WAAW,KAAQC,IAAA,OAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAE9B,EAAAqF,EAAApF,IAAS,CAAEC,WAAW,KAAQC,IAAA,WAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAE9B,EAAAqF,EAAApF,OAAUE,IAAA,QAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAEV,EAAAqF,EAAApF,OAAUE,IAAA,QAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAEV,EAAAqF,EAAApF,OAAUE,IAAA,SAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAEV,EAAAqF,EAAApF,IAAS,CAAEI,KAAMC,WAAUH,IAAA,WAAAC,MAAA,kBAAmB,CAAK,IAAAL,KAAA,QAAAC,WAAA,EAEnD,EAAAqF,EAAApF,IAAS,CAAEI,KAAMC,WAAUH,IAAA,WAAAC,MAAA,kBAAmB,CAAI,IAAAL,KAAA,QAAAC,WAAA,EAElD,EAAAqF,EAAAO,OAAOzF,IAAA,iBAAAC,WAAA,IAAAL,KAAA,QAAAC,WAAA,EAEP,EAAAqF,EAAAO,OAAOzF,IAAA,iBAAAC,WAAA,IAAAL,KAAA,QAAAI,IAAA,2BAAAC,MAAA,kBAE2B,EAAAyF,EAAApH,GAAWqH,EAAAC,GAA2B,IAAAhG,KAAA,SAAAI,IAAA,kBAAAC,MAEzE,SAAwB4F,GAAwB,IAAAC,EAAAC,EAC9C,OACgB,QAAbD,EAAAD,EAAS9E,YAAI,IAAA+E,OAAA,EAAbA,EAAeE,UACd,EAAAC,EAAAC,GAAYL,EAAS9E,KAAKiF,QAAQG,MAChC,SAAC7C,GAAM,OAAKA,EAAO8C,WAAW,MAEpB,QAAbL,EAAAF,EAAS9E,YAAI,IAAAgF,OAAA,EAAbA,EAAeM,UACd,EAAAJ,EAAAC,GAAYL,EAAS9E,KAAKsF,QAAQF,MAAK,SAACE,GAAM,OAAKA,EAAOD,WAAW,GAE3E,GAAC,CAAAxG,KAAA,SAAAI,IAAA,aAAAC,MAED,SAAqBqG,GACgD,IAAAC,EAAAC,EAA/DF,EAAkBG,IAAI,kBAA8BC,IAAfrG,KAAKJ,QACtB,QAAlBsG,EAAAlG,KAAKwF,SAAS9E,YAAI,IAAAwF,GAAlBA,EAAoBI,WAAavH,MAAMwH,QAAQvG,KAAKJ,QACtDI,KAAKJ,MAAQ,CAACI,KAAKJ,QACnB,EAAA4G,EAAApE,GAAUpC,KAAM,gBAAiB,CAAEJ,MAAOI,KAAKJ,SACnB,QAAnBuG,EAACnG,KAAKwF,SAAS9E,YAAI,IAAAyF,GAAlBA,EAAoBG,WAAYvH,MAAMwH,QAAQvG,KAAKJ,SAC7DI,KAAKJ,MAAQI,KAAKJ,MAAM,IACxB,EAAA4G,EAAApE,GAAUpC,KAAM,gBAAiB,CAAEJ,MAAOI,KAAKJ,SAGrD,GAAC,CAAAL,KAAA,SAAAI,IAAA,UAAAC,MAED,SAAkBqG,GAAyC,IAAAlG,EAAA,KAEvDkG,EAAkBG,IAAI,aACtBpG,KAAKyG,gBAAgBzG,KAAKwF,YACzBxF,KAAK0G,iBAEN,EAAAC,EAAAC,GAA4B5G,KAAKC,MAAM4G,MAAK,SAACC,GAC3C/G,EAAK2G,eAAiBI,CACxB,KAEG9G,KAAK+G,gBAAkB/G,KAAKyG,gBAAgBzG,KAAKwF,YACpDxF,KAAK+G,eAAiB,IACtB,EAAAC,EAAAC,IAAiBjH,KAAKC,MAAM4G,MAAK,SAACK,GAChCnH,EAAKgH,eAAiBG,CACxB,IAEJ,GAAC,CAAA3H,KAAA,SAAAI,IAAA,SAAAC,MAED,WAAmB,IAAAuH,EAAAC,EAAAC,EAKkBC,EAAAC,EAJnC,OAAIvH,KAAKyG,gBAAgBzG,KAAKwF,YAAcxF,KAAK0G,eACxCc,EAAArH,GAGc,QAAnBgH,EAACnH,KAAKwF,SAAS9E,YAAI,IAAAyG,GAAlBA,EAAoBb,UAoBlB,EAAAkB,EAAAlH,IAAIK,IAAAA,GAAA,EAAA8G,EAAAxJ,GAAA,uLAEC+B,KAAKC,KACJD,KAAKJ,MACJI,KAAKsB,OACEtB,KAAK0H,MAEY,QAAlBN,EAAApH,KAAKwF,SAAS9E,YAAI,IAAA0G,GAAlBA,EAAoBpB,OAChChG,KAAK2H,oBACLtB,EAC8B,QAAlBgB,EAAArH,KAAKwF,SAAS9E,YAAI,IAAA2G,GAAlBA,EAAoB1B,OAChC3F,KAAK4H,qBACLvB,EACQrG,KAAKmB,SACLnB,KAAKwB,WAjCZ,EAAAgG,EAAAlH,IAAIC,IAAAA,GAAA,EAAAkH,EAAAxJ,GAAA,6KAEC+B,KAAKC,KACJD,KAAKJ,MACLI,KAAK0H,MACJ1H,KAAKsB,OAEmB,QAAlBgG,EAAAtH,KAAKwF,SAAS9E,YAAI,IAAA4G,GAAlBA,EAAoBtB,OAChChG,KAAK2H,oBACLtB,EAC8B,QAAlBkB,EAAAvH,KAAKwF,SAAS9E,YAAI,IAAA6G,GAAlBA,EAAoB5B,OAChC3F,KAAK4H,qBACLvB,EACQrG,KAAKmB,SACLnB,KAAKwB,SAsBzB,GAAC,CAAAjC,KAAA,QAAAI,IAAA,kBAAAC,MAAA,eAAAiI,EAAA,YAEyB,SAAClC,GAAgC,IAAAmC,EACzD,OAAuB,QAAnBA,EAACD,EAAKrC,SAAS9E,YAAI,IAAAoH,IAAlBA,EAAoBnC,SAIlB,EAAAC,EAAAC,GAAYgC,EAAKrC,SAAS9E,KAAKiF,QAAQG,MAAK,SAAC7C,GAAM,OACxD,EAAA8E,EAAAC,IAAuB/E,EAAQ0C,EAAQkC,EAAKnB,eAAe,GAE/D,CAAC,IAAAnH,KAAA,QAAAI,IAAA,iBAAAC,MAAA,eAAAqI,EAAA,YAEwB,SAACjC,GAAyC,IAAAkC,EACjE,GAAuB,QAAnBA,EAACD,EAAKzC,SAAS9E,YAAI,IAAAwH,IAAlBA,EAAoBlC,OACvB,OAAO,EAGT,IAAMmC,EAAqBF,EAAKvB,eAC5BuB,EAAKG,yBACHH,EAAKvB,eACL2B,OAAOC,OAAOL,EAAKhI,KAAKsI,UACxBF,OAAOC,OAAOL,EAAKhI,KAAKuI,SACxBP,EAAKlB,qBAEPV,EAEJ,OAAO,EAAAT,EAAAC,GAAYoC,EAAKzC,SAAS9E,KAAKsF,QAAQF,MAAK,SAAC7C,GAAM,OACxD,EAAA8E,EAAAU,IAAsBxF,EAAQ+C,EAAQmC,EAAmB,GAE7D,CAAC,OArIiCX,EAAA/D,I,2QCLvBiF,G,2BAAoB,eAAAC,GAAAC,EAAAA,EAAAA,IAAAC,EAAAA,EAAAA,KAAAjH,MAAG,SAAAC,EAClCiH,EACAC,EACAC,EACAC,EAGAhJ,GAAmB,IAAAtB,EAAAG,EAAAE,EAAAkK,EAAAC,EAAAC,EAAAC,EAAAC,EAAA1K,UAAA,OAAAiK,EAAAA,EAAAA,KAAA9G,MAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,WAAAvD,EAAA2K,EAAAzK,OAChBC,EAAI,IAAAC,MAAAJ,EAAA,EAAAA,EAAA,KAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,EAAA,GAAAsK,EAAAtK,GAyBP,GAtBMmK,GADAD,EAAUjJ,GAEN6I,GAEJM,EAAoB,SAACG,GACzB,OACGN,GACDA,EAAiBhJ,EAAMsJ,EAAOA,UAAYA,EAAOT,UAKnDI,EAAQJ,QAAYzC,EACbqC,EAAoBnG,WAAC,EAAD,CACzBuG,EACAC,EACAC,EACAC,EACAhJ,GAAIf,OACDJ,KAVIyK,EAAOA,MAYlB,GAGIJ,EAAY,CAAFnH,EAAAE,KAAA,eAAAF,EAAAwH,OAAA,SACLL,aAAsBM,QACzBN,EAAWtC,KAAKuC,GAChBA,EAAkBD,IAAW,OAqBjC,OAlBIE,EAAgBL,EAAIzG,WAAC,EAAD,CAACtC,GAAIf,OAAKJ,IACpCoK,EAAQJ,GAAYO,EAEpBA,EAAcxC,MAEZ,SAAC0C,GACCL,EAAQJ,GAAY,CAClBS,OAAAA,EACAT,SAAUG,aAAgB,EAAhBA,EAAmBhJ,EAAMsJ,IAErCG,YAAW,WACTR,EAAQJ,QAAYzC,CACtB,GAAG0C,EACL,IAEA,WACEG,EAAQJ,QAAYzC,CACtB,IACArE,EAAAwH,OAAA,SAEKH,GAAa,yBAAArH,EAAAK,OAAA,GAAAR,EAAA,KACrB,gBA7DgCS,EAAAqH,EAAAC,EAAAC,EAAAC,GAAA,OAAAnB,EAAApG,MAAA,KAAA3D,UAAA,MCT3BmL,EAAqB,SAAC9J,GAAmB,OAC7CA,EAAK+J,OAAO,CAAEnK,KAAM,iBAAkB,EAE3BoK,EAA8B,SACzChK,GAAmB,OAEnByI,EACE,iBAEA,IACAqB,GAGA,SAACG,GAAK,OAAK7B,OAAO8B,KAAKD,EAAME,QAAQvL,MAAM,GAC3CoB,EACD,C,mOCfUoK,EAAiB,SAC5BC,GACG,IACGC,GAAc7G,EAAAA,EAAAA,GAAA,eAAAtF,EAAAoM,GAAA,IAAdD,EAAc,SAAAE,GAAA,SAAAF,IAAA,IAAA9L,GAAAsF,EAAAA,EAAAA,GAAA,KAAAwG,GAAA,QAAA5L,EAAAC,UAAAC,OAAAC,EAAA,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAAF,EAAAE,GAAAJ,UAAAI,GAAA,OAAAP,GAAAuF,EAAAA,EAAAA,GAAA,KAAAuG,EAAA,GAAArL,OAAAJ,IAAAV,EAAAK,GAAAA,CAAA,QAAAwF,EAAAA,EAAAA,GAAAsG,EAAAE,IAAAvG,EAAAA,EAAAA,GAAAqG,EAAA,EAAAC,GAAA,OAAAnL,EAAdkL,EAAcjL,EAAA,EAAAC,KAAA,QAAAC,WAAA,EACjBkL,EAAAA,EAAAA,IAAS,CAAEhL,WAAW,KAAQC,IAAA,OAAAC,WAAA,IAAAL,KAAA,QAAAI,IAAA,iCAAAC,WAAA,IAAAL,KAAA,QAAAI,IAAA,WAAAC,WAAA,IAAAL,KAAA,SAAAI,IAAA,oBAAAC,MAO/B,YACEwE,EAAAA,EAAAA,GATEmG,EAAc,2BAShBnG,CATgB,IAUhBpE,KAAK2K,mBACP,GAAC,CAAApL,KAAA,SAAAI,IAAA,uBAAAC,MAED,WAEE,IADAwE,EAAAA,EAAAA,GAdEmG,EAAc,8BAchBnG,CAdgB,IAeZpE,KAAK4K,SAAU,CACjB,KAAO5K,KAAK4K,SAAS/L,QAAQ,CAC3B,IAAMgM,EAAQ7K,KAAK4K,SAASE,MACxBD,aAAiBpB,QACnBoB,EAAMhE,MAAK,SAACkE,GAAS,OAAKA,GAAW,IAErCF,GAEJ,CACA7K,KAAK4K,cAAWvE,CAClB,CACF,GAAC,CAAA9G,KAAA,SAAAI,IAAA,UAAAC,MAED,SAAkBoL,GAEhB,IADA5G,EAAAA,EAAAA,GA7BEmG,EAAc,iBA6BhBnG,CA7BgB,CA6BF4G,IACVA,EAAa5E,IAAI,QACnBpG,KAAK2K,yBAGP,GAAK3K,KAAKiL,+BAAV,CAEC,IACoCC,EADpCC,GAAAC,EAAAA,EAAAA,GACiBJ,EAAab,QAAM,IAArC,IAAAgB,EAAAE,MAAAH,EAAAC,EAAAG,KAAAC,MAAuC,KAA5B5L,EAAGuL,EAAAtL,MACZ,GAAII,KAAKiL,+BAA+BnI,SAASnD,GAE/C,YADAK,KAAK2K,mBAGT,CAAC,OAAAa,GAAAL,EAAAtF,EAAA2F,EAAA,SAAAL,EAAAM,GAAA,CAND,CAOF,GAAC,CAAAlM,KAAA,SAAAI,IAAA,gBAAAC,MAED,WAGE,MAAO,EACT,GAAC,CAAAL,KAAA,SAAAI,IAAA,oBAAAC,MAED,WAAkC,IAAA8L,EAAA3L,EAAA,UAEZsG,IAAlBrG,KAAK4K,WACH5K,KAA4B2L,kBAChBtF,IAAdrG,KAAKC,MAC8B,QADZyL,EACvB1L,KAAKiL,sCAA8B,IAAAS,GAAnCA,EAAqC5F,MACnC,SAAC8F,GAAI,YAAoBvF,IAAftG,EAAK6L,EAAmB,MAKtC5L,KAAK4K,SAAW5K,KAAK6L,gBACvB,IAAC,GA/D0BvB,GAiE7B,OAAOC,CACT,C,wBC3EA,IAAIhI,EAAQ,EAAQ,OAChBuJ,EAAkB,EAAQ,OAC1BC,EAAsB,EAAQ,OAC9BC,EAAoB,EAAQ,OAC5BC,EAAsB,EAAQ,OAC9BC,EAAMC,KAAKD,IACXE,EAAe,GAAGC,YAClBC,IAAkBF,GAAgB,EAAI,CAAC,GAAGC,YAAY,GAAI,GAAK,EAC/DE,EAAgBN,EAAoB,eACpCO,EAASF,IAAkBC,EAI/BE,EAAOC,QAAUF,EAAS,SAAqBG,GAE7C,GAAIL,EAAe,OAAO/J,EAAM6J,EAAcpM,KAAMpB,YAAc,EAClE,IAAIgO,EAAId,EAAgB9L,MACpBnB,EAASmN,EAAkBY,GAC/B,GAAe,IAAX/N,EAAc,OAAQ,EAC1B,IAAIgO,EAAQhO,EAAS,EAGrB,IAFID,UAAUC,OAAS,IAAGgO,EAAQX,EAAIW,EAAOd,EAAoBnN,UAAU,MACvEiO,EAAQ,IAAGA,EAAQhO,EAASgO,GACzBA,GAAS,EAAGA,IAAS,GAAIA,KAASD,GAAKA,EAAEC,KAAWF,EAAe,OAAOE,GAAS,EAC1F,OAAQ,CACV,EAAIT,C,wBCzBJ,IAAIU,EAAI,EAAQ,OACZT,EAAc,EAAQ,OAK1BS,EAAE,CACAC,OAAQ,QACRC,OAAO,EACPC,OAAQZ,IAAgB,GAAGA,aAC1B,CACDA,YAAaA,G","sources":["https://raw.githubusercontent.com/home-assistant/frontend/a09f44dcd2b887b3a40116caa4705045dae005ab\n/src/components/ha-areas-picker.ts","https://raw.githubusercontent.com/home-assistant/frontend/a09f44dcd2b887b3a40116caa4705045dae005ab\n/src/components/ha-list-item.ts","https://raw.githubusercontent.com/home-assistant/frontend/a09f44dcd2b887b3a40116caa4705045dae005ab\n/src/components/ha-selector/ha-selector-area.ts","https://raw.githubusercontent.com/home-assistant/frontend/a09f44dcd2b887b3a40116caa4705045dae005ab\n/src/common/util/time-cache-function-promise.ts","https://raw.githubusercontent.com/home-assistant/frontend/a09f44dcd2b887b3a40116caa4705045dae005ab\n/src/data/entity_sources.ts","https://raw.githubusercontent.com/home-assistant/frontend/a09f44dcd2b887b3a40116caa4705045dae005ab\n/src/mixins/subscribe-mixin.ts","no-source/node_modules/core-js/internals/array-last-index-of.js","no-source/node_modules/core-js/modules/es.array.last-index-of.js"],"names":["_babel_runtime_helpers_decorate__WEBPACK_IMPORTED_MODULE_8__","A","lit_decorators__WEBPACK_IMPORTED_MODULE_19__","EM","_initialize","_SubscribeMixin","_updateAreas2","HaAreasPicker","_SubscribeMixin2","_this","_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_5__","_len","arguments","length","args","Array","_key","_babel_runtime_helpers_callSuper__WEBPACK_IMPORTED_MODULE_6__","concat","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_7__","_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_4__","F","d","kind","decorators","MZ","attribute","key","value","type","Boolean","_this2","this","hass","lit__WEBPACK_IMPORTED_MODULE_18__","s6","currentAreas","_currentAreas","qy","_templateObject","_babel_runtime_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_3__","map","area","_templateObject2","noAdd","pickedAreaLabel","includeDomains","excludeDomains","includeDeviceClasses","deviceFilter","entityFilter","disabled","_areaChanged","pickAreaLabel","helper","placeholder","required","_addArea","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__","_babel_runtime_helpers_regeneratorRuntime__WEBPACK_IMPORTED_MODULE_1__","mark","_callee","areas","wrap","_context","prev","next","_common_dom_fire_event__WEBPACK_IMPORTED_MODULE_22__","r","stop","_x","apply","ev","stopPropagation","curValue","currentTarget","newValue","detail","includes","_updateAreas","ent","filter","toAdd","_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__","static","AH","_templateObject3","_mixins_subscribe_mixin__WEBPACK_IMPORTED_MODULE_20__","E","WF","_decorate","customElement","_ListItemBase","HaListItem","_ListItemBase2","_classCallCheck","_callSuper","_inherits","_createClass","noninteractive","_superPropGet","styles","css","_taggedTemplateLiteral","document","dir","ListItemBase","HaAreaSelector","_babel_runtime_helpers_decorate__WEBPACK_IMPORTED_MODULE_5__","lit_decorators__WEBPACK_IMPORTED_MODULE_12__","_LitElement","_LitElement2","_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_2__","_babel_runtime_helpers_callSuper__WEBPACK_IMPORTED_MODULE_3__","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_4__","_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__","wk","memoize_one__WEBPACK_IMPORTED_MODULE_19__","_data_device_registry__WEBPACK_IMPORTED_MODULE_13__","fk","selector","_selector$area","_selector$area2","entity","_common_array_ensure_array__WEBPACK_IMPORTED_MODULE_20__","e","some","integration","device","changedProperties","_this$selector$area","_this$selector$area2","has","undefined","multiple","isArray","_common_dom_fire_event__WEBPACK_IMPORTED_MODULE_21__","_hasIntegration","_entitySources","_data_entity_sources__WEBPACK_IMPORTED_MODULE_14__","c","then","sources","_configEntries","_data_config_entries__WEBPACK_IMPORTED_MODULE_15__","VN","entries","_this$selector$area3","_this$selector$area6","_this$selector$area7","_this$selector$area4","_this$selector$area5","lit__WEBPACK_IMPORTED_MODULE_11__","_babel_runtime_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__","label","_filterDevices","_filterEntities","_this3","_this3$selector$area","_data_selector__WEBPACK_IMPORTED_MODULE_16__","Ru","_this4","_this4$selector$area","deviceIntegrations","_deviceIntegrationLookup","Object","values","entities","devices","vX","timeCachePromiseFunc","_ref","_asyncToGenerator","_regeneratorRuntime","cacheKey","cacheTime","func","generateCacheKey","anyHass","lastResult","checkCachedResult","resultPromise","_args","result","abrupt","Promise","setTimeout","_x2","_x3","_x4","_x5","fetchEntitySources","callWS","fetchEntitySourcesWithCache","hass2","keys","states","SubscribeMixin","superClass","SubscribeClass","_superClass","_superClass2","property","__checkSubscribed","__unsubs","unsub","pop","unsubFunc","changedProps","hassSubscribeRequiredHostProps","_step","_iterator","_createForOfIteratorHelper","s","n","done","err","f","_this$hassSubscribeRe","isConnected","prop","hassSubscribe","toIndexedObject","toIntegerOrInfinity","lengthOfArrayLike","arrayMethodIsStrict","min","Math","$lastIndexOf","lastIndexOf","NEGATIVE_ZERO","STRICT_METHOD","FORCED","module","exports","searchElement","O","index","$","target","proto","forced"],"sourceRoot":""}
\ No newline at end of file
diff --git a/custom_components/hacs/hacs_frontend/frontend_es5/1056.mchLMp1Qwk8.js.map b/custom_components/hacs/hacs_frontend/frontend_es5/1056.mchLMp1Qwk8.js.map
index 08cde620..68e6c4b0 100644
--- a/custom_components/hacs/hacs_frontend/frontend_es5/1056.mchLMp1Qwk8.js.map
+++ b/custom_components/hacs/hacs_frontend/frontend_es5/1056.mchLMp1Qwk8.js.map
@@ -1 +1 @@
-{"version":3,"file":"1056.mchLMp1Qwk8.js","mappings":"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","sources":["https://raw.githubusercontent.com/home-assistant/frontend/e578904ff7a1b0d7a0940cd5a0fb58ce64f10e21\n/src/panels/config/areas/dialog-area-registry-detail.ts"],"names":["cropOptions","round","type","quality","aspectRatio","DialogAreaDetail","_babel_runtime_helpers_decorate__WEBPACK_IMPORTED_MODULE_7__","A","_initialize","_LitElement","_updateEntry2","_showDialog","_LitElement2","_this","_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__","_len","arguments","length","args","Array","_key","_babel_runtime_helpers_callSuper__WEBPACK_IMPORTED_MODULE_5__","concat","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__","_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__","F","d","kind","decorators","lit_decorators__WEBPACK_IMPORTED_MODULE_14__","MZ","attribute","key","value","wk","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__","_babel_runtime_helpers_regeneratorRuntime__WEBPACK_IMPORTED_MODULE_1__","mark","_callee","params","_this$_params$entry","_this$_params$entry2","_this$_params$entry3","wrap","_context","prev","next","this","_params","_error","undefined","_name","entry","name","suggestedName","_aliases","aliases","_labels","labels","_picture","picture","_icon","icon","_floor","floor_id","updateComplete","stop","_x","apply","_common_dom_fire_event__WEBPACK_IMPORTED_MODULE_24__","r","dialog","localName","lit__WEBPACK_IMPORTED_MODULE_13__","s6","nameInvalid","_isNameValid","qy","_templateObject","_babel_runtime_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__","closeDialog","_components_ha_dialog__WEBPACK_IMPORTED_MODULE_17__","l","hass","localize","_templateObject2","_templateObject3","area_id","_nameChanged","_iconChanged","_floorChanged","_labelsChanged","_pictureChanged","_aliasesChanged","_updateEntry","_submitting","trim","ev","target","detail","_callee2","create","values","_context2","createEntry","updateEntry","t0","message","finish","static","_resources_styles__WEBPACK_IMPORTED_MODULE_23__","nA","AH","_templateObject4","WF","customElements","define"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"1056.mchLMp1Qwk8.js","mappings":"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","sources":["https://raw.githubusercontent.com/home-assistant/frontend/a09f44dcd2b887b3a40116caa4705045dae005ab\n/src/panels/config/areas/dialog-area-registry-detail.ts"],"names":["cropOptions","round","type","quality","aspectRatio","DialogAreaDetail","_babel_runtime_helpers_decorate__WEBPACK_IMPORTED_MODULE_7__","A","_initialize","_LitElement","_updateEntry2","_showDialog","_LitElement2","_this","_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_4__","_len","arguments","length","args","Array","_key","_babel_runtime_helpers_callSuper__WEBPACK_IMPORTED_MODULE_5__","concat","_babel_runtime_helpers_inherits__WEBPACK_IMPORTED_MODULE_6__","_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_3__","F","d","kind","decorators","lit_decorators__WEBPACK_IMPORTED_MODULE_14__","MZ","attribute","key","value","wk","_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_2__","_babel_runtime_helpers_regeneratorRuntime__WEBPACK_IMPORTED_MODULE_1__","mark","_callee","params","_this$_params$entry","_this$_params$entry2","_this$_params$entry3","wrap","_context","prev","next","this","_params","_error","undefined","_name","entry","name","suggestedName","_aliases","aliases","_labels","labels","_picture","picture","_icon","icon","_floor","floor_id","updateComplete","stop","_x","apply","_common_dom_fire_event__WEBPACK_IMPORTED_MODULE_24__","r","dialog","localName","lit__WEBPACK_IMPORTED_MODULE_13__","s6","nameInvalid","_isNameValid","qy","_templateObject","_babel_runtime_helpers_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__","closeDialog","_components_ha_dialog__WEBPACK_IMPORTED_MODULE_17__","l","hass","localize","_templateObject2","_templateObject3","area_id","_nameChanged","_iconChanged","_floorChanged","_labelsChanged","_pictureChanged","_aliasesChanged","_updateEntry","_submitting","trim","ev","target","detail","_callee2","create","values","_context2","createEntry","updateEntry","t0","message","finish","static","_resources_styles__WEBPACK_IMPORTED_MODULE_23__","nA","AH","_templateObject4","WF","customElements","define"],"sourceRoot":""}
\ No newline at end of file
diff --git a/custom_components/hacs/hacs_frontend/frontend_es5/1159.DOu5b-5AQyw.js b/custom_components/hacs/hacs_frontend/frontend_es5/1159.DOu5b-5AQyw.js
new file mode 100644
index 00000000..9501be81
--- /dev/null
+++ b/custom_components/hacs/hacs_frontend/frontend_es5/1159.DOu5b-5AQyw.js
@@ -0,0 +1,3 @@
+/*! For license information please see 1159.DOu5b-5AQyw.js.LICENSE.txt */
+(self.webpackChunkhacs_frontend=self.webpackChunkhacs_frontend||[]).push([[1159],{49048:function(t,e,i){var n,a,o,r=i(22711).default;i(42942),i(48062),i(67336),i(67187),i(71499),i(81027),i(13025),i(52427),i(39805),i(95737),i(79243),i(97741),i(89655),i(18193),i(96678),i(57308),i(99770),i(3443),i(42699),i(6587),i(50693),i(96434),i(29193),i(49445),i(26098),i(25734),i(77069),i(10507),i(39790),i(36016),i(98185),i(7760),i(99019),i(29276),i(43037),i(17001),i(79641),i(33026),i(809),i(1965),i(47185),i(96141),i(40142),i(5255),i(854),i(95308),i(98333),i(12723),i(89593),i(55422),i(40866),i(24952),i(19363),i(9208),i(46182),i(88917),i(16252),i(44514),i(73432),i(50164),i(70800),i(8691),i(14920),i(2452),i(86115),i(89811),i(97152),i(253),i(2075),i(54846),i(16891),i(27922),i(87688),i(66555),i(96858),i(98514),i(34902),i(99810),i(29152),o=function(){"use strict";function t(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,n)}return i}function e(e){for(var n=1;nt.length)&&(e=t.length);for(var i=0,n=new Array(e);i0&&t<1/0};function at(t){return void 0===t}function ot(t){return"object"===n(t)&&null!==t}var rt=Object.prototype.hasOwnProperty;function ht(t){if(!ot(t))return!1;try{var e=t.constructor,i=e.prototype;return e&&i&&rt.call(i,"isPrototypeOf")}catch(n){return!1}}function st(t){return"function"==typeof t}var ct=Array.prototype.slice;function pt(t){return Array.from?Array.from(t):ct.call(t)}function lt(t,e){return t&&st(e)&&(Array.isArray(t)||it(t.length)?pt(t).forEach((function(i,n){e.call(t,i,n,t)})):ot(t)&&Object.keys(t).forEach((function(i){e.call(t,t[i],i,t)}))),t}var dt=Object.assign||function(t){for(var e=arguments.length,i=new Array(e>1?e-1:0),n=1;n0&&i.forEach((function(e){ot(e)&&Object.keys(e).forEach((function(i){t[i]=e[i]}))})),t},ut=/\.\d*(?:0|9){12}\d*$/;function mt(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e11;return ut.test(t)?Math.round(t*e)/e:t}var gt=/^width|height|left|top|marginLeft|marginTop$/;function ft(t,e){var i=t.style;lt(e,(function(t,e){gt.test(e)&&it(t)&&(t="".concat(t,"px")),i[e]=t}))}function vt(t,e){if(e)if(it(t.length))lt(t,(function(t){vt(t,e)}));else if(t.classList)t.classList.add(e);else{var i=t.className.trim();i?i.indexOf(e)<0&&(t.className="".concat(i," ").concat(e)):t.className=e}}function wt(t,e){e&&(it(t.length)?lt(t,(function(t){wt(t,e)})):t.classList?t.classList.remove(e):t.className.indexOf(e)>=0&&(t.className=t.className.replace(e,"")))}function bt(t,e,i){e&&(it(t.length)?lt(t,(function(t){bt(t,e,i)})):i?vt(t,e):wt(t,e))}var xt=/([a-z\d])([A-Z])/g;function yt(t){return t.replace(xt,"$1-$2").toLowerCase()}function Mt(t,e){return ot(t[e])?t[e]:t.dataset?t.dataset[e]:t.getAttribute("data-".concat(yt(e)))}function Ct(t,e,i){ot(i)?t[e]=i:t.dataset?t.dataset[e]=i:t.setAttribute("data-".concat(yt(e)),i)}var Dt=/\s\s*/,kt=function(){var t=!1;if(s){var e=!1,i=function(){},n=Object.defineProperty({},"once",{get:function(){return t=!0,e},set:function(t){e=t}});c.addEventListener("test",i,n),c.removeEventListener("test",i,n)}return t}();function At(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=i;e.trim().split(Dt).forEach((function(e){if(!kt){var o=t.listeners;o&&o[e]&&o[e][i]&&(a=o[e][i],delete o[e][i],0===Object.keys(o[e]).length&&delete o[e],0===Object.keys(o).length&&delete t.listeners)}t.removeEventListener(e,a,n)}))}function Bt(t,e,i){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},a=i;e.trim().split(Dt).forEach((function(e){if(n.once&&!kt){var o=t.listeners,r=void 0===o?{}:o;a=function(){delete r[e][i],t.removeEventListener(e,a,n);for(var o=arguments.length,h=new Array(o),s=0;s1&&void 0!==arguments[1]?arguments[1]:"contain",o=nt(n),r=nt(i);if(o&&r){var h=i*e;"contain"===a&&h>n||"cover"===a&&h=8&&(o=s+p)}}}if(o){var l,d,u=i.getUint16(o,n);for(d=0;d=0?a:200),height:Math.max(i.offsetHeight,o>=0?o:100)};this.containerData=r,ft(n,{width:r.width,height:r.height}),vt(t,B),wt(n,B)},initCanvas:function(){var t=this.containerData,e=this.imageData,i=this.options.viewMode,n=Math.abs(e.rotate)%180==90,a=n?e.naturalHeight:e.naturalWidth,o=n?e.naturalWidth:e.naturalHeight,r=a/o,h=t.width,s=t.height;t.height*r>t.width?3===i?h=t.height*r:s=t.width/r:3===i?s=t.width/r:h=t.height*r;var c={aspectRatio:r,naturalWidth:a,naturalHeight:o,width:h,height:s};this.canvasData=c,this.limited=1===i||2===i,this.limitCanvas(!0,!0),c.width=Math.min(Math.max(c.width,c.minWidth),c.maxWidth),c.height=Math.min(Math.max(c.height,c.minHeight),c.maxHeight),c.left=(t.width-c.width)/2,c.top=(t.height-c.height)/2,c.oldLeft=c.left,c.oldTop=c.top,this.initialCanvasData=dt({},c)},limitCanvas:function(t,e){var i=this.options,n=this.containerData,a=this.canvasData,o=this.cropBoxData,r=i.viewMode,h=a.aspectRatio,s=this.cropped&&o;if(t){var c=Number(i.minCanvasWidth)||0,p=Number(i.minCanvasHeight)||0;r>1?(c=Math.max(c,n.width),p=Math.max(p,n.height),3===r&&(p*h>c?c=p*h:p=c/h)):r>0&&(c?c=Math.max(c,s?o.width:0):p?p=Math.max(p,s?o.height:0):s&&(c=o.width,(p=o.height)*h>c?c=p*h:p=c/h));var l=Rt({aspectRatio:h,width:c,height:p});c=l.width,p=l.height,a.minWidth=c,a.minHeight=p,a.maxWidth=1/0,a.maxHeight=1/0}if(e)if(r>(s?0:1)){var d=n.width-a.width,u=n.height-a.height;a.minLeft=Math.min(0,d),a.minTop=Math.min(0,u),a.maxLeft=Math.max(0,d),a.maxTop=Math.max(0,u),s&&this.limited&&(a.minLeft=Math.min(o.left,o.left+(o.width-a.width)),a.minTop=Math.min(o.top,o.top+(o.height-a.height)),a.maxLeft=o.left,a.maxTop=o.top,2===r&&(a.width>=n.width&&(a.minLeft=Math.min(0,d),a.maxLeft=Math.max(0,d)),a.height>=n.height&&(a.minTop=Math.min(0,u),a.maxTop=Math.max(0,u))))}else a.minLeft=-a.width,a.minTop=-a.height,a.maxLeft=n.width,a.maxTop=n.height},renderCanvas:function(t,e){var i=this.canvasData,n=this.imageData;if(e){var a=function(t){var e=t.width,i=t.height,n=t.degree;if(90==(n=Math.abs(n)%180))return{width:i,height:e};var a=n%90*Math.PI/180,o=Math.sin(a),r=Math.cos(a),h=e*r+i*o,s=e*o+i*r;return n>90?{width:s,height:h}:{width:h,height:s}}({width:n.naturalWidth*Math.abs(n.scaleX||1),height:n.naturalHeight*Math.abs(n.scaleY||1),degree:n.rotate||0}),o=a.width,r=a.height,h=i.width*(o/i.naturalWidth),s=i.height*(r/i.naturalHeight);i.left-=(h-i.width)/2,i.top-=(s-i.height)/2,i.width=h,i.height=s,i.aspectRatio=o/r,i.naturalWidth=o,i.naturalHeight=r,this.limitCanvas(!0,!1)}(i.width>i.maxWidth||i.widthi.maxHeight||i.heighte.width?a.height=a.width/i:a.width=a.height*i),this.cropBoxData=a,this.limitCropBox(!0,!0),a.width=Math.min(Math.max(a.width,a.minWidth),a.maxWidth),a.height=Math.min(Math.max(a.height,a.minHeight),a.maxHeight),a.width=Math.max(a.minWidth,a.width*n),a.height=Math.max(a.minHeight,a.height*n),a.left=e.left+(e.width-a.width)/2,a.top=e.top+(e.height-a.height)/2,a.oldLeft=a.left,a.oldTop=a.top,this.initialCropBoxData=dt({},a)},limitCropBox:function(t,e){var i=this.options,n=this.containerData,a=this.canvasData,o=this.cropBoxData,r=this.limited,h=i.aspectRatio;if(t){var s=Number(i.minCropBoxWidth)||0,c=Number(i.minCropBoxHeight)||0,p=r?Math.min(n.width,a.width,a.width+a.left,n.width-a.left):n.width,l=r?Math.min(n.height,a.height,a.height+a.top,n.height-a.top):n.height;s=Math.min(s,n.width),c=Math.min(c,n.height),h&&(s&&c?c*h>s?c=s/h:s=c*h:s?c=s/h:c&&(s=c*h),l*h>p?l=p/h:p=l*h),o.minWidth=Math.min(s,p),o.minHeight=Math.min(c,l),o.maxWidth=p,o.maxHeight=l}e&&(r?(o.minLeft=Math.max(0,a.left),o.minTop=Math.max(0,a.top),o.maxLeft=Math.min(n.width,a.left+a.width)-o.width,o.maxTop=Math.min(n.height,a.top+a.height)-o.height):(o.minLeft=0,o.minTop=0,o.maxLeft=n.width-o.width,o.maxTop=n.height-o.height))},renderCropBox:function(){var t=this.options,e=this.containerData,i=this.cropBoxData;(i.width>i.maxWidth||i.widthi.maxHeight||i.height=e.width&&i.height>=e.height?g:u),ft(this.cropBox,dt({width:i.width,height:i.height},Nt({translateX:i.left,translateY:i.top}))),this.cropped&&this.limited&&this.limitCanvas(!0,!0),this.disabled||this.output()},output:function(){this.preview(),Ot(this.element,X,this.getData())}},It={initPreview:function(){var t=this.element,e=this.crossOrigin,i=this.options.preview,n=e?this.crossOriginUrl:this.url,a=t.alt||"The image to preview",o=document.createElement("img");if(e&&(o.crossOrigin=e),o.src=n,o.alt=a,this.viewBox.appendChild(o),this.viewBoxImage=o,i){var r=i;"string"==typeof i?r=t.ownerDocument.querySelectorAll(i):i.querySelector&&(r=[i]),this.previews=r,lt(r,(function(t){var i=document.createElement("img");Ct(t,H,{width:t.offsetWidth,height:t.offsetHeight,html:t.innerHTML}),e&&(i.crossOrigin=e),i.src=n,i.alt=a,i.style.cssText='display:block;width:100%;height:auto;min-width:0!important;min-height:0!important;max-width:none!important;max-height:none!important;image-orientation:0deg!important;"',t.innerHTML="",t.appendChild(i)}))}},resetPreview:function(){lt(this.previews,(function(t){var e=Mt(t,H);ft(t,{width:e.width,height:e.height}),t.innerHTML=e.html,function(t,e){if(ot(t[e]))try{delete t[e]}catch(i){t[e]=void 0}else if(t.dataset)try{delete t.dataset[e]}catch(i){t.dataset[e]=void 0}else t.removeAttribute("data-".concat(yt(e)))}(t,H)}))},preview:function(){var t=this.imageData,e=this.canvasData,i=this.cropBoxData,n=i.width,a=i.height,o=t.width,r=t.height,h=i.left-e.left-t.left,s=i.top-e.top-t.top;this.cropped&&!this.disabled&&(ft(this.viewBoxImage,dt({width:o,height:r},Nt(dt({translateX:-h,translateY:-s},t)))),lt(this.previews,(function(e){var i=Mt(e,H),c=i.width,p=i.height,l=c,d=p,u=1;n&&(d=a*(u=c/n)),a&&d>p&&(l=n*(u=p/a),d=p),ft(e,{width:l,height:d}),ft(e.getElementsByTagName("img")[0],dt({width:o*u,height:r*u},Nt(dt({translateX:-h*u,translateY:-s*u},t))))})))}},Pt={bind:function(){var t=this.element,e=this.options,i=this.cropper;st(e.cropstart)&&Bt(t,j,e.cropstart),st(e.cropmove)&&Bt(t,Y,e.cropmove),st(e.cropend)&&Bt(t,S,e.cropend),st(e.crop)&&Bt(t,X,e.crop),st(e.zoom)&&Bt(t,F,e.zoom),Bt(i,P,this.onCropStart=this.cropStart.bind(this)),e.zoomable&&e.zoomOnWheel&&Bt(i,Z,this.onWheel=this.wheel.bind(this),{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&Bt(i,I,this.onDblclick=this.dblclick.bind(this)),Bt(t.ownerDocument,U,this.onCropMove=this.cropMove.bind(this)),Bt(t.ownerDocument,q,this.onCropEnd=this.cropEnd.bind(this)),e.responsive&&Bt(window,G,this.onResize=this.resize.bind(this))},unbind:function(){var t=this.element,e=this.options,i=this.cropper;st(e.cropstart)&&At(t,j,e.cropstart),st(e.cropmove)&&At(t,Y,e.cropmove),st(e.cropend)&&At(t,S,e.cropend),st(e.crop)&&At(t,X,e.crop),st(e.zoom)&&At(t,F,e.zoom),At(i,P,this.onCropStart),e.zoomable&&e.zoomOnWheel&&At(i,Z,this.onWheel,{passive:!1,capture:!0}),e.toggleDragModeOnDblclick&&At(i,I,this.onDblclick),At(t.ownerDocument,U,this.onCropMove),At(t.ownerDocument,q,this.onCropEnd),e.responsive&&At(window,G,this.onResize)}},Ut={resize:function(){if(!this.disabled){var t,e,i=this.options,n=this.container,a=this.containerData,o=n.offsetWidth/a.width,r=n.offsetHeight/a.height,h=Math.abs(o-1)>Math.abs(r-1)?o:r;1!==h&&(i.restore&&(t=this.getCanvasData(),e=this.getCropBoxData()),this.render(),i.restore&&(this.setCanvasData(lt(t,(function(e,i){t[i]=e*h}))),this.setCropBoxData(lt(e,(function(t,i){e[i]=t*h})))))}},dblclick:function(){var t,e;this.disabled||this.options.dragMode===R||this.setDragMode((t=this.dragBox,e=k,(t.classList?t.classList.contains(e):t.className.indexOf(e)>-1)?L:N))},wheel:function(t){var e=this,i=Number(this.options.wheelZoomRatio)||.1,n=1;this.disabled||(t.preventDefault(),this.wheeling||(this.wheeling=!0,setTimeout((function(){e.wheeling=!1}),50),t.deltaY?n=t.deltaY>0?1:-1:t.wheelDelta?n=-t.wheelDelta/120:t.detail&&(n=t.detail>0?1:-1),this.zoom(-n*i,t)))},cropStart:function(t){var e=t.buttons,i=t.button;if(!(this.disabled||("mousedown"===t.type||"pointerdown"===t.type&&"mouse"===t.pointerType)&&(it(e)&&1!==e||it(i)&&0!==i||t.ctrlKey))){var n,a=this.options,o=this.pointers;t.changedTouches?lt(t.changedTouches,(function(t){o[t.identifier]=Lt(t)})):o[t.pointerId||0]=Lt(t),n=Object.keys(o).length>1&&a.zoomable&&a.zoomOnTouch?f:Mt(t.target,W),$.test(n)&&!1!==Ot(this.element,j,{originalEvent:t,action:n})&&(t.preventDefault(),this.action=n,this.cropping=!1,n===m&&(this.cropping=!0,vt(this.dragBox,E)))}},cropMove:function(t){var e=this.action;if(!this.disabled&&e){var i=this.pointers;t.preventDefault(),!1!==Ot(this.element,Y,{originalEvent:t,action:e})&&(t.changedTouches?lt(t.changedTouches,(function(t){dt(i[t.identifier]||{},Lt(t,!0))})):dt(i[t.pointerId||0]||{},Lt(t,!0)),this.change(t))}},cropEnd:function(t){if(!this.disabled){var e=this.action,i=this.pointers;t.changedTouches?lt(t.changedTouches,(function(t){delete i[t.identifier]})):delete i[t.pointerId||0],e&&(t.preventDefault(),Object.keys(i).length||(this.action=""),this.cropping&&(this.cropping=!1,bt(this.dragBox,E,this.cropped&&this.options.modal)),Ot(this.element,S,{originalEvent:t,action:e}))}}},qt={change:function(t){var i,n=this.options,a=this.canvasData,o=this.containerData,r=this.cropBoxData,h=this.pointers,s=this.action,c=n.aspectRatio,p=r.left,l=r.top,d=r.width,k=r.height,A=p+d,O=l+k,T=0,E=0,z=o.width,W=o.height,H=!0;!c&&t.shiftKey&&(c=d&&k?d/k:1),this.limited&&(T=r.minLeft,E=r.minTop,z=T+Math.min(o.width,a.width,a.left+a.width),W=E+Math.min(o.height,a.height,a.top+a.height));var N=h[Object.keys(h)[0]],L={x:N.endX-N.startX,y:N.endY-N.startY},R=function(t){switch(t){case v:A+L.x>z&&(L.x=z-A);break;case w:p+L.xW&&(L.y=W-O)}};switch(s){case u:p+=L.x,l+=L.y;break;case v:if(L.x>=0&&(A>=z||c&&(l<=E||O>=W))){H=!1;break}R(v),(d+=L.x)<0&&(s=w,p-=d=-d),c&&(k=d/c,l+=(r.height-k)/2);break;case x:if(L.y<=0&&(l<=E||c&&(p<=T||A>=z))){H=!1;break}R(x),k-=L.y,l+=L.y,k<0&&(s=b,l-=k=-k),c&&(d=k*c,p+=(r.width-d)/2);break;case w:if(L.x<=0&&(p<=T||c&&(l<=E||O>=W))){H=!1;break}R(w),d-=L.x,p+=L.x,d<0&&(s=v,p-=d=-d),c&&(k=d/c,l+=(r.height-k)/2);break;case b:if(L.y>=0&&(O>=W||c&&(p<=T||A>=z))){H=!1;break}R(b),(k+=L.y)<0&&(s=x,l-=k=-k),c&&(d=k*c,p+=(r.width-d)/2);break;case y:if(c){if(L.y<=0&&(l<=E||A>=z)){H=!1;break}R(x),k-=L.y,l+=L.y,d=k*c}else R(x),R(v),L.x>=0?AE&&(k-=L.y,l+=L.y):(k-=L.y,l+=L.y);d<0&&k<0?(s=D,l-=k=-k,p-=d=-d):d<0?(s=M,p-=d=-d):k<0&&(s=C,l-=k=-k);break;case M:if(c){if(L.y<=0&&(l<=E||p<=T)){H=!1;break}R(x),k-=L.y,l+=L.y,d=k*c,p+=r.width-d}else R(x),R(w),L.x<=0?p>T?(d-=L.x,p+=L.x):L.y<=0&&l<=E&&(H=!1):(d-=L.x,p+=L.x),L.y<=0?l>E&&(k-=L.y,l+=L.y):(k-=L.y,l+=L.y);d<0&&k<0?(s=C,l-=k=-k,p-=d=-d):d<0?(s=y,p-=d=-d):k<0&&(s=D,l-=k=-k);break;case D:if(c){if(L.x<=0&&(p<=T||O>=W)){H=!1;break}R(w),d-=L.x,p+=L.x,k=d/c}else R(b),R(w),L.x<=0?p>T?(d-=L.x,p+=L.x):L.y>=0&&O>=W&&(H=!1):(d-=L.x,p+=L.x),L.y>=0?O=0&&(A>=z||O>=W)){H=!1;break}R(v),k=(d+=L.x)/c}else R(b),R(v),L.x>=0?A=0&&O>=W&&(H=!1):d+=L.x,L.y>=0?OMath.abs(n)&&(n=s)}))})),n}(h),t),H=!1;break;case m:if(!L.x||!L.y){H=!1;break}i=Tt(this.cropper),p=N.startX-i.left,l=N.startY-i.top,d=r.minWidth,k=r.minHeight,L.x>0?s=L.y>0?C:y:L.x<0&&(p-=d,s=L.y>0?D:M),L.y<0&&(l-=k),this.cropped||(wt(this.cropBox,B),this.cropped=!0,this.limited&&this.limitCropBox(!0,!0))}H&&(r.width=d,r.height=k,r.left=p,r.top=l,this.action=s,this.renderCropBox()),lt(h,(function(t){t.startX=t.endX,t.startY=t.endY}))}},Qt={crop:function(){return!this.ready||this.cropped||this.disabled||(this.cropped=!0,this.limitCropBox(!0,!0),this.options.modal&&vt(this.dragBox,E),wt(this.cropBox,B),this.setCropBoxData(this.initialCropBoxData)),this},reset:function(){return this.ready&&!this.disabled&&(this.imageData=dt({},this.initialImageData),this.canvasData=dt({},this.initialCanvasData),this.cropBoxData=dt({},this.initialCropBoxData),this.renderCanvas(),this.cropped&&this.renderCropBox()),this},clear:function(){return this.cropped&&!this.disabled&&(dt(this.cropBoxData,{left:0,top:0,width:0,height:0}),this.cropped=!1,this.renderCropBox(),this.limitCanvas(!0,!0),this.renderCanvas(),wt(this.dragBox,E),vt(this.cropBox,B)),this},replace:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return!this.disabled&&t&&(this.isImg&&(this.element.src=t),e?(this.url=t,this.image.src=t,this.ready&&(this.viewBoxImage.src=t,lt(this.previews,(function(e){e.getElementsByTagName("img")[0].src=t})))):(this.isImg&&(this.replaced=!0),this.options.data=null,this.uncreate(),this.load(t))),this},enable:function(){return this.ready&&this.disabled&&(this.disabled=!1,wt(this.cropper,A)),this},disable:function(){return this.ready&&!this.disabled&&(this.disabled=!0,vt(this.cropper,A)),this},destroy:function(){var t=this.element;return t[d]?(t[d]=void 0,this.isImg&&this.replaced&&(t.src=this.originalUrl),this.uncreate(),this):this},move:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,n=i.left,a=i.top;return this.moveTo(at(t)?t:n+Number(t),at(e)?e:a+Number(e))},moveTo:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.canvasData,n=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.movable&&(it(t)&&(i.left=t,n=!0),it(e)&&(i.top=e,n=!0),n&&this.renderCanvas(!0)),this},zoom:function(t,e){var i=this.canvasData;return t=(t=Number(t))<0?1/(1-t):1+t,this.zoomTo(i.width*t/i.naturalWidth,null,e)},zoomTo:function(t,e,i){var n=this.options,a=this.canvasData,o=a.width,r=a.height,h=a.naturalWidth,s=a.naturalHeight;if((t=Number(t))>=0&&this.ready&&!this.disabled&&n.zoomable){var c=h*t,p=s*t;if(!1===Ot(this.element,F,{ratio:t,oldRatio:o/h,originalEvent:i}))return this;if(i){var l=this.pointers,d=Tt(this.cropper),u=l&&Object.keys(l).length?function(t){var e=0,i=0,n=0;return lt(t,(function(t){var a=t.startX,o=t.startY;e+=a,i+=o,n+=1})),{pageX:e/=n,pageY:i/=n}}(l):{pageX:i.pageX,pageY:i.pageY};a.left-=(c-o)*((u.pageX-d.left-a.left)/o),a.top-=(p-r)*((u.pageY-d.top-a.top)/r)}else ht(e)&&it(e.x)&&it(e.y)?(a.left-=(c-o)*((e.x-a.left)/o),a.top-=(p-r)*((e.y-a.top)/r)):(a.left-=(c-o)/2,a.top-=(p-r)/2);a.width=c,a.height=p,this.renderCanvas(!0)}return this},rotate:function(t){return this.rotateTo((this.imageData.rotate||0)+Number(t))},rotateTo:function(t){return it(t=Number(t))&&this.ready&&!this.disabled&&this.options.rotatable&&(this.imageData.rotate=t%360,this.renderCanvas(!0,!0)),this},scaleX:function(t){var e=this.imageData.scaleY;return this.scale(t,it(e)?e:1)},scaleY:function(t){var e=this.imageData.scaleX;return this.scale(it(e)?e:1,t)},scale:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t,i=this.imageData,n=!1;return t=Number(t),e=Number(e),this.ready&&!this.disabled&&this.options.scalable&&(it(t)&&(i.scaleX=t,n=!0),it(e)&&(i.scaleY=e,n=!0),n&&this.renderCanvas(!0,!0)),this},getData:function(){var t,e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],i=this.options,n=this.imageData,a=this.canvasData,o=this.cropBoxData;if(this.ready&&this.cropped){t={x:o.left-a.left,y:o.top-a.top,width:o.width,height:o.height};var r=n.width/n.naturalWidth;if(lt(t,(function(e,i){t[i]=e/r})),e){var h=Math.round(t.y+t.height),s=Math.round(t.x+t.width);t.x=Math.round(t.x),t.y=Math.round(t.y),t.width=s-t.x,t.height=h-t.y}}else t={x:0,y:0,width:0,height:0};return i.rotatable&&(t.rotate=n.rotate||0),i.scalable&&(t.scaleX=n.scaleX||1,t.scaleY=n.scaleY||1),t},setData:function(t){var e=this.options,i=this.imageData,n=this.canvasData,a={};if(this.ready&&!this.disabled&&ht(t)){var o=!1;e.rotatable&&it(t.rotate)&&t.rotate!==i.rotate&&(i.rotate=t.rotate,o=!0),e.scalable&&(it(t.scaleX)&&t.scaleX!==i.scaleX&&(i.scaleX=t.scaleX,o=!0),it(t.scaleY)&&t.scaleY!==i.scaleY&&(i.scaleY=t.scaleY,o=!0)),o&&this.renderCanvas(!0,!0);var r=i.width/i.naturalWidth;it(t.x)&&(a.left=t.x*r+n.left),it(t.y)&&(a.top=t.y*r+n.top),it(t.width)&&(a.width=t.width*r),it(t.height)&&(a.height=t.height*r),this.setCropBoxData(a)}return this},getContainerData:function(){return this.ready?dt({},this.containerData):{}},getImageData:function(){return this.sized?dt({},this.imageData):{}},getCanvasData:function(){var t=this.canvasData,e={};return this.ready&<(["left","top","width","height","naturalWidth","naturalHeight"],(function(i){e[i]=t[i]})),e},setCanvasData:function(t){var e=this.canvasData,i=e.aspectRatio;return this.ready&&!this.disabled&&ht(t)&&(it(t.left)&&(e.left=t.left),it(t.top)&&(e.top=t.top),it(t.width)?(e.width=t.width,e.height=t.width/i):it(t.height)&&(e.height=t.height,e.width=t.height*i),this.renderCanvas(!0)),this},getCropBoxData:function(){var t,e=this.cropBoxData;return this.ready&&this.cropped&&(t={left:e.left,top:e.top,width:e.width,height:e.height}),t||{}},setCropBoxData:function(t){var e,i,n=this.cropBoxData,a=this.options.aspectRatio;return this.ready&&this.cropped&&!this.disabled&&ht(t)&&(it(t.left)&&(n.left=t.left),it(t.top)&&(n.top=t.top),it(t.width)&&t.width!==n.width&&(e=!0,n.width=t.width),it(t.height)&&t.height!==n.height&&(i=!0,n.height=t.height),a&&(e?n.height=n.width/a:i&&(n.width=n.height*a)),this.renderCropBox()),this},getCroppedCanvas:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!this.ready||!window.HTMLCanvasElement)return null;var e=this.canvasData,i=function(t,e,i,n){var a=e.aspectRatio,r=e.naturalWidth,h=e.naturalHeight,s=e.rotate,c=void 0===s?0:s,p=e.scaleX,l=void 0===p?1:p,d=e.scaleY,u=void 0===d?1:d,m=i.aspectRatio,g=i.naturalWidth,f=i.naturalHeight,v=n.fillColor,w=void 0===v?"transparent":v,b=n.imageSmoothingEnabled,x=void 0===b||b,y=n.imageSmoothingQuality,M=void 0===y?"low":y,C=n.maxWidth,D=void 0===C?1/0:C,k=n.maxHeight,A=void 0===k?1/0:k,B=n.minWidth,O=void 0===B?0:B,T=n.minHeight,E=void 0===T?0:T,z=document.createElement("canvas"),W=z.getContext("2d"),H=Rt({aspectRatio:m,width:D,height:A}),N=Rt({aspectRatio:m,width:O,height:E},"cover"),L=Math.min(H.width,Math.max(N.width,g)),R=Math.min(H.height,Math.max(N.height,f)),X=Rt({aspectRatio:a,width:D,height:A}),S=Rt({aspectRatio:a,width:O,height:E},"cover"),Y=Math.min(X.width,Math.max(S.width,r)),j=Math.min(X.height,Math.max(S.height,h)),I=[-Y/2,-j/2,Y,j];return z.width=mt(L),z.height=mt(R),W.fillStyle=w,W.fillRect(0,0,L,R),W.save(),W.translate(L/2,R/2),W.rotate(c*Math.PI/180),W.scale(l,u),W.imageSmoothingEnabled=x,W.imageSmoothingQuality=M,W.drawImage.apply(W,[t].concat(o(I.map((function(t){return Math.floor(mt(t))}))))),W.restore(),z}(this.image,this.imageData,e,t);if(!this.cropped)return i;var n=this.getData(t.rounded),a=n.x,r=n.y,h=n.width,s=n.height,c=i.width/Math.floor(e.naturalWidth);1!==c&&(a*=c,r*=c,h*=c,s*=c);var p=h/s,l=Rt({aspectRatio:p,width:t.maxWidth||1/0,height:t.maxHeight||1/0}),d=Rt({aspectRatio:p,width:t.minWidth||0,height:t.minHeight||0},"cover"),u=Rt({aspectRatio:p,width:t.width||(1!==c?i.width:h),height:t.height||(1!==c?i.height:s)}),m=u.width,g=u.height;m=Math.min(l.width,Math.max(d.width,m)),g=Math.min(l.height,Math.max(d.height,g));var f=document.createElement("canvas"),v=f.getContext("2d");f.width=mt(m),f.height=mt(g),v.fillStyle=t.fillColor||"transparent",v.fillRect(0,0,m,g);var w=t.imageSmoothingEnabled,b=void 0===w||w,x=t.imageSmoothingQuality;v.imageSmoothingEnabled=b,x&&(v.imageSmoothingQuality=x);var y,M,C,D,k,A,B=i.width,O=i.height,T=a,E=r;T<=-h||T>B?(T=0,y=0,C=0,k=0):T<=0?(C=-T,T=0,k=y=Math.min(B,h+T)):T<=B&&(C=0,k=y=Math.min(h,B-T)),y<=0||E<=-s||E>O?(E=0,M=0,D=0,A=0):E<=0?(D=-E,E=0,A=M=Math.min(O,s+E)):E<=O&&(D=0,A=M=Math.min(s,O-E));var z=[T,E,y,M];if(k>0&&A>0){var W=m/h;z.push(C*W,D*W,k*W,A*W)}return v.drawImage.apply(v,[i].concat(o(z.map((function(t){return Math.floor(mt(t))}))))),f},setAspectRatio:function(t){var e=this.options;return this.disabled||at(t)||(e.aspectRatio=Math.max(0,t)||NaN,this.ready&&(this.initCropBox(),this.cropped&&this.renderCropBox())),this},setDragMode:function(t){var e=this.options,i=this.dragBox,n=this.face;if(this.ready&&!this.disabled){var a=t===N,o=e.movable&&t===L;t=a||o?t:R,e.dragMode=t,Ct(i,W,t),bt(i,k,a),bt(i,z,o),e.cropBoxMovable||(Ct(n,W,t),bt(n,k,a),bt(n,z,o))}return this}},Gt=c.Cropper,Zt=function(){function t(e){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),!e||!_.test(e.tagName))throw new Error("The first argument is required and must be an or