From 887ac64d18131c8720701ed1ed15cdc5cd9a28ee Mon Sep 17 00:00:00 2001 From: 4gray <4gray@users.noreply.github.com> Date: Sun, 27 Sep 2026 21:27:47 +0200 Subject: [PATCH 1/2] feat(workspace): cinematic rotating dashboard hero (#1725) --- .../workspace-dashboard-cinematic-hero.md | 7 + apps/web/src/assets/i18n/ar.json | 13 +- apps/web/src/assets/i18n/ary.json | 13 +- apps/web/src/assets/i18n/by.json | 13 +- apps/web/src/assets/i18n/de.json | 13 +- apps/web/src/assets/i18n/el.json | 13 +- apps/web/src/assets/i18n/en.json | 13 +- apps/web/src/assets/i18n/es.json | 13 +- apps/web/src/assets/i18n/fr.json | 13 +- apps/web/src/assets/i18n/hu.json | 13 +- apps/web/src/assets/i18n/it.json | 13 +- apps/web/src/assets/i18n/ja.json | 13 +- apps/web/src/assets/i18n/ko.json | 13 +- apps/web/src/assets/i18n/nl.json | 13 +- apps/web/src/assets/i18n/pl.json | 13 +- apps/web/src/assets/i18n/pt.json | 13 +- apps/web/src/assets/i18n/ru.json | 13 +- apps/web/src/assets/i18n/tr.json | 13 +- apps/web/src/assets/i18n/zh.json | 13 +- apps/web/src/assets/i18n/zhtw.json | 13 +- docs/architecture/tmdb-metadata-enrichment.md | 18 +- docs/architecture/workspace-dashboard.md | 62 +- libs/workspace/dashboard/feature/README.md | 8 +- .../dashboard-hero-slides.presenter.spec.ts | 383 ++++++++++ .../rails/dashboard-hero-slides.presenter.ts | 372 ++++++++++ .../rails/dashboard-hero-slides.utils.spec.ts | 226 ++++++ .../lib/rails/dashboard-hero-slides.utils.ts | 152 ++++ .../rails/dashboard-hero-tmdb.service.spec.ts | 64 +- .../lib/rails/dashboard-hero-tmdb.service.ts | 25 +- .../lib/rails/dashboard-hero.component.html | 255 +++++++ .../lib/rails/dashboard-hero.component.scss | 670 ++++++++++++++++++ .../rails/dashboard-hero.component.spec.ts | 265 +++++++ .../src/lib/rails/dashboard-hero.component.ts | 173 +++++ .../src/lib/rails/dashboard-hero.utils.ts | 65 +- .../dashboard-live-epg.presenter.spec.ts | 85 ++- .../lib/rails/dashboard-live-epg.presenter.ts | 82 ++- .../src/lib/rails/dashboard-live-epg.utils.ts | 16 +- .../src/lib/rails/dashboard-playback.utils.ts | 25 + .../workspace-dashboard-rails.component.html | 196 +---- .../workspace-dashboard-rails.component.scss | 594 +--------------- ...orkspace-dashboard-rails.component.spec.ts | 61 +- .../workspace-dashboard-rails.component.ts | 163 +---- 42 files changed, 3152 insertions(+), 1062 deletions(-) create mode 100644 .changes/workspace-dashboard-cinematic-hero.md create mode 100644 libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.presenter.spec.ts create mode 100644 libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.presenter.ts create mode 100644 libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.utils.spec.ts create mode 100644 libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.utils.ts create mode 100644 libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.html create mode 100644 libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.scss create mode 100644 libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.spec.ts create mode 100644 libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.ts diff --git a/.changes/workspace-dashboard-cinematic-hero.md b/.changes/workspace-dashboard-cinematic-hero.md new file mode 100644 index 000000000..bb59bcfd4 --- /dev/null +++ b/.changes/workspace-dashboard-cinematic-hero.md @@ -0,0 +1,7 @@ +--- +type: feature +area: workspace +highlight: Cinematic dashboard hero +--- + +The dashboard hero is now a full-width cinematic banner that rotates between the title you were watching, a favorite channel on air right now, and a few favorites and new arrivals. With TMDB enabled it shows the backdrop, rating, genres and plot; hover, focus or the pause button stop the rotation. diff --git a/apps/web/src/assets/i18n/ar.json b/apps/web/src/assets/i18n/ar.json index 4514539d0..0877219e8 100644 --- a/apps/web/src/assets/i18n/ar.json +++ b/apps/web/src/assets/i18n/ar.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "تلفزيون مباشر شوهد مؤخرًا", "FAVORITE_MOVIES_AND_SERIES": "الأفلام والمسلسلات المفضلة", "SOURCE_EXPIRES_IN_DAYS": "ينتهي خلال {{days}} يوم", - "SOURCE_EXPIRED": "منتهي" + "SOURCE_EXPIRED": "منتهي", + "HERO_LABEL": "مميز", + "HERO_FAVORITE_CHANNEL": "قناة مفضلة", + "HERO_FAVORITE": "مفضل", + "HERO_RECENTLY_ADDED": "أضيف مؤخرًا", + "HERO_CONTINUE": "متابعة", + "HERO_WATCH_LIVE": "شاهد مباشرة", + "HERO_DETAILS": "التفاصيل", + "HERO_SLIDE_POSITION": "{{index}} من {{count}}", + "HERO_SHOW_SLIDE": "عرض {{title}}", + "HERO_PAUSE": "إيقاف العرض مؤقتًا", + "HERO_PLAY": "تشغيل العرض" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/ary.json b/apps/web/src/assets/i18n/ary.json index aebd003cf..9cbc82ade 100644 --- a/apps/web/src/assets/i18n/ary.json +++ b/apps/web/src/assets/i18n/ary.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "التلفزة المباشرة المتشافة مؤخراً", "FAVORITE_MOVIES_AND_SERIES": "الأفلام والسلاسل المفضلة", "SOURCE_EXPIRES_IN_DAYS": "كتسالي ف {{days}} يوم", - "SOURCE_EXPIRED": "سالات" + "SOURCE_EXPIRED": "سالات", + "HERO_LABEL": "مختارين", + "HERO_FAVORITE_CHANNEL": "قناة مفضلة", + "HERO_FAVORITE": "مفضل", + "HERO_RECENTLY_ADDED": "تزاد جديد", + "HERO_CONTINUE": "كمّل", + "HERO_WATCH_LIVE": "تفرج مباشر", + "HERO_DETAILS": "التفاصيل", + "HERO_SLIDE_POSITION": "{{index}} من {{count}}", + "HERO_SHOW_SLIDE": "وري {{title}}", + "HERO_PAUSE": "وقف العرض", + "HERO_PLAY": "شغّل العرض" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/by.json b/apps/web/src/assets/i18n/by.json index 6956affeb..0dbe5a074 100644 --- a/apps/web/src/assets/i18n/by.json +++ b/apps/web/src/assets/i18n/by.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "Нядаўна прагледжанае жывое ТБ", "FAVORITE_MOVIES_AND_SERIES": "Любімыя фільмы і серыялы", "SOURCE_EXPIRES_IN_DAYS": "Скончыцца праз {{days}} дз.", - "SOURCE_EXPIRED": "Скончыўся" + "SOURCE_EXPIRED": "Скончыўся", + "HERO_LABEL": "Рэкамендаванае", + "HERO_FAVORITE_CHANNEL": "Абраны канал", + "HERO_FAVORITE": "Абранае", + "HERO_RECENTLY_ADDED": "Нядаўна дададзена", + "HERO_CONTINUE": "Працягнуць", + "HERO_WATCH_LIVE": "Глядзець эфір", + "HERO_DETAILS": "Падрабязней", + "HERO_SLIDE_POSITION": "{{index}} з {{count}}", + "HERO_SHOW_SLIDE": "Паказаць {{title}}", + "HERO_PAUSE": "Прыпыніць паказ", + "HERO_PLAY": "Аднавіць паказ" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/de.json b/apps/web/src/assets/i18n/de.json index 2fde7bcdc..86a474657 100644 --- a/apps/web/src/assets/i18n/de.json +++ b/apps/web/src/assets/i18n/de.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "Kürzlich angesehenes Live-TV", "FAVORITE_MOVIES_AND_SERIES": "Favorisierte Filme und Serien", "SOURCE_EXPIRES_IN_DAYS": "Läuft in {{days}} T. ab", - "SOURCE_EXPIRED": "Abgelaufen" + "SOURCE_EXPIRED": "Abgelaufen", + "HERO_LABEL": "Empfohlen", + "HERO_FAVORITE_CHANNEL": "Lieblingssender", + "HERO_FAVORITE": "Favorit", + "HERO_RECENTLY_ADDED": "Kürzlich hinzugefügt", + "HERO_CONTINUE": "Fortsetzen", + "HERO_WATCH_LIVE": "Live ansehen", + "HERO_DETAILS": "Details", + "HERO_SLIDE_POSITION": "{{index}} von {{count}}", + "HERO_SHOW_SLIDE": "{{title}} anzeigen", + "HERO_PAUSE": "Diashow anhalten", + "HERO_PLAY": "Diashow abspielen" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/el.json b/apps/web/src/assets/i18n/el.json index bd7a280ee..546239853 100644 --- a/apps/web/src/assets/i18n/el.json +++ b/apps/web/src/assets/i18n/el.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "Ζωντανή TV που παρακολουθήθηκε πρόσφατα", "FAVORITE_MOVIES_AND_SERIES": "Αγαπημένες ταινίες και σειρές", "SOURCE_EXPIRES_IN_DAYS": "Λήγει σε {{days}} ημ.", - "SOURCE_EXPIRED": "Έληξε" + "SOURCE_EXPIRED": "Έληξε", + "HERO_LABEL": "Προτεινόμενα", + "HERO_FAVORITE_CHANNEL": "Αγαπημένο κανάλι", + "HERO_FAVORITE": "Αγαπημένο", + "HERO_RECENTLY_ADDED": "Προστέθηκε πρόσφατα", + "HERO_CONTINUE": "Συνέχεια", + "HERO_WATCH_LIVE": "Δείτε ζωντανά", + "HERO_DETAILS": "Λεπτομέρειες", + "HERO_SLIDE_POSITION": "{{index}} από {{count}}", + "HERO_SHOW_SLIDE": "Εμφάνιση {{title}}", + "HERO_PAUSE": "Παύση προβολής", + "HERO_PLAY": "Αναπαραγωγή προβολής" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/en.json b/apps/web/src/assets/i18n/en.json index a9c69ed3a..47985a3f1 100644 --- a/apps/web/src/assets/i18n/en.json +++ b/apps/web/src/assets/i18n/en.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "Recently watched live TV", "FAVORITE_MOVIES_AND_SERIES": "Favorite movies & series", "SOURCE_EXPIRES_IN_DAYS": "Expires in {{days}} d", - "SOURCE_EXPIRED": "Expired" + "SOURCE_EXPIRED": "Expired", + "HERO_LABEL": "Featured", + "HERO_FAVORITE_CHANNEL": "Favorite channel", + "HERO_FAVORITE": "Favorite", + "HERO_RECENTLY_ADDED": "Recently added", + "HERO_CONTINUE": "Continue", + "HERO_WATCH_LIVE": "Watch live", + "HERO_DETAILS": "Details", + "HERO_SLIDE_POSITION": "{{index}} of {{count}}", + "HERO_SHOW_SLIDE": "Show {{title}}", + "HERO_PAUSE": "Pause slideshow", + "HERO_PLAY": "Play slideshow" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/es.json b/apps/web/src/assets/i18n/es.json index e1d9fa9a5..ad7cdd9d5 100644 --- a/apps/web/src/assets/i18n/es.json +++ b/apps/web/src/assets/i18n/es.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "TV en directo vista recientemente", "FAVORITE_MOVIES_AND_SERIES": "Películas y series favoritas", "SOURCE_EXPIRES_IN_DAYS": "Caduca en {{days}} d", - "SOURCE_EXPIRED": "Caducada" + "SOURCE_EXPIRED": "Caducada", + "HERO_LABEL": "Destacado", + "HERO_FAVORITE_CHANNEL": "Canal favorito", + "HERO_FAVORITE": "Favorito", + "HERO_RECENTLY_ADDED": "Añadido recientemente", + "HERO_CONTINUE": "Continuar", + "HERO_WATCH_LIVE": "Ver en directo", + "HERO_DETAILS": "Detalles", + "HERO_SLIDE_POSITION": "{{index}} de {{count}}", + "HERO_SHOW_SLIDE": "Mostrar {{title}}", + "HERO_PAUSE": "Pausar presentación", + "HERO_PLAY": "Reproducir presentación" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/fr.json b/apps/web/src/assets/i18n/fr.json index e62de7adb..d0f14997f 100644 --- a/apps/web/src/assets/i18n/fr.json +++ b/apps/web/src/assets/i18n/fr.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "TV en direct récemment regardée", "FAVORITE_MOVIES_AND_SERIES": "Films et séries favoris", "SOURCE_EXPIRES_IN_DAYS": "Expire dans {{days}} j", - "SOURCE_EXPIRED": "Expiré" + "SOURCE_EXPIRED": "Expiré", + "HERO_LABEL": "À la une", + "HERO_FAVORITE_CHANNEL": "Chaîne favorite", + "HERO_FAVORITE": "Favori", + "HERO_RECENTLY_ADDED": "Ajouté récemment", + "HERO_CONTINUE": "Reprendre", + "HERO_WATCH_LIVE": "Regarder en direct", + "HERO_DETAILS": "Détails", + "HERO_SLIDE_POSITION": "{{index}} sur {{count}}", + "HERO_SHOW_SLIDE": "Afficher {{title}}", + "HERO_PAUSE": "Mettre le diaporama en pause", + "HERO_PLAY": "Lancer le diaporama" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/hu.json b/apps/web/src/assets/i18n/hu.json index 792e33eb4..8d695043c 100644 --- a/apps/web/src/assets/i18n/hu.json +++ b/apps/web/src/assets/i18n/hu.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "Legutóbb nézett élő TV", "FAVORITE_MOVIES_AND_SERIES": "Kedvenc filmek és sorozatok", "SOURCE_EXPIRES_IN_DAYS": "{{days}} nap múlva lejár", - "SOURCE_EXPIRED": "Lejárt" + "SOURCE_EXPIRED": "Lejárt", + "HERO_LABEL": "Kiemelt", + "HERO_FAVORITE_CHANNEL": "Kedvenc csatorna", + "HERO_FAVORITE": "Kedvenc", + "HERO_RECENTLY_ADDED": "Nemrég hozzáadva", + "HERO_CONTINUE": "Folytatás", + "HERO_WATCH_LIVE": "Élő adás nézése", + "HERO_DETAILS": "Részletek", + "HERO_SLIDE_POSITION": "{{index}} / {{count}}", + "HERO_SHOW_SLIDE": "{{title}} megjelenítése", + "HERO_PAUSE": "Diavetítés szüneteltetése", + "HERO_PLAY": "Diavetítés lejátszása" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/it.json b/apps/web/src/assets/i18n/it.json index ce173034f..dcc928ee9 100644 --- a/apps/web/src/assets/i18n/it.json +++ b/apps/web/src/assets/i18n/it.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "TV in diretta guardata di recente", "FAVORITE_MOVIES_AND_SERIES": "Film e serie preferiti", "SOURCE_EXPIRES_IN_DAYS": "Scade tra {{days}} g", - "SOURCE_EXPIRED": "Scaduto" + "SOURCE_EXPIRED": "Scaduto", + "HERO_LABEL": "In evidenza", + "HERO_FAVORITE_CHANNEL": "Canale preferito", + "HERO_FAVORITE": "Preferito", + "HERO_RECENTLY_ADDED": "Aggiunto di recente", + "HERO_CONTINUE": "Riprendi", + "HERO_WATCH_LIVE": "Guarda in diretta", + "HERO_DETAILS": "Dettagli", + "HERO_SLIDE_POSITION": "{{index}} di {{count}}", + "HERO_SHOW_SLIDE": "Mostra {{title}}", + "HERO_PAUSE": "Metti in pausa la presentazione", + "HERO_PLAY": "Avvia la presentazione" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/ja.json b/apps/web/src/assets/i18n/ja.json index 74d34ae6f..769c1b6f2 100644 --- a/apps/web/src/assets/i18n/ja.json +++ b/apps/web/src/assets/i18n/ja.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "最近視聴したライブ TV", "FAVORITE_MOVIES_AND_SERIES": "お気に入りの映画とシリーズ", "SOURCE_EXPIRES_IN_DAYS": "あと{{days}}日で期限切れ", - "SOURCE_EXPIRED": "期限切れ" + "SOURCE_EXPIRED": "期限切れ", + "HERO_LABEL": "おすすめ", + "HERO_FAVORITE_CHANNEL": "お気に入りチャンネル", + "HERO_FAVORITE": "お気に入り", + "HERO_RECENTLY_ADDED": "最近追加", + "HERO_CONTINUE": "続きを再生", + "HERO_WATCH_LIVE": "ライブで見る", + "HERO_DETAILS": "詳細", + "HERO_SLIDE_POSITION": "{{index}} / {{count}}", + "HERO_SHOW_SLIDE": "{{title}} を表示", + "HERO_PAUSE": "スライドショーを一時停止", + "HERO_PLAY": "スライドショーを再生" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/ko.json b/apps/web/src/assets/i18n/ko.json index 72ce5ee18..6d6f364ed 100644 --- a/apps/web/src/assets/i18n/ko.json +++ b/apps/web/src/assets/i18n/ko.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "최근 시청한 라이브 TV", "FAVORITE_MOVIES_AND_SERIES": "즐겨찾기한 영화 및 시리즈", "SOURCE_EXPIRES_IN_DAYS": "{{days}}일 후 만료", - "SOURCE_EXPIRED": "만료됨" + "SOURCE_EXPIRED": "만료됨", + "HERO_LABEL": "추천", + "HERO_FAVORITE_CHANNEL": "즐겨찾는 채널", + "HERO_FAVORITE": "즐겨찾기", + "HERO_RECENTLY_ADDED": "최근 추가됨", + "HERO_CONTINUE": "이어 보기", + "HERO_WATCH_LIVE": "실시간 보기", + "HERO_DETAILS": "상세 정보", + "HERO_SLIDE_POSITION": "{{index}} / {{count}}", + "HERO_SHOW_SLIDE": "{{title}} 보기", + "HERO_PAUSE": "슬라이드쇼 일시정지", + "HERO_PLAY": "슬라이드쇼 재생" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/nl.json b/apps/web/src/assets/i18n/nl.json index ed51d72d8..9750d29b1 100644 --- a/apps/web/src/assets/i18n/nl.json +++ b/apps/web/src/assets/i18n/nl.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "Recent bekeken live-tv", "FAVORITE_MOVIES_AND_SERIES": "Favoriete films en reeksen", "SOURCE_EXPIRES_IN_DAYS": "Verloopt over {{days}} d", - "SOURCE_EXPIRED": "Verlopen" + "SOURCE_EXPIRED": "Verlopen", + "HERO_LABEL": "Uitgelicht", + "HERO_FAVORITE_CHANNEL": "Favoriete zender", + "HERO_FAVORITE": "Favoriet", + "HERO_RECENTLY_ADDED": "Recent toegevoegd", + "HERO_CONTINUE": "Verder kijken", + "HERO_WATCH_LIVE": "Live kijken", + "HERO_DETAILS": "Details", + "HERO_SLIDE_POSITION": "{{index}} van {{count}}", + "HERO_SHOW_SLIDE": "{{title}} tonen", + "HERO_PAUSE": "Diavoorstelling pauzeren", + "HERO_PLAY": "Diavoorstelling afspelen" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/pl.json b/apps/web/src/assets/i18n/pl.json index 084c14c4a..bb0aab0a8 100644 --- a/apps/web/src/assets/i18n/pl.json +++ b/apps/web/src/assets/i18n/pl.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "Ostatnio oglądana telewizja na żywo", "FAVORITE_MOVIES_AND_SERIES": "Ulubione filmy i seriale", "SOURCE_EXPIRES_IN_DAYS": "Wygasa za {{days}} dn.", - "SOURCE_EXPIRED": "Wygasło" + "SOURCE_EXPIRED": "Wygasło", + "HERO_LABEL": "Polecane", + "HERO_FAVORITE_CHANNEL": "Ulubiony kanał", + "HERO_FAVORITE": "Ulubione", + "HERO_RECENTLY_ADDED": "Ostatnio dodane", + "HERO_CONTINUE": "Kontynuuj", + "HERO_WATCH_LIVE": "Oglądaj na żywo", + "HERO_DETAILS": "Szczegóły", + "HERO_SLIDE_POSITION": "{{index}} z {{count}}", + "HERO_SHOW_SLIDE": "Pokaż {{title}}", + "HERO_PAUSE": "Wstrzymaj pokaz", + "HERO_PLAY": "Odtwórz pokaz" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/pt.json b/apps/web/src/assets/i18n/pt.json index f0c246995..919c838f9 100644 --- a/apps/web/src/assets/i18n/pt.json +++ b/apps/web/src/assets/i18n/pt.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "TV ao vivo assistida recentemente", "FAVORITE_MOVIES_AND_SERIES": "Filmes e séries favoritos", "SOURCE_EXPIRES_IN_DAYS": "Expira em {{days}} d", - "SOURCE_EXPIRED": "Expirada" + "SOURCE_EXPIRED": "Expirada", + "HERO_LABEL": "Em destaque", + "HERO_FAVORITE_CHANNEL": "Canal favorito", + "HERO_FAVORITE": "Favorito", + "HERO_RECENTLY_ADDED": "Adicionado recentemente", + "HERO_CONTINUE": "Continuar", + "HERO_WATCH_LIVE": "Assistir ao vivo", + "HERO_DETAILS": "Detalhes", + "HERO_SLIDE_POSITION": "{{index}} de {{count}}", + "HERO_SHOW_SLIDE": "Mostrar {{title}}", + "HERO_PAUSE": "Pausar apresentação", + "HERO_PLAY": "Reproduzir apresentação" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/ru.json b/apps/web/src/assets/i18n/ru.json index 4ea1b1456..cc40bc0fa 100644 --- a/apps/web/src/assets/i18n/ru.json +++ b/apps/web/src/assets/i18n/ru.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "Недавно просмотренное Live TV", "FAVORITE_MOVIES_AND_SERIES": "Избранные фильмы и сериалы", "SOURCE_EXPIRES_IN_DAYS": "Истекает через {{days}} дн.", - "SOURCE_EXPIRED": "Истёк" + "SOURCE_EXPIRED": "Истёк", + "HERO_LABEL": "Рекомендуемое", + "HERO_FAVORITE_CHANNEL": "Избранный канал", + "HERO_FAVORITE": "Избранное", + "HERO_RECENTLY_ADDED": "Недавно добавлено", + "HERO_CONTINUE": "Продолжить", + "HERO_WATCH_LIVE": "Смотреть эфир", + "HERO_DETAILS": "Подробнее", + "HERO_SLIDE_POSITION": "{{index}} из {{count}}", + "HERO_SHOW_SLIDE": "Показать {{title}}", + "HERO_PAUSE": "Приостановить показ", + "HERO_PLAY": "Возобновить показ" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/tr.json b/apps/web/src/assets/i18n/tr.json index aed2740a3..845e11f02 100644 --- a/apps/web/src/assets/i18n/tr.json +++ b/apps/web/src/assets/i18n/tr.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "Son izlenen canlı TV", "FAVORITE_MOVIES_AND_SERIES": "Favori filmler ve diziler", "SOURCE_EXPIRES_IN_DAYS": "{{days}} gün içinde sona erer", - "SOURCE_EXPIRED": "Süresi doldu" + "SOURCE_EXPIRED": "Süresi doldu", + "HERO_LABEL": "Öne çıkanlar", + "HERO_FAVORITE_CHANNEL": "Favori kanal", + "HERO_FAVORITE": "Favori", + "HERO_RECENTLY_ADDED": "Yeni eklendi", + "HERO_CONTINUE": "Devam et", + "HERO_WATCH_LIVE": "Canlı izle", + "HERO_DETAILS": "Ayrıntılar", + "HERO_SLIDE_POSITION": "{{index}} / {{count}}", + "HERO_SHOW_SLIDE": "{{title}} göster", + "HERO_PAUSE": "Slayt gösterisini duraklat", + "HERO_PLAY": "Slayt gösterisini oynat" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/zh.json b/apps/web/src/assets/i18n/zh.json index 51cdc5518..eca04c505 100644 --- a/apps/web/src/assets/i18n/zh.json +++ b/apps/web/src/assets/i18n/zh.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "最近观看的直播电视", "FAVORITE_MOVIES_AND_SERIES": "收藏的电影和剧集", "SOURCE_EXPIRES_IN_DAYS": "{{days}} 天后到期", - "SOURCE_EXPIRED": "已过期" + "SOURCE_EXPIRED": "已过期", + "HERO_LABEL": "精选", + "HERO_FAVORITE_CHANNEL": "收藏频道", + "HERO_FAVORITE": "收藏", + "HERO_RECENTLY_ADDED": "最近添加", + "HERO_CONTINUE": "继续观看", + "HERO_WATCH_LIVE": "观看直播", + "HERO_DETAILS": "详情", + "HERO_SLIDE_POSITION": "第 {{index}} 项,共 {{count}} 项", + "HERO_SHOW_SLIDE": "显示 {{title}}", + "HERO_PAUSE": "暂停轮播", + "HERO_PLAY": "播放轮播" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/apps/web/src/assets/i18n/zhtw.json b/apps/web/src/assets/i18n/zhtw.json index 66b5135d4..1e8f34b9d 100644 --- a/apps/web/src/assets/i18n/zhtw.json +++ b/apps/web/src/assets/i18n/zhtw.json @@ -1563,7 +1563,18 @@ "RECENTLY_WATCHED_LIVE_TV": "最近觀看的直播電視", "FAVORITE_MOVIES_AND_SERIES": "收藏的電影和影集", "SOURCE_EXPIRES_IN_DAYS": "{{days}} 天後到期", - "SOURCE_EXPIRED": "已過期" + "SOURCE_EXPIRED": "已過期", + "HERO_LABEL": "精選", + "HERO_FAVORITE_CHANNEL": "收藏頻道", + "HERO_FAVORITE": "收藏", + "HERO_RECENTLY_ADDED": "最近新增", + "HERO_CONTINUE": "繼續觀看", + "HERO_WATCH_LIVE": "觀看直播", + "HERO_DETAILS": "詳細資訊", + "HERO_SLIDE_POSITION": "第 {{index}} 項,共 {{count}} 項", + "HERO_SHOW_SLIDE": "顯示 {{title}}", + "HERO_PAUSE": "暫停輪播", + "HERO_PLAY": "播放輪播" }, "SHELL": { "BRAND_ALT": "IPTVnator", diff --git a/docs/architecture/tmdb-metadata-enrichment.md b/docs/architecture/tmdb-metadata-enrichment.md index 94f64cea8..74a9e72a8 100644 --- a/docs/architecture/tmdb-metadata-enrichment.md +++ b/docs/architecture/tmdb-metadata-enrichment.md @@ -733,15 +733,15 @@ since shipped.) does not latch and retries instead. Same gating as trending: TMDB opt-in + Electron DB worker, deferred behind the dashboard's own data. - **Hero extras**: `DashboardHeroTmdbService` - (`libs/workspace/dashboard/feature`) patches the hero card with a TMDB - backdrop (when the activity row has none), a rating badge and up to two - genre chips — resolved through the enrichment facade, so items already - opened in a detail view come from the SQLite cache without network. - Results are memoized per lookup identity for the session. The hero renders - immediately from provider data; extras appear when resolved. Series - heroes additionally show the tracked "S{n}·E{n}" badge from the playback - position (no TMDB involved); the watch-progress bar is limited to - movie/series heroes. + (`libs/workspace/dashboard/feature`) patches each movie/series hero slide + with a TMDB backdrop (when the activity row has none), a rating badge, up + to two genre chips, the overview and the release/first-air year — resolved + through the enrichment facade, so items already opened in a detail view + come from the SQLite cache without network. Results are memoized per + lookup identity for the session. Slides render immediately from provider + data; extras appear when resolved and disappear when TMDB is turned off. + Series slides additionally show the tracked "S{n}·E{n}" badge from the + playback position (no TMDB involved). Live slides never query TMDB. The query is built to **match what the detail view searched with**, not just what the card displays. A title alone is weaker identity than the diff --git a/docs/architecture/workspace-dashboard.md b/docs/architecture/workspace-dashboard.md index 51f61c67c..c06c43c94 100644 --- a/docs/architecture/workspace-dashboard.md +++ b/docs/architecture/workspace-dashboard.md @@ -37,7 +37,7 @@ Core implementation: ``` ┌─────────────────────────────────────────────────────────────────────┐ -│ Hero — Continue Watching (most recent item) │ +│ Hero — rotating cinematic banner (resume · live · discovery) │ ├─────────────────────────────────────────────────────────────────────┤ │ Continue Watching · See all → │ │ [poster][poster][poster][poster] →→ │ @@ -73,12 +73,14 @@ Render rules: slow rail does not hide already available content. 2. `hasPlaylists() === false` → render `` full-bleed. All rails and the hero are skipped. -3. `hero()` = `globalRecentItems()[0]`. If present, render the hero panel. +3. The hero (`lib-dashboard-hero`) renders when it has at least one slide; + see [Cinematic Hero](#cinematic-hero). It shows its own skeleton while + the first history load runs. 4. Each rail is emitted via `@if (cards.length > 0)`. Empty rails are hidden — there is no "empty widget" placeholder. -5. The continue-watching hero prefers a stored Xtream `backdrop_url`; when it - is missing the UI falls back to a blurred poster treatment instead of - showing a flat panel. +5. Hero slides prefer a stored `backdrop_url`, then the TMDB backdrop; when + both are missing the poster becomes a blurred wash plus key art on the + right instead of a flat panel. 6. Live favorites are promoted into their own live rail; movie/series favorites render in a separate `Favorite movies & series` rail (`favoriteMoviesAndSeriesCards`, `data-test-id="dashboard-favorite-vod-rail"`, @@ -89,6 +91,47 @@ Render rules: favorites. This avoids first-paint partial counts such as a single Stalker favorite appearing before M3U favorites finish resolving. +## Cinematic Hero + +`DashboardHeroComponent` renders a full-bleed banner: it cancels the page's +`--dashboard-gutter`/top padding and the centred `--dashboard-max-width` +(the page host is the `dashboard` inline-size container), keeps +`clamp(320px, 42vh, 520px)` so the first rail starts above the fold, and uses +`--app-content-bg` as its scrim so it dissolves into the page in both themes. + +Slides (`pickDashboardHeroSources`, at most four, stable order, each title +once): + +1. the newest unfinished movie/series (`isPortalPlaybackWatched` rows skip); +2. a live channel with a programme on air — the first of + `selectDashboardHeroLiveCandidates` (up to three favourites, then two + recently watched channels) whose EPG answer has a title; +3. one favourite movie/series and one Xtream recently-added title; +4. remaining places round-robin over the next items of those lists; +5. only when nothing qualifies, the newest history row of any kind (a + detail action: it can be a finished title). + +While live candidates exist but none has answered yet, one place stays +reserved for the live slide, so its late arrival never evicts a slide the +user may be viewing. + +The live candidates are derived and pinned by `DashboardLiveEpgPresenter` +itself (XMLTV lookup and portal queue), independent of the live rails, so the +slide works with those rails hidden. Actions: a resume slide keeps the resume +handoff and adds a detail-only "Details" when a series episode can resume; +discovery slides open the detail page; live slides open the channel. TMDB +extras (backdrop, rating, genres, overview, year) come from +`DashboardHeroTmdbService` per featured title and vanish when TMDB is off. + +Rotation is the active dot's CSS fill animation (8 s); its `animationend` +advances. Hover, focus inside the hero and the pause button pause it; an +explicit Play clears the hover/focus pause until they re-arm; under +`prefers-reduced-motion` nothing auto-advances. The active slide is tracked +by id, so a late live slide never moves the user off the current one. Test +hooks: `dashboard-hero`, `dashboard-hero-slide` (`data-hero-kind`), +`dashboard-hero-dot`, `dashboard-hero-pause`, +`dashboard-hero-primary-action`, `dashboard-hero-secondary-action`. + ## Rail Contract `DashboardRailComponent` is purely presentational: @@ -109,7 +152,8 @@ Render rules: 1. `WorkspaceDashboardRailsComponent` injects `DashboardDataService`. 2. It derives the dashboard surface via `computed()`: - 1. `hero` — first item of `globalRecentItems()`. + 1. The hero slides — built by `DashboardHeroSlidesPresenter`, see + [Cinematic Hero](#cinematic-hero). 2. `continueWatchingCards` — maps `globalRecentVodItems()` to movie/series cover cards. Portal playback positions are bulk-loaded per playlist so hero and cards can show progress, remaining time, and series season/ @@ -161,12 +205,12 @@ Render rules: card counts as visible. Cards that leave the list are reported gone at once. - `DashboardPortalLiveEpgPresenter` (component-provided) unions the - visible keys of both rails with the pinned hero key and calls + visible keys of both rails with the pinned hero keys and calls `DashboardPortalLiveEpgService.sync()` with exactly those entries — on every change, on the 30 s tick, and on a display-offset change. It is reached through `DashboardLiveEpgPresenter`, which derives the - portal rows itself from the enabled rails and pins the hero, so the - page component only forwards what a rail can see. The queue lives in + portal rows itself from the enabled rails and pins the hero's live + candidates, so the page component only forwards what a rail can see. The queue lives in the root service, so leaving the dashboard hands the wanted set back (`sync([])` on destroy); otherwise the queue would keep asking for cards on a page that is gone. diff --git a/libs/workspace/dashboard/feature/README.md b/libs/workspace/dashboard/feature/README.md index 8c8fe5acd..72d0f8144 100644 --- a/libs/workspace/dashboard/feature/README.md +++ b/libs/workspace/dashboard/feature/README.md @@ -10,10 +10,10 @@ contracts on its own. The dashboard renders a surface only when the matching setting is enabled. Data rails also require the underlying data slice to have at least one item. -- `hero` shows the large top banner for the most recent global item. When that - item is a live TV channel, the hero looks up the current XMLTV programme and - displays the programme title, time range, and EPG progress bar when data is - available. +- `hero` shows the full-width cinematic banner that rotates between the + newest unfinished title, a favourite (or recent) channel with a programme on + air, and favourite / recently added titles. Contract: + `docs/architecture/workspace-dashboard.md#cinematic-hero`. - `continueWatching` shows recent movies and series from `DashboardDataService.globalRecentVodItems()` using cover cards with playback progress when a saved resume position is available. diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.presenter.spec.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.presenter.spec.ts new file mode 100644 index 000000000..ebb72ab5d --- /dev/null +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.presenter.spec.ts @@ -0,0 +1,383 @@ +import { signal } from '@angular/core'; +import { TestBed } from '@angular/core/testing'; +import { TranslateService } from '@ngx-translate/core'; +import { Subject } from 'rxjs'; +import type { + PlaybackPositionData, + PortalActivityItem, + PortalAddedItem, + PortalFavoriteItem, + PortalRecentItem, +} from '@iptvnator/shared/interfaces'; +import { DashboardDataService } from '@iptvnator/workspace/dashboard/data-access'; +import { + DashboardHeroTmdbService, + type DashboardHeroTmdbExtras, +} from './dashboard-hero-tmdb.service'; +import { DashboardHeroSlidesPresenter } from './dashboard-hero-slides.presenter'; +import type { DashboardHeroLiveCandidate } from './dashboard-hero-slides.utils'; +import { DashboardLiveEpgPresenter } from './dashboard-live-epg.presenter'; +import type { DashboardLiveEpgDetails } from './dashboard-live-epg.utils'; + +const series: PortalRecentItem = { + id: 1, + title: 'Big Pharma', + type: 'movie', + watch_kind: 'series', + source: 'stalker', + playlist_id: 'p1', + playlist_name: 'rucolor', + category_id: '1', + xtream_id: 11, + poster_url: 'https://img/pharma-poster.jpg', + viewed_at: '2026-09-02', +}; +const watchedMovie: PortalRecentItem = { + ...series, + id: 2, + title: 'Finished Film', + watch_kind: 'movie', + xtream_id: 12, + viewed_at: '2026-09-01', +}; +const channel: PortalFavoriteItem = { + id: 3, + title: 'Match TV', + type: 'live', + source: 'xtream', + playlist_id: 'p2', + category_id: '5', + xtream_id: 33, + poster_url: 'https://img/match-logo.png', + added_at: '2026-08-01', +}; +const favoriteFilm: PortalFavoriteItem = { + id: 4, + title: 'Burnley', + type: 'series', + source: 'xtream', + playlist_id: 'p2', + playlist_name: 'http://user:secret@4kgood.org:8080', + category_id: '9', + xtream_id: 44, + release_year: 2023, + added_at: '2026-08-02', +}; +const import1: PortalAddedItem = { + id: 5, + title: 'Parallel Stories', + type: 'movie', + source: 'xtream', + playlist_id: 'p3', + category_id: '2', + xtream_id: 55, + backdrop_url: 'https://img/parallel-wide.jpg', + added_at: '2026-09-03', +}; + +const onAir: DashboardLiveEpgDetails = { + nowPlayingTitle: 'Football: farewell match', + nowPlayingTimeRange: '18:50 – 20:55', + nowPlayingProgress: 35, + nowPlayingDescription: 'Live from Moscow.', + nowPlayingCategory: 'Sport', +}; + +describe('DashboardHeroSlidesPresenter', () => { + let recentItems: ReturnType>; + let favorites: ReturnType>; + let addedItems: ReturnType>; + let candidates: ReturnType>; + let liveDetails: jest.Mock; + let tmdbEnabled: ReturnType>; + let tmdbLanguage: ReturnType>; + let getExtras: jest.Mock; + const positions = new Map([ + [ + 1, + { + contentXtreamId: 111, + contentType: 'episode', + seriesXtreamId: 11, + seasonNumber: 1, + episodeNumber: 3, + positionSeconds: 600, + durationSeconds: 1800, + }, + ], + [ + 2, + { + contentXtreamId: 12, + contentType: 'vod', + positionSeconds: 5900, + durationSeconds: 6000, + }, + ], + ]); + + function create(): DashboardHeroSlidesPresenter { + TestBed.configureTestingModule({ + providers: [ + DashboardHeroSlidesPresenter, + { + provide: DashboardDataService, + useValue: { + globalRecentLoading: signal(false), + globalRecentItems: recentItems, + globalRecentVodItems: () => + recentItems().filter((i) => i.type !== 'live'), + globalFavoriteItems: favorites, + xtreamRecentlyAddedItems: addedItems, + getPlaybackPositionForItem: ( + item: PortalActivityItem + ) => positions.get(item.id) ?? null, + getRecentItemLink: (item: PortalActivityItem) => [ + '/recent', + String(item.id), + ], + getRecentItemNavigationState: () => ({ resume: true }), + getRecentItemDetailNavigationState: () => ({ + resume: false, + }), + getRecentItemResumeNavigation: ( + item: PortalActivityItem + ) => (item.id === 1 ? { link: [], state: {} } : null), + getGlobalFavoriteLink: (item: PortalActivityItem) => [ + '/favorite', + String(item.id), + ], + getGlobalFavoriteNavigationState: () => ({ fav: true }), + getRecentlyAddedLink: (item: PortalActivityItem) => [ + '/added', + String(item.id), + ], + getRecentlyAddedNavigationState: () => ({ + added: true, + }), + }, + }, + { + provide: DashboardLiveEpgPresenter, + useValue: { + heroLiveCandidates: candidates, + heroDetailsFor: liveDetails, + }, + }, + { + provide: DashboardHeroTmdbService, + useValue: { + isEnabled: () => tmdbEnabled(), + keyFor: (item: PortalActivityItem) => + `${tmdbLanguage()}//${item.title}`, + getExtras, + }, + }, + { + provide: TranslateService, + useValue: { + onLangChange: new Subject(), + instant: (key: string, params?: object) => + params ? `${key} ${JSON.stringify(params)}` : key, + }, + }, + ], + }); + return TestBed.inject(DashboardHeroSlidesPresenter); + } + + beforeEach(() => { + recentItems = signal([series, watchedMovie]); + favorites = signal([channel, favoriteFilm]); + addedItems = signal([import1]); + candidates = signal([{ origin: 'favorite', item: channel }]); + liveDetails = jest.fn(() => onAir); + tmdbEnabled = signal(false); + tmdbLanguage = signal('en-US'); + getExtras = jest.fn().mockResolvedValue(null); + }); + + it('builds the rotation from resume, live, favourite and import slides', () => { + const slides = create().slides(); + + expect(slides.map((slide) => [slide.kind, slide.title])).toEqual([ + ['continue', 'Big Pharma'], + ['live', 'Match TV'], + ['favorite', 'Burnley'], + ['added', 'Parallel Stories'], + ]); + // A (nearly) finished film is not something to continue. + expect(slides.some((slide) => slide.title === 'Finished Film')).toBe( + false + ); + }); + + it('resumes an unfinished series and offers a detail-only way in', () => { + const [resume] = create().slides(); + + expect(resume).toMatchObject({ + typeLabelKey: 'WORKSPACE.DASHBOARD.TYPE_SERIES', + reasonLabelKey: 'WORKSPACE.DASHBOARD.CONTINUE_WATCHING', + episodeBadge: + 'WORKSPACE.DASHBOARD.SEASON_EPISODE_BADGE {"season":1,"episode":3}', + source: 'rucolor', + progress: 33, + // No 16:9 backdrop: the poster becomes the blurred stage. + backdropSource: 'poster', + primaryAction: { + labelKey: 'WORKSPACE.DASHBOARD.HERO_CONTINUE', + link: ['/recent', '1'], + state: { resume: true }, + remainingLabel: { + key: 'WORKSPACE.DASHBOARD.REMAINING_MINUTES', + params: { minutes: 20 }, + }, + }, + secondaryAction: { + labelKey: 'WORKSPACE.DASHBOARD.HERO_DETAILS', + state: { resume: false }, + }, + }); + }); + + it('shows a favourite channel with its programme on air now', () => { + const live = create().slides()[1]; + + expect(live).toMatchObject({ + typeLabelKey: 'WORKSPACE.DASHBOARD.TYPE_LIVE', + reasonLabelKey: 'WORKSPACE.DASHBOARD.HERO_FAVORITE_CHANNEL', + programmeTitle: 'Football: farewell match', + description: 'Live from Moscow.', + category: 'Sport', + timeRange: '18:50 – 20:55', + progress: 35, + primaryAction: { + labelKey: 'WORKSPACE.DASHBOARD.HERO_WATCH_LIVE', + link: ['/favorite', '3'], + }, + secondaryAction: null, + }); + }); + + it('leaves the live slide out until a candidate has a programme on air', () => { + liveDetails.mockReturnValue(null); + const presenter = create(); + + expect(presenter.slides().map((slide) => slide.kind)).not.toContain( + 'live' + ); + }); + + it('opens discovery slides on their detail page, with a safe source label', () => { + const slides = create().slides(); + + // The stored name is a URL with credentials: only its host shows. + expect(slides[2].source).toBe('4kgood.org:8080'); + expect(slides[2]).toMatchObject({ + year: 2023, + primaryAction: { + labelKey: 'WORKSPACE.DASHBOARD.HERO_DETAILS', + link: ['/favorite', '4'], + }, + secondaryAction: null, + }); + expect(slides[3]).toMatchObject({ + backdropSource: 'backdrop', + primaryAction: { link: ['/added', '5'], state: { added: true } }, + }); + }); + + it('patches TMDB extras in, and drops them when TMDB is switched off', async () => { + tmdbEnabled.set(true); + const extras: DashboardHeroTmdbExtras = { + backdropUrl: 'https://tmdb/pharma-wide.jpg', + rating: '7.5', + genres: ['Drama'], + overview: 'A pharmacist enters big business.', + year: 2024, + }; + getExtras.mockImplementation((item: PortalActivityItem) => + Promise.resolve(item.title === 'Big Pharma' ? extras : null) + ); + const presenter = create(); + TestBed.tick(); + await Promise.resolve(); + + expect(getExtras).toHaveBeenCalledTimes(3); + expect(presenter.slides()[0]).toMatchObject({ + backdropUrl: 'https://tmdb/pharma-wide.jpg', + backdropSource: 'backdrop', + rating: '7.5', + genres: ['Drama'], + description: 'A pharmacist enters big business.', + year: 2024, + }); + + tmdbEnabled.set(false); + expect(presenter.slides()[0]).toMatchObject({ + backdropSource: 'poster', + rating: null, + description: null, + }); + }); + + it('loads the extras again when the TMDB language changes', async () => { + tmdbEnabled.set(true); + getExtras.mockImplementation((item: PortalActivityItem) => + Promise.resolve( + item.title === 'Big Pharma' + ? { + backdropUrl: null, + rating: '7.5', + genres: [ + tmdbLanguage() === 'en-US' ? 'Drama' : 'Драма', + ], + overview: `plot in ${tmdbLanguage()}`, + year: 2024, + } + : null + ) + ); + const presenter = create(); + TestBed.tick(); + await Promise.resolve(); + expect(presenter.slides()[0].description).toBe('plot in en-US'); + + tmdbLanguage.set('ru-RU'); + TestBed.tick(); + await Promise.resolve(); + + expect(getExtras).toHaveBeenCalledTimes(6); + expect(presenter.slides()[0]).toMatchObject({ + description: 'plot in ru-RU', + genres: ['Драма'], + }); + }); + + it('opens a finished fallback title on its details, never "Continue"', () => { + recentItems.set([watchedMovie]); + favorites.set([]); + addedItems.set([]); + candidates.set([]); + const [fallback] = create().slides(); + + expect(fallback).toMatchObject({ + kind: 'recent', + primaryAction: { + labelKey: 'WORKSPACE.DASHBOARD.HERO_DETAILS', + state: { resume: false }, + }, + secondaryAction: null, + }); + }); + + it('falls back to the generated stage when an image fails to load', () => { + const presenter = create(); + presenter.markImageFailed('https://img/pharma-poster.jpg'); + + expect(presenter.slides()[0]).toMatchObject({ + backdropUrl: undefined, + backdropSource: 'fallback', + }); + }); +}); diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.presenter.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.presenter.ts new file mode 100644 index 000000000..9321cac0a --- /dev/null +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.presenter.ts @@ -0,0 +1,372 @@ +import { + computed, + effect, + inject, + Injectable, + signal, + untracked, +} from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; +import { TranslateService } from '@ngx-translate/core'; +import { startWith } from 'rxjs'; +import { isPortalPlaybackWatched } from '@iptvnator/portal/shared/util'; +import { + playlistDisplayLabel, + resolvePortalActivityWatchKind, + type PlaybackPositionData, + type PortalActivityItem, +} from '@iptvnator/shared/interfaces'; +import { DashboardDataService } from '@iptvnator/workspace/dashboard/data-access'; +import { + DashboardHeroTmdbService, + type DashboardHeroTmdbExtras, +} from './dashboard-hero-tmdb.service'; +import { + dashboardHeroHue, + resolveDashboardHeroArtwork, + type DashboardHeroAction, + type DashboardHeroSlide, +} from './dashboard-hero.utils'; +import { + dashboardHeroItemKey, + pickDashboardHeroSources, + type DashboardHeroSource, +} from './dashboard-hero-slides.utils'; +import { DashboardLiveEpgPresenter } from './dashboard-live-epg.presenter'; +import type { DashboardLiveEpgDetails } from './dashboard-live-epg.utils'; +import { + buildDashboardEpisodeBadge, + formatRemainingLabel, + playbackProgressPercent, +} from './dashboard-playback.utils'; + +const TYPE_LABEL_KEYS = { + live: 'WORKSPACE.DASHBOARD.TYPE_LIVE', + movie: 'WORKSPACE.DASHBOARD.TYPE_MOVIE', + series: 'WORKSPACE.DASHBOARD.TYPE_SERIES', +} as const; + +const PROVIDER_LABEL_KEYS = { + xtream: 'WORKSPACE.DASHBOARD.XTREAM', + stalker: 'WORKSPACE.DASHBOARD.STALKER', + m3u: 'WORKSPACE.DASHBOARD.M3U', +} as const; + +/** + * Builds the cinematic hero's rotation slides from the dashboard data: + * which titles are featured (`pickDashboardHeroSources`), their artwork, + * TMDB extras, playback progress, live programme and actions. + * + * Component-provided next to the hero; the live programme answers come from + * the page's `DashboardLiveEpgPresenter`, which already pins the hero's live + * candidates. TMDB extras are fetched per featured title after first paint, + * memoized by `DashboardHeroTmdbService`, and vanish immediately when the + * user opts out of TMDB mid-session. + */ +@Injectable() +export class DashboardHeroSlidesPresenter { + private readonly data = inject(DashboardDataService); + private readonly liveEpg = inject(DashboardLiveEpgPresenter); + private readonly heroTmdb = inject(DashboardHeroTmdbService); + private readonly translate = inject(TranslateService); + private readonly languageTick = toSignal( + this.translate.onLangChange.pipe(startWith(null)), + { initialValue: null } + ); + + private readonly failedImages = signal>({}); + private readonly tmdbExtras = signal< + ReadonlyMap + >(new Map()); + private readonly requestedTmdbKeys = new Set(); + + /** First history load still running and nothing to feature yet. */ + readonly loading = computed( + () => this.data.globalRecentLoading() && this.slides().length === 0 + ); + + /** The first candidate channel with a programme on air right now. */ + private readonly liveSlide = computed(() => { + for (const candidate of this.liveEpg.heroLiveCandidates()) { + const details = this.liveEpg.heroDetailsFor(candidate.item); + if (details?.nowPlayingTitle) { + return { candidate, details }; + } + } + return null; + }); + + private readonly sources = computed(() => + pickDashboardHeroSources({ + continueItems: this.data + .globalRecentVodItems() + .filter( + (item) => + !isPortalPlaybackWatched( + this.data.getPlaybackPositionForItem(item) + ) + ), + live: this.liveSlide()?.candidate ?? null, + reserveLive: this.liveEpg.heroLiveCandidates().length > 0, + favorites: this.data + .globalFavoriteItems() + .filter( + (item) => item.type === 'movie' || item.type === 'series' + ), + recentlyAdded: this.data.xtreamRecentlyAddedItems(), + mostRecent: this.data.globalRecentItems()[0] ?? null, + }) + ); + + readonly slides = computed(() => { + this.languageTick(); + const liveDetails = this.liveSlide()?.details ?? null; + return this.sources().map((source) => + this.toSlide(source, liveDetails) + ); + }); + + constructor() { + effect(() => { + if (!this.heroTmdb.isEnabled()) { + return; + } + // Keys read here, tracked: they carry the TMDB language, so a + // language change loads the localized overview and genres. + const requests = this.sources() + .map((source) => source.item) + .filter((item) => item.type !== 'live') + .map((item) => ({ item, key: this.heroTmdb.keyFor(item) })); + untracked(() => + requests.forEach(({ item, key }) => + this.loadTmdbExtras(item, key) + ) + ); + }); + } + + markImageFailed(url: string): void { + this.failedImages.update((state) => + state[url] ? state : { ...state, [url]: true } + ); + } + + private loadTmdbExtras(item: PortalActivityItem, key: string): void { + if (this.requestedTmdbKeys.has(key)) { + return; + } + this.requestedTmdbKeys.add(key); + void this.heroTmdb.getExtras(item).then((extras) => { + this.tmdbExtras.update((state) => new Map(state).set(key, extras)); + }); + } + + private toSlide( + source: DashboardHeroSource, + liveDetails: DashboardLiveEpgDetails | null + ): DashboardHeroSlide { + const item = source.item; + const isLive = item.type === 'live'; + // Single reactive read, gated on the TMDB opt-in + const extras = + !isLive && this.heroTmdb.isEnabled() + ? (this.tmdbExtras().get(this.heroTmdb.keyFor(item)) ?? null) + : null; + const details = + source.kind === 'live' + ? liveDetails + : isLive + ? this.liveEpg.heroDetailsFor(item) + : null; + const position = isLive + ? null + : this.data.getPlaybackPositionForItem(item); + const artwork = resolveDashboardHeroArtwork( + { + backdropUrl: item.backdrop_url || extras?.backdropUrl || null, + posterUrl: item.poster_url, + title: item.title, + }, + this.failedImages() + ); + + return { + ...artwork, + id: `${source.kind}:${dashboardHeroItemKey(item)}`, + kind: source.kind, + contentType: item.type, + title: item.title, + // Watch kind: a Stalker embedded-VOD show routes as a movie + typeLabelKey: + TYPE_LABEL_KEYS[ + isLive + ? 'live' + : (resolvePortalActivityWatchKind(item) ?? item.type) + ], + reasonLabelKey: this.reasonLabelKey(source), + episodeBadge: buildDashboardEpisodeBadge( + item, + position, + (key, params) => this.translate.instant(key, params) + ), + rating: extras?.rating ?? null, + genres: extras?.genres ?? [], + year: extras?.year ?? item.release_year ?? null, + source: playlistDisplayLabel( + item.playlist_name, + this.translate.instant( + item.source + ? PROVIDER_LABEL_KEYS[item.source] + : 'WORKSPACE.DASHBOARD.PROVIDER' + ) + ), + programmeTitle: details?.nowPlayingTitle ?? null, + category: details?.nowPlayingCategory ?? null, + timeRange: details?.nowPlayingTimeRange ?? null, + description: isLive + ? (details?.nowPlayingDescription ?? null) + : (extras?.overview ?? null), + progress: isLive + ? (details?.nowPlayingProgress ?? null) + : playbackProgressPercent(position), + accentHue: dashboardHeroHue(item.title), + ...this.actionsFor(source, position), + }; + } + + private reasonLabelKey(source: DashboardHeroSource): string { + switch (source.kind) { + case 'continue': + return 'WORKSPACE.DASHBOARD.CONTINUE_WATCHING'; + case 'live': + return source.origin === 'favorite' + ? 'WORKSPACE.DASHBOARD.HERO_FAVORITE_CHANNEL' + : 'WORKSPACE.DASHBOARD.RECENTLY_WATCHED'; + case 'favorite': + return 'WORKSPACE.DASHBOARD.HERO_FAVORITE'; + case 'added': + return 'WORKSPACE.DASHBOARD.HERO_RECENTLY_ADDED'; + case 'recent': + return 'WORKSPACE.DASHBOARD.RECENTLY_WATCHED'; + } + } + + /** + * Resume slides keep the hero's resume handoff (a saved series episode + * auto-plays) and offer "Details" as the detail-only way in; discovery + * and fallback slides open the detail page; live slides open the channel. + */ + private actionsFor( + source: DashboardHeroSource, + position: PlaybackPositionData | null + ): Pick { + switch (source.kind) { + case 'live': + return { + primaryAction: + source.origin === 'favorite' + ? watchLiveAction( + this.data.getGlobalFavoriteLink(source.item), + this.data.getGlobalFavoriteNavigationState( + source.item + ) + ) + : watchLiveAction( + this.data.getRecentItemLink(source.item), + this.data.getRecentItemNavigationState( + source.item + ) + ), + secondaryAction: null, + }; + case 'favorite': + return { + primaryAction: detailsAction( + this.data.getGlobalFavoriteLink(source.item), + this.data.getGlobalFavoriteNavigationState(source.item) + ), + secondaryAction: null, + }; + case 'added': + return { + primaryAction: detailsAction( + this.data.getRecentlyAddedLink(source.item), + this.data.getRecentlyAddedNavigationState(source.item) + ), + secondaryAction: null, + }; + case 'continue': + case 'recent': { + const item = source.item; + const link = this.data.getRecentItemLink(item); + const state = this.data.getRecentItemNavigationState(item); + if (item.type === 'live') { + return { + primaryAction: watchLiveAction(link, state), + secondaryAction: null, + }; + } + // The fallback row can be a finished title (the resume + // candidates skip those): nothing to continue, open details. + if (source.kind === 'recent') { + return { + primaryAction: detailsAction( + link, + this.data.getRecentItemDetailNavigationState(item) + ), + secondaryAction: null, + }; + } + const canResume = + this.data.getRecentItemResumeNavigation(item) !== null; + return { + primaryAction: { + labelKey: 'WORKSPACE.DASHBOARD.HERO_CONTINUE', + icon: 'play_arrow', + link, + state, + remainingLabel: formatRemainingLabel(position), + testId: 'dashboard-hero-primary-action', + }, + secondaryAction: canResume + ? { + ...detailsAction( + link, + this.data.getRecentItemDetailNavigationState( + item + ) + ), + testId: 'dashboard-hero-secondary-action', + } + : null, + }; + } + } + } +} + +function watchLiveAction( + link: string[], + state: Record | undefined +): DashboardHeroAction { + return { + labelKey: 'WORKSPACE.DASHBOARD.HERO_WATCH_LIVE', + icon: 'play_arrow', + link, + state, + testId: 'dashboard-hero-primary-action', + }; +} + +function detailsAction( + link: string[], + state: Record | undefined +): DashboardHeroAction { + return { + labelKey: 'WORKSPACE.DASHBOARD.HERO_DETAILS', + icon: 'info', + link, + state, + testId: 'dashboard-hero-primary-action', + }; +} diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.utils.spec.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.utils.spec.ts new file mode 100644 index 000000000..e5e9f4119 --- /dev/null +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.utils.spec.ts @@ -0,0 +1,226 @@ +import type { + PortalAddedItem, + PortalFavoriteItem, + PortalRecentItem, +} from '@iptvnator/shared/interfaces'; +import { + dashboardHeroItemKey, + HERO_SLIDE_LIMIT, + pickDashboardHeroSources, + selectDashboardHeroLiveCandidates, + type DashboardHeroSourceInput, +} from './dashboard-hero-slides.utils'; + +const base = ( + id: number, + type: 'live' | 'movie' | 'series', + title: string +) => ({ + id, + title, + type, + playlist_id: 'p', + category_id: '1', + xtream_id: id, + source: 'xtream' as const, +}); +const recent = ( + id: number, + type: 'live' | 'movie' | 'series' = 'movie' +): PortalRecentItem => ({ + ...base(id, type, `recent-${id}`), + viewed_at: '2026-09-01', +}); +const favorite = ( + id: number, + type: 'live' | 'movie' | 'series' = 'movie' +): PortalFavoriteItem => ({ + ...base(id, type, `favorite-${id}`), + added_at: '2026-09-01', +}); +const added = (id: number): PortalAddedItem => ({ + ...base(id, 'movie', `added-${id}`), + added_at: '2026-09-01', +}); + +const input = ( + overrides: Partial +): DashboardHeroSourceInput => ({ + continueItems: [], + live: null, + reserveLive: false, + favorites: [], + recentlyAdded: [], + mostRecent: null, + ...overrides, +}); + +const summary = (sources: ReturnType) => + sources.map((source) => `${source.kind}:${source.item.title}`); + +describe('pickDashboardHeroSources', () => { + it('leads with the title to resume, then live, a favourite and an import', () => { + const live = favorite(50, 'live'); + expect( + summary( + pickDashboardHeroSources( + input({ + continueItems: [recent(1), recent(2)], + live: { origin: 'favorite', item: live }, + favorites: [favorite(10), favorite(11)], + recentlyAdded: [added(20), added(21)], + }) + ) + ) + ).toEqual([ + 'continue:recent-1', + 'live:favorite-50', + 'favorite:favorite-10', + 'added:added-20', + ]); + }); + + it('fills the remaining places round-robin and never exceeds the limit', () => { + const sources = pickDashboardHeroSources( + input({ + continueItems: [recent(1), recent(2), recent(3)], + favorites: [favorite(10)], + }) + ); + + expect(summary(sources)).toEqual([ + 'continue:recent-1', + 'favorite:favorite-10', + 'continue:recent-2', + 'continue:recent-3', + ]); + expect(sources.length).toBeLessThanOrEqual(HERO_SLIDE_LIMIT); + }); + + it('features a title once even when it is both unfinished and a favourite', () => { + const shared = recent(1); + expect( + summary( + pickDashboardHeroSources( + input({ + continueItems: [shared], + favorites: [{ ...shared, added_at: 'x' }, favorite(10)], + }) + ) + ) + ).toEqual(['continue:recent-1', 'favorite:favorite-10']); + }); + + it('keeps the order stable when the live slide arrives late', () => { + const without = summary( + pickDashboardHeroSources( + input({ + continueItems: [recent(1)], + favorites: [favorite(10)], + }) + ) + ); + const withLive = summary( + pickDashboardHeroSources( + input({ + continueItems: [recent(1)], + live: { origin: 'recent', item: recent(60, 'live') }, + favorites: [favorite(10)], + }) + ) + ); + + expect(without).toEqual(['continue:recent-1', 'favorite:favorite-10']); + expect(withLive).toEqual([ + 'continue:recent-1', + 'live:recent-60', + 'favorite:favorite-10', + ]); + }); + + it('keeps a place for a pending live slide so its arrival evicts nothing', () => { + const lists = { + continueItems: [recent(1), recent(2)], + favorites: [favorite(10)], + recentlyAdded: [added(20)], + }; + const pending = summary( + pickDashboardHeroSources(input({ ...lists, reserveLive: true })) + ); + const arrived = summary( + pickDashboardHeroSources( + input({ + ...lists, + reserveLive: true, + live: { origin: 'favorite', item: favorite(50, 'live') }, + }) + ) + ); + + expect(pending).toEqual([ + 'continue:recent-1', + 'favorite:favorite-10', + 'added:added-20', + ]); + // Every slide shown before the live answer is still there after it. + expect(arrived).toEqual([ + 'continue:recent-1', + 'live:favorite-50', + 'favorite:favorite-10', + 'added:added-20', + ]); + expect( + summary(pickDashboardHeroSources(input({ ...lists }))) + ).toHaveLength(HERO_SLIDE_LIMIT); + }); + + it('falls back to the newest history row only when nothing else qualifies', () => { + const channel = recent(70, 'live'); + expect( + summary(pickDashboardHeroSources(input({ mostRecent: channel }))) + ).toEqual(['recent:recent-70']); + expect( + summary( + pickDashboardHeroSources( + input({ mostRecent: channel, favorites: [favorite(10)] }) + ) + ) + ).toEqual(['favorite:favorite-10']); + expect(pickDashboardHeroSources(input({}))).toEqual([]); + }); +}); + +describe('selectDashboardHeroLiveCandidates', () => { + it('prefers favourites, adds recent channels and skips duplicates', () => { + const candidates = selectDashboardHeroLiveCandidates( + [ + favorite(1, 'live'), + favorite(2, 'live'), + favorite(3, 'live'), + favorite(4, 'live'), + ], + [recent(2, 'live'), recent(5, 'live'), recent(6, 'live')] + ); + + expect( + candidates.map(({ origin, item }) => `${origin}:${item.id}`) + ).toEqual(['favorite:1', 'favorite:2', 'favorite:3', 'recent:5']); + }); + + it('ignores non-live rows', () => { + expect( + selectDashboardHeroLiveCandidates([favorite(1, 'movie')], []) + ).toEqual([]); + }); +}); + +describe('dashboardHeroItemKey', () => { + it('identifies a title across the lists it can come from', () => { + expect(dashboardHeroItemKey(recent(1))).toBe( + dashboardHeroItemKey(favorite(1)) + ); + expect(dashboardHeroItemKey(recent(1))).not.toBe( + dashboardHeroItemKey(recent(1, 'series')) + ); + }); +}); diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.utils.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.utils.ts new file mode 100644 index 000000000..22dae216f --- /dev/null +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-slides.utils.ts @@ -0,0 +1,152 @@ +import type { + PortalActivityItem, + PortalAddedItem, + PortalFavoriteItem, + PortalRecentItem, +} from '@iptvnator/shared/interfaces'; + +/** Slides the cinematic hero rotates through, at most. */ +export const HERO_SLIDE_LIMIT = 4; + +/** Auto-advance interval; the active dot fills over the same duration. */ +export const HERO_ROTATION_MS = 8_000; + +const HERO_LIVE_FAVORITE_CANDIDATES = 3; +const HERO_LIVE_RECENT_CANDIDATES = 2; + +/** + * Why a title is on the hero, which decides its eyebrow and actions: + * - `continue` — unfinished movie/series from the recent history + * - `live` — a favourite (or recently watched) channel with a programme on air + * - `favorite` / `added` — discovery slides from favourites and Xtream imports + * - `recent` — last-resort fallback: the most recent item of any kind, so a + * history with only guide-less live channels still gets a hero + */ +export type DashboardHeroSlideKind = + 'continue' | 'live' | 'favorite' | 'added' | 'recent'; + +export type DashboardHeroLiveCandidate = + | { readonly origin: 'favorite'; readonly item: PortalFavoriteItem } + | { readonly origin: 'recent'; readonly item: PortalRecentItem }; + +export type DashboardHeroSource = + | { readonly kind: 'continue' | 'recent'; readonly item: PortalRecentItem } + | ({ readonly kind: 'live' } & DashboardHeroLiveCandidate) + | { readonly kind: 'favorite'; readonly item: PortalFavoriteItem } + | { readonly kind: 'added'; readonly item: PortalAddedItem }; + +export interface DashboardHeroSourceInput { + /** Unfinished movies/series, most recent first. */ + readonly continueItems: readonly PortalRecentItem[]; + /** The channel picked for the live slide, when one has a programme on air. */ + readonly live: DashboardHeroLiveCandidate | null; + /** + * Channels exist that could still fill the live slide (their EPG answer + * may be pending). Its place is then kept free, so the slide arriving + * late never pushes another one out from under the user. + */ + readonly reserveLive: boolean; + /** Favourite movies/series. */ + readonly favorites: readonly PortalFavoriteItem[]; + readonly recentlyAdded: readonly PortalAddedItem[]; + /** The newest history row, used only when nothing else qualifies. */ + readonly mostRecent: PortalRecentItem | null; +} + +/** One title, whichever list it came from. */ +export function dashboardHeroItemKey( + item: Pick +): string { + return `${item.playlist_id}::${item.type}::${item.xtream_id ?? item.id}`; +} + +/** + * Channels that may fill the live slide, in preference order: favourites + * first (the slide is "your channel is on air"), then the channels watched + * most recently. The live EPG presenter pins exactly these so their + * programmes are looked up even when their rails are hidden or scrolled. + */ +export function selectDashboardHeroLiveCandidates( + favoriteLive: readonly PortalFavoriteItem[], + recentLive: readonly PortalRecentItem[] +): DashboardHeroLiveCandidate[] { + const seen = new Set(); + const candidates: DashboardHeroLiveCandidate[] = []; + const add = (candidate: DashboardHeroLiveCandidate) => { + const key = dashboardHeroItemKey(candidate.item); + if (candidate.item.type !== 'live' || seen.has(key)) { + return; + } + seen.add(key); + candidates.push(candidate); + }; + + favoriteLive + .slice(0, HERO_LIVE_FAVORITE_CANDIDATES) + .forEach((item) => add({ origin: 'favorite', item })); + recentLive + .slice(0, HERO_LIVE_RECENT_CANDIDATES) + .forEach((item) => add({ origin: 'recent', item })); + return candidates; +} + +/** + * The rotation mix: the title to resume first, then a channel on air now, + * then one favourite and one recent import; remaining places go to the next + * unfinished title, favourite and import in turn. A title never appears + * twice, and the order is stable so a slide arriving late (the live slide + * waits for its EPG answer) slots in without reshuffling the rest. While + * live candidates exist, one place stays reserved for the live slide, so + * its arrival never evicts a slide the user may be viewing. + */ +export function pickDashboardHeroSources( + input: DashboardHeroSourceInput +): DashboardHeroSource[] { + const seen = new Set(); + const sources: DashboardHeroSource[] = []; + const limit = + input.reserveLive && !input.live + ? HERO_SLIDE_LIMIT - 1 + : HERO_SLIDE_LIMIT; + const push = (source: DashboardHeroSource | null) => { + if (!source || sources.length >= limit) { + return; + } + const key = dashboardHeroItemKey(source.item); + if (seen.has(key)) { + return; + } + seen.add(key); + sources.push(source); + }; + const continueAt = (index: number) => { + const item = input.continueItems[index]; + return item ? ({ kind: 'continue', item } as const) : null; + }; + const favoriteAt = (index: number) => { + const item = input.favorites[index]; + return item ? ({ kind: 'favorite', item } as const) : null; + }; + const addedAt = (index: number) => { + const item = input.recentlyAdded[index]; + return item ? ({ kind: 'added', item } as const) : null; + }; + + push(continueAt(0)); + push(input.live ? { kind: 'live', ...input.live } : null); + push(favoriteAt(0)); + push(addedAt(0)); + // Ends once every list has run out; duplicates only skip a place. + for (let index = 1; sources.length < limit; index++) { + const next = [continueAt(index), favoriteAt(index), addedAt(index)]; + if (next.every((source) => source === null)) { + break; + } + next.forEach(push); + } + + if (sources.length === 0 && input.mostRecent) { + push({ kind: 'recent', item: input.mostRecent }); + } + return sources; +} diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-tmdb.service.spec.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-tmdb.service.spec.ts index e750713da..cec4be3b4 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-tmdb.service.spec.ts +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-tmdb.service.spec.ts @@ -11,7 +11,10 @@ describe('DashboardHeroTmdbService', () => { backdrop_path: '/serial.jpg', vote_average: 7.4, vote_count: 12, - genres: [{ id: 1, name: 'Drama' }, { id: 2, name: 'Comedy' }], + genres: [ + { id: 1, name: 'Drama' }, + { id: 2, name: 'Comedy' }, + ], }; /** @@ -53,6 +56,7 @@ describe('DashboardHeroTmdbService', () => { } as unknown as DashboardHeroTmdbItem; let isEnabled: jest.Mock; + let language: jest.Mock; let enrichMovie: jest.Mock; let enrichTv: jest.Mock; @@ -61,7 +65,7 @@ describe('DashboardHeroTmdbService', () => { providers: [ { provide: TmdbEnrichmentService, - useValue: { isEnabled, enrichMovie, enrichTv }, + useValue: { isEnabled, language, enrichMovie, enrichTv }, }, ], }); @@ -70,6 +74,7 @@ describe('DashboardHeroTmdbService', () => { beforeEach(() => { isEnabled = jest.fn().mockReturnValue(true); + language = jest.fn().mockReturnValue('en-US'); enrichMovie = jest.fn().mockResolvedValue(null); enrichTv = jest.fn().mockResolvedValue(tvDetails); }); @@ -88,6 +93,57 @@ describe('DashboardHeroTmdbService', () => { expect(enrichMovie).not.toHaveBeenCalled(); }); + it('maps the backdrop, rating, genres, overview and year for the slide', async () => { + enrichTv.mockResolvedValue({ + ...tvDetails, + genres: [ + { id: 1, name: 'Drama' }, + { id: 2, name: 'Comedy' }, + { id: 3, name: 'Crime' }, + ], + overview: ' A pharmacist enters big business. ', + first_air_date: '2024-11-18', + }); + const service = createService(); + + await expect( + service.getExtras({ title: 'Big Pharma', type: 'series' }) + ).resolves.toEqual({ + backdropUrl: expect.stringContaining('/serial.jpg'), + rating: '7.4', + genres: ['Drama', 'Comedy'], + overview: 'A pharmacist enters big business.', + year: 2024, + }); + }); + + it('loads the extras again for another TMDB language', async () => { + const service = createService(); + const item: DashboardHeroTmdbItem = { title: 'Serial', type: 'series' }; + + await service.getExtras(item); + const englishKey = service.keyFor(item); + await service.getExtras(item); + expect(enrichTv).toHaveBeenCalledTimes(1); + + language.mockReturnValue('ru-RU'); + expect(service.keyFor(item)).not.toBe(englishKey); + await service.getExtras(item); + expect(enrichTv).toHaveBeenCalledTimes(2); + }); + + it('reports a missing overview and year as null', async () => { + const service = createService(); + + const extras = await service.getExtras({ + title: 'No plot', + type: 'series', + }); + + expect(extras?.overview).toBeNull(); + expect(extras?.year).toBeNull(); + }); + it('falls back to a TV lookup for movie-typed items without a movie match', async () => { const service = createService(); @@ -256,7 +312,9 @@ describe('DashboardHeroTmdbService', () => { }, } as DashboardHeroTmdbItem; - expect(service.keyFor(stalkerItem)).not.toBe(service.keyFor(remake)); + expect(service.keyFor(stalkerItem)).not.toBe( + service.keyFor(remake) + ); await service.getExtras(stalkerItem); await service.getExtras(remake); diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-tmdb.service.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-tmdb.service.ts index d01d9af63..44d146fa6 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-tmdb.service.ts +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero-tmdb.service.ts @@ -1,5 +1,9 @@ import { Injectable, inject } from '@angular/core'; -import { TmdbEnrichmentService, tmdbBackdropUrl } from '@iptvnator/services'; +import { + TmdbEnrichmentService, + extractYear, + tmdbBackdropUrl, +} from '@iptvnator/services'; import { DashboardTmdbAttempt, DashboardTmdbLookupItem, @@ -12,6 +16,10 @@ export interface DashboardHeroTmdbExtras { readonly backdropUrl: string | null; readonly rating: string | null; readonly genres: readonly string[]; + /** TMDB plot, in the enrichment language; null when TMDB has none */ + readonly overview: string | null; + /** Release (movie) or first-air (series) year */ + readonly year: number | null; } /** Everything the hero lookup reads off an activity row */ @@ -20,7 +28,8 @@ export type DashboardHeroTmdbItem = DashboardTmdbLookupItem; const MAX_HERO_GENRES = 2; /** - * Best-effort TMDB extras for the hero card (backdrop, rating, genres). + * Best-effort TMDB extras for the hero slides (backdrop, rating, genres, + * overview, year). * Goes through the enrichment facade, so items already opened in a detail * view resolve from the SQLite cache without network. Results are memoized * per lookup identity for the session — dashboard revisits skip the IPC @@ -45,10 +54,13 @@ export class DashboardHeroTmdbService { /** * Identity of the lookup for an item — the memo key, and the staleness - * guard callers compare against while a request is in flight. + * guard callers compare against while a request is in flight. The TMDB + * language is part of it: the overview and genre names are localized, + * so a language change must load them again. Reactive when read inside + * a computed or effect (settings signal underneath). */ keyFor(item: DashboardHeroTmdbItem): string { - return dashboardTmdbLookupKey(item); + return `${this.enrichment.language()}//${dashboardTmdbLookupKey(item)}`; } getExtras( @@ -103,6 +115,9 @@ function toHeroExtras(details: { vote_average?: number; vote_count?: number; genres?: { name?: string }[]; + overview?: string; + release_date?: string; + first_air_date?: string; }): DashboardHeroTmdbExtras { const rating = (details.vote_count ?? 0) > 0 && details.vote_average @@ -116,5 +131,7 @@ function toHeroExtras(details: { .map((genre) => genre.name) .filter((name): name is string => Boolean(name)) .slice(0, MAX_HERO_GENRES), + overview: details.overview?.trim() || null, + year: extractYear(details.release_date ?? details.first_air_date), }; } diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.html b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.html new file mode 100644 index 000000000..49f632790 --- /dev/null +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.html @@ -0,0 +1,255 @@ +@if (activeSlide(); as active) { +
+ + + + @for (slide of [active]; track slide.id) { +
+

+ {{ slide.typeLabelKey | translate }} + + {{ slide.reasonLabelKey | translate }} +

+ +

{{ slide.title }}

+ +

+ @if (slide.episodeBadge) { + {{ slide.episodeBadge }} + } + @if (slide.rating) { + ★ {{ slide.rating }} + } + @for (genre of slide.genres; track genre) { + {{ genre }} + } + @if (slide.category) { + {{ slide.category }} + } + @if (slide.timeRange) { + {{ + slide.timeRange + }} + } + @if (slide.year) { + {{ slide.year }} + } + @if (slide.source) { + {{ + slide.source + }} + } +

+ + @if (slide.programmeTitle) { +

+ {{ slide.programmeTitle }} +

+ } + @if (slide.description) { +

{{ slide.description }}

+ } + + @if (slide.progress !== null) { + + + + } + + +
+ } + + @if (slides().length > 1) { +
+ @if (canRotate()) { + + } +
+ @for (slide of slides(); track slide.id) { + + } +
+
+ } +
+} @else if (presenter.loading()) { + +} diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.scss b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.scss new file mode 100644 index 000000000..408d15802 --- /dev/null +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.scss @@ -0,0 +1,670 @@ +// Cinematic dashboard hero. Bleeds to the edges of the workspace content +// area (the page's `--dashboard-gutter` padding and the centred max-width +// are both cancelled out), keeps a height ceiling so the first rail still +// starts above the fold, and dissolves into the page background instead of +// sitting in a raised card. +// +// The scrim is the page background itself (`--app-content-bg`), so the +// light theme gets a light scrim with dark text and the dark theme the +// reverse, with the same geometry. + +// The host renders nothing when there is no slide and no skeleton; with +// `display: contents` it then adds no flex gap to the rails page either. +:host { + display: contents; +} + +.hero { + // Offset of the rails' content edge from the content-area edge: the page + // gutter plus whatever the centred max-width leaves on either side. + // `100cqw` is the rails page host (the `dashboard` size container). + --hero-inset: calc( + var(--dashboard-gutter, 28px) + + max(0px, (100cqw - var(--dashboard-max-width, 1440px)) / 2) + ); + --hero-scrim: var(--app-content-bg, #161a22); + --hero-heading: var(--app-heading-color, #d8dce8); + --hero-body: color-mix( + in srgb, + var(--app-heading-color, #d8dce8) 72%, + var(--hero-scrim) + ); + --hero-pill-bg: color-mix( + in srgb, + var(--app-on-surface, #e6e1e5) 12%, + transparent + ); + // Gold in the dark theme, a deeper amber on the light one: mixed with + // the theme's heading colour rather than detected per theme. + --hero-rating: color-mix( + in srgb, + #f5b400 60%, + var(--app-heading-color, #d8dce8) + ); + + position: relative; + // A floor, not a fixed height: the slide sits in normal flow at the + // bottom, so an unusually full slide (two-line title, programme, + // synopsis, wrapped pills) grows the banner instead of losing its top. + display: flex; + flex-direction: column; + justify-content: flex-end; + box-sizing: border-box; + min-height: clamp(320px, 42vh, 520px); + // Flush with the content area's top and sides; the rails page's own + // top padding and gutters are cancelled. The negative bottom margin + // tucks the first rail into the fade (the gradient does the spacing). + margin: calc(-1 * var(--dashboard-top-gutter, 24px)) + calc(-1 * var(--hero-inset)) -12px; + overflow: hidden; + isolation: isolate; + color: var(--hero-heading); +} + +// ── Backdrops ────────────────────────────────────────────────────────────── +.hero__stage { + position: absolute; + inset: 0; + z-index: 0; + pointer-events: none; +} + +.hero__backdrop { + position: absolute; + inset: 0; + opacity: 0; + transition: opacity 700ms ease; + + &--active { + opacity: 1; + } +} + +.hero__backdrop-fallback, +.hero__backdrop-image { + position: absolute; + inset: 0; + width: 100%; + height: 100%; +} + +.hero__backdrop-image { + display: block; + object-fit: cover; + object-position: center 22%; + transform: scale(1.04); + transition: transform 8s ease-out; + + .hero__backdrop--active & { + transform: scale(1); + } +} + +// No 16:9 backdrop (Xtream/Stalker often lack one): the poster, blurred and +// scaled, washes its colours across the whole stage… +.hero__backdrop--poster .hero__backdrop-image { + filter: blur(48px) saturate(1.4); + transform: scale(1.35); + opacity: 0.8; +} + +.hero__backdrop--poster.hero__backdrop--active .hero__backdrop-image { + transform: scale(1.3); +} + +// …and the sharp poster fills the right-hand side as key art, faded into +// that wash, so the slide still shows the actual title artwork. +.hero__backdrop-keyart { + position: absolute; + top: 0; + right: 0; + height: 100%; + width: min(46%, 640px); + object-fit: cover; + object-position: center 18%; + -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 45%); + mask-image: linear-gradient(90deg, transparent 0%, #000 45%); +} + +// Live channels: a logo is not a backdrop. The stage is a title-tinted +// glow with a hint of the live accent; the logo, when there is one, sits +// on the right as the slide's artwork over a soft wash of its own colours. +.hero__backdrop--live { + .hero__backdrop-fallback { + background: + radial-gradient( + 55% 120% at 78% 30%, + hsl(var(--hero-hue, 220) 60% 45% / 0.45), + transparent 70% + ), + radial-gradient( + 40% 90% at 100% 100%, + color-mix( + in srgb, + var(--app-live-color, #ff8f8f) 28%, + transparent + ), + transparent 70% + ), + var(--hero-scrim); + } + + &.hero__backdrop--active .hero__backdrop-image, + .hero__backdrop-image { + inset: 10% 6% 10% auto; + width: 40%; + height: 80%; + object-fit: contain; + filter: blur(56px) saturate(1.6); + opacity: 0.5; + transform: none; + } + + .hero__backdrop-keyart { + top: 50%; + right: calc(var(--hero-inset) + 8%); + width: min(22%, 240px); + height: 50%; + object-fit: contain; + object-position: center; + transform: translateY(-50%); + filter: drop-shadow(0 12px 32px rgba(0, 0, 0, 0.45)); + -webkit-mask-image: none; + mask-image: none; + } +} + +.hero__scrim { + position: absolute; + inset: 0; + background: + linear-gradient( + 90deg, + color-mix(in srgb, var(--hero-scrim) 96%, transparent) 0%, + color-mix(in srgb, var(--hero-scrim) 85%, transparent) 30%, + color-mix(in srgb, var(--hero-scrim) 35%, transparent) 60%, + transparent 100% + ), + linear-gradient( + 180deg, + color-mix(in srgb, var(--hero-scrim) 30%, transparent) 0%, + transparent 22%, + transparent 55%, + var(--hero-scrim) 100% + ); +} + +// ── Slide content ────────────────────────────────────────────────────────── +.hero__content { + position: relative; + z-index: 1; + box-sizing: border-box; + // Top padding keeps clear of the title bar edge when the slide grows. + margin-left: var(--hero-inset); + padding: 72px 0 34px; + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 12px; + max-width: min(560px, 55%); + animation: hero-content-in 420ms cubic-bezier(0.2, 0.7, 0.2, 1) both; +} + +@keyframes hero-content-in { + from { + opacity: 0; + transform: translateY(8px); + } + to { + opacity: 1; + transform: none; + } +} + +.hero__eyebrow { + display: flex; + align-items: center; + gap: 8px; + margin: 0; + font-size: 11px; + font-weight: 600; + line-height: 1; + letter-spacing: 1.4px; + text-transform: uppercase; + color: var(--hero-body); +} + +.hero__type--live { + display: inline-flex; + align-items: center; + gap: 6px; + color: var(--app-live-color, #ff8f8f); + + &::before { + content: ''; + width: 6px; + height: 6px; + border-radius: 50%; + background: currentColor; + box-shadow: 0 0 8px currentColor; + } +} + +.hero__eyebrow-sep { + opacity: 0.6; +} + +.hero__title { + margin: 0; + font-size: clamp(28px, 3.4vw, 44px); + font-weight: 700; + line-height: 1.05; + letter-spacing: -0.5px; + color: var(--hero-heading); + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; + overflow-wrap: anywhere; +} + +.hero__meta { + display: flex; + flex-wrap: wrap; + gap: 6px; + margin: 0; + font-size: 12px; + line-height: 1.4; +} + +.hero__pill { + padding: 3px 8px; + border-radius: 999px; + background: var(--hero-pill-bg); + color: var(--hero-heading); + white-space: nowrap; + + &--rating { + color: var(--hero-rating); + font-weight: 600; + } + + &--time { + font-variant-numeric: tabular-nums; + } + + &--source { + max-width: 220px; + overflow: hidden; + text-overflow: ellipsis; + color: var(--hero-body); + } +} + +.hero__programme { + margin: 0; + max-width: 100%; + font-size: 15px; + font-weight: 600; + line-height: 1.35; + color: var(--hero-heading); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.hero__description { + margin: 0; + font-size: 13.5px; + line-height: 1.5; + color: var(--hero-body); + overflow: hidden; + display: -webkit-box; + -webkit-line-clamp: 2; + -webkit-box-orient: vertical; +} + +.hero__progress { + display: block; + width: 220px; + max-width: 100%; + height: 3px; + border-radius: 2px; + overflow: hidden; + background: color-mix( + in srgb, + var(--app-on-surface, #e6e1e5) 18%, + transparent + ); + + i { + display: block; + height: 100%; + border-radius: inherit; + background: var(--app-selection-color, #78adff); + transition: width 0.4s ease; + } + + &--live i { + background: var(--app-live-color, #ff8f8f); + } +} + +.hero__actions { + display: flex; + flex-wrap: wrap; + gap: 10px; + margin-top: 4px; +} + +.hero__button { + display: inline-flex; + align-items: center; + gap: 8px; + height: 38px; + padding: 0 18px 0 14px; + box-sizing: border-box; + border-radius: 10px; + font-size: 13px; + font-weight: 600; + line-height: 1; + white-space: nowrap; + text-decoration: none; + transition: + background-color 0.15s ease, + box-shadow 0.15s ease, + transform 0.15s ease; + + mat-icon { + width: 20px; + height: 20px; + font-size: 20px; + line-height: 20px; + } + + &:focus-visible { + outline: 2px solid var(--app-selection-color, #78adff); + outline-offset: 2px; + } + + &:active { + transform: translateY(1px); + } + + &--primary { + background: var(--app-selection-color, #78adff); + color: var(--app-selection-on-color, #071225); + box-shadow: 0 6px 18px -8px + var(--app-selection-glow, rgba(120, 173, 255, 0.6)); + + &:hover { + background: color-mix( + in srgb, + var(--app-selection-color, #78adff) 88%, + #fff + ); + } + } + + &--secondary { + background: color-mix( + in srgb, + var(--app-on-surface, #e6e1e5) 12%, + transparent + ); + color: var(--hero-heading); + border: 1px solid + color-mix(in srgb, var(--app-on-surface, #e6e1e5) 14%, transparent); + -webkit-backdrop-filter: blur(8px); + backdrop-filter: blur(8px); + + &:hover { + background: color-mix( + in srgb, + var(--app-on-surface, #e6e1e5) 20%, + transparent + ); + } + } +} + +.hero__button-detail { + font-weight: 500; + opacity: 0.8; +} + +// ── Rotation controls ────────────────────────────────────────────────────── +.hero__controls { + position: absolute; + right: var(--hero-inset); + bottom: 34px; + z-index: 1; + display: flex; + align-items: center; + gap: 2px; + padding: 2px 4px; + border-radius: 999px; + // Keeps the dots legible over bright key art in both themes. + background: color-mix(in srgb, var(--hero-scrim) 55%, transparent); + -webkit-backdrop-filter: blur(10px); + backdrop-filter: blur(10px); +} + +.hero__pause { + display: grid; + place-items: center; + width: 28px; + height: 28px; + padding: 0; + border: 0; + border-radius: 50%; + background: transparent; + color: var(--hero-body); + cursor: pointer; + transition: + color 0.15s ease, + background-color 0.15s ease; + + mat-icon { + width: 18px; + height: 18px; + font-size: 18px; + line-height: 18px; + } + + &:hover { + background: var(--hero-pill-bg); + color: var(--hero-heading); + } + + &:focus-visible { + outline: 2px solid var(--app-selection-color, #78adff); + outline-offset: 1px; + } +} + +.hero__dots { + display: flex; + align-items: center; +} + +// 6px dots inside a 20px hit area; the active one stretches into a pill +// whose fill runs for one rotation interval. +.hero__dot { + display: grid; + place-items: center; + width: 20px; + height: 20px; + padding: 0; + border: 0; + background: transparent; + cursor: pointer; + + &::before { + content: ''; + grid-area: 1 / 1; + width: 6px; + height: 6px; + border-radius: 3px; + background: color-mix( + in srgb, + var(--app-on-surface, #e6e1e5) 32%, + transparent + ); + transition: + width 0.25s ease, + background-color 0.15s ease; + } + + &:hover::before { + background: color-mix( + in srgb, + var(--app-on-surface, #e6e1e5) 55%, + transparent + ); + } + + &:focus-visible { + outline: 2px solid var(--app-selection-color, #78adff); + outline-offset: -2px; + border-radius: 6px; + } + + &--active { + width: 30px; + + &::before { + width: 18px; + } + } +} + +.hero__dot-fill { + grid-area: 1 / 1; + justify-self: start; + // Aligns with the 18px pill centred in the 30px button. + margin-left: 6px; + width: 0; + height: 6px; + border-radius: 3px; + background: var(--hero-heading); + pointer-events: none; + + .hero__dot--active & { + width: 18px; + } + + .hero--rotating .hero__dot--active & { + animation: hero-dot-fill var(--hero-rotation-ms, 8000ms) linear both; + } + + .hero--paused .hero__dot--active & { + animation-play-state: paused; + } +} + +@keyframes hero-dot-fill { + from { + width: 0; + } + to { + width: 18px; + } +} + +// ── Skeleton ─────────────────────────────────────────────────────────────── +.hero--skeleton { + background: linear-gradient( + 180deg, + var(--app-widget-bg, #1e2330) 0%, + var(--hero-scrim) 100% + ); +} + +.hero__skeleton { + display: block; + border-radius: 6px; + background: linear-gradient( + 90deg, + color-mix(in srgb, var(--app-on-surface, #e6e1e5) 8%, transparent) 0%, + color-mix(in srgb, var(--app-on-surface, #e6e1e5) 16%, transparent) 50%, + color-mix(in srgb, var(--app-on-surface, #e6e1e5) 8%, transparent) 100% + ); + background-size: 200% 100%; + animation: hero-skeleton-shimmer 1.6s linear infinite; + + &--eyebrow { + width: 180px; + height: 11px; + } + + &--title { + width: 380px; + max-width: 100%; + height: 40px; + } + + &--meta { + width: 260px; + height: 20px; + border-radius: 999px; + } + + &--button { + width: 190px; + height: 38px; + border-radius: 10px; + margin-top: 4px; + } +} + +@keyframes hero-skeleton-shimmer { + from { + background-position: 200% 0; + } + to { + background-position: -200% 0; + } +} + +// ── Narrow content area ──────────────────────────────────────────────────── +@container dashboard (max-width: 720px) { + .hero__content { + margin-right: var(--hero-inset); + // Clears the rotation controls, which move to the top here. + padding: 64px 0 28px; + max-width: none; + } + + .hero__controls { + top: 16px; + bottom: auto; + } + + .hero__scrim { + background: + linear-gradient( + 90deg, + color-mix(in srgb, var(--hero-scrim) 80%, transparent) 0%, + color-mix(in srgb, var(--hero-scrim) 40%, transparent) 100% + ), + linear-gradient(180deg, transparent 30%, var(--hero-scrim) 100%); + } + + .hero__backdrop-keyart { + width: 70%; + opacity: 0.6; + } +} + +@media (prefers-reduced-motion: reduce) { + .hero__backdrop, + .hero__backdrop-image { + transition: none; + } + + .hero__content, + .hero__skeleton { + animation: none; + } +} diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.spec.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.spec.ts new file mode 100644 index 000000000..c05b4250f --- /dev/null +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.spec.ts @@ -0,0 +1,265 @@ +import { signal } from '@angular/core'; +import { TestBed, type ComponentFixture } from '@angular/core/testing'; +import { provideRouter } from '@angular/router'; +import { TranslateModule } from '@ngx-translate/core'; +import { DashboardHeroComponent } from './dashboard-hero.component'; +import { DashboardHeroSlidesPresenter } from './dashboard-hero-slides.presenter'; +import type { DashboardHeroSlide } from './dashboard-hero.utils'; + +const slide = (id: string, title: string): DashboardHeroSlide => ({ + id, + kind: 'continue', + contentType: 'movie', + title, + typeLabelKey: 'WORKSPACE.DASHBOARD.TYPE_MOVIE', + reasonLabelKey: 'WORKSPACE.DASHBOARD.CONTINUE_WATCHING', + episodeBadge: null, + rating: null, + genres: [], + year: null, + source: 'Source', + programmeTitle: null, + category: null, + timeRange: null, + description: null, + progress: null, + accentHue: 200, + backdropSource: 'fallback', + fallbackBackdropBackground: 'none', + fallbackPosterBackground: 'none', + hasBackdrop: false, + primaryAction: { + labelKey: 'WORKSPACE.DASHBOARD.HERO_CONTINUE', + icon: 'play_arrow', + link: ['/workspace', id], + testId: 'dashboard-hero-primary-action', + }, + secondaryAction: null, +}); + +describe('DashboardHeroComponent', () => { + let fixture: ComponentFixture; + let slides: ReturnType>; + let reducedMotion: boolean; + + const host = () => fixture.nativeElement as HTMLElement; + const activeTitle = () => + host().querySelector('[data-test-id=dashboard-hero-slide] h1') + ?.textContent; + const dots = () => + Array.from( + host().querySelectorAll( + '[data-test-id=dashboard-hero-dot]' + ) + ); + const finishActiveDot = () => { + const fill = host().querySelector( + '.hero__dot--active .hero__dot-fill' + ) as HTMLElement; + fill.dispatchEvent(new Event('animationend')); + fixture.detectChanges(); + }; + + function render(): void { + window.matchMedia = jest.fn().mockReturnValue({ + matches: reducedMotion, + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + }); + TestBed.configureTestingModule({ + imports: [DashboardHeroComponent, TranslateModule.forRoot()], + providers: [provideRouter([])], + }); + TestBed.overrideComponent(DashboardHeroComponent, { + set: { + providers: [ + { + provide: DashboardHeroSlidesPresenter, + useValue: { + slides, + loading: signal(false), + markImageFailed: jest.fn(), + }, + }, + ], + }, + }); + fixture = TestBed.createComponent(DashboardHeroComponent); + fixture.detectChanges(); + } + + beforeEach(() => { + reducedMotion = false; + slides = signal([ + slide('a', 'First'), + slide('b', 'Second'), + slide('c', 'Third'), + ]); + }); + + it('advances when the active dot finishes its rotation interval', () => { + render(); + expect(activeTitle()).toBe('First'); + + finishActiveDot(); + expect(activeTitle()).toBe('Second'); + + finishActiveDot(); + finishActiveDot(); + expect(activeTitle()).toBe('First'); + }); + + it('does not advance while the pointer or focus is inside the hero', () => { + render(); + const section = host().querySelector( + '[data-test-id=dashboard-hero]' + ) as HTMLElement; + + section.dispatchEvent(new Event('mouseenter')); + fixture.detectChanges(); + expect(section.classList).toContain('hero--paused'); + finishActiveDot(); + expect(activeTitle()).toBe('First'); + + section.dispatchEvent(new Event('mouseleave')); + fixture.detectChanges(); + finishActiveDot(); + expect(activeTitle()).toBe('Second'); + }); + + it('lets the user pause and resume the rotation', () => { + render(); + const pause = host().querySelector( + '[data-test-id=dashboard-hero-pause]' + ) as HTMLButtonElement; + + pause.click(); + fixture.detectChanges(); + expect(pause.getAttribute('aria-pressed')).toBe('true'); + finishActiveDot(); + expect(activeTitle()).toBe('First'); + + pause.click(); + fixture.detectChanges(); + finishActiveDot(); + expect(activeTitle()).toBe('Second'); + }); + + it('resumes on Play even while the button keeps the pointer and focus', () => { + render(); + const section = host().querySelector( + '[data-test-id=dashboard-hero]' + ) as HTMLElement; + const pause = host().querySelector( + '[data-test-id=dashboard-hero-pause]' + ) as HTMLButtonElement; + section.dispatchEvent(new Event('mouseenter')); + section.dispatchEvent(new FocusEvent('focusin')); + + pause.click(); + fixture.detectChanges(); + pause.click(); + fixture.detectChanges(); + + expect(section.classList).not.toContain('hero--paused'); + finishActiveDot(); + expect(activeTitle()).toBe('Second'); + }); + + it('switches slides from the dots, with roving arrow keys', () => { + render(); + + dots()[2].click(); + fixture.detectChanges(); + expect(activeTitle()).toBe('Third'); + expect(dots()[2].getAttribute('aria-current')).toBe('true'); + expect(dots()[2].tabIndex).toBe(0); + expect(dots()[0].tabIndex).toBe(-1); + + dots()[2].dispatchEvent( + new KeyboardEvent('keydown', { key: 'ArrowRight' }) + ); + fixture.detectChanges(); + expect(activeTitle()).toBe('First'); + }); + + it('keeps the current slide when a slide arrives late', () => { + render(); + dots()[1].click(); + fixture.detectChanges(); + + slides.set([ + slide('a', 'First'), + slide('live', 'Live channel'), + slide('b', 'Second'), + slide('c', 'Third'), + ]); + fixture.detectChanges(); + + expect(activeTitle()).toBe('Second'); + expect(dots()).toHaveLength(4); + }); + + it('keeps the first slide when a slide arrives ahead of it untouched', () => { + slides.set([slide('fav', 'Favourite'), slide('added', 'Import')]); + render(); + expect(activeTitle()).toBe('Favourite'); + + slides.set([ + slide('live', 'Live channel'), + slide('fav', 'Favourite'), + slide('added', 'Import'), + ]); + fixture.detectChanges(); + + expect(activeTitle()).toBe('Favourite'); + }); + + it('shows the slide now at the same position when the active one goes', () => { + render(); + dots()[1].click(); + fixture.detectChanges(); + + slides.set([slide('a', 'First'), slide('c', 'Third')]); + fixture.detectChanges(); + + expect(activeTitle()).toBe('Third'); + }); + + it('never auto-rotates under reduced motion, but the dots still work', () => { + reducedMotion = true; + render(); + + expect( + host().querySelector('[data-test-id=dashboard-hero-pause]') + ).toBeNull(); + finishActiveDot(); + expect(activeTitle()).toBe('First'); + + dots()[1].click(); + fixture.detectChanges(); + expect(activeTitle()).toBe('Second'); + }); + + it('renders a single slide without rotation controls', () => { + slides.set([slide('a', 'Only')]); + render(); + + expect(activeTitle()).toBe('Only'); + expect(dots()).toHaveLength(0); + expect( + host() + .querySelector('[data-test-id=dashboard-hero-primary-action]') + ?.getAttribute('href') + ).toBe('/workspace/a'); + }); + + it('renders nothing when there is nothing to feature', () => { + slides.set([]); + render(); + + expect( + host().querySelector('[data-test-id=dashboard-hero]') + ).toBeNull(); + }); +}); diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.ts new file mode 100644 index 000000000..a92e5fd0c --- /dev/null +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.component.ts @@ -0,0 +1,173 @@ +import { + ChangeDetectionStrategy, + Component, + computed, + DestroyRef, + inject, + linkedSignal, + signal, +} from '@angular/core'; +import { MatIcon } from '@angular/material/icon'; +import { RouterLink } from '@angular/router'; +import { TranslatePipe } from '@ngx-translate/core'; +import { DashboardHeroSlidesPresenter } from './dashboard-hero-slides.presenter'; +import { HERO_ROTATION_MS } from './dashboard-hero-slides.utils'; +import type { DashboardHeroSlide } from './dashboard-hero.utils'; + +const REDUCED_MOTION_QUERY = '(prefers-reduced-motion: reduce)'; + +/** + * Cinematic dashboard hero: a full-bleed backdrop that rotates between an + * unfinished title, a favourite channel on air now and a few discovery + * picks (see `pickDashboardHeroSources`). + * + * Rotation is driven by the active dot's CSS fill animation: its + * `animationend` advances the slide, so pausing (hover, focus inside the + * hero, the pause button) is just `animation-play-state: paused` and resumes + * where it stopped. With `prefers-reduced-motion` there is no animation and + * therefore no auto-advance; the dots still switch slides. + * + * The active slide is tracked by id, so a slide that arrives late (the live + * slide waits for its EPG answer) never yanks the user off the current one. + */ +@Component({ + selector: 'lib-dashboard-hero', + imports: [MatIcon, RouterLink, TranslatePipe], + templateUrl: './dashboard-hero.component.html', + styleUrl: './dashboard-hero.component.scss', + changeDetection: ChangeDetectionStrategy.OnPush, + providers: [DashboardHeroSlidesPresenter], + host: { + '[style.--hero-rotation-ms]': 'rotationMs + "ms"', + }, +}) +export class DashboardHeroComponent { + readonly presenter = inject(DashboardHeroSlidesPresenter); + readonly slides = this.presenter.slides; + readonly rotationMs = HERO_ROTATION_MS; + + /** + * The slide on screen, by id. Pinned to the first slide as soon as one + * exists, so a late slide inserted ahead of it cannot take its place; + * if the active slide itself disappears, the one now at its position + * takes over. + */ + private readonly activeId = linkedSignal< + DashboardHeroSlide[], + string | null + >({ + source: this.slides, + computation: (slides, previous) => { + const currentId = previous?.value ?? null; + if (currentId && slides.some((slide) => slide.id === currentId)) { + return currentId; + } + const previousIndex = + previous?.source.findIndex((slide) => slide.id === currentId) ?? + -1; + const index = Math.min( + Math.max(previousIndex, 0), + slides.length - 1 + ); + return slides[index]?.id ?? null; + }, + }); + private readonly hovered = signal(false); + private readonly focusWithin = signal(false); + readonly userPaused = signal(false); + readonly reducedMotion = signal(false); + + readonly activeIndex = computed(() => { + const index = this.slides().findIndex( + (slide) => slide.id === this.activeId() + ); + return index >= 0 ? index : 0; + }); + + readonly activeSlide = computed( + () => this.slides()[this.activeIndex()] ?? null + ); + + readonly canRotate = computed( + () => this.slides().length > 1 && !this.reducedMotion() + ); + + readonly paused = computed( + () => this.userPaused() || this.hovered() || this.focusWithin() + ); + + constructor() { + const media = + typeof window !== 'undefined' && window.matchMedia + ? window.matchMedia(REDUCED_MOTION_QUERY) + : null; + if (media) { + this.reducedMotion.set(media.matches); + const onChange = (event: MediaQueryListEvent) => + this.reducedMotion.set(event.matches); + media.addEventListener('change', onChange); + inject(DestroyRef).onDestroy(() => + media.removeEventListener('change', onChange) + ); + } + } + + show(index: number): void { + const slide = this.slides()[index]; + if (slide) { + this.activeId.set(slide.id); + } + } + + /** The active dot's fill animation finished: time for the next slide. */ + onRotationTick(): void { + if (!this.canRotate() || this.paused()) { + return; + } + this.show((this.activeIndex() + 1) % this.slides().length); + } + + togglePaused(): void { + if (!this.userPaused()) { + this.userPaused.set(true); + return; + } + // An explicit Play wins over the implicit pauses: the pointer and + // the focus are on this very button, so they would otherwise keep + // the rotation stopped. They re-arm on the next enter / focus move. + this.userPaused.set(false); + this.hovered.set(false); + this.focusWithin.set(false); + } + + setHovered(hovered: boolean): void { + this.hovered.set(hovered); + } + + onFocusIn(): void { + this.focusWithin.set(true); + } + + onFocusOut(event: FocusEvent): void { + const host = event.currentTarget as HTMLElement | null; + const next = event.relatedTarget as Node | null; + if (!host || !next || !host.contains(next)) { + this.focusWithin.set(false); + } + } + + /** Roving arrows between the dots, like a tab list. */ + onDotKeydown(event: KeyboardEvent, index: number): void { + const count = this.slides().length; + const step = + event.key === 'ArrowRight' ? 1 : event.key === 'ArrowLeft' ? -1 : 0; + if (step === 0 || count < 2) { + return; + } + event.preventDefault(); + const next = (index + step + count) % count; + this.show(next); + const group = (event.currentTarget as HTMLElement).parentElement; + group?.querySelectorAll('button')[next]?.focus(); + } +} diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.utils.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.utils.ts index 6d80b7aca..6f210ac20 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.utils.ts +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-hero.utils.ts @@ -1,31 +1,49 @@ import type { CollectionContentType } from '@iptvnator/portal/shared/util'; import type { DashboardRemainingLabel } from './dashboard-playback.utils'; +import type { DashboardHeroSlideKind } from './dashboard-hero-slides.utils'; -export interface DashboardHeroModel { - readonly backdropUrl?: string; - readonly backdropSource: DashboardHeroBackdropSource; - readonly contentType?: CollectionContentType; - readonly fallbackBackdropBackground: string; - readonly fallbackPosterBackground: string; - readonly hasBackdrop: boolean; +/** A hero call to action: a router link, never an in-place side effect. */ +export interface DashboardHeroAction { + readonly labelKey: string; readonly icon: string; readonly link: string[]; - readonly posterUrl?: string; readonly state?: Record; - readonly subtitle: string; - readonly title: string; - /** TMDB vote average ("8.1"), patched in async when available */ - readonly rating?: string | null; - /** Up to two TMDB genre names, patched in async when available */ - readonly genres?: readonly string[]; - /** "S2·E5" for series with a tracked episode position */ - readonly episodeBadge?: string | null; - /** 0-100 watched, when a resume position is known. */ - readonly watchProgress?: number | null; + /** Appended as "· 22m left" on a resume action. */ readonly remainingLabel?: DashboardRemainingLabel | null; - readonly nowPlayingTitle?: string | null; - readonly nowPlayingTimeRange?: string | null; - readonly nowPlayingProgress?: number | null; + readonly testId: string; +} + +/** One rotation slide of the cinematic dashboard hero. */ +export interface DashboardHeroSlide extends DashboardHeroArtwork { + /** Stable across data refreshes: the active slide is tracked by it. */ + readonly id: string; + readonly kind: DashboardHeroSlideKind; + readonly contentType: CollectionContentType; + readonly title: string; + /** "Movie" / "Series" / "Live" */ + readonly typeLabelKey: string; + /** Why the slide is here: "Continue watching", "Favourite channel"… */ + readonly reasonLabelKey: string; + readonly episodeBadge: string | null; + /** TMDB vote average ("8.1"), patched in async when available */ + readonly rating: string | null; + /** Up to two TMDB genre names, patched in async when available */ + readonly genres: readonly string[]; + readonly year: number | null; + /** Source name (playlist label), never a raw URL or credentials */ + readonly source: string; + /** Live: programme on air now, its guide category and "HH:mm – HH:mm" */ + readonly programmeTitle: string | null; + readonly category: string | null; + readonly timeRange: string | null; + /** TMDB overview for titles, guide synopsis for live programmes */ + readonly description: string | null; + /** 0-100: watched share, or elapsed share of the live programme */ + readonly progress: number | null; + /** Title-derived hue for the live slide's glow (0-359) */ + readonly accentHue: number; + readonly primaryAction: DashboardHeroAction; + readonly secondaryAction: DashboardHeroAction | null; } export type DashboardHeroBackdropSource = 'backdrop' | 'poster' | 'fallback'; @@ -101,6 +119,11 @@ function buildFallbackBackground( return `linear-gradient(135deg, hsl(${hue}, ${saturationA}%, ${lightnessA}%) 0%, hsl(${h2}, ${saturationB}%, ${lightnessB}%) 100%)`; } +/** Stable hue for a title, shared by every generated fallback surface. */ +export function dashboardHeroHue(text: string): number { + return calculateHue(text || 'placeholder'); +} + function calculateHue(text: string): number { let hash = 0; for (let i = 0; i < text.length; i++) { diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.presenter.spec.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.presenter.spec.ts index 6b5d53e2b..1296dc64a 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.presenter.spec.ts +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.presenter.spec.ts @@ -43,6 +43,8 @@ describe('DashboardLiveEpgPresenter', () => { let getCurrentProgramsForChannels: jest.Mock; let playlists: ReturnType>; let recentItems: ReturnType>; + let favoriteLiveItems: ReturnType>; + let recentLiveItems: ReturnType>; let dashboardRails: ReturnType< typeof signal >; @@ -74,6 +76,8 @@ describe('DashboardLiveEpgPresenter', () => { ]); recentItems = signal([]); + favoriteLiveItems = signal([]); + recentLiveItems = signal([]); dashboardRails = signal({ ...DEFAULT_DASHBOARD_RAILS_SETTINGS }); portal = { connect: jest.fn(), @@ -96,8 +100,8 @@ describe('DashboardLiveEpgPresenter', () => { playlists, // The presenter also derives the portal source list. globalRecentItems: recentItems, - globalFavoriteLiveItems: signal([]), - globalRecentLiveItems: signal([]), + globalFavoriteLiveItems: favoriteLiveItems, + globalRecentLiveItems: recentLiveItems, }, }, { @@ -177,30 +181,75 @@ describe('DashboardLiveEpgPresenter', () => { ); }); - it('pins the hero row only while the hero rail shows one', () => { - const heroLive = { - id: 'x-7', - title: 'Hero channel', - type: 'live', - source: 'xtream', - playlist_id: 'p', - category_id: '1', - xtream_id: 7, - } as PortalActivityItem; - recentItems.set([heroLive]); + it('pins the hero live candidates only while the hero is enabled', () => { + const live = (id: number, title: string) => + ({ + id: `x-${id}`, + title, + type: 'live', + source: 'xtream', + playlist_id: 'p', + category_id: '1', + xtream_id: id, + }) as PortalActivityItem; + favoriteLiveItems.set([live(7, 'Favourite channel')]); + recentLiveItems.set([live(8, 'Recent channel'), live(7, 'Dup')]); TestBed.tick(); - expect(portal.setPinnedKeys).toHaveBeenLastCalledWith(['xtream::p::7']); + // Favourites first, then recent channels, each channel once. + expect( + presenter + .heroLiveCandidates() + .map(({ origin, item }) => [origin, item.title]) + ).toEqual([ + ['favorite', 'Favourite channel'], + ['recent', 'Recent channel'], + ]); + expect(portal.setPinnedKeys).toHaveBeenLastCalledWith([ + 'xtream::p::7', + 'xtream::p::8', + ]); - // With the rail hidden nothing is pinned: the first portal row is - // then a favourite, and pinning it would keep asking for a card - // nobody can see. + // With the hero hidden nothing is pinned: a rail card nobody can + // see must not keep the portal queue busy. dashboardRails.set({ ...DEFAULT_DASHBOARD_RAILS_SETTINGS, hero: false, }); TestBed.tick(); - expect(portal.setPinnedKeys).toHaveBeenLastCalledWith([null]); + expect(presenter.heroLiveCandidates()).toEqual([]); + expect(portal.setPinnedKeys).toHaveBeenLastCalledWith([]); + }); + + it('looks up hero candidates even when no live rail is connected', () => { + getCurrentProgramsForChannels.mockImplementation(() => + of( + new Map([ + ['ard.de', program('Tagesschau')], + ]) + ) + ); + const channel = { + id: 'ard-hd', + title: 'Das Erste HD', + type: 'live', + source: 'm3u', + playlist_id: 'a', + category_id: '', + xtream_id: 'ard-hd', + epg_lookup_key: 'ard.de', + } as PortalActivityItem; + favoriteLiveItems.set([channel]); + + setup([]); + + expect(getCurrentProgramsForChannels).toHaveBeenCalledWith( + ['ard.de'], + expect.objectContaining({ sourceUrls: [guideA] }) + ); + expect(presenter.heroDetailsFor(channel)?.nowPlayingTitle).toBe( + 'Tagesschau' + ); }); it('prefers the portal answer and forwards what the portal presenter owns', () => { diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.presenter.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.presenter.ts index 70baea7e6..019ba3e04 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.presenter.ts +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.presenter.ts @@ -44,6 +44,10 @@ import { type DashboardLiveEpgLookupGroup, } from './dashboard-live-epg.utils'; import { RAIL_ITEM_LIMIT } from './dashboard-rail.utils'; +import { + selectDashboardHeroLiveCandidates, + type DashboardHeroLiveCandidate, +} from './dashboard-hero-slides.utils'; type ScopeAnswer = { readonly scopeKey: string; @@ -105,9 +109,34 @@ export class DashboardLiveEpgPresenter { return byPlaylistId; }); + private readonly rails = computed(() => + normalizeDashboardRailsSettings(this.settingsStore.dashboardRails?.()) + ); + + /** + * Channels that may fill the hero's live slide. Looked up and pinned + * here, independent of the rails, so the slide works with the live rails + * hidden and never waits for a rail to scroll a card into view. + */ + readonly heroLiveCandidates = computed(() => + this.rails().hero + ? selectDashboardHeroLiveCandidates( + this.data.globalFavoriteLiveItems(), + this.data.globalRecentLiveItems() + ) + : [] + ); + + private readonly heroLiveCards = computed(() => + this.heroLiveCandidates().map(({ item }) => + buildDashboardLiveEpgCard(item) + ) + ); + private readonly lookupGroups = computed(() => - buildLiveEpgLookupGroups(this.cards()?.() ?? [], (card) => - this.sourceUrlsForCard(card) + buildLiveEpgLookupGroups( + [...this.heroLiveCards(), ...(this.cards()?.() ?? [])], + (card) => this.sourceUrlsForCard(card) ) ); @@ -131,25 +160,14 @@ export class DashboardLiveEpgPresenter { { initialValue: new Map() } ); - private readonly rails = computed(() => - normalizeDashboardRailsSettings(this.settingsStore.dashboardRails?.()) - ); - - /** The live row behind the hero panel, when that rail shows one. */ - private readonly heroLiveItem = computed(() => { - const hero = this.data.globalRecentItems()[0] ?? null; - return this.rails().hero && hero?.type === 'live' ? hero : null; - }); - // The Xtream/Stalker live rows behind the hero and the two live rails. // Their programmes come from the portal, asked for lazily per visible // card; M3U rows stay on the XMLTV batch above. private readonly portalItems = computed( () => { const rails = this.rails(); - const hero = this.heroLiveItem(); return [ - ...(hero ? [hero] : []), + ...this.heroLiveCandidates().map(({ item }) => item), ...(rails.liveFavorites ? this.data .globalFavoriteLiveItems() @@ -167,18 +185,17 @@ export class DashboardLiveEpgPresenter { constructor() { this.portal.connect(this.portalItems); // The hero sits at the top of the page and is never scrolled into - // view, so its key is wanted regardless of what the rails report. - // Only the hero: the first entry of `portalItems` is a favourite - // when that rail is hidden, and pinning it would keep asking for a - // card nobody can see. + // view, so its candidates are wanted regardless of what the rails + // report. Only those: a rail card nobody can see stays unpinned. effect(() => { - const hero = this.heroLiveItem(); - const heroKey = hero ? buildDashboardPortalLiveEpgKey(hero) : null; - untracked(() => this.portal.setPinnedKeys([heroKey])); + const keys = this.heroLiveCandidates().map(({ item }) => + buildDashboardPortalLiveEpgKey(item) + ); + untracked(() => this.portal.setPinnedKeys(keys)); }); } - /** The live cards whose rails are enabled, hero included. */ + /** The live cards whose rails are enabled (hero candidates are added here). */ connect(cards: Signal): void { this.cards.set(cards); } @@ -206,6 +223,11 @@ export class DashboardLiveEpgPresenter { }); } + /** Current programme of a hero live candidate, or `null`. */ + heroDetailsFor(item: PortalActivityItem): DashboardLiveEpgDetails | null { + return this.detailsFor(buildDashboardLiveEpgCard(item)); + } + /** `null` when nothing is known about the card's current programme. */ detailsFor(card: DashboardRailCard | null): DashboardLiveEpgDetails | null { if (!card) { @@ -285,3 +307,19 @@ function mergeAnswers( } return merged; } + +/** The fields the EPG lookups read, for a live row that has no rail card. */ +function buildDashboardLiveEpgCard( + item: PortalActivityItem +): DashboardRailCard { + return { + id: `hero-live-${item.playlist_id}-${item.xtream_id ?? item.id}`, + title: item.title, + icon: 'live_tv', + contentType: 'live', + link: [], + epgLookupKey: item.epg_lookup_key, + epgPlaylistId: item.playlist_id, + liveEpgSourceKey: buildDashboardPortalLiveEpgKey(item), + }; +} diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.utils.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.utils.ts index 98526cabb..d674e27a9 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.utils.ts +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-live-epg.utils.ts @@ -74,6 +74,10 @@ export interface DashboardLiveEpgDetails { readonly nowPlayingTitle: string | null; readonly nowPlayingTimeRange: string | null; readonly nowPlayingProgress: number | null; + /** Programme synopsis; set only when the guide has one (hero slide). */ + readonly nowPlayingDescription?: string; + /** Guide category ("Sport"); set only when the guide has one. */ + readonly nowPlayingCategory?: string; } /** @@ -90,6 +94,8 @@ export function buildDashboardLiveEpgDetails( return null; } + const description = program.desc?.trim(); + const category = program.category?.trim(); const details: DashboardLiveEpgDetails = { nowPlayingTitle: program.title?.trim() || null, nowPlayingTimeRange: formatEpgTimeRange(program, offsetMinutes), @@ -97,6 +103,8 @@ export function buildDashboardLiveEpgDetails( program, epgProviderClockMs(nowMs, offsetMinutes) ), + ...(description ? { nowPlayingDescription: description } : {}), + ...(category ? { nowPlayingCategory: category } : {}), }; return details.nowPlayingTitle || @@ -204,17 +212,19 @@ export function buildLiveEpgLookupGroups( type DashboardLiveEpgRailSettings = Pick< DashboardRailsSettings, - 'hero' | 'liveFavorites' | 'recentlyWatchedLive' + 'liveFavorites' | 'recentlyWatchedLive' >; +/** + * The rails' live cards whose rails are enabled. Hero candidates are not + * passed here: `DashboardLiveEpgPresenter` derives and pins them itself. + */ export function buildLiveEpgCardsForEnabledRails( rails: DashboardLiveEpgRailSettings, - heroLiveCard: DashboardRailCard | null, liveFavoriteCards: readonly DashboardRailCard[], recentLiveCards: readonly DashboardRailCard[] ): DashboardRailCard[] { return [ - ...(rails.hero && heroLiveCard ? [heroLiveCard] : []), ...(rails.liveFavorites ? liveFavoriteCards : []), ...(rails.recentlyWatchedLive ? recentLiveCards : []), ]; diff --git a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-playback.utils.ts b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-playback.utils.ts index baa0a5a75..6002e34a1 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/dashboard-playback.utils.ts +++ b/libs/workspace/dashboard/feature/src/lib/rails/dashboard-playback.utils.ts @@ -1,3 +1,8 @@ +import { + resolvePortalActivityWatchKind, + type PlaybackPositionData, + type PortalActivityItem, +} from '@iptvnator/shared/interfaces'; import type { GlobalRecentItem } from '@iptvnator/workspace/dashboard/data-access'; export interface DashboardRemainingLabel { @@ -83,3 +88,23 @@ export function formatRemainingLabel( params: { hours, minutes }, }; } + +/** + * "S1·E5" for an item whose progress is tracked per episode. Keyed on the + * WATCH kind: a Stalker embedded-VOD / lazy `is_series` show routes as a + * movie but still names the episode it is on. + */ +export function buildDashboardEpisodeBadge( + item: Pick, + position: PlaybackPositionData | null, + translate: (key: string, params: Record) => string +): string | null { + return resolvePortalActivityWatchKind(item) === 'series' && + position?.seasonNumber != null && + position?.episodeNumber != null + ? translate('WORKSPACE.DASHBOARD.SEASON_EPISODE_BADGE', { + season: position.seasonNumber, + episode: position.episodeNumber, + }) + : null; +} diff --git a/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.html b/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.html index 34db676c1..3e4c2f682 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.html +++ b/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.html @@ -10,198 +10,12 @@ (addPlaylistClicked)="onAddPlaylist($event)" /> } @else { - + @if (dashboardRails().hero) { - @if (hero(); as item) { - - - @if (item.backdropUrl; as backdropUrl) { - - } - - - - @if (item.posterUrl; as posterUrl) { - - } @else { - - {{ item.icon }} - - } - - - -

