From 1c61aadb22268992b6c8b5c54f7acae9b98595f6 Mon Sep 17 00:00:00 2001 From: Nils Pukropp Date: Sat, 3 Oct 2026 05:23:26 +0200 Subject: [PATCH] feat(android): a history page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit History sits second in the navigation, as on the desktop: every played episode, newest first, under Today, Yesterday, a weekday or a date. The still plays the episode, the text opens its title, and the cross takes it off the page — forgetting its position and watched mark — with Undo. The list is the desktop's Library::history rule over the records the library already holds, so no bridge call is added; HistoryTest pins the rule and the day headings. --- .../io/narl/protonstream/ui/AppViewModel.kt | 13 ++ .../io/narl/protonstream/ui/HistoryScreen.kt | 178 ++++++++++++++++++ .../narl/protonstream/ui/ProtonStreamApp.kt | 13 ++ .../io/narl/protonstream/ui/HistoryTest.kt | 55 ++++++ .../io/narl/protonstream/ui/ScreenshotTest.kt | 16 +- .../src/test/screenshots/history-phone.png | Bin 0 -> 62513 bytes docs/TESTING.md | 2 +- 7 files changed, 275 insertions(+), 2 deletions(-) create mode 100644 android/app/src/main/java/io/narl/protonstream/ui/HistoryScreen.kt create mode 100644 android/app/src/test/java/io/narl/protonstream/ui/HistoryTest.kt create mode 100644 android/app/src/test/screenshots/history-phone.png diff --git a/android/app/src/main/java/io/narl/protonstream/ui/AppViewModel.kt b/android/app/src/main/java/io/narl/protonstream/ui/AppViewModel.kt index 38302e6..eb9bc80 100644 --- a/android/app/src/main/java/io/narl/protonstream/ui/AppViewModel.kt +++ b/android/app/src/main/java/io/narl/protonstream/ui/AppViewModel.kt @@ -231,6 +231,19 @@ class AppViewModel(context: Context, private val workManager: WorkManager) : Vie } } + /** + * Off the history page: the position and the watched mark both go, which + * is "never played", with an Undo. + */ + fun removeFromHistory(title: TitleRecord, episode: EpisodeRecord) { + changeWatch( + listOf(episode), + "${episode.label} of ${title.canonicalName ?: title.name} removed from history", + ) { engine, target, before -> + engine.saveWatchState(target.shareId, target.linkId, 0.0, before?.durationSecs, false) + } + } + /** Put back what the last undoable change replaced. */ fun undo() { val snapshots = mutableState.value.undo ?: return diff --git a/android/app/src/main/java/io/narl/protonstream/ui/HistoryScreen.kt b/android/app/src/main/java/io/narl/protonstream/ui/HistoryScreen.kt new file mode 100644 index 0000000..584f022 --- /dev/null +++ b/android/app/src/main/java/io/narl/protonstream/ui/HistoryScreen.kt @@ -0,0 +1,178 @@ +package io.narl.protonstream.ui + +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Close +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import io.narl.protonstream.ui.theme.AccentProgress +import java.time.Instant +import java.time.LocalDate +import java.time.ZoneId +import java.time.format.DateTimeFormatter +import java.time.format.TextStyle +import java.util.Locale +import uniffi.pstr_android.EpisodeRecord +import uniffi.pstr_android.SeasonRecord +import uniffi.pstr_android.TitleRecord + +/** One played episode, with the title it belongs to and its place in that title's playlist. */ +internal data class Played(val title: TitleRecord, val episode: EpisodeRecord, val index: Int) + +/** + * Every episode that has been started or finished, newest first — the + * desktop's `Library::history`, over the records the library already holds. + * + * A row marked unwatched again sits at position zero, which is "never played" + * for every purpose here, so it is left out. Progress stands in for the + * position: it is non-zero exactly when the position is. + */ +internal fun history(titles: List): List = + titles.flatMap { title -> + title.seasons.flatMap(SeasonRecord::episodes).withIndex() + .filter { (_, episode) -> episode.watched || (episode.progress ?: 0.0) > 0.0 } + .map { (index, episode) -> Played(title, episode, index) } + }.sortedByDescending { it.episode.lastPlayed } + +/** + * "Today", "Yesterday", a weekday within the last week, then a date — how the + * history page heads each day. + */ +internal fun dayHeading(day: LocalDate, today: LocalDate, locale: Locale = Locale.getDefault()): String = when { + day == today -> "Today" + day == today.minusDays(1) -> "Yesterday" + day.isAfter(today.minusDays(7)) -> day.dayOfWeek.getDisplayName(TextStyle.FULL, locale) + day.year == today.year -> day.format(DateTimeFormatter.ofPattern("d MMMM", locale)) + else -> day.format(DateTimeFormatter.ofPattern("d MMMM yyyy", locale)) +} + +@Composable +internal fun HistoryScreen( + state: AppUiState, + onPlay: (TitleRecord, Int) -> Unit, + onTitle: (TitleRecord) -> Unit, + onRemove: (TitleRecord, EpisodeRecord) -> Unit, + padding: PaddingValues, + zone: ZoneId = remember { ZoneId.systemDefault() }, + today: LocalDate = LocalDate.now(zone), +) { + val days = remember(state.titles) { + history(state.titles).groupBy { Instant.ofEpochSecond(it.episode.lastPlayed).atZone(zone).toLocalDate() } + } + if (days.isEmpty()) { + Box(Modifier.fillMaxSize().padding(padding)) { + EmptyState("Nothing watched yet", "Episodes you play show up here, newest first.") + } + return + } + LazyColumn(Modifier.fillMaxSize().padding(padding), contentPadding = PaddingValues(bottom = 24.dp)) { + days.forEach { (day, played) -> + item(key = "day/$day") { + Text( + dayHeading(day, today), + style = MaterialTheme.typography.titleSmall, + color = MaterialTheme.colorScheme.primary, + modifier = Modifier.padding(start = 16.dp, end = 16.dp, top = 20.dp, bottom = 4.dp), + ) + } + items(played, key = { "${it.episode.shareId}/${it.episode.linkId}" }) { entry -> + HistoryRow( + entry, + onPlay = { onPlay(entry.title, entry.index) }, + onTitle = { onTitle(entry.title) }, + onRemove = { onRemove(entry.title, entry.episode) }, + ) + } + } + } +} + +/** + * The still plays the episode, the text opens its title, and the cross takes + * it off the page — the same three targets the desktop row has. + */ +@Composable +private fun HistoryRow(entry: Played, onPlay: () -> Unit, onTitle: () -> Unit, onRemove: () -> Unit) { + val episode = entry.episode + Row( + Modifier.fillMaxWidth().padding(start = 16.dp, end = 4.dp, top = 6.dp, bottom = 6.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + Modifier + .width(128.dp) + .aspectRatio(16f / 9f) + .clip(MaterialTheme.shapes.small) + .clickable(onClick = onPlay), + ) { + RemoteArtwork( + episode.stillUrl ?: entry.title.backdropUrl, + episode.label, + Modifier.fillMaxSize(), + fallback = episode.thumbnailSource, + ) + episode.progress?.takeIf { !episode.watched }?.let { progress -> + AccentProgress( + progress = { progress.toFloat().coerceIn(0f, 1f) }, + modifier = Modifier.fillMaxWidth().align(Alignment.BottomCenter), + ) + } + } + Column(Modifier.weight(1f).clickable(onClick = onTitle).padding(horizontal = 12.dp, vertical = 4.dp)) { + Text( + entry.title.canonicalName ?: entry.title.name, + style = MaterialTheme.typography.titleSmall, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + Text( + episode.providerName?.let { "${episode.label} · $it" } ?: episode.label, + style = MaterialTheme.typography.bodySmall, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + Text( + if (episode.watched) "Finished" else episode.stoppedAt(), + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant, + ) + } + IconButton(onClick = onRemove) { + Icon(Icons.Default.Close, contentDescription = "Remove from history") + } + } +} + +/** "Stopped at 12:04 of 23:40", or as much of it as is known. */ +private fun EpisodeRecord.stoppedAt(): String { + val at = resumeAt ?: return "Started" + val duration = progress?.takeIf { it > 0.0 }?.let { at / it } + return "Stopped at ${clock(at)}" + (duration?.let { " of ${clock(it)}" } ?: "") +} + +private fun clock(seconds: Double): String { + val total = seconds.toInt().coerceAtLeast(0) + val hours = total / 3_600 + return if (hours > 0) "%d:%02d:%02d".format(hours, total % 3_600 / 60, total % 60) + else "%d:%02d".format(total / 60, total % 60) +} diff --git a/android/app/src/main/java/io/narl/protonstream/ui/ProtonStreamApp.kt b/android/app/src/main/java/io/narl/protonstream/ui/ProtonStreamApp.kt index 006cef1..05b89a4 100644 --- a/android/app/src/main/java/io/narl/protonstream/ui/ProtonStreamApp.kt +++ b/android/app/src/main/java/io/narl/protonstream/ui/ProtonStreamApp.kt @@ -33,6 +33,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.VideoLibrary import androidx.compose.material.icons.filled.Share import androidx.compose.material.icons.filled.Download +import androidx.compose.material.icons.filled.History import androidx.compose.material.icons.filled.Settings import androidx.compose.material.icons.filled.Refresh import androidx.compose.material.icons.filled.Close @@ -79,6 +80,7 @@ private data class PlayRequest( private enum class Destination(val label: String, val icon: ImageVector) { Library("Library", Icons.Default.VideoLibrary), + History("History", Icons.Default.History), Shares("Shares", Icons.Default.Share), Downloads("Downloads", Icons.Default.Download), Settings("Settings", Icons.Default.Settings), @@ -239,6 +241,17 @@ fun ProtonStreamApp( onShareLinkTaken, body, ) + Destination.History -> HistoryScreen( + state, + { title, index -> + playingTitleKey = title.key + playingIndex = index + playerMinimized = false + }, + { destination = Destination.Library; selectedTitleKey = it.key }, + model::removeFromHistory, + body, + ) Destination.Downloads -> DownloadsScreen( state, model::removeOffline, diff --git a/android/app/src/test/java/io/narl/protonstream/ui/HistoryTest.kt b/android/app/src/test/java/io/narl/protonstream/ui/HistoryTest.kt new file mode 100644 index 0000000..5ee790f --- /dev/null +++ b/android/app/src/test/java/io/narl/protonstream/ui/HistoryTest.kt @@ -0,0 +1,55 @@ +package io.narl.protonstream.ui + +import java.time.LocalDate +import java.util.Locale +import org.junit.Assert.assertEquals +import org.junit.Test +import uniffi.pstr_android.EpisodeRecord +import uniffi.pstr_android.SeasonRecord +import uniffi.pstr_android.TitleRecord +import uniffi.pstr_android.TitleType + +class HistoryTest { + private fun episode(link: String, watched: Boolean, progress: Double?, lastPlayed: Long) = EpisodeRecord( + shareId = "s", volumeId = "v", linkId = link, name = "$link.mkv", label = link, detail = "$link.mkv", + season = 1u, number = null, size = null, progress = progress, resumeAt = progress?.let { it * 1000 }, + watched = watched, offline = false, providerName = null, providerOverview = null, stillUrl = null, + airDate = null, lastPlayed = lastPlayed, + ) + + private fun title(key: String, vararg episodes: EpisodeRecord) = TitleRecord( + key = key, name = key, year = null, kind = TitleType.SERIES, watchedCount = 0uL, + episodeCount = episodes.size.toULong(), canonicalName = null, originalName = null, overview = null, + metadataProvider = null, metadataId = null, metadataYear = null, metadataKind = null, posterUrl = null, + backdropUrl = null, rating = null, genres = emptyList(), providerEpisodeCount = null, externalUrl = null, + manualMatch = false, seasons = listOf(SeasonRecord(1u, "Season 1", episodes.toList())), + ) + + @Test + fun `history is every started or finished episode, newest first, across titles`() { + val titles = listOf( + title( + "a", + episode("a1", watched = true, progress = 1.0, lastPlayed = 30), + // Marked unwatched again: a row at zero, which is not a play. + episode("a2", watched = false, progress = 0.0, lastPlayed = 40), + episode("a3", watched = false, progress = null, lastPlayed = 0), + ), + title("b", episode("b1", watched = false, progress = 0.4, lastPlayed = 50)), + ) + val played = history(titles) + assertEquals(listOf("b1", "a1"), played.map { it.episode.linkId }) + assertEquals(0, played.last().index) + } + + @Test + fun `days are headed relative to today, then by date`() { + val today = LocalDate.of(2026, 10, 3) // a Saturday + val english = Locale.ENGLISH + assertEquals("Today", dayHeading(today, today, english)) + assertEquals("Yesterday", dayHeading(today.minusDays(1), today, english)) + assertEquals("Monday", dayHeading(LocalDate.of(2026, 9, 28), today, english)) + assertEquals("26 September", dayHeading(LocalDate.of(2026, 9, 26), today, english)) + assertEquals("3 October 2025", dayHeading(LocalDate.of(2025, 10, 3), today, english)) + } +} diff --git a/android/app/src/test/java/io/narl/protonstream/ui/ScreenshotTest.kt b/android/app/src/test/java/io/narl/protonstream/ui/ScreenshotTest.kt index 8e8675c..0928476 100644 --- a/android/app/src/test/java/io/narl/protonstream/ui/ScreenshotTest.kt +++ b/android/app/src/test/java/io/narl/protonstream/ui/ScreenshotTest.kt @@ -14,6 +14,8 @@ import androidx.work.testing.WorkManagerTestInitHelper import com.github.takahirom.roborazzi.RobolectricDeviceQualifiers import com.github.takahirom.roborazzi.captureRoboImage import io.narl.protonstream.ui.theme.ProtonStreamTheme +import java.time.LocalDate +import java.time.ZoneOffset import org.junit.Before import org.junit.Rule import org.junit.Test @@ -98,6 +100,13 @@ class ScreenshotTest { SettingsScreen(LIBRARY, { _, _, _, _ -> }, {}, {}, {}, PaddingValues()) } + @Test + fun `the history page`() = capture("history-phone") { + // Fixed day and zone: "Today" and "Yesterday" are relative, and an + // image that changes with the date is no baseline. + HistoryScreen(LIBRARY, { _, _ -> }, {}, { _, _ -> }, PaddingValues(), ZoneOffset.UTC, LocalDate.of(2026, 9, 21)) + } + @Test fun `the downloads page with nothing offline`() = capture("downloads-empty") { DownloadsScreen(LIBRARY, {}, {}, {}, {}, PaddingValues()) @@ -129,7 +138,12 @@ class ScreenshotTest { providerOverview = null, stillUrl = null, airDate = null, - lastPlayed = if (progress != null) 1_790_000_000L else 0L, + // 2026-09-21 for the part-watched one, the day before for the rest. + lastPlayed = when { + progress != null -> 1_790_000_000L + watched -> 1_789_900_000L - number.toLong() * 600 + else -> 0L + }, ) fun title(key: String, name: String, seasons: List, overview: String? = null) = TitleRecord( diff --git a/android/app/src/test/screenshots/history-phone.png b/android/app/src/test/screenshots/history-phone.png new file mode 100644 index 0000000000000000000000000000000000000000..85d324ea4a8042e3076bf6be36d6fd023e6a3af6 GIT binary patch literal 62513 zcmeFYc|6qZ7eB1Kq(~}KjZmp5p)x~gP(<0c$WD@dUxvXDMat4*$-WHP&DeKyizxdx zW-Mbu48zRWw_*G~-1q(6UeBM;AJ6M~p8lG~XRhly=Q`(o&ikD63D?q4W@iPlGBGi+ zKY6UE!^Ct%f{E$4`LUzGH=%of@G&t3F+EXypyy+@K-j>X#b)g7^~kvjsC>>3K7S(ArUS>V{Lu`MrW(rBXV?XQnWbj#LUTaIs7e!q)u)SL5jW2k=2$4q~E}!TPHzaGE z0(^Tcy9~>Q7T_<_%51vl!$?*gsSpPm)UUf5=cm6F$iMZ&Y=3tqrc2R`w7nw-ALY$X zIUaln8oPo&_`p>22z}__llyy%!v`OJb2t6<8a`Fh0U_@ZnO`F+eWhpS<(w z|9_!*)VmfS^WmZf*zlI;dPZ_C=0dnI3@}O{Hhm>wEnDV0w8nGf(Uq z-a+fiv3ry04#9VQAO5|Z-4P!3sK0D6sQ;Km;>EwsG5fS*OrHnpaA!;tDd{XH{~ep2 zos?l|TH4Hx)Sl%K@Af-G&qY$#Vn8$`aif`t0)@c&Ex98a2a>&KRcC^w0*9wjGpiR| zz95wXM;3_m-f9zQQ)v4|_dk`&UW^@{iD)LiBah$Tp!Efc@$RvUPXvjpqqr2 z?pk})2<>&c+Kt0-b@c@YIhK7hV~UhVPYjo-x_IndCY}rqalf5*S|7;u1Ju;&?4dN4Y&*Mwci00A%=z&p`fBnAJmU9k-INnqTiZGBDRIQE z=Neh`oa5m0$wM~R$k^8zhzngE6LC-GBcDg|xjxS zkuDpSbZv_7b`psJEzyLiU<)k8&vkA&m{8w_6tlNiHyeQ?a$p<%!aom|-Zvn^n1w*m zl3Dnuu)qn4#V)2 z8~K?KhB;UCWzyLkGA+2Y4#3>;^#cS**9I(P6g=PTlV%i_X-j2Y(?io8Ag5t;sWQeX z7h|7A8{Ks=r+#J0rzb954_HlBOo$7bpuZe>HQK36@4n*)x}%&mxyNWewNf09NoGdU z)CMUmrxJ-%3kjI_RRyHCGq}b1CF~hTAucJa)={_N8UdHcD!Xhh`VQbjgoWX3Shd`N za@ZfDOOinI-f3~uW-LdnRr-2QZa_8&^balGlF3>G!UpL4pmzJ5`1s@f9d_Xn8jd*s za|m9$uP4WiD$R%y8S!n_l6(wAJvp3b-2%zN&svv^tPHs;`i?{kEGVb%s?=7_0A{?%Y{#J48RYOiv zLml52ALqUCFlPEer0acrgr~$ge1aRK-&bcmjfH+aAuG28PmCE5DUUEt)ef zUu}zOkSoDFJY3|Sd0YxBlNs3Krj2?F1O>Gi-9PV??|nB~<&O_jAf)N-1|G(`v*^k~gqNEO3}^v243j~H>uHoQx9 za62`Hi7$r-0I||R^vg;-A#EcNnJT!BQGEkGI1czsQ>YC}G$43O@TPXNS;K{$T7MA2 zy>-HcnI7-{;}B2Rt6lD^sj6(3YN^A-!i04-bl?qPL0Rrj`bT{ikjR^P9Bk~h%hBnB z)oeMA@Z{AdG>4kKl<3*@>wUYC2m79WGtQu5mBDpnbFG>yMoq@mSg$eB0yzSo#=DtE zhIX7F+Sol^+m;=HX=vF%R^SIK?IVJA*^~%pnFW$aJ0kf8s&#x)+f>`xw;~2k=!rO&yp3tw+_&WM+fxQF zCz{gU&*0G0WOfO#Nn6T`r=K(JHBMnJ9&Adnu>0bxcyx z3d2sKb2HZPHu>{cz_cD19-Km&_5b5s!t0%dRS&c-iAtb&{-s&-P~<4?2yy0844lCFVG!1w!}v zpY-R4M|id^i8(z%zm(;exJ+r|^aSYor7_@d@}yY0g#w|3zHZIO&Xf{=9q@(ycr0CD z!oriNh%%ScmpsH|%C<35pzNBmzuG&|s;1Cdv#ML8AjY38LEX8UX|GPG0)``>^SQ&q zDjHg=G}XS#zsA%%T+vz62dQ@c1NhaW*bWP%--c{cv@er9o2kI={B_`4Exj5x2~WXK zz7VE#u&Ka>Pr#!=-B(~uNL`<5wAnsYojn2Y5OlpTlb$9{ZBKe%5-xS;VD``qCV7e{WfheJd?Wwy zH=wINq|0ImFOybkaSCIN3;0^-)7TN71~`Rh$AX0^CdVNs5DM(T^zN!;lMewa(?;{$8BXD!$ zhe*}f1xFNaonp|s*3RQnZv|f?^T#Ok6JUX|Ze!Qg6S)D_wz(M6Ro2s(oNGnuKG%u1 z6bLB=v|97GiU(eLtoC(uPDStC>r207L+U1VCPLqBtGkxU5Pdt_be-FmRgNF#Slw6T4wD10UHFlTnrR^6K|Vh zHC5GT^D-)uJjm%NWa9VhRoEH&Ts6Pf;GKPF?ydjZn(V~2d?qBWL(*EOlQ^dX_vmtoYx9!( zVO)OYUrRkv&?R6BV4l920QGD1r8RI&!oeKh(;p}Vy90?{pNai(3DJ62 zzs$nm%C00a*7ie8LH#m2g4~b;w={|YAuz{S<6YL)AIY#VfgV>t@M>abB zh+V~)*qtJF#M;EDUpLZ+UCNcG!me?nL9nwoqd7#{1hJVeB~PuL_XxL?kaZfUKN$pB<`u09RABaH~Z&x@SOVHb(b^N)P@b=2heG7^M7eaTSMAT zJ+mn%^)MpA=&3QuMvnenQHs4zOQ_VFvTfTK#mvU79H|LoaA>2BVnjRG*&6ADHYDH4 zIO}6mD|BPbV8ss#V9A4&VwZq%Xv`6NI6e$hUb$@&IbGSR4BPX@?axRJwfxct;?YB=7gN`*IsyO0oP?eJJ zuqVG$UN{{Qv+vGs@?;pxmc*9TVlAIPLKV zQ_!iu0fiz&O+IPAh#f)S`krDl)x^SovQo^j^nTx^qVnxGp|^#OX)`Tniv?f-3=|U* zK%g^13(Z@xn7yEuyA>{&-BH_OHcYZPY^X^IN?S9)z=4Mng@4ByAkG3zKD7B{(%G05 zg6BX{_{K^}G=V!NFP7gi;)3{PRy(lyJ9>R6au9SIJn-LFOs%86Qf%%enu)3R+Rg{8 z_VFJXg;-{dRuAT%M_eF&xXi-bvo(g6@947Ed4h?c4H?TN_=pYU@Sl!Zn(vmz=WaB7 zU31q)aa46WRT0j{JV9!8uxpe{tLJ^lF#@jadCPf^HeQ%uYMCfzhitLuo;dg4I^np# z*j4??AfH7Z>P__*E#CMkn0B(#!BC@0JKy)r&fPWF=05@?0{uXNHKWLAGtj@bwLf_h z6EQQ79>ucREZ`M_?`GTP=~Xe{@$nTq7789;V~jGCpzih;Sg~sVZ6jOD@fdDN>PT5z z=%#Sy{hh^)uKsM{VD}1Or=q))E}F>W3WSXk_vsrCE?}sIA(3#R!^o1mAgHK(tk`8~ zGCO>GwATGCzhiYrEp=?mq`a`8ZkHq%IJ7!frm3Zw_;NcLDE}+|onFYii({{dth+_R z_hv;@j+aYGD6YKNR1G+Yn2k%3G)2y&{6qOQTsr}(d4m3nVc(Nozme0`8oc6lH3Jxa zrj@r&NDQvDItK#51Srf1>AB8pCT&)5BhZ#NHbGFhKbRN_U%hHxR{J3*K^92XjsZ=A z{rqJhs?@5@EBvTg-V-T@)5Y&}YBTaPSmXdqI5Qoj_DNYb6Y+b4`DAtKd*{6 z232uMI`+GA1p0~e2eWs%+_CE~ukMVw5%%bFrGYM|yI>|A=wdw)cbL;gXRjw>oO(i+iqv@(z-Mn9L7W`>9L6 zD(uUC7_qH5RVC_6&P%ywaO&rkTR;5J6QK$fC;NKcyaYEK=TEWA;qNgvIfL&G;TqSA z6b*Mr#is1P{ul5HKmp8gJFNLx#{P*0My&#@943QlJqYw)xf4Ss26Z(h#Tr)OnSI9g zrERyq1=q9iPm+bpdkYkMTTEj|SC-)yoM)H-ksZeout)v$a1yxSU8a{|VtG?=_X)t0{;C zo#Hy`SH<1;+#<)@2Q%X=6g(FQsa%PENWJK^|FOJJ`n+4yV&?C7eEIzs1}~&f;^}wpuKWV zkLTW7{mR9#_l`i6)avdx;RCH_x+jV^6REn#CcE<%fgsLoef2&160IpT_$KUe*tf5C z1O0x`>S7FID!jIUowYqr5Z?=H@F1;(?>g5n#ig5w2WT)co%&ZAE8kIC%ig##PXE)y zd-$pL;eN4sY5KxSCtw<8&xtCWa)|XZ^TJxUJedXat#%yewA^~hXt4XI15p*q&qNw) zWDNZNIS}F=H*?D^EU12K#_#2i4$Tb>&g)xkWogq8=*82^{^mtc7@li<)U~X z3Wl*aJknsqb6~vq~^MR1Vr*M7TPRAu)>});>uX*}ncRTVyO%&rl@iPe< z%={k7cd=H0(aJ+pY*q#nU(H$ z-68cTp#Tuix4?i6Uo$^ql_(77%t=ggu7$7`fce{LfqTj;3_8D38-3nyWR$ZK!@i%9m`4O=LH89U->H8>zHO9`?3PWd-8O^M@ieCE=)Ra~=B>d+Z< zNFjJx-t6BjwAU`1nP;d6v7T&LVIP3z_@Ml69_nc{9n8M9*es{4`jF49Wyiw&lIFiD z>umW=;Fok-psjNqMfYXPTekt-|4^4UL$Fx5p%U?XV!n zX8>XB>2zyLxj4uI7Cs=zL9KODQJU9APP;T@yCO@Vl6n}kwgA%x4vb0Psr}6)@gF#3 zH$MZRnIAmxwd(|#IWh7;HS$(==id@TKPat_x%$~}zLUN6#^P{_zHu=7d_Jdvdvc&`XZhLDjd2&-K4EC5>=e@x*D4q=j^e+f0CmOm7LA% zd$+$TK&-D^r0#-xm7(eZCsx zruORo&2vhF{T?ByAb`_(8d1(VJ|k`qA?rX_*+MoBffECv6kFgXB#4Z4fhOWx&B*on z;<}#;6$a7iCy4-$__CQn)iouhR6+1!UFCM-odcS*6J*!j<#@4#8jon!^@^QV-wMEg z3=!RIVq>XB29U@CB^4QONrIcH9vqt2@dur@*EHr!vg!Kqku!MX zF!&vC@W)nde9z5%Ca{|>lOY_87peZsf-~cOnCH|QQinFj@x8$H?N=1sRPA#6Jm++p z@64kWfIUFAOBg_Xq^)PZd+&lxGUoyfbmzHR=Aq2-Q-Ft|w-#(L=b>bxcM>%whWzB0 zME9BkgIXtN9;+%^b0xQ>c(C>*_*yr_p?$6Lvbcs11Z_)oBz--(vp&iaetuGI7d+{tZgCy(WU zxvmx9N=om4l|MZ=x_@WDY(e?}`K?7WoKjKM_2``G>3YHR(|}1UZ#Qum?NPyn3Jn4~ zcMr3ilrS*$QkZn6hqBwSOuuLf{;qv5^KR|o8tabl;S~E8qHA-Pww1Z{AkuQIx*v9z z%M6dx6Yv4jP2jJq!jI9`gYrxBr>fjiA6ZEk^hmw<@j%<>1u?0;U}9~|1J%+4(M3P!;tadH93 zXeR#ix-_g5ky03SL+ffqca65_iMfT0(0x=R{{SQd^3j*m?T{wF!==B?HD%gAUF(?g zFki7>ov(7yYRwiMuH4Z?EUTeS$CS3u8klf8Rt-*liyKJM39M5~z6UwUF<6i_cpn4; zO&tZZao=KXf5GecVol1Wp<<0%f&dqp*2%&d=P*7u5RD1Jk;;5_yJNL=lz5S8bo0ya z^qMx&_q5E5!I95@WS(xc?K`tVC+^+JSB~b9Oy!ALDl+o22XBND1f8ml{ZeEMF&f-$ zTtb=dmTwO3CwBjS>_dSZ^Bn0FOQYRMsHesv->X}j0Jm`8UE`1Lp;JatCo1V&mu&B9 z$Ks;><&GstdnuWu!7s)ny;q1_t0FR-^z=E`DOKh^CScO*B25p!%~4ZQa+#E95;yq8 z1;-a#QUJH5+9o}G3Olb}c9chwuo}J@mR#HA@P`t{A0+vwTUb{4T3zmI3*`Ay+t&rk ziMvr=l$EOZNi#u6UoNJhp*y9}T=2aWE7#L(DM_Ga;gvv1foZVw?_=`I;}W;Lcnu5& zFDodq(9YVj?ZHR1_bWI{TV`DZRc*0%00B`h*9osv=d>HyUL`Ub8+!s7s%~55QbNu( z)7?IFGB$^K)YO^w8Ax^=(a;VHfsUR$Dus;g%juB~CnZ7foA@?oar2$Y-6f2qQ|%?8 zwAOB^%n!=2hJszuqa1wP?ED8M2j&~BgItBSKl*?~n(wtk9JvCe{ciN0ngf`etP4e9 z7~bHq#|4Z2YXuySnm_E|RFRgtps1`~G7#y`;WA<^HRN^+OJ9AVBe=R}ckn=|!C2u2EHYr$zU9A7k?p9A)q!|n-y*0_k(Hj?f^K~`sq%^i2e@=0& zC#xWFx-Qq(+WYh?p)(@8$s(>WMH?o7c~p3 z+u?0s9BtP?GS?^h>yx;9xu@aIF%LB(ukM3b7cd$DaGzQ!QnFJMotZqnZ|gwy_)Hp! zRceP);m-5f&a^UMJHw$PkgU6LWE2~ug*01;UeeKkdMTL1!&x>*%T7p??j$E(#EOY^ zfgES?`F$_0FzlqOb$`&>;^gD}84AVU4O9+=Zlk?Yy!7$(t3ZneDr*CHzvak36?s0!=m*G#euxuzlLiN`IALCuJ2NSIfp&C=+WN{SEM74zepT zo>HSny*F2zStGIoZ{fASUd!Vmm)2+{qg@pI);)639v|-T2q@(>h?GjhZZe;XtyI-- zD<4`BoA+oeB5{Anwud{PvdZYQBTM>9N{wGj|NA(N?x4}Czb@V9c z<|NH3j|XG=3D^BIgSt80`2ImisAAjCxIPEF$M1}lU;zZP3*_z8p@N)LDTzUg{uJvJ z1Lq5bn$en-t?Fcu2?8oYYq0ixz6;&2tu@^iz#=msm3$DcUHI6BK;r0SN`3M7W)3-S zT#lt6NMptsw=_Vnuuet5ZM4GZjjI9r9?65}*XI*%Te^ewn&PxAW_oa$HIDmqR4LHK z+bg47$p>Q8(?mQvI&!nXBS*(o+s-eptvqf8b(-XF+%1xRdcP1m>GCay!jQd$mlqrY zq=VaE^ypmvwfo1~GAf7niQGjPP(8ax^Ezh&bAxaP;?Weluu95eP(H8z9ErumsP1AwTI_vR(2;(8fzSSlWJVOh%Y6+p*I18MOStJGe1s>X}BwmrSY0j?n4Q`$AtzKDU!aYl-vU z1LS02vgg2D4%ucBfGyAER(+&?<@fB(O^?X#ZEmcTb4*X2%IcX546FU@GQZUy-w0Z8 zskoREr}eNOG!a`JSO#S0_UMKpveb1ul1BEg%>MOT(RLyvbAj$H`)I3?8s-;8V`Ra& zIwMx2gAi2-6#N_ICk$&O0*PY*CisLlr^ccV-n@}iy!hsGRxHpuCK3j=ru#VLEkLX zsubK`0L8y1#H1*t)^qONY>i4&t61Rh^03zqq>)IZ_J4?VCn^KOjWelBRdtBX=CoF8 zFP1UFON=D@q1?gwpD9zVX|SdMIYwnANTSeR%eMz=9%VjCBb(FQ`m>tXeN7cS{a5{s z4&!p3)H^}#A{SN0Foq3+fquqVKee3$%W(D^`o}Uv+WMeXL4{AnPkgsOF4?|E@sc>g zGh3c`4XdD$_`dlJ8Y3I?9pxfBoQ*{M8j>=Z)u z8nLr!X?|FanK`l4@r;+(ad3NI4d96ky6@nZr4Bu$9y$Zdv9JOx-ScqE&9i{L9p< zpR)azKc^ih+o5_A!YmYEUmej|{2l@IRPufnT2EZV1>Qn5nxH45tkw-a+<5evYb0Q> z*S!kM>9`rGlqQ3DYdjP{vzMonKKBHuirXvVN7{b^|t`T5G010B#IWIW9Sr)_0;<r8b4q#~r3oXx$Ea z-cX##Ipt=r9o$f98fYC!-5sqmw`*K{Gt`5d1ty&q^T+zLu&#m$PphX~T;9W@!_6yo zpws&n+tCnLfb8DV0rDpO>2L4KubE=Sr*Iezv7Tfez-wDZ#PM3VZ5irj#DzQ0O%`Q? zlz@VZ@8meI94WaA@E7+_h}n-X3AN%=%XS{%&2rC-TA9&+{YIdQ1~<9mF5Y&P6jOhM zCt!QQYTUnUx_ih4u@bgPuU;F{Y^6Jn`8YpMb8iZ59g2q+>G1jdN?MXlL^cxu@mhiW z_Ir!#czk4cP8>2<*h&zdeA+}u=@jFH^u zIDxe)1NUKTgGXtmo*FfyfRp}T8L6?}sBW{tJ}rVu?w4OGl+hWYzkzBURNP_cW7GU$ z%6Ckv_iJrr>m!d#Z>hCgKxik((>KbUMzgO~nfguxQ=GCe--jY>WEYs71`|w_dG|a{ zrvg!aC(hMm;ZKv zG}PZp!FUTL@a?YDj9X2{7wKu%Pz?D8+)>lyT#v@V8s@&r7w8vpn4PnAVXT!4oZykT%NXsw>Yf}$Z3FW`%BLE&&S!Vb3i2N9RuS~26eloo$*%~H8Vnr)px)XJ)^ zbQB0?_nnS4f7Bx!k$B%1jz+1fYLCK!V2s@-;(=CrGA0URTC*8pjXaL1jW3(l!dTsd z9Hrl(MtU+?4CZ{OBEKppG&+^%pbi5}Ta5d!n0gFbX0 z_wEpZ9i`WTuRhF(2X!FuT7VCS(i^*_g{8nhDu9N_((mg2T%cFe|20FA(HIAsrIM9_ zxNARGYl$*v?drZam7E@-seoL_*BVj2oNE5{@5|4o81fCM0GI#Pqj3zl{7jSc+N!yI zM*JSm)dwX;UdLI{a)z?h%g*1wDuSX8sQ>mF4`-mb{c8@u0EBXu@bM<@k0#q(^Z3!K zakrv*l(ugsY^!$b;XK04rvIokCE<}C!~d*(Wf(QZrMfpOf0 z-VghIr}ih=K#v+XbeZh*E6f(8lKoS~=>oH`9V{5)_-FUE^lY_V%Om;?kvB1gaoiQK z?lpo#BP&KS2EJ+HGqJuIkT(X@*U1Putn1!T#qYV6aNUr*i5|@uhv8fcE1<7BnW~lv z-<<+mwJyxkkE#y*{_+|qS(z2+aBHbikcOHw^R-L>65#z z^`umKW@rxG%8)N$l|>srfwLy~Oo@aq8*#4zVV+MeAh_sV~jHNR z_5^o+^waNnrR2{$*dEuy=}PDoiK= z-3HQCK`QM%;o80$kt*#tqAx(2fVxck75pa9-MceCl)^j64(0^>tIvC(TGTe?YoDns zVPcimn%&1?6T2~wUWM0&kZ2^GkPhJe9Q)i&ubRjeqg+yudA#uZo`mZzO`+Aqc#xKz zu=8U`Q)sT+3Q(Rs(l(eq&XVXl2;fF_4}j(sj46y5MVOOJ?ubr;W^ME@|>t%ABm>e zGo9f0t2y9wlsppH1(8&Ot*wTbD+nsG`*m5Rw`vq|dUvN`ZrAGOw&s8~Y4t00xlP3~ zUyTs`Vzdqg^kt{rWV_|_j<$%S#v09vI~4s2KxDxm6}a*9MIV;eM=_Bzk9#@3wejz{ zf$!%J_MS;=WJ%H7ug(ktrNu0d5oc7D_S518U>pr;CY%`kh-OGLg{lvFJZw+`=EKe{ zSYekD_8CvDJnut1m0?&clfIQ+TWdFeACOAe-W~U&Zn+QsIYjT<*jXKrLCW_^1a&~Z z&1YL>^iGZv5m&cma9#?57&v=ZTdCLlwZ7YIfpX>zZ7pKPd8sO+rcThW74>li4FD7B z5&6?V)bYpNL9{geAd4s`AD37?yap7{CBrVd+iLOm7XH-+0;x(q*sXjGzA}hze{%ya zhuFGu86e$H9ne4>Uo*if%8+mHFj(e4dNqP0oQ9ow+D}H3dEoqrn#_a8ozP3b5KWSL zQsq(lVc&^^*~wm6YBkdO%!JbV;9?C_a&?=req}!se|iJo`(<{YhKRrTG5hb1)JTsP zE})R`kX;pcxR$Z<=+S;&2M~BgS^-NEo)X@&jycLK70}YRF7kz*0h`;Q-TGqx#2zF;;diKwpm*ELs>5*He@Y0%J z!NQ$q4gAMU{3w)}PpZX|Jd)1h9y7P@Hu%wa7D8r#EK4#0n6VrMKpWCjSwG*OT_?4G zmYP`|5W5|3&bZ@2@Pa8t+oaZfzlhlUql}bF2niUm|Mq%rCPugWZ4?QD8>^hBP0pAG z^2aBAe{b+5V0~Cl$XsKC+JJQZ1ypt3HRb@FB7%u$pI04OPMno>XSqwh%^w&t>|&Q3 zJDXxK^wfY*JMXh`tldE2)sL3&utcxf7Z$}*>eA*3*_2dS(;(p`hud> zrAUNlPfFcAJbxE5x2Y9D4;XYDE)}>ZXv#Vfdg8)`1>@*fhdIEcWRE9{AW>#sV02Rw zFWL2qB`N~6gy1a(&IJJmU)k3wj|G!mjTU96e}9%dVqK7N+jijV`;cvu?NqOw-GG9= zx((Txc3~Iw!FX%*9l!O59+V2$5!$fMFLAs62n&o(X)y;=;y)9_l*hnyvQ?#1oiyWe z!0uWa*e1m*!?4l6NQ$wE?K8#l$~bH6;D-p0FnqxDIHo#+>P{c+^XWR}_#%K0X!Kp} zd)7d$mC0OLuAb6Qf;dPh!Kx_|Z`hsKB|TY8p${BW$l9*kb0iwPLASF#)&aKLU=q9O zrzLh6a}ozMzmQtJam2>mP@(hBDjlD$O0D`XRC;vR;5{iL;<-qHRZ5+?CluW#&%VG1 zg)2{}LK~{eiQmsvh01J?4;nvedk{_C$mO%z-DW>V&Q)x~?mAyBu&^2`e4+WFD+%?s zJB(A)#0Kd0k8Jv`IbV=N7@;v@^V>}6!~e|cMwPow4Q;ZN*9PZ!p=cvsG*h{6UN%eX z)eF^by20*-lD67)nan((xL@moy=WmwHQ_F3GUI552r~6Fp>~axoF6x;J2j{)`Dh{y zcxkSg)YdG{^)-fUm$BjEXD@X1i`*XG!kKkV$&IHJ6#NS}a9Sxk^%O>sU3sYrr!w)z z&*bc<>e027JZ+Z_M?6|87nyuop!GYw)>50hsr3-c39pB#GM$5Y;vsjpohecomsA^+ zckV{!19y1(Un6+6Wln)R4rc6;IU60-*EMDDi=tZ7Fwl;pB4piii>Y1((mm4bv^A*@ z7-kxnDy`+Ax)}UGds7Ux1>APGSAs(;A}&hF7Fz*^)XC@P$=?2~BQE7ke2Tb@8`^ZH zOGa808JdqF=qTV$KB?X&YnI>m^79@1IDVtJXTk;bW|Xb~ZE5d9PJ|YbDZr@NK(=bt zJtp1Wtm7I^ywkyv_T9&|dlK!*x-?E>4d}Za%KseS8L0|O-=)}rqhGZ|v`hnU~pW9SUT|LEKrjgB~wiBYfQw z3WM2sVQam8u!7sFs2tjK{Ys@WkbZq9=7^9U+%S?-1je!Hqy2@39{M{*j3Y5v@N+Lj z;3|^k(ap6)V36d2o2gOWccQGl-n>?neQ-1I_Q*NR`ncZ)MK((;{1b@%(k>$eczS-4nrqj$;TG-KV z8UVY}4h9e&yGnlAc)8&CO@i-X|Lv2jW~D%_&X6?IHEnQ7TVdGc_K+W6OlE5XL6hAx z&@a&{%8q@0=LyuS%9y4dX~BFtJCs+igIyFX`5F^2*Z+BvV&waSI4VVc6wP9wLfPPf0`Q3#cO&c_ z^Xpr?(!58c!kvsxXXqhawpWM4ae6Ks>Mgl4HPZUtItBzMX9sk~Pb(+hOe@#c3&xo} zD5+b6m%NGZK^fjecz1~V;QXIM9*nJc=Fx%KfRO+Y^mtC4Vri)6<|yO>s?v#=y5N+_ zcU;_t?`#7`AnIA~%u^E+r`@_zVn#K)tNI8T5#1chd$HbIe@y;yU>L(Yo+o&AcZ5{H zE|G6(5ZUjxR+Zg%H4S)W5Wf84zjX9*(6&M@5i9ecS-?}UR!8$S7~5UcTQoYpq;fhl z6b&kIzOZKD%A=q7qYtG#cKczZD|=5beWSxJH*)ls>O9b*Fx`&uwo}DcSTudI4OXa% zi0kwuebCaHz#(OJsX948)^X*Fysp)H4;1FNDqR`&q@gMFk8^Y*kay-~WyFO5ZsV8x zp^$=2Wx=9VgUCMdtOyh5#nR{BM=bofJ>!Wf_w&G%pr8L>N{NEi zYQW~`K`cG{4-P-Jf1C_6!{hr2CWH*!eKtEn*?`_?x|hMN-sEEpZ&d;gyI5+yX0~(J z`TXVSnZjOzxv{8If8(urcR8z(>Ht-Cbsm#k(i=<`vhHSZ9C&R5HeYf%2zcwlwmSw$ zXD<-6^=W6+Tj%0S22WL?ra6##>-Td*Wo$y>Qb7M1czGbQ<6XBoMh$vWcJo7Sd~kO( zwm>own8}esuy-YW@=oUR#NTB-(;AVG{7h6TG8B~8_S)Q_qI9S3Qxs4Qv%ChV_%5C* zP0qD;Gu(5zRbbIffn;Hgb|~3+EswUSBpxFG9L4_u$39OMBj}+qvty#{y4sTKDhf~Y zoq9*CFL;se7AXg*n$A0=z&RM+k`Y=014QZo!OM7@pO|WGx-M=8pIgg=t(a0x1VP@D z&I1g%tjOwO4f`lOnB5@z_Wb6QK^rRjrzpW`|1Nv47FCK8Dnud5VKdB2q`N>j%vG?l z+>;vT06aQe3Tk}OEDXToVmQ#~RI=tu%vABa37d~l0Rs^ za_5O)QFNNYv*&5JBS;29w#wf)BvNH;;snDr#lAblsJbKlroV0wGPJ0hd4Gy!Gnhx> zhX2xhzOoV8a*lRcq;SgC(l|mhpHh?ee?=o>h1jJJp%E5yf=H*vkG!Vx?ou7jjT63Sgi~5s3VBX4BDXvuE8_ee2~pGpb7XD@fJ>XTpGCjAnHzMtjlex6iLxlH><&)T zDop0ZS;tu)hsRN%N?;nFCG5Ib1x*zgshKqybn`S9j|^=CGQ{#3D}9kSXF%Ra%WKZf zMuGe+yx{BFL(rp{TU;t4B{xM@9+j)zykTegM9Of_^obuc4|!=y!`{g5N8jt?MKo1T zlD+3^-fS;JvCfwS>Fkh{lo7Z2ezaTa`z6$Xmc_CVkJgko?Qo^zDVNXi_6JKL^qL7vf+p~Q+95p`yEypW({dZ8!f$Q|n z{|umDu|W#aG{fr8px^ap07(c(l_Aa07E?x_xm4!R?S~$B@XL&gCk(OEN6%E~#IFp& zjiR4cL}DvNH>ADDokBv3#CZM9-ctuz?@2j-M)A?vL?2_nBRp}}&6Dpf_1c=9QRkEL zA{W~JVNz#0s?vZ`>NSPY;fxn$ARWspN)=H#Bp^UQDdK%cPSFQljiEq;en1nSi$^YV zXPVv44kbTht#b5DIn3}D?y#83d|w<%?z19uC_{kOU4{>Gr!&QOM*I`XNyqg5^N zmRR%YF)amQJzM-6IRB>gIT0hi_?5%20iOZV>Ba_lY?>p4EsVeM5~AS^TePO5M|>)_ zzY!RA0p?;_ry=}dn1gM-gNtK$P4<8Y8c)0D(zw1VUStlH&)`ClW zG!wxBxm9Oi$6v^Gsv|KMjLix_Tcc(BOzB_fe$0PE95X-_?q91!0=ruUX6GQ5dfBy;X~+{Fu#`Kpl+DC+V> zhE7bQJAp>=|HIyYeO~es5KXpchsIff7AlBgv4L~jsH*F}@1bf^3A{Dc8d;B01px~x9T61}0i^^f0Tl(5Dj>azNCzQ=l28-`RGNs0^xlQgdl67TTIdNK zq!UPJA#`R3JMBEbAQBhN?t=rn`N}bXG@vpmpGxVpb@5gdpjoa#blPcBo zr-$AVK+)N3BF+sI7O8&ZgcR~iT3?X zoL=$#mK!pyiU5+=-Z2Z>4A`Fjo00_G4v(v3K$P<-k{>KVm+#lsFh5ZmR4G>dD)h>K zvh1!#>*~|#)Mj=gvnc1iB|Brs_(Wt@`dJ(mB!YQ8diO3ZOy39!9a*OSI%4v;ZD$9r zgMWDpC}k=S^m1>4jeHiw?bzl$a$g9OH&uQvDu#(zKI&3$(_hR>S*8-Kj9Cu2 z%6y~fMTf2_>3GgY>~nX_lZxDP_rvy1&)=GqmptP2&$XMa8p> zuSPJF~z@-=z) zKs)y_2YZ;gVe(Uf5p<@1F2dZhy;|!@K@OKr8lq!9q;gpHextq?N(-9tVBC*ZSY+>h zv%#UEYCb1^PUB7zL1X-#mTUo^&b+&8$Z;9$2WzyiHAt}MJrI}%{>s2wni^EEs*Fs5 z@?1`xckW2ix#ab_nLA%0d|F?FJ5RV)g(&LLpKXgv)ewnF3-JrdVhMS^dQh}eMGim_ zA2^L;W;?VW%sse9UAR}7{lqT+3C+G|#dySlmb3J{L9s0QW=G^N0-=p8&_N2upBl~u zx&pjTrA%sX=3k(&nwttrWnj&-eeW%+3pO_KYvruNxR;sQK$?F7;_B9}o;_pIPBBAP z4PUI>XvMzd0Z=D;;`S8rpdn=H=GQft=}%QagTGiJp0U zp`m@hbmT?bJ|}if+2AGMh@xABW!=-kk9_^HG)Qxv^Dgh=ej+FD!GS;=7j@Cd%NxO+ zb?UE8`3tv>rs#L)01394SY4jA$QA6FIFkK`*273PzUTT8 zeaB3(&nCI&7L`m;7p&4I_Z=g=Ob_J^Jev;{Wwk&GmbqbGo*^lufh#x%W6^8TxA%9Y zY|ibCV^mkU+4&!a)3JN+E%FqrwIofISoQv>VwNtN60)O(Jm7mcFF9DekenI$&PZ`G zs8&Prku?a4S&P$WCsEwnwZXm%N$FH2BA$evB!;ZEl|{@_caOiheye{@n@hjhY<-sP z3H`|q@hO5vC-5ST68Cd&50@HVAR4K8?!+^+SX%lR*YXeTxL!NXvOq=4e2)0Jhm<*S zuUUKU4I)xAx>!{CNM`<137u)I$M^(w69*^*^Z#g+yo-_Mj9`ZYia;FGA0z1De&K1Z z!mps_JW=?cQtV9Q&!!JP!vW&J`Nf|_XCSr-1+^3kkl74De-5BzFJ1q$x&r`^(DjdY zr_m?acI!%8B^W{CAG72Cfdm9Hw}DJ&XqKQzlrogu{{vR2I0f0+WMlll&VILwsUC#MrLd4oo!| zh87&Y;}Bfo-{FAOdIs&4i91}{Wz-+}HPYfO9(rir**(?GA3Ap@H0If15C^(6#0vg- z9s7%8_N&>U6$FnMaa)qn<8YN+#~zOSkUq!|mkm{Pfg&K^59}c~OG3THG6)DM!_cZ+ zS9blqj<3d>u0{5P0pL z5B_mD!e(FmhM8Iz!WQlk)Np#&tzG7qJc~83yQqbJy)*+=B>~Kv1=pr6Pl+Ck?Jx!~ zA2RtdZ{B9I-|L92Z9gTtC(qrdb18s1H3@>ypAZ)+aK>8H9=tN`VnODuQ8Yv~s{{7_XXw4U# zC5&bGPYAJSHJYJff(O zSuqAwEIk$k&e^33LKzsbA^0;`hjOUsFLsu0Gokhsj(v8PpQb#yP{@Yc7(Skb9}3Z9 z*Ff6dN%9|tnQ4rerIgIcv08tJLSogX<_F@LpAxZm(hWlYxz0!M{eYCO#%pEop^#r{ zX0G(Kq}%wcvm4m_q$a#64=)rlAaIzY>$&IsAj#j8Rno81ZTA3Ua zW_uhemi%%`u)XZBB?w|evo}RPVL}3c4*(P=&zF{|%e7kEY!e4Z7laMKxE8Y}H%D}e ztLEf>h(ku$S#n`E$DxoR(~w}{WwR!jZLvRd8q&7>FZpe8h|3A)u@UC}_5xF+ZF{t% za@V(G5;14Fu1DcVPlxcVjeO>?PvaSwztV1^N6i+dJzv*q3Hvb44rEpOTwv&Q9$NmW*Bq-}9~0l0+!x(<<*r8J}IwrOav ze@8)5JTurynxbHE`{KRf1T(Isf&%27R{SKl3uEiz%%N#hNEDOE#;eY|vZ|ZIgl~qJ zTKjt988D%FCF=9GI-Ur2%g?HZm4oS=Jf#>pKX#U<9R-tM`x>&PUHh(pD+v3+%JL); zEXvZrSD5V(mC>Jv7}XQ(#Q<|Rxq2& z6dFx)aW8j?mBlghNqTeB>_f198^j^%{z-RWc3V&gvv{-Ih#A)ucsiy$X$aeLPV%D| zdHTdU#>{N6A*18V?SK=s(utWMjPnARE*5~oBv?KMmW?7#*VLC5^W8Kf>Oz3@b5Paz zGgh3$2J77Ora{>Ci8TB7>Zfdig$!WEv$B{YY@bUvH=WznNdg1HxMKCex`ur*OZjfV zqT5m6xYjcsH4~U1TJ*wzO=RcQ6(&(@>tbiz%H(+v5@fgCAr8xw=aEOX?B)gjIPynL z2^_BE&;O6s1sVnU1MtI5hv+fSL&c|T9^;2Jc?toINsnm$R=@em`JMz1db1{Rf3y@DB?4**_@c@Bg5X-~NL_KJySfghbY}=U&e;9}~rm_wkK1M0k9xRXRMNx7YhxCc1&OJl1W)Igx zFFic)x6@z7MUY=IimTdReS#|?`|aBr2lCnHtDJ_sqXd@eH(F;Jm(L{JS`=N+@wQox zkcGnzLw>)7YWiTDmQ3lnhZ2SB{xZ0TpJ{eE_OoB#$)qjnh%S4_*t7W~XMQCPNN$#R z9g@dT!#x9<)_P9q?DXwnuDHQ_yPfN;=E8O>xnb+vv^s={cY%5YEM{k)yt(h@1_EuR zW|3a_lFDISR_D@Mqf68PzXWooXTeC!npAPf4aXNY)^_ZUfT$nau3nutd5lbW!D-0z zrU~URy5;YGVG!n0hXX@5S&4Gf)vrfqw`QKD{_B2NY%`A`H&cz(+4OS5yG!=fP_fEY z@z}Tt@y7U-*6+%>u1hxi2jmq>9QXmjo+;Bn?!CR_YiBU(^oxq~lG3(uy2kKpBXMoR znA#WZUO7sQD|5b-^4co9hc1|P!ffj8;1_GJXw&7J3&zB^=lkr{)ChZL1*6OZJk7L} z_PskQ!VhC~J?7f7&3xWE>ZIH)8iV`XN%qkEeOC*zgTApz;F6$!6B zd}t%YQ%P$kyA!?iyF!`znA}5Yjl80XZUuA@hG#sC`I4n4Ht*E)aW7sSo@rWgP13%e9n3U-`2OtVT@XLwRBM3F1AsiGe9~Zb`!vRnGNt3xsZ3$WZZ;bqL3*kM=m2_+%WPoj&m- zewg2(cjrc>eT3juY*#}Of_+o;g;VEroyFeG3NCLd0}Q!ZqhlI@+u}DqnqR zyEo2DUcCeRMQ_B|l`{3E+Rpa4xf32B9g+UFs#|G&k(}$jP7B#ME&A+xF4v{t zrI$E$os_dOrcqP=P<+JC2V5pgJEBg_{6`YF#dyh=HY)#cNWsFf;Q;d>M38aYX?hDK zsl2+F&n7&bq~Pv%ZEDBxVl1X&^sjXN0NM6?P!*ANdHcXml4cF0bXnYf_0IhvtpNe= z&QxzIOr`PM!o3=5E4rnEuA9v3Aut&mE@I|-UibOr&Kg54%tiL|@P<(w&m459-aox` zUgm<7)pwMpIHa8Kl4uOJT|~R9rR)7uHKkEIsaxh&X!{_I3MIqup4g z`lcr*>_R^E@gGZJ#|F|p_Er* z8`nkPt%65$=6P_%hc?&o<&LSbyhO_64wLU@9Lqu%yZeMg&AMH*mPup+bfX|>@>S57 z!_(Bg_G1KM>svVmOa6fTk&liE(VMy6%Ms_{YyAtfZF#Yq##NG?HPucZ32!O&EAUT7 ztl0H1R}(}f7)-EpydysuE?PeRxlvyx*Ba0>>W$i24HMFnPt^~YG^*%2FbsY734^RK zXOJ5-XDBZ>H}I6?U>CO_FkdC_+*i-8UBQ0%YcwR-nVEE)(ay(;d(wuPGmQ80$vu6X z$?MkqYB|2l^UD!1R>uiw7Hq@DyYk_q(UJ>v^U~vdX1K0O)iZB+D59jdN=+WT)|aEE zgS5JZ{-R=8Y_Bpmp!VD-JB5C-@`1NcVbGIf^6du$66!36FnzV)mxJU{SS2QSt+hOa zrBw9kT+eC(vYB|GwQomfQG2SgoA?o({$pjFM&$|JF7z63h?HBD+7al_@E3IWHB~ z;JDq*$&ZD?Pf;_UGiB%NTj$FUQ^YoNSr#JT{EXX=7g=+;Oa&XF0&Cuy4`tC*RY)d- zbL`rj09OSAv+bu{_GJ^U-jJJl;Y}jxo!xzmBsYl0iBZk2eGAO>ax^$igfloc&5ejd zfjRLKo5u)lmYw-B598xXZ@9D_4NM(bZeo^TTtXx9#U;bJ^&3mI(}LwCy4~t$agy6I zHI)zRR&3fd%l5!gLs{i=8dtMq9H>{i+S!o`W<5gEQOY-!32&q?ZvI}8Y@(fxpvOBtPBj4gX}DyODXJ-)06P+0)1S*tWaWqz z-xh4ye?>f!uL><^8+w+eAAYZRbfMvigWHVV;=E1LPa`&Nx49~6T1cyB=#S$pE{PNN z{V{>1!6hi(;eArJ%uU8?QvxreLzRfuLqX8}pQF**OIG~R>}k9j_D4|MyN(~3Y?oZU zQZEh0%A{JI^sHhv4Uw`e61V9=k5!bK(R*FRMW2s24e1#*bF6O~vx&Yl zp+|6ooY>T1tVmZP$v7Uu$B4tl4_AK4$_O=|cIVMy>>u@lXw*C-xD+nsgOYZGrOS%F zVI%8D6a2x2&5wmHMD~dwoz$)p)XYzKQt$Cu5#DGWoIics}O9hSc&vF^#)9dz@xT{ zZ2Q0G_Ylm_lJnHYWPu@WV0j8VzAZCW_0h1Atf>}k)`H9zyAm5l9TW&p?A zO6zl{p)EFDg0W3Bwz*`?Pag=)-LLI>C>xKuHVyLBiC>dlK>VdPrK4W&3cJjkwi@{+J`L2$qKg zy?EaC^pLClbac~ZO$%RmNV*4hF0Ja&h&aX7T=FVYUsVDqYT+eDkv=?C9-$#-$^iqr z4~=@q$Dsci_^e$!P^uoql{xRtiAxsur0u`1?_>umn9PgGOiaf&`?}Ru%jLH;>3gWe zF`!XyhEy^5U}*xgQW|U)Dw!J7=Bx zpcxWXHrF>0ml3jm*(qe8P9xATQho5UWPB^TCE=V z>o+~kBi{q9V}{pFCelLuLul`(e*2s9Y{la0($iFDsPA^h?S=NOhBsH+0KH_fpGiG4 z34X_^KPCiY(GN-hYvC!=pq#daos9rhemwvjso=OtG-};3u)YMNcnr&{4n2AcD7Yqk&ntM*wwTW_~^eK zo8Az7C+@K=+2S-(Q(oRp5epIDsyE?(x1PR7GO^LNJD*K?n;T!(xdHTQNx>?}Y+^ij zlzU@>sD&-f@<@VJ~P0&oL#Pt$ew2D7s(Cy72o={KQ^QrFMMTE7=Y)swO+U#6GgFiIO7U zNTSq9$g3;P_F{K*ST{y~9$IOs>Z2&o4kr=lZ(O;3E;hDn|~CST2_wIq=ngfV$V= z(y?73dJ3$pUFz@=?EKM%Dihhd2Zec56wlKkA9=~>?#v4XG?1Y(!jk8^6BG}!a-E0C z0h`P3fa9UqcCd4I4McZP4{1tYfxEoB_TvWDq?n3gI`j$IOPEPnKn=l;U7%RYfb`nQ zlc$&ZPC36`gn@!5c1We{h*SRYDx_Yn$|bH^aEap8QlCrZGI`h!R|`%-78fhsjRC!U zFl*U)m`sqn{OH+vTj!;66v+<+o8ta;i3}BJ&Cw-v?vmqAk1oZSH0~GDQMBa3=8TMx zWFPHSaz(<`*x@6L`6DvM{M1}&2Kd9>kK|PShKfH!1Lw+zm-hd!`pNsnfm+X+?PUiJ z5lL4si!ra=W5UQyDHOT+!X`OqnO&Sx!yT0 z7eD;=tXZ|tASh@_1n9KTD{v7=t-}t9V>$xtmwrH`qd3=Tr<&8zEze;=CUz+V2*ort zEx+ha{$T{|$Tg^MlBKs>#k+6JuNsLz5WPm`--o&{mo&9(16*1ZlhE@w+7~G(G&z7T zPvK4(H1{HSU4_L)UdC)MWO%!=ZF|^`?IC+BU}C7TS@k@VsUAhl1N?ds+J&lDW5nt0 z4G6Z&@{2`+=WVAvxl_R`Vn6vnSUH=FGAC~oE#Fc*Tu+En7iu~>B>60pMh3en;IqE~ zc$%w4Ui-?kajw!EtvRwox%#T8gITpa6Egxc%lHXWJ2T5R?{%zNd8v8ZK#My9FV6~& zaPplB{&S~P)PhT$sRO;`duusGAxdi88?i90FR0p~3*w|O`GffgJGvQah*~UApK^zP zdC{>jtE`a0;fr#AHg3c~*URMX?K$ssiEv}DinjJx_pjOl;kV72VgN-D_s7`mFJ?uE)6jNa5O9N_~ePBs8N{hsE>^h8UV-hAOKq9`--MZ}C#l$3kr z_U3ScI?eB4pGYIH zI_>Mmp!PPj4-RVF-OYQV05dz^av=v*d%>1(w~_wPw03(|etis?@I{_uG@2B`2MAnD z!Xc*zTDo=^v$g*UTJ)NDEx*Pd^)U+s}=4MxrWAhZdLBz;B$Sc9ZuY<6NX`1L=;#ls=|MX&V0l7rLVUO3r2hGQ@O#hBP;i8 zUfB*g8$XW@R%|ZLlg*<;>6am^)m%LJvSoCo+&4+y!&1EV1p5QpkjmjO2Ik(Egh*jig`dGJ@DzHw>g=#*a}4q#(@ zMlpyoSLLV?PZFVe#{g05z1`L}RxxPV_a^;KIs8H!EySOmgH1fIn->UzOT4hdeR?GE zxdtr>gcCjfNIpGYkaPClc}v9U8^1=T2d{$rv`9eZck+1}+pf`eY<{aWYO`)-RK0Q>us(nt2K85!+1`1MZ)zGWuCssvzzg+!4cZV@q$Y z-D+jA7`pmhIBYH22OzFVU$)mTMV&gIe!LgfDd`a5j<2u_bE@>$P|*c4<+K=<5n}s% z@yo$3cY+6#cpeh%D)Km!84u{?TOg!yd2(d4SbgBDF3Z9auiDEthHO`YSD1vTbpwBj z@!+!6F+lLOO6|4jJxS(Y2tU=rT|dnv)WFB>qH{U=SH9b-5GpqF*#1gm=)+c-?dc+; z3TJqv1hxx$0g*c>hv7M0&}QAtylgP_nI_lB)BJg5X9(N)7irHOFoSM;s~Oc(Ap0%YSpl}}mBf3R z`aZ)esjZ2W7d@#~Mof;rwD9MnLZt$RmGY%oqZRABCb=|avHGrAzQND(hyeQt{CES@ z+gnqD>N6rffZ6xRNF3u&D<+>ew}W#awlcKRLg*wcbfPLuP0%K)!U>YTJBO(EbzeXs(7*s47Idq|se`;~q)tew1$#&7QN|*n}!e_@( zk9D>%8zxB?AMK{xs=j);0!+01r$9MRths#+JY4%ao1dP`%j8ijAwQ{YC*NRDVJO5R zHpb-6@4P*ujhwU4Q2zJc(l6cP?XPbW`8$y@ICxltXg|DJ>1r_SG!&3(C_J^p4z-DH!n7lcQZ(N35pNSpp>o;-RRG&!!Dc40xzojQE{E(5E3@JMWB(PNJb47|OCi~Zp$qNCgt z6f5LpNT5PkrCAPl<-@dFMIpsJW;za)qL2r;=jHmIts!j2G2~Vb^$qEZudMkgNh3<{ zPjQS`-EQXa{-~Xftt{eAmnP|jN_NsiMAoiL)ta|y0WT2sg{7Td{yn{uV%U?sTM`qm zlIjsG%-!cb(R=sftt)jX(ST_I8#KnWB8rjy9Cfq)o)SN$Y<+ zKJIuo>(t&T8`qB>eohv_N7tY9Tob~wLyt|{!>F0N{9$ke?#d=5Ah;Z1!y#j z-nbX&Txl+(TV^ktdcYMLI}^eCfV19zesGwJw|G-7{j5yC^S@5BR73fL%`$q8xatJ2 zod7FK5GRTZyvW}Fxxf_4T+yAO>Wwl`NRgcFjN{lt;Mo=B^%4F+c%>iu)iRjg8}SY9 zRgvUUpKW3hLzwq;Zv+AAsR(=w2=)s~v`%dolDkY~A$FC5PMxK84#&A%N1Xo0_@yr= zdBaqa2LxNhUY=RDom9D`Tkz`{7}LhxawxFXs^c`NT#@r_O?m^6W3&IvmO*n+LxKSk z%oOg`=es;)`}X1oTEHw90nGCF<%pcm|B|0n)VGSyzZ-pW zS~9R~#3?|x*s|d0ymS1e+1vH<*-Bg4Zd;|);T~VQe5kb1J|uW0UotP5_rzjmXS66r zDP9W7_%ONTjP%a@x`KG{2q0{{)z0{I<)*^@{G_Z4L(CX~9O8}Q-2l8p!yDcgI~!56 zWWA8AqN=N~9sUT6bcbI|!5$&YhgvFz%euq@xE-Vl6Nh~g_9j& z*@oZ6;rnAcDK8mluIzg36X{=UE^WlQ^8$eT8xz^$2vqt~Irl!^Zo~<_m6jNHj{O2g4%z&@3TO}=g}%XEK>nEtR4p<0)*y{hQfIXP zm$hlFRcXStF&i`7(cq_84SRLR>5u7q5~5aANXfFcjy^nH`X=_4X{D>c8Sel7VV((B zu?+@2JD^V>qkmTyDSmxB8n?@1AaB$JsLTsBMk=xaAt%Q$p3p4v1%Y$yK8N>S8hBIH zQS6CBzfIuiX3&y^Y2#Y$*013gG-9C7txOGSY#bW@05tT|1-3*IAP@C|E;T;d9BR2E zn`DD~#&y`v_2JH0W3Q~2W^c6fK55pCHG7Q*vk=x=uhD|$fLg%a2EZLM?EoNO4%o5D z+Jb6!e}0>0b=jWdeyg}sBYW25W021cIyikzKhBZ_=pkbO{KlWInow`Ff4Ai2(PDgx zyzdVTr5PeeD(hrZd>He>xGE|VnW{kMBEN{Zf<0M78snY~67F0dJC;dxv_`MiG~B{? zZF$Vg!|YO<;?+__2pS#aC3wta`z9WVH-}A!HM7VKW1m;?!n6J` zK+1j18AckdBR7f)+n$Z#I3$`MKw-GtnD)#kQ`KvO?QxRhyOgOwOE#)-U%%*fIJ>^u zK!ZZSD{eT-bo}&mkvZH`6+RM;(xvvE66zSx1}#=Q{oKYj9cp1dC3HO`rO;(*>-yHP z$4Y(1Siv(m$l{B29lNofAp^AoVhvVA-h@CjQxE*=nOpOr5opDY8}Uj@f@7UlF3g`O zwbn9a6s2Arn#+o2Q23}GJYtgS4}_O!PK8f!*LhW`vZ@rJ-YUAp5un@mfU;;SK=9Tj zjK5Wk+lJ#HU$krd*E^-o$j?xpj&rk!t5vf zpdI#Qk+wkO!Tt%#q%VemH@@~{QDqBQg_NfLyA>`Ao)^5z=Y}7z4zBtJ%OK1juS%Dy z%V=DFR~TB{QZq|sW1T7w9!LL3z5mh>F|cBP6WNh?udy2USL+WuRlbD@U;5jGy2D3{ zl41ARK~x+u~gKD zV?GPW6&A?30N|Ar2FOo+!nhre;TaQvn|f$8H#Y@{CM%2C{<~Hx3qG{_*~_2X9?C9{ zB3jvOLHXo$qLKIBR6@;ElDaGN6TP&hH{(uiY+>lchEgD3%w4NCKWvW@*db_WS%(K{ zR4`14G)j7^&uKDF{I6ql8?6iD zBf(SF$NVgJ3|F5UMCUPh z2il&5d`x19TLB83x!2w*;U07cJ=2C>Z7m0QfNMHPE-8z}KCWt^KR5pi-2Bz?FqWXc zmSFN-GyBkXqa=aF^ph1a&p=>)t^N|+c*W)ri+aLte-3IRq^h{o|KjGDsP5o){VoPczuYG!~8(df)l{|#iGX5+pH_b&PMP+X*m z@$aztORmgA!sV5j>LaVg@hg{nf}is|y*ppTY75QPMi6St&L$%MSwVI?b<1@qu(Rg6lih^!e3X9$e z@PTckZRZA2d4{!lZGy+)MbDiL`gHp0wbqz>ACf1O>faAMDBt?kR&$0w712m)`Hp8z z$BD!{_hj9JCU}+#f3e?K$S{rqUMFTHS*LNqIN;ei-W$fC2f#G+SrWyB6nG>6T=SK0yNu9JULE{9(SiD7L4@lkTR3u6ol)`+lpa)&0CY62j?)xhp=!u>RI zRHPiyu%4QS3B6$e-#foA68*?#XI^iEX&Yxee(LXA$_wgI=`Ia${z-TaU0HCe++^H= zxAEMf%qZF*OImVak$1X0Hw#^iMH^>Hucz(U{x$Q#Zd&eoP~Thfv65X14u$#?2~kC8 zqZva%wVS}<`H6^gcyhkC`Xb0r#W{a>V1{;$n4{8RKVVd9D{d{KeQllSVp{0kw9q zZ}4tBBv)o_dv3wIgvRQ4{k;>k>z#0ve6L$^Vj8kGJ_Ttc0O%({9;H3q`{vO`=Ejj; z?jywuMua`J$`T6$K5e6qF5HP94nmfPF&4{j=D1jyt}(->+0hTtvVWzO>$62J7EKLk z%&)5P##`M^s8jcvRa_nXyOkHb!vb>Fz{vwPmMA#VR~l?)GgD^WFtiM&*;^ zu}hB4N6zP0k7iLzrbkO`d_Rvq&Skw3ShOF%nD}DR0MOHToR+CAKp(rGCKkcK&!9N{ z#ii#FiBy8(-Xky&HDwDSfxaXFl~- zODy52LstOh_~XJIXz0f;|q_=qij1(s*p zyrZ6FTECNq=8p-MIGDt9E`F_Q7Vf^J7q{LmFIjE2Fbzb;1zXLwBayM7ty%Np1Xc8n zU-9RAZh67qY6=*H%QmhS?el|1rYuq!`9Wif8tO|zJN+2;h@>RKF9 zX22PbSlrh1jCM)3GTU^7${0H6%n~syHDHx`#)T8+QakhY(c~7XS=6RXlrQiIe!aHY z4za_Fdq^7BOOG+9(9L7$3DQ_W`i*`IZta(0I5*w|E6#*ECy&{fwZXrmdjZPv%AuBl z1U~*4P(AalLGx?%sV`=;2n-EF8`x}*jCojC%8&`jeTh6{S5f&o@56gz?gDUyMp%j8 zSEN+zm@U9&Os}P!2%3Q$_DII8pO#47Eo!zu4EG z$4sx3OK3*P{jkhEM#*eCxQ?#t;?q#dPpW&GZjo0)v&8Q)dh4Ohhd0FMF>8q?*9|na z>XNGf_#bCwJA#KZ(4;+qkUI+98d9iB2MUM@N=YF}erpV0{Q6mZIKFqEWifIuKmG)V zN1voj@tpYbscTmaxuq`cjxT{T?H8Lv_Otj$mA|*ms=9RVeQEERt@gQH)?UxjSF<1O zNa1Rgxh4P|%&cWs?>{hb2lq8%4F0$BOld|$I-Ar+P69Ltn{Lc4TCJ<`RLHZU5B1h` z+hf4&q+jDNB0Ijo83-L0c`4(ar@grudU$RQ0J1vm#iYgkc(~ZwRHjTxddVV#mvs_1 z`H2-UfdCmnPxJ2BH`_izNFE5RJzHu_s zIseJx?$3aWQpE)MI3_S#Axf5^{mUMPu!+(24H~;G_b2)1YvTcas(OFri=0_GJpH`A z=vRxJTg}p1O8EuAl``fy%oVzK`{^d2;XSI!6TR7h>7^}k&4Mw1_6DX3SMw4s3fKdZ zWd?osN;9^~(aG335xb!=IRBENqsZttDB3(y_0L>gTA^c_Kcvs^0!ceXb*UmGawlqb zcbgAmQTt)e(i=SS4`>D2OOtX8gB=3jV!mKz-G=s6nKOaLZZ>a3`384gr<;RO8oZbTp`rc;2%>{URGVd;)6MOc*Y zJk>UglpqY*pj2zXwDafqsw7*UCqJZag!Oe7h61Ncd7NBiP3>F5fm#=M;wU=2%}dqJ zSbvGgAp2Jn&^3M8kOR5HXPh6GP|0uQcq`x*v2z!k3^!pt<5C`;AYPb-0h=CX)hbs$ zZ(gb5Ca_tj%YPZi4mNtiJAH^YbdWsh7f3<5e(tTZrb-3{d>0zuA zp`%YWL6d-v?C1GO5q%)s-(7V*krhmSD628IvuNM@7e4Z-=WDt-SuqeK>JI~$GS94w z!#DexS^Ax1w!1X1jOJVv0O?I>@$at;v2jY3IxpyknN8}^;yZZVWi5rp|}s?oj-RmO-{#IK!okdBHZr=-hE*Sy9!s6 z2JbJ&negkxX{4~pK^AJZHw`0?&^s(oxFnD#HS|RF@B}3-H+e#BMGAoi3z~U`nRPJPVlhTM`!#_z z@gBK4j*hnsn>`)ucC)Nxn8)f6#E4nfx?!aE3>{>R7FB4c98Hf5)Af_Yucq^CMwOex z`oovqvJ$LHNrg`rg%cKvC_gEdii&Q&VeSrNq!z5*xuN0S0GOtIUuOZOz1VB23EBSb zwQMzxqP4?Lb?W;;{~mxbzGW>ci*l9?b-pNQ^!Y}D{jxt<5dG19z+_TtYjd{u)}eJK zp!u|5{Xi&UpWKiruE=9sJPZchE7AH13pGN6g)^!kOHnSs^D78kg{w%25)rj^(H810 z#A#U#=Os1SK+x|giwGMjEE{#P$Tkr7q1_dqSr;1!5tuB=z`dC>n`){d6`MA8jI9~~ zM^E;|*uwYegEL4RsM?#w>(96S0!-8uimcrBotOcel%=YS-}+(AEc`TpqC z(MkPVxzDf#&f=04H^yggFepKXq0jvS2|(V=C#+z>Zx(8_B_?;SrRhl(e^7}q)EZXv zN7+;cAdNVwE8;z{3A+8u>}6Jps zJuv10tI{oh`Hob37e-5wU2TJ73*1j?zFVrav{oJZe4>bRhc~> zV%FLStedUR`6@>-J)DKUaQu@HHj``{SNPB(hu)ttcNp3JImSmM=Bh0Ns5Mo2l4fRzFMDycuN6$6T*Ppl$Rncsx#~^l7 zKg2{<`d}+?0`B*OOFo3ySz^_;kRR_Hx8hN=(KALkx2=LXBgrsSNwgxk{duYe&5GMf zFz{5*C2ZS*r>gn>=&Am8ZGcnlzny*r=1!Y#hBUk|7csVp1fj z2>fd$u2RoYk!mf1uPT6KolLBurd?`J~o&@Ic_|1Jm_~+65qz|~C0iK2y zv1j9$pW9g8;Vik6_lXaipOI&EBMfP;z_#(S_)RL<%eeUzi;N*&zZXDpE!A#H%X%`2 zSCs%%Z~b(v#jnpDPgV1#(mc{D#@e*rp*>2`7uBc-<@Kh4E3dV5R*v8Q=$WU{K{oh` z59l`%edQ3p-E3Oqo?cvsFZ#p@xRda+=|^!t{`X(eM@i;n1+#aj#GiNmM*QEoft zA~#dIX)C7VHwi$qBpZl=UxRY3hL0rIRatE(etTgmz;nXWY4#LeH z#G2`0%)sXifa2I}wd|lJVSWO4640a+tgnV=8j-|y5-csY;+u<=3(;M;Xgv8FrOM3M&?W!mB@_MKH+08>><1O`vXOYl8Oyh-Xl@ zCz|uAzDXEeUA}v$6iWQ}K&vVcwe)_rTTS-mkz7Iflkm6VAwxc6#Q9D`gqSPQdDs((DD3Tx%Y&i7_`=PL$z zqJcR}Y<-kxA`6l{(!F>uc`o$&L{f_vyXCN@FX)s$H0Z|%n6t2q)A&?^>53F~Sr)`) zJDY=?k<^wFoVLXN{ain@GTXuEp{LxR>@_txG2!%n(mNjh@ND0#x#YR51zGRi;dpe6 zkv9N$Xw0-;uzlNb7wP;qU1(l>A-eDLn>dqw$=-40L#QElwc4f#8RZ>WSIt_Da(UB@ z9QKy!zFiit_Mg`&O%pAWKq?d^Sx94mB+=5q^tD{uRroNZ3p+a57|5F9W`Sg}!(q6Pc%+6u{E(6ZF{od_%)Fzb8Ljyn<-~rdYfjmQwr4NO` zZB);EYUdXTxP_^D6NQxd9Ty0R6EozbsW`s<;Eh4r&`ZNvty-lZz*V1lA-6f%W}w6- z^_`rGWnW9`quy%ReLn+L&SIOO_>6S?yfz&Es-LO9=oBW@60AotBLOJr^b*)g_Wd|x z@0!~uk2li2ELCwU*tp4{Ck1ja>g!;Xk~^dvQWxSTa37pgDtd{A{b!v<2Kp@YTEIHt zgcArBG%ebjVGPO~N3sTl0$6_1fnFJEMehO7`v(!Usl5$=-kJXurby$sH(LAVlT)fc z-*5}9VW__JBl7n_nFq)}6NRWZkpws{PjDA}xq-F@wTnJ6yA8Lk_qjH<`{_Qc8oe~gow_*gQ1^Ol)!KE?oW;kc4tRp9&A@d!-u)SvFO9X{ z-}CFI=qb;mGUvxYJRIE--w!%SA5*-jjhB&J5aXq+jEeNPpLYLGz683l-z2!@9_2{$ z05$V>HX(ygFc0`Q#j74Nqvj|*ixUf6abWEK^`%ehlq?m0|F!GZ9AfB;A-658o=b}~ zvH&r+@?9B}D9y##7r-$x7nhJ1?@TyvJy@6v2;@wFK(4)nUqaDeWa}Sd1x)O)C{=TN zs1f}7r9FN9@YT+eV0I{PAy<&1ca`U+mGaSWRR0<7nosc0a0{wKayR!cAePn0>N?V3 zve5vT=pS#SsO+J#JvE^X@AF|CwE=jW&e-$5q@K*+6)b4iJ00hM;qYf3M6GWY zV>o@OXhkswFq`bJavnDg%5P@Q^=Y6(SgQa8UMU6wH)0cVS(?@q@3ssDNbZXxy}y3U zQKbN~{$v39I{BGB{m-^YJ6G@D;0F?HzRgX%*U#w=#r$5TUc zdI=$|^Ib`>GnQ}6K@=*cz)M;3=bXd^L^-BAUHJrT^#{&p3S)!}h`Md|*{VA^SUc2{ zpZdlKVi8B8O^+^oU&gb*>@|S6_$^sPOU-_0`><%g-t`*f`S%7LDCk@cSpKHR9d8YU+P5l29 zy^cfSuRSUnYwF)hrMp5eK%%z)E{j>l8;Q}t(a)B(7dI-6AAe$Kk>cou;y;HsNbxOU zFHsBor9leZM*mzmy2XASUL`B2p~8ghou2n)Z3Q-L9nWx6um#WA_S0VsGhe=6w;uTkM6ifk1+b6*|@ZD`*5FQK0+gnb%u-tKY3iN@IU5fUzLr&Mamv0;>R-r&7MTn2=UV$aDF zQGy3N`YUTp8@q}UT6#)@$PMom-4FfD@wc|7bfRt*wBd3r%LiUP$)J(@TZMty@W|~? zzJP1ip8Z{SbP{fBiw<_Ys_i*wb~%}=hJD7KIj6u>2u18!iJb~f8F%JAy07r=IC@$8 z(_)Egl%^AaE3Ff%_D&dSy-&UQ}fUe&a&kj4z&p5t=-j_>w z&WiH7$8Gn)B`n;FFM-Cfyc!web-Q=2Wn#d^pQOt+(OL$pAKQv0bpAUE>RQ| zHehFR4e{~PKkerK!h!hz`V%gnWfbW2vb2BmS)hOJP>4Mb;$lu&$Dep0pu>D98YT<~ z`67<{x~cZBKxwq&yM7eGV*CFGN=#2F?bH8oisw$M^i8UWU8<$2e*%JZ&{ufv*BBw* zh;NDjIPxRG*D&67kPyXg0OpJhhm~66yW+F`4v zVI;<`6UaPI%Gy0vnwRZ~v@ZPcMXbO~_q$_ZW@MQj8hzoSj ztcZ<`Fm&$}%+cH7{Q5{6lH_PPn@leYO@5xfSgR_Pc8Rj{Nqi>ERP)Jw?VSMfJ zcI)sUi!cL+y_W~zO&%pjip71?i1WH`pdiz*hD%Vq|Tf9nWoF!#l?PW5>Z%f%t zr^=1tZrMs_Jnr=zEVTyr=xY!6(ukl=4emCBzj&@^%Kcky$pbnW{{Gf&=mP&M&F1?a zdc9@L>{Agk*^Z5#*nCrt2bV$2obecSScdj=}sl|iB{q=ZUmtDq%JXUr= zK_0cQ!a4c&TEy$9o+G7ye@UB^W}34@sTkFDh&$V0`)qIEzKaE2;6Mu=>iMz0tRLRy zo_jsVN<%z@euA$$;{ne$?_g^?*w1O-g3zJBPP~*J@{=-rXIKRb%;l(Wj(&c|nn%8_ zMMl}#@bM#)1|SFQ4op=ouG)ZjdI(L*O{M6sYy%-!!>90UbnjT$E1qzR^R|OmT~`=% zD$ovx)t!SqjPF}Kw*^t^*_JGVtMLT_1426&_KHU@ImmWo4I=1i45n8PKHc>Un)G~0 z)FzV<;Vqq-NA|8T0C)So(&X-2*(pT$zS4W193X5U_839Wp!pm0%(F zv;^4I(PTvUf}9(78J6xcd9}W`>WAY?otG*n_Q5B26o6m%;KmP#>&Cs*KcmIhl3gy8 zf`tEpTW4*p{NL3}4A2&tgu=Cm=l?jxm(FK7E2j|MbQ9zP`xi<(w&XR43hZQGv-@`# z5^3vwJr-#edOL6tA_{_&x zVBjABuB-{LXT@_%oG@ho#yZ-B&f!M@-;tu?BV5fmaGJtumR;WQf|}i1Gu&WNGv9Q+ z=DA}d1vX2RDW4Ib%6i}Uh{!oan@XktY)S!;fkv6PiA1&@;MKY0;766;-I-FA`7gsQ zn`EnnsfL$2x?c2yr`460Q*lqa%m2&cLj$N-G1P!`#8ZG~a*<#78uE6PWdO*_pSltK zwdn^Sr+ts?Nlz~1`HtKW@sw9zoY{hxNRNG&66VDPT9JCKATMYYNKJkd63XgswF`{2 znVYee-rdlA=)H2nW zevyo?eOt|Fjj##8YFA-tRMOy1xWKrz<1pusG;>D@b!gtPky3{47FIE6TZC%r)XJTH zcc)0lhpzW0bp{G^r)iSoHjG_M^J(44AemO}9#xxuBVP0T-D9g)>m#|vd8}n$oBgT! z4K^yEA^N}5kJ=&PQUKUw+j-~dW?8=^nB>K5ayoLU#UJ1k=~~Fl(X^^|X;aT1MMzoi z?S>&U7=3qnsW+{8IY7f`>vN7Qf=*1Vca7Ta*VETwv@SKjTY=C1b#QuW=#p2jgA|@30U*#XJyh z)XxQ84M-RtAz2@+Qma~vKje$WZA>97%}2Z`6|8D~{r<5;3yc7?vk9J3WXz2Yu5UAC z5|)>wMz)0c*Bu1P19`tz10);GDre4mz3Ry;sBD!^)Xn-Q4P(4ts13!qs^QDNWx$xcrW=Pc8VsGjLGWHE=2ut&g z6>2K*YKV-w>W-x(UZz?I2)f*jv9v|@SZh#nu?PAptpF^K2Kob?^kEzLwv3TOhXHb< zo7o3wXX?G??DoGSz%BM~6ddPcImV)>_x9ht@?({R3KtX`{iTN4T-iI-G6G1!*2>{X z5w*ThjSFI$)lObtT7w&MMfSP(@!#HBHxTW6OpGbgL?h#3a9mSh&Ce z2Jn3y%8+POL^^>Y*zE++9D95kI(O*rNPcOjS65EQ@uh3>y>Qxi&nuNZz&W1zFxz_H zHkG+gdtU{Lasl%gwF#!WMuu=-Jeb8i?ru} zLqnEMESLmvWo6DuykhSc;p@NpnopQzq`LS0_84%F(Pt@KN^-{vspWB>oy0=bvq>Nh z$2kHQ^vvOVZ*dYSZWaIFMio&oh7tJpx1A(eND(M$-1Q44=U2q>xfb-xDqKHt;^q%` zxM-QP$qMhJC4f(MJKvH>hQ7sblu7}yEuN1Zy6;1i!4?{|l!i_o@<4FEjoAl;v*GQ*8gD zlH-nMbSUq95~W;;^Bp}`<-qNu#hIknj6ARZ!9zLk^xpm>1u0$xiQf)6HUbU!FP2)& zZy%m+scONMdrmiHW*9c}>6fVLW#5sq^(>UT{Ktt)!$egH{B@by1vmNvI+yy-wbguI zJqzidq>0#;QRE$zJK)i4!@liqsb6KBi{09Hq@l3>hyIkHW1@aly(>f*@0G_NFLmSP zD~~4Aeu{P9)(S(IKLRt$GOLFvR8@n1!>d$s=}fjL^h3|N^UUyXPt0B}_8SfP?E>~= zqxhBGyRH>(xM6?tuG5{<=DXkQ-s%)rcuo7KpIM5#Ic{brwSSI#7mj|i&-3tsj0J@J z+9O*vE}ClmY-LA|xE%J-!P6Y8kIhk~PL9!WY;n3!JG;;Lf?UWK4z=nN&9ydoR8`$Y zyif1b4iTLt4WK*Dhmjsfh?z%=#I%~-NjnnnMc>ut%0!^qBdo-wc}g_TMc^E2p58;xXyb3r6X0f$gBl%n)BJ!8&$e5XqBScj&5j zNw>DlImy}1))h58Af*N!&6BrXve}}VzgdLZk`l;a1D>lW@@$BbT*wIv2TM2f;SPLv-n$sfNmw<*Bh1lM_uk3oZc~iT+ur4 zD}8y1RxnkuO}#x!xE>W*sw7ynE3ix3!0cK17Pd>@V+=7HQ=vr&Q3$*qg9(c=2zFqz z9$5SJXJ9+Xfk7M5r&1L=T#tn4BOdKRBNVI%X{=_s#)t2*?<;b15~5#M2Q*^e1;8M% zZH~w+5#_YYb}Wc02_X^J;jXAd2U*@itilIOWGV- z49|UNuo=pI;AxwsDQdx zIH2q3$D6X-9NpAsU&U4tv%}gNG0FcB-pto}=^h?`>d0+s+{3vCac9_HzEsx|@nMT6 z9;y=vz>vBq!LNo3_)&7t8%QK`F98MeVwiBWRgch#zE_?!GC zv@u}S+^vT@l6KC$=(#xm5OG|m3*qu27&Vd8VX*8#IWaKykZfBuKjviZlO+-kGmNw< zgC8?m;v>WYGq)#1pFVg~Oo=e}j$T%tQ@piZ56O@_W&ZqAWx?E*W0!s5#x(hr;%A%( z10+vZvWbSy3um+2HX!a^;|;&jOz8+cV;~wZk|fl_6W~?5s7~su&=MLp+1u~0fI3o^ zCY4%I^!dJgq<1OCxACEhR%vKZnip*^s=YWZ=yTIR?PKvMv!7Auhr!c3tQ`sSB+E#- zn#^YTw6LXntWbRQbR#+I#N3My+daCp@5|Qaxu*+Ar=e3T5@J*SAy}obr73HkThyg> z61;pmfzMBeR=f!qwYG}R%L)p}Y_@5CfdS-jkj&{jtw9HlvAXyh9$Y-=aAKw~?&O8h zy`uY-CI~_FVlkw3&;--kCstwGW@l`j=KM0WBN+6ZfJ!uP!;8OfMC6Xl#^=6bUu)(@ zdP$!XZAr-RmPTJBqop_xIH2zeLQJv4jjHqo^35$W9bR3voPKfNnB^u@&jZB0j=yYr z5)rcpbt~J)DpJ2{{7CV3Q(g8!YW0twfPt2uZLq8@=UHMRh2BG5{~SAerrk*!?1hV* z=kwtI><|6*`|UEN;xJKX>VbapuTrp~+Fh&U&j;S>P zzBtEDZAX;Z`)h@9nObw%y1vuu^+TD<>cAJAb|@f~O4>^-T8{@i7{q&SPmWF5{5Qpv zpcly_ZL;wE=&qe-DvL%pNIkS@DL&wuzVJ)>sksK((C+z(AT_O=qMPgVHi+m{Mvso9 zc+moJkB_nYnsM^p(<V3$d;a5D%SR{E5|Iglo7}aH~{ng*G6l?Z{oQKZ~XORke1mJ%iPxwh>b3U*T>B&pL zsuCjQn-@n-yx%q#2z*1m-RQ%GV<2H#8~w%bfE#DRZ$I$_=0D#d>oq4xrpxE8L+3ua z6~D_C8vZpm7<%Z0Oa7v?-K?fgbHcPXuq;`9InzP>=05I>=|?)(c-NCJ+e-wDrY?J+ zw*H2%Vac+tYfm#F_m`~EWoL&wfbQfz-xy$n@MQym5e|GecX5CE;AoVPY@TnAYvM=R z@ctT`!2SiA-d?yvO<^TB*_s&(>_9-GAmimlFg^&x*=TT1aM*)W5$e?{_TCaT`hhhw zl~g8ULT?ZEHzG=I%k%i!Tt4-MFAi!C^0_w_<0weE%2k;-3CADWMn^<~Q zc*v=r739k7gKpjwdBkx?n^%GO_cV$DI6vR4@8tkced{?cKHzR)>E>h!M$GN+j+=laGs2m z!dEYa>4io?FuXW--6s7*HsX?J2x%GNa08xvY|!{h3ryHE9$r-UZ-PsKKP+1rU);gWFI1)LXDUDy4>c@V) zH3ntTXG;Au^$lu>mtDenFMf3c1GAp2aXqF7MwEZ8;yJ*xjlPy>39fWSiQ@}IJ2pXSbEJMZn9!j6(_%Odbum77&#q)v<~=OYCR0Z__?v(!6h5) z@}hb!06zRC@U@KAWs{t=%EGSNvdK#0++NSBs#yXKb_SQkja$_E7_TcR;1k0f)qxGd zA@2}os!{V}p@jGpdK`I`E+sA14BQXZ?r};?YS;-B|#mL{gwr6t%34HOF|jvplMExsh$87bj<7Fj=3 z&5)VwNpomu&$9J69j+jmN-eDC`@9zjH({9q7se>M!_W?fMuJ*@=Tc8@9nm0c{&G=B z32}_kd9M0PaG0eB^FzS|RX)q^Tx`InxG-s8^AQJJhHpHTI|loJ)CP<1sRQ^$KeiLbA%PGz{_P=_o;=UU%x|>w$gHU&s`_ z+(RJ@45Wp+m=*q!Nv4D?(u8_!({C2anWRh2%{KbEYsF*kw-~ZNXeZ8N*5{ZP^Bp82 z5RP7%-lsav6uFymN1bMTC}Vz+zU;$%YYjM_lu;y8VoMxG-=Ur*KJblzl zPh1xO?=^V(r*4mOR4*e-UiwCrkXGbYUeXOpbD;p7q%S;56VaA?*=k_(+8!@lbJd}EFiG&|G zrr3B#&qDLI#3et1*W_eXZNFIh zV9IWk>z>qga@a9RYuog1*RB}4VcFXo3qzhAf^u4mUBO{0?&3p4rw@H38fwINa<$2G z*iS(0E`Xc6@^P_ltO*=A^Rn?9tU<;$mFbC$dnZq#2DQ_^0Q=Cnq!AKADC^#KJtfA} zTa6nrMGMDtko9|OM)&lmNDK~8fo0^{c2B1HZTVWnu)6{X8p4Fl`ENmULt`in?E4cD zLUa*LXCZM&+k2{H!ViMlXGsQ#wPZ!lB-r6j} zKNWBzzD^rO+2I^LjuuAPp=0)dqN`as_fDnu#UCeY*h_Assp{s{UfXe8KUYgUq;XgCe~mThHc0&LwO;gPAwwTRsC~)MFwcv^UO+=JceFs1cH8 z6AC2SQdN$r1 zP^D)3T10ehoJLIY3!|-Ix)b)ItEY&zc{F@&cZcD2<+(tld8UZ3jdz10DN>*oZ5?_q z%xjOd$+7Oh&29wx*o|=Kv;f)j(F#AFWfjWxv~^Ig@#}loF2%D9*vH>CA`rt~3Pu@{ zo)~^O`68bPb?FB{CLUMx8BuEpx>|G>pOauziLVDfhxOtgJnAy7pJw~%HnJZzg>AjK zz|F|H8%KI{l_9*~`uk&Ly^}Us5DVRQNV_$EtaR;`hy4V+X8aGvYU>f(!?=cZkc}~j zdF;9GfagLg*t9X{E^ecvTos?&`v>@=BZ5(>mAH6Q!d{Dm-&;w{Y)s5P`k)MF zHD@K)XgGFtE^Ywr1Jcr)ERr)ym+Hn+P`S{xCx*o#jHc1IIfA!Pp8M2DD{3h1{%+4| zt#8T|T28o=phRv`EwtTWE>O4un0LlCOY^opgX&x#n!*yYnYE_TsBd@85o*x2i~184 z(}qXx!YX^K5u6qqe6g4HSz4!Z+^NJMa}9#rr=6iW>hJC7!rhX)VS$w{-M5^4%Jqvr zhP?ELs7jkK72{P_8w=#!a`)a-TTtx-_qAee^ug6;%|c*d@@=aOF9s+L_!pB=x?>^0 zU3XR9v@Tq2yGQ4jK7+n5T+5)R(WRYpUw!tEw%icb9C~X0uo0*{@v?s3h_T$f`(+P< zCQmo89$P`&GeOURVXl}r9#CHQDDs*ts3MTW!pP>M+j@hNK*OY^OQEbsBGeajf`Ti> zwF757)%XzGZSzDFk!&I5Gu%h1t|#I{nP|nZC7lLZod!2Lgc*$~EH=@0X*wOJMHq1m z4EW>sh#t;6NQqF&K=ERNECa`>hOsyF+LJbbejO!usV~o|2Wm#zNFG5)kB*uX77AE> zc*6W8P}-B$(Q6PyO0s55YryMo8m+pHn1^3_R=F_UK)RHoCu_q$|0`GF+>$aWt2Kb) zMwvs93@WrFbSD*jZj-iV$##B?F_qed&v{W3r9jopK}`}k1Y5Lt6R5b0$J7iee{n}C z^`mDXlXwVB$gq3<6V1`!kHkT)0xE)KUjE*%&)chXkyW(~zitth`QmS&)ciu)GOsdr z$d~OW>Loq*#=hMfRVk(w2xKn7;dqF)O423c2|SEutM(4f_Pt`v2N>UanW~n9BRiTj zB4Ub`j&Xeh6bm*0-tE!^MXAYb!mH8$%ie%%Fs27=hUZD13sycuij*ZKA;n@p5bj9&Vp;IG?nWPDwCIvMuK@mb=JnxZ zcf$1K@2y%<0rt<|Qaax5LhW^$`sjo!mIHSu7N>h49`iC?Os5h zN8}CD?^}A(k!jo8o*K~vl-oIP8Wm%>ez$9v|I*yx1;AZ~7O88*eT!m{o@X^WpJItI zCvFPgf}<=hbZJwHZNnDdk!Gm90-Te3Rzi!{I*GrZJ>U5>i{d{2St^z5p&Hsl+o+}T zN&w^J!c*;M{eJU5Q5JI}H{pC<(YaNw!R+S2zd|z;P?XdxN-mH;^S7_nyTiSS_uNO3 zz8+IP5SUZ>`Mzo{u6*Ee7oXnB9j<&y0|jvb{OInFwD$_%!^4&A+_wmGB_a6jM91q_ zgrIQiTb}Y;l=<&NKTK4NI_JU!_s8I!H|Oaor<$O}rTLji1R{UO_k^6m&d052~n`4P*9n)$+7Se}iw6zY|#YL=}nU=GMuU-mBI zMcD2Bo~S$`W}o5HYnFVI@(Tcjh&R4xP*d$CL^rpkg>>Ew{>UGMc_(j_cr%(!`w8Gy zj;H?2nwQJYRbD06 z5D!SExYdkgCCcCmDn{=6EeCigdJViKmAG08aM;N?6j~?Q!o7dYI6e6SOp6Vmi;c^= z_hS_LQ-<@4Wpbe_%OkgmQi?QdhuhLb8PI8Me9hUMK8L8sgU&fyLN8x+gQkkl1ZApU zR8BYHO9yo4TN*|E0+~gz6Bg0pO%ZA{TS!9@;+EEzUy{NJUji84PqEj0r?MTeUnMHaS=PGANCOwZGB<@QBhYRkVy z1V8R7FT3~_M`}spZ1chNxaE1|LGUQuKu87r=z?3*-I%Bl)rqoRHEV-wZ?l%^18hR+ zb$C7PKPw@GWk5e?iQ79uZyT3I##o+LzTm;58OZU%Ib5+&LFE{c^#Jqp@|NYVarUEB zCUUgYrXBbP~`tLgrl`qsNu#nv-cmxo^eu7if77Oz}J^fzM(!5CN z6;0HooYYHvDq)r57x&QRPsc8Vmrs2a=Vjn*(8@Lp>+ILbXi2Sl)K%+~)>>?IjTiA~@UIoISwwWMZy<2(Gmn_5X*w zAd7|Eo`&K)z0l*`*dG;OBCyk>w5H>s%BCJihRDqVx3p~nNV-mu%LgVYPD|#g+R~Ik z*`#S)Y#YvPNk5fd?1Qd!b%B$cXf2H<(t_U^>#LNb+SC_2S|{*fOAOn6HnoZKnosK1 zBi?(}t>t3F_D@wKZ}IIxU=a5J?w|ml#)j58J-1d{%wr!DZ-%kD4th9$+!En zaRcpkXScI0In5aoJDy=7wTpZQ;Ec^OmSkaBz%ngL{#gmp<%bMl+RpeN>aVPGHi;4p zDU}x6LnWs3h#k%8^2%gLow^>=x=YT2IClraoT#UCXy;7Rq__%#3k2xo)D27b;RQz5M=3 zqJU}N`{d!=JkOm|3l&3kM3^)9VSrW9CTcU@>q^e=#<6|+ymL$~JxV<&Wvy(VnGZSJ zIOKCP+UZ$h(*KZtLLCuo&>){6b>vad9s8~&={2>!;#hE~i zN5~~DS;lBOSy&3>lyLoT@Aj>rC7OiPm9Tyi*P5(t^hdjHqDjuf-}Grkcz1kFXi=NX zh=Jx-s3lo|uT?Qt($ShHc&L&fVBOxmd-P%Pmwrl$DJ-D-4Qe%+Ik=tPuZwUlacXV% zOha+-3ZnAB-|>j$Dv|H2`ddzV#h`pkLUSup-?HK>^}TP|=apL6|J_6558FFt#AFMo z=dV3nUE({!^(GZ`9uyW0-AEBqFZ|bsuhxqn2({y}^LL$SS$S0M&ztV*MTvK<*=}Q@ z%2-Lc?>XBw`v;Hm!T)w7u2juz;U(Y8ukAfa-@HKkI?a#kpCBYgiH{M8%~uTV9c!3M zGNG4w9+fl6y-&@co&F=&lh+mnOb5s1UuCvU{CYrH1h#ya0cijS;WZ*3vcA)JIy z0bla`ub}Moi&?X#;kCV&>$g<>2ruq;ekE9;`}d1@DBxy?#O&T@mLA64n&S?p)e}O( zSKc>_bC5o3w_CaL&bXK&5bH0@a_bv!VcV6=+KWG;Ds|ZzvpW$8yGM$<;dmYnmfZa^ zYyZpR+V1@TliCHS-NRpn`IX$L!~n>S=y?B(c)!gx#wWoLf$%pNhLXoxaWnd|jDh!h zp7%d?Sh!nQ^iDGY=DFV7v0gK$l#Y~)&fcuCG8iKnsCB`W83bx6@rAt6Dm6U+L;kKnSZ610f(*7Yqntb-#cR z!dKM=NMTi5f)G}X1qcDLYAZnqtF8hFVbxXO?uS)Z0feyXDu57HU4_-aYSmL(4Xalj s#nq(Bs-L`?Qd