From 50ae8e2335b8b21639bd166c4a6b8bfffb29db95 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 8 Jan 2018 15:26:34 +0100 Subject: [PATCH 1/9] Pump version to 0.82 --- hassio/const.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hassio/const.py b/hassio/const.py index 6c8840f3a..ebf46b48e 100644 --- a/hassio/const.py +++ b/hassio/const.py @@ -2,7 +2,7 @@ from pathlib import Path from ipaddress import ip_network -HASSIO_VERSION = '0.81' +HASSIO_VERSION = '0.82' URL_HASSIO_VERSION = ('https://raw.githubusercontent.com/home-assistant/' 'hassio/{}/version.json') From 15a454159553d33ea15f6fae9d72f4a0b9bcd294 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 10 Jan 2018 18:14:32 +0100 Subject: [PATCH 2/9] HomeAssistant API token (#303) * Add a uuid to home-assistant * Add API_TOKEN to homeassistant * Update homeassistant.py * Update addon.py --- hassio/addons/addon.py | 2 +- hassio/docker/addon.py | 2 +- hassio/docker/homeassistant.py | 1 + hassio/homeassistant.py | 7 ++++++- hassio/validate.py | 7 +++++-- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/hassio/addons/addon.py b/hassio/addons/addon.py index 032a2ec56..7944de1b6 100644 --- a/hassio/addons/addon.py +++ b/hassio/addons/addon.py @@ -160,7 +160,7 @@ class Addon(CoreSysAttributes): return self._mesh[ATTR_TIMEOUT] @property - def api_token(self): + def uuid(self): """Return a API token for this add-on.""" if self.is_installed: return self._data.user[self._id][ATTR_UUID] diff --git a/hassio/docker/addon.py b/hassio/docker/addon.py index 760207143..e69512139 100644 --- a/hassio/docker/addon.py +++ b/hassio/docker/addon.py @@ -82,7 +82,7 @@ class DockerAddon(DockerInterface): # Set api token if any API access is needed if self.addon.access_hassio_api or self.addon.access_homeassistant_api: - addon_env['API_TOKEN'] = self.addon.api_token + addon_env['HASSIO_TOKEN'] = self.addon.uuid return { **addon_env, diff --git a/hassio/docker/homeassistant.py b/hassio/docker/homeassistant.py index 148e9c78e..9fff28172 100644 --- a/hassio/docker/homeassistant.py +++ b/hassio/docker/homeassistant.py @@ -54,6 +54,7 @@ class DockerHomeAssistant(DockerInterface): environment={ 'HASSIO': self._docker.network.supervisor, 'TZ': self._config.timezone, + 'HASSIO_TOKEN': self._homeassistant.uuid, }, volumes={ str(self._config.path_extern_config): diff --git a/hassio/homeassistant.py b/hassio/homeassistant.py index 6ee12289d..c36949e87 100644 --- a/hassio/homeassistant.py +++ b/hassio/homeassistant.py @@ -8,7 +8,7 @@ import aiohttp from aiohttp.hdrs import CONTENT_TYPE from .const import ( - FILE_HASSIO_HOMEASSISTANT, ATTR_IMAGE, ATTR_LAST_VERSION, + FILE_HASSIO_HOMEASSISTANT, ATTR_IMAGE, ATTR_LAST_VERSION, ATTR_UUID, ATTR_BOOT, ATTR_PASSWORD, ATTR_PORT, ATTR_SSL, ATTR_WATCHDOG, HEADER_HA_ACCESS, CONTENT_TYPE_JSON) from .coresys import CoreSysAttributes @@ -143,6 +143,11 @@ class HomeAssistant(JsonConfig, CoreSysAttributes): """Set home-assistant boot options.""" self._data[ATTR_BOOT] = value + @property + def uuid(self): + """Return a UUID of this HomeAssistant.""" + return self._data[ATTR_UUID] + async def install_landingpage(self): """Install a landingpage.""" _LOGGER.info("Setup HomeAssistant landingpage") diff --git a/hassio/validate.py b/hassio/validate.py index 4cd60ee43..0c56d2405 100644 --- a/hassio/validate.py +++ b/hassio/validate.py @@ -1,6 +1,7 @@ """Validate functions.""" -import voluptuous as vol +import uuid +import voluptuous as vol import pytz from .const import ( @@ -8,7 +9,7 @@ from .const import ( ATTR_SECURITY, ATTR_BETA_CHANNEL, ATTR_TIMEZONE, ATTR_ADDONS_CUSTOM_LIST, ATTR_AUDIO_OUTPUT, ATTR_AUDIO_INPUT, ATTR_HOMEASSISTANT, ATTR_HASSIO, ATTR_BOOT, ATTR_LAST_BOOT, ATTR_SSL, ATTR_PORT, ATTR_WATCHDOG, - ATTR_WAIT_BOOT) + ATTR_WAIT_BOOT, ATTR_UUID) NETWORK_PORT = vol.All(vol.Coerce(int), vol.Range(min=1, max=65535)) @@ -59,6 +60,8 @@ DOCKER_PORTS = vol.Schema({ # pylint: disable=no-value-for-parameter SCHEMA_HASS_CONFIG = vol.Schema({ + vol.Optional(ATTR_UUID, default=lambda: uuid.uuid4().hex): + vol.Match(r"^[0-9a-f]{32}$"), vol.Optional(ATTR_BOOT, default=True): vol.Boolean(), vol.Inclusive(ATTR_IMAGE, 'custom_hass'): vol.Coerce(str), vol.Inclusive(ATTR_LAST_VERSION, 'custom_hass'): vol.Coerce(str), From db8aaecdbe697c4ce456bf489d7bc29bb9b93b48 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 10 Jan 2018 22:27:47 +0100 Subject: [PATCH 3/9] Remove old security layer (#306) * Remove old security layer * remove unneded libs * Update diagram --- API.md | 45 +++---------------- hassio/api/__init__.py | 12 ----- hassio/api/security.py | 98 ----------------------------------------- hassio/config.py | 56 +---------------------- hassio/tasks.py | 10 ----- hassio/validate.py | 14 ++---- misc/hassio.png | Bin 42612 -> 37464 bytes misc/hassio.xml | 2 +- misc/security.png | Bin 37213 -> 0 bytes misc/security.xml | 1 - setup.py | 2 - 11 files changed, 11 insertions(+), 229 deletions(-) delete mode 100644 hassio/api/security.py delete mode 100644 misc/security.png delete mode 100644 misc/security.xml diff --git a/API.md b/API.md index 5123745bf..e6720bd71 100644 --- a/API.md +++ b/API.md @@ -4,7 +4,7 @@ Interface for Home Assistant to control things from supervisor. -On error: +On error / Code 400: ```json { @@ -13,7 +13,7 @@ On error: } ``` -On success: +On success / Code 200: ```json { @@ -22,6 +22,8 @@ On success: } ``` +For access to API you need set the `X-HASSIO-KEY` they will be available for Add-ons/HomeAssistant with envoriment `HASSIO_TOKEN`. + ### Hass.io - GET `/supervisor/ping` @@ -99,44 +101,7 @@ Output is the raw docker log. } ``` -### Security - -- GET `/security/info` - -```json -{ - "initialize": "bool", - "totp": "bool" -} -``` - -- POST `/security/options` - -```json -{ - "password": "xy" -} -``` - -- POST `/security/totp` - -```json -{ - "password": "xy" -} -``` - -Return QR-Code - -- POST `/security/session` -```json -{ - "password": "xy", - "totp": "null|123456" -} -``` - -### Backup/Snapshot +### Snapshot - GET `/snapshots` diff --git a/hassio/api/__init__.py b/hassio/api/__init__.py index 5601d469d..39b01cfc8 100644 --- a/hassio/api/__init__.py +++ b/hassio/api/__init__.py @@ -10,7 +10,6 @@ from .host import APIHost from .network import APINetwork from .proxy import APIProxy from .supervisor import APISupervisor -from .security import APISecurity from .snapshots import APISnapshots from ..coresys import CoreSysAttributes @@ -38,7 +37,6 @@ class RestAPI(CoreSysAttributes): self._register_panel() self._register_addons() self._register_snapshots() - self._register_security() self._register_network() def _register_host(self): @@ -138,16 +136,6 @@ class RestAPI(CoreSysAttributes): self.webapp.router.add_post('/addons/{addon}/stdin', api_addons.stdin) self.webapp.router.add_get('/addons/{addon}/stats', api_addons.stats) - def _register_security(self): - """Register security function.""" - api_security = APISecurity() - api_security.coresys = self.coresys - - self.webapp.router.add_get('/security/info', api_security.info) - self.webapp.router.add_post('/security/options', api_security.options) - self.webapp.router.add_post('/security/totp', api_security.totp) - self.webapp.router.add_post('/security/session', api_security.session) - def _register_snapshots(self): """Register snapshots function.""" api_snapshots = APISnapshots() diff --git a/hassio/api/security.py b/hassio/api/security.py deleted file mode 100644 index cbb56b0b0..000000000 --- a/hassio/api/security.py +++ /dev/null @@ -1,98 +0,0 @@ -"""Init file for HassIO security rest api.""" -from datetime import datetime, timedelta -import io -import logging -import hashlib -import os - -from aiohttp import web -import voluptuous as vol -import pyotp -import pyqrcode - -from .utils import api_process, api_validate, hash_password -from ..const import ATTR_INITIALIZE, ATTR_PASSWORD, ATTR_TOTP, ATTR_SESSION -from ..coresys import CoreSysAttributes - -_LOGGER = logging.getLogger(__name__) - -SCHEMA_PASSWORD = vol.Schema({ - vol.Required(ATTR_PASSWORD): vol.Coerce(str), -}) - -SCHEMA_SESSION = SCHEMA_PASSWORD.extend({ - vol.Optional(ATTR_TOTP, default=None): vol.Coerce(str), -}) - - -class APISecurity(CoreSysAttributes): - """Handle rest api for security functions.""" - - def _check_password(self, body): - """Check if password is valid and security is initialize.""" - if not self._config.security_initialize: - raise RuntimeError("First set a password") - - password = hash_password(body[ATTR_PASSWORD]) - if password != self._config.security_password: - raise RuntimeError("Wrong password") - - @api_process - async def info(self, request): - """Return host information.""" - return { - ATTR_INITIALIZE: self._config.security_initialize, - ATTR_TOTP: self._config.security_totp is not None, - } - - @api_process - async def options(self, request): - """Set options / password.""" - body = await api_validate(SCHEMA_PASSWORD, request) - - if self._config.security_initialize: - raise RuntimeError("Password is already set!") - - self._config.security_password = hash_password(body[ATTR_PASSWORD]) - self._config.security_initialize = True - return True - - @api_process - async def totp(self, request): - """Set and initialze TOTP.""" - body = await api_validate(SCHEMA_PASSWORD, request) - self._check_password(body) - - # generate TOTP - totp_init_key = pyotp.random_base32() - totp = pyotp.TOTP(totp_init_key) - - # init qrcode - buff = io.BytesIO() - - qrcode = pyqrcode.create(totp.provisioning_uri("Hass.IO")) - qrcode.svg(buff) - - # finish - self._config.security_totp = totp_init_key - return web.Response(body=buff.getvalue(), content_type='image/svg+xml') - - @api_process - async def session(self, request): - """Set and initialze session.""" - body = await api_validate(SCHEMA_SESSION, request) - self._check_password(body) - - # check TOTP - if self._config.security_totp: - totp = pyotp.TOTP(self._config.security_totp) - if body[ATTR_TOTP] != totp.now(): - raise RuntimeError("Invalid TOTP token!") - - # create session - valid_until = datetime.now() + timedelta(days=1) - session = hashlib.sha256(os.urandom(54)).hexdigest() - - # store session - self._config.add_security_session(session, valid_until) - return {ATTR_SESSION: session} diff --git a/hassio/config.py b/hassio/config.py index 3df086e07..6e50f0bc2 100644 --- a/hassio/config.py +++ b/hassio/config.py @@ -5,8 +5,7 @@ import os from pathlib import Path, PurePath from .const import ( - FILE_HASSIO_CONFIG, HASSIO_DATA, ATTR_SECURITY, ATTR_SESSIONS, - ATTR_PASSWORD, ATTR_TOTP, ATTR_TIMEZONE, ATTR_ADDONS_CUSTOM_LIST, + FILE_HASSIO_CONFIG, HASSIO_DATA, ATTR_TIMEZONE, ATTR_ADDONS_CUSTOM_LIST, ATTR_AUDIO_INPUT, ATTR_AUDIO_OUTPUT, ATTR_LAST_BOOT, ATTR_WAIT_BOOT) from .utils.dt import parse_datetime from .utils.json import JsonConfig @@ -181,59 +180,6 @@ class CoreConfig(JsonConfig): self._data[ATTR_ADDONS_CUSTOM_LIST].remove(repo) self.save() - @property - def security_initialize(self): - """Return is security was initialize.""" - return self._data[ATTR_SECURITY] - - @security_initialize.setter - def security_initialize(self, value): - """Set is security initialize.""" - self._data[ATTR_SECURITY] = value - self.save() - - @property - def security_totp(self): - """Return the TOTP key.""" - return self._data.get(ATTR_TOTP) - - @security_totp.setter - def security_totp(self, value): - """Set the TOTP key.""" - self._data[ATTR_TOTP] = value - self.save() - - @property - def security_password(self): - """Return the password key.""" - return self._data.get(ATTR_PASSWORD) - - @security_password.setter - def security_password(self, value): - """Set the password key.""" - self._data[ATTR_PASSWORD] = value - self.save() - - @property - def security_sessions(self): - """Return api sessions.""" - return { - session: parse_datetime(until) for - session, until in self._data[ATTR_SESSIONS].items() - } - - def add_security_session(self, session, valid): - """Set the a new session.""" - self._data[ATTR_SESSIONS].update( - {session: valid.isoformat()} - ) - self.save() - - def drop_security_session(self, session): - """Delete the a session.""" - self._data[ATTR_SESSIONS].pop(session, None) - self.save() - @property def audio_output(self): """Return ALSA audio output card,dev.""" diff --git a/hassio/tasks.py b/hassio/tasks.py index 2ca22ef86..277064781 100644 --- a/hassio/tasks.py +++ b/hassio/tasks.py @@ -1,6 +1,5 @@ """Multible tasks.""" import asyncio -from datetime import datetime import logging from .coresys import CoreSysAttributes @@ -22,8 +21,6 @@ class Tasks(CoreSysAttributes): RUN_WATCHDOG_HOMEASSISTANT_DOCKER = 15 RUN_WATCHDOG_HOMEASSISTANT_API = 300 - RUN_CLEANUP_API_SESSIONS = 900 - def __init__(self, coresys): """Initialize Tasks.""" self.coresys = coresys @@ -55,13 +52,6 @@ class Tasks(CoreSysAttributes): _LOGGER.info("All core tasks are scheduled") - async def _cleanup_sessions(self): - """Cleanup old api sessions.""" - now = datetime.now() - for session, until_valid in self._config.security_sessions.items(): - if now >= until_valid: - self._config.drop_security_session(session) - async def _update_addons(self): """Check if a update is available of a addon and update it.""" tasks = [] diff --git a/hassio/validate.py b/hassio/validate.py index 0c56d2405..71b843d81 100644 --- a/hassio/validate.py +++ b/hassio/validate.py @@ -5,11 +5,10 @@ import voluptuous as vol import pytz from .const import ( - ATTR_IMAGE, ATTR_LAST_VERSION, ATTR_SESSIONS, ATTR_PASSWORD, ATTR_TOTP, - ATTR_SECURITY, ATTR_BETA_CHANNEL, ATTR_TIMEZONE, ATTR_ADDONS_CUSTOM_LIST, - ATTR_AUDIO_OUTPUT, ATTR_AUDIO_INPUT, ATTR_HOMEASSISTANT, ATTR_HASSIO, - ATTR_BOOT, ATTR_LAST_BOOT, ATTR_SSL, ATTR_PORT, ATTR_WATCHDOG, - ATTR_WAIT_BOOT, ATTR_UUID) + ATTR_IMAGE, ATTR_LAST_VERSION, ATTR_BETA_CHANNEL, ATTR_TIMEZONE, + ATTR_ADDONS_CUSTOM_LIST, ATTR_AUDIO_OUTPUT, ATTR_AUDIO_INPUT, + ATTR_PASSWORD, ATTR_HOMEASSISTANT, ATTR_HASSIO, ATTR_BOOT, ATTR_LAST_BOOT, + ATTR_SSL, ATTR_PORT, ATTR_WATCHDOG, ATTR_WAIT_BOOT, ATTR_UUID) NETWORK_PORT = vol.All(vol.Coerce(int), vol.Range(min=1, max=65535)) @@ -87,11 +86,6 @@ SCHEMA_HASSIO_CONFIG = vol.Schema({ vol.Optional(ATTR_ADDONS_CUSTOM_LIST, default=[ "https://github.com/hassio-addons/repository", ]): [vol.Url()], - vol.Optional(ATTR_SECURITY, default=False): vol.Boolean(), - vol.Optional(ATTR_TOTP): vol.Coerce(str), - vol.Optional(ATTR_PASSWORD): vol.Coerce(str), - vol.Optional(ATTR_SESSIONS, default={}): - vol.Schema({vol.Coerce(str): vol.Coerce(str)}), vol.Optional(ATTR_AUDIO_OUTPUT): ALSA_CHANNEL, vol.Optional(ATTR_AUDIO_INPUT): ALSA_CHANNEL, vol.Optional(ATTR_WAIT_BOOT, default=5): WAIT_BOOT, diff --git a/misc/hassio.png b/misc/hassio.png index 22c01312534277c4d02c483e171091ece343e59a..3ccbf7ae941c874face5f55e87019f7d25efc1a0 100644 GIT binary patch literal 37464 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 literal 42612 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 \ No newline at end of file +5VrLcqM4FP0aLzsFiOcycefRVTPVqfFippdYKLYmMvII4cd8/QiQDEKQ4Bicnmp7Yevqybk691zJnoH55vDI4u36d5ogMnOs5DADX2eOY1vAER+F5VhZ3DCoDCuGE9moNizwv0j1lNYcJyjTGnJKCcdb3QhpmiLINVvMGN3rzV4o0WfdxitkGBYwJqb1T5zwtbTaflRXPCG8WsupQ8evKpYxfF0xmqdyvpkDXspXVb2J1VjyQbN1nNB9wwTuZ2DOKOXVt81hjkiBrYKt6vfQU3taN0MpH9JB+mkXkxypFftEdL17oWIEsUB+lKD4/+RUVXzJSpfdigZitoP4EBUl0KJuL4EpalPKNjGpO4tvq+Lz+0LNI9ZWTVVVSFhOszr7NeZosY1hUd6L7SYarfmGiJJdrAYTMqeEsrK1ABv5EAp7xhl9RY0aq3zJ9S/k+B14SdMOMY4ODZPE7xHRDeLsKJqo2ghUXeRe9yLp2329c1wF9LqxaXzZLpabdXUaunaY+CJ91u0/YPjvW4oLvy2OGUebC9GECVqGyy40gQ8ikJz8NS6AwUAAnREAdA0Av1L4itilyEHkCdJfGznXRM7pQg6MgJxvIPc0N1ArQyEqehTUO5PLIUTdXF6GnutZ42Do+p6OoW9i6FkmhN4IEEYGXigROiSLlPE1XdE0Jve19U5HtIEeOmD+V2G+CTxZ/KGqUrGwqs5TxR9yhL8R50epwHHOqTDVE/9G6VaO0Qt1RnMG5fKlyvOYrRDXtknxYG+6gyESc7zTBfgScFUuMTa6zhvoRiLxaeFbFp4Rw+IBELsS6O5ngR705hPLWuHPSzBsv0gw2gnEIt8itsOZCAlqAqbqnuIs+/a9N8E4mZe9SUe9Dez3w5YRnuZz369SDT2gJR4KE3ecsAU8PWyBjqzDDjvilj2GatrOFNyyG8RSUezELY1XZRgbSqJMMIPfFqcCYYBEbA4MlfkBE7WKQVyz1WmkQbbgs8gGpolwmhd0J7Tkoy62A9xAzIe6EKWJOZgwNobqTPjn80sc64Sfpl0qHjSSKzHKl1vx6ALDIppdJ2LFKHyBYyWresRyOtL8U3DS0nx3jIjlX5kr9o2l5wI3dhhemg8MpFWDLilNkcaVN9NmjRHAZITal9dnhDuJ4kifNZK5kRAe7tC+awqYs92Jzx922Kdpk2veTHzAgRoIvd4832d9InK52zrx/rjrrqE1pqduk4SmmeGvbB1vi69bRiHKsvd1RhelwarzIF6lcleHAMFSy/EDEDnA90InDC0XTJRFd2mSY3umJkUjSJK6vJsypNWltuRcmtTJsNck2Sgn2/FClez6THF50JQuV2ei9rlJjVDRUnZyGjfnZ45TUdkYp9wUp6cZtk9Ck6CQU/OKUvEz35CqAbgrqIChQD5eIvJMM8wxTUWTJeWcbkQDUlTcnX610K7Sy98t6jFuCV4VfTk9j+b1zXv7rl5OMAKRW5d4oOMSD3SklqNcwZs0HkBSK9BY6r7HUtvk6BA6XkXzztTxQYqofkH8KZIZtZgGA/f7vRm9CcHbrHSDZCIkNE8u1smrECjS45lrdZzOgqnuk8DbN+Fyc3/gOHYmRybK5RtaW58Bq0U6vWo7jCauSRO1WydXUre1ZdrRdDwJBP0/01lP+bJXCWHMLqefX7466OcV73HoF4FWOtFFv67r3FEULJiIfc19H4yZZU5P2WHs867BvsFu9AySPGK+npoefeqE7MRDwTT0cNWh9Sr0CH8VcYp8naPBZdrk/xraZP4R4g+0LY5alGHUf4vy/yWfusifgHyiWP/5rXJG/Q9DcP8f \ No newline at end of file diff --git a/misc/security.png b/misc/security.png deleted file mode 100644 index 8343b0e8426a16cf7ba66c41004df63354ffa96e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37213 zcmeFadpy+J+yAeFR6?b)%c;FPXd@~yInJ(j>4b_Q36+f^GjbXXGnLBT6)K^eW|t!4 z6w+XfNs=U{au^zOki%e@8HX`rj^8(JlWE_l&-eb^zwiBfJU;(6-fOM*dS7d;YrU@L zb@j(lds~&I>y|1gD5xAf@au5}g?SPM1x5DaMZmx8#ynW8ps-%y;IF%#!qbN-#qnex zG8bVs`Ge|85Kgep1vUy5`Ws{w=?BeDpR`Ps+HQNJ5~MFz59-@as}G&*aF4RS5TlwE=DRS+*&SDQ23$Z zEJvCR-}ms#Ku>{?fKlg&a-gLF$-9@+a2hie*G?7%_6=Z;0`s`8Ltw*T*hDj;HjDC~>9w z;RxiW~OtF6l~S?h=uYR4XZ5>S@;$ z#U3oDCF*vXpiiZ^>hbJG>Kv5VRcyW*1Lv7B!4BP}c12f#vno$TQj2E|?(K=K35RlE zTGmIv9Ub>oC0?2<)N8;@1K@MoyN$p_SrOJ;vACE`M2p;NYE|N%7beCET0ZC$F!>fM zMGBX4-Wu@XZ+IA9qxA;9UbFTO?#?@kKGM+^XLoZJC=_mNq3e3GY3cZ7 z6M$i@`UIHQhJ|1Sh5g@5Z04``0Pl4AD)3oeE(XSbX$3Hq|J(oYj<1^J(UxJIx3vYr z->HgUC;}7gRbs>ej^)KXkT2A0(AjwX6xX^&_hkV!y&~?38~#!+iMJ4?fQ=09H%o?c z=il|Dsf*@y4K+O=pQvn8K7fpN;3x(D?ct*V1ts}y)N`ZqZ5~}Hg;dNwbz%=bz@3FG za%~R)9rJe0)yES0@>9i{seV#TA~e!1FJB*0J1ADPYc_F@bsbMXsdPo^*EOWLkx;G2 zU(i)Wec|lt^!ZocEX)=NmNGFSb|n@l3utyT#I3u;iN zvf)ELV2<3$$2ohR7c@3~ycFVKX?^GeB08^fc)rbcQzEN^VwD(|P#n>GGM0&(I^pqP zb{;OJk%af?XscV&*L0ZvYDZh`>?_h(z(Vf{Rt*xvE z(qPpe^IVE1rp6f`N#%0imNeAey&FcYI(BSTB@U-aQ3%vLjE$VvP{dv$QGjv_A?rkx z4HSj&sHo?2eyBD0FnWU3!)21PT0E=5AM)5Vw@D-Vn}WZdYU|LEHl`Sd!r?g%Xq!PM zsVGd&z{(EAfK^2IXlj5VW%l!zx22iLy(Fx;>&>SE z>P2yJ=x(>i-&C|NH5-v_qLfhxhIhb7llH zbxpJUZ!PUl-c>>>Q%ju>bD(yl=FY+EH;u8=i)VKBcrVwl z+Qcm#31GRMh0a~x?4#?h;P!GGf^pVDO84jlM@WAb z;h6h_&J_omC5Vq5-`XgCDD*gi))WEePnR3uq_*T%QSRNnf?7PMLXY=k{AUA5jw%~pG69l6^-LjNIp~OKI=$*Wxk{)@O%dP|5Td4z!{Knj#9(4IQtT(Ulm3J{ z&&j!r4*J$Ku;lI#SoxCTmu&fwa5#O9DOp6E-0S{dZp{C!UHxAV|AWWi|LX~}1U9HG zPEJjygK|rta4Ezs&(OcDzTdIkukGpQYSw9;dY4~AU4aFl;_Us~S_hKTwHuFG8``#a z%dOq8>^%`6e6G*cFm@a+(8gaUc#nAP70=Yd&O37JlKfy%*Y3c8Ea~?f|UudIMj%waCeFku+Ps^K+ zKJ@f#xU6OnFTd5T+4oQv$=^*wN%4{?hHkWof00-EEI}8{@~98VX6&Sl1|zqPtW$32 z#0+Ibr+suJvSE88IZ-^sm$RtNqntzM?M(UFV|$D?Rbq;x7EyGh#stwL7(wg|7EdGs zLnF8qty%tVPAk!cmoid`fr7~$4^dnros!OTPxHk4?2>~n-hssRnf%b+xJY4k?ASv1 zgmb1NmZQ}L64BxB9V%1?JA}3jEZP==^^x4rF6xwQQYlr`T(<}vEyV*l z=<+bWBka(QQEfu&NE;T@_*=}`@SXHGP@7~IGb~jo6w*!S6~@l#shP7Tll&5zUG0d9 zr=xepo-WNnXRa!zEI#oev}MqJJ!_i1EjDjcq(d~ssrf03uYm1UK%+`*CX8-_XB>)U z%uO6pBOX3aX=bDY(2za!BD5EKKD2Av2R*u~>+{Z(!FarK`OLch1zS&yvuh_7!{>o! z9+>`UFC!~>M)a36UYH}dWZtuH&8K5h+|mk_@XEc!nV*B1eeKzew(R*+!E)P#%w?5( znOSc~<`94N6~8&nz+#!}@BZ^1&M&3zhq&fx+e7`6yjs*U!DEtM>g2v-80eF1eJ9g~ zPkDRx2_%k<_`9L;eJ$T^M&9_8MI)`k*p{?I`&^ktl}@g3N06pUC?vNNzcpGC=4_s< z5jgAMKf4v_*4Bq~z-c_PE2AwaN|pG>c2gALGZ!d4FO(?FM?2tAAxL3_Q)u1`Be?Cn zRKMWg=$u7Nfp3J5d@CZj7s$mZCi{3AhP{s>}f^fDrdVJgJ9$NmP+{yq*O2eW$ z&bgOyThAI6y`8zuD^uIVWok;5%nq|d>Hxrsc{*Th#cP1MQ zb*kc(ZA%4`WHkAXH!MD$1!pyzZ@ocRdkM~*TF<{MD%i>=S88dwQ?#rz5Kt#1(1L$7 zU*IFPoS3Kp?x@a~cg4K)1e6u2Mi^bXxQZQ1JNKDo3*$;E1%hOwk#2D(eEIsWZaH=LzWUjMF`fH^c z`|^%WrF0Tqmwe`fnsn5z`G_8WWqNC>FeRCT66f{aLp?;-qktabXL-M6g8IO`mN~jsp_w=Wp=`iaW z_D1PtS}v$jvrSP#aTpzwmdF5Xw!qi%sZmaKu(?P&2p8cQ9X;5cFY2XZeTM<}eXu3R zK_KAzM{yD)UL};5*6l>SNOA6f`>x7e{48+2moJwm325NvO9~_p@73`s2mONTo4s2VZ>Ck{P`jYj076L^5Sg$oRs(m}ms@H?*8^~d22tr%U@ zHbv>W@;00^#Z~NenRZdLQN*+>w1{Y{+w4-F9{O8Wv!&N~8IxOnCc-I-$S z8E?ZjOYS5gnA_5EqMSlT0n;saSctqdeMz6*lXmbT$(6XDTl+wEDy|{IsZGKpiXWVB zL8Tq(qw@C3w3`YNuojlMcxfD4JG`BZ(x6BoA6a`0>aU=}bv|-@T=47wA-L{y0i!ka zP=A-ViF<#q)&AyHXaV^*LteG+PqUZC_c&_zKHUDvAtk*dBa`92l(5L*!lW3Ib`^5? zMTg^$=@))q)=#k9vu%y2w10coxwTV31MF(>ud_1IgHXJehRwk}g?^hoTJS7D%bd)1 zSR_S83_cW7ExLZ<=Sa-fHdeB2m(S`<{ik4&<}D4v@FUuLbUl8_7vi}!4u#FjBqLFc zL8x7LcxT(dUh#$+)Ub|T#k&f2{kJFG*xfn-Y+lQEw@%W^wZjEGhkRy{Z{%4ISPY%s zYjbc=q-W1!61}1lP-C#f+$bSZYmN|x<-Mjc$4l|PeR94r)d~Jv_s^bxs*8y4X~-&Hnm%>zJwdJOY-KRG0X<8QpOMAe$mNQmtVZDPLNG`#p_7D1zEXaE@ZN2 zmCrDCBnI&WUA4C9^~4<}-$5*qOvHtnk>+*ajqoVpv%*|vUqU-UES7XM!S_Q~wF>j> z#p3?<=x5aETIB^>8&(Q!R?f~$-%4gibYHo-OKDoLNoqq{>*H?fQ~k!;yxx)ap4PU> zMMY#}#>Hbs_8z&gzy*)IQgn6je%@-!gv31EV+YsXJ&y+AG#?Jm^3~#$J6Gb zSOAD{5T1S4t^T)me%E75akv3H4}VXS!Xj`K#nFzs_*|fAjVn)kpoo@VNp!8(Oa8&z zHCi`eb}0q@!EIK3olEz_^sdCk__N?_P2Ae1j){>Ssg+&Y?MBRO6c@iN2IWl2c~(#O zLAFc|=ffvG`dS|jbyHY3dO%s`$i!5;+bk%iB^qs0Wh8A#`*I5pomT^ne2Vg+=(!{$ z3X`wQ=@i)Q>Y=9`SLwgd!;fGWyn*cx9^Pyk;J&%VY@YckLJO#FZFQlO`Bd4P*A3BG zT;gKM9Zf}Tsj#U?$RAoEI=p*!nN+-uWJpd0Jf!Is?dQ;74OpK0Z!{&@GCbvjCtJ5V z*4HeNG%l2g%P$d2WL6L8vT8gY&lU}rbB^v1Vq=w}$D2Tr+@T~Jl*CG~PEHKcm_mGa zB+U43U$>@D1s=V|DiYQmsDhP^&F61Ygts7JgPKl-l?MT7Z6U6^sSzoa;BUNQ|K;@q z(&<<4>JFjUS_15WLoAj(+9vuFsmOEWt33IaH#Xh;PLAW8`wgH*kC8Ikz-##0@&nbW zj+zPrL{2%WXIAa}|IE4juPp6<%&pwP20S_M+)Di9S^p&O0_QkPN&8@(=Xq;5^IDZq zvV3;YdAD<^76bi8(st(gEzD|NnbAB51|)S%zFWZLQ{~ll{l~I#?RI5p9!_=wpCrn} zqvI`hWW|t@6u_-(JOrtT4gmB3R6CKfqw%EFEzS^*tI8>2v@-Rw^_alLoIehE;y28` z^B`S_Tqf(f8E_NL?kC<(S_jG6ZDb00*wnZVQYZO2GmMdE6c|NRc)>G)IH4&#ssqv`D4PpcfixtbI8Mf@3T-fin-R}ZZ`)b-_kM%mN?P?zI9egFkJG~eb zp-TKvtUTSVW6Kgr#swjAzHIb`T$UPHFLo%AF^PEZUj8JOCX5xdIq6@IecQroR{46O zEEeD8rbmiDPNiG4I&ggdkPVg?skS!{5Hb7YkCVL4^erh?B(=WA=}xm+fMbMQq*{YE zm>no!1uz5lHg|P7i{<%LT2J0W{e;~tZ}a~^1g7v2m9S`edx>g?j}L*=Y6IY3f@y zr0p?Sh)bnN{DLVeK?2{V90CLtuSveJ2Aoc!r%JNe4p4exHPjOC;=rTj`cEGi_$|Z^ zm9RIHzya

~DR7R6BZ7P^8iRfk%{0A<#Rk&^@nMFFv{)lhNt!+QQ9MlF)kPd5-pQgcrf-_jciEi$c1Mo`2p`fLbk9)-?{?-+T z(z~!bWv7k*Qy`X`kl97rs8A0`g+Fa=#imch!LAn>KE)d1!ChZ$OYphs9e!Zhs-;E%(D#BxMyE+#00g)2{$O*pyXJDzMr|!!!4zU=#qr#4pMC|1!UnN zUBZcD*0sD%p{k_Z-2Lr1zx{qA%qHG`D1}GbKkFJrFeBAoc?qr^Jh8FcqGN9W=B$QA zRuR|~{ld9InYAARKOs0RI8csu;qPD$Qd3w34h4=doivr(t`SrxeIqMOV6OZy3#leo z_IySwZ?n=}Pf@qy`Q><^E(pvxp9b-_$=4uxl~o+X(3AGkG|!SVCS~@6KV%A5*O){- z30z{sSSYRg8uI~O)_r+X(n3miCg&E(!Hy8dF)qs-nb<5|+TURjfVN~J5R?3(_}Ptk ztexAea;uy73RkrF^T|Gz;iy<=pp}`>%xHZ$>bp!*2lQtnI!O=Axc9!)kb&X?F=3MJ zoH-yax!mMX^CBT6;o`(^<%6UId-SfgP!yEXMMq1;(w~?Ib8-;<>dcMW(0c&Q;HfM7 zfK5zy0g)W|YRVSugZ{8~pg$VrE!&fVnc{IGIHvv2PSNAxH(>TF^$^>6%|BQg(StQ* zf0Q#M=8`PgfUd1kaEF<`9?$A1vW#NyI#wLDA~vH>b7E?O%<& zHgZYSu0Uz}VcE<95^{aL?R;HlEigl=rLg#R`d5Y8@Wvjnh!Z1Wpd_~Yjt%tGC*T-1 zNKv_PiAKwV%$AUP;#AFZf5VNwUlnScwZs!SwU34r79a(KdO+7GtjE^%_j(wj)1OV( z+%=i)zf=gFsLQV+L|uTZNnm%UCG&E0+-w?)ZR$ zAb4!Pb7%$L0dD*(QFsGe_KsrxMyW-KrwC3bR^~$ujlU^xp#v4pXc-9Hb^3g17pAEpFDY%5iQ##!wmrQh}A`Y06uvU(5`DeryryKSOH!+Fvi3}wf`Z|`D2~Q8)zS=r z=Ay4DTq)W&YA+7g1DLS#YX*waZOa`N0?1$_d+QCX#oLx%Q#SH&ze`nHEJ0~p_kEFD zFHM)K)4A)x$&@=q#sDSu^3bWRd||h>wupe&tcIQKIb(Pm{xBW7_?9(wXoOrmDCV$X zKWIg41-P*je{kq1-jAJ&JFba-<>Z{nJVJvl+o-9Ar-R2Jdm`g&ZdpskXQl12*jQ!> zDxky&K+#Tb`Vu3>N<2iH_twXtq?KzK3y)mbs8wZSZ3yQ2$GFyHTv)sewDRjnHu2SB z!VUQe(QNcps743C7hWG}t=bG|ZoD%c>HxK8iaXBXspSyFobLB@UGsGxEGyXbHoX{v z#)qsL>t*7RhvMSCX}m9~{3OSLWeu*?K^@>YXdhb-%#T4>9i7B~z$bFFQ6U^2Vf7E@ zD{cd`nEyI7#&ZLhgt%TR$ciC!pggxD_w4}?xo0a~)Fd%9KDd_6FB;bd>+$9(w6g^@ zMK#whzVX~vuJ9q(fT!Zi(W(L8C$dCW?$CJCgG{1-!}P|60jbaOVvdr6!r@;zz^@7$ zHm>?#%ICc;RYDzG6{gnP-5&ibd;Ta?{J`xM!)hZx zY#%p#NCm<_1d<{1McUJne5WKbEy%e^qGDGjjq?TJXF~Sf6Ot>N84n6;^CRs4M$G|w zfquXvz*D=2Awva|s62@K8q7NFtNxCgS`g!d5?-KdPXB`{xL;;{`(-*|oh*0*D#GSQ zB0f3(__@8W|J*N?IT<>e2JqDo_po{B`>DRXE@)=MoB9qb--22$CCaeqy(~i1#Ed?~ zanN~#I?Dki-N?;Sb*w=JX&18ly&}Bl0DWvnRW91<6lx>Co|?8O!ZCx|gPt;dT_)ey z${{<4eDcTva9?k=D?;Qoe&Mb<-%M{jqw7Asw>m9Y7EN|{0M@MI(2}B!c%X1Nkrp5>Sr|GnB5l4US_w128kf;Am zYWw!XrS8=O;f6f9+tSwAlMOg;NPZU*qyQ=eFnmBX1Uvz7t=!)rdJf%3YT{epW^uwJ z`O$$LRk=>f)M|3r8JZ&URC1r>L$q-|Q3a{W)eV%Bdxff~HzXkZDem^*cO?oxP2Eev z08Sn*ar7=jp!uWvLmLnuH?>++RV4q33TxvE4Nkw73ud@ivEI(d^*xlEQIGKQ8OxV@ zznh{^cz4u4Q(*4n+z7D>@8yJx1>AuN4P%c1v5=>~lpyc?Q-=0Q0O`rIIw}{3vy2u@ z9P}h0%j72H4q+z7Cr=H&^@KZ1Ptf7ty%~S3ukj;;A}3JG7~B6bT;QL4B+L-8-}an; z4SNP;`p*#J|Hgy`t>C^Wdk6TMrZEiwJWLV0%wX_3X%4P=kSsr8WlY48&jh`9-IecM z`v*zyi;mqr+2;N5(UzV3;2aYx2|V-RjO3D-7rf!-fY3mu)1BIbcf4GdMs+foU%-3g z9@vywZ*r9~*tRaeG2Od4yvY@n<9o7SYuxNtsMnHcl%4FJe)uVT$NE&iQkTzStny=E z^Mqh-G-Wbb2X=pz{>j##ALX~HG9K=S96KL);S5&eRLHoo0R$M-)7FVA&miub5hZqI z5wy1}ZuW4OC0B?oL&iUgtm6w@N~&B~;~trSgrRz(#1L9EF9QkOf(;5* zEKiuD(tLLrpI1C*(#-QyUdGBPDBj0bMMgz!j ze+C7*I&+(=8B^_(CFuYW*j`)_8=fIbj%d&rKj3YeY%+bNS5WN&Ggbm<-xHE$B(o{k z4XVoWMsmnQxy<{3#M1jB6GFih93ClJT-imN$WFFNCI( zPoPDB$GaJ%xmHKzM0s68pGlg$oYe7%nNi90@eOZm8qtY1;bw^L1S^;!1mtJ5Bb^r( z<`0}4zNym)WMur6h69Z1bpa@rM&m&%Dl9|5V|Y<(FZE$2eswIt38Ij*Bj6Of;H6@Z=6}~%)wqdCqZfRf4Kj40m z%p8@0000lfFsJ$NaYQJ->vPDIOfdR;Lee*NMYc?2)A;Xr zw*RD5sJT5~;*!Wu_5I5nq7iO+M_9g|tDX!w`(gG#5)Gf|J3VeZ@1K-n2zn`~AG4B; z&e@awWS&(N$}x9~zZjCD&x8*7^gJrmH^pI}5RGex>c@`A{&tNk%yESG5=UXpZ1s^X z02nwag?C$XsU^oDYxHkKhqKX|oryqrwn3Oz32{roWhvN|neTYE@upVeFW=g6VXyxk z9@_<|ibl^hArz^-Cu#z(zT3LEp0>HMLlNm1z#B{KGk*K!%?mIb8umR{NOKzew7^Yeqq* z$yY0YeC-&SGH(2?d9tM;VM-MRFPAuRh>`5KWARolN#aEQ=gML2)hF)O#d&X&nflFq z_}D`H9lA@Yc{jVaA=+WFWTXnAv?6tgv#{pciQW^7g1!-dD+2xl;_n`d_{4&->gOw9 z1!;JH3|(mq`+^Pw#F)|2kvpvwjDvj|B7EtG*do{@!PNn6Ihi)0N7p5CXS`z(@0_kT;+5y24&& zGD*LQdMZ@^7K$6Kp*=n1a3P&StVhfcZmGJW1`jSvu<C|68nf6V-Rd>`ONGgDQD8^}M+p@l zKy1c|u zk4Wen0J(TG1}q4+3UfxWY00OEL$o2?L*|AdV@DhNJ9`7At$+NG(gQG%2c|R7oJ2ZO zIzka0@_NY=+d_us93)GIrSHaCA?(UqT%Rq)*+h0hE+|@cYdTOk1 zU|c@kaqiNWU334dDU|>D!;!6Ij1gM8$Tmj<$T6!rX3EsR>2i|jm0}I*{>VefHo7(6 zXpz^C*y^%>SLMC{;tZ|4eh=NO6sf&&Y^sNH8C*gTn8gc0{O6D!Py5AB+W2FTdIkRib7I|R)vQ7-O{_l>b05nDG4 z;fn*9LE{py8gP}~0oOb`Pa19!Liz&Z;6cnKp;L)9+5jf+hU_)UG3fum1C|_+(m2hz ziJ008sU04}^nN`Yo|e0pZOa3an8Do8ikD9tkt!H-UVTSXddPIYp3Y74YT0o zG*?zy1YZul8+kdryxuCD(m>Z8{u#YYA|9KJodg(@Tp(Dd#~)`4=gGS3Vp4QpIHM=*-^HyEfbZi(Dw4 zdJ0>g+3nEVE`K5aN9aPsp^@e)2c#xV7$@@MqDnvjd0Hs#5SbBvIKeo0!*xQuR_3k- zKLx2gp-7<^!x*WPJJDU5J5><6z#z67tTgL_daH6(i!PDe`=F@Rm8>`B;?ltu+B0yy z3e4=LZnJ-2f%GF!4>Wnu6PrQJ%Mr3$O(z)bU^rea8NtVT_87;AlpfEr0IPxqguyay zt^X*SbtA+pyYL+-G(!{&3vW^80r>nR?5#;;aAvp4#YLdWwWms@k4|M&>36^9+C0If zb}QzEE1OS<01rBL^mr=DtVV0dx-!-x^r@xFm+a3Yqv+^b&Cqc>XeDsZ$vf1>sTAwMem9w{ zdm&cuHuL9qCX_Q#$+#dy5T46RN3P5TBlEQlh8# zk@PMQPBO)ej+$I3T_>A7pJVJ|bYTHU$naf#O8QaVK*R86HCT3W@Ydl%dDMCo42Yt) z5f!7_V`R&;;NKB){+=}ajrs#J!{5>X8l74dk@aXx2pkS%;map{PUknm6G9fyM@K&v ze$5D;UW&0?q=;Y4Q`@Yj;~!Op6i0>#ZfY1$NW_TM*LaLmKk<$GXHe*A-VpY8Ia7}K zn>sv`K>WS_wVSw@FS3hp& zO%Z;=b8|z7n!HNq?Jyvw9jd!#yV@vJZkXgY#QviPgu(N!GZs8XJR0;E0e~Gl+9D4N zyhaf2nI9xY1L=TojSL$`igjb zShq6`eUHLtxQAb1ZF#xYt6nh*Dmz`q{ziPP*Fgi?)n8eqIYT4!r9d8KD?utj^p(v& zJ8G^sdjtfXFutsk!EAoLO0p=wCDw@B(HE5`Is@_X6515kimrOF82`)};9hSIXZI5*JI_z9sTi zMv_lX7eY~kl|G=p3Z99`w)Oky$B+`Jg^6@e71`}JFAqqtX0dL!VT`c6L6%}zkmo2s zzv1fnrv>zCdhEFC-w2-F+pwV(1aKH&LGBbk+(n?^Nsx3T1cnlBVJ6c(SIlV}uFnS& z4`D>)eog}AW}1A*@S&rqb-i|>kqM}FmqpBy%HpcqG6|rq%`zg$Gco-o*8Bl`+uKBX z3ZRDe$y6l(BwDQ${9Fz$dSAdJf~Ctm5+5v<9F*xv=@=f#6V(Q%MdtuGkob`Q)f^c` zbQ(i7;-EyMwqih6bn!5-Qj{@709+>G2C>~=Uj8aGeN9?M&#R{@cFhP$e{NYS=G3YQ zfKSc^x}AZ_(B(50W07r)s+6Uyei#{*jx`z!Cdn{vivxHNFi;%VuX~BsY{2!>8Gstg z|3)Qkg8=5j+&i0-`Z6~Xr*a8^;Ckf84#fkh88!Y_4u71L(*EzyeTiQUd-4|@D8+Wd zXgRwbU9l;ud8+sScU6i0SAs+Tgz8RbuSnTyk#4K>Z|tcfs|kd3MZ%yvPlTiGaqh<4 zjie!W@#y{%GYA7ZauIB;z z9IT))xUL4ZeCf&>>Emlh7D=bcBO~Gd8d^c4C~l!O3c#3de971`V5krt1|*u+qOLBH zaJ*^j`HZWQ{!wRLft%618dOZN!ll*a$2n@!6*enGN|#L*-?$U;_zY*V)>u5H)(@(N zTNKCcT7#_J+hDRc3>%N<=^@5qEO<3Q=V z!Ws6HdTFMxSZ8hNb9>dP1urk>DWbrw*)h@%YFF=@+M1y3OfsQ=27y{{Uagc?73RZX zGeD!*0mY$h185yl{p2TN5Ky=#^g;UQ#QtWw8h3&Y4mDb+a9>$X0@uB(@LBN{KonlB zm*@)2FGuuNtVKw&YSP|E?W|(xI6Fv<)R{XcL7(3T|MbB}Ylyv-%`P6jKM2%eg0-fD z5{g586Lb|aU7|SBcG^vv$P26^YLWh#fVWZMZ74!7ZgB1HG{&HwM*egp0aX-LzWrjL zQ}=0DwelzBD}YW1~v6(FHFb<}H+-S&m*j=0#Iuzw-O3 zE1}u{tl+l~TGz$iHRy%nungRCgpfrE(@CRiRkQBW(fL0!=)N#rh5hb7^M!~PFmTi^ z6Mp@bz7D2?l63I4)^$l35n(85Hjk;s>JdEAaKaNQV%YzB*+QwQ8n-k@O@UGQmBp&p zLH)|no7aXI0oacGT8SvO>CO9YsU0V(F-rNe}|)2UGr6uC<9#Zt_=X#b>);bKOvT^j;co`0Tt$S9aJR^hu86V zHyDbO-I4JgFB!d2KKDn(qC}%kL@#?UXTi(yN+idBxoVH`52vE~Cz6Ey)^K}{T7RkX zyF2Ra=4vbGx^^)q)#f1U!0Cj5Ba|(CHD((1Z5q-N;O35%Z#AA}zN`=&qGiQRr39w6 zf&yY8IAK^<;gYokvhe>^X|~?Z7{ZpNxbGlNos}Z{e{!tBX{MqJ=%hS;1X@*tg2)v1 zB&-DFO;2{?_AlA+xl-TQFT5qkk5wqW5!cHu3e; zdcfNOPo%E(SZppGT%k&Wj~7?%kU1)#BHquj0tcN!@Jf*v+b*Um*PcB}6s`O6S+23u zOSsv3?IU52(Lq79d}~Q@gjvIqsId*~6MK1SsG%M zER@4vl4lEPOjmp}{XPjkk21G3AH3ib-C+T^PrjmB-d}~LzR_jV0NF55uMJ2W{m-jm zz`I_nJMZWqb4C8m-lZUTmEn!vZ1)a%R?3zlkf;ZzpqeA8mD$(iOLo*h z4+UxyC9yVX>?_WAVH&19*pvogA$3mX4ra$uZdAe#GY{GQEl-gGT(N*47TN7Ik7Q7> zZ!#?76FDr!1^m3&N-mj>eLws2qTrP!X&f!(pxoTbT1Fh^tQ5FL%_b}271$mCK8EXq zf_|-pd@k@6R8#yDx!Q%}HB2a{?9D6rQe3f%=7C?hpjjh1h$hF_mbuxAwr0O(C!3s# zr7p6o?EcayCpB4bTfFZeUgZ+zLAV{SGO-3de1^DmT7dT4y=;29-Ivp_Ebm>XvyMiO zbwP=jl1}d{=LgWgg0qV<|rptEjIroVhjc{s)4<{{xYr z|DY1*e;!8q*TZsUDgWUKt0kUUKw&EOi(E6druo^6RhczAu&7w5M;f8N zn0qK0dubg2a=A<6wid9nWJ;7#!3@W>bq>c>`jz9_OLBa;3*fj`TNnsclOMG2EV)IE z47egH>9h8VvnwNCa>YF1M(>mfetoS7pYXUv!UG4aZ8eY@k47R>X zxnlz}bh4W}u&#&`+OR3Pg-4PlxdSgfm)Qy^u903{*V*H#C2Raio2BJT=vvVrY02Oj zzOVHJvTv`Lcw&PdZ>!pD7_0BoQ1s+99WV;pDXO=RVrJ*)RdZ>$sfLpeALTn`Sd9kw zt+h?gl>l+NK2{E5XYuag|<>P~7& z_2Xy`bhERiZ0SeoU{em5KvmiOskBTj84c)xqoKI#`{KR-{I@f!7Wd6+Zx`+Wkd`L^ zY3)b@Ag$`+3SW4JNVNifF+MRxg>n^XQIM;O!h~|F{|HUX?_0Yy$Z&zmTyV?3EzP6J zUpG^1Jyd*D2XEKk%B=v_U5SfFTft|bribD=jF`&X_RL`s-$zx+Wu@g*wSmOv0hMxk zfr5EYusz3fSf8uYwaZI06R+uet1CHV=+L=DM4NEBt{W%;c`iqD-lqeX5~!_Sfhcw{ zuecs%`ge7&IIoQ?^svHTeDk)f6yBm|q+u}%lzCH(%&R;CUA4n%-8NsM_%5AcDapJ4 z9oz*O3czf9ooE>rdiU88Sa;_U%C?@j-Q!J}60>2DqnYNs!H+R_j;dLCdOS*qBy4{!ee)r#54j<76Dewz(m$;dlG5m1wTp{^6zrjV5qM|Ro?tTWMn zyH~^}Sp$2R0hm$i9?bE!w9Mgs@XNdYV?vB3)LAsypg?=SyX~~QeKq@2T>283kzQ@H zT#Tjs$eT{Tez$RF3rRPc{rb#U1Aa)nBkVHGiF}$B8&%4T*hb7w;;a){ILb+9jp051&~i(F$FC~4 zrvry)e>!cu_QikYPn_Qyg|3# zOSe-8|DF|5RL;jq*N?kWBJkw_I_MRl&2EMrMz}*}-3g3PfOI2GNAZU{O{SG}&W_PK z8s=y4ja?C$Afll9zWc6J4-tgtcsQ?sMX$dY5uHVIJzjMlar0^&crt<|iNG6Intw6U zl7xH23WW$fQhX8u8SL-(;VgOCT?Y=yzij6=(5HLFy?<&K(AZ~x7wH@7uCbnSPtk@E zn~8&%9~*9X;=wP(k95rsEUSa%8cO;crWVqHisX8TI6}bw%vHCV$CJk=Uk|_fSbPIK ze9}j0tq7aBYdDFmFR?oxHQ&Q)UhPR zptD->;7rm(LrDqe@Ti*zPwX+WaW9EN;?7UcC=!?ii>RAm`o*fjKk90Y!zu$)c#|IP zqn-<}RV2TuLdnBdoFc}NeB*NwX@j*qw6E`5=Aq{Z@0IjI+ zyV^f(1ui^I)^)lsx59j&{)5Rt&CLGHFKYB;kO{Udq!CE|3U(M(3T#Y!Kt5U72Oty` zIRG@%*YrMMD`jl{U0RnTQ2b%cr~gIr)OfRLUIHpGYXpQ7`Hea^J%*jI`Y7(2NMh_C zBSve?_VK`mU2zjSG=df)QxAf9)-%HeM&>PV4c{Q5cDD#*R25EO)5?DDTBR z>>6p$h&Agon1hUWM-GSF@H{?Nq5I416F$wta&mPC#4{am)T#`zK|BQ9MLGnSX{D z7eP60Bbx4#GjRvRv!-g_0B`taAMB~Vtu6jv%)Xk{j0I6kPeP0J#J_i$Ui`nbr0f0e z)dto4u1Ll>(^ zQ6?J`f^SGqLnBOr-5TFkdH-A>!37*&BYknIz8O3v$kq}uZZB9E7iH2duw8@jG<+_i z1bA*Yyk_Ovd(nPW_x+5KM_|6Vkn^iAvqm+)BrBB-R<}gIThnW#loe4vB?;wL$D%mA zn=!0=DQ@Z1hEfr&n2klJqK3pCI7-dxa1nN`^)?6gjx6SmyZ&DolGt}R(U(V5aQn$o zU18#KtLC32F%>iGW5al1^;YQH4p4twbgZ~gDQocF(Y)+JoKoXjt3Z3{X;XX*Yogjg z`lr!4@tc=_@DM5F2Y1VYA3PM6ZEehUA6wwCZhwg(`hEyBc&gwJa*O?&p7bx^`!nly z$7c4`R|Dd1_JtK;)!T~-d!pg57mv%#8d zVkUR_TRgFP&cYYj7(o#&+(NNXXDsNof(~PqwC3w7{^%yk>f7bKEx<9#n)S>1Bi29I zUDO=O_ZV4I%b{XZ|57*K-qqCj%ufCYB}cr z!bNXAihLyeRdJJIVdD$lg5j8Y^E%WvY}NFxbb(rz-1{MWRB_GwgWA^8Q>C3NY{tUQ zFkfl#wUlND2<)3WKvh+gl~m`s2H6n6`WdKMI=!fX zBjhdYuk++vm%u4u6(yVu=$Vom;D2-)KqKZgz~(k9JDL7R521f`J7=H%pE~LPHOc?p zB##Y8FihG2Rqi}OkA(3ZZN2L zrD087>l(Bkj@HN67O@UMt*1rQ5Cxe;NLy>24j?j#F@Rb{MTkI23{xDAQbC9#Q4w&c zQWFUxg%Cmr4l&jsQ2_&Ff?x<^LINRyOm_tgHNDS0_nv#t?Kw}M=4bX!*4k^Yy}tK* z-*>NXgbH6dxn}aQtgJ)HDZHzYvJUd0weE@!@@ImBO zulL@G^hr|WoR=Z%UY4My2Uh7?dWu~Po1d3^(VdNIWAsmB`NZ%MIDj%U9El_v^;ew?u?EsLj@J97w+1`v z^zTG~u+Uo~1}<20Ppt8Z@)@x8Ja>5A89NChKAF5~!NLYM%0_6YUT7kkiDK}Ezd))a8AoF&Y3k1kPU+aL(w^xcN7~RIpJYLwKRx5pbLH$pQX_co{D%&$xG0p^K)4$fz&rOg89G8@gM1;*T$PDL5`R}zY{eT{eb zj#@7Rnp(lo+=&4YG^^^Jlgq@Y1)&8{?R1d3E|1Rw8+^Tc5UJmDmhyZAYS;*y_n#Yj z>8Y+@F3>m#>nV|M)+sjEQ033w?Z`5hu6^N@Jex#wDt76L8dM;9p#JvLESzom`){Ns z#Bn4J3&$DmhL=Y607ciSdVLE>I^P~Dt6@LHslmG}AX68oo=9Io`yyjJjCX_iQcBSF zgI%^vsANm%MKC%2JDl3ROnYOQ^1P7HTNIS2x0GRcWqO-;e2(zrQK)c2=P(;CNI-*X z4kpC1Ena~GJ204D(gJ-`4M{mkB541E$>ZHp$@Dr^ViB^{NqIP@SJV5Ga3ygaN;Jw+2CGo8>f}CTe&sE?pYh%viN(k(JePa;e5<4nl0rgx?x=%rIHf1?SNWNb895!IM6y%vdQ`tDwL)}guiIWD>?ZJ$j z4cn-2)C5tWCu-DlHT{Quzy$nc`#G`W;dI@;sP;w%tP_qvodbQj8gWG|+D}LoUGVHu z$@}~QUBNW1yPU8s(mYwcBNTzDNekgLFmvxM1FIDd6i%HpVEwO}+Z(ni!bA6{k1uTS zU0)BJt9(2)$**B;w&>J9n}qt!p{a`xigdehzsts<%e@kuJk_38A49ak&kBtlIpnm8 zl--z**2?u1oKRVvE5FZGYWQZ>%w@G)xCf_6u8*nc4Ok1mkb&LKvz5R{QuRC#PBQn- zPk0$SuWmBnHDRUYDe2jx9jAA(tAY^mNI)&koi-+lEX!L*%Mj4}&NyUYx<_ne(kD|0 zf2lY?{AR#~fjRBuw)hhA6ZrUYesvY9c=*|?gUzng8kWw6F z2Y5LILx9wi1RXbNJqY*Yo3~vyVfw4J+?T1DhBrt(DjGj;^#bK1ig$L z6g-DX8|kVQD`QIsAQxpV$#c1i!E7y^D(`6Ozz@ZZ`DVdS|36TkE}zSL1#*_x3Qk3f z?(9P(vVMEv_vUu$m=eL@9NOp>UFIQk*#0wzrWjJ|QaAE7GQM88Z$46$S4+&d(g5@~5mldh=&j+h<5=rin)@jNl6BAIkQR(um zw4fRC8P|gt6GwT9N9sVk&Nx)iaDmu`IXFxG;%!7AG zg>^PuBt^09C&5*fguWN}lYY&Sb9)VjNK>81@)(Y3%jyU0Dhtv)HW_d_pqK%PxKzOB z&-AmlM5$cjFIoip7e0MO9w2QhgI#r3jZ#pM^>{HHtNa>NVBLwfp8A$kNi8{9sR5M| zi23;o(lvu$GBWh{Eda3TuYo*Z!P2X@Lq*N-5Y4Z?y^=n`*8I|e{{^A{o3Eu44CL>i zS)YUC2xP1WT=l#m1T53d#5*x<8AEKXw?r9S+IW5(1Dh|_reucZAqt13IuqcS+wYIV zd7$4+5bcYGB1%#`xR30TZxK^8ci2d)IFPv>Xj2kGVS%OdE7*-;w-EjQmpCEZoGU2_ zt)qWU)`NXQg?oJ)jqXz^v?_Y0c2vaDR#oMU-jxZYShZ^bZ$N+xw&3yXUwLHja@iDi zpn0YpwaMe6gUf5;9fzn-FTE8;m=YUGJII9CJfy8g=~5z-c1yCg<>Ahy$up{JASR0XUG|g*ws07iLnv+c9r>X`L33#( zHqD=2K6fWe9JK?5gkd@`awpmt#Bxl@D!ih?zicyuF~?8!JYAw{%DECp8*3)^2qM)R zHyAU}AdjKS734XDj_2vI7Hy{5=j!NF(tbkaSX?wrn8{*6U|YQVcV(>~jb`hWEpAL!3!B=^k@k zbLZI#HSL<2cX4|&fO{lR@%k1~AE`~kji$y%9rsBb6MM8p(A%JqoHiLnj*M0WR*TlQh#9NR z^v<4>H47+PSma!18x^FMRWFJ|jmZtG%@ki3aNJL_DVEH3^@Z1lw z+#p$wPvvb{I6qQov)l9Vx%-+!E&@c`P2s*-W~g*7oTh>q2l3@-A&?p4o0`@#%6$xn zyAsZci#Q>8-z3p0&Vrb9c)iQQfvq}!H|4gRw1pVM-k%Q4;$PbkrW4@KjNT0k)%8)H zce>qZz-CY5?Fs++bDg4oajgd79$M1;k?QB68tiK|6BtW|#jr{u?{-V?tc-;OE|)53 zII)UUtlIWa3^OQv#-wwM?dydn9yxN>%z_z+hdrYFTfTxBXZO2uSP#I@BWYuvBTvpc zvh-rd{p!lH?V5To?EA7};<_M!ulBc9XWb2cYmDu+sdyTrKTD z{-)3h&Hgr)TNjYE5+aQ{cR&`f*zq;pPvx=^pO(iK(lKpce*9&O!3Z9{!u^KBRII_XEPl{9&QrAPk7XJMA4lK2YUAQlM7hEt#BfQz*2#*4(a9-- zADy!qai7cf)O~D$76UxCyoMlz*-#a-Qp4L@bInB6JAKSdzEBK{4BOYH;@PL)Kbm6^ zR(x77h~@MrQTPEG@cYn*^49qkH5c?D=A;2)e*nGmnPulL(#E6*c+@8t6^1gx70&k3 z{ACx`E!7sDudx}=iOn7=xyv)pAt*a7^oib8-hW@d0Hmv8V_<7Dqe^!Gcyu=Y2{pze zSOhanXguAsJX4@0J#;vn6y;vIhp|MSgA(_p*UJ^d+d)R_v((~xExc9}I+CW)s<=}J z1R(t5abpV=DwlGKRHhnE;Ki1&)qnn8`p!}BJWPZ}E~GaC3wS_U>5**>CTV8FMDW(v z*!nH>f&=r);)HSYfQ59VS3Ac)KKd)^NZPx27llG04WUpd?}En0tF>={aP-cp|Fv+` zj4KjXfUwLnd>~hrg@%IBBi>cUceq@NoR|ZIgf8Ta$jdxt`~7k$6DS_!B+`5a=XvjbStv zxC8J6!Qq!@MS=lLL*Iv7*K?C3-z`bpe-~?Dgvqn_NaC79a@xuoUuPLRPCbbBhU`H5 zq1=mL9CCQ-lwNUbUGH#pP_P}af$`ag{0J3!ib>AfWvTp&2>3xPtg;EyDn{iijumo3 zN(-ZHxj}`sha;}<=b|vfKR>yQY}#IUWU|F|l7g)|I#<(ImafjvVqk>#pGwQClhR4Y zV3ZMxKsL|v^gR+NM#X8aOv(YkD}JDqzUa{4#>dLNBTEdM`H$t)yA`LUlU(M0Ec@?= zn^BFt}nB-4lPgw#+==kxAIT~I&qRH*#A)Q3|_u7C`8m6?P6 zRhCiLR0CWDkXk3Ne}Uf2di}f5n;Tf(_`_y-ZWMR?YDXM8?tYLJ_-tGk@HP3X=wtr@ Dd2c8G diff --git a/misc/security.xml b/misc/security.xml deleted file mode 100644 index 162e082f7..000000000 --- a/misc/security.xml +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/setup.py b/setup.py index 7b17c82c1..ac212a027 100644 --- a/setup.py +++ b/setup.py @@ -46,8 +46,6 @@ setup( 'colorlog', 'voluptuous', 'gitpython', - 'pyotp', - 'pyqrcode', 'pytz', 'pyudev' ] From 61037f3852c73f8e7290b24131e56fcbf8717008 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Thu, 11 Jan 2018 11:16:46 +0100 Subject: [PATCH 4/9] Update network.py --- hassio/docker/network.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/hassio/docker/network.py b/hassio/docker/network.py index b4a57c79f..ee5a8b767 100644 --- a/hassio/docker/network.py +++ b/hassio/docker/network.py @@ -9,7 +9,10 @@ _LOGGER = logging.getLogger(__name__) class DockerNetwork(object): - """Internal HassIO Network.""" + """Internal HassIO Network. + + This class is not AsyncIO safe! + """ def __init__(self, dock): """Initialize internal hassio network.""" From 3784d759f5606c622714afcf2273fc7ae4467953 Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 15 Jan 2018 22:51:32 +0100 Subject: [PATCH 5/9] :books: Fixes markdownlint & spelling issue in the README file (#312) --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 71ff79643..e4101e998 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,12 @@ # Hass.io -### First private cloud solution for home automation. +## First private cloud solution for home automation -Hass.io is a Docker based system for managing your Home Assistant installation and related applications. The system is controlled via Home Assistant which communicates with the supervisor. The supervisor provides an API to manage the installation. This includes changing network settings or installing and updating software. +Hass.io is a Docker-based system for managing your Home Assistant installation +and related applications. The system is controlled via Home Assistant which +communicates with the Supervisor. The Supervisor provides an API to manage the +installation. This includes changing network settings or installing +and updating software. ![](misc/hassio.png?raw=true) @@ -11,4 +15,4 @@ Hass.io is a Docker based system for managing your Home Assistant installation a ## Installation -Installation instructions can be found at [https://home-assistant.io/hassio](https://home-assistant.io/hassio). +Installation instructions can be found at . From 8fc27ff28e383bd3a341098e4cafb627c667220e Mon Sep 17 00:00:00 2001 From: Franck Nijhof Date: Mon, 15 Jan 2018 22:52:13 +0100 Subject: [PATCH 6/9] :pencil2: Small typo in error msg (#311) --- hassio/api/addons.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hassio/api/addons.py b/hassio/api/addons.py index bf670dd74..8f593f79f 100644 --- a/hassio/api/addons.py +++ b/hassio/api/addons.py @@ -267,7 +267,7 @@ class APIAddons(CoreSysAttributes): """Write to stdin of addon.""" addon = self._extract_addon(request) if not addon.with_stdin: - raise RuntimeError("STDIN not supported by addons") + raise RuntimeError("STDIN not supported by addon") data = await request.read() return await asyncio.shield(addon.write_stdin(data), loop=self._loop) From f443d3052bfe78eb21322d8a2fa708d0f2c84e48 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Mon, 15 Jan 2018 22:53:18 +0100 Subject: [PATCH 7/9] Update HomeAssistant to version 0.61 --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index a17e498f0..8352cb229 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "hassio": "0.81", - "homeassistant": "0.60.1", + "homeassistant": "0.61", "resinos": "1.1", "resinhup": "0.3", "generic": "0.3", From 26d390b66ea08f6ff43838034183dfe12a407b40 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 16 Jan 2018 12:20:04 +0100 Subject: [PATCH 8/9] Add GET param support (#314) --- hassio/api/__init__.py | 4 ++- hassio/api/proxy.py | 74 +++++++++++++++++++++--------------------- 2 files changed, 40 insertions(+), 38 deletions(-) diff --git a/hassio/api/__init__.py b/hassio/api/__init__.py index 39b01cfc8..80df80edf 100644 --- a/hassio/api/__init__.py +++ b/hassio/api/__init__.py @@ -100,12 +100,14 @@ class RestAPI(CoreSysAttributes): '/homeassistant/api/websocket', api_proxy.websocket) self.webapp.router.add_get( '/homeassistant/websocket', api_proxy.websocket) + self.webapp.router.add_get( + '/homeassistant/api/stream', api_proxy.stream) self.webapp.router.add_post( '/homeassistant/api/{path:.+}', api_proxy.api) self.webapp.router.add_get( '/homeassistant/api/{path:.+}', api_proxy.api) self.webapp.router.add_get( - '/homeassistant/api', api_proxy.api) + '/homeassistant/api/', api_proxy.api) def _register_addons(self): """Register homeassistant function.""" diff --git a/hassio/api/proxy.py b/hassio/api/proxy.py index 4ea7cb58a..9b25ec618 100644 --- a/hassio/api/proxy.py +++ b/hassio/api/proxy.py @@ -25,6 +25,7 @@ class APIProxy(CoreSysAttributes): data = None headers = {} method = getattr(self._websession_ssl, request.method.lower()) + params = request.query or None # read data with async_timeout.timeout(30, loop=self._loop): @@ -42,7 +43,8 @@ class APIProxy(CoreSysAttributes): headers = None client = await method( - url, data=data, headers=headers, timeout=timeout + url, data=data, headers=headers, timeout=timeout, + params=params ) return client @@ -55,48 +57,46 @@ class APIProxy(CoreSysAttributes): raise HTTPBadGateway() + async def stream(self, request): + """Proxy HomeAssistant EventStream Requests.""" + _LOGGER.info("Home-Assistant EventStream start") + client = await self._api_client(request, 'stream', timeout=None) + + response = web.StreamResponse() + response.content_type = request.headers.get(CONTENT_TYPE) + try: + await response.prepare(request) + while True: + data = await client.content.read(10) + if not data: + await response.write_eof() + break + response.write(data) + + except aiohttp.ClientError: + await response.write_eof() + + except asyncio.CancelledError: + pass + + finally: + client.close() + _LOGGER.info("Home-Assistant EventStream close") + async def api(self, request): """Proxy HomeAssistant API Requests.""" path = request.match_info.get('path', '') - # API stream - if path.startswith("stream"): - _LOGGER.info("Home-Assistant Event-Stream start") - client = await self._api_client(request, path, timeout=None) - - response = web.StreamResponse() - response.content_type = request.headers.get(CONTENT_TYPE) - try: - await response.prepare(request) - while True: - data = await client.content.read(10) - if not data: - await response.write_eof() - break - response.write(data) - - except aiohttp.ClientError: - await response.write_eof() - - except asyncio.CancelledError: - pass - - finally: - client.close() - - _LOGGER.info("Home-Assistant Event-Stream close") - # Normal request - else: - _LOGGER.info("Home-Assistant '/api/%s' request", path) - client = await self._api_client(request, path) + _LOGGER.info("Home-Assistant /api/%s request", path) + client = await self._api_client(request, path) - data = await client.read() - return web.Response( - body=data, - status=client.status, - content_type=client.content_type - ) + data = await client.read() + return web.Response( + body=data, + status=client.status, + content_type=client.content_type + ) async def _websocket_client(self): """Initialize a websocket api connection.""" From 38e40c342d37b69843d878e3072c912e8fb930d3 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 16 Jan 2018 12:23:11 +0100 Subject: [PATCH 9/9] Update hass.io to version 0.82 --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 8352cb229..69f1a888e 100644 --- a/version.json +++ b/version.json @@ -1,5 +1,5 @@ { - "hassio": "0.81", + "hassio": "0.82", "homeassistant": "0.61", "resinos": "1.1", "resinhup": "0.3",