{{ item.title }}

-

{{ item.subtitle }}

- - @if ( - item.episodeBadge || - item.rating || - (item.genres && item.genres.length > 0) - ) { - - @if (item.episodeBadge) { - {{ item.episodeBadge }} - } - @if (item.rating) { - ★ {{ item.rating }} - } - @for (genre of item.genres; track genre) { - {{ genre }} - } - - } - - @if ( - item.contentType === 'live' && - (item.nowPlayingTitle || - item.nowPlayingTimeRange || - (item.nowPlayingProgress !== null && - item.nowPlayingProgress !== undefined)) - ) { - - - LIVE - @if (item.nowPlayingTimeRange) { - {{ - item.nowPlayingTimeRange - }} - } - - @if (item.nowPlayingTitle) { - {{ - item.nowPlayingTitle - }} - } - - - } - - @if ( - item.watchProgress !== null && - item.watchProgress !== undefined - ) { - - - @if (item.remainingLabel) { - {{ - item.remainingLabel.key - | translate - : item.remainingLabel.params - }} - · - } - {{ - 'WORKSPACE.DASHBOARD.PERCENT_WATCHED' - | translate - : { value: item.watchProgress } - }} - - } - - - play_arrow - {{ - 'WORKSPACE.DASHBOARD.CONTINUE_WATCHING' - | translate - }} - -
-
- } @else if (data.globalRecentLoading()) { - - } + } diff --git a/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.scss b/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.scss index ccf9ddf99..077d7a999 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.scss +++ b/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.scss @@ -1,8 +1,14 @@ :host { + // Read by the full-bleed hero to cancel the gutters and centring out. + --dashboard-gutter: 28px; + --dashboard-top-gutter: 24px; + --dashboard-max-width: 1440px; + display: block; - padding: 24px 28px 40px; + padding: var(--dashboard-top-gutter) var(--dashboard-gutter) 40px; box-sizing: border-box; min-height: 100%; + container: dashboard / inline-size; } :host(.rails-page-host--empty) { @@ -14,7 +20,7 @@ } .rails-page { - max-width: 1440px; + max-width: var(--dashboard-max-width); margin: 0 auto; display: flex; flex-direction: column; @@ -32,504 +38,6 @@ overflow: hidden; } -// ── Hero ──────────────────────────────────────────────────────────────────── -// Netflix/Apple TV-style hero: blurred poster backdrop + vignette + sharp 2:3 -// poster card + text block. Mirrors content-hero fallback (no dedicated -// backdrop asset available, so we reuse the poster blurred + scaled). -.hero { - position: relative; - display: grid; - grid-template-columns: minmax(0, var(--hero-poster-width)) minmax(0, 1fr); - gap: 20px; - padding: 16px; - text-decoration: none; - color: inherit; - border-radius: 18px; - overflow: hidden; - isolation: isolate; - background: var(--app-widget-header-bg, #232840); - border: 1px solid var(--app-widget-header-border, rgba(255, 255, 255, 0.08)); - box-shadow: - 0 1px 2px rgba(0, 0, 0, 0.2), - 0 12px 32px -18px var(--app-selection-glow, rgba(120, 173, 255, 0.4)); - transition: - transform 0.2s ease, - box-shadow 0.2s ease; - - // Tighter than v0.21 (was 160px). Matches the v0.22 mockup's 150px - // poster intent, freeing space for the progress + remaining label - // without growing total hero height. - --hero-poster-width: 140px; - - &:hover { - transform: translateY(-2px); - box-shadow: - 0 1px 2px rgba(0, 0, 0, 0.2), - 0 20px 40px -20px - var(--app-selection-glow, rgba(120, 173, 255, 0.55)); - } - - // No-image fallback keeps the accent gradient so the hero is never flat. - &:not(.hero--with-image) { - background: - var( - --app-accent-gradient, - linear-gradient( - 135deg, - rgba(99, 102, 241, 0.12) 0%, - rgba(168, 85, 247, 0.07) 100% - ) - ), - var(--app-widget-header-bg, #232840); - } -} - -// Layer 0: backdrop. Two modes: -// (1) Real backdrop (`.hero--has-backdrop`): sharp wide image with no blur. -// (2) Blurred-poster fallback: heavy blur + scale so the poster's colours -// wash across the full panel without the portrait edges showing. -.hero__backdrop { - position: absolute; - inset: 0; - background-size: cover; - background-position: center 25%; - background-repeat: no-repeat; - z-index: 0; - pointer-events: none; - - // Fallback: blurred poster. - filter: blur(40px) saturate(1.5); - transform: scale(1.5); - opacity: 0.9; -} - -.hero--has-backdrop .hero__backdrop { - filter: none; - transform: none; - opacity: 1; -} - -.hero--has-default-backdrop .hero__backdrop { - filter: none; - transform: none; - opacity: 0.95; -} - -.hero__image-probe { - position: absolute; - width: 1px; - height: 1px; - clip-path: inset(50%); - opacity: 0; - pointer-events: none; -} - -// Layer 1: vignette. Scrim behind the poster card (contrast) and on the -// right edge (text legibility). Middle stays mostly transparent so the -// backdrop colours show through. Darkens further when a sharp backdrop is -// present, since real photography has more focal variation than a blur wash. -.hero__vignette { - position: absolute; - inset: 0; - z-index: 1; - pointer-events: none; - background: - linear-gradient( - 90deg, - color-mix( - in srgb, - var(--app-widget-header-bg, #232840) 55%, - transparent - ) - 0%, - color-mix( - in srgb, - var(--app-widget-header-bg, #232840) 10%, - transparent - ) - 45%, - color-mix( - in srgb, - var(--app-widget-header-bg, #232840) 65%, - transparent - ) - 100% - ), - linear-gradient( - to bottom, - transparent 55%, - color-mix( - in srgb, - var(--app-widget-header-bg, #232840) 35%, - transparent - ) - 100% - ); -} - -.hero--has-backdrop .hero__vignette { - background: - linear-gradient( - 90deg, - rgba(0, 0, 0, 0.55) 0%, - rgba(0, 0, 0, 0.2) 35%, - rgba(0, 0, 0, 0.78) 100% - ), - linear-gradient( - to bottom, - rgba(0, 0, 0, 0) 40%, - rgba(0, 0, 0, 0.45) 100% - ); -} - -// Layer 2: sharp poster in native 2:3 aspect (no more 16:9 crop). -.hero__poster { - position: relative; - z-index: 2; - width: var(--hero-poster-width); - aspect-ratio: 2 / 3; - border-radius: 12px; - overflow: hidden; - background: var(--app-widget-bg, #1e2330); - border: 1px solid var(--app-widget-header-border, rgba(255, 255, 255, 0.1)); - box-shadow: 0 8px 24px -10px rgba(0, 0, 0, 0.55); - align-self: center; - - img { - width: 100%; - height: 100%; - object-fit: cover; - display: block; - } -} - -.hero__poster-fallback { - position: absolute; - inset: 0; - display: flex; - align-items: center; - justify-content: center; - background: radial-gradient( - circle at 50% 40%, - var(--app-selection-surface, rgba(120, 173, 255, 0.2)) 0%, - transparent 60% - ); - background-size: cover; - background-position: center; - - mat-icon { - font-size: 56px; - width: 56px; - height: 56px; - color: var(--app-selection-color, #78adff); - opacity: 0.75; - } -} - -// Live channel logos (small square images) get destroyed by the default -// `object-fit: cover` poster treatment. The `.hero--live` modifier centers -// the logo with breathing room over a tinted backdrop. The blurred -// `.hero__backdrop` already provides the ambient color wash for the wider hero. -.hero--live .hero__poster { - background: - radial-gradient( - circle at 50% 35%, - var(--app-selection-surface, rgba(120, 173, 255, 0.18)) 0%, - transparent 65% - ), - var(--app-widget-bg, #1e2330); - - img { - box-sizing: border-box; - object-fit: contain; - padding: 22% 18%; - filter: drop-shadow(0 4px 12px rgba(0, 0, 0, 0.45)); - } -} - -.hero__body { - position: relative; - z-index: 2; - display: flex; - flex-direction: column; - justify-content: center; - gap: 6px; - min-width: 0; -} - -.hero__title { - margin: 6px 0 4px; - font-size: 1.75rem; - font-weight: 600; - line-height: 1.15; - // Display-weight tracking: looser than -0.02em which crushes glyphs at - // this size (~28px). Matches Apple TV+ "Up Next" card scale. - letter-spacing: -0.015em; - color: var(--app-heading-color, #d8dce8); - overflow: hidden; - text-overflow: ellipsis; - display: -webkit-box; - -webkit-line-clamp: 2; - -webkit-box-orient: vertical; - - .hero--with-image & { - color: #fff; - text-shadow: 0 2px 12px rgba(0, 0, 0, 0.55); - } -} - -.hero__subtitle { - margin: 0; - font-size: 0.88rem; - font-weight: 500; - line-height: 1.45; - letter-spacing: 0.002em; - color: var(--app-body-color, #8b93a8); - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - - .hero--with-image & { - color: rgba(255, 255, 255, 0.82); - text-shadow: 0 1px 6px rgba(0, 0, 0, 0.45); - } -} - -.hero__badges { - display: flex; - flex-wrap: wrap; - align-items: center; - gap: 6px; - margin-top: 2px; -} - -.hero__badge { - display: inline-flex; - align-items: center; - padding: 3px 10px; - border-radius: 999px; - font-size: 0.72rem; - font-weight: 600; - letter-spacing: 0.02em; - color: var(--app-body-color, #8b93a8); - background: rgba(128, 138, 160, 0.14); - border: 1px solid rgba(128, 138, 160, 0.22); - - .hero--with-image & { - color: rgba(255, 255, 255, 0.88); - background: rgba(0, 0, 0, 0.35); - border-color: rgba(255, 255, 255, 0.18); - text-shadow: 0 1px 4px rgba(0, 0, 0, 0.4); - } - - &--rating { - color: #ffd166; - - .hero--with-image & { - color: #ffd166; - } - } - - &--episode { - color: #7ddb8a; - - .hero--with-image & { - color: #7ddb8a; - } - } -} - -.hero__live-epg { - display: flex; - flex-direction: column; - gap: 6px; - width: min(440px, 100%); - margin-top: 12px; - min-width: 0; -} - -.hero__live-epg-topline { - display: flex; - align-items: center; - gap: 10px; - min-width: 0; -} - -.hero__live-epg-chip { - display: inline-flex; - align-items: center; - gap: 5px; - flex: 0 0 auto; - font-family: var( - --font-mono, - ui-monospace, - 'SF Mono', - 'JetBrains Mono', - Menlo, - monospace - ); - font-size: 0.68rem; - font-weight: 800; - line-height: 1; - letter-spacing: 0; - color: var(--app-live-color, #ff8f8f); - text-transform: uppercase; - - &::before { - content: ''; - width: 6px; - height: 6px; - border-radius: 50%; - background: var(--app-live-color, #ff8f8f); - box-shadow: 0 0 7px var(--app-live-color, #ff8f8f); - } -} - -.hero__live-epg-time { - min-width: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - color: var(--app-muted-color, #8891a4); - font-size: 0.78rem; - font-weight: 600; - line-height: 1; - font-variant-numeric: tabular-nums; - - .hero--with-image & { - color: rgba(255, 255, 255, 0.78); - text-shadow: 0 1px 4px rgba(0, 0, 0, 0.45); - } -} - -.hero__live-epg-title { - display: block; - min-width: 0; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - color: var(--app-heading-color, #d8dce8); - font-size: 0.95rem; - font-weight: 650; - line-height: 1.25; - - .hero--with-image & { - color: rgba(255, 255, 255, 0.96); - text-shadow: 0 1px 6px rgba(0, 0, 0, 0.5); - } -} - -.hero__live-epg-progress { - position: relative; - display: block; - height: 4px; - overflow: hidden; - border-radius: 999px; - background: color-mix( - in srgb, - var(--app-on-surface, #e6e1e5) 14%, - transparent - ); - - .hero--with-image & { - background: rgba(255, 255, 255, 0.2); - } - - i { - display: block; - height: 100%; - border-radius: inherit; - background: var(--app-live-color, #ff8f8f); - transition: width 0.4s ease; - } - - &--idle i { - background: color-mix( - in srgb, - var(--app-on-surface, #e6e1e5) 22%, - transparent - ); - } -} - -// Watch-progress visualisation. Appears between the subtitle and the CTA -// only when a resume position is known — VOD/series only (M3U and live -// channels have no playback positions in the schema). -.hero__progress { - display: block; - position: relative; - margin-top: 12px; - height: 4px; - width: min(320px, 70%); - border-radius: 999px; - background: color-mix( - in srgb, - var(--app-on-surface, #e6e1e5) 14%, - transparent - ); - overflow: hidden; - - .hero--with-image & { - background: rgba(255, 255, 255, 0.18); - } -} - -.hero__progress-bar { - display: block; - height: 100%; - background: var(--app-selection-color, #78adff); - border-radius: 999px; - transition: width 0.4s ease; -} - -.hero__progress-meta { - margin-top: 6px; - display: inline-flex; - align-items: center; - gap: 8px; - font-size: 0.74rem; - font-weight: 500; - color: var(--app-body-color, #8b93a8); - letter-spacing: 0.005em; - - .hero--with-image & { - color: rgba(255, 255, 255, 0.78); - text-shadow: 0 1px 4px rgba(0, 0, 0, 0.45); - } -} - -.hero__progress-meta-sep { - opacity: 0.5; -} - -.hero__cta { - margin-top: 14px; - align-self: flex-start; - display: inline-flex; - align-items: center; - gap: 6px; - padding: 10px 20px 10px 14px; - border-radius: 999px; - background: var(--app-selection-color, #78adff); - color: var(--app-selection-on-color, #071225); - font-size: 0.875rem; - font-weight: 600; - line-height: 1; - letter-spacing: 0.005em; - // Explicit min-height anchors the text baseline regardless of font-smoothing - min-height: 36px; - box-sizing: border-box; - box-shadow: 0 4px 12px -4px - var(--app-selection-glow, rgba(120, 173, 255, 0.5)); - - mat-icon { - font-size: 20px; - width: 20px; - height: 20px; - line-height: 20px; - } -} - // ── Loading skeleton ──────────────────────────────────────────────────────── // Geometry mirrors the real hero + rails so the layout doesn't shift when // data arrives. All shimmer targets share the `%skeleton-shimmer` placeholder @@ -555,61 +63,6 @@ } } -// ── Hero ghost ────────────────────────────────────────────────────────────── -.rails-page__skeleton-hero { - position: relative; - display: grid; - grid-template-columns: minmax(0, 160px) minmax(0, 1fr); - gap: 24px; - padding: 20px; - border-radius: 18px; - background: var(--app-widget-header-bg, #232840); - border: 1px solid var(--app-widget-header-border, rgba(255, 255, 255, 0.08)); -} - -.rails-page__skeleton-hero-poster { - @extend %skeleton-shimmer; - width: 160px; - aspect-ratio: 2 / 3; - border-radius: 12px; - align-self: center; -} - -.rails-page__skeleton-hero-body { - display: flex; - flex-direction: column; - justify-content: center; - gap: 10px; - min-width: 0; -} - -.rails-page__skeleton-hero-title { - @extend %skeleton-shimmer; - width: 60%; - height: 28px; - border-radius: 6px; -} - -.rails-page__skeleton-hero-title--short { - width: 35%; -} - -.rails-page__skeleton-hero-subtitle { - @extend %skeleton-shimmer; - width: 45%; - height: 14px; - border-radius: 4px; - margin-top: 2px; -} - -.rails-page__skeleton-hero-cta { - @extend %skeleton-shimmer; - width: 160px; - height: 36px; - border-radius: 999px; - margin-top: 14px; -} - // ── Rail ghost ────────────────────────────────────────────────────────────── .rails-page__skeleton-rail { display: flex; @@ -643,10 +96,6 @@ } @media (prefers-reduced-motion: reduce) { - .rails-page__skeleton-hero-poster, - .rails-page__skeleton-hero-title, - .rails-page__skeleton-hero-subtitle, - .rails-page__skeleton-hero-cta, .rails-page__skeleton-header, .rails-page__skeleton-card { animation: none; @@ -657,37 +106,18 @@ // ── Responsive ────────────────────────────────────────────────────────────── @media (max-width: 720px) { :host { - padding: 16px 16px 32px; + --dashboard-gutter: 16px; + --dashboard-top-gutter: 16px; + + padding-bottom: 32px; } .rails-page { gap: 24px; } - .hero { - --hero-poster-width: 120px; - grid-template-columns: var(--hero-poster-width) minmax(0, 1fr); - gap: 14px; - padding: 14px; - } - - // Skeleton hero mirrors real hero at this breakpoint. - .rails-page__skeleton-hero { - grid-template-columns: 120px minmax(0, 1fr); - gap: 14px; - padding: 14px; - } - - .rails-page__skeleton-hero-poster { - width: 120px; - } - .rails-page__skeleton-card { flex: 0 0 min(var(--cover-rail-width, 172px), 140px); width: min(var(--cover-rail-width, 172px), 140px); } - - .hero__title { - font-size: 1.3rem; - } } diff --git a/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.spec.ts b/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.spec.ts index 74feeb38a..6d16a412c 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.spec.ts +++ b/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.spec.ts @@ -289,6 +289,30 @@ describe('EPG enrichment helpers', () => { nowPlayingProgress: 25, }); }); + + it('adds the synopsis and category only when the guide has them', () => { + const now = START_S * 1000; + + expect( + buildDashboardLiveEpgDetails( + baseProgram({ + desc: ' Live from Moscow. ', + category: 'Sport', + }), + now + ) + ).toMatchObject({ + nowPlayingDescription: 'Live from Moscow.', + nowPlayingCategory: 'Sport', + }); + + const bare = buildDashboardLiveEpgDetails( + baseProgram({ desc: ' ', category: null }), + now + ); + expect(bare).not.toHaveProperty('nowPlayingDescription'); + expect(bare).not.toHaveProperty('nowPlayingCategory'); + }); }); }); @@ -544,29 +568,7 @@ describe('Live rail helpers', () => { expect(first).toBe('a::movie::10|b::series::20'); }); - it('omits hero cards from live EPG lookup sources when the hero rail is disabled', () => { - const hero = channelCard({ id: 'hero', epgLookupKey: 'hero' }); - const favorite = channelCard({ - id: 'favorite', - epgLookupKey: 'favorite', - }); - const recent = channelCard({ id: 'recent', epgLookupKey: 'recent' }); - - expect( - buildLiveEpgCardsForEnabledRails( - { - ...DEFAULT_DASHBOARD_RAILS_SETTINGS, - hero: false, - }, - hero, - [favorite], - [recent] - ).map((card) => card.id) - ).toEqual(['favorite', 'recent']); - }); - it('omits disabled live rails from live EPG lookup sources', () => { - const hero = channelCard({ id: 'hero', epgLookupKey: 'hero' }); const favorite = channelCard({ id: 'favorite', epgLookupKey: 'favorite', @@ -578,13 +580,22 @@ describe('Live rail helpers', () => { { ...DEFAULT_DASHBOARD_RAILS_SETTINGS, liveFavorites: false, - recentlyWatchedLive: false, }, - hero, [favorite], [recent] ).map((card) => card.id) - ).toEqual(['hero']); + ).toEqual(['recent']); + expect( + buildLiveEpgCardsForEnabledRails( + { + ...DEFAULT_DASHBOARD_RAILS_SETTINGS, + liveFavorites: false, + recentlyWatchedLive: false, + }, + [favorite], + [recent] + ) + ).toEqual([]); }); }); diff --git a/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.ts b/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.ts index 4a6edd308..7a7f8aa86 100644 --- a/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.ts +++ b/libs/workspace/dashboard/feature/src/lib/rails/workspace-dashboard-rails.component.ts @@ -4,7 +4,6 @@ import { computed, effect, inject, - signal, untracked, } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; @@ -13,15 +12,11 @@ import { isStalkerAccountPlaylist, isXtreamAccountPlaylist, normalizeDashboardRailsSettings, - type PlaybackPositionData, playlistDisplayLabel, - resolvePortalActivityWatchKind, } from '@iptvnator/shared/interfaces'; -import { MatButtonModule } from '@angular/material/button'; import { MatDialog } from '@angular/material/dialog'; -import { MatIcon } from '@angular/material/icon'; import { MatSnackBar } from '@angular/material/snack-bar'; -import { Router, RouterLink } from '@angular/router'; +import { Router } from '@angular/router'; import { isPortalPlaybackWatched } from '@iptvnator/portal/shared/util'; import { Store } from '@ngrx/store'; import { TranslatePipe, TranslateService } from '@ngx-translate/core'; @@ -55,20 +50,18 @@ import { resolveSourceExpiryBadge, SOURCE_EXPIRY_TICK_MS, } from '@iptvnator/workspace/dashboard/data-access'; -import type { DashboardHeroTmdbExtras } from './dashboard-hero-tmdb.service'; -import { DashboardHeroTmdbService } from './dashboard-hero-tmdb.service'; import { DashboardRailComponent } from './dashboard-rail.component'; import type { DashboardRailCard, DashboardRailActionSelection, } from './dashboard-rail.component'; import type { PlaylistMeta } from '@iptvnator/shared/interfaces'; -import type { DashboardHeroModel } from './dashboard-hero.utils'; import { DashboardPortalLiveEpgPresenter } from './dashboard-portal-live-epg.presenter'; -import { resolveDashboardHeroArtwork } from './dashboard-hero.utils'; +import { DashboardHeroComponent } from './dashboard-hero.component'; import { buildLiveEpgCardsForEnabledRails } from './dashboard-live-epg.utils'; import { DashboardLiveEpgPresenter } from './dashboard-live-epg.presenter'; import { + buildDashboardEpisodeBadge, buildPlaybackPositionReloadKey, formatRemainingLabel, isContinueWatchingRecentItem, @@ -94,11 +87,9 @@ import type { @Component({ selector: 'lib-workspace-dashboard-rails', imports: [ + DashboardHeroComponent, DashboardRailComponent, EmptyStateComponent, - MatButtonModule, - MatIcon, - RouterLink, TranslatePipe, ], templateUrl: './workspace-dashboard-rails.component.html', @@ -130,7 +121,6 @@ export class WorkspaceDashboardRailsComponent { private readonly shellActions = inject(WORKSPACE_SHELL_ACTIONS); private readonly runtime = inject(RuntimeCapabilitiesService); private readonly settingsStore = inject(SettingsStore); - private readonly heroTmdb = inject(DashboardHeroTmdbService); private readonly sourceExpiry = inject(DashboardSourceExpiryService); readonly trendingService = inject(DashboardTrendingService); readonly recommendationsService = inject(DashboardRecommendationsService); @@ -143,77 +133,10 @@ export class WorkspaceDashboardRailsComponent { readonly skeletonSlots = SKELETON_CARDS_PER_RAIL; readonly skeletonRails = SKELETON_RAILS; readonly liveRailTitleKeyForSource = liveRailTitleKeyForSource; - readonly failedHeroImages = signal>({}); readonly dashboardRails = computed(() => normalizeDashboardRailsSettings(this.settingsStore.dashboardRails?.()) ); - private readonly heroRecentItem = computed( - () => this.data.globalRecentItems()[0] ?? null - ); - - /** TMDB extras for the current hero item, patched in after first paint */ - private readonly heroTmdbExtras = signal<{ - key: string; - extras: DashboardHeroTmdbExtras | null; - } | null>(null); - - private readonly heroLiveCard = computed(() => { - const item = this.heroRecentItem(); - return item?.type === 'live' ? this.toRecentCard(item) : null; - }); - - readonly hero = computed(() => { - const item = this.heroRecentItem(); - if (!item) { - return null; - } - - // Single reactive read, gated on the TMDB opt-in so cached - // extras vanish immediately when the user opts out mid-session - const extrasState = this.heroTmdbExtras(); - const extras = - this.heroTmdb.isEnabled() && - extrasState?.key === this.heroTmdbKey(item) - ? extrasState.extras - : null; - const artwork = resolveDashboardHeroArtwork( - { - backdropUrl: item.backdrop_url || (extras?.backdropUrl ?? null), - posterUrl: item.poster_url, - title: item.title, - }, - this.failedHeroImages() - ); - - const position = this.data.getPlaybackPositionForItem(item); - const liveEpgDetails = - item.type === 'live' - ? this.liveEpg.detailsFor(this.heroLiveCard()) - : null; - const episodeBadge = this.buildEpisodeBadge(item, position); - - return { - ...artwork, - contentType: item.type, - icon: this.typeIcon(item.type), - link: this.data.getRecentItemLink(item), - state: this.data.getRecentItemNavigationState(item), - subtitle: this.buildHeroSubtitle(item), - title: item.title, - rating: extras?.rating ?? null, - genres: extras?.genres ?? [], - episodeBadge, - watchProgress: - item.type === 'live' ? null : playbackProgressPercent(position), - remainingLabel: - item.type === 'live' ? null : formatRemainingLabel(position), - nowPlayingTitle: liveEpgDetails?.nowPlayingTitle ?? null, - nowPlayingTimeRange: liveEpgDetails?.nowPlayingTimeRange ?? null, - nowPlayingProgress: liveEpgDetails?.nowPlayingProgress ?? null, - }; - }); - readonly continueWatchingBaseCards = computed(() => { this.languageTick(); return this.data @@ -255,12 +178,11 @@ export class WorkspaceDashboardRailsComponent { }) ); - // The live cards whose rails are enabled; the presenter looks their - // programmes up per XMLTV source scope. + // The live cards whose rails are enabled; the presenter adds the hero's + // live candidates and looks the programmes up per XMLTV source scope. private readonly enabledLiveCards = computed(() => buildLiveEpgCardsForEnabledRails( this.dashboardRails(), - this.heroLiveCard(), this.liveFavoriteCards(), this.recentLiveCards() ) @@ -405,27 +327,6 @@ export class WorkspaceDashboardRailsComponent { untracked(() => void this.data.reloadPlaybackPositions()); }); - // TMDB extras for the hero (backdrop/rating/genres) — async after - // first paint, staleness-guarded against hero changes in flight. - effect(() => { - const item = this.heroRecentItem(); - if (!item || (item.type !== 'movie' && item.type !== 'series')) { - return; - } - const key = this.heroTmdbKey(item); - untracked(() => { - if (this.heroTmdbExtras()?.key === key) { - return; - } - void this.heroTmdb.getExtras(item).then((extras) => { - const current = untracked(() => this.heroRecentItem()); - if (current && this.heroTmdbKey(current) === key) { - this.heroTmdbExtras.set({ key, extras }); - } - }); - }); - }); - // Subscription-expiry badges for the source cards. Xtream rides the // shared PortalStatusService cache; Stalker reads the import-time // snapshot (memoized per playlist), so this stays cheap on re-entry. @@ -478,12 +379,6 @@ export class WorkspaceDashboardRailsComponent { this.shellActions.openAddPlaylistDialog(type); } - markHeroImageFailed(url: string): void { - this.failedHeroImages.update((state) => - state[url] ? state : { ...state, [url]: true } - ); - } - onSourceActionSelected(selection: DashboardRailActionSelection): void { const playlist = this.data .playlists() @@ -576,46 +471,14 @@ export class WorkspaceDashboardRailsComponent { ); } - /** - * Only the source name under the hero title. Provider kind (Xtream / - * Stalker / M3U) and content kind (movie / series) are the app's own - * taxonomy, not a property of the title, and the badges row already - * says "S1·E5"; a stored playlist name can be a pasted URL with - * credentials or a MAC, so it goes through `playlistDisplayLabel`. - */ - private buildHeroSubtitle(item: GlobalRecentItem): string { - return playlistDisplayLabel( - item.playlist_name, - this.data.getRecentItemProviderLabel(item) - ); - } - - /** - * "S1·E5" for an item whose progress is tracked per episode. Keyed on - * the WATCH kind: a Stalker embedded-VOD / lazy `is_series` show routes - * as a movie but still names the episode it is on. - */ - private buildEpisodeBadge( - item: GlobalRecentItem, - position: PlaybackPositionData | null - ): string | null { - return resolvePortalActivityWatchKind(item) === 'series' && - position?.seasonNumber != null && - position?.episodeNumber != null - ? this.translate.instant( - 'WORKSPACE.DASHBOARD.SEASON_EPISODE_BADGE', - { - season: position.seasonNumber, - episode: position.episodeNumber, - } - ) - : null; - } - private toRecentCard(item: GlobalRecentItem): DashboardRailCard { const position = this.data.getPlaybackPositionForItem(item); const watchProgress = playbackProgressPercent(position); - const episodeBadge = this.buildEpisodeBadge(item, position); + const episodeBadge = buildDashboardEpisodeBadge( + item, + position, + (key, params) => this.translate.instant(key, params) + ); return { id: this.recentCardId(item), title: item.title, @@ -686,10 +549,6 @@ export class WorkspaceDashboardRailsComponent { }; } - private heroTmdbKey(item: GlobalRecentItem): string { - return this.heroTmdb.keyFor(item); - } - private toTrendingCard(item: DashboardTrendingItem): DashboardRailCard { const subtitle = [ item.year !== null ? String(item.year) : null, From 807b5ea2597ba6634bd2cf3046617fcd499130ee Mon Sep 17 00:00:00 2001 From: 4gray Date: Sun, 27 Sep 2026 22:09:16 +0200 Subject: [PATCH 2/2] docs(website): illustrate feature guides with app screenshots --- apps/website/README.md | 7 ++ .../public/blog/feature-guides/SOURCES.md | 11 ++ .../blog/feature-guides/multi-epg-v0-24.jpg | Bin 0 -> 231361 bytes .../screenshots/guide-backup-dark.png | Bin 0 -> 58890 bytes .../guide-fullscreen-channels-dark.png | Bin 0 -> 257845 bytes .../guide-library-watched-dark.png | Bin 0 -> 350203 bytes .../guide-player-subtitles-dark.png | Bin 0 -> 122243 bytes .../screenshots/guide-stream-info-dark.png | Bin 0 -> 124387 bytes .../screenshots/guide-update-channel-dark.png | Bin 0 -> 100861 bytes .../blog/fullscreen-channel-episode-guide.mdx | 5 + .../blog/library-organization-guide.mdx | 8 +- .../src/content/blog/m3u-programme-guide.mdx | 6 ++ .../content/blog/player-controls-guide.mdx | 5 + .../blog/playlist-backup-restore-guide.mdx | 5 + .../blog/stable-nightly-updates-guide.mdx | 5 + .../blog/stream-info-diagnostics-guide.mdx | 5 + tools/release/capture-fixtures.ts | 4 +- .../capture-navigation-feature-actions.ts | 94 ++++++++++++++++++ tools/release/capture-navigation.ts | 8 ++ tools/release/fixtures/README.md | 27 +++++ tools/release/fixtures/guide-demo.mpegts | Bin 0 -> 441424 bytes tools/release/screenshot-guards.mjs | 6 ++ tools/release/screenshots.manifest.json | 48 +++++++++ tools/testing/website-guides.test.mjs | 27 ++++- 24 files changed, 268 insertions(+), 3 deletions(-) create mode 100644 apps/website/public/blog/feature-guides/SOURCES.md create mode 100644 apps/website/public/blog/feature-guides/multi-epg-v0-24.jpg create mode 100644 apps/website/public/blog/feature-guides/screenshots/guide-backup-dark.png create mode 100644 apps/website/public/blog/feature-guides/screenshots/guide-fullscreen-channels-dark.png create mode 100644 apps/website/public/blog/feature-guides/screenshots/guide-library-watched-dark.png create mode 100644 apps/website/public/blog/feature-guides/screenshots/guide-player-subtitles-dark.png create mode 100644 apps/website/public/blog/feature-guides/screenshots/guide-stream-info-dark.png create mode 100644 apps/website/public/blog/feature-guides/screenshots/guide-update-channel-dark.png create mode 100644 tools/release/capture-navigation-feature-actions.ts create mode 100644 tools/release/fixtures/README.md create mode 100644 tools/release/fixtures/guide-demo.mpegts diff --git a/apps/website/README.md b/apps/website/README.md index 7754a7b35..b1d8ec882 100644 --- a/apps/website/README.md +++ b/apps/website/README.md @@ -163,6 +163,13 @@ Evergreen how-to posts live in the blog collection next to release notes channel ids that match no playlist `tvg-id` on purpose) into the isolated database through the settings, then right-click a channel of the M3U fixture and search the dialog. + The 0.23/0.24 feature articles use the separate `feature-guides` capture + group (`pnpm release:screenshots --group feature-guides --theme dark`). + Playback shots decode the generated local slate documented in + `tools/release/fixtures/README.md`; settings and library shots use the same + isolated demo profile. The multi-channel EPG image is the original image + attached to the v0.24.0 GitHub release, explicitly selected by the maintainer; + its provenance is recorded alongside the assets. It is not a mock capture. `tools/testing/website-guides.test.mjs` (part of `pnpm nx test website`) checks each guide for the FAQPage schema, a link to the download hub and the presence diff --git a/apps/website/public/blog/feature-guides/SOURCES.md b/apps/website/public/blog/feature-guides/SOURCES.md new file mode 100644 index 000000000..9cb1c8871 --- /dev/null +++ b/apps/website/public/blog/feature-guides/SOURCES.md @@ -0,0 +1,11 @@ +# Screenshot provenance + +- `multi-epg-v0-24.jpg`: original JPEG attached to the + [v0.24.0 release](https://github.com/4gray/iptvnator/releases/tag/v0.24.0), + reused at the maintainer's explicit request on 2026-09-27. + [Original attachment](https://github.com/user-attachments/assets/205dc53e-70cf-4c63-a49b-9b976fbeb5e5). + Downloaded without edits; 2648×1626. +- `screenshots/guide-*-dark.png`: actual Electron UI captured with isolated + fictional playlists by the `feature-guides` group in + `tools/release/screenshots.manifest.json`. Playback uses the original local + demo slate documented in `tools/release/fixtures/README.md`. diff --git a/apps/website/public/blog/feature-guides/multi-epg-v0-24.jpg b/apps/website/public/blog/feature-guides/multi-epg-v0-24.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07d137e13413eacc79806a5bf31fc74b3929120f GIT binary patch literal 231361 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�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

Ic`<_VmSRLu;O0E2C9H1Dg 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

(#JbHnTd?<;$zI1!KzNZ4eDwZGhPtfr&4 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 literal 0 HcmV?d00001 diff --git a/apps/website/public/blog/feature-guides/screenshots/guide-backup-dark.png b/apps/website/public/blog/feature-guides/screenshots/guide-backup-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..b6a8417d9d66d4e98b684821cce5d19216d3ea7b GIT binary patch literal 58890 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

7J1q_)_(SX0rReEx{LPN}~aWPK;IgYd6 zoY@N%#h^xE1EZ6eno&%zW#u&L6PufZ^k}d~1FC!#>e~48^p3}Au7TS;O!RnZrN=9! zye-eY4RaAxh=FUMP$+}rn%U}Y|4NVfgA|<_w{@C^JtalK^WgdLG&BO;<1cbp=W zJSLE6fj!JCD|5E7s^@wNF3_xWn6}8N~ZE!Or zb2+x`69Xz%&UWW02nIrZImTas(xleW9y<9faa89(1h!{cs9EkZPBDYh zsf1t(#2{0$=ArSN2q=1oN=FFW#G$e^Ef-?fI+OPFEtO^R&HVeNbQS&HI-Va}1 zlE8rE?$H+D;HrVNoCH=^S_*Czy;wv)t2v2aNExehoSoS$gsgvy6+s_EFi0hl)8?(} z11!-}kZ~(`rT6>{1QW8ps1t zQw|Rg^JaI~jAMn-fy_{JsAI$V5eVSS&#cM^fb8i*;y^*Of)%p7CjT9&G;_78Q+kCO*YYksnafoYfer+ zKGU=I%~=}~nUQ`*Vw_HSb=A;2?q571*8{X{4NH*sS znzIW;!%8{E+|KS$4{}5j-ji~UfLWC9hQKf=-t&11{oS)%L<4#!x1i1ixiQ?>ZxklH zlO>Ao$kj(qLQYpP=rGJui1-ymPHw@7oXT^JVW+w`I*r%&`MRnYtiH^7jUrwU@yfRJ z@vail`4sK9VGfJ{A@PjL`sHm9)ZQV7U^lq5*JDy=mYVW5uAhuFp*zR=tN+*HuX+8x zUHqEFcRqTViVqwUbyF(s=(8H$dahe8GvHMTP%>l!QNL}B*#%+99(d)m)7zPi{A97T zbHy&>$b2IfI+PH(HPUnV9JZ3M=}o}rVUOzW7C_IAgx+nXMi;kw)|{BCsX)n?hdASn7G7PxveHUTFjiCIIrsM zuJFPvTZ4iAcHZr%wmjjZ3p7pNZAnWC%aIu1$szMPyI|!-B9CsMLMV7<4mMqT1&`0v zay4j#Z06$1+s;s<$G)%)zYL=cYp15o*94Gr4T$Z$6o~;Q0^oP4;ri&bHDRyK$PE@V zuPqH93s$s=wlMxw1CYC-2n!k0im@}V=jT!Sm*}HEOil%BOdJ-kvr={feMezNarbRV z!-Q}ty2iY)7F}SFiJDtf^4MPl1nzUc$gk#)}7z~i_lY3oP$rmO&Au^)bWIh!-Uq|lBmtoi6z%%bOp)9HR|ha8irF5?GOsea4TeyOT=A*YL39&Vn=G z?u5~Kpc&g$_|NpT+)`%SPt%;BYhpF?A2(wd2EU&H?G>yZKqFAKeQa%Qx34d0yfiXD zKh3tR|Nea0pdzLcg0|_467<+R@WBGyVAAl>3=_R#XqTD`Eg&a;YAYUa@iwt3i61N= zFp<~^=#oT6jiz#wTJSaHLPujp+YilR$C!3JpTR8H>z#I+@Lmru0OBr> zRN(7dL7RkNSLZuKaZB`1|6`VPyPyznlLlv^+HAQ~tkx1;0sNKB=~yseVJ7!a?Z?hd zt0Q??to#sXSWCReN?9hHS54Umuq8YtI$VeI**5;HMx0DTP|Hd?qVrMZG^ZN|qQ`(- z=Lig)#diDRPCG&uS?TI)fl_TrIz^2pb|uT&h2fg zXc1)CT;FvdfB~{Li?O$`qx&o(T5}OTTEC;#xW1YM-Wi71K3Uful9#d6J$UV9&cH!e zYiqmU_=tuH=j}v*g3Y(~7Oi^A0Hz#Rm#i@8mufV zwxSC?)}hm`k9$@{kJl++?p?;QdLrf{TOo0&$^2V!8d~(WKS+#kOemdHNkTms#`$5^6AuOj;Fk>=>Y@ zIUkd0ZEL-j2)`K3nmuc?K5v&1z1X&%Ejo%TXLFlJUb^*sos=X_SF65(j8NT!bP^Z< zw*vs~XBnw3@4T2OlvY=kzN5|el7e}9l~}@#SkMdKsQOU1imMWec7oGOI^DR)H7gtV z3+YJMZWsInZr*y=(bo9E1;H6O^-kvTz&ClI=GH8;*_&~9wRiod*EVjSa&|*{T>9Ta z;@-={UkVYFKta(T|K%Y{4rdYWVs=9qagYs4a_Srmoh;1&!3&_KphMZLLc!C+#iJb{ zIR|5AlHFY$k!*SmPjB(kKqeBtb&*`}U&TAN4tX&a?*1IxF3CD!CRq;<_TjUeo9o*; zA|PvZ5xS@%3KhNZ72K(N{8=RH2oSxW#auWVT<8=!9WBF8k188Zk3`)!T>;Nh=(eL4 ztLxSQ#K6Z{$u81&6L0p-E=$ud%m};AoM6L%pDX}!rd50Oh;uaTBnURZG8odv2R1p@nMEBPE~U)wl}>ut z8~~xbvVIee+0cp=+64Y>rrdlK;KK2zG?k!V)~DNils0r)#>n8 zTSGVFzSj=}om48q&SP6vcNTTN7Tr-hdyWxa z-DfTUQu)R-K}1!PZNURu-u1tYO`L&5QS7NUV(%>j`zu;Hw1=Rts3-Ah$hgt8N0XVN z3-O_bJ4Llt%{(7qXoV7Nx)|c3?i>86>1|vWo9aPW3f=gt9x^4!Bq^w_wkkQni&lDlf`z{U@E-4oN#di$Ykk#Ig9)3$&tDx!;STIo}PqwNXUyw|pHEh+=7 z)6u(@vW1S)UjP)^sXd(BZL`=*oMdE}KeI{15MIR-3Pmm-GHc{dl!HgdPDt4!$lzN* zir$+K0 zvcX*#3k$ut@t9PfH7c=vURGgXT=oHQe?)(tfD2QLEF4xK!mtgFv4&W2 zQ@dVkM?KUDD8Kh&8?&4-NBzqB@$Yub+uPT!t_9y9o$1dwe|wAAU92-4y>rdWtz>DK z>`R52DB*ykU}F=5nz0E(P2$QC5tVGZs482@hR+Xd=U` zA*XtBQ%y?|oT3Judx>U0R@%4wk}TINp$KxRcDT=8axcN9Nt32zAZeZQ)wRwLbLuAq z{ef}RdF3sGn(t#tO9k)j+!?(-ExJQEFckfat=Hk5hg>a*B*^DE$i!c+!6`{h8e`K| zcIu{{M#A)UQM--ZddY5a7wNdFx0^rlK)__?%!^6;F)Q`}@t~ z@9wmt0_s;Ls>k`j&HTPEVMSjza49MH&aU+p-?*~+$gX}2OZdvGDzk&yaf9a_J=2Cg{f$79ZNPH}ZWwyi@CP+TvmPT&oT zlcb}!Q`83_*9)pudrs|o*KxUl!Aq6@&JZ7G7U#+@Ig?AUl}iB#OGD}p@&?G1;vUha z!+&*3Bmv4MnR#~CK)*3*_*E*&&$fAYYP8?oTs?$2$l;kHd=v*ID$^ytw77Qj1!`s$pY@)91%yi3g01*f?@L zglODt^`5x&9lHG;0Wm2GeEX#ZWd9q0|4%FFEh_aANW@9d+`jwrE|2=6)|>@wf}bSz zq1_YLl;;z3lvWO{>%aBnam^D9WkyK)MR-K~Vn#C}4N!U(_j&RV2Y&qdf2xO^ zj2oFDVaDU4HmRkhMtR9N+MiBShrg3g=kwh3Dzg~{3&OxM%v1Z6Ph3JTHb3u+R1#u! z<4d7zNl)$Jj()8-AEl&W_JHtn;dM3N=It&cTeL)Boh<>O*>FTLKmK3f+as3#y#K|GFxx%xntea|F5ExOL=~HWnv#ZQb8U^3j7-+U zuZUGpslsdXW=%AZ$|83d>=NZ|VDhCY*E(2pqqgqnWDAmb=lU;wYG^P{kTXe1Unw#cgdcT?-=_P)_Bq{Tlf zZdtiYo)7-QT7J!N;u=i9DSXg=3~ZoGOb&8d?<75)-*zf_RRgG=89aQ9nBoV!xE$l* z;gO^d49YTLYeZLLHqd!*L~Ts z?MSC=znZ?ZM4^wd-TJ+6U;*sHGBSs5ePpA?8w?!?i$zX=+qtKhl7jSaFCbxfa&oW| zCOUK49`jD3?oycRnU=LoMTiEA+rrn8`xX^%bm(=o(f|NvVnegJoavSqqc}5jTUuTl z%SjI6YVWdn#h;429;Ef(C3hyzQh!fKmJLP{zH@zP{h~+`M0i{Amn12Xdx9hF2?%r1 zkd`+8O`gQw(GiazEI2qgXRlcIr51pRdZfd;wXu=#JcBvTUC?oxl$_jll7gPJIuL6} z&1r~%Y!oa(lCj?j+FvaB2NLwh(};-u0!Ic^*VmC7?-AbrZ`Me?-!Qb_^FN#`>Hbx3 zU9rMRWRz6aYVlGc#E#$8b_X{RU(TQtoEuG?oJ@fY;%UwrP~~&5^eC<{i=^!kvgvV? z4>tDk)+|lt^yhPim7e!KmNjoz)&K+vVhT>!& zel`gh)GOf&9M1Xc+}>jfHwuWZmJ>d3{*5J~d@b5tKR`q$o-6Saz+8Ek@Ccih`bPf+ z0{$=d;SzH2Yf3z?gkyNocHSrnVn5aX#+*% z5x4L`KoyGo-8xHIq3S!VOX}tRD6A3tpE-bf2!H`G3j{bJd;cs%Nl6bAw2Afu7z2gF z)b-Q<0O;iq0$>)lf0(O*V}#J&s@f%SkI{FO0L-X~>d!NHlOqHhSSD%+&8vPz(oH!{ zNs2-ZANR4`;g!8nklg+-`D=2!zudJrhet%0ntH$FdJF1^$mIS5^MMg{1zjVRvd8Ql zJMcQby!PVS$G|zSk1jOjk7hJfaxL=%hh2!xbCIUG812Flb)9l;M5%wdcD~xC-cU~Y z9FFS!tHk1;Xuk-KPj59~wvwz(R(tCB2}@4SNnvgWiIvtf-Mv;05Ofz?deuCR{>YWz zujaTA+TGqXntS;@*i*jVz#D*Wf6q=Ee zy`lu5zg&_{kUO!TWscpyPBi`4S5F#WNW%W}o&--z;EC4`XRlmwN;?%O(* z-U!!d7un@Tz_7Z(J6mX!Q zBF9y_Vf(X+`3JX^D>3aLg}{6GT3mEZ+ttgDk|Q!hk20t{ek1>~*l0+KD|iPp3gu{8 zkw|J=OX_liw}yQ_cy!R}sKjCYlx*I76${EbnUVMaAw1LpQc-+t5H(|sTz}0RYX95= zy#Q7ckvOmD5b}95doM-~Z#qxeRqVh$B^jCxBe8Zi{2Fd_5Yc%URbB_Q10P#CZ(nWv z4i4trIRqG$RF0eDpDK2%Hh_d`95sHrU%7kkb6sC*?@Om4Qjy-pV`TJA{9aw)!n^3^ z4JuOi_++fps=C?xw=ci9ve|w87q%T&hE?X@%DF)j^;|iHQuRq&N=V7MgDj!^8F)S? z3a?+#)!t0F#-pajqQ9A~gf;iQUT9s^TFHwQ6gT8xiF02uW2 zcBo*2!CiYAMX5oH0viI{$x2C-%8w>WOrYbY;FFkMDusn!qmlp>xgJoMXBV?T?$Gn+ z_6D(|!OaK$QhOd!gUxoC^w5-LXzQbb76?h7!7ZP;RYetWz42H-{wVsH)UU~SM zm0#*vccDHL!0AuS&yAsqwm{@uDLON zlG4|g{jvAr8{wW!J#-qycc3rmM+?o4Wp)w60uJOY=a0QdPt2Zq;y1@i5q40esFkjP z{O%s>zNblFQJD^f?rVY04G_e#1sZP0xu7oro5fTJ_65)JV_MRs3fl90@&N2kolV1x zizXPQO<3Ufwt^X3g^zi(y$khs7UY9pyLu=)giDbm9MJ_r!nYnnKD6F6d0}{Zeh4O~A&GXhVaAlmqJxAI5N=bV*kfrs#sJMbL3l*xn8tlwM5!J@wgRK zE9IsC);dcd$>|rlM{wF~-^tjX$OXRRMh3^|F*JA3!ZoEp;lgyMZt|ji^4}kN`7`Ri z8G$KxVTK0zzHn+t)wrW)P${aW5sBwxmSfJu)DltF*q}IfmgVUGjs$-Q|@|I^lI{;}^ygt(mP~BJtdescj!5hKb8QMW~Jt zc!(i`pSU{+)GL;{9LqOnphaG9zkBP<+-qUmdug@5U!H_7wy$nae`(CSW&HkRxAk2U zd2LP2t#7tvrhN(2_a9a3T7xtyvTfr^3RlW|q^Dp4le^F44nMiJ0H-KrYm_0A)Vz2@ zFhDK4`z84pC)mW0O#eD5ry+g6TvGNi+Sg>P7-G4JVWq)`mg(KtWNyPJ*dCiUQ@~7ST9@YS+Xl;AhadeUY8A{=Kk2> zDj)LcZf+)LFvAX1u34`xxF+nF(KEE8HakIu*qLyMI3#wHQ9S#V=OJdmn zzxs}Q+q|rKe2zE&z1?CsUpS}?G}m_JILDvJdnx}E=#gC3jzXYmcmj%Zlwoa<1i=aKko@4@CdR} zNq=G`zfZog$vJNE@a>A{(+)diMIqvebIv#D@O`lO9a)gt9fKPgR#d8y6uOCp1GX5v& z+#z+MqHDj6r%xaLFj^8S{u-x}Es>$c){NeuI=6YIQ0qR4)9Wo~;ufP3&*;%V_M`Ou zB$^W=LU82@57i9P*ePZLSC*d{@07YvT36OXO+$m(`CSZyiQ>}~Be|pak{4;E`s)_z z!r+9bOR13-TSZfAX`Oh{*7w(`!rL8>)$_-`Y;_Ksv|8k8wwlf)X?56XXlRh%h#Jxe z$mPum^KsfvQZASqfChjXUWFUI0ZdI==6DDD-cQZ|Czc#mgW4fkU8u%m#j2`0HgDPH zWnpl0NCTYZ%c|Oa83NPa*NnQpfy#;3uKo}hJAB3SmCwBQ+TXQa3lw`%i!MvGs!o4+-GIdo|^(c+N3Nr$%E*)EwATafRxQV-fNh17kH?Rp5 zx+?clVpl$oAM?)-9Ba)+S%0V3?kMFD<0dx?XX(K!P;{G!r!(%3(J|C!zWYQa+0uzb zEo(nO<`_t7TBXDI0^0645azy)59cZZt#t3t@F80Chf|?|B!o_Rc`l(9o?n)C71Hy* zS900;-(EnAB_O$c=!ZYfsh#S&Q=FB~R>!XNu`X>$82{gkl)GJy%{6;Gz8;Tq-P6|l zIJ4HM-6#1o7g4&dWn7Jl#mR;yDw;}fPp6H2%!k;$E_}khuON-XRq7(lxlOW%<;1FI z+{{|I?W?j%%BruWH#j)mGPIy%j=M;ZOxM*JH4G{tlkpA?ATncdQd(7I(o)l!PVBOC z%*t+dVtQ@(mB(lu*`528`n6WxOtvH(j&fn*{1w_FH0!Z4*h;~)G_l7bIYMK{)7GNP zxb?dWLK$*N(rW*H17(4)-8nCEmft1MsB4;sfm?c|L7)PfvJK+cj@5v8yG%2!43(?- zOWCFM6YM{?Kj~1Dq`iQ&KlG<@8Jk~hwL;FzFaspYZ7J?6j8?deN8H@yXd0WjXMzX; zq%wiRE*rJ1y3* zb9@A=bES>EWw3*g$G_R#?}LeY#yIFa^!fpZxC;UPo&2Nt1mZq99xX3YslJuW5j%ZE zd)j%+3$x6u==^0?t^A0D#M&Z>0_-v+>FvZ>feV>cy)vumn&Vjm4&%-t;p4H~JQgIJ zftnQ zOJnX6_O+586!)H!d*_0B|0adNc|4^bqVCfc2)?buwPr+G+7^Tsp$Or-J)0vJ5x|nG zIh;Vn*}R3ecp%5XaoWi}JwZojEq`#&a7Yxj&Kr6@f?^wi9O$%_RaS&jRSp9*XD-e6 zN>khxY*i2|%!Oy=5$+dlq8As5=8)m(K|Ota4**r0?6R@0p}!ZD5h}6}8O=-}@?Lat zY0S#p>{)CIcwldZG%HXp3g>jwhd^jIR+QPq>CK=4joVTl=ZeVTDB9J9W2AmQZz8jT zk3LZuNKRE3Y+Cf|{cp@vr3BXJh`S2=s}efjl%=0)uz=og%Z_$iE+BM;nW*T_$rb~i zo5WnoxaEsqqtDG@Mhv62frhB@{!(s1&FgWOJtekyVONLE){&!7o@GvIDPD`QxZbZ= z8v6f{WJNq$&f{8g6{D~%M|f&qwQSKU`Hm=6-`Aa0hKz(Mo^*N$!Y(!zbP7(pMka&L z*M~tx?;j<@g-;4cF&7Jo+O7QK$%UuiS>s1Be(&@rePY%|qVG#3X{%_RreGQ>3|saq zMjp@$mYWTCLZQ&`$1)UMT+-woyI)uvP{Z+EG43|VVU44sBc?rtC*U@!N*;XkyzJ}` zW)`YeCkI^x+I2Sbtd%oPdo8h{l-#H+(T3D-_8AdpIR)AE0C;M|?P8o*Ll+g4TbQ4d zCvZGft^L|!f9XRh%weeP!=Q#+)j|u&N{{ROICLkNRX7Vo9AA+HU~~Z*^-c6vDPlxN z=_y+--*#{*)NMb2fg0n_b1@)aXi6?}mdB}7dRt^zhsvdWUZz(hC%bq(pLh0bH8QLo zIg&W>PEB1k$!5UOVcfXV59J3SI~KiQ7tYIVG$h3DYF$?*FO&Oz8}4?6N7O-PU89I{ zAhVE8vaxkGxE}er%XQ^5g?maoOo=X%A&C#P;2S`dOl6*!C^#tybv}xZ&Q)hh1b$gp zdE91Esh9up>gdQ2i%!E?W}@}m4+j-%SMmPwia>ATk-B08yBC8lUT!HiS20uSuzqiV zAkCTa;%*vToVu7 z$`0YzV+s{6%VKcvDTKU}b{Mk-RwI^6Mpq|eEl#%`$5c*Nk)tH{OW@K%v0Zu|E#D^A zNx5CR0S`JcIGt}{u3u?&v}JTOZH$W(X`Si2x*M-}pnF6%K39y4sOD^K7#LKJLS5@m zM<`MXPtVpe!e$(20iOAzWF=9(?Yh;exu*M$FSW%!ZL^v9z`&-p4^z!KTS-Lloyavp-QjaN>R&zIJ*(ZR2e7BJ?3KN7#Ru68DFW6r2Vp{}TZ?i{WW^>$)W=5+@H1d6 z^7p0u0%!6)`<2P19 z=UZTUMumiggwOR83CAnhDje;Ix`Po#PKO!8wLXO>rIS0ZEZT>?8)_-LM&#sv!INfF zKR;RLLf(d~xRhq4Tu|*CPOMP!d@UAI3-3J=IyiiDXC@AF_(n+pfd>jG(RwD2IUl&w zMuqMH+&OA&v0)E@^c;U8f$E&@$>l%L8E-gHtkrkxfZuThab&L@l5qxqR2jf#;^xHL zisvt_>h5k`JBDqL<0JZ_0JA3WjYyMdQEEA*nlV`Kk{I44ZcT(QnZE zdh(9@u`tRq+ThbJHLFO+P_?+>$AfbM@T6JxD&3i&yvfvO=VZEUd3LBHby<7Ww%m@F zxUt{MPx+2;DDQ!1HA@@)+zliRq3_ib#c6y#7b%4XPko^;r)HN2!Hgg)+IeO!Qrc8H(SFag}KGm$hm_O*t^oy}iUa_PC zdP?s1MABKChZ$aH%U>W?{b?MQIN?I}O?a?}>a!sG+wN|SZ2EO^_XX^?UY@|dYqpQ= zXzS^f+w@QBhC9xKMu;$OZWCo>=O7igAx8G|K zJspKXa|;VKZkAb0#dX|At()9(-fhGN7M#1slicG!Ea}7RUL*A3;?XS|$#RDvECVIu zR-m`+uSS^b_`{+wBi>wh=1zHLrbEjZ*`I`jnk zYgew2eo=Pii9?w@Ih)x)HIQWL8&x?TZIEJg^D&cPCeCICqz36-*7A4VKN$d6$KCQU z+8MzJK63E)HrsV}aG@X0pT=ZV|u>if~eku0Dvukw(zOOqZ z=o?O-gnjrvT~cJ7)2&BZ{%*(!(G5yi3%dngB`o?Oh`aliaYm<~5r0=bMzmP>)!LJ0 zk4mDjH?rA7&XFG4_B7H|2To8e>G-w1?&!&ZwJfa_LZjCj*P`VpgLucG9-oi72t^aW zZ&z!xOKvE>y7%mPudWcr+k0Zs42N?#ILBkoAh;0+5kh@_Fl#?L?SVm0Mu%fl^F`J=-ah^bgF<$^4YU+hx@EhmKKSv+12Ae#n`l({tB{a4S%|~+tlYd`r|q*18t4wPK4ErTy? zcJ~xq!$YY1ez|5WqKlq*>eQKx^Vwz;Y>s&%_eub7_XXp_0In+-YPJd8naUA$3j=Tw z<8p5yzq$$S;OGiuRbVyCqn1I0*@h~86x%sp$`$tFbMwXGPu?5b|A)4>4vT8<+rDi? z6cj}^t%NiP2uQ042-4lC#L$Rzn{;;$-6c6RDkV9@&@f01Jp&BG07E!qM%T=QUik1H2bh~S#*zSyVie+l~0&?a)k7U2Zj86#c&eX!qWTD7w zM+!GF!l6^~Diaxx=W_S_PL+B2rdQag3z^+0FEJY-RAFSvozvwz8Yr{QDar*ry>Y}x z?(=&w$)4GFl~>5*BF5#Zg_PPwId}J)u%i64ft(`htSP%m0rrY|2T4v7{GR*H4A&+` z`#ceGb`{KrhuB8B%phuH91@2`$ZHEwn^is39P_Uxdmyw9k~d1kcV7ipI0w(Bayabr62i#(6&vB9Ft zi(oLaqk~0?XweEX?${%pEt@2`7MGno2F&x3BOMB&>NA}6JH-(TiLa)2#mM0I>*~`F zMht@~cpN8|vXf<>RJAreGUyOVlJ2S)+yHAs;oZ^7I>I$5A+?^q(9hzL#l-TK9FPlQIQ1IVHpMJiAS)GaF`MrgKUx8O1O_=`W=9TlXeI6Qx zoWjHk?;au9QOAB5{>pG=fx&Q^nqzuky2z*^)#T&5=tm_m*4wtPc3+B=pk@p=< z4eP@_^f!O|Q)$<8x0 z>o)fs$n+dmkNS7$Sz6AmFo}*cmZAs+!$S@LMxRm6WlXCPE=)vgpoveRo^3$+x})tfcq1MFi@!Km$goWv~41; ztKIQ{3(0-0U}(L)a^{a%GjK}RuAUXt3$4vYzxndtyBA0%;@USOk%~&@qDv4pm(Rz0zMn_Vu%{1$TIM|O z@;yu@xfWud6phy9;h3!|Ad09elc_!mfDohHZuPjG$VO++nKyLwHe|wz*$bwgo^g;w z@Vt*Nc1>Fia1Bg-f0K%AL-$&`XYqS_LVZNlK2$-rUMBOu)Sk1Vv?3R!n~glpWBqQRlq#+S!8kY4_ZufG$1O*y!d^jd>1+WnL}E(#Lu<+g;KA_CLNDJT ze%$%cqJ8np>r}aSBm?~u(>v)O#=4{Mc3CM*z#?YL;IiFyZ zVZG5Ujqk)D<95f?>G~ZnopQ<-VjD_PgozPr`vp=r`1cpteY{{3>8|uC$4z2IZpF9f z${T3uQ(DlsPFszO5cdWvJ$dkyqs#Craj)lq;%7dO>%_gyh6dbXv2&hTq22dRC(&+a zU(irPe4R&kEzT7me0aj^S6~t<{Yv~c&T>$c!fgH#xAqEdqO?fd0&AHG_7kYO+P;8> zIs1L8NFaXwEDyl zHjd_3Bj%LMMPO=k62HJ6BIj3#chArzo|DeloO*OmS;zdwa!Q4KueKK`PXcB`a80dZ zn`*4Ee^=g0p4BSbP1Ja0O)qkh0PFv^9Ox7C_9#Ay4)rE6A?*gVd(P#T%8_4Ac zKETS%>VF-{61IGWsuX13B{MmDvQD3Tq+~oHYu7K_{y1VW-&3G?$_mC{5m$KGDnF%Z zkQ~&oEnvnsbC=wnKGBLllG2`5+K*(H_5f%AG4w5HY>rDlq#so4^upVaJk7vM7@%n@ zSzuYigxpf64a6q~$tEhISzZT2aaeo8-W9F1Y`eM-!_&*bAO5v1Y=R@Xfgq2;COrC0 zk6H@l&cBo!?c?BDf9qaCJByiNG{|HxJBfF=|9NCa;0sXR&HE~aX2C_0gJo--)LkWA zZAmuhmLM53dAwF#|422u3_@m3q^{&ayNwAIV@dRl2*EOcorhsjif+$5OlaQVp{7N z&AV{TI{nlla|4(9X3;ySH2MoP&?WkbRG}#86Ri};zsd(ugR7ctVa+S6xwpiHsbwB5w`L>suXHZ#z&T6#zmB}n&{87X+>VB)Ug+zBRI$ni@VGi8jt@R~K8DUNVOPjF`l1}iVOmd)mA-Q3Bh zvl06i<dVwW z`6=K^7$iELoS{(jkuS~)$ejly_x`1>-qd%jEFIi&fRx+0DL@w_TOC;%sX%Y4rKRQK z5*Myxt`Ff$>d`i&%$qNK_d~^EC@WyA`h7++JevVfHykKH!xd)<7!-@?q>Erf1G7jb}a~ql^%9{SHpT`0T4im zZAm%PVNSbTl+mC5#|r(QbkFw(^F#kphBynR(+3S?eAt;8yr>E=6T?~uT5aC_l z5RejEjRuhfx}dmDy^u1-Nr^ZlWZM2!1Mr;Vc;u}%78_8JegI-KRD8S26%qJrS$eGu zKp2IYO*tPW-q{6076$W-=v_t93y4yd-!vnDdsPq1){Q%dKJ5f|>Y%z5q@G&{hyH)j z%7Nb{CF7V9i}H3SGNrTLrusHBbJ+8kmO7tU!$y_nn4L-0{cPMD=w{h*;R$qc5q@y% zk@KBvArcky`PfF_t##p@c^}Y;`#G=|ab0IzfNkxMCdSFl8rhe=rUM?B6l%T7O8gFZ zD~bL?Mfzb?zLcgdWfgJUjTW4AI@bGU%jBMDz>GH}`P%o#aQu0O5%I-L&sw-!yuOPorhrBjt!wH zt+BI@i4Up3s4L7RnIezx=HiiVOvMS@rn8Q5{8~o3`bJKVovF3T$21n5VekgF!?9V- zA$!Z?wx@v7zoh^*k14=MhA@FvGAGv+v+%!CfUHY2ZFu;AK7RYSn`JIszw=Mh@sB+M zpM_}-wm*ULNW&~rrBSJGBiW|~!m~kJeiVqRL+Sdtfz9J?Zd84FYH~+5Ge^gdUjJ-& zrZR1r_2+mpCzBV=pi0lGDLn3dlHBuOgr^nRGdmKMn7f>i+_l*-uMe`DO#7UwBwy844M9T4lY*+G9>*|3>Kj}7K3??##*wKHRtA|&QWrzvRoq?UKuS6;Xzdx zUYv<@txm(ccl@S3kbYM0a@7*!!7ODcL!>NUKQusePUsI7+q26)*>A;v_5ygm;4XL2 z@Hq?>z0`RNe;O%0f$0m2%Sc9I-^d7~vbI)W0$Shf^5;wFilq}ip~zWf>akofw9c+{ z!<^Mqx3+Zdg3zvm$O!vB=j>%`a-_N@q15o&h69P|v?bNAH58lYs;j{NOQW886 zQ&~J+Xxuj!)jX@mSK9kOChRPu6{$`LGhj>e{~w8rt5W~lM05PEo_ZY)EF#@l4@cLm zL;bpWzc9(7VhY`*-;htQP&`K z(OoaT&kL;ATF?3M+>y^IIo&@Xu=i_5klETVD9+}d1=gb`7QaEEyL;S1c$>B^jm$Sr zF5u)Nl90J9FVx&cGaEuOWWG^TQ=>#D6`dJgFYv(~1cCsIbpnS>Z*$7nnD^cuyPI9U z*g<(=;p9Y&irM|2)xw_x7ibv&*&scx7P^)(1@e}b--N@kKRcv8K=*2>Ee<=zb#5b2 z(LBTsboIB3IfXwUJ*39R%WKVR&1P62l+?4mjnD%7mUVU6y!gdWY8$^Ylx=50ud{sw z=t(y45_l_>MiJP4i-HHFtHhmHB2Gy2=BDc!P+?(PzmwVB(mMsqbL!OPC+^_HjkznY z=>c7Yw|cfO?K35hyYuYF=RtaUdheCVQzYIw<-dOmop%+gEtLyuiuB+uw%T4?)h+nB zxZl&2sQijI;WEYS#B@(PlaEJ6OL_#{lja;oluN&PIb5d7V^o+qScP@B8*sMNfbGCy#8B2KWS&) zo;o|`YvF-+;R-oyWCS)in9H!Vx%-84WMR;t4B~R<8mXy<6C`|Aop@qxZB73mW$mve zz#U~W>`3H)w*UXJP1yK&LXh9R#axHnfHLIMt)^@CpkeNTBLww#=Md=KCr&TAcIB z*~{bC{c~pSzhvNM_Qys@qOP#}*J3wIN1yO#Xa8W~Ju^E0=1h?AsV6gbceENs zS@xY;_)s{{PwwP*zlBQk+aO5s7VYT4NWNi8`_%J3j+WGUiHQ##9CB6j%JMtwGCd_X z*(N8G6hKU!49wD+2C7P;Gb0_QrHo2L@~n0f=^Al7Q{y^HdU_iCPY&L_hieJKiJUPk zWT1+-7g)bXy>eb6AV>t6(BapWRpnwy?TuTelpytNp+Ln%MP?5ZE(^6<4 z{xb0Aya^13<4sPyE1!{K*@G)rFmaZZp{Kd+9zRsX0&8g#L##+T&KD!JET~5cbf1zLx(T1nv>J1vo177?l5?9I%#yT17ai ziOUOw;L1h$$$rC79Nqu=R0v&Qt{U~Zbet%^KxZP-0yqRzcdyiYQ479 zV=XNtwn`OACv9iKFaQifvm1|DGdtDQI&3}n0*H-gAYN_kH7vj%e$)A-;5M*6Y zce14SUuzQ^lUCi?O-~i3Uo#97m9mN2?ZM5D^2Ma@fvU_zo2Rw)t%+L=ey4?&NyBzr zUIkS3pr0j0Dx@5gJSe9Y)oxX3?Tk9$)C6CV%Nj=Hb;m{Bb5c_yY2>uH{YJzVt4a%a z5?~&63a9O5;c|bU0dyrH}+DkqR- z7SLNNfRyUK{uR{1oSL?HZFLYYVf%)$vJq5*%U zHJwgnW0EM6C9r)Zf9K!pDT^3EzfQD_RYhH5)TYE;zp6S=a8(~R?)+vAO9;jTn~?d~ zz}c3Xb?nb)dii3G{ngjql#olDrydw7H%BknW8ddLugLSpa6pSZlI5VU>RrsYJcjNl zqx)oeJBAX~x#R-t?~bP@b}TmVfIQYLq!dP6zbq?gbmNBYfb&H)aN$;m@fO9!`T4U7 z4+SFx7H}XcT+l4%{iC!gfVT3$!WoJlXEin;_Cy?~&|m3@cK6Xx{}}YntOAIq9*?Rn z*|cQbs&P`!>0r7LGPQp=3L>!)L5$e!FV+!wx?t2og!iwKbSb)P8Ur}zw%E&^w( zbZz7wr#}Vw+fRVC^`Gq z1(dJY(#oRqrW2e=^})a+aBe+&x|%XYw*!WX+-tZmLFsQ zf>dTr4FX6=yJ-x|k_Br|DIOtoY~u0K=s%NKSxt`g!Qo^5U%F9w%?;i&gm!*ZSw&vDb;TBJ!PUoN!ses)i#4gq$p>58hH>>$l@~vn!p56 z;1pB0BG~F$aQ*PwGXU8%y!?Hdx~0yfY<248w~bQ|_J1HdWwfg7kBuZP&bv*4Ic_~TL#r$E8~{7vGJU&k*~iWKico|7<)K4+U9vc(edrN{C#Txzq8`9 zTm*1iyXNV#qnA^Y>Y0_i`eKnqMMc$9LP-jYtiWpkR&VG!*o3feB7)xL)SwmAi-dPV zwJOQ{^9w)Nl6tkb#IWSnlj=Jk`m=HXC!VQn?g^plR&2c7nj9MIH-KEP-EZ$QAI31J zs_wl!>vB?j{UL0s zn6#OkhH=2C+)-#)&SQ-#Bt6;+2eSAe)|OT%Qx(y7O7>0OK})h@4%BqB$eZ7LU!Q=G z!gTCiB#l!!Bvf=%>yTYpH5O}K&egRIzRPy6=%geNx zIyCh|a>TkNJd%&ro9)_Fm8(7YBI4Y-Zr7q}kNiN%8Y(&mNDGCAjs3H`@Pchsur#*l zFe3<2QSR{E+|ESYk3DU^F<{@u%g%};8MiY_6g7}2Lm$arU$5nMq6pkYJ6ueb)0lNz zs~(0Z2=7ie0z|2oNOm)XQeYWK0NU;mLiG;}9PF(SAnO;3kYElSfgIOyJ*UapuXG@Q zIhzX+J>2OTw;ALosSKxboS3f723HU6Yyd>*`pi=_*m>X9*e9ro+{<%UEr680Zaz98 zk}FCrim_Y37%H;O##!tPkWT!SLDnH+X zNMvyub${qM#Sq|t_NI;+vJ?~;Tm@BrK{|ggVt7xA z7@L8|+%8}I?C!|Nj`WR|R907))z8L(lC`Rr4d*Y5pjQXdC4)z;Ysa!$v&Q1%jXPte z?9o@))GH$IH5@0Q!i|sP+PCT-0H#(pM zk)QGk43LDH?1{?lhJ;oVikPHM+&aqcK74?qd*w=!9EQ5yYqL^ucvrpdoGWqa*=gjp z@ENf^V-9`Ji@YMkXUF=m)uB1+`_YE2Y`W`HB&f#mgzi8}A!OSye5)lMO3EJFh)uQg z4je(eS?S^2k89|$w0H{H;J-|OzG}^hWMNA3aB6=c;WTD8Jn1xL2;636^_Ms*$V)@t zfqWw9bdyiQ6l)y!{9CHAk@C)-+J?Q3PMM5cvziq)~H<%yCp0U|wy*uAZ6$E~oAj*fL({RHEv zyGsi(`qhqdXbKxPrs4u+ptm+z7|6`ZS-U+(;RyWCD-?VMy49NrQ^KhbenU!9Dmctk zr^!h^K~PPr2@B(0%#Rgx(54NGZTwbYFKFSuuI9^HZRxOL&!8xj;~1moNX1uf`!)17 zssZ8*=zSt-rIYdMTi;F8uZE2N{N$H*O*pW0QjplbA*kmma4(R*g;KL$kd;pD|S+4=VCK_s(OS6vvghLL~A|u`tn%5MBebZYbfkY;Ev(Z zq{8&A-I$y%JMs<3md%1x=O-dP|Q8uOT*@JAL4b8NcNTEjYl(XvwWFpt={B>5T;sDFuWXw9lH3w^c}s zcoYDOgyi{q%==n(n?OnP6z*y`G+h?8Bf;2%M4B2_!|Mr;v3#pBXC&go9BBr3v4h4peiM`V_Ljgat$2DgyIXwJ8n+e|)~Ug!5g=YDZfRwvb=0zFb;sJUfp+A@ zVyI2>dJt3$S5Q*2w9%Ff2RtLiz?=TO$(wm}0RnfmLr(Cx+Kr~_Tz1>v$o5=6Km#ua zgEgNALK(Rv`=Y3ja2W91GPnt<91}WpYDIHGsG8ZuQK@8X6B<>6ErP(^nk2!P9L1R**VM-IwzupJY+In+3K6bu=-}i^U`16?l{QB; z9-a0#vou$>AKOX-yCKQ!x`V6Vm;blQt+1^4lVIls`g4e*i>Y4@_zlERC5_C-77deR`!OfZx~<*D0~f?_ zLy2pPa`?)iHMfzb%J`m1*@yCUJp0tCdl1gBA=r={a0|N^EPxY8YRnym^YD(iJ@(}B zR=vK(+Uj_ezo?F$e<8VBwJ6)IzP3c?nZ#ox+hJI*i6pE{ zyJ8FomYz&ZE&Jxj_pZd78b=Q29Wx+pZAACzbll+$>)sKMD{l&JH+t2V<^+o)aI-Ws z;{vQcB-`OKnae9HBm{^{nM2`(^M`Mom(UWDthX~KI#u7(NhuG2fE35q->4-KfewV@imW~)ce6H;mJ)G&) zy2#;BjhLsCxdoZ#WMLT!w+g+=FFyNWl_)T{1zXw+8?>|}94fh^U7Z29B{ z;B0~V&CNy{_w~~ZY5*0c02FCu#kELnv|W)7JT7wTZ)xThvvBTE?q+56KCZsj|`h&%?@{5_WDV=hhE zxs_9KWCoCOs&>_pBJ}Lm2K|{iS*M()4g_n3_$_s9>?2K@Gg+#qeyQhV=)%W$5{Z5^ z&2PJjE5zQN2HXL{h{a-**vbQjH22C9AS_y(P&D$DAxyT;_MwIT4gR`=!0$ug`1AD} zd7vK_ErC{Km~T>hutI-beLUz~W>b88<+yEWIMW{HJjiB0%_V^<%Y6$@%Wyb6b+nh7 zP@J1v*qsw}KiqZOr6VshK%Mg-c@#f>=|k8aVUV5+Xz9{mZE^kfvM6rVtqJ9MH0GtB zbkD49(rH}0J-2?erQVbo4n)JkpD2QMl>**a#`_Qxp5-%<1`!n8C>~2THxa`OfC3?MSjNDpjSkbQE z&kj(}pI-^Yse}a{towkbY{w@-P?3e#X9?ZW-TdDCSEh^?^j4NvY^pYDyc+K-h}<_x zx;KvhjK;HSA20+_IxbGvkFM4}g(p=Qq%vaIA%};98i(CUv7z08v#VDor$o}tzLHzr z`8osiFbj>1&td{AfwtfSL8JAn^D8TD)DTZ#uV2)t?nmXdk1y^+SjfalGjZ3bsrAaf z^Kt9Y$|HG~>(`S@c@Ol82hxyGNA?s%GL_ZMoUqq$>&-|jz@pSH1SzoKIENqiv1!gv zNZwixQt9Afw?f)6JjU+LYgPe$=flS`x}f%ylySF}Dww+0wbAToc{PBuVZBYP!Dy)9 ztkaYg6b#;Ch;lqO&^ATUwzW>dDq+X zM+X}U9Pzk%l$}LYhMv~hMok%hfD(5?l1+)M73cvz)A6?CSb5M*cF%=TP_oMwib$uT z4iTpGCHd5RV6qdODDpg0`%1CL8WTf;R~rBwJ55bW&`~YdM_u)VoEARj#Sp1CTu#zv z%J5f;0Y&yc5H@p6i;Wj+n|RQ`B3^Lz`i;xVg8D%SVluZdp|@m)rD-(_wu2F`A9oNc}0&S&Z_A^((y$ijTg4spmD z&8A;s6sA2}kR268S-!cpvqm5@s1@lvPP!5av%~FGm|)6>F6?pAFz$*FQtLL_FTK)1 z_}RSDor`FHtTNzRVKFqfDZm4kWw4Xk3{aFB{228R8(j8?Xax?pyuHRMAI&Vq`(o!S z=MX=rKW?UZbbVSbNly=u5xT$+7l;7*Sy95Jg%mhI!qxYk&*h$NgkT`AbE0=vR%;N2 zPU+}n)bxA1~2Xk3fMfA@Ti8l`5cH)V+Lv~Mv#kL+@=BkchD&v7(jMBQytX&3E zy6?#1;5k<$e}ooij?zs=`IXCuZDjR(`JW2mLe>m{+v-|n^hCqo`EKc<8q2;KmeVlm zH^stS=VE4YWq!VnS(9KT>zrX>Zn1Cp$#$U)_N(t&2oT=ar>O4IZhYmU>4&GAQ;<6_ z%GWR-+0?G_QSe*O&0c3IGa+`-99R!p8Hzo)*HvD++lKFR*+QAtN)j%RixA)4zbqwmrqeDZXBm zkwx@_r@jFjDNX(SdPw|WV^@2ULXx*nuZdj5 zH-##3|M?q+zRs!~Wgr{DU%bK3e9gr;*u6oKBEMx&pHkH#DU~5!XQ+_3tlix(CVxDEmwI)sLkDRRs5;fYs7Gz6hnCDaomHKX47~M4LC`lg40ww59J4ctyNFf83dW zPV)0wPCY}vFK)CeY%$D?eJ6hc{ICLnJlFl+@9{6&4`q(_zKWJHt>_BW=I!}lR6bPP z!se2t&Rbr%t+g>KtX2NT6xX*M`-G{sGgl~e`aeYZEEUeC`Okie`kKK6SCA2RVY!xV zeh2RS$rRXh2s3|X)cW)4PMH?&SR<_%w`$F$BWbBTJbuhroL%k$xTrmQJyXbbK()6;3ae=V)v-)vTi7g02 zMdA*jD9pRzr<;bG95QE|`$5?QEBEr98Xq5*bc56vq9HR~Hy4C|T?o@{0J(%;A%jJ_ zYG{DuFunJ>7n9-#)0&4aYgL5>=G_rzm6l^ModT7XCb3V1qLu~&9tOn$85%AY7Wwf| zY;g}?T|gcl&~HTo(tA)4wJmW7=_#oTBVM z!veI%^qxU^;@KK1-H|}Lz-oydJAws%pV6jJuxnE%_bHR zTUp8Nat4CMKFYkn5C%4M^}KP{h1*>Ej)9)sqfGIR0+tMI>Y=5=FJlOY6{&l?l}4o= z@v-@N1={0vLz*Pn_Y(ixyq$lc`S1t0IF^@r; zWo0@T3MSbaWj>XT^8vl_xGeKxLl&Dsbntq4iEVQuQT_{6jS4`p0FRsjfP`HU(|%9? z9-i|91{mm5TCCuzYG^2{&4%!IV&7E?7bAovy+C1{oUHkIdFEDDW)`SkR+>z;pE+88 z3&t^#WM;)5AJDqNx%u~4oL%x~zm=yUT4&Y&8arT|@is_CyaBKL8b6MZ>8Kn6$sCAF z701(1jWp&SwXBSpx2ufgPDSRL@XP%j<#Y{kQkz+h1E&zqRM@?6Y2YvCVTI0Edg>Mc z&p9v{IY~tO9z?vMsjAc9dPK3Y2vlwP^YaCfe~-N(%KtSMQtY4nKm(1qm!P6LDoXlF zdMTxK1&Im-yDlAVJfpG-PSCw=$BH#?(MB%ecyG1=1|-95e*AM68%mJSs zO=K$n)>~>yEfdg5i!Tj|%&?6w4}I-yGLd827A2c+J1SXUw4zr@CgBf9#-}fEfl4q z0K#tiNRcG}??D_^5QU`s%{(v;h8Veu`>c{tl__ISQaB#u5_@q)Km#L3;GFNlQprzE zBA~+D^XC#)SVgO6)0EFPUM}_@d>XT-_bK>kj5ez64W)#D-x-0Hi?$euh06T!ft!^zR6K8CT zaXfi}`4K5dv+X*uIVL{3N8p!MHK5~nS90igsi z-E_?+7klC%5=C~xbV(P$PnU@(a1H;86m&I>yNB^I_dtn^*@@01>keU;c-S6ZZ?Mr8 z88Woq&@0>HXm;v);B`bvxE35*+f;`Dju>A=L>XqP-;SEyVa6Q1Z*ghu!nS?FcgoZ4 zDf7rdMRZhY#Fq-L=N z9N+G=a0AtsT-Sz4!oqQH;$~|I^h>)Tdm<^}u42FbP zvWByT{E={k7fg(&imVY9A#^Xd*3eGyX_{f5a^kC9>AHvOQtn{(if7HZ0&c8UChB4} zs95eai6>oy#Kzrus*gIh=CL7?FKq$;pq=Wgj5c2;n%5+HUi(Lm`_vg{Bi=9V4BTkB z4icU)V#x1mD*FWR=_SrtZv8&sr7&k8AnXr!;p~W)K1fx7`UMzuKOe>-u#58y@h?1l zBv47rJ3TWNbTjS5520$2{cR}ivq0-O+FXsBxE`!Dgr|sk@B)3Tfw$G^FC4$HlH$=z#7+wJ zB4NHh2A-FF7}l*jd^H$K&2hQJE-K8ot)sq*!uL+Sd#Mrf@t-In8!@_HlhCu2{}L)Z z`BuNh_61c-yz`oOxcVQv03J`;2mZwc@H495SG4KL&v+mWK#K^RsE~+?7bkqP`3YSc zf+1>&*}~<=@^5rAy@#vkWbog4lE`KIC+U$sSVyB_jWLs=^Z zH(#lDkbb5I5)%bxB&R?(zn(-GoZL9Yx4p5gue+}))x_ax;GHtK1dErF*$ACl{ke_< z++Yy7Kq*_)YB%$okWlSzGRgl|I_6uNM<>_BKmcHPmJPS?uAJ)qEbdX3(R)_gEjR`S zbPoz!gNy?mvIj=taN*ADI0gLw-JHxzBt=~RD?ynw)Zc^V1WhuLw!g-TqB0=)>^4B< zp|Gg{&c&366+uCAdU{FP;T*}FmS6J|=v?G$Yigq?A>rSwZET#jT}}3qc_OjeH66Y> z`cF-`mMLcgh3ca&8oq5NyUqw3Ikg0^@|}P$`9Dhj{eB@bK9O2#Pb!2926R4Dq)P>L zWDLafM+~$8af8R1Mk21TuM8-5-kXmK;(P9btK3+wIc;z+i^8){3En|vnM!p{%Vb*Sg%RYvt0DWnx7sUud&GU0Hz z|MGH8%~)k+u;!-KL7_fF$Jp%)8yjr?$LVOMU`*6-Ueqj5*v)KkCCc}Z=5F`C`WcQE z##jUgHhLP+#9vRuQeDyCysR6*I(``DFI~YLBbHb10)!=EH5I7czjFa6w53&tCi|r9 zU~8{rYn*LXsP{jxmJk2NTK-p|nY$q4e_I_q<9YOyXPW8=A@@_HlG)6!snKpHC==$g zd&Jh(PqpT+ve_wJKc|&%pQW2w*5EL)IM$~#bO)B9J$)yLKB?$nadrrdT#YVAH^CnY zgx>?Hb59NqMgewI3{W`)EzjQ47h;TLttto2#M!9K{VOay%;7*BvoPp;or44Qll@Oe z@es@bh3=1y(#doGDr$519s4KA&CBa5H-ROXYMk%hwpWQBF70w(<59Cn&K>l97f7vT z*eRN?lg|<{ZaKLQ#~FMSrihm9Q$3cOpJ4ma+tU-c$1`OnuyE-t{G*m)Iz{Fodp7wd6yM;2Y1LC7YwO_z^zHIdJ%%44M8|=_6*Y5p zeeWt#egio#H4#WJ`qMSG z%&4>}Aj5vazRtlY7^|r~a6@7X;?^qv^?}@IpbBjAm+Dj{>)^=2>;zdQW32hm;62+C4kLUzyvN!^mdJO{Gdp)dchm2>6YDQ zv-tcx5Mho-2M4R^A@ysOwTGzi&Y=7At&5&JzSjVW0c!=B5^*KuEVdgQJ*Pe+K&no068$+v7Hk?;OEfT(7`Y zE%?Wy@l)2PBQ@U**FKCznZ#aiPAav5w_*tA8bj(g#97iiJP*1rUut+E+83-R1jPF- zWT!OLUUC|~!705=Nf`Ti25u9^{>_y^e9d#Q1fZsABX2G=rPYP@?xH^Uv$Q>5d(Mug4D|Md&Hun6ewh&wKU1vv$ZtxN{l;8!(3U9v1V?DS*Mt*-jXnG%@YA|!?@E0=*_YypC9PXx0M_Ef!sd`o7a}Zk@GSg;GI0QZ zhsHlgy03a78p>|gad~}SL1PmHo;Fs+9fsZ&Mz1$B{5|m{ej;_|=9RraTAec1mvM>T z8eHAn0M^BD>#Mf8QL>s!4g+efyI5y9SL57W9fI>#5Lx-C`KTBTU6)->e#;3>6+L6h zutNd=riA1)O6PB%ohDqy^Ayz0H`-M|t91h$t!B2>?8Sxv$7k!q{0@((4+t0c?2&Gx z;GdVQai&EP32l7^%*FlvufDy(0~kbJe@^WuM}Q{=ws6%$m`4=B@cduxY4U}0tVaSV zg$97Dcs*kT*tiC$?b?H$G<^dC^&*dM6c*Bts4f2%xJK4&hj$y)h-C36~WfFR#VcMqy>49AsDV zTBC{8!m#`v+!{x<*Jc2YUPAVI28cx<^$w&dx>t5r>MHTr`wCf^{j2iBV+2Bs-2Rbxc=OR^GdJneP$@f!0#G z35|$D2P`VteY3yOz}bwyX@8b#`Aek z96gXF=e9c^Bf7WKB*2(dx}fjYm~lwPZ)}D~<^FZGn95_VqH)4_ScFh)#@FCrGY=3? zH=^kzJ<&Q-aNy8cK#2w7d5;?0P)Ovma_bSYHDSulrX3Jup@|U5?jVfG2!r~D5+#;z&G z@b>HSi9EJnnuB|SE4sUr)~KMuxULR0)+jmP4_i5a!C<_oGPfkRGRtIibDn?F{p`~O zh{Vr0Zay;D4Wt{ymI)saQLlR6=v#5G$N<+KCw;2P6%2_|V0v8F&_KS^NcsHNrV!jv zzl4od{Up7EZYuX)zLaMzkS#gp$ta3jm?{-sS?;Q=v`_GAx|@1*BYl5=vt~fP)*Uy_ zD6$2?BV~)Vp^5_uAdkbQN?LB>(bz9iIZYfcEh{*VJl{mtuI+vyI3gFcH@$tjuo7U! zv-OG_5APVS*FL>z(>R$?k3H=8$}R=uS@FY$VCw25%LT0Y`77khEUbBv8!Fkd#f62; zt8Z@(%{n$sF^5@Ij$4OJV(aD+wE*Ga*1uH0Jz>$hwbbT?OUT#on7LmdP9*e5pyfD- zvW>eh#Z=ZtMgjy^eg8f8o!sn1 zKC7`UnnZNHyvS+->N2!+$l@mBY|i7_cN zgn*qt4F@l&=}0o2-4CF?t@5Z)jE;;r z0~39BlG`2-R+=Hp>$yK<*cPaS7=7+TMarSO(}eCh+>j89=ULc6AP{GXgqh-=5EF~@ z7=Ay60-=CU;BZOeL???007R1*m@J>$f}T?y5RwMPP45mkjm1p~dbIW|B)K(|N|S}Q z8&y+)o4A+O$8U`t`yK7^+{Sst0zj}JN5k9# zslh&4DV?AlX*K{dr4teoIy~46@JDrH4i_pkqQ0u@$SERr(aA?IfyhiC*^XIkuTMg3 z=W|G;vz#1ojz)yGxeOi4l~w6y3d|&~#3Mwvt~g%GRY)8W#$U?KcT$-@z5jKJ#uFpP zNdx4Qy6f(41Bq;&bA3J);U*zus+mQH~ znO3A)e#IiR`3r0SRJN{-np)_20uY%kWm7Nb1Zta`-0oR;CFOxl#3GJ#$OMcu4RHY7 zc-|)+ue^ryi&XiC`}=`Ojv|XG;y`}edXSC#(_PxY%X#_vIc$wHc?Oei(4@{7FU8nL zGzzlCRMneMfNcS=DJNZ*dCtMj1)agz%Ai5QJhj8M)n)GJ2Q@Xdkx#7Tg0$XsvG?u- ze;gZoxO_!uYg0+4rdBZOiJU`_Qk%3kpEaz~u^hrY6`iTv`aGAJPxAjzcivG=rv0DR zu^@_~D4-x>0|W%5BM?xEGy$oRu2MordM7F((xpocMd?LAI!ROzqz0r!S|Ys@LI^D+ z*$2yvGw-}@f4h6m{^dEGBRqNT-2M7qpJSl4LmUCK7lPSbRx+DDHJk&WD|+fusZT!N z1z5m(zB7xmzeym2O0Mr)%Ocat`S*JCSG{p24i-RBwG1qGeg}YDfVvG?PNRb4XX-9M#iVJeDp7q7tIl%G=CoujUH2>XMu;|%P0PQdRKek&OTzG|kgV`SGC+Pm_tsP_91ry6|f zg3qlG+bx4!bm%cYr{>CW%i@*3D?wI<{gb{&up|D{kB^vF-#^CgXt*zB@U=v;R*y~s=veYOf$DzSZ zMZ!sF!$RW*Q`(!BbyfXs0kqj`_vZnV33lh;#AJLdXVkFc4+hfg^QP3(k&z%ap@bPv z{?E+QAZolfDk)mwNf(UT70TEiB}=)>;WC@4Wa=|F<%#ho0SgR!WU>20v?-y`AMn9L zV7_%%q?9RZiKMRUq!A;hT7a~J4LJw1Z2*Jbfl?H>uwd}>23F^wA1Q?^;@tJ^+L?4; zG7(+FJqV+$2D^4qfKorq)|&9Z(M121$CAbR-0h)VWp$pSwY6xBS$;{0_iQE&K-zn_ zwyLs_KO6}F9w!(Ru)x>skYo_B^9O>-M=!H^L)~FXg{uo7EtEQCMux)l@*OYuUJ zE>6CRoo=X}ggg07Z0Z(tNVqkpSy}O^Z~Wrd@w^T?;TLV|8U4erqkCOR{vf>;0uiw2 zynrr6E^ph#e+5weYi_gMp{uL!kIIYLkGv~tNs8`a_WE7HGv1`7%fX_kbqwH$&tCv+?BopqYfq_x*!w2eu2?S5m ztmc17#j;Z;v+S!j8VLLn6KfUv0p+V}!WuR>>uQht;ge3J!opI+3aif4SdH54dAp$@ z!*iPpEJFKRoVbXizB>Ohvt0eljCkygd(m#GeKxJe4%$dJ(7Z|tgO1;a(n|HDkdsMoOWRq z^Sgh`_*l<$e$z`YU-^v+ATPG&w{d)xlF4&0-kGvOE0RcZeNw%<+2ktJuYPO)u!)t0 zr8)c@+!~+Ny@7fet!M^TAG=>$~}6ZmpuhJYYx&nO=cnYx1pb2sl5ULqFH)Nx0H zLNF~H!hk!HVGD6BGOCSkb@U7#SK6^>p-w83B@pBZik&{q zHUqMq^PJAr zI&yXUgha(OeaZgt_5D$`ME*-0 zA!`I{D8oH1gvzaXCTwclLvYsH8DDuC$+RY%8w2T>`5noJ8dU^WcEJ6XU453KRk7V7 z7X3}XeM45R)hhMTx=ED8g`oW+;-5SrP1I$%--dh-F?44RG%g(hSj68y`SX}Z2|lS8 z_wpU2wf^=|e2^R&I!&Llyz_*V_+gNa=Xp@;+v@xaA=3%&cAfSvS}b)d#fGc5N2}&l z=KW-x0;(E+sx0+B7h%l>H~%nMn$I3(!_Dc!?goCxx4&B*{sGOtayf%L(cM+goG#lc zJ+{nLj@L%!Jx5%GfYqz`BUo*Sv9Rv&D@V&TxNb_X>hN5;=Ae%+GspG^`0h3MzY#V> zD$DZz;j&MC2&V1PxG$j@>d(&e#|M+hK(FjaF)YD~MG}|v#Y_N%?04%- z(8Ao=zIt9k?UZwX3dpVlp8j`1Mph(I#(&|7`(~`)o zHqbn|u+v7BJ`kg&ig97@a_fC#VXP-R4cREnLt%@tTSDc@bcL5ixgUu6=X4=Z`e18YqCY3^@Zg7|Tj{27ufCT_x^eN< zRaNuED29S_%JzU@VMMJ_&mzq4UD`&POR!wFo~>|pT>R6ee~fsnj4Aay`sSB&xt5~6 zyrq9o>fh)BeS)OVcMlD3Yw2?OG63|Zr2Y;e27Kv~vFB3IObz-Zmqg+LOoQKLlqWBZ z7dG_^gKn}l+08Vq`Z-z4Stein#|v&mfJ)2MUrm&MHqihXmvkJ!clm~F^f%}O-7Hc{ zdZ3_VuEsf>8&X@)R#4e#7Xf>ALgXJ+lN~Ix%cSD}hyc-Ckv#Lg$9QF&5-0)Q!rGA_ zAVP_$6Z{8)cxj|TONect-fg8A$mX#b1*!|ervx4IF#+#*3C}CO_|d7#dFPe~tn4d* zh|E>=&bcS|*PC4gf}5iMRa%;r;+0EmY(b{1feQ;#^}as76@Id_U(;tzJ9*<1Cr=Yjd^pkPdplfh9FycrPdGPDI(9dpl_KkD zfqA$wC9G9bP3lv9zje&*sMcWGw%LPybcFlUu1PjXnh7XMm}Tq9z<1f5sXDVxI}n2S z4|L-#mLwN$OKzBQcX@gF>Z*`sap%H7POpJoxO`;;peAE$0Nhs|(S`;OwSe0oh0`Z5 zcfFLzY(A(A$VQAYyBvfrur1^1fgb*o4bRF~yzvhg%#GFu0e#DXxIOt7?w!m=l%lbf z!W7o`58Z_sH7w~a?s*!h!U2L`n}1IyP-6_&F-*5R&?#kR;!m;~K=X_lL7&sJA3b9uvw0 zk-Eshi`pA^<9a)yg#;9LQ`^!F!Aa>$uaa(WSD*%TgDne&m%}nI7if9qkNN;pv^el20HbH1;DWYkwW>c9YYL*dZ9Z zmg7yrM3*1usP-BPof3IpIkfVRucdzg9odfiaA11t)TQX`*QxZ^HAg-*XiW->2DmCV zi!*Z@fEm#)WKX5*d_!4q!6;_f*2_z+<1#d`BK!zFqtgqiYxu3PU}a3Pzgo{l^Ua1w zYQV0lGCZc}(_rH?PY>x#;Rh|Prn2~OohCR*zO%?M`hi0D?JxFZD8hI zYIbT}cx0_mbM(zWEx^BpIp&Yuyh!ICI(w zRjAjhycVTy@ry1`W~%M-%O8^7JU_*%6fh3*Sp1vi$hvgqPXV{U=r^MG0EfOBdPJIg z9k@*tw0qZP_iYH+vxheTJ@@l00Qk{&sN;7^_o1^h6ms!Il-{qzzL0e@NX&BID~OvL zF5vhD>DcEjSwpM+BrG5%YhZEy@Nvrj#O;gxxTH&tYyRI?Qm`qs>Fch?&H9s&$@p@9H5UVZ<%cct48A}?-$7RIq7x5CQ!&F}ixK<1 z9*ZcAVhXP$@PYbHIo<8w+<$j(5-n*;Ba7;$yYVxQTc z2zrRm<#RyuJmLaUiT-6qt(kV80!WdGC5{EynE~;SR*Kdgd@MV>rGZ}m>3Sxn^0WV| zKPAz!AN|XCwfiZ)w$ou)0vQzk;?axjRO9K@8CW&-z0Km>Zr6JCR+@RLb8a=m{o5}j z%*UUy08+!WZ0L)3|1Ng%uYPS=$;@5u-65zl((6^|*9_H0Z=f+0Mn1M*A)0Sy~^ ze(#R@|Fr?iU(2cWgQk9Yo3!+iMWB8m3{uDCKTD&l35kxHabsBSPHVdi^b2-w{0cCu z(rX%z|7=k)t~>)C8tHd7zi~tWokM-u>+L^_e*Vvq^?ydc0e@8N#E?{lS1w(w4%r1E z-lxHcVGjHZv_`Qh^2ahE#h<38##nRaI6OU&_dkexemc8_^^*R#)aTk!UE^)}qoZ$e zZFdgP-QbS-KTLpXDhLGqe5nfZ&=k~2wT+Yc8BF}%Jx_LVP*C+J-jJ4hdy7mi*3CBQ z@vCBhpZpFczleS3(fk?pe-n5Q{N|r5$o~nE?NYBz5~llt@2!@ipV?I3p8ZeBrU_iP zSZaU85OF(|Cfw|;Rzgc`Y!1Z^e8mpa9n0U-=RfP+8d)_I3Ih^Ncae)26U%nL@=vwSqbS8&21_YkiM^ zD0UIx6uy5lQYq}9Ysbo1MB_724?r`hdAdrlqwv3%P0Ci${SA%1j5|({ef_Ih&Fbi1 zLP-GTEg9YOLnOZ-bcr| zipMHZ)LkP)eb}T6?X8n4F}J%Fo?K=S$uD3K^w%af4_HL%x>**8yL~oJhy6cxJx=-{ zKY31a_iJ}tzS&>;bOCH)kd=ScAoljUc3t#k8O@&Mg3z@WLv{VE+H9bm#M>qB^h~B_d!DEVtg{bq_I3;LhT^S zm5!(@EDZAghbqtTh!42#i8s)r+hC?LeW?v%ieNqc9Buyq&g~8xQ(I3c+I)D1$a(_X zWiBziH^A5n)T`AZeu6z;VYz37otd>)hn_OA_Ub8b--HydZ2W}KL|)619vT$|o+d07 z{z0^->w)!vXmI^2`U9GNk!8fKV+k332BSq@wx!QB9Ceb0>MrU@_;ARp&%IQ5@SDoj zF0LW#EdRosI*vjHc*pO-;L&lXLCO7QP4r(YdmRC?%tZW08oi0@FRKH^-Ls5;k-rh$ z`p0hKU1Fl#ttW;9Gh|D-@zGqT$Us}t+F5Y+AK0fZ@seR$@`;oj7Iwe|d?5bZVDKqzS)X&kHZ&;d zbW}%Q{K75%kR|eq4d~8Xtnx8DLTSn>^nm_aPdF<##m9o*)QGS68=x5;alirPITIIK z#3-RdvCKeE6={ zc|D$GzRAbDVGu5mU4C=0SNwcBeXVCV1HCIX>Jn|d_Z}6Qu;|YRJ`jD(ie7*JsENsmShtUD zlRme=VDN^Ur*Nf6;!sQ6>o(x+_yQD?Z$(M<>x)Fmk*~i58T`F?vpx6#Al{_^Tk+=Z zOrHXxWoUS&SKS9hxz~!ypR|Izj^#9Hc8iGGzAlEZ=tcH{V_VCO9N~nj;blPUQZE9Z z+wkZ%R0t&xdlO94Wy~R$&ZTHKLO0%4 zIM$PwwX&P7@nh=h$a;JN7VAQKSvFCH4fsqzA=m0t9LHKxC@;;C_zy=)&u&#_ht7z= zQ*6cZxa7>rRcm#oa3OQF%v@HfE~cldrK6v3#D2bGivFH+{)tKc*>1|}c=7gYISGMK z*Yux@nB9BI%1QOoOW*gMA`gwTnG99%A&*q}|nAV}U3wRTv7YqkH1S zFxDk%;fJk1ERD3&vkN|$N%OF=8T``Ilc`ufXzCcQ6Aakc%$vIe8a4$2I%)(b0545` zoz;ssR^W_<hlzMSM`szQLF_piWF>U$EhHW^f8=IxhjRyB7k-7|5ns=TgU0)dG zz|}?G-_3*ibEW2Phe%m^Rr2L>{Ng8A{zhLxyLEiwPp zE4_go30;@!W^}5S0~TKjwta0c-Q41(2K1zF_G;J0v6iwQX6Mp>daA{r>=Z!YooXjm zX}rcbk5BdEczFv;kju^Zi54?bika-zq-=aQ7p!R4hdG~j9uOdWuMw!iSIu=ge`C2d=YlF@^(6F{llTGn-%Da<^JPPek8zO_`h^sivFGR@>~0J1pO%Uv>h_wJ7syb zRO#)`o$`hn9HB(&_SPu9z=-)Ww@8xLHW*pI)CvthD`}5Xi4~|HD~Lr1Ev(2#2Fymw zA}eRzlQYspwvZNz{Ly`mDPZ3l!z8JbMhfjv<}E?q_MO)Hf#SG=)c-64!PV5m) z*$H3YMFhI6h0S}_6HyODUsG3^!S(=_B#y*8$QZ0|vl4K%3mPBkomeQv6PhCc$W~up z&wO-bKq_1?pPf!|Y&Wyor8T$pIpSH}-!C;-s&XrY&*=j-v5$L7zg5Ti zrf~iof{H3Z9tG<`qMh@`)zEO?s^|?}H^=xa9(>kX%tBs5LMa9Y?ND0l` z#KWo(rKmHBs2Qm1($R^QC@^AasT1QhLEOMnxtv9v-#gWhuIuD>UXwS{OwDu3a?4Hg zfK#?p;+!xhCF?A?v%R1w}B% z>$TB=Mn_d&H8d;^*_C1ej7Z%6%Nv)eHm87zrx;AQ_aHSO;$2kem@Fo{r^ITM03?=Lzp)BWNyV>rJHj;L0Cxm)~rdK~b?9_jDaRp-FE zk8!A$T(NoUTausG;J@r`XJiyfBD;$in?qwXv+M1nq{y@z#OVXV(0lKddb;0(4C1B4posQRl*t)9I>tEyt*%dO}vR6WGfH= zN%^Q3Bffl~s;(Q<(&VV8i8+rqS+>hu!!f$id^{m-{7(%8HBQr37Ug+pqqB#nXduEfQ;+q*eT zQMxL;SZ_3&5=v&ffju3HhI;}D(5%w~b5cuw^R2l&QE`CL@2LUDgkLFy`PYK4J$F=3 zt$s9A$uzb2#LFzM)14r>Eu&L>sP5WWcil6-dDb;n9m53GN_Y2TPN$_EcJ})gT00)J zvwE-|=wT8kkArV469gnSJ{&=rT%%Spo4wp9G^5I?c(cEuK8|d3*#zL6>BZVylqljb zw@Li7XBU2Qho>m_SeE9NeYOX4<7%|{O=_0Z#W8u|nzlm`^^~%4rTFmD%n0y7`JW_s^jPnD6!o}t3{6a1UXIZ^- z@1l0dV_+&_^+YiH`yQ{Kki?*`nJruIXVj{rk%b zywz=lG6Oh{n9=IR+8QRk$S!HvoGs*Um-$d)#jeumi}Sy@O(7l!6VX>vZJ$H*bQ zGg%~CQAPQc$2I){@vs0~LLjBnI=a75MvIc~Wc~0g)0pGy9i$gtiokpYsI7RMb%a8q z_^Q3#TN!v*v@y*jZT`)N&E*n)4sE02O7xYH^$L_eYwQ_%nf~0Ee7llb$G+Jf*{wN6 zz=>&kpI3+T>?@0>!bwG9IrZ0s^Yin2ron#g%}0kmm6UY($(WfYT=Y4XZsY9mg|8X| zK;i70SSk~)rZKYREWzC|9PwmVvRF|u+TZ|DsxPxzA24z{>p7z3IqIM5(u|TIhtp72 ztCNH`xbzX&lHDq6hBhDouVctF_x-m*x+OCO;3fdbo^=K`oq*&Ke3g0w-^iH!j5nIG zJ+Z%UVAWjiO2GKg z_?kS#8+qMy5XfQIr&*S8Z<}@2zhq-4Fj8`PEeg85&;W%?1BC;I78{^-UCP$V1Y?^8 zz;tD0eW>-jC~>tPU?pvVDi$e?WMebgyJ5Jp8B8dG&^5dstsrn^YDW{g4VCKrvQ@VL zB>-PbF*R+h!KR0$<<#1olwCAveLGahZ|sBTbFIDVHA3J3vH5W3WIF0#Lw(pq4-LS+&@L~lH(VU#m06sQ}@m-cChvQO-aAEEIa$v+utx25T zT`~jb1kt1MhYMmxL4u%6ppySBmN(j5o29Ln_9SPKDRE9v2}*`gJ-1K+9$SJ+?Dc@` zkk&}^Ys+ln;jxA*UEaSB*N$A46NXFFL2{g zSX1^!-W(j>E?!Flsw8$ATm=BnwiL`~9@gJ4+H#H*5y2`hy*``W=E%O;eo6irUAq6; z*pfr>yq8tp#MjNn2hiKm*t+fguOu2CqzA@wrR0JgonDIymZWja4>+?&I zsc=ddvF#jEe8Zk&t+hZ;6ZoyzbK48xjU;bkKYC}$3Cbptx4d8`>*3%^AfP}FosBOA zGs&|rC-&uhctbC9cRLZev-R}kG=RMZ0cv-dvE>&4pePRM;>PYw;~QCm{a4=8ko+uR z4xILOn1{Pz##I_=LS$e~GvZ$jiksaHyyh)h;<^O}*7$Mp4^h@E@=mi}np|4cE_PRJ zfr$(TKP&U%*qI{fW6%7^UnT}h&7h-1G*8(?l8)kbTHeam-Ktecucx+?q59=t zxzbnCZ~+^1mRdL@a&omDiWwNnx|%ID+Mia!>3wSrKa@GkzGQvkfuhJPY`GrXN(2~9 zJW!W&6AYdaMoGI*#ml0mR-X*dS8J=qv@*$8Z+5j}`{f8T)Qyl93Vwaq$;4}{cE*o7 z0x;&F#08TEFZ>jE$IpQvX@`tsVsuY-R(f;17SNIc^4zb$SV3)*AqA}U1W!*3AnroD zHc&fAn2C%l)}Uft>MN9LG1h52k73Hdk`S77%w~ z3!SQ$+jmYvjvfu{ol9RXaa0norn}@g(z?n?3=$}tWI2!3CFW>mG zC%fN6@B*&&N8UA8)24I?gTLN9wXr-@_p!Tq_WmEMW1R@TwT!IZ z#+ZbYU-E3b*2qL)6*VoFbwj4EWu?u$h%!h&1-&lB>?Eyq22;Qy7Mh5DYwtJR zdBD!l=&f#ffFdWu5!tP~DuMz#Zt*cbjx5qoIb-akh7Q}zTF4dqS9wNH@3QMHrAF0V z5?6RlKgpaVHFkL4_^_E=X%{vQI0+E1Uw?Gxjp*kc!VHv@%12%61w3e)vZTH*ZAG-d zZGK^e2bslYSm4J$4rpEz)=;)nYabtATDX6&NzoLV zGx3kgf}NRz$25=Bwo9A)7%zRiN!+%qjA$OJ(&r#`D4j*rW}7U~xt@LZ^DJQh(nxY& zy)rK$CB*ZGyf7aeQtsh*(@#3=L61N8hMO1=OJ^>Tmilv1`#oIrZx*b;by20;X})=i zeG^d-$o-sx*{AEiF5>L^ATVE>|0dquZGn(tpyQ9zz4bGXIA60?h<5sq03IWF@Bxej z?xSgc20UG!Cqz2%6@#N0P+L4P;l?HkTCv9&L{uO z4hoprWTFRN@5AnR=NAluxFE=nDm=kuY>fG7F)<`oGDYuJasT2g+yi9OJ!p5W^HnTQ zvcDL8&zsjdVbc%9D)aJ{Hc+p-5EgZ(;#hK>eWyi*6QXcQX*fG3uFJ}0UgJNG5&K{Q z`tZA*kOeOO_R8|WhQUATke}2r$}rg}LBKrm9gLDUg)7-b%#(~C%<&{cY&RfFYD=s3 z{_Tnkty$`}ms2{W@lFGS#hv+GFip-_wzRa7u8^nfD}TBrZZM5uj|K8(-^Bv?Fs6Vb zoy4(wqn{6iGc_$Jzpn;dgcA3dFJE+{U zziC@gG8L0v9Hn&#NM&)m1*8tGf;A<{NiYz zsW9yzx+mjl=FY?@E+nuGbm1CaAYoqkT61Wub=(%$-1xH?3Knwv&FKLD#O6)9Qp&q~ zGW&L1bDjApMU}IVx z@E2ThDUr33iQ&snvTL+O=e-vTQ0ZkQqirlrJ0JFTx4va}P@`V8YVye%`zL9Nw@I~6 zzK4lz3f-&(f2BAjSSMVjtusjd#6lyjm+jQeGQeA2QnEG<>$BlwAUx$hE-m? zDs6p5R*2vG?7l$2Hbz4ALxkpz^6>@Q+Py`&tlk3r@WK%38%h`;M!weUSQnbT9+P~@e#q~s8z>`%+0-2#n+k7=iOIHl{Nndu*K*_mJ&)k2^1WxI*R z0!P8oe5-#%DtC6EU>^V{?8h)aWsYdb3*8S(?bE<6illywa!K@`dQ^bi&5QqY%VMRp z&$Zo{R3m3zd9y{5Ld0wDkJ-MSM46F{UoI|wBryLaTm7#@>z?z+UL{M%+4EZMdH3$Z zw*+Dbm+vLt(TMQ=s-$8D?SE;4+RGu-Sb3t`YGXkmD`zlwExr+LMirTlhcjqm(Y zh=TOa4XNr@9lI&(#1AiYZ5Db5h9i zgu&G#Qw{};T^q${+k}Z#MaJ$C(B&BeSegbOZ~I8KEj=p`c!l+BJ2X>VL$o^-`BzW5 z4(b`*P_7BS+WKp6Sr0sn!GFwjS4ych@@4h}7vAf=#sfVb;h2N#z}+o|bq4-DO6pvz z;hc>2_b93AnDQ)%u@Z*-e@Vae%W^0$L5*KD&3~7nIi0$rJ@Mucw)YPe;&&TbXW<@6 zK(4z(vu9U{CW`s6@X)0K9qYRW%DCU1@Zj-RCMAt3Qy zruoGQi51$2L!5wTq~nD6woJv1-6+AL-?#P|W<8kj-cRQ565~#lO`^@gw1=ns!HSC_(@aMx@#vck|6!L% zKknWu$n*WC>14CX-V*0wr58f~Hm{RUGhD>Q-c&m&y*%Mx3dhcp1NZ-L3de>I+p*!5 z8QKeny>%vh1KoM3;omd29$5kH#HyZI_WJ?dikqYrgn%|jVa2}Kh?XG zP5wBlubuHntkSoarkeP4ZaWJT69oIemA3sWK5YF~)xj#RJmzmM)pPY%xB0H8WEyZkRUuu*%%Mtpazz}>Ij6F5pVPQb|OC; z+Ba0cEAwsp^gD6KC?gt{sTer0mT|oGPvOpD<3L>EGf%B7ff3$wqd*M-D=TRH@;QMo zDn+W6w?4m1PZDnTooHbGetvRNjl!o&O z;bCci!+-v{$l_n}pN}XX@XJ^!tU^9?S$Fg{&4(i_wibc;lw#byd8up^$?{^f5r6nf z`)YfK{LZn~FRYBq3RJWw2vL8&S?w;)Qpf-L36Co743`;$H;+l4_e7q31&_HxTTQwt zb8@Jeql5jA9zW}#vAK|*{RDI=NnBsbhyk{6{j>R?SQFJdybTnhc3b`+gOKJ|23{*? z4|XECb_5n5!0l=lcNctlrZ_5JDT*atC0EpmGdB#l{_wTd)bs(|Gin$k+pA4?{wTHh zV?hpYxVru;&@_==U8_{^t<*v=gDm;;EP$6*!Zc6!;-AVcvdB3>j5A&5cgL<9(63(j z6T~Hcw$lQTP|P)N{&uS3=?Tof=<~krqdIhu=WTSEtA&xzw<13*d=*2ZYvX#g8^sSS z`QIDb!|5)1i*3)rQzDUV-1FKN?BnWX(LHl5c0epo$J?AE3eO&|e|dEIP+U+w8 zA(5+-+o2W%0at*KDaQVOclSyM2ez`w;cX+hYFtPFu9f7)^fAkqct-@a-DcO{=IqVP zf#2MXW(d>uwZ1;l#{`IoHIhD^1Umt_riGBMUk?m90ME9eWcXntkt;j0zSOO z9y6{?pE>j4iL3Rs{nMBE}+)6R;5!%82>_lY&y;=|5%^$=Jd-#CB#(Ei_k z{Nt>6;l#R#h-ikM^d)5Z;MIws{3FRHvyKtJKn}MJUSA~H2M+DGAl~p$G&?yaNarDb ziZl`nas8N8U#9G7nXy!ys_Db4`T?O56eFmW|@*1N^=R}EcM&a4ZjJoqaS%kA(C9fbcG+Y4~qPJ zx^EBJL|~^qw33P!JCd9%^tzP+8}$5*w6L17?MXF~jL}UjglyhNI1hpGAu0}4*w~Rn zr{$F(ch3YeN+hhgT8Vh-=)@Wf_6Fvml$%Dh9di_h7N*C`%{rc*FhvWCWCU&>n z+Wo_o)v5hu_T#jYVcjHygpFRYvSjV``NvnmV=FbbVTE$OnUoFL*Fq~&dbSW=I z@Nn?K#deujqT_Q}gJH)%G%P+;h8;*@F)KB$VLSQZtbL8es6k=M){6LX*#fqWvlB*{kR{ zi!QPL>*9`u0Z~KJsf9-+VUWQY$x~0XXe?uS@Y|1ySlCz2I4ZFEq$l_2eK2xF1O;ti zp=N<|ddlMyC;s???LHp(RL#M+`J}T|+)x42O^$li!2Tog%N0|0pp-gPTi0d2d{T!e z!4DSlppaID!(n(;%sYuyI@aZJ4q`xRu?e)4y9rS`vWKdWKgEbfS=9c;`=#5mI| zWRloxG`&M&gP#5QIiK^=&@SmI@26+2+80@A)ldvdE~H4yTIY^O-!dc{P@7}uTDEt-xf9jI~zxTs|_94_8M0+e`Np4sesW1T)vHg}*+q9Oy1m%}v$vS)c=3)^FJGQ5J;yqD=f!bXDbu*y!Psj^EiV{}o@ zLAT-;S~}3xTqvNiLqtu1u7kYMCQh5fs2y`VJEO`qS%R?aMm_uXN+=`m#-g_su}u^Q z#nJ?j(O7}1p(-*xbp?f7IfAo!HBxY)_ zo$kG}OCh^%j5-zRwmCsbQR?a%ZXWLbQ@mzK(z3YU_yjv&g6ilfXt-)g!gu*>leeEZ zi`aOHJxf2Rl9l@f+M6`!3Yl5X2jQ%uZzbOy&1s8goGzR*=977V5`KDMru*KZTLybs zv+zw^X6o!;ADOyVZt{pJI0zRpnSlW7pb1;rBA%WU6}05ABvs`^{iH;B?m%9m510j_ z7t_zeQqz-?)03^n0Qpv#ZfeDh=&vv5`HVn=5tQZLr{k!7506?4)_myg?t7$3< z=OHv@eqM%V5r*n9J2};Ft^%OrGtGe23Z=-ily>BfPC`Hi^lJ-t-GeDfVDg;r zS`T!41k1eYoiHqboIwvbjcg9Hdr|8#WHoWD+X9Y)p$V7*V|?#X5y-6+B!h*4uM&x! zil;hxdCfK=sZs~yb8Hk?Ua#C`GbJRW`ONBeX7T1`q#^J!xeIhPfSBBm^TpC2H$S4P z-@YAjM~{Yo@tvfhhweC0>c-;&-6`SV8RVvL0!mb>6u#i@RAbu`sRQZq!})Gd(TRxj ztJDwWl$VUbg%ZZI4F;c|!d{nq3< zqHu+QoCaO1-=Gf9Bo>)~ zT*^eQ>(AP%S@nudU=Cl0_!L}}F}L25Jm1uTjP5QkisuF6Fod-*N8eUWI61ez-q!;c zFpZ-u3tzgF-EaI5iH|5nOt9g0W>Ef=FthC)G!l=5pi&tuAwueWoemw!oF^UF96ATB z5)h@OR2>+l{*^#oma+BD6VouS;bGyq4%kks(nWX2`&$)q z)cH~wF<}s4^JJ7s<-|N-L5lCEPOww$5*CNj(4~g8)0MI=U`;0!J)aza4Z7gxvlz5k>Bu zp=28K#O5tmv=t|diHNu`%Kf@HasDVLaTBffxF+VSGxEW0yWsR|!gmrE>O)~%cQk|=1UxE2|2y_uhkMLNLfmS%WEM?$<w2I9<{8v%$m*2%Y>ozjCVTazVK$Rh0rS7oVTvZN%K z_plMhWdn`aj$bH&Q{qc~BDx~(PC7XG5*(^cP^X81p%_}`K;m=S5-c_1Tg?$i)ZV$` z_fhA!6Q*zU3|~z;pi4|hKwdVSyd=AxiKQTstA)r9=09 z`%l=Jpy3mdiQev%572;>YP~e*PBC;-3EA#KLgJ`5_!E6ensA~#`wr4`lvr>{=@@lQ z6P{gIVPsKh(HaBv_7(S1|Bt{(#jJ4K%nZv;?g_>c(mmnp?xoTmi?hk1cHok`7wkCF zj9AMWFZeSpwyO#cEiw!}tQP&8R#}&%nRalT*-`v7aNC3=*P~=MzitGOsXNo6Xj6zI z+-k-hNx@((Qtm#{&c8bT@&4CgM1aWACRVXu$NEG2#}7YgId-y9t;X=mme_o-VW+{S zjNRyrlm9Z7Le``dyljWB6+7)9sXI1fql@{j4~rqot7pp(94T>Sayxglp1)-8=nV|oOY8B2D>`OTnq=3o?O2n4-gO7b~WbC#4jQ9~t92_Tl;OZ})MD7n={bHt~; z7`ibCwRLie+D!Ht69wbkQroD0Q)&;e0{%&79uoD?)``H+8-a%=DLcOi5 zwt@WI%>4Yh=@bxh0*L0e(}~p)>=#$VkHfJz@^Y{Yb&I;$BMv9}<4EsVv71&^mP_-Z zlH^`ZkUM3>+lnqK{H(NFMy&i&A*-sSq!hTwxWA_dPmramA<3Co>Q@>l%CbnNkkF5Q z9v82=rAb-4#QZFn4ShneqCyx;qU`G^kzj0oRPnOE5Z#)}d_3m*@HI%vaqa$R*M}3e zB&zu@yN_SE*C_44VAm3~xQ9|I0G-PWMpEn0h^}x5RA#MvgSvo3?jLzwd+V6=#yv83oAP||NHUuCItdbrIHps#qI^IpxzytibU2`}gC z>~!D@PwJ2SoJJ;JEgR`6&jPwtzP@ONygc*ER%wg1 z3Te*;s#g6x3kVN2skGHAyVF3W_@04~1C`j9m*+6vOGF+}o}9E;!|TdQoyH5weCZf-zBTodChpN>;EspL5& z>b$vtH(m`W08~>GR=ass4Q>12fm|*uJ^dhm{mlr;BlVTVCOZZ^j306NCiSOFK|ap9 zug;!1!xyi%?fhHV{Zq9Ib>n*bt?1#AilwD+}^UcTTj@XxP%Oy8b0^q&26 zN`|3dqX+R#ZSB--w0y_8)3Xq2*~@IDW8&3sMarEbx@DFBy3P2FVJIlUt52hkNh27+ zmb+K|?IqzOR006-vO-CCB;`FkoPT>dmtyL5gZh30+4{jHbA?8Hr1inUY6sIQhxTs7 zzDD2m6qfEvIRLSZ=1Ub9S$#xq6fO zAhM*WT#an?+^m^oeExWRf zM&5UEd7@Ze4AFpfO<6hBP@c(d2FhZHeI)`^G_ddsqWZOlIZ<5f{tu5Oy_c>k6fur*|+Oqj@0k3h-d zu+8;q++c%EFDqsxr{x@UE#1j~lxx{d=4rCYu|Dg_q+4LKp*8KnhDwXF#h1sKT5_6q zjB40uKc0U&p>jT8Z2k2S19m{8T!u}->?8nL-jseNYN}#6Ew;BeR^zp#R9$m(OJ2Iy z{JT7>-iQCNp?acpLrwB_O!%$5anM7`V0g7e=2bTs+N?673>7PXNvE+>*CVHGL*dUIw4M5*6>=lOedGx1^32WkELx{>I?{2 zu(NO0!hD&%5U60vjsRtGWo(~X0zWU)ku75lVCG)=Or3VxnI~a4-Vfty2*5h)y2jMI z$NP{QBqT_9id(e4g!CSmpwIzJ;%4|zaAl>Z-xdpUZxlRK?-J!%GD=NTyQQ$bTI_My<0c=@c9waG2cW7{=hz;n< zKK26L|3%q523MkWU87OQPRBMo=%{1cMh6|+ws(?_ZQHgxwr$(?x6k`L=e^%Kb*paO zzq?Ykch;J7t}(}$81Z?0^zi_e%YW0TB|8DN`r+&Ty`@qLI5hY3)uQVGw{$}H?aYL? zU-NCCZF8(v->LJl^U`yV)CXC965-Hb06D{<*iQ6bBEgu|RB3+%$Dqva_X>A88ez>p zSvtW8KXyPQ4qCpZCpvC!BerUo4Utxto>z_X+sUWrJ=dexsuLc@ZLrVNcGCLu&Eon! zXX9~=7$NJ-N+QT^z4n8b*Sc>OKOykO>!NFWzbR{}<8kl8i*3=d zvFFxBr^A4jv_#E%mBf$}`g3pVZ0P7}&M z9OR7hX(la6d`7-;_s)`EUZtexH#&+(&Z2hH^;@C2jT*1ll35c9iUGlEe0+RbNT{sk z_p$atlm6O|-CmK6kPvz(A5Ee79D_X{Z|VE^nq{2EF_>nrH1hL8MnPzK4 z;2igfoFA@~G1OLjv#BO2e+ZZ-?1w7RyRwRpsaU){$a{tAz%LH5R?-UR{nESl6CKR3 zg=%~$G3}^5iAt)){jr9rNm%UiloIrfC4vvhf&$EdR~ftAT^l^&PFs5}gTwgGi&FD} zt4LGq(@rSLfLcs!Hk8IV?7S?pQi-T>Mi$N+?gr!mard9uxh@@+bh&pjPszoO!fuke zV3v3U7DsyRbb}T@6sxT_?%*6#$A$Tkl7hUbIa2SX&onk`EL=iLNIPdIa^fR{G>0iA zq25@fgQPEVsR2GV@*(z)50BqT*}s=cn27Mhfq%G~V=0HiXJp_*ArSy*5sn>C%5*y@ zW2$v;Q-PiGZq1&I!6k}GhGcfvlSRnkDNEHdWx&zRy_=$?;60JLrsDKj6Nr4LB|z%5 zrvQ8~7;a4z?7zoO4h2eY$6x>lpzI+=496j+9kkPyRDu7T!YWEGsJ)%L3bE4QZ7DZ3vT`_C zmNebah?^t2wbNE3%mu97y8>s>KQnyZw0QDjZfK4cXhfcnEQQU+iy$+1 z#v5l!AxjUiP=3y2$eAEzmKmvcL=$`uX8L=CPf|dBPU($XviB4Wbufu zgOuSNUzYenYZ{!f%I&)(_K;S5e>Xqn8WiH>rq2dNy07)bP^Q}-YfFC9N2)VR^pjr# z2UGeIIAu<=qNeOidr`tSgOQ%}6tfU0GaJqvZ{&u6V*%{;a3CBTkJlXpAMm z>@>y(5*LE%;fhC80C$}Tl!F&&sC|X`?jxzak1SzG^>hhT2WVB=ZNfw%CJWWVkXAqZ zLx5Z^fyY~ndEfFM)(qU5Qwz>XfzuXHnZtgk_ROqJI~6WG|2>n_mHe1HpbFyMNlaIY z@1NW`9cb*i``~~=^53h$KuW?zsaC(&m?~v@YGgHOGXD-5(V^G@4Yxd?(^g4)Ok|O( z^ex*ujP(L8(3(j*{u+2hub3pB62Ym;d}h-Ac`+Jlv=Ibk=MjxtyY)4OliOp+hDo0$ z0THd`L?vmh?WW-0JThy*iD9w_(9|SArj{CDP7Le{HU4mWO=10<3yPOA8m%psx(CV1 z**EHwwOcg)$;o;eeMPAJX}4)|0i~Tk@d!I>>_HcXepvjwIC^Xn;F`vQOlZK4I#5KZ zG7~4#uq#+e3La&nWC8NWWVfQr_I-&qM)XU2uOMyRP?@a4smMtD-13q* zQ!Y5}A?UDC7d$0z4PqEr`*ny=wp!`rZvdwpJa&eUSa25FJZ;l-Ed6CL(!sTRfvjTd z76cf>QotP9d#NAW3=e4GO>FN>B1gA^hcR1{_>vY(YAZLL;*yXQeN5#zjJ{dIVc?U- znF;mk4h*zhc3<{4MX*QRqQOG^!Fva1tJTbu3?|sFTtUs=LWf37;y{s_f?!T0hJ?c8GNi!_0at(L-?$&O8Ipz4#ax_)anIN!t&T@T z@p~Z0R_?CnW`?#&QPOIOYM8K77P!tNS@tXUaVymC=gR}ipclYcoP+eSp}D=i;tL-e z@(qA4)e11bV-b|!h~Q9nsQy#{7f~1;EpIs;eX2w%zg2E zQ+fMi#Y_gOtJ7;a6zR(bv7etF7NRUzwr(2aeSg)zR6EwK}P{VcP z4ZBd`0X}t{RB6hgQ08O4OHaO&wxlalw{zh-d(nM^{}f(`Dyhi6!j!io0wHr)sEwSQ z9C}zmX6A$=rv^>J=sv6yz6dE=fTHzKBVDXCg;ELGZX!So@Vmb@i{dNnhC6*@cA0X! z4czxplb*8vV5=mgW}S53tJ+00el8u(4@?g`8WBwE+d}9x9h#r6vx90^XGxF;(ZZW-wG#E>|gdF0kjW)L{b%UoIhsftHwtj z-~I1QEax(XhHz_5|3ctZ=nHmgfR<$ky0@7iQKg|j+zrn^)M`|^#H zLkcmDz%C(2Q1U*TkHu#HU&>9_&^8`V)j$8W|45+6W~S!+Wv&%mzxvb`T>wDZk2O&J zryJp9KZcheeDG+?_lq!$nNeY8_iblS(gVF&;9rn`oj=^I`U^7r|JBQ#sSuu+!hWRz zACl+5TgTZT*R;9D9KWY$H6N5zmHtRL>bV=?gM+%g&^N6h5WCDFC(BPzNUXY|(!uL= zo)}`(Pr4wuML;D6VbQDBH=X4k0)c;>TX6K6L_W)ZHfrVk{6 zj0{|OGbTNS-;M2nDeA$mUh>lk&GoV1uK&3os;|L*Hm}z#$Tmy=rp%zVz*`%M0v@2X z4MPDhnTrlJ27=M(Rp?!|f7J$*MX>JZ*`3h@(E)W(35f$sr3{DN#*@e5@!pn|?Aw&! z%{vmnuQ`F`d`WJ31IWGsC{FLr)jF;el#Pa`@&h12iff*=4uUQ|fw;J}| z^8~DFdZ^~to!@RpbAN~f(k&M58VdTH5dde3+cSwoKT!r(;N~oM3v76lv9ksq+Uw79 z3E5b%f#kOzwp!Ub!ct$gS;HL#hQaq)Kx{NexY_!iLkU|&mlwTL7%1VEzO}jg-Q7}4 z0A?f)FEcOMB$+SH)ISeEjRrM!d3O%c>{zpPyO6zN=|#Utk$%7E`#0^a*10PTgr)3u z*@8oc{Zs<(uaN~hnw6&~T!|;P0vF++qP3;3Y$dguJGScHyS+J+-7%#`^EO^8vQ>8e zQOYo3y-D4O!n!kNiJiQigk)P?tz}xWesa|Qe?k>NW9`@>IM8-Kai&;4G?d#^RISi z&52yCrhrwskOU9<9XpnuSMYSKBJ7!&dJWgzu{qv1uWMt71df`ra1i+s+1arC z@G)VOrqljW$n*HQTjGT@)e=tmFAn|&6evdbO$?-6Y~1W*(W4id3`}VMcu=S2J4O3_ zZJ1x%vo!Ji4Vg{@od<%MaJS!mSli5-P1;-`#DKLUT9U_X=b1q1*yWq$RYx6po|IYk z*Q;fPTutDF`M9UPBDvYpLbQIUQe;Q0;zCROD&qTL<#jm7I*ci7qRtO%ak3xX=4BHg zxmjq**8RWT$-aBY=i7voN5samM8?N!7p!lFo@n~u$UE%u|HysaV`4InvJ5mOVKTLv zut3}4qm^GSz9=e%X*FLtO$n4_DkJoQ&Plrvp<3Wuk`4)ES(zEyV>3o0e0ZWnN9HW_ zKV!)1^2B@6T3|p#zC!Bu)u~H1?K`4#3&iS`0uR`C!Bk;j#kwv<6$p%kv@1uGB#{Gl z+(jg{78)zmr)Q=9>beb{#CLaH9{7nmJT_nD>e5TjmivO7`1 z@NxX-tZ%A@QcUg=G$0e!`_Dr;suU5qP$dpiaR4%Xb8R<3=*aWm(g`brXxuZ?^}*&|V|uQi;cb=EUUL|G3SOZL}m8kD6B#q$snKo->=8lM-yAZ*5FXh}wJhMnA zmG;J{FesvU?#KP+)sV`&%xd1O~DL5=c%HZF-vq1m_YG{R<>FhHS2*N3K*{?(+8xlR?zKhI($>RO{FD)UBO1|<1 zAoU@Y(?-8g?;$U7@*6_=0FY4<3B1sKZSAGCq0?~QO5$YUb_WZ>tjXb~zV?Vw4ntmQ zwIzOHh&^VIp#H2wk0)>YL!liFO}xIb!)#(3N4C%5f*(-7IBj2hh4fP_hI>aUq1h0{ zmm(iI3R(A5!@mxAz>+m82}C$%^SpFb7u8K`LN}_)z-wTzc8vGnao8!}To7=6d|j<~ z+#O#9)_GjRL75CNY()_Mj|YcHA>`^z!-;srKqQg;Hy}Fz`ag7icGDzVj)%9=FnKmj zvXFKJ5|CO;vhIBEK1pffCH#l|Y!Y*l!XX4Jb5W=#f(b3oO4Mo5zgtTIwt|TuSotsY zVjF14jECG<2};@gZuIYkbc~qyILZW-59RT1xY3=k5haLxXxb}SaSz{1cxK#iVPeh` zGNAauiSLD`a(XuHY2<%!C~a_%K#-y_Y8I8r74S8U5&8>~<#L#tbnVy1kr$b}vb;8) z*yp{H8%a2deKEBqRVwXRc-~aDPJBk|Jx#%KPz;a5L!%L*5!&(s|AP@HzTn?Cl}&af zEzHS2=lzl!a zVi2jQAAJKNTH(lt)j^5~zM)U+*!@&DPNgX=(`@Ux`1EWLw6@oJsv}4JU$CHMA8j5Z z&i7wnJO&k-Sm}qps&mFU5o8br6Rf)Lg{{oY*7Ip;HC}J{J*7TFdMS1@7hqzng6p~J zL>qr_)4%L#NXtz4arrKw z(ET&}vaV+;;CPDgRJ9xh@8|H8sAr6mCeE=bW3!q(?>h)@l=Pqd5aN4X2>EeRvb_)+ z_{3I+*xxLzu3lmycQpka-2#)}GdhXaO&lh>LHUJbu5fK0qM?Cd@u@W7QmgS=M9k+& z1qAbNh66o+An{}sLzSeYqeY<712lAuMk`g69^{@@_>|&%(&Vii*fy(cMf=Hi?dhQi zKdBdZgp+isT3VTT@Ey?lc^Z5FRC+hwKS$sBLYF8hQv=zBHua0 zAVZe$bpXFIGwW$?(d_XHjQ?gx%5q(}U-dqKRc;$790xd|k?_S;A!ceX*tz@DI$3U< zs33*fSg=~HC&XP$6NJUtM)o!?re6r7Q2o~dmPz;uh4AN#D&@K(^>{jBEqFcPioF#E zo)k4r^QSq98=1N;LvpM|w+HJ!gH-7_nWueYI~3)APXQdj6pN^`WObV=Ic#Oaf_>Y~ zGnA}*A_e^rA1X1UYM=Ezmoq$B)a1hlt$3wNF@-+m9hAR++j8`(#RLAX`Q$TwZ~eW! zjfH{{4MX|sH z<-SbNf*h8mg#i4Uj#GsO_I;!czLqHd6J5{I(M!hCl2*aJ6xp@5m2Lc_l4ulvL*rn6 zd96VDlr(QrUwDSy={FZRC+Y+hjr7dQwBUBLK&i+nm@F}YcY`cty=>gHTLdyNVF=^F z`D5YS0+`Z(SOB2akBM9oK3A5+l!(-omt?xb)1k29^-qoVTv5)SwKTVS7pHnh7Zx=< zDz)Ot>XdMsZo-7#{2c$Yf>BbfsL0x+2PducSZgflLuyTFZ0nd zHzgK%1r(DKrANHMLt=S)#5)T|U^r(m(Dua;C#Sq&dNBq3-_{SIJu5SU<6jiX1!!;u zmDxh4y&zHTqaWAzgo1E{;3>A%r5=~_Gl<1uUWxf_(`6blx*r`Q7rhDx?m(PikY0OU z&GenJ#_#D_3E~y@FY)HR09&l-5GD2w11Kkx6sVS3witkv74^&AWX3m$?jM%oORCKE zg%@>`M!4aPJwE~*Ns3-zqWLrdR@^Q`t!)v(WO1004bI=rHEQ<9S_nb@1MT`qNZgZ5 zzFXw4By#MT_(Q7du-ccnK*1qo*W}XEV$sf&CX=Fzm|K};JK)IH7B_UB37ov)Zzw)C zZ?Vhd8>hYm*onwINP#MvSkMjQfU@qC%B-23_mNycXJzDMs1e_KDgfpVMNk?9;LA3~ zs@hsMgb-!QxN%)SCVmS`J!Tt`-zW*iBE`-{|61)v;%MbeYg^U)UGUpz`8x_iOsN9Z z3Cve^DmkLc9BTn=C~Z0}?emIo9~|7Yd9E}Y?tW@y_F;#=xd2`?d>UhVl9sKu=vHE% zO&s{F?dG%F-`TGHR85#<>cqJixleL&33nXa(bBy0=BR6pe}a5-kKuE_%cJY5P?Eqf z4T}lB7Yar9NBt0li&SrGg|vd6DfI7{o1`WmF2}OfrY{gpdcA0h{l#u-D-5K0D9CK1`YKwE+;dPAyO@PQRNN_DYscrsN_}(%*5Fk`~iUwasZ`Ca3`EJt%65y*U(;NPT2GBZ}eEMnzP`U8DDO&LIzpaa|N?1Cm8 zN1uVHMxa!;eTfCi4p>9?Y-4o@p(KYQlRNi zz@ui~1DVLmKO?x9@H(mpsd8?TBpiYPaUi;Q1*xE>$$}8?MBVwYCBxwX0`0Hp#9Ne$ zI#qL&Y{xGt{{5B!NH!MZi-NA2+|kR=6)dU(p- z#UrpzX+CrinuV{@Etww7`RQ4pwzFr3LI0wRa-%`yS&*U`@v-v(FKw$M;k=Cyb_e!s zBdlLRnq}URg`w$9Mhu7Gn1r%)z6RQST|519V)drlkk2N>IUq4*BM@`>@41kBpdkII8CdQAFjvy3RSBs%w|jDL&G0`G z|1){1geUW*v6&=#6b%Shc3{g8C%frKH3`=m7FM82lFTcT8w(Fl2qO<$!l+Rf$8s^h zmLJ5r#)xW~4K*~Om`@{@7}s;p+2yB5Fda5Fws-U8IOY}VYf-+jKUjp5ff^rh%nI!} zH=|cjGH3cPApf&5ebPFqP-Vi0IsNcMaNtlj9;^@)RYu$vJJtw`WO!*u41O+V;K*+ZIg82wX(IGZkytuU|86tMOO2EzhJk0l^ zj)Q8Bfw{S;$6tvf(|EVrlH_O^P0yRCsZw|{?gObdc0s(7(dksH(&oq=S#l&+W)5%T zOP!*f?}^I~&Bh`uXteyIw^%bPXU+{%h4qJ!JlcTibY@Lz*)a+=!*Yz#y=t1s)tNEq zBY(9ovMLgtBYTz7=f2TbjpV@**09RjEV_DHZ7eU3id}l4^vbUYKO17=2icj> zty_!OIF+19b%3i{W&jXeyD6Oil1R8`8wJ!SF|o?l zmJ(P)Pm-fNcXg(JHkBcCqr!EJz~xyt3uDPswMC8G9wc6Ok71qx^z76U4S?+|tbBGx zTr6PHA8y^GWE8&d?CF=O?K~i@X?vbNOY&$qyLI%)WB8&Jq3?19q=B|gxMA$^ERwS) zm`f}Po%@%gkp2$~MlQ}R1DOCCrs+Dge^EHKVqoEzTN3d&igOB_8T8`^@l8cZS3AdX zl|n7~04t5e8%K=DNzi2k&Lt@*j~@~;+`OrEGtn|hY!8$!NE+ci1W-rd5}Wq2-{WMz zK%j944(~A%SM(Da@>=^Q2e`({PA_U%YuHB#*G-K44>(rQc2&M49&rrI=(`17 z%yKQYD>YMgiIGEml?nRA({1RC4r)G?ZJ#auux=x<1dbzU>9|+SsJY|8Z(*aCC%i6E z^E{Oe^kxaHa1KI) zO-M$2TW}Afryr= ziNkK}P^9?{19Nf=KD}O{wUF03NdfHfocb55OF|blIjyC9W%6M%mHkF2nW5NE(HQOh z;GOtb=VprX38h`J#<6nyyRjKB7+NHMcK)oOitGmhmAC&ZIm*4sh?@nvKXi~YC{r@4 zeru?|fB-J>;k>K(52lNA?5S&X_c~58P6(B61oo9OLD@o#LP8a4hm$3qSMzQid|xEW zSExp2NJ&v&i3wpwLODwbU?Gz2NRBv(b4RVni_4f%5(&Jix-8{P3|^Of)_YoR-gm)i|pZB4J zHf?5)q4X&p@^+_{PlojpWd)-DXG(yaGtHL6<%E!tvHGIbk9Bc4#Uy&W^W1_*$-r5` z>6c^zj%2jwKb5~`V2co40jT*88yXwQN#f;w&lp-I4arT7Qa;)w6Vl92MG0AZC}5Y_ zccK(zX_n8%%$v1)OU!soL;hdAj;Ja?yNag2%8+zpO&E6|0zlQzBqX$B06*rGCYufa zRrM9Fe4lr+=*5&NM0^~|aoHB@+{BEI-16AXVHa+XRIG(#~B`1A`J@|^~P z>xMrG>uy;Umht)53R=N>D_#U>c0$@pe}krag=4 z@~^Mscgq&cbL%L_M1+1d1vM`yEDuC8d$r>Hcc%Y=b5yDv)A8&r7ajbpB~0p^a!l0s zepZeZC9m+?u(+8E#OsI63jicpMrgBj2*E@vPZZ_}0@okv`I{yq_uTGu5bl2{r~lTc z7%ZdRtbnZp5&WA5g6N;+CZANKH7@>;{r>z~Y{fD^+p`ZX1Y5;ZiD+0#q@nE^Ghga} zEmm~Y?_&na?cpWz<|S1qVAn$QYkC}rYB7yqKxcFeWE8?NW?j^}C6!`Z`)auROaEvn z6Y3*{U;ce5yL?gWb*13cCK-q0dCbdaP)f1A;K61e{tm&VtIB7d_0jWSy=7P-&S};u z4$nsUkwaMjM$_q=E?@OQ>qZZL%EH8QC|uDax2^dmc({2K3raWgsJhR(_D|iL2gMCYgu>rK{z4WCRPv z#}8NBR&1uVQi%jbQe~#t?!X~5kp2t69*;62OJ5~!x}!7)vT10}Q@OhRZZphT?ujYO zC>8?gZ&e;K>V52ConTrlq13YDV&lN+ZOCI>YOw}LfA8f1A+Uni^13UNxT3WpH?4W@l?SmqgoT{4}R(9jV2yi@E$H*z;? zXvQkE+1A*{4mu(be*&BzfBs56{1y*Ye@R=iOj*D|JIOoeq}}sL)$mh>7MBl|?JU&a z;E6Zj65<@V-2PBRKglO*f)a|FwVg=Do1r^zC@n z%c;)l+`?*yqRM)wc4~yqb$~)4B*ib{Vxef<^2uij9%@k7a*?KGj z`iXf7EXoo?+)6=I^EBeQ-b%AEVOCm@jgj*YXW(BR5BvS?NqfleI<*@UfmZV zocs@>D{T%z=?8p4f+=EeHMKO;SY~lb+TR;TDD&PR-)61mNcYC@RedOs3$x#$kaFzU zG~A}hoSoK9VyMLH#Fo5Rd%)pY5VQ;pvI&@niqIh5WN)JIpkvE8b?UavSxs$GTQwWk_kl-^eu$mXXkKOwf-~4>UXL}$AU5rxRc@X@ zu~5?rEp#*@(J!-ZN7D?1-e+AuP>!ix%ey|DfYv-~^5COe7)46xp=xb(=3s44wz|R9 zyx&L~<)dP2d7SuAS%7P=)cYHX^7ln-=AtAlDEulJ%kCVk>xA~`g7)W%uFFUeRM*w^ z^(_I^;>@(qwXpzjAku&80#>7Z43`Je)GXW1?=mk@$Dz$H=IXSUVedhFt&TNnNK+(V z4U44Z5DxEtY^W42==stl(R?K%>qd5mK*{9-pR?c((+H~3S(*t-lIJrS2f>v;7P6j? zQ4~JJvWkD>Vy%pON%K#2p!hIA7nv7)>z_5P_0cM3tvHfEUH?MFe~Wg7ZtxWaNp#we z0w4*#JM1^?4rP*(`b9KiZ=2>>Gav)%olM|*7{J%Gw^%~3aYDasz5)}w6dMIf$2A{+ zF3!?Wn5MbZn{BA{b8+i{@MBU;W9RhZg|DpA+liV_g?bDFj(Pu$#p7Z3hX|`57@D#S zO~Ic(NNl$(|ITI=f4TCusdh!Z_g)swl<0m8BZWO-R_VUh zU3$>UsAs)yLS1_7_=;yy{aD_eO{AqV3rpQ=q-c*%s<|qJm?Ef?RKfDp)*5iGYB^vH zIu1KTG!4z&4V z(8bPbf0E+yDNtwW->=njUl6dWJF~{d$m9I7ckwzw;3<43ei-YNX6@!+@%XzWX7><@ z&)I$we5FgtHjuV)&6-j%%4gTW;1CH;)y`P|XxM|d!+iDpxDZjb*Fxu>U;w~(M@V>J zNND7=(P;S`wZRu&8wBFKE>8FsvV8k**L{0P_`8iU7l*EZ2_Ex{%D7qAPV zg%LnHBHA}`=a)hpDGKg>v}5DW))+f+qP2FvW~CdCv|vB?I9V#Ju=viP({nGVgUAH+HjBOdc@c5 zluMRj3)7%@T!3qx-sx(5cbA#7D@U*4W8kqlQWAsaOp+pQ@gOhf+t`{DBRMbu%*MMKQgT7(e6aX zzOy`OCPj5afhFTXSxg<~oA#*sh;pfjYugG;+B>!S=)r@IvF_`M?uBOSw3Ov)qtUwU zqYXm&@^JCt+8i|LT9S41v7gU7zxRzl1HB-8#vYct3KxsmkCCZcIDE+#1U0696efLW z49qDY{cB8GQmWTyrwS9tQVd+gVp`jetW-9X2HHwT%25)FgmA(uHoO3>JX&mu@a1^C z{MfR~M~H`D$_w%OWX>|7vc_D@_Y(cH>;jS6W=IFqv(-YfDjqohzw7-tqUpo+G4?)~ z@I7mIdN*~FxAoM5&hk>bWj8VlpYyu!1L||uX%xBW1COtWD*NA4DiT5)^StxL`ZTr)7rj1$9zXi-_UNSEDjz?VJbYf{HXbGxYx(%@!U*fm`v$Da7%n*0 z_gc7DXS6lX`+rErS=&=1l=7v87fgmzmyVNGE?jt4oGM51y<5TRt(%+=wivD>3@gvZ zyl^yBz}&*71_kqZYT%Rb?=(>w_%Q6WtQqYiN^e*YCUPVx!bSK2Im3QWG-?*go5p?thz^JdV%LzaR_7sW`OO+Cy*S*2YE;p z_jqNmg1}XSnH$D}@=JP65SiJY}2@=2VRjRl> zjuaXtqSSp8lHw#!d6nipl$SUO|IIx>MER;}6)$)pem7ckrgmZl9s4kJv$Rj-?qK9`H1TSd+r?MA(cDtxaSZQjQSKJEuk&{CW0i%d+M zWh(hWJ`MCMPSi)3HzkNd-Z3AKhYLEdnivGD_Xs_oD81mCDk*FYjt^C>spKBdlU`bl znbC%&B_{ikF}ssT1UUja>b5zHz=R~ps@>>pE$8^!0prs!_t&^2^X%itt_OD2dYAcN zX_-#T$4grj_jSYi<9mnU$PaRE?`?UhLw>Q()G!mI61Hf^#yo@J7e#CRvo*buXPePR zY>P?wRatQH1C5(0-Y+y|#p}i$2*df==jFnp1<0lAj9jewN2;;r=C?HISM~JrTwet3A=2T;A1)=&hN=cx!y)$=l~ZGwQ%2-y9i+v0t?HSKj6 zbjm?|7Wh;J_q7e182njR}|Rmw1zJuRhO- ztLhs;DK$Wk(YCehpshO5Zt?10Ncs-8@(q1?L77v^b4J!#TInaIK~|BdtoNm^Pnf%G z9~Wd(yLzI2Ybpy`^|cmM#Fm~@X9kJ@DTC6^lfj$Tslv9Hs6yr zX)qmfGuYcd*xeIt)<3tpqO!R9np+w-5_m@05wcuU&lfxNX?=6=fRlG+TMUc7mlu_s zy60~|>?Y-S3>R)2@a>^O{p`zD+y@=cSRl9IaCZLOI#`{+_uku^-2|00YfVFE;qoT% z6a79=Od$Viu}nUlQ?z&wGKWNkXFp%M zdw&KIavxc4~;k}p>TU}~6*-v(qxpX@BFJRVX$eq8_r&-cAt;2u@ zKlolaQ0325WMUCa)yM$(i4a(r0;jyj2g`^Cu$nbJ43X%=DjJbe%^1Y;HiDl>cpjHvdiCGb|+WNCY+^RL-)lt&-Wkjx& z6dc~;(XY0N7jqw%P4^WWw!P~NK8KV5S#E9W{TEg3*%=NXc>Or4w5c{UI79?~=R2^L zZgSY9Gw%FIyYT}9q~F^D$ux5vST^U^um~K$vYCOyTLT32hFrB3rJTLO=K<+8BH3?h$;JkMw) z*o!#Znd_MBU&z~HQ#&NEZn8<-oO)3w{x!cwf=qdqLcDq=)#cAGQ{8A^Fi|3f`cu^YugR8f!yY;*+OLmdk53(iWOz-86))p#oRQ4!nz3$%6wlOJQouuI#3|V zbRl{>!*L+VL_5mOAjK@<{Uxq0!cI?g801UWEd6_tUlxAU`oBO@pmPr^#VTbfE;e9;tpZR6kb_gs% zeY?UXOt3;GHqn3desu8YdY!DRvE|JFn+re_`U`R#q^g;$y33xwUIctzbM60uUv&qP z5?MTVjA3gxJ55dxRbFRhK8U>QqWfL#ymCH=HVm1|n{}4Vqk;Y5SzOhJZCT*@%!M|< z*W2~Y!e{t9ga)Syskq1_hKU&A+ar<;BH^a%ZCa)KGFM#57^&`uk3rF+eXa^LjhKdX z?g_sDPqF+TXuvnpoy=f4X+Y@O6-MuD3WU%V{#9sw=+jKDInjPy@NclGseCNX$ECuwxGc|H-DsW(^3739K6Uo=w!aO#kkO(4Loxgld1(oj&f ze8>I<2yb9JyEh&9)Bg8qQ)3+Z$#)kaOw)1tGYj@v1i($A#&DUI zo` z26Q|+m9Kr#jiZ#Bo;%snw;Nrd@t>ISlKDU3m@#|bv1ke?{H@@Rc^Ahi3b(GRv0@Pc zINwB&05*rSKWD=#Yf=l}E) zEY?PA0?b~`gk&oC3jJ!Am}7z9sees58;RO5brqOk=y11fnqp0fLPBl<+Pr6F3$tGS z*x(V;U-2YZ{s3J@PbVWDnPR%(<12I@S+Ydu9Bsq#t1im3Ki|1Zun9L@#+IK5Ae z#nC?e4_|#(yaVjv6RVpR{s z&SeEViTXoa(pVHFr3gy5$4D;8A)s<;~1OSo>`d*_B4YCl{B@*-@AL^=#ww!!P1&FcN0 zPtk}bVFMxSuOc9@1&QL-Y<3oD)M2f=|I#YpK1^-c3p^bO-l*-C5nef>2MD<5U!2V_g)jf1) zis|Z?)U;+I`gzEowD!)ovw5vAWb|L1oJOA4ly&;yhLJTABsnI%OM{8~zL(vx6t~mb zSAI1Hke^~_!zMgIuyziJXDiZh?vot#kSn;Wl)wE|l;)~h!b!Zx1}w-Cs{XN0QjrS# zp*-7Iswe!I0tvK6^HZLP11MMs9BRs?`4cL}_MmtBciG?Ll=-igva>Yu-{LBAvNsvF z{Fo5@JFu%>rQcJ)S!$bA&Z9R8SXw1qTzvf&Ix3^SLyuMmW~yRu4=ukFA>ugX!%**0 zz_v(qmE}5&9QKSxTpnzb{dl3@l4FA=KP<%b;c^r1g9JdB{2LVN2*6~81 zGGQi1>^#lGu9KCeynI#Zk((%J;&WS&=b$JAZeo(#b6br_kttjd{N?!b?G{mQ|n=M|i?dumI#75Yzk zEljNIG+JThE6hc^N;mGY-Jzc<2TysS%p{3=@WOKzl+9&;nLgyGyl3PQuh>ZVo*=@3 zvQb&85u3vJe)fe!d6kp2IC$sT+|iKf5!y^m>tw#9MvQt_n#B=sS?t%cZ|aT#0Z{kz zf}b29RSnQA5O&e zLq1wJ5)suB&mij$-13F0)QrSx-_Vz~BkRQHa%tn-UsMS4meL5(Rbd&e$4Av|?_!@y zNbAo@{J1@f$%`EEE6cx}FSN9t4I3>N^%HCO>i|CvUMp}G1r;-%Ok3?TUa-ALN ze(?X{=^WVO47ab}ps^aGv2CNV)ff}owi-K)(->_qv2EL$SQFc7`%cgQoc9CdN;1zq z_p|p}YwuqT&8xpss%Hc0Vu+7~xwx!Z+6|+Lp>Mx#zo|(ef710dt4=>Iq%y_$rz~0H zlRz;$sTbw_7_SNyjmwiyh(Z56 z-rwsH0Iwr&#?AbT5qJevwY8AJtC-xf2x#2HKb!wT0m2;V!NFrYBw+l zj!y)8)i(%1S>wRf5DCyCnVj;c*6CIYWvcy7|N5Z!t$X|}T5>M^wGaAO(~Vn{P~$F< z)ve+|{n*14RDrE1bK?V~8Z??LUyeCWBU)Nd1|Gq>DTS-oKp3N8weF~WtICako+U5w7o(s zsfy}wdD*y946+&+v_KY$+*e2&%p?9wZ~&#FFA8!wMxGwE=&SE)Zah<-H}%xa2P~uA zks+Adb_0zgZ1*zf8IwQa<%5gsy#T1CIY+Ku59tf^Y2kfUYL- z`W?`ns7S+*mVCB})4H{`Q34i8CNW{E+kHbZ**=137)@!^p3!~`0cFr=9cg4+>wof! zr20$R{N*;gPuB6axf@C@IWZv1c&`BwWYNfFVU!By)Rr#JOwD!}~#Y8TXpKeEH_Wv7gg~D)0V~v%J>^1vP-BRabPb+b-a7iyweG&x#m)Rdm*a1U`~`nU8WENXtM@ zp?8#p(X&z+Qi~D3J_;dmz1ZXZ2A4&N`WKX6PT>JgF+ZIbT^lC%EIm!))BIjSN%kJk z_tgs{@B^8Mkm(Da?;qD3aIr_{OmdW=CeBaf9zG0Bs~1I4fJ9Rm_a{vHxJ56(EVPlg z)c@a2Nf>(n?J;8(ZrwbJK%!e`%yM2T(MxIXaZqmI9WyJdZr-Q%b4S8u!+k({HiMQA z13Q0~fO>FDU%syiM^a8^E>ylhwknFzkBgrXE2sXD9H%65Fq|fVA`NT#+vj73&>n7y zQ+a8YgA)SC*{w2brgn7p2O}2gnw``!+E3BH66+Sf(m3F|*M|2_)%M*)gb9bBjf$Kg zLNOoG8J&6Iz`Ey~i6gj9ggx`F7s#rex=rhOguW`D-ZrzjPdF&L7mraC)4bE8i~X<= zPt2>Tdi#t3kx;vXx*bi;zkTSRQAQ9IouTgC5BY+J8gv9*rwV(a-Gdp%JmO=`*w zI-Xv|s{(E4SJKm^rL}vBk%Gh%KL?ga-5^=lf1(BeIAg174TiB*m0@vAIr$hjw{Oc! z=s=}MUExp^%mq_Us7uRp%asm5UPA79KKL_jGFqSU~0fPYcLQ z8Xr;%Um`bY(4-i{K^l{!NKp=!x$#qcbr%^i#Y7a$V60s$QKz30Q4hGFb*n6Ob;EsY ztF8rmXJ)YBW-8Lyn?klN*xv(59@^6X7rPhjBr}1S?4wX`i!{R-@&MF=b8W zO!bp~4;mS(#)&kPblSo?z!zK&^tKj5YoD8}%UR;ZfZ5RLpT~X>wSN1{KBMF^_aTCa z?Z?%_L^jJY@ofmRk!wS8smb=55|%C+qefb}-1BwH($v$RDsCwt{W}gc z$rZ%r=s~y8$Dypq^cDA~&~2}_5!qY`h#-4W(U8z+kv;M(Fjid(Zo?qZbMq&EwH}zA zyM9ww>4V6filso?kM)$_ATOaAdZBRS@n?YYoSL*ueGtI_Bf!ijgpR(Fb^m=*aZ0^e zgJQpb=2k$oS5t84)2v9mo#gA0n{IU21){fR4$?$_n&G6e;Z>*ubkZcVUuwGpXp7O7 z!U=dpPJiqp256sD5G!-?mX#f%Z*Y_?P1(a7I$g+d*xPPsZq(s1%OA4fN>bDbDdx@o zG}Y}0_HJgXFlXq4YgBX58B35Lc3yQ|A;M3RtXhyCN*>4;zFsOIE4$gHgVag?DQ)I3 zAQ$rxm{ok;-$^6zj!lGnVRK6lm}<@Zq^G?xaovH2*XUOMi2V`S-wG#XYrlLvm8r*;d4-v?vXpYYcB_{sOzLCE20^ zeAPsp%^lue+|J;v)uP+FLT1a6*5uK+ZKg_q`ZZUtx$CwR@Yv4>sq>e4dKJa5Z6sg= zjm}KwvD@1{P_^_g@JzF9TImSsWvMl1P*I#rdH}*=dv}O&5$yL%PO~s9eQHmcD{7p$ zeTZf}(XtGgS&=c0l&GEpVLG0+=LK2f0}1x^D*;8kWL?k@+Yl3+V^DUv>^Kdx@4eC% z?vXDs(m}PxoDG*1{qLbdts+)vR3peQdK%2&ta)JKew{&}Kdul?f*#^JNL8Tjm^_|J zKP*YN=SixKj=>{yp{~eh8ZsB*mrxvBO0L@vHw_maVoe_pHyzviaH5Y|5N*9@HNiMA zx-H4GzPPbC$Y<35CE_?YqV0=&l+JfyWNjZ=S-bP1HTlo-x(@0)Rda|H+s8HDR~BJ~&$&qs|=qjJW4fLhu9&}N6>k4ZCvUmt4m zwb7g~)#Cuy$iA3SsyV%A=?`4xZ}#Ov z65kRM9+}vES4uzi(SEKt6vhw$_*wMPYuN5%vTwwWC7Uh-7w*GJf3mBsiK}wVJ4($?0&uzMe}dovCNISZ#Ot z{p!IKUJ8%edu(l~sHiN`c9v;It2_nBQ7T>-tPipHTGoenXGg%Tw@DVjDOCepo-MS$z4z z`9h&EyOzw1EuSVYb!(?L+kaHZ#rg3zHeAiNA1n|V^5hn;SyB3yGe%WvdD{jk{B-;E z1WEKiJ*}yG{?9)hHzJ!MKGi?pP@p2eZu;`hlGe|ddE|@n2dEK~5+WibekYIA)vJ0f z|MXP`+*`D*>hTTYkB6qG!zedW`t=TJd4;+gaNFS@k=dn6p&q8Zs=!jsIM^zlt^61= z=w`~6bTW@(M}FS;P^>DZ5u~Q6%vUKA972rNM{_zKrVM|KK?rGJb1HKXxZHy*(F%m% zLUMfRR2HZKtGl7{iG#SP*q;O9SfLq zVbEIDDNCXLQ>#af9G#B|nB@zu>A(32WZZj{rZm$O5UBIJy7;@&jL0sXfIu;4J%%)_ zU-sJC6||X%TTfndC(@ZsU>l!&GrjuV#QYo4#aW9HwFD$ZvtRV~v|WsSX?Xd$1$lT} zZWlqEM-kI`fYt=JHEXIcsYK&s?1HQ?>!Rse+DLaUNn)L3u%5VLM{OR%8pu}^JakZW&H zZYwvQz{!5%V|nFk$*TV+3?~EW5oDhaxH6zu`d`$X2|GIW=<%tht-Z==Y4Do;1QE-dbt~2A`Wyr(1XR1b zbCs$^W9lbsk8ib%euN?jh&5z)K?=FqFEO5Ans95BTVuL8epW07AU2rIr(uW0%t*2x zQ9A+KtcRGzW##&v(hIU6_t05;FwHns5CX;yRzQsk=6pc9ZFG!88cJ!ch{z9G4uANmgxniT{2Y zzI)HW1v@kt2OJ}L(VM5n)L7;8buU9%-u590J&vkI1pU~398pYdL zjYf`^G&S`dR!5dAJrBFk0{lJ}ZVr~dX=+J1Zt}d;NmV3dmaFOp78I%@Ry0&GXV#YK zsq$g#$be(=(BhnjXFJpf+WL<9^-6mMywlebL^a?Y?5me$cH-qY1M84P0e!P8lZ1$d zqYJ^ z<<(*TR;$wb1#>*5OFpYNP5HKvjEFRd;5u`&Y@dn!*|5hlm)oe{RAP}7Zz}42$?D2SsYFI?&uuhIxR{j4sC#*H9w{`2X18)+la+IY1@&~m{>`+# znH4@nh-)1*F0H&wcvK=Q}d=eeLa=Nctysi}I5XHKiILt8An-&xpr}q0T5-Q~*jLSP z`coVqzsnH#6m}dOL8x&SbKi+;EsFnB#PJhzn;JR zq*c!6bE`fNX!&H{)X@D-lsUH}&!A^{@dsEZ2wg{KZSKiD{nh?eZ3x%dB8Leh0~R&s z3_&?@O@{Fi9s1@oB|9g(yYI{sB-pNB|M;5XcZsg5@-+n0|FBYxK_!jBok2x$Z?dIp zV?T;NzXhf5NY4WEN5&=R4@JX*Es?2@C6pzfUa61&LOO2|M$*(WP1IY&FMo$e4p30h z!5A+zS1SL}W`HiH#m22Wa3I|+<~k1;uqV-HQ;@X!6aRsblBm)L@J7|!4F2HpX(ZqDj2-u{2V1vA$l#3+539=ab20sdlmCvR8le`K{zRP$(WB=(u% z7eFNMA{iFwj=o=AJYC;6`aolMxgZfpe-L#>EIlokm8m2M5#H^>^NQ*n{65;j@vF6>mx~BF zAfJMJW)%OY1$Db7vv^ew8f#YrrjN}<_HJwjmGp*pM)KK zJ)@6fGZjYNG??1VC3av2`2#gP!3(Ok8XC+^wv}k2n#&5giquS}<{ZE&q7`O>V+Cpp z^x7bRh~<#l$>11d4e`&oW~)s}VaGL>LKpm%hvzDf^4Chr5|KeCC{6ZvF@$0WFs5b8 zf1sZFcR}?vXWQN%37OlWy(Fws$o6WQzurGvupW$DDVr4H=zUmlq{(oJJW6#pqt`Ir zrM%5U|EjUhx+!W#02{+Qz zmR3$6u-6r0hlf&Qm(J{^CB>1rI3gfpPdkLtj4Nudh)puyS^9n|l3hKKRZq=MJ_D)# zImzq5?JnkwbGBF*6gnT}5O)N>#Skf!3wco6Az`Q@9~P{6abNd!Fpw-~J)*Km!6_EQs4>jDk!U@@}^K|SH$utdmew&K%@5+Q;mle1(? zkoz~RdxdjOWCJpe_>f!QEP)=}k4`V@=XwVEbeayyXfnuk6ES{gh|R*=t;Oov7Pj0J z73wZLRfS!MHYmBa)0KMSuXR*YI=Y+V+mb?t)4Dpx*Ri7Ij3oWbFhryX3+)05#taJB z6N}n8#me@2bQ4>E3sErBMnDF5qBVE2^7~x}#L#2k4!O1+co%(cJ}N~15X_BPrWwpQ z&ndsy44Qf5GtXvoZ0mojd-)p&zC61)K0VjzwjVn_9-W-Le;$NYn5cnrO#=%|pPx_O zFWzgoHK@z2Nv02I`WY0zK}i!!$r7JhHh@aP6#Gu}t_BvW6_8&-Xw}HK7L!d5hG+Ix zSo>e({;iPB&C4sPUeB=^$3wQ7&f)hz7=2hVTu-&}B>tX-cfj|n@Ml+3O{tr`ZM&-0 z8nr)4RJWRD+ZXie-~%^z6}V}S?D;Xs#sBd1paWMo-JBuMCd}>eI++=}zi*iDZ7>q$ zdJ~KVjT&4YOZ|Me0}6ea&-g?D<0c2Y^qM%T2LQx$zW;On?+J8l|I(*1v z0x0@!#{bBv#^-_cp$0UDt4{*&&`m;$+O+a>Mk5L127V1$db8yDZMd}$4yc>|3wZ+l zjH?KNBO-Z7v9J~ORJ4@~dvaGoq8kPlXhB_6=4 zGYyiRL|I}gjc5Fbqac^&#X#_dp9qYcT?pM_&||$4^AnXY_~(rdwL+393(2d8;;R$c z3^tDPQy?>U{%`a*7wDhDI*h^(H{;LsxSw}gG`vi#@uxg(Xfo+&&7q~2#7!V|q<^I- zkevM!Miv5j(OV^nCtXi~N3Bh_#ETb}gkmVh0J`#1nY$zWsrm#LAD$^?d;;2+H8y4B z9rUIzpDeI?f8a@5CwSg74eY&XUjgd>l(?(EEj$H!dhS7QK~q2sR@9u(1FG_vx&x`D zFF@#LR+LX|v5EW6Rb;HA=W2ES&(}#wyStg0(50ddJs2L`_cb@E=@Vdc4$xw%jgynz zxMh}pb_UalN-@@{2{~A#V|EdCBK@K3=5mDw>yeAH(8`rs1wG3^ROl8$G*G$pg-}jR z3u#I6r)j36m7B09JE>FkfGP0;h9GEN$*sye0^eVG zkJ|da;ED`K4JT|vcuPCG&?vM-G;|KiHdX8jBw3 zmNU8o#$Ji)FS?Ergbe8wBZUhF)KK8s=&mZG#-uPqWzsfEy0SdXHLn3NmWn`R~sP96@Io*1{!iZy~K6H-6@MVB9JLR>BdVGC~*O> z%>)DMtZ1XNy28v^D;!{t+g z7#3uTO;gOS60;ujQn_zdJPx`=6<6!~#A`nnwrAp(MYhN>eA{Or**eIu5l`;L>eEh7 z{@PPOgTg<5rXC7M8#kb6@k^AmoxuEFXBPFCU=ZU(MI!5G0q5i1;NKDwW*aa9eIVY; z+DXoIT9avu`ta0!4f}QF;uO$f2^X^dyh6r9l~IrHLzZS$6|-kQ#d}Jqy;PFiKzma~ zP0wXk(p*v`X~5pzGZkgH@V}Tuq4V`l;qLBkbNX_LBG$h7X8nG^aw1$e9TU-cRT4h@ z#hTpw^47*;szH;hT#UA1nObf8p<5dSgL4dOI5LP-pIM8|$|9Ee$T}4lvtOHxuPZFV z&F^|+3e+)e8VBD(P<0T@n?;Vdwu~DC`R_qUgyC0@*Img2y6_`xFE)ahWhndNJ~TVo zqLG%5AA25`1+{>_9$W^?$>rs!^UIOBxMkn!-CPm`X_vr8lA}4_j78(82&Og?#=W*t zy)$xoNZwa8n6X-op=7~%lB2}3Vj;7oA7_0n&&1_sEg+d2k7Asae^FEIT0T}qL zRhuArEYto9963rmxGRhT|9FYt7CF@>-b@GDCBIKujBEdE6&uRR(uI=vya&m@oDj46 zS-Bm}JFxn^4ROMkM5s(E$7{qiY$2!FwvF{TNuY8h;FI)WbRKc|C|pa(l_74ags&NJ z948aHo<0yrsRB$>bGU%Qh$&_$puT!KNZYP8ST;729e*e1M2I#(#lrnwWX2~q1fA`% z5MKzjTD89JPmD;sG#MHf}F36*yFS+c|NDWu91Y?lDL2p z9&pTHD%R}jNV>%qdf6)rOCc_8oH~6)N5{is#@4Och(U*^lD?lE2e9U07L>l)=`*nU zyc#SKIYLWIta3O&DXma^JGKD9`3PHm()YIUTjZQcM(AJaRCR?W?3F8#RdIS-zQ|U< zsl|G)2oMrXPiJ52$O}B|4IYSd@DP3k?N!Kp`v%{*0{gv8<6?*XTqUCeu@s+Pn4R74 zdGzM8I&b;#u#qC1puNLyxk`V1c{%Gd$(=|Uovh5A+R7+~Y@|D5CYb`nRXVWX-UEG%V`O}d6gx_&RWgUi^oX_#Y! zZyNdIp4Axw)d72$hEguzr88*?+{U5?3(`+F@6hipOYThu4S#k?)bF(F54co=MFTor zz$jeVW`@WP6j@SoKd_foCV%7PlgP96ILnbY!a2vwtL<9!BD&_Q)}YqG-2gV3RT73Z z|IGZsRAnuRlS+FM|0m1*Gi*#RRbjb|ZgMx={th+3^K4uXgY}*4Y|k$Bnv-<2Dmg6z z@HcF})f|#)=MVhu3vsqlKu~q;Q!TJ0VhuPeWC7{nBt1Fo`z#LCPI-tdI!4+=4kW7h zdz7~Yvxx?>lI8Pq`b`V>JkO6|H$wDVdL0R zIk?&enKb-+I(hK%!|!(Hf5DGCWU-PYBrB6)Wg7f90KLK-oQpi3e>Rz`0W}x1xA5== zNB{TM#)DMLX~6Sq%cY>t>-lC)(A1-Yeg@M8jvY>)*wdq@gHBJxO%+~*%m_^h0Fu=% zJmh0}ity}mB5)PYmhCYR6D4}MAC;*|M{~IwO5XQnsmAH~DD+E}Ap@lK{aXo7>71PE zq;{i}C2g*L@nPD~@boXdW4lc7&$1 zH4C98>lc6FO%vn3oRuXqgjZvyRWtpIb1(%qSbhj=yO#L}i-vLz-^(CYhihBs&=4=* zK1$Yk3E)c@ce-XP5IEM%{X)OBj5#v_gkwyol{D1$`$c;uoX(P~Oq+sewR|JMDI``@ zJe>T^*m&xj(l&)VtUXEWLh|zWYif8ts8WMB< z^TDKz8WVB7UN<%;CVQHSBNN50U43`k$sL$fh|f>|lUygTt@>y6J4uYcZB=<8!{LhV zZiFLF-@@v&P6~fBHB-bv}T|uprMf9;<#m{fw2-Oq*y05dq`> zh3up7=!Brxo~(aS@wx=A2K$C7nLQZKm6YhI|78pJfCtpf-sbC*DGz(_ zEOA--xpcmRg0SlGRJDd4Oo;ijXK!7S!h|Y5&sBQ#G6IGWD=BesFcM5rzG90;ju`jd zN&WA>n2QI+ut;G5rS4KKqDjQN85EQ+;@YW4M5l3eNk$1A7`5>MZ zWXIPa4g$IRWI(=f^{i*x8|P1E1F_!>(5q>szJ0TDUo3{x(qhsUtRfXGN~@Zfa~)4F zFQk+yCVn=K5 z6!a%p*2x_I1S#)~m-Z*Kso~C%^Jas6jc*)2SU1|`;FM^CUZ79biLtMkZPBu?0yFm0 zLXO_Y?@>+6q2JIXy3miJMUXG~$UoMZm7jnu?)p;<6&TZyiap!JC(@7@N3Q~ww2Ndw z$}DN`{G%z%-oX_Rvwx|J9_yWeH)29<36v`ZqrAH*@DM+kbnRTug)vB3e30W1Ta0_PbF$m6_qm&c%v6x_!EI&iotsmP0eN_5 zDNHd3yRBHhu=-(sRzsa2BbBSQlSJ(r_nVsIShmEp6)DZgtH}vu${B-u+TqM z@QriH%N!%-cRlZ)Wz$@tV4j`aY#X{=rOYEJow zF{6JS!A>ESw}NBT8PX8v)*vWEMvyh;BrV(?MW!-`UiKW2dY7VqGoK*Iwpe}490IK6 zpc3+3abvDwTV8Sz3WR_x50H!f+Xm-pE3x0&OpZ)`U%)4ZqNn=V`Yj}~C1?I7EtTJ; zmvr09cJM0GXQ+z-r6F}JICqk$=X1bIL`$FV@fZ88?P@qrS4P-}@DyL5oblCcV{TcZ zlVo2xXFnK*`)T=cvG=&uHL7^DlGiInNG7K;S}dc(s^!h}sPb6d@W|0rx(?lKK1O7y ziv7Cl0?{PPm*|u-{8`J)yYXL{3JEzCXmu3(PckC-I#Kn{sCbk1DZhU3%6r?Fi1ap8 zBxQuWsAH!mf|ypO)K}sdD37HOCQ(X)Sg!78Kjoc%F#MXR{{Rm#od#1)f~Ld8&yZZV zx4SU$OS?|vMjXLfS=GDSfUsgb0m;nvFbG0O`U5gOgJGc3v@>n>Ng54<9x{zezq_C3 zjvkR^bm1#mfg9Tgu{OF}ZFBlj2 zpuZZsxKNh3O|H@3(RY@%q3;i!rO#5=h}D?%oldO2buVO~C-#W_d({+kxSEZvz{sgL z#5RP1M}K^@mkXf^>2hMQG@i=RRCx7!!Az?w-&$hcl{3bmAP^;7@6j--@wtGAhV#?` zj1aKy^0wY#zNER37sIZPbzJ*pUe}vSjt~}Q+-_a*{7jZ$IVa5`rN5Zrbs39+_XS5x zzEm?0@6~E^TSo=sMBi&CfW-)(kbsbcn1saQ4JXzjQtO#IvAn5)h0U8joe@#>CY3?c zVVBADhE;{9SREp626PDv3ma@25MNX=$C)wX#~D0&;umuJ1f*Zr47nd?DXh1aZhb`|EY^>Rwkp+t1r< zCWh#t9_UT$HjJZ%Gpw9Ei?QUI_1jYIY{r@N*92Sb<(!=ckGvj}nx=&(ymt?mr@ z+|CD2fG3!(I4be(H9`8#(sa|fnM!e=9NQ&A;HyA%QMQVCk z@Zo0WjQ&xV&PnwKmHz~jtlHw1Yb?VoJx!iH>pPc4{r-Lmt#Zyry^lmmM|_#TI{oq4 ziG!2f5lO2S@F0~j?a)4DC|3qm_2QYRGE<^#0A&C3fvcM6SxSpfA@n`U^xL=eMqvAD z8Qw9ZkU1pPJg8Y|vtmWL5OlsSC)Q7{3fzi@b@%YNzjycaYMeTZ#gXX{D)SvYbB@9d zPNpi%RP^0!=N1;;G;J8TlUwZ_Jq7|Z%|=wv;sMxzj!fjATI$h~URL@l+S*oD9S%NQ zBZz{1bepk|EiSBpALe1!Z8`EZy3-K$x#L=6VNFdaXlZ6Rxd>w>ZFtLOnZ$a+_W0Tx}lb+nK-vsUl28#sV`Q5%U~rvCN*Ak zv$I3?B30%oPO--Tl&V#y>W*4(#O|9dKpf8$&LdV7c9Qr0@VNym7VH>{o~~1grFL^3 z&E-nKcFxqV6fHM(fs{sVW}{>ibl5mME~2jG^g~G0qwBsoyKACjhy=wu>k#rE2)PAD zNok~RHQnNtZ2ZntkXNrxF!}VT`VCy`|B~D-vOGmxiBrX_tEC$LQ^OM<-hf5hwXGi_ zI?Ut<2c0ew@EB5>nY{qmQ>MKGK^l_`nD^Z)0IzUr6IfpbH_x#Tlr0@XgjvLJxReEq zR*)Ei$Dxo>(43^e*y@`S(Mp}m=g)v;(9+mxva;3Z5&nSJjZ5J-+Tl_%A+Fcn|5gQ} z-ViQO^7gzDGIql3e5USA21EMQaGT}szGB#3gO@gyXML+tMJxLr%WPQ3xHSmiq#aud zD-RO~1~_2Gp-0A8SNs=J!?;zWC&W||019iYR+{uK2CcSE;XTD{Hlk#grMlIz{#50v z`$}{=_*PK9eq>o3+4O!$*N3LXg z;7Kn_0x73;FzA?AMkHZgT#I3@&X0XskO)wvcop(LOkth=rKd`vALiw;YEWO`mrk5g zobhaGDaKTr<`*k~6r$^?P56v5_E(H9I4;dgq=;1Qnz#M7JYO9lW`nKoL=H6`?(RJ) zdp2J4Z@MuF%w=VHZQLa_~qrEq=7$^=x4#@aAOfhN>`B!I#$o&|~)2obA+RbFs!P zOl;VP``5*A>uif_ru74x5MZOhYG(h7{n)RZ1*;h)xrJL)@;}Zi`)6Ht zbra9v>4fIA&_u}k?l8a8b~AV_SKG+zV!B&| zXR-bap{9Y4YtZe7D*+8H@`y^#TFX`MzKW2`&JOu-pn~3i2bd9x%sI*=Z zZTCi>%2wZoIF&CpLUv^>JVhVE7B_PT{bQ+;l{P&;0f3qxZJf0hN#HSG@ot2me3pmZ zw}uj1qb4jUcnrV$EIzwhQ$^PiuFv#%1wGPa{+M|{qWrbXFKH_yj6M_DZUw<}L73L&4=U!3n8TK5oj_^AG2G3`aTHs~(8n*IO)Jgc z6F&guC+U4RY76CsP~|BwLR;<)4CxU|5l12&dg{5lUp4m&n_=8Fv$+y!j7K7EZ*&<0 zm3an-zKj&=^Tzj@f@nq?TuSS7tZ?EG zIUPH^)9;X&{t~4g)ftoN0Z=w^l>_cyJjze?p(3+v?Pz>Yv=;-2gH4pQz2S!X2ogNO zeDPPwOTzIucyV-9Q}O12WRjDTZVHhp?f-^-6o=DmUE~N^db|(DV$q3~oPWss3j!o7 zr8{6u&Pks(V_lySm9_oJj=GABiX41T#u#I`h7Y2UBaYO9H5ji!_=zXXoV1&iw3YX` zjB7+U=&_Mk{m4wTJfjFMEoGUW#^qE}B3U7TVc?RW0(^f{S`DjPw`cA!9lCvd ztt6<^afKxPAZ7!I*WZOg+tpr0G&G7a>pIUOQ&avj#sY@59sH`4&BIgYN-&TWHV~%ijDs!)EcJ@w64QQTZsv|Q(`=`i!uH3c=N-Fi6-GDpg4)&i z=jZ3Pc6W{JWybAoE6q8U!`^kSDfF_9+%5K?TF-}=Y=}g?Q)spwbUk+^{5(24DiwLN zZSSk9`Xri{HfF8`K{QNh3c_VPHdwBOaj=MFD~*2USCc!wa&Wq`-|qA=V=x2{*COK{T<*V-|Q`?L6ZZn4&P$->fBd%#(Qpi|JN6__N~Fiv$mQlI0#9DThy^A{yv!@pT8oxW42nhqDu z19!JVHh}8oapz?+OTycQ|3bW?RQUSjKBBgx+5?G8p4%+gLK-l`Uap%|^6gaA-4>-ugGc zMCytz4#`@~A}|BKJhj`%!oU<_u@o>B{S6Wk{!JC^RI!*hIlJTET8WSv)=7MAMPrl( zf{bwE9 zRg7A>G;fO;a)4w>J`aY`CfrXNN4ofHQy$YnpKl0tGRoOHEFPLpnEVaTW9os~sv;e( znmho9)G}t&D*S(Ti7xaKUeszl_92Sf(wHaSbZJPamUOH2>5ZXAxB4$b&Ku=I7RrYW zc@X*5o9(=x#yiur7M2S8%44_JkA_Ma2DLSy zMM2WHoGa_uQ44q;r=&o3iwg3jUhO++{%Am0PvWQ`Pa1o?YE>+1}R&CMHJAIMX_VGMj49 zFi_Ai+{VY-NLA)yy|9rt8i=R@lndP-FSG%^2574o#DouW{$)uct*4Y;kG_ zAD%gO-@L{XEqgV#lq@8w?wjAK`dfq_N0ilku1{p|lv|%J$zIRO*3S~2IZS9?zS?+# zfVC;ZW6TgvZti((Y{%JbTT4fj%eR^++`iS#+YqfSM1#_C$uE=TeN;q{!iDzFKxzdV zbj50jH?A6O=W=XM?v3_(J%>`fMnMY?D-gJPNmVg@=Dp{qA?!qz!4 z;7^n%&Uekg^L52a6nwN#{t4C#$5XY##-nr5Chw7+}RUa0B)C}ZZ zR6W$i2T{{8M^fx_@=lZQ?w#Q7D{NHb>#~tE;808baV7KyqzKG&iJHd1%X}``9o}sp z(|~>W^AJiUTBA$$qRQQQWUP+wvl>l;w~cL4pSEAR-x&7d#~x*t2Or0knPD7VH4n>w z3vlq@%3jpDxTu5UQ)QP&aSSs6fROPo2u;xrAWw>u=%3NtBoBD?d4_CtpSSf>J|xP% zBvt$v9jeJnK%q$r;yr~@o=VG2sxd^Inmo+g>auz$FRsu=r&{#o&iqCV^P6b7#?En^ z%APS-(fNYU)G&DJRnEy?-hN%4y2`Y0c5|uA@!}Lbk@?%sOX~-0m_lOh0_)B8TizE)jU3F){hMErdVX@JoTp{^+TA-508 zR2L;Bkn-FJ)>MVi9>d%bY1G(jB%T+b&Cmvqo}crhvlsJ@b?4+`5!D|D6*`czPUVKH zpWQ^PQwMlDW2@QhO<*U7>&7Ztd&o4Jy=SqEa|O^W$1(P0gU*#EQMs=^xH&yN7XmKF z!rE66d6GS&VqR z&|*Pek*lO>)d|ZFc3R!H;FfLA3CK&7rAA}W43ibUP)BXFV`D03yTSP*>+(9{v}#A{ zTMNdhPOYu3w)Ro{MU_LGTumwit#TeSHsib9DFvD7iP(LV+6t)*baQ#L!(2l1IqHf* zz}Xb9VV9Yoem3)RkKCNOh$g^kmNEE6VPNFnT7ZA;xA-?ZQ6fp8PMy54HTmlJ&^^;7 zloAs;?~y}Ysvy_*BVB|c2pIw^)JEeLf$Ki!XR`q>73A1?4wSQuvyr~N;1X^=M>_=wI^j1>7t+p4a2m*OJT@fq{nY&i^$WFF~dub z-bt{+yG>kQKT8XRMZej7XA(5GJ4Zi;=@$%zdFE;b%l zh{DEhNJvORLO_uD;|CKia#d9o3`~Fm9GtJOK4)V8~QLe*6y7#UVnX75bZ0SEw>tGP{-$&}v5X7GWDW3f$ zfcC75{UtsM|Glrn2{PlfDTWrSW-wW%uwF4!io;?J@NiYkAT{9Na6g43P3~H~&F>4= z_7`eM$r1yG;pw@hb&wNQzx?CxVs7v1%8)Ukq@vQ$HpOvDdVFzlaS6#0?q9Oc$**@% zD>OT7+Uw$;wFJFAu|n>G6d>#J3H5dII?Vd4(`9_lp+jvaFjl(IHd*Q@JS%`X1W?OcgZN| zaw|BI)^>wwa7g@m>NYvbxC&E>J zbV&4(c0gK^N@A6hMMXUh=c#BXCS7*C1YGEmx1}1i&SJz7@E8ehJ;X9yP9Zvwb-QFQ z$9YMxQ`KkqGT|UB@vwR105!tl(jwsI;obAWTd^B%|Fj~03FnqI2b|u&(1mN48hxFd$b?S-|itB)`a0z6&{l>3pw7HUK#2D#Yn`tf2! ztts(3*Ve;j)$26){Vw}QkB=uOQEaAknxCeUHTvBm937{t^*de{frX!>Mep=xSI;W_ zb-!Ofl%^=^RA@16H@f_8Z?c=GS7-_5X3FsTPAoVb!-%cG0_GUlogA$FV3lw1rvWwq z1e&wdr^=KsX2N!63({@pSz%uv9GJ6Yc;z6OndI&Af>&TBHh zmbI4%Y}mEd)Eq(jO9Onu9yTsQ?AAmU(v82Hb~EK^p@NXPg`OJLl>0|KJqo6|!8o^r zt20D^tzY$qQfOt#VS%|$`c4^FQyh0*!W6+m=f09!d0c))=7VnGMfOS-q2P!2T404vb0R* zMgIbf5Rwp@x=op6zo57X(OVCT(5ACq^gL!&IJSX@sTE$c=W~R$&+lH`I7^jt`F-{d zfGJkPBO`7N{KF!ghgnMf)t8Umf3}Jh;I(QDg!x)4OIrpGU-9itlBSZEDztE8i_J!q z&$rx+t-Xu-A36txyo#Mfz8Z}m5El*d!XnT3Ho5OVFlsY7IgA}&)_eeb&d&Ui^&@vm z^E0mzU5z4c$J| z;9RaB{%wFYX$TX__64y?+0Zwk6TeryyMB+*l8oYS`Us6tS+bt0Ey9V#9ub~@THT8a zomO6_ji?rCa&r$yhFIWoU%ai8`AhcYWtI#OgU+@z-ok#qm#Qih^71TU3O(byXu0v* zrZ-WLbnG12VfOdUN=~jn3GGLjUcPKxbG6orjrFSv226&pD@ zy~jGmPF47;GE8{5>+0G^4Vt{(c)KyA37XsGRh&keEWa$mKG*z&3mV5%G-~&(s%c? zOT^P7zfOKaIs5yY_5b;UT{waf#lGdMFceGYl&-c0t|u>4rM_pFNvzW4x&SAnkL&9z zBOXM)78dU3_>KAVSEjftD;P_M92Be{k7;sw7^`b8cuFl1O_Mv8mBoCqroBlXF6q9) z4OQ^WxlgHJ4F&I|DqsabmAzP(LbLNbm0~R?d;9)vLV;?5{=})NsXD)@6-VB-&G~&V zr{$KM!opxF-cR|}e205>^EKH1UEf}`ro|HnTut4ThhqgFvaW(7}iPL2|c>hCizROwb2NPC!C z*jO~M2k!JXLb$jDbVI+m57M7-JT|4~{>CPy^%8mqK&}RWGuNWKqfHLsv&Y>^ zIxhSP9!7(voMvbtIZj*MBF~lM$b$fqT01Bs8S(T zC9pd_JJKIAIvQM{GO=>Hxj$3(DX~O>_N*_mf8cL$IA#+B#0&}Gg~{_glMgp6j#8d` zK%l%A=1*IrywknAxUPOE29y-ec(&V@qMXr7*^>D&BtMV#6 zYZ!AJxl}wEB>1X1)9u?RH;oQFaKUjYQ-6sj=`mfiC~{KMzx^W9pD>^QH#HM~NS>9| zEIu>ag*4B)?VAUt+SEpE2c8wk1jmIsmXH|%N=DOEfP~j&Gu;1L;wlhvUQ9S4Acl|) zEiTaF*R(nh6kq7rv6dNpBK8;mv|`D9ZF0`gsd05g!sM{sTlD|9fcc4uwD$wNYIU_j zt>^jmu`w}{mG<6^8mGzN(h)82zFtNA-59U$pp1G#u8d8xYH9vlNap*(Y`w66TN25O zNdf;W04?-KM%M7~mgHrsYKKODX4*i1ew1WH5s(`Tfd7Lp9)s_wv3YUQkx{mJYhIzv z>>A_nnT45!^uf)~?WM(_EJ}&KP!XKgPb6eu)3tazw_#V#>PbRjg!(7;-4jvV3z@W8L=y!0Phcf0DI)k@t0LOFxAlOq$ z9VyqF^U)(IJg3Hs9*4T_I!9e_z}T1N<&mSKx-EyOgmE?IK*(3|(Qmfug⋙?xdEM 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%0AEGQ^DBn9~aA)j@R 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