From 0e3cc554812d7acdca629d00971fb21f86cbdb95 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Thu, 27 Aug 2026 17:56:05 -0400 Subject: [PATCH 01/32] @game-server bug: version update workflows skipped the practice plugins Both update workflows bumped the runtime and the match plugin's csproj but named those paths literally, so the utility practice plugins -- which pin the same package independently -- were left behind. This already happened on main: the runtime ships SwiftlyS2 v1.4.5 while apps/utility-sw was still built against 1.4.4, and CounterStrikeSharp 1.0.373 against 1.0.371. A plugin compiled against a different ABI than the runtime it is loaded into fails at a call boundary in game rather than at build time. The csproj list is now discovered from the package reference itself, so a new plugin cannot silently drift again, and every sed is verified rather than trusted -- a non-matching sed -i is how this went unnoticed in the first place. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01JTocnM98q1YiSRN4Z73REh --- .github/workflows/ccs-update.yaml | 29 +++++++++++++++++-- .github/workflows/swiftly-update.yaml | 31 ++++++++++++++++++--- apps/utility-css/src/UtilityPractice.csproj | 2 +- apps/utility-sw/src/UtilityPractice.csproj | 2 +- 4 files changed, 55 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ccs-update.yaml b/.github/workflows/ccs-update.yaml index 9b58302f..2508aca4 100644 --- a/.github/workflows/ccs-update.yaml +++ b/.github/workflows/ccs-update.yaml @@ -45,15 +45,38 @@ jobs: echo "Current URL: ${{ env.CURRENT_URL }}" echo "Latest URL: ${{ env.LATEST_URL }}" - - name: Update Dockerfile / csproj + # The runtime and EVERY plugin's nuget must move together or the ABI + # breaks. The csproj list is discovered rather than written down: this + # step used to name apps/counterstrikesharp alone, so when the practice + # plugin arrived with its own pin it silently stayed a version behind + # the runtime it gets loaded into. + - name: Update Dockerfile / csprojs if: env.CURRENT_URL != env.LATEST_URL run: | + set -euo pipefail VERSION_NUMBER=$(echo ${{ env.LATEST_URL }} | grep -oP 'v\K\d+\.\d+\.\d+') + sed -i 's|ENV COUNTER_STRIKE_SHARP_URL=.*|ENV COUNTER_STRIKE_SHARP_URL=${{ env.LATEST_URL }}|' apps/counterstrikesharp/Dockerfile - sed -i "s|> "$GITHUB_ENV" echo "current=$CURRENT latest=$LATEST" - # the runtime zip and the nuget must move together or the ABI breaks. - - name: Update Dockerfile and csproj + # The runtime zip and EVERY plugin's nuget must move together or the ABI + # breaks. The csproj list is discovered rather than written down: this + # step used to name apps/swiftly alone, so when the practice plugin + # arrived with its own pin it silently stayed a version behind the + # runtime it gets loaded into. + - name: Update Dockerfile and csprojs if: env.LATEST != '' && env.LATEST != 'null' && env.CURRENT != env.LATEST run: | + set -euo pipefail NUGET_VERSION="${LATEST#v}" + sed -i "s|SWIFTLYS2_VERSION=\"[^\"]*\"|SWIFTLYS2_VERSION=\"${LATEST}\"|" apps/swiftly/Dockerfile - sed -i "s|UtilityPractice - + + + + + + + diff --git a/apps/utility-sw/src/UtilityPracticePlugin.cs b/apps/utility-sw/src/UtilityPracticePlugin.cs index 69539239..6fe42fef 100644 --- a/apps/utility-sw/src/UtilityPracticePlugin.cs +++ b/apps/utility-sw/src/UtilityPracticePlugin.cs @@ -40,6 +40,7 @@ public partial class UtilityPracticePlugin : BasePlugin private PracticeRelay _relay = null!; private PracticePlaybook _playbook = null!; private PracticeDrill _drill = null!; + private MapCalloutsReporter _callouts = null!; private PracticeSolver _solver = null!; private CancellationTokenSource? _secondTimer; @@ -57,6 +58,7 @@ public partial class UtilityPracticePlugin : BasePlugin private EventDelegates.OnClientDisconnected? _disconnectHandler; private EventDelegates.OnPrecacheResource? _precacheHandler; private EventDelegates.OnClientSteamAuthorize? _authorizeHandler; + private EventDelegates.OnCustomHudClicked? _hudClickHandler; public UtilityPracticePlugin(ISwiftlyCore core) : base(core) { } @@ -81,6 +83,9 @@ public override void Load(bool hotReload) .AddSingleton() .AddSingleton() .AddSingleton() + .AddSingleton() + .AddSingleton() + .AddSingleton(); _serviceProvider = services.BuildServiceProvider(); _logger = _serviceProvider.GetRequiredService>(); @@ -95,8 +100,11 @@ public override void Load(bool hotReload) _relay = _serviceProvider.GetRequiredService(); _playbook = _serviceProvider.GetRequiredService(); _drill = _serviceProvider.GetRequiredService(); + _callouts = _serviceProvider.GetRequiredService(); _solver = _serviceProvider.GetRequiredService(); _hud = ResolveHud(); + _prompt = _serviceProvider.GetRequiredService(); + _prompt.Start(); // addons/swiftlys2/configs is two levels up from // addons/swiftlys2/plugins/UtilityPractice. @@ -109,6 +117,7 @@ public override void Load(bool hotReload) _config.Load(Path.Join(pluginDirectory, "../../configs"), pluginDirectory); _replay.IsSolo = _system.IsSolo; + _replay.AnnouncesLoad = steamId => !UseHud(steamId); _replay.All = steamId => _library.For(steamId); // A solve rains live HE and molotovs on a map people are standing in. _system.SolveRunning = () => _solver.IsBusy; @@ -151,6 +160,7 @@ public override void Load(bool hotReload) if (_hud != null) { + _hud.Clicked += OnHudClicked; WireHudClicks(); } @@ -198,6 +208,7 @@ public override void Load(bool hotReload) steamId => { _welcomed.Remove(steamId); + ForgetHud(steamId, @event.PlayerId); OnPlayerGone(steamId); } ); @@ -268,13 +279,17 @@ public override void Unload() _score.Scored -= OnScoredHint; if (_hud != null) { + _hud.Clicked -= OnHudClicked; UnwireHudClicks(); // Before anything else tears down: a panel left on screen with the // cursor still captured survives the reload and needs a map change // to clear. + _hud.Shutdown(); } + _prompt?.Stop(); + if (_tickHandler != null) { Core.Event.OnTick -= _tickHandler; @@ -879,6 +894,7 @@ private void Hint(IPlayer player, int cooldown) // Where the panel is up, the thing worth teaching is the panel that // replaces the typing, not two more commands to type. + if (UseHud(player.SteamID) && _hud!.Available(HudSlots.List)) { Tell( player.SteamID, @@ -918,6 +934,7 @@ private void Panels(IPlayer player, CCSPlayerPawn pawn) (LineupRecord? lineup, bool onSpot, bool onAngle) = Focused(player, pawn); + if (HudPanels(player, pawn, lineup, onSpot, onAngle)) { if (lineup != null) { @@ -1572,15 +1589,18 @@ private void OnPlayerGone(ulong steamId) _showing.Remove((steamId, PanelKind.Steps)); } + // Isolated and never inlined so the JIT resolves OnCustomHudClicked only // here: on a SwiftlyS2 older than 1.4.6-beta.9 the type does not exist, and // touching it anywhere inside Load would take the whole plugin down instead // of just the HUD. Losing the panel and keeping centre text is the point of // having both. // Isolated so the JIT resolves CCSCustomHudLayout only here. [MethodImpl(MethodImplOptions.NoInlining)] + private HudKit? ResolveHud() { try { + return _serviceProvider.GetRequiredService(); } catch (Exception exception) { @@ -1595,19 +1615,25 @@ private void OnPlayerGone(ulong steamId) // Only ever called when _hud resolved, which is the same thing as the custom // hud types existing. The guard has to sit at the CALL: naming + // OnCustomHudClicked anywhere in here means the JIT resolves it as it // compiles this method, so a try/catch inside would never get to run. [MethodImpl(MethodImplOptions.NoInlining)] private void WireHudClicks() { + _hudClickHandler = _hud!.OnClicked; + Core.Event.OnCustomHudClicked += _hudClickHandler; } [MethodImpl(MethodImplOptions.NoInlining)] private void UnwireHudClicks() { + if (_hudClickHandler == null) { return; } + Core.Event.OnCustomHudClicked -= _hudClickHandler; + _hudClickHandler = null; } // Swiftly's client events carry a slot, not a steam id. @@ -1643,6 +1669,8 @@ private void OnMapLoad(string mapName) _library.SetMap(mapName); _session.Map = mapName; + _callouts.Reset(); + _callouts.Report(mapName); ApplyPracticeCfg(); diff --git a/apps/utility-sw/test/CalloutLookupTests.cs b/apps/utility-sw/test/CalloutLookupTests.cs new file mode 100644 index 00000000..44e32558 --- /dev/null +++ b/apps/utility-sw/test/CalloutLookupTests.cs @@ -0,0 +1,124 @@ +using FiveStack.Entities.Practice; +using FiveStack.Utilities; +using Xunit; + +namespace FiveStack.Tests; + +// The same cases the panel's resolver is tested against +// (api/src/utility/utility-callouts.service.spec.ts). They are duplicated +// deliberately: a name the HUD gives and a name the website gives for the same +// throw must never disagree, and only matching tests keep that true. +public class CalloutLookupTests +{ + private static MapCalloutBox Box(float[] min, float[] max) + { + return new MapCalloutBox { min = min, max = max }; + } + + private static MapCalloutPayload Place(string name, params MapCalloutBox[] boxes) + { + return new MapCalloutPayload { name = name, boxes = boxes.ToList() }; + } + + private static readonly List Map = new() + { + Place("BombsiteA", Box(new[] { 0f, 0f, 0f }, new[] { 1000f, 1000f, 200f })), + Place("Goose", Box(new[] { 100f, 100f, 0f }, new[] { 300f, 300f, 200f })), + Place("Ramp", Box(new[] { 2000f, 0f, 0f }, new[] { 2400f, 400f, 200f })), + }; + + private static readonly List Stacked = new() + { + Place("Upper", Box(new[] { 0f, 0f, 100f }, new[] { 500f, 500f, 300f })), + Place("Lower", Box(new[] { 0f, 0f, -400f }, new[] { 500f, 500f, -100f })), + }; + + [Fact] + public void NamesThePlaceAPointStandsIn() + { + Assert.Equal("BombsiteA", CalloutLookup.Resolve(new Vec3(800, 800, 50), Map)); + } + + // The specific name is the one a player would say. + [Fact] + public void PrefersTheSmallerOfTwoNestedVolumes() + { + Assert.Equal("Goose", CalloutLookup.Resolve(new Vec3(200, 200, 50), Map)); + } + + [Fact] + public void NamesThePlaceBeneathAPointRestingAboveIt() + { + Assert.Equal("BombsiteA", CalloutLookup.Resolve(new Vec3(800, 800, 900), Map)); + } + + // Two places at the same XY on different levels is the Nuke/Vertigo case. + [Theory] + [InlineData(200f, "Upper")] + [InlineData(-200f, "Lower")] + public void UsesZToSeparateStackedPlaces(float z, string expected) + { + Assert.Equal(expected, CalloutLookup.Resolve(new Vec3(250, 250, z), Stacked)); + } + + [Fact] + public void SnapsToANearbyPlaceOutsideEveryVolume() + { + Assert.Equal("BombsiteA", CalloutLookup.Resolve(new Vec3(1100, 500, 50), Map)); + } + + [Fact] + public void SaysNothingWhenTheNearestPlaceIsTooFarToMeanAnything() + { + Assert.Null(CalloutLookup.Resolve(new Vec3(9000, 9000, 50), Map)); + } + + [Fact] + public void SaysNothingWhenTheMapHasNoCallouts() + { + Assert.Null(CalloutLookup.Resolve(new Vec3(0, 0, 0), new List())); + Assert.Null(CalloutLookup.Resolve(new Vec3(0, 0, 0), null)); + } + + [Theory] + [InlineData("BombsiteA", "A Site")] + [InlineData("BombsiteB", "B Site")] + [InlineData("TSpawn", "T Spawn")] + [InlineData("CTSpawn", "CT Spawn")] + [InlineData("Catwalk", "Catwalk")] + [InlineData("LongDoors", "Long Doors")] + [InlineData("back_alley", "back alley")] + [InlineData("TopofMid", "Top of Mid")] + [InlineData("BackofA", "Back of A")] + [InlineData("Roof", "Roof")] + [InlineData("", "")] + public void HumanisesAPlaceName(string raw, string expected) + { + Assert.Equal(expected, CalloutLookup.Humanize(raw)); + } + + [Fact] + public void ResolvesAndHumanisesInOneStep() + { + Assert.Equal("A Site", CalloutLookup.ResolveLabel(new Vec3(800, 800, 50), Map)); + Assert.Equal(string.Empty, CalloutLookup.ResolveLabel(new Vec3(9000, 9000, 50), Map)); + } + + // A place is legitimately several disjoint volumes, and either half of it + // has to answer with the same name. + [Fact] + public void ReadsEveryVolumeOfAMultiBoxPlace() + { + var banana = new List + { + Place( + "Banana", + Box(new[] { 0f, 0f, 0f }, new[] { 200f, 200f, 100f }), + Box(new[] { 900f, 900f, 0f }, new[] { 1100f, 1100f, 100f }) + ), + }; + + Assert.Equal("Banana", CalloutLookup.Resolve(new Vec3(100, 100, 50), banana)); + Assert.Equal("Banana", CalloutLookup.Resolve(new Vec3(1000, 1000, 50), banana)); + } +} diff --git a/apps/utility-sw/test/FiveStack.Tests.csproj b/apps/utility-sw/test/FiveStack.Tests.csproj index bb6b38c4..e06a3e9d 100644 --- a/apps/utility-sw/test/FiveStack.Tests.csproj +++ b/apps/utility-sw/test/FiveStack.Tests.csproj @@ -25,6 +25,7 @@ + @@ -41,5 +42,13 @@ + + + + + + + + diff --git a/apps/utility-sw/test/HudAimGridTests.cs b/apps/utility-sw/test/HudAimGridTests.cs new file mode 100644 index 00000000..fa7cf913 --- /dev/null +++ b/apps/utility-sw/test/HudAimGridTests.cs @@ -0,0 +1,121 @@ +using FiveStack.Utilities; +using Xunit; + +namespace FiveStack.Tests; + +public class HudAimGridTests +{ + private const float Tolerance = 0.35f; + private const int Columns = 25; + private const int Rows = 17; + private const int CentreColumn = 12; + private const int CentreRow = 8; + + [Fact] + public void OnTheAngleSitsInTheCentreCell() + { + Assert.Equal(CentreColumn, HudAimGrid.Column(90f, 90f, Tolerance, Columns)); + Assert.Equal(CentreRow, HudAimGrid.Row(-12f, -12f, Tolerance, Rows)); + } + + [Fact] + public void TargetToTheRightPutsTheDotLeft() + { + Assert.True(HudAimGrid.Column(90f, 89f, Tolerance, Columns) < CentreColumn); + Assert.True(HudAimGrid.Column(90f, 91f, Tolerance, Columns) > CentreColumn); + } + + [Fact] + public void LookingBelowTheTargetPutsTheDotLow() + { + Assert.True(HudAimGrid.Row(5f, 0f, Tolerance, Rows) > CentreRow); + Assert.True(HudAimGrid.Row(-5f, 0f, Tolerance, Rows) < CentreRow); + } + + // The whole point of the rework: the drawn box is one tolerance, so exactly + // at tolerance the dot sits on its edge whatever the lineup's tolerance is. + [Theory] + [InlineData(0.1f)] + [InlineData(0.35f)] + [InlineData(2.0f)] + public void OneToleranceOutLandsOnTheBoxEdge(float tolerance) + { + Assert.Equal(HudAimGrid.ToleranceExtent, HudAimGrid.Offset(tolerance, tolerance), 4); + Assert.Equal(-HudAimGrid.ToleranceExtent, HudAimGrid.Offset(-tolerance, tolerance), 4); + } + + [Theory] + [InlineData(0.1f)] + [InlineData(0.35f)] + [InlineData(2.0f)] + public void InsideToleranceIsAlwaysInsideTheBox(float tolerance) + { + for (float fraction = 0f; fraction < 1f; fraction += 0.05f) + { + float offset = Math.Abs(HudAimGrid.Offset(tolerance * fraction, tolerance)); + + Assert.True(offset < HudAimGrid.ToleranceExtent + 0.0001f); + } + } + + [Fact] + public void OutsideToleranceIsAlwaysOutsideTheBox() + { + foreach (float multiple in new[] { 1.2f, 2f, 5f, 40f }) + { + float offset = Math.Abs(HudAimGrid.Offset(Tolerance * multiple, Tolerance)); + + Assert.True(offset > HudAimGrid.ToleranceExtent); + } + } + + // Linear inside the tolerance: half the tolerance is half the travel, so + // the range the player is working in gets every cell it can. + [Fact] + public void TravelIsLinearInsideTheTolerance() + { + Assert.Equal(HudAimGrid.ToleranceExtent / 2f, HudAimGrid.Offset(Tolerance / 2f, Tolerance), 4); + Assert.Equal(HudAimGrid.ToleranceExtent / 4f, HudAimGrid.Offset(Tolerance / 4f, Tolerance), 4); + } + + [Fact] + public void FarOutPinsToTheEdgeWithoutOvershooting() + { + Assert.Equal(Columns - 1, HudAimGrid.Column(90f, 90f + 400f * Tolerance, Tolerance, Columns)); + Assert.Equal(0, HudAimGrid.Column(90f, 90f - 400f * Tolerance, Tolerance, Columns)); + Assert.True(Math.Abs(HudAimGrid.Offset(9999f, Tolerance)) <= 1f); + } + + [Fact] + public void ZeroToleranceFallsBackToTheDefault() + { + Assert.Equal( + HudAimGrid.Offset(PracticeLineupUtility.DefaultAimTolerance, PracticeLineupUtility.DefaultAimTolerance), + HudAimGrid.Offset(PracticeLineupUtility.DefaultAimTolerance, 0f), + 4 + ); + } + + [Fact] + public void WrapsTheShortWayRound() + { + Assert.Equal(0f, HudAimGrid.Delta(359f, 359f)); + Assert.Equal(2f, HudAimGrid.Delta(1f, 359f)); + Assert.Equal(-2f, HudAimGrid.Delta(359f, 1f)); + + Assert.Equal( + HudAimGrid.Column(1f, 359f, Tolerance, Columns), + HudAimGrid.Column(11f, 9f, Tolerance, Columns) + ); + } + + [Fact] + public void EveryCellIsInRange() + { + for (float degrees = -30f; degrees <= 30f; degrees += 0.05f) + { + Assert.InRange(HudAimGrid.Column(90f + degrees, 90f, Tolerance, Columns), 0, Columns - 1); + Assert.InRange(HudAimGrid.Row(degrees, 0f, Tolerance, Rows), 0, Rows - 1); + } + } +} diff --git a/apps/utility-sw/test/HudLayoutContractTests.cs b/apps/utility-sw/test/HudLayoutContractTests.cs new file mode 100644 index 00000000..1a05d1d5 --- /dev/null +++ b/apps/utility-sw/test/HudLayoutContractTests.cs @@ -0,0 +1,416 @@ +using FiveStack.Utilities; +using Xunit; + +namespace FiveStack.Tests; + +// Every failure mode of custom_hud_layout is silent: a variable the layout does +// not declare renders nothing and logs nothing. These are the only thing that +// catches a rename. +public class HudLayoutContractTests +{ + private static string HudRoot() + { + var directory = new DirectoryInfo(AppContext.BaseDirectory); + + while (directory != null) + { + string candidate = Path.Combine(directory.FullName, "apps", "utility-sw", "hud"); + + if (Directory.Exists(candidate)) + { + return candidate; + } + + directory = directory.Parent; + } + + throw new DirectoryNotFoundException("apps/utility-sw/hud not found above the test output"); + } + + private static string Layout(string name) + { + return File.ReadAllText( + Path.Combine(HudRoot(), "panorama", "layout", "custom_game", $"{name}.xml") + ); + } + + private static string Styles() + { + return File.ReadAllText( + Path.Combine(HudRoot(), "panorama", "styles", "custom_game", "nadehud.css") + ); + } + + public static TheoryData Layouts() + { + var data = new TheoryData(); + + foreach (HudLayoutSlots slots in HudSlots.All) + { + data.Add(slots.Layout); + } + + return data; + } + + // A malformed layout still gets most of the way through the panorama + // compiler before failing with a position, not a reason. Catching it here + // costs nothing and names the file. + [Theory] + [MemberData(nameof(Layouts))] + public void LayoutIsWellFormedXml(string layout) + { + System.Xml.Linq.XDocument.Parse(Layout(layout)); + } + + [Theory] + [MemberData(nameof(Layouts))] + public void LayoutAndCodeNameTheSameSlots(string layout) + { + HudLayoutSlots slots = HudSlots.All.Single(candidate => candidate.Layout == layout); + + Assert.Empty(HudLayoutContract.Verify(slots, Layout(layout))); + } + + [Fact] + public void EveryElementTheHudTogglesClassesOnExists() + { + string[] toggled = + { + HudSlots.Hud.RootId, + "spot", + "aim", + "aimerr", + "noterow", + "drillrow", + "drillbar", + }; + + Assert.Empty(HudLayoutContract.VerifyElements(HudSlots.Hud, Layout(HudSlots.NadeHud), toggled)); + } + + [Fact] + public void EveryElementTheListTogglesClassesOnExists() + { + var toggled = new List { HudSlots.List.RootId, "pager" }; + + for (int row = 1; row <= HudSlots.ListRows; row++) + { + toggled.Add($"row{row}"); + } + + foreach (string side in HudSlots.ListSides) + { + toggled.Add($"side_{side}"); + } + + foreach (string scope in HudSlots.ListScopes) + { + toggled.Add($"scope_{scope}"); + } + + foreach (string type in HudSlots.ListTypes) + { + toggled.Add($"type_{type}"); + } + + toggled.Add("body"); + + Assert.Empty( + HudLayoutContract.VerifyElements(HudSlots.List, Layout(HudSlots.NadeList), toggled) + ); + } + + + [Fact] + public void EveryClassTheHudTogglesIsStyled() + { + var toggles = new List<(string, string)> + { + (HudSlots.Hud.RootId, HudSlots.Shown), + (HudSlots.Hud.RootId, "docked"), + ("spot", "on"), + ("aim", "on"), + ("aimerr", "on"), + ("steer", "on"), + ("throwcolor", "hidden"), + ("noterow", HudSlots.Shown), + ("drillrow", HudSlots.Shown), + }; + + Assert.Empty( + HudLayoutContract.VerifyToggles(HudSlots.Hud, Layout(HudSlots.NadeHud), Styles(), toggles) + ); + } + + [Fact] + public void EveryClassTheListTogglesIsStyled() + { + var toggles = new List<(string, string)> + { + (HudSlots.List.RootId, HudSlots.Shown), + ("pager", "hidden"), + }; + + for (int row = 1; row <= HudSlots.ListRows; row++) + { + toggles.Add(($"row{row}", "hidden")); + toggles.Add(($"row{row}", "selected")); + toggles.Add(($"row{row}", "disabled")); + } + + foreach (string side in HudSlots.ListSides) + { + toggles.Add(($"side_{side}", "on")); + } + + foreach (string scope in HudSlots.ListScopes) + { + toggles.Add(($"scope_{scope}", "on")); + } + + foreach (string type in HudSlots.ListTypes) + { + toggles.Add(($"type_{type}", "on")); + } + + + Assert.Empty( + HudLayoutContract.VerifyToggles( + HudSlots.List, + Layout(HudSlots.NadeList), + Styles(), + toggles + ) + ); + } + + [Fact] + public void EveryElementTheMapTogglesClassesOnExists() + { + var toggled = new List { HudSlots.Map.RootId, "radar", "detail", "list" }; + + for (int marker = 1; marker <= HudSlots.MapMarkers; marker++) + { + toggled.Add($"m{marker}"); + toggled.Add($"n{marker}"); + } + + Assert.Empty( + HudLayoutContract.VerifyElements(HudSlots.Map, Layout(HudSlots.NadeMap), toggled) + ); + } + + [Fact] + public void EveryClassTheMapTogglesIsStyled() + { + var toggles = new List<(string, string)> + { + (HudSlots.Map.RootId, HudSlots.Shown), + ("detail", HudSlots.Shown), + ("list", "hidden"), + }; + + foreach (string map in RadarMaps.All) + { + toggles.Add(("radar", map)); + } + + for (int marker = 1; marker <= HudSlots.MapMarkers; marker++) + { + toggles.Add(($"m{marker}", "hidden")); + toggles.Add(($"m{marker}", "reachable")); + toggles.Add(($"m{marker}", "loaded")); + toggles.Add(($"m{marker}", "selected")); + + foreach (string type in RadarMaps.Types) + { + toggles.Add(($"m{marker}", type)); + } + } + + Assert.Empty( + HudLayoutContract.VerifyToggles( + HudSlots.Map, + Layout(HudSlots.NadeMap), + Styles(), + toggles + ) + ); + } + + // The marker grid is shared across every marker (.nh-mx / .nh-my) rather + // than scoped per id, so it is checked by class not by element. + [Theory] + [InlineData("nh-marker", "x")] + [InlineData("nh-marker", "y")] + public void MarkerGridIsDeclaredForEveryCell(string carrier, string prefix) + { + SortedSet declared = HudLayoutContract.ClassStates(Styles(), carrier, prefix, byClass: true); + var expected = new SortedSet( + Enumerable.Range(0, HudSlots.MapGrid).Select(step => $"{prefix}{step}"), + StringComparer.Ordinal + ); + + Assert.Equal(expected, declared); + } + + // A map with an image but no calibration (or vice versa) draws markers in + // the wrong place, which is worse than drawing none. + // The chip's classes come straight from PracticeStepColors, so a colour + // added there without a rule here would render an unstyled pill. + [Fact] + public void EveryStepColourIsStyled() + { + string styles = Styles(); + var toggles = new List<(string, string)>(); + + for (int index = 0; index < PracticeStepColors.Count; index++) + { + toggles.Add(("throwcolor", PracticeStepColors.For(index).Name)); + } + + Assert.Empty( + HudLayoutContract.VerifyToggles(HudSlots.Hud, Layout(HudSlots.NadeHud), styles, toggles) + ); + } + + // Green and red are the reticle's ramp. A step colour wearing either would + // read as aim feedback; PracticeStepColors asserts the palette, this asserts + // the HUD never styles one in. + [Fact] + public void NoStepColourCollidesWithTheReticle() + { + for (int index = 0; index < PracticeStepColors.Count; index++) + { + string name = PracticeStepColors.For(index).Name; + + Assert.NotEqual("green", name); + Assert.NotEqual("red", name); + } + } + + [Fact] + public void EveryRadarMapHasAnImageAStyleAndCalibration() + { + string styles = Styles(); + var metadata = System.Text.Json.JsonDocument.Parse( + File.ReadAllText(Path.Combine(HudRoot(), "radars", "metadata.json")) + ); + + foreach (string map in RadarMaps.All) + { + Assert.Contains($"#radar.{map}", styles); + Assert.True( + metadata.RootElement.TryGetProperty(map, out _), + $"{map}: no calibration in metadata.json" + ); + } + } + + [Fact] + public void EveryElementTheRunTogglesClassesOnExists() + { + var toggled = new List { HudSlots.Run.RootId }; + + for (int step = 1; step <= HudSlots.RunSteps; step++) + { + toggled.Add($"s{step}"); + toggled.Add($"sw{step}"); + } + + Assert.Empty( + HudLayoutContract.VerifyElements(HudSlots.Run, Layout(HudSlots.NadeRun), toggled) + ); + } + + [Fact] + public void EveryClassTheRunTogglesIsStyled() + { + var toggles = new List<(string, string)> { (HudSlots.Run.RootId, HudSlots.Shown) }; + + for (int step = 1; step <= HudSlots.RunSteps; step++) + { + foreach (string state in new[] { "hidden", "mine", "theirs", "done", "now" }) + { + toggles.Add(($"s{step}", state)); + } + + for (int colour = 0; colour < PracticeStepColors.Count; colour++) + { + toggles.Add(($"sw{step}", PracticeStepColors.For(colour).Name)); + } + } + + Assert.Empty( + HudLayoutContract.VerifyToggles(HudSlots.Run, Layout(HudSlots.NadeRun), Styles(), toggles) + ); + } + + [Fact] + public void EveryElementTheEditTogglesClassesOnExists() + { + var toggled = new List { HudSlots.Edit.RootId, "name", "desc", "fdesc", "hint" }; + + foreach (string visibility in HudSlots.Visibilities) + { + toggled.Add($"vis_{visibility}"); + } + + Assert.Empty( + HudLayoutContract.VerifyElements(HudSlots.Edit, Layout(HudSlots.NadeEdit), toggled) + ); + } + + [Fact] + public void EveryClassTheEditTogglesIsStyled() + { + var toggles = new List<(string, string)> + { + (HudSlots.Edit.RootId, HudSlots.Shown), + ("name", "asking"), + ("desc", "asking"), + ("fdesc", "empty"), + ("hint", "warn"), + ("hint", "bad"), + ("hint", "good"), + }; + + foreach (string visibility in HudSlots.Visibilities) + { + toggles.Add(($"vis_{visibility}", "on")); + } + + Assert.Empty( + HudLayoutContract.VerifyToggles( + HudSlots.Edit, + Layout(HudSlots.NadeEdit), + Styles(), + toggles + ) + ); + } + + // Geometry must not be editable: a lineup that moves keeps its id, so every + // scored attempt against it silently becomes a measurement of a different + // throw. + [Fact] + public void TheEditPanelCannotTouchGeometry() + { + string layout = Layout(HudSlots.NadeEdit); + + foreach (string forbidden in new[] { "origin", "yaw", "pitch", "land", "velocity", "throw" }) + { + Assert.DoesNotContain(forbidden, layout, StringComparison.OrdinalIgnoreCase); + } + } + + [Fact] + public void RootsAreCollapsedUntilAPlayerIsOptedIn() + { + string styles = Styles(); + + Assert.Contains(".nh-root.shown", styles); + Assert.Contains(".nh-list.shown", styles); + } +} diff --git a/apps/utility-sw/test/HudSteadyTests.cs b/apps/utility-sw/test/HudSteadyTests.cs new file mode 100644 index 00000000..f2b0be06 --- /dev/null +++ b/apps/utility-sw/test/HudSteadyTests.cs @@ -0,0 +1,90 @@ +using FiveStack.Utilities; +using Xunit; + +namespace FiveStack.Tests; + +public class HudSteadyTests +{ + private const int Hold = 22; + + [Fact] + public void HoldsTheStartingValue() + { + Assert.False(HudSteady.Start(false).Committed); + Assert.True(HudSteady.Start(true).Committed); + } + + [Fact] + public void DoesNotFollowUntilTheReadingHasHeld() + { + HudSteady steady = HudSteady.Start(false); + + steady = steady.Read(true, 100, Hold); + Assert.False(steady.Committed); + + steady = steady.Read(true, 100 + Hold - 1, Hold); + Assert.False(steady.Committed); + + steady = steady.Read(true, 100 + Hold, Hold); + Assert.True(steady.Committed); + } + + // The whole point: standing on the edge of the circle flips the raw test + // many times a second, and the panel must not move for any of them. + [Fact] + public void FlickerNeverCommits() + { + HudSteady steady = HudSteady.Start(false); + + for (int tick = 0; tick < 2000; tick++) + { + steady = steady.Read(tick % 2 == 0, tick, Hold); + + Assert.False(steady.Committed); + } + } + + // A reading that goes back to the committed value drops the pending move + // entirely, rather than letting near-misses accumulate towards one. + [Fact] + public void GoingBackResetsTheTimer() + { + HudSteady steady = HudSteady.Start(false); + + steady = steady.Read(true, 0, Hold); + steady = steady.Read(false, Hold - 1, Hold); + steady = steady.Read(true, Hold, Hold); + + Assert.False(steady.Committed); + + steady = steady.Read(true, Hold * 2, Hold); + + Assert.True(steady.Committed); + } + + [Fact] + public void CommitsInBothDirections() + { + HudSteady steady = HudSteady.Start(true); + + for (int tick = 0; tick <= Hold; tick++) + { + steady = steady.Read(false, tick, Hold); + } + + Assert.False(steady.Committed); + } + + [Fact] + public void StayingPutNeverChanges() + { + HudSteady steady = HudSteady.Start(true); + + for (int tick = 0; tick < 500; tick++) + { + steady = steady.Read(true, tick, Hold); + + Assert.True(steady.Committed); + } + } +} diff --git a/apps/utility-sw/test/LineupNamingTests.cs b/apps/utility-sw/test/LineupNamingTests.cs new file mode 100644 index 00000000..e5728f4f --- /dev/null +++ b/apps/utility-sw/test/LineupNamingTests.cs @@ -0,0 +1,168 @@ +using FiveStack.Entities.Practice; +using FiveStack.Enums; +using FiveStack.Utilities; +using Xunit; + +namespace FiveStack.Tests; + +// Pinned against UtilityCalloutsService.autoName in the api. The name this +// produces in game and the name the website shows for the same throw are the +// same string or the feature is worse than no name at all. +public class LineupNamingTests +{ + private static MapCalloutPayload Place(string name, float x, float y) + { + return new MapCalloutPayload + { + name = name, + boxes = new List + { + new MapCalloutBox + { + min = new[] { x - 100f, y - 100f, -100f }, + max = new[] { x + 100f, y + 100f, 100f }, + }, + }, + }; + } + + private static List Mirage() + { + return new List + { + Place("Window", 0f, 0f), + Place("TSpawn", 2000f, 0f), + Place("BombsiteA", -2000f, 0f), + }; + } + + [Fact] + public void NamesBothEnds() + { + Assert.Equal( + "Window Smoke from T Spawn", + LineupNaming.Auto( + nameof(eUtilityType.Smoke), + new Vec3(2000f, 0f, 0f), + new Vec3(0f, 0f, 0f), + Mirage() + ) + ); + } + + // Thrown from the place it lands in: "Window Smoke from Window" says nothing. + [Fact] + public void CollapsesWhenBothEndsAreTheSamePlace() + { + Assert.Equal( + "Window Smoke", + LineupNaming.Auto( + nameof(eUtilityType.Smoke), + new Vec3(0f, 0f, 0f), + new Vec3(20f, 20f, 0f), + Mirage() + ) + ); + } + + [Fact] + public void NamesTheDestinationAloneWhenTheOriginIsNowhere() + { + Assert.Equal( + "Window Smoke", + LineupNaming.Auto( + nameof(eUtilityType.Smoke), + new Vec3(50000f, 50000f, 0f), + new Vec3(0f, 0f, 0f), + Mirage() + ) + ); + } + + [Fact] + public void NamesTheOriginAloneWhenTheDestinationIsNowhere() + { + Assert.Equal( + "Smoke from T Spawn", + LineupNaming.Auto( + nameof(eUtilityType.Smoke), + new Vec3(2000f, 0f, 0f), + new Vec3(50000f, 50000f, 0f), + Mirage() + ) + ); + } + + // Empty rather than a bad guess: the caller's own fallback is better than a + // name that says nothing. + [Fact] + public void EmptyWhenTheMapCannotAnswer() + { + Assert.Equal( + "", + LineupNaming.Auto( + nameof(eUtilityType.Smoke), + new Vec3(50000f, 50000f, 0f), + new Vec3(60000f, 60000f, 0f), + Mirage() + ) + ); + + Assert.Equal( + "", + LineupNaming.Auto(nameof(eUtilityType.Smoke), new Vec3(), new Vec3(), null) + ); + + Assert.Equal( + "", + LineupNaming.Auto( + nameof(eUtilityType.Smoke), + new Vec3(), + new Vec3(), + new List() + ) + ); + } + + // The api's TYPE_LABELS: only HighExplosive differs from its enum name. + [Theory] + [InlineData(nameof(eUtilityType.Smoke), "Smoke")] + [InlineData(nameof(eUtilityType.Flash), "Flash")] + [InlineData(nameof(eUtilityType.Molotov), "Molotov")] + [InlineData(nameof(eUtilityType.Decoy), "Decoy")] + [InlineData(nameof(eUtilityType.HighExplosive), "HE")] + public void UsesThePanelsTypeLabels(string utilityType, string expected) + { + Assert.Equal(expected, LineupNaming.TypeLabel(utilityType)); + } + + [Fact] + public void HighExplosiveReadsAsHeInAFullName() + { + Assert.Equal( + "Window HE from T Spawn", + LineupNaming.Auto( + nameof(eUtilityType.HighExplosive), + new Vec3(2000f, 0f, 0f), + new Vec3(0f, 0f, 0f), + Mirage() + ) + ); + } + + // Humanised through the shared lookup, so "BombsiteA" is "A Site" here and + // on the website both. + [Fact] + public void PlaceNamesAreHumanised() + { + Assert.Equal( + "A Site Smoke from T Spawn", + LineupNaming.Auto( + nameof(eUtilityType.Smoke), + new Vec3(2000f, 0f, 0f), + new Vec3(-2000f, 0f, 0f), + Mirage() + ) + ); + } +} diff --git a/apps/utility-sw/test/RadarProjectionTests.cs b/apps/utility-sw/test/RadarProjectionTests.cs new file mode 100644 index 00000000..100be236 --- /dev/null +++ b/apps/utility-sw/test/RadarProjectionTests.cs @@ -0,0 +1,177 @@ +using FiveStack.Entities.Practice; +using FiveStack.Utilities; +using Xunit; + +namespace FiveStack.Tests; + +// Pinned against web/composables/useRadarProjection.ts. If these move, the panel +// and the HUD have stopped agreeing about where a lineup lands. +public class RadarProjectionTests +{ + private static RadarCalibration Mirage() + { + return new RadarCalibration + { + Resolution = 5.02f, + OffsetX = 3240f, + OffsetY = 3410f, + }; + } + + private static RadarCalibration Nuke() + { + return new RadarCalibration + { + Resolution = 6.98f, + OffsetX = 3290f, + OffsetY = 5990f, + Splits = new List + { + new RadarSplit + { + BoundsTop = -482f, + BoundsBottom = -2500f, + OffsetX = 0f, + OffsetY = -46f, + }, + }, + }; + } + + [Theory] + [InlineData("de_mirage", "de_mirage")] + [InlineData("DE_MIRAGE", "de_mirage")] + [InlineData(" de_inferno ", "de_inferno")] + [InlineData("de_ancient_night", "de_ancient")] + [InlineData(null, "")] + public void MapNamesNormaliseLikeTheWeb(string? input, string expected) + { + Assert.Equal(expected, RadarProjection.NormalizeMapName(input)); + } + + // x = (world.x + offsetX) / resolution + // y = 1024 - (world.y + offsetY) / resolution + [Fact] + public void ProjectsWithTheSameArithmeticAsTheWeb() + { + (float x, float y) = RadarProjection.Project(new Vec3(0f, 0f, 0f), Mirage()); + + Assert.Equal(3240f / 5.02f, x, 2); + Assert.Equal(1024f - 3410f / 5.02f, y, 2); + } + + // The y flip is the easiest thing to get backwards, and getting it backwards + // mirrors every marker about the middle of the map. + [Fact] + public void NorthIsUp() + { + RadarCalibration mirage = Mirage(); + (_, float low) = RadarProjection.Project(new Vec3(0f, -1000f, 0f), mirage); + (_, float high) = RadarProjection.Project(new Vec3(0f, 1000f, 0f), mirage); + + Assert.True(high < low); + } + + [Fact] + public void EastIsRight() + { + RadarCalibration mirage = Mirage(); + (float left, _) = RadarProjection.Project(new Vec3(-1000f, 0f, 0f), mirage); + (float right, _) = RadarProjection.Project(new Vec3(1000f, 0f, 0f), mirage); + + Assert.True(right > left); + } + + [Fact] + public void NukeLowerLevelShiftsOntoItsOwnHalf() + { + RadarCalibration nuke = Nuke(); + var upper = new Vec3(0f, 0f, -100f); + var lower = new Vec3(0f, 0f, -1000f); + + (_, float upperY) = RadarProjection.Project(upper, nuke); + (_, float lowerY) = RadarProjection.Project(lower, nuke); + + // -46% of the image on a y that is then flipped, so the lower level ends + // up BELOW the upper one on screen. + Assert.Equal(upperY + 0.46f * RadarProjection.Pixels, lowerY, 2); + } + + [Fact] + public void HeightOutsideTheSplitBandIsUnshifted() + { + RadarCalibration nuke = Nuke(); + + Assert.Equal((0f, 0f), RadarProjection.Split(-100f, nuke.Splits)); + Assert.Equal((0f, -46f), RadarProjection.Split(-1000f, nuke.Splits)); + Assert.Equal((0f, 0f), RadarProjection.Split(-3000f, nuke.Splits)); + } + + [Fact] + public void NormalisedStaysOnTheImage() + { + RadarCalibration mirage = Mirage(); + + foreach (float world in new[] { -99999f, -2000f, 0f, 2000f, 99999f }) + { + (float x, float y) = RadarProjection.Normalized(new Vec3(world, world, 0f), mirage); + + Assert.InRange(x, 0f, 1f); + Assert.InRange(y, 0f, 1f); + } + } + + // The shipped file, parsed by the shipped loader. A calibration that fails + // to parse means the minimap silently has no radar for that map. + [Fact] + public void TheShippedCalibrationParses() + { + var directory = new DirectoryInfo(AppContext.BaseDirectory); + string? path = null; + + while (directory != null && path == null) + { + string candidate = Path.Combine( + directory.FullName, "apps", "utility-sw", "hud", "radars", "metadata.json" + ); + + if (File.Exists(candidate)) + { + path = candidate; + } + + directory = directory.Parent; + } + + Assert.NotNull(path); + + Dictionary loaded = RadarMaps.Load(path!); + + foreach (string map in RadarMaps.All) + { + Assert.True(loaded.ContainsKey(map), $"{map}: did not parse out of metadata.json"); + Assert.True(loaded[map].Resolution > 0f, $"{map}: resolution is zero"); + } + + Assert.Equal(2, loaded["de_nuke"].Splits.Count + loaded["de_vertigo"].Splits.Count); + } + + [Fact] + public void CellsLandInsideTheGrid() + { + RadarCalibration mirage = Mirage(); + + for (float world = -4000f; world <= 4000f; world += 250f) + { + (int column, int row) = RadarProjection.Cell( + new Vec3(world, world, 0f), + mirage, + 64, + 64 + ); + + Assert.InRange(column, 0, 63); + Assert.InRange(row, 0, 63); + } + } +} diff --git a/codepier.yaml b/codepier.yaml index ddd9144e..0edfefbc 100644 --- a/codepier.yaml +++ b/codepier.yaml @@ -14,6 +14,8 @@ ignore: - "**/bin/" - "**/obj/" - "**/build/" + - "**/.compiler/" + - "**/.tools/" - "**/__pycache__/" - "Folder.DotSettings.user" - "*.generated.sln" diff --git a/k8s/dev-swiftly-game-server.yaml b/k8s/dev-swiftly-game-server.yaml index 644c9554..b5da69ea 100644 --- a/k8s/dev-swiftly-game-server.yaml +++ b/k8s/dev-swiftly-game-server.yaml @@ -52,7 +52,9 @@ spec: - name: TV_PORT value: '27021' - name: EXTRA_GAME_PARAMS - value: '-maxplayers 13 +map de_overpass' + # -insecure turns VAC off. Dev only: clients have to launch with + # -insecure too, and a VAC-secured client will refuse to connect. + value: '-maxplayers 13 +map de_overpass -insecure' - name: ALLOW_BOTS value: 'true' - name: STEAM_RELAY diff --git a/scripts/sync-radars.sh b/scripts/sync-radars.sh new file mode 100755 index 00000000..ee54fce6 --- /dev/null +++ b/scripts/sync-radars.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# Re-mirrors the radar CALIBRATION from the web panel. +# +# Not the images. The HUD draws on CS2's own overheadmaps +# (s2r://panorama/images/overheadmaps/_radar.psd) because a texture +# compiled by PanoramaCompiler's experimental image path never loaded in game. +# The web's radars are SimpleRadar, a drop-in replacement for Valve's, so the +# same calibration projects correctly onto either -- which is the only reason +# dropping the images cost nothing. +# +# The calibration itself still has to match the panel exactly: a lineup that +# lands on Window on the site and on Palace in game is worse than no map at all. +set -euo pipefail + +WEB="${WEB_REPO:-$(cd "$(dirname "${BASH_SOURCE[0]}")/../../web" && pwd)}" +HUD="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)/apps/utility-sw/hud" +SRC="${WEB}/public/radars/metadata.json" + +[ -f "$SRC" ] || { echo "no radar calibration at $SRC (set WEB_REPO)" >&2; exit 1; } + +mkdir -p "${HUD}/radars" + +python3 - "$SRC" "${HUD}/radars/metadata.json" <<'PY' +import json, sys +src, dst = sys.argv[1], sys.argv[2] +d = json.load(open(src)); d.pop("_comment", None) +out = {"_comment": "Mirrored from web/public/radars/metadata.json by scripts/sync-radars.sh. Do not edit here.", **d} +open(dst, "w").write(json.dumps(out, indent=2) + "\n") +print(f"calibration: {len(d)} maps") +PY + +# The images are deliberately absent; a stale copy would be compiled into the +# addon and silently add ~2 MB of textures nothing references. +if [ -d "${HUD}/panorama/images" ]; then + echo "warning: ${HUD}/panorama/images exists but nothing references it -- delete it" >&2 +fi diff --git a/shared/dotnet/FiveStack.Entities/Practice/MapCalloutsPayload.cs b/shared/dotnet/FiveStack.Entities/Practice/MapCalloutsPayload.cs new file mode 100644 index 00000000..00e881d7 --- /dev/null +++ b/shared/dotnet/FiveStack.Entities/Practice/MapCalloutsPayload.cs @@ -0,0 +1,30 @@ +namespace FiveStack.Entities.Practice; + +// What the map itself calls its areas, as the engine has them resolved. The +// panel draws these on the radar and names utility throws from them. +// +// The published extract (web/scripts/extract-map-callouts.mjs) is the normal +// source and always wins; this exists for the maps it cannot cover -- workshop +// and community maps, where a running server is the only thing that has ever +// opened the file. +public class MapCalloutBox +{ + // Raw CS2 source units, world space, already offset by the entity's origin. + public float[] min { get; set; } = new float[3]; + public float[] max { get; set; } = new float[3]; +} + +public class MapCalloutPayload +{ + public string name { get; set; } = string.Empty; + + // A place is legitimately several disjoint volumes, so the boxes travel + // together under one name rather than as separate callouts. + public List boxes { get; set; } = new List(); +} + +public class MapCalloutsPayload +{ + public string map { get; set; } = string.Empty; + public List callouts { get; set; } = new List(); +} diff --git a/shared/dotnet/FiveStack.Utilities/CalloutLookup.cs b/shared/dotnet/FiveStack.Utilities/CalloutLookup.cs new file mode 100644 index 00000000..2b2bc5a0 --- /dev/null +++ b/shared/dotnet/FiveStack.Utilities/CalloutLookup.cs @@ -0,0 +1,248 @@ +using System.Text; +using System.Text.RegularExpressions; +using FiveStack.Entities.Practice; + +namespace FiveStack.Utilities; + +// What the MAP calls a point. The same answer the panel gives, deliberately: a +// lineup the HUD calls "Window" and the website calls "Connector" is worse than +// neither of them naming it, so the resolution order here mirrors +// web/utilities/mapCallouts.ts and api/src/utility/utility-callouts.service.ts +// exactly and is tested against the same cases. +public static partial class CalloutLookup +{ + // How far outside every place volume a point may sit and still be named. + // The volumes do not tile a map, and a grenade rests on top of geometry as + // often as inside a place. + public const float SnapUnits = 256f; + + // Valve names that read badly once split, keyed by the name with its spaces + // and case removed so a raw token and an already-spaced one both land here. + private static readonly Dictionary Aliases = new( + StringComparer.OrdinalIgnoreCase + ) + { + ["bombsitea"] = "A Site", + ["bombsiteb"] = "B Site", + ["bombsitec"] = "C Site", + ["tspawn"] = "T Spawn", + ["ctspawn"] = "CT Spawn", + ["terroristspawn"] = "T Spawn", + ["counterterroristspawn"] = "CT Spawn", + }; + + /// + /// The name of the place a world point is in, or null when the map has + /// nothing to say about it. + /// + /// XY containment is decided before Z because places stack: a smoke on a + /// roof, or in the air over a site, still belongs to the place beneath it. + /// Z only breaks ties, which is what keeps Nuke and Vertigo from answering + /// with the lower level's callout for a point on the upper one. Where + /// volumes nest ("A Site" containing "Goose") the tightest one wins -- the + /// more specific name is the one a player would say. See Volume for why + /// that is measured in three dimensions. + /// + public static string? Resolve( + Vec3 point, + IEnumerable? callouts, + float snap = SnapUnits + ) + { + if (callouts == null) + { + return null; + } + + string? insideName = null; + float insideArea = float.MaxValue; + + string? aboveName = null; + float aboveGap = float.MaxValue; + float aboveArea = float.MaxValue; + + string? nearestName = null; + float nearestDistance = float.MaxValue; + + foreach (MapCalloutPayload callout in callouts) + { + if (callout?.boxes == null || string.IsNullOrEmpty(callout.name)) + { + continue; + } + + foreach (MapCalloutBox box in callout.boxes) + { + if (box?.min == null || box.max == null || box.min.Length < 3 || box.max.Length < 3) + { + continue; + } + + bool inXY = + point.x >= box.min[0] + && point.x <= box.max[0] + && point.y >= box.min[1] + && point.y <= box.max[1]; + + float area = Volume(box); + + if (inXY) + { + if (point.z >= box.min[2] && point.z <= box.max[2]) + { + if (area < insideArea) + { + insideArea = area; + insideName = callout.name; + } + } + else + { + float gap = Gap(point.z, box.min[2], box.max[2]); + + if (gap < aboveGap || (gap == aboveGap && area < aboveArea)) + { + aboveGap = gap; + aboveArea = area; + aboveName = callout.name; + } + } + + continue; + } + + float dx = Gap(point.x, box.min[0], box.max[0]); + float dy = Gap(point.y, box.min[1], box.max[1]); + float dz = Gap(point.z, box.min[2], box.max[2]); + float distance = MathF.Sqrt((dx * dx) + (dy * dy) + (dz * dz)); + + if (distance < nearestDistance) + { + nearestDistance = distance; + nearestName = callout.name; + } + } + } + + if (insideName != null) + { + return insideName; + } + + if (aboveName != null) + { + return aboveName; + } + + return nearestDistance <= snap ? nearestName : null; + } + + /// + /// Resolves and humanises in one step, which is what anything putting a + /// place name on screen actually wants. + /// + public static string ResolveLabel( + Vec3 point, + IEnumerable? callouts, + float snap = SnapUnits + ) + { + return Humanize(Resolve(point, callouts, snap)); + } + + /// + /// "BombsiteA" -> "A Site", "LongDoors" -> "Long Doors". Empty in, empty out. + /// + public static string Humanize(string? raw) + { + string value = (raw ?? string.Empty).Trim(); + + if (value.Length == 0) + { + return string.Empty; + } + + string key = value.Replace(" ", string.Empty).Replace("_", string.Empty); + + if (Aliases.TryGetValue(key, out string? alias)) + { + return alias; + } + + // Valve glues a lowercase joining word between two capitalised ones -- + // TopofMid, BackofA. The camelCase walk below would read that as one + // word and give "Topof Mid", so it is split first. + value = OfJoin().Replace(value, "$1 of $2"); + + var spaced = new StringBuilder(value.Length + 8); + + for (int index = 0; index < value.Length; index++) + { + char current = value[index]; + + if (current == '_' || current == '-') + { + spaced.Append(' '); + + continue; + } + + if (index > 0 && char.IsUpper(current)) + { + char previous = value[index - 1]; + bool afterLower = char.IsLower(previous) || char.IsDigit(previous); + // An acronym only breaks where the next letter starts a word, + // so CTSpawn splits once rather than into C T Spawn. + bool endsAcronym = + char.IsUpper(previous) + && index + 1 < value.Length + && char.IsLower(value[index + 1]); + + if (afterLower || endsAcronym) + { + spaced.Append(' '); + } + } + + spaced.Append(current); + } + + return string.Join( + ' ', + spaced.ToString().Split(' ', StringSplitOptions.RemoveEmptyEntries) + ); + } + + [GeneratedRegex("([a-z])of([A-Z])")] + private static partial Regex OfJoin(); + + /// + /// The tightest enclosing volume wins where places overlap. MEASURED, not + /// assumed: scored against `player_kills.attacker_location` (the engine's + /// own answer) over 1,920 labelled kills, smallest-volume beat + /// smallest-footprint 92.5% to 89.8%. Footprint alone loses the stacked + /// pairs -- it called Mirage's Catwalk "Underpass" 41 times, because + /// Underpass sits under it and is the narrower of the two seen from above. + /// + private static float Volume(MapCalloutBox box) + { + return (box.max[0] - box.min[0]) + * (box.max[1] - box.min[1]) + * MathF.Max(box.max[2] - box.min[2], 1f); + } + + private static float Gap(float value, float min, float max) + { + if (value < min) + { + return min - value; + } + + if (value > max) + { + return value - max; + } + + return 0f; + } +} diff --git a/shared/dotnet/FiveStack.Utilities/HudAimGrid.cs b/shared/dotnet/FiveStack.Utilities/HudAimGrid.cs new file mode 100644 index 00000000..eef036b3 --- /dev/null +++ b/shared/dotnet/FiveStack.Utilities/HudAimGrid.cs @@ -0,0 +1,130 @@ +namespace FiveStack.Utilities; + +// Turns a crosshair's yaw/pitch error into the one-of-N cell the aim dot sits +// in. Panorama cannot be handed a number to position by, so the travel a +// dialog variable would have carried is a class group instead. +// +// Everything is measured in multiples of the lineup's OWN tolerance, not in +// degrees. A fixed degree span made the drawn tolerance box a decoration: it +// was the same size for a 0.1 degree lineup and a 2 degree one, so "is the dot +// in the box" answered nothing. Normalising by tolerance means the box is the +// tolerance, on every lineup, and landing the dot inside it is the whole +// instruction. +public static class HudAimGrid +{ + // Where one tolerance lands, as a fraction of the distance from centre to + // edge. The stylesheet draws the box at exactly this half-extent. + public const float ToleranceExtent = 0.5f; + + // Past this many tolerances the dot is pinned to the edge; it only has to + // say "miles off, that way". + public const float PinAt = 16f; + + public static int Column(float eyeYaw, float targetYaw, float tolerance, int columns) + { + return Cell(Delta(targetYaw, eyeYaw), tolerance, columns); + } + + public static int Row(float eyePitch, float targetPitch, float tolerance, int rows) + { + return Cell(Delta(eyePitch, targetPitch), tolerance, rows); + } + + // Shortest way round, so 359 and 1 are two degrees apart rather than 358. + public static float Delta(float from, float to) + { + float delta = (from - to) % 360f; + + if (delta > 180f) + { + delta -= 360f; + } + + if (delta < -180f) + { + delta += 360f; + } + + return delta; + } + + // -1..1, where +/-ToleranceExtent is exactly one tolerance out. + public static float Offset(float degrees, float tolerance) + { + if (tolerance <= 0f) + { + tolerance = PracticeLineupUtility.DefaultAimTolerance; + } + + float ratio = degrees / tolerance; + float magnitude = Math.Abs(ratio); + float sign = Math.Sign(ratio); + + // Linear inside the tolerance, because that is the range the player is + // actually working in and it wants every pixel it can get. Outside it, + // 1/sqrt falls away to the edge without ever quite reaching it. + if (magnitude <= 1f) + { + return sign * magnitude * ToleranceExtent; + } + + // Normalised so PinAt tolerances lands exactly on the frame edge rather + // than somewhere short of it. + float curve = 1f - 1f / MathF.Sqrt(Math.Min(magnitude, PinAt)); + float full = 1f - 1f / MathF.Sqrt(PinAt); + + return sign * (ToleranceExtent + (1f - ToleranceExtent) * (curve / full)); + } + + // The box and dot give fine-grained feedback once you know what they are; + // this says the same thing in words so you never have to work it out. Axes + // are only named when they are the part actually out, so a throw that only + // needs a nudge left does not also nag about pitch. + public static string Direction( + float eyeYaw, + float eyePitch, + float targetYaw, + float targetPitch, + float tolerance + ) + { + if (tolerance <= 0f) + { + tolerance = PracticeLineupUtility.DefaultAimTolerance; + } + + float yaw = Delta(targetYaw, eyeYaw); + float pitch = Delta(eyePitch, targetPitch); + + var parts = new List(); + + if (Math.Abs(yaw) > tolerance) + { + parts.Add(yaw > 0f ? "RIGHT" : "LEFT"); + } + + if (Math.Abs(pitch) > tolerance) + { + parts.Add(pitch > 0f ? "UP" : "DOWN"); + } + + if (parts.Count == 0) + { + return "LINED UP - THROW IT"; + } + + return "LOOK " + string.Join(" AND ", parts); + } + + private static int Cell(float degrees, float tolerance, int count) + { + if (count < 2) + { + return 0; + } + + float offset = Math.Clamp(Offset(degrees, tolerance), -1f, 1f); + + return (int)MathF.Round((offset + 1f) / 2f * (count - 1)); + } +} diff --git a/shared/dotnet/FiveStack.Utilities/HudLayoutContract.cs b/shared/dotnet/FiveStack.Utilities/HudLayoutContract.cs new file mode 100644 index 00000000..b6c9090e --- /dev/null +++ b/shared/dotnet/FiveStack.Utilities/HudLayoutContract.cs @@ -0,0 +1,221 @@ +using System.Text.RegularExpressions; + +namespace FiveStack.Utilities; + +// Reads the shipped Panorama sources and reports where they and HudSlots have +// drifted apart. Regex rather than a parser: this checks a naming contract, it +// does not need to understand the markup. +public static class HudLayoutContract +{ + private static readonly Regex Variable = new Regex( + @"\{s:([A-Za-z0-9_]+)\}", + RegexOptions.Compiled + ); + + private static readonly Regex Button = new Regex( + "]*\\bid=\"([A-Za-z0-9_]+)\"", + RegexOptions.Compiled + ); + + private static readonly Regex ElementId = new Regex( + "\\bid=\"([A-Za-z0-9_]+)\"", + RegexOptions.Compiled + ); + + public static SortedSet Variables(string layoutXml) + { + return Collect(Variable, layoutXml); + } + + public static SortedSet Buttons(string layoutXml) + { + return Collect(Button, layoutXml); + } + + public static SortedSet ElementIds(string layoutXml) + { + return Collect(ElementId, layoutXml); + } + + // The `#element.stateN` rules a stylesheet declares, e.g. every x0..x12 the + // aim dot can be moved to. + // byClass for grids shared by many elements (.nh-mx.x0), byId for grids + // that belong to one (#aimx.x0). + public static SortedSet ClassStates( + string css, + string carrier, + string prefix, + bool byClass = false + ) + { + var found = new SortedSet(StringComparer.Ordinal); + var rule = new Regex( + $"{(byClass ? "\\." : "#")}{Regex.Escape(carrier)}\\.({Regex.Escape(prefix)}[A-Za-z0-9_]*)\\b" + ); + + foreach (Match match in rule.Matches(css)) + { + found.Add(match.Groups[1].Value); + } + + return found; + } + + public static List Verify(HudLayoutSlots declared, string layoutXml) + { + var problems = new List(); + SortedSet inLayout = Variables(layoutXml); + var inCode = new SortedSet( + declared.Variables.Select(variable => variable.Name), + StringComparer.Ordinal + ); + + foreach (string missing in inLayout.Except(inCode)) + { + problems.Add($"{declared.Layout}: layout declares {{s:{missing}}}, HudSlots does not"); + } + + foreach (string missing in inCode.Except(inLayout)) + { + problems.Add($"{declared.Layout}: HudSlots names '{missing}', layout has no {{s:{missing}}}"); + } + + SortedSet buttonsInLayout = Buttons(layoutXml); + var buttonsInCode = new SortedSet(declared.Buttons, StringComparer.Ordinal); + + foreach (string missing in buttonsInLayout.Except(buttonsInCode)) + { + problems.Add($"{declared.Layout}: layout has Button id='{missing}', HudSlots does not"); + } + + foreach (string missing in buttonsInCode.Except(buttonsInLayout)) + { + problems.Add($"{declared.Layout}: HudSlots expects button '{missing}', layout has none"); + } + + if (!ElementIds(layoutXml).Contains(declared.RootId)) + { + problems.Add($"{declared.Layout}: no element carries the root id '{declared.RootId}'"); + } + + // Each variable is written at its carrier, so that element must exist + // and must be the one holding the {s:...} placeholder. + foreach (HudVariable variable in declared.Variables) + { + IReadOnlyList onElement = VariablesOn(layoutXml, variable.ElementId); + + if (onElement.Count == 0) + { + problems.Add( + $"{declared.Layout}: no element '{variable.ElementId}' to carry {{s:{variable.Name}}}" + ); + } + else if (!onElement.Contains(variable.Name)) + { + problems.Add( + $"{declared.Layout}: element '{variable.ElementId}' renders " + + $"{{s:{string.Join(",", onElement)}}}, not {{s:{variable.Name}}}" + ); + } + } + + return problems; + } + + // Every id the server toggles a class on has to exist, or the toggle is a + // silent no-op. + public static List VerifyElements( + HudLayoutSlots declared, + string layoutXml, + IEnumerable elementIds + ) + { + SortedSet present = ElementIds(layoutXml); + + return elementIds + .Where(id => !present.Contains(id)) + .Select(id => $"{declared.Layout}: no element with id '{id}' to toggle classes on") + .ToList(); + } + + // The {s:...} placeholders rendered by one element. + public static IReadOnlyList VariablesOn(string layoutXml, string elementId) + { + var element = new Regex($"<[A-Za-z]+\\b(?=[^>]*\\bid=\"{Regex.Escape(elementId)}\")[^>]*>"); + Match match = element.Match(layoutXml); + + return match.Success + ? Variable.Matches(match.Value).Select(hit => hit.Groups[1].Value).ToList() + : new List(); + } + + // The classes an element carries in the markup, which is what a toggled + // class has to be written against in the stylesheet. + public static IReadOnlyList ClassesOf(string layoutXml, string elementId) + { + var element = new Regex( + $"<[A-Za-z]+\\b(?=[^>]*\\bid=\"{Regex.Escape(elementId)}\")[^>]*\\bclass=\"([^\"]*)\"" + ); + + Match match = element.Match(layoutXml); + + return match.Success + ? match.Groups[1].Value.Split(' ', StringSplitOptions.RemoveEmptyEntries) + : new string[0]; + } + + // A class the server toggles that no rule selects is a write that changes + // nothing on screen and reports no error. + public static List VerifyToggles( + HudLayoutSlots declared, + string layoutXml, + string css, + IEnumerable<(string ElementId, string Class)> toggles + ) + { + var problems = new List(); + + foreach ((string elementId, string name) in toggles) + { + IReadOnlyList classes = ClassesOf(layoutXml, elementId); + + if (classes.Count == 0) + { + problems.Add($"{declared.Layout}: #{elementId} carries no class to qualify '{name}'"); + + continue; + } + + // Either scoping counts: a rule on the element's own id + // (#radar.de_mirage) selects it just as surely as one on a class it + // carries (.nh-row.selected). + bool styled = + new Regex($"#{Regex.Escape(elementId)}\\.{Regex.Escape(name)}\\b").IsMatch(css) + || classes.Any(carried => + new Regex($"\\.{Regex.Escape(carried)}\\.{Regex.Escape(name)}\\b").IsMatch(css) + ); + + if (!styled) + { + problems.Add( + $"{declared.Layout}: nothing styles '{name}' on #{elementId} " + + $"(expected .{classes[0]}.{name} in the stylesheet)" + ); + } + } + + return problems; + } + + private static SortedSet Collect(Regex pattern, string source) + { + var found = new SortedSet(StringComparer.Ordinal); + + foreach (Match match in pattern.Matches(source)) + { + found.Add(match.Groups[1].Value); + } + + return found; + } +} diff --git a/shared/dotnet/FiveStack.Utilities/HudSlots.cs b/shared/dotnet/FiveStack.Utilities/HudSlots.cs new file mode 100644 index 00000000..914a18e1 --- /dev/null +++ b/shared/dotnet/FiveStack.Utilities/HudSlots.cs @@ -0,0 +1,244 @@ +namespace FiveStack.Utilities; + +// The contract between a compiled Panorama layout and the C# that drives it. +// Naming a variable the layout does not declare renders nothing and throws +// nothing, so every name a template is allowed to write lives here and is +// asserted against the shipped .xml by HudLayoutContractTests. +// A dialog variable is addressed at the element that renders it, not at the +// layout root -- root propagation is a Panorama behaviour we would be assuming, +// and addressing the carrier is correct either way. +public record HudVariable(string Name, string ElementId); + +public class HudLayoutSlots +{ + public HudLayoutSlots( + string layout, + string rootId, + IReadOnlyList variables, + IReadOnlyList buttons + ) + { + Layout = layout; + RootId = rootId; + Variables = variables; + Buttons = buttons; + } + + public string Layout { get; } + public string RootId { get; } + public IReadOnlyList Variables { get; } + public IReadOnlyList Buttons { get; } + + public string ElementFor(string variable) + { + foreach (HudVariable candidate in Variables) + { + if (candidate.Name == variable) + { + return candidate.ElementId; + } + } + + throw new ArgumentException($"{Layout} declares no variable '{variable}'"); + } +} + +public static class HudSlots +{ + public const string NadeHud = "nade_hud"; + public const string NadeList = "nade_list"; + public const string NadeMap = "nade_map"; + public const string NadeRun = "nade_run"; + public const string NadeEdit = "nade_edit"; + + // Class toggled on a layout's root to show it for one player. The layouts + // are collapsed by default so a spawned entity is invisible until somebody + // is opted in. + public const string Shown = "shown"; + + public const int MeterSteps = 11; + + public const int ListRows = 16; + // Filter chips, in panel. Each is a button id and a class-toggled element. + public static readonly IReadOnlyList ListSides = new[] { "all", "t", "ct" }; + // Mirrors the panel's scope filter. "favorites" is deliberately absent: the + // library payload carries no favourite flag, and a chip that silently + // matches nothing is worse than no chip. + public static readonly IReadOnlyList ListScopes = + new[] { "all", "mine", "team", "public" }; + + public static readonly IReadOnlyList ListTypes = + new[] { "all", "smoke", "flash", "molly", "he" }; + + // Fixed DOM: this many markers exist in nade_map.xml and no more. The busiest + // targets win the slots. + public const int MapMarkers = 40; + + // Shared .nh-mx/.nh-my class groups, so the grid costs 2 x MapGrid rules + // rather than that many per marker. + public const int MapGrid = 64; + + // Steps visible in the execute timeline; the panel scrolls past this. + public const int RunSteps = 12; + + public static readonly HudLayoutSlots Hud = new HudLayoutSlots( + NadeHud, + "NadeHud", + new[] + { + new HudVariable("kicker", "kicker"), + new HudVariable("pos", "pos"), + new HudVariable("title", "title"), + new HudVariable("tech", "tech"), + new HudVariable("aimerr", "aimerr"), + new HudVariable("steer", "steer"), + new HudVariable("throwcolor", "throwcolor"), + new HudVariable("drill", "drill"), + }, + new string[0] + ); + + public static readonly HudLayoutSlots List = new HudLayoutSlots( + NadeList, + "NadeList", + Rows().ToArray(), + Buttons().ToArray() + ); + + public static readonly HudLayoutSlots Map = new HudLayoutSlots( + NadeMap, + "NadeMap", + MapVariables().ToArray(), + MapButtons().ToArray() + ); + + public static readonly HudLayoutSlots Run = new HudLayoutSlots( + NadeRun, + "NadeRun", + RunVariables().ToArray(), + new string[0] + ); + + // Only what utility-lineups.service.ts already knows how to UPDATE. Geometry + // is deliberately absent. + public static readonly IReadOnlyList Visibilities = + new[] { "private", "team", "public" }; + + public static readonly HudLayoutSlots Edit = new HudLayoutSlots( + NadeEdit, + "NadeEdit", + new[] + { + new HudVariable("tag", "tag"), + new HudVariable("title", "title"), + new HudVariable("fname", "fname"), + new HudVariable("fdesc", "fdesc"), + new HudVariable("hint", "hint"), + }, + EditButtons().ToArray() + ); + + public static readonly IReadOnlyList All = + new[] { Hud, List, Map, Run, Edit }; + + private static IEnumerable EditButtons() + { + yield return "name"; + yield return "desc"; + + foreach (string visibility in Visibilities) + { + yield return $"vis_{visibility}"; + } + + yield return "save"; + yield return "revert"; + yield return "close"; + } + + private static IEnumerable RunVariables() + { + yield return new HudVariable("kicker", "kicker"); + yield return new HudVariable("title", "title"); + yield return new HudVariable("clock", "clock"); + + for (int step = 1; step <= RunSteps; step++) + { + yield return new HudVariable($"st{step}", $"st{step}"); + yield return new HudVariable($"sn{step}", $"sn{step}"); + yield return new HudVariable($"sy{step}", $"sy{step}"); + } + } + + private static IEnumerable MapVariables() + { + yield return new HudVariable("title", "title"); + yield return new HudVariable("tag", "tag"); + yield return new HudVariable("focus", "focus"); + yield return new HudVariable("dname", "dname"); + yield return new HudVariable("dmeta", "dmeta"); + yield return new HudVariable("dload", "dload"); + yield return new HudVariable("dlist", "dlist"); + + for (int marker = 1; marker <= MapMarkers; marker++) + { + yield return new HudVariable($"c{marker}", $"c{marker}"); + yield return new HudVariable($"n{marker}", $"n{marker}"); + } + } + + private static IEnumerable MapButtons() + { + for (int marker = 1; marker <= MapMarkers; marker++) + { + yield return $"m{marker}"; + } + + yield return "load"; + yield return "list"; + yield return "close"; + } + + private static IEnumerable Rows() + { + yield return new HudVariable("title", "title"); + yield return new HudVariable("tag", "tag"); + yield return new HudVariable("page", "page"); + + // The buttons already own row1/tab1, so the labels inside them carry + // their own ids. + for (int row = 1; row <= ListRows; row++) + { + yield return new HudVariable($"row{row}", $"row{row}l"); + yield return new HudVariable($"row{row}v", $"row{row}v"); + } + + } + + private static IEnumerable Buttons() + { + for (int row = 1; row <= ListRows; row++) + { + yield return $"row{row}"; + } + + foreach (string side in ListSides) + { + yield return $"side_{side}"; + } + + foreach (string scope in ListScopes) + { + yield return $"scope_{scope}"; + } + + foreach (string type in ListTypes) + { + yield return $"type_{type}"; + } + + yield return "prev"; + yield return "next"; + yield return "close"; + } +} diff --git a/shared/dotnet/FiveStack.Utilities/HudSteady.cs b/shared/dotnet/FiveStack.Utilities/HudSteady.cs new file mode 100644 index 00000000..12c741d6 --- /dev/null +++ b/shared/dotnet/FiveStack.Utilities/HudSteady.cs @@ -0,0 +1,54 @@ +namespace FiveStack.Utilities; + +// Holds a boolean still until it has meant it for a while. +// +// The guidance panel moves house when the player steps onto the lineup's spot, +// and "on the spot" is a distance test with a hard edge. Standing near that edge +// -- which is exactly where somebody lining a throw up stands -- flips it many +// times a second, and the panel teleports between the top of the screen and the +// bottom on every flip. The reading is correct each time; it is the acting on it +// immediately that is wrong. +public readonly struct HudSteady +{ + private HudSteady(bool committed, bool pending, int since) + { + Committed = committed; + Pending = pending; + Since = since; + } + + /// The value callers should act on. + public bool Committed { get; } + + private bool Pending { get; } + + private int Since { get; } + + public static HudSteady Start(bool value) + { + return new HudSteady(value, value, 0); + } + + /// + /// Feeds a fresh reading. The committed value only follows once the new + /// reading has held for without going back. + /// + public HudSteady Read(bool reading, int now, int holdTicks) + { + if (reading == Committed) + { + // Back to where it was: whatever it was about to become is dropped, + // so a flicker never accumulates towards a move. + return new HudSteady(Committed, Committed, now); + } + + if (reading != Pending) + { + return new HudSteady(Committed, reading, now); + } + + return now - Since >= holdTicks + ? new HudSteady(reading, reading, now) + : new HudSteady(Committed, reading, Since); + } +} diff --git a/shared/dotnet/FiveStack.Utilities/LineupNaming.cs b/shared/dotnet/FiveStack.Utilities/LineupNaming.cs new file mode 100644 index 00000000..297544d0 --- /dev/null +++ b/shared/dotnet/FiveStack.Utilities/LineupNaming.cs @@ -0,0 +1,71 @@ +using FiveStack.Entities.Practice; +using FiveStack.Enums; + +namespace FiveStack.Utilities; + +// What the map itself would call a throw: "Window Smoke from T Spawn". +// +// A mirror of UtilityCalloutsService.autoName in the api, deliberately, for the +// same reason CalloutLookup is duplicated rather than fetched -- a name the HUD +// shows the moment you save and the name the website shows for the same throw +// have to be the same string. Any change here belongs in both. +public static class LineupNaming +{ + // The api's TYPE_LABELS. Only HighExplosive differs from its enum name. + public static string TypeLabel(string? utilityType) + { + if ( + string.Equals( + utilityType, + nameof(eUtilityType.HighExplosive), + StringComparison.OrdinalIgnoreCase + ) + ) + { + return "HE"; + } + + return string.IsNullOrWhiteSpace(utilityType) ? "" : utilityType!; + } + + /// + /// Empty when the map has no callouts near either end, which is what keeps + /// the caller's own fallback in play rather than replacing it with a name + /// that says nothing. + /// + public static string Auto( + string? utilityType, + Vec3 origin, + Vec3 landing, + IReadOnlyList? callouts + ) + { + if (callouts == null || callouts.Count == 0) + { + return ""; + } + + string from = CalloutLookup.ResolveLabel(origin, callouts); + string to = CalloutLookup.ResolveLabel(landing, callouts); + string type = TypeLabel(utilityType); + + if (to.Length > 0 && from.Length > 0) + { + // Thrown from the place it lands in: "from Window" onto Window says + // nothing, so it collapses to one name. + return to == from ? $"{to} {type}" : $"{to} {type} from {from}"; + } + + if (to.Length > 0) + { + return $"{to} {type}"; + } + + if (from.Length > 0) + { + return $"{type} from {from}"; + } + + return ""; + } +} diff --git a/shared/dotnet/FiveStack.Utilities/RadarMaps.cs b/shared/dotnet/FiveStack.Utilities/RadarMaps.cs new file mode 100644 index 00000000..5a6c3a64 --- /dev/null +++ b/shared/dotnet/FiveStack.Utilities/RadarMaps.cs @@ -0,0 +1,132 @@ +using System.Text.Json; +using FiveStack.Enums; + +namespace FiveStack.Utilities; + +// The radar calibration the HUD projects with, mirrored from the web panel by +// scripts/sync-radars.sh. Only maps listed here can draw a minimap; everything +// else falls back to the list. +public static class RadarMaps +{ + // Kept in step with the stylesheet's #radar. rules and the images in + // panorama/images/nadehud. HudLayoutContractTests asserts all three agree. + public static readonly IReadOnlyList All = new[] + { + "de_ancient", + "de_anubis", + "de_cache", + "de_dust2", + "de_inferno", + "de_mirage", + "de_nuke", + "de_overpass", + "de_train", + "de_vertigo", + }; + + // Marker colour classes. The engine's spelling for a molotov is Molotov and + // for an HE is HighExplosive; the stylesheet uses short names. + public static readonly IReadOnlyList Types = new[] { "smoke", "flash", "molly", "he" }; + + public static string TypeClass(string? utilityType) + { + if (string.Equals(utilityType, nameof(eUtilityType.Smoke), StringComparison.OrdinalIgnoreCase)) + { + return "smoke"; + } + + if (string.Equals(utilityType, nameof(eUtilityType.Flash), StringComparison.OrdinalIgnoreCase)) + { + return "flash"; + } + + if (string.Equals(utilityType, nameof(eUtilityType.Molotov), StringComparison.OrdinalIgnoreCase)) + { + return "molly"; + } + + return "he"; + } + + public static bool Has(string? map) + { + return All.Contains(RadarProjection.NormalizeMapName(map)); + } + + // metadata.json ships beside the layouts; a missing or malformed file means + // no minimap rather than a broken one. + public static Dictionary Load(string path) + { + var calibrations = new Dictionary(StringComparer.Ordinal); + + if (!File.Exists(path)) + { + return calibrations; + } + + using JsonDocument document = JsonDocument.Parse(File.ReadAllText(path)); + + foreach (JsonProperty entry in document.RootElement.EnumerateObject()) + { + if (entry.Name.StartsWith("_", StringComparison.Ordinal)) + { + continue; + } + + RadarCalibration? parsed = Parse(entry.Value); + + if (parsed != null) + { + calibrations[entry.Name] = parsed; + } + } + + return calibrations; + } + + private static RadarCalibration? Parse(JsonElement element) + { + if ( + !element.TryGetProperty("resolution", out JsonElement resolution) + || !element.TryGetProperty("offset", out JsonElement offset) + || !offset.TryGetProperty("x", out JsonElement offsetX) + || !offset.TryGetProperty("y", out JsonElement offsetY) + ) + { + return null; + } + + var calibration = new RadarCalibration + { + Resolution = resolution.GetSingle(), + OffsetX = offsetX.GetSingle(), + OffsetY = offsetY.GetSingle(), + }; + + if (element.TryGetProperty("splits", out JsonElement splits)) + { + foreach (JsonElement split in splits.EnumerateArray()) + { + if ( + !split.TryGetProperty("bounds", out JsonElement bounds) + || !split.TryGetProperty("offset", out JsonElement splitOffset) + ) + { + continue; + } + + calibration.Splits.Add( + new RadarSplit + { + BoundsTop = bounds.GetProperty("top").GetSingle(), + BoundsBottom = bounds.GetProperty("bottom").GetSingle(), + OffsetX = splitOffset.GetProperty("x").GetSingle(), + OffsetY = splitOffset.GetProperty("y").GetSingle(), + } + ); + } + } + + return calibration; + } +} diff --git a/shared/dotnet/FiveStack.Utilities/RadarProjection.cs b/shared/dotnet/FiveStack.Utilities/RadarProjection.cs new file mode 100644 index 00000000..767af62c --- /dev/null +++ b/shared/dotnet/FiveStack.Utilities/RadarProjection.cs @@ -0,0 +1,99 @@ +using FiveStack.Entities.Practice; + +namespace FiveStack.Utilities; + +// A straight port of web/composables/useRadarProjection.ts. The panel and the +// in-game HUD draw the same lineups onto the same radar images, so they have to +// agree to the pixel -- a lineup that lands on Window on the site and on Palace +// in game is worse than no map at all. Any change here belongs in both. +public class RadarSplit +{ + public float BoundsTop { get; set; } + public float BoundsBottom { get; set; } + public float OffsetX { get; set; } + public float OffsetY { get; set; } +} + +public class RadarCalibration +{ + public float Resolution { get; set; } + public float OffsetX { get; set; } + public float OffsetY { get; set; } + public List Splits { get; set; } = new List(); +} + +public static class RadarProjection +{ + // The web renders into a 1024 square regardless of the source image size, + // and the calibration is expressed against that, not against the png. + public const float Canvas = 1024f; + public const float Pixels = 1024f; + + public static string NormalizeMapName(string? name) + { + string trimmed = (name ?? "").Trim().ToLowerInvariant(); + + return trimmed.EndsWith("_night", StringComparison.Ordinal) + ? trimmed[..^"_night".Length] + : trimmed; + } + + // Nuke and Vertigo stack two playable levels on one image; a point inside a + // split's height band shifts by a percentage of the image, which is what + // puts the lower level on its own half. + public static (float X, float Y) Split(float z, IReadOnlyList? splits) + { + if (splits == null) + { + return (0f, 0f); + } + + foreach (RadarSplit split in splits) + { + if (z > split.BoundsBottom && z < split.BoundsTop) + { + return (split.OffsetX, split.OffsetY); + } + } + + return (0f, 0f); + } + + public static (float X, float Y) Project(Vec3 point, RadarCalibration calibration) + { + (float dx, float dy) = Split(point.z, calibration.Splits); + + float gameX = point.x + calibration.OffsetX; + float gameY = point.y + calibration.OffsetY; + + float pixelX = gameX / calibration.Resolution + dx / 100f * Pixels; + float pixelYFromBottom = gameY / calibration.Resolution + dy / 100f * Pixels; + + return (pixelX * (Canvas / Pixels), Canvas - pixelYFromBottom * (Canvas / Pixels)); + } + + // 0..1 across the image, which is what a one-of-N class grid needs. Points + // off the image are clamped rather than dropped: a marker pinned to the edge + // still says which way to look. + public static (float X, float Y) Normalized(Vec3 point, RadarCalibration calibration) + { + (float x, float y) = Project(point, calibration); + + return (Math.Clamp(x / Canvas, 0f, 1f), Math.Clamp(y / Canvas, 0f, 1f)); + } + + public static (int Column, int Row) Cell( + Vec3 point, + RadarCalibration calibration, + int columns, + int rows + ) + { + (float x, float y) = Normalized(point, calibration); + + return ( + (int)MathF.Round(x * (columns - 1)), + (int)MathF.Round(y * (rows - 1)) + ); + } +} diff --git a/shared/dotnet/FiveStack.Utilities/UtilityTargetCluster.cs b/shared/dotnet/FiveStack.Utilities/UtilityTargetCluster.cs new file mode 100644 index 00000000..e24bc51c --- /dev/null +++ b/shared/dotnet/FiveStack.Utilities/UtilityTargetCluster.cs @@ -0,0 +1,115 @@ +using FiveStack.Entities.Practice; + +namespace FiveStack.Utilities; + +// One place a grenade lands, and every lineup that lands there. The map draws +// targets rather than lineups because the two do not scale the same way: a +// worked map has hundreds of smokes but only a couple of dozen places worth +// smoking, and "the window smoke" is how people ask for them anyway. +public class UtilityTarget +{ + public required string Id { get; init; } + public required Vec3 Landing { get; init; } + public required string UtilityType { get; init; } + public required List Lineups { get; init; } + + public int Count => Lineups.Count; + + public string Name => Lineups[0].name; +} + +public static class UtilityTargetCluster +{ + // Two smokes landing this close are the same smoke as far as a player + // choosing one is concerned. Roughly a smoke's own radius. + public const float RadiusUnits = 150f; + + public static List Build( + IEnumerable lineups, + float radius = RadiusUnits + ) + { + var targets = new List(); + + // Deterministic: the same library must produce the same markers in the + // same order every frame, or they shuffle under the cursor. + foreach ( + LineupRecord lineup in lineups + .OrderBy(l => l.utility_type, StringComparer.Ordinal) + .ThenBy(l => l.name, StringComparer.Ordinal) + .ThenBy(l => l.client_id, StringComparer.Ordinal) + ) + { + UtilityTarget? nearest = null; + float best = float.MaxValue; + + foreach (UtilityTarget target in targets) + { + // Never merge a flash into a smoke: they land together and mean + // completely different things. + if ( + !string.Equals( + target.UtilityType, + lineup.utility_type, + StringComparison.OrdinalIgnoreCase + ) + ) + { + continue; + } + + float distance = Distance(target.Landing, lineup.detonation_position); + + if (distance <= radius && distance < best) + { + best = distance; + nearest = target; + } + } + + if (nearest != null) + { + nearest.Lineups.Add(lineup); + + continue; + } + + targets.Add( + new UtilityTarget + { + Id = Key(lineup), + Landing = lineup.detonation_position, + UtilityType = lineup.utility_type, + Lineups = new List { lineup }, + } + ); + } + + return targets; + } + + // The busiest targets first, so a fixed number of markers spends them on the + // spots the most lineups were written for. + public static List Top(IEnumerable targets, int limit) + { + return targets + .OrderByDescending(target => target.Count) + .ThenBy(target => target.Name, StringComparer.Ordinal) + .Take(limit) + .ToList(); + } + + public static string Key(LineupRecord lineup) + { + return string.IsNullOrEmpty(lineup.id) ? lineup.client_id : lineup.id!; + } + + private static float Distance(Vec3 a, Vec3 b) + { + float dx = a.x - b.x; + float dy = a.y - b.y; + float dz = a.z - b.z; + + return MathF.Sqrt(dx * dx + dy * dy + dz * dz); + } +} From f11b4fb9bca2d95eca8c443b01bd5feb5cedde6c Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 09:50:09 -0400 Subject: [PATCH 18/32] feature: nade qol enhancementsgst --- apps/utility-sw/src/Commands/Practice.cs | 9 +++++- .../utility-sw/src/Services/PracticeSystem.cs | 30 ++++--------------- 2 files changed, 14 insertions(+), 25 deletions(-) diff --git a/apps/utility-sw/src/Commands/Practice.cs b/apps/utility-sw/src/Commands/Practice.cs index fd25485f..992ca41d 100644 --- a/apps/utility-sw/src/Commands/Practice.cs +++ b/apps/utility-sw/src/Commands/Practice.cs @@ -759,9 +759,16 @@ public void OnSpawns(ICommandContext context) List spawns = _system.SpawnPoints(); + // Distinguished from "this map has none": the round has not started, so + // the game has not chosen its spawns yet. if (spawns.Count == 0) { - Reply(context, $" {ChatColors.Red}this map has no spawn points"); + Reply( + context, + $" {ChatColors.Red}no competitive spawns yet " + + $"{ChatColors.Grey}-- the round has not set them; try again in a moment" + ); + return; } diff --git a/apps/utility-sw/src/Services/PracticeSystem.cs b/apps/utility-sw/src/Services/PracticeSystem.cs index f1f84906..4c51e05a 100644 --- a/apps/utility-sw/src/Services/PracticeSystem.cs +++ b/apps/utility-sw/src/Services/PracticeSystem.cs @@ -378,6 +378,12 @@ public static void TeleportTo(IPlayer player, ThrowSnapshot position) /// choice -- game rules keep the selected list separately from the master /// list of every spawn entity -- so this reads the selection rather than /// re-deriving it from priorities and guessing at the mode. + /// + /// Empty rather than everything when the rules are not populated yet. There + /// used to be a fall back to enumerating info_player_* here, which on Mirage + /// is the same unreadable pile of dozens this method exists to avoid, shown + /// with nothing to say it had fallen back. A caller that gets none can say + /// so and be asked again a moment later. /// public List SpawnPoints() { @@ -394,30 +400,6 @@ public List SpawnPoints() Collect(spawns, rules.CTSpawnPoints); } - // Before the rules are populated there is nothing to read, and an - // empty ring toggle would look like a broken command rather than an - // early one. Every spawn beats no spawn. - if (spawns.Count == 0) - { - foreach ( - string designer in new[] - { - "info_player_terrorist", - "info_player_counterterrorist", - } - ) - { - foreach ( - CBaseEntity spawn in _core.EntitySystem.GetAllEntitiesByDesignerName( - designer - ) - ) - { - Add(spawns, spawn); - } - } - } - return spawns; } From 579dae12929518c84fa531b0dbfbfc33bea99155 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 09:53:31 -0400 Subject: [PATCH 19/32] wip --- .../utility-sw/src/Services/PracticeSystem.cs | 26 ++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/apps/utility-sw/src/Services/PracticeSystem.cs b/apps/utility-sw/src/Services/PracticeSystem.cs index 4c51e05a..4f05c2c6 100644 --- a/apps/utility-sw/src/Services/PracticeSystem.cs +++ b/apps/utility-sw/src/Services/PracticeSystem.cs @@ -403,14 +403,34 @@ public List SpawnPoints() return spawns; } + // A competitive side starts five players. The team lists hold every spawn + // the map registers for that side -- Mirage has thirty-three across both -- + // because casual and deathmatch draw from the same pool. + private const int CompetitiveTeamSize = 5; + + // The game picks by priority: enabled spawns sorted ascending, and it takes + // as many as the mode seats. Anything past that is filler for larger modes, + // which is what buried the five that a competitive round can actually use. private static void Collect( List spawns, - CUtlVector> selected + CUtlVector> team ) { - for (int index = 0; index < selected.Count; index++) + var usable = new List(); + + for (int index = 0; index < team.Count; index++) + { + SpawnPoint? point = team[index].Value; + + if (point != null && point.IsValid && point.Enabled) + { + usable.Add(point); + } + } + + foreach (SpawnPoint point in usable.OrderBy(p => p.Priority).Take(CompetitiveTeamSize)) { - Add(spawns, selected[index].Value); + Add(spawns, point); } } From 5400f298733a4522c9f5f27fa3736c10bbc05875 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 10:05:15 -0400 Subject: [PATCH 20/32] wip --- .../panorama/layout/custom_game/nade_hud.xml | 2 +- apps/utility-sw/src/Commands/Practice.cs | 45 ++++++++++++++++++- apps/utility-sw/src/Services/PracticeDrill.cs | 18 +++++--- apps/utility-sw/src/UtilityPracticePlugin.cs | 19 ++++++++ 4 files changed, 75 insertions(+), 9 deletions(-) diff --git a/apps/utility-sw/hud/panorama/layout/custom_game/nade_hud.xml b/apps/utility-sw/hud/panorama/layout/custom_game/nade_hud.xml index b6a21f08..323dd6a5 100644 --- a/apps/utility-sw/hud/panorama/layout/custom_game/nade_hud.xml +++ b/apps/utility-sw/hud/panorama/layout/custom_game/nade_hud.xml @@ -35,7 +35,7 @@ - diff --git a/apps/utility-sw/src/Commands/Practice.cs b/apps/utility-sw/src/Commands/Practice.cs index 992ca41d..be2c3e21 100644 --- a/apps/utility-sw/src/Commands/Practice.cs +++ b/apps/utility-sw/src/Commands/Practice.cs @@ -84,6 +84,26 @@ public void OnSave(ICommandContext context) // Shared by ".save " and by the prompt, which answers later and has no // command context to reply into. + // What a bare .drill should rep. Focused already answers "which lineup is + // this player indicating", including the two-on-one-spot case where aim + // decides, so this is that answer plus the loaded fallback. + private LineupRecord? DrillTarget(IPlayer player) + { + CCSPlayerPawn? pawn = player.PlayerPawn; + + if (pawn != null && pawn.IsValid) + { + (LineupRecord? focused, _, _) = Focused(player, pawn); + + if (focused != null) + { + return focused; + } + } + + return _system.StateFor(player.SteamID).Loaded; + } + private void SaveThrow(ulong steamId, string name) { IPlayer? player = _system.Find(steamId); @@ -553,6 +573,29 @@ public void OnDrill(ICommandContext context) return; } + // A bare .drill takes the lineup the player is indicating: the one they + // are standing on, or -- when a spot holds more than one -- the one they + // are pointing at. Failing that, the last one they loaded, which after a + // drill is the last one they drilled. Only somebody standing nowhere in + // particular gets their whole book. + if (string.IsNullOrWhiteSpace(string.Join(" ", context.Args))) + { + LineupRecord? here = DrillTarget(player); + + if (here != null) + { + if (_drill.StartWith(player.SteamID, new[] { here }) == eDrillStart.Started) + { + Reply( + context, + $" {ChatColors.Green}drilling {ChatColors.Default}{here.name}" + ); + + return; + } + } + } + switch (_drill.Start(player.SteamID, request.Order, request.Count)) { case eDrillStart.AlreadyRunning: @@ -1344,7 +1387,7 @@ public void OnRefresh(ICommandContext context) $" {ChatColors.Default}.spawn {ChatColors.Grey}teleports to a spawn point", $" {ChatColors.Default}.bloom {ChatColors.Grey}outlines where the loaded smoke lands", $" {ChatColors.Default}.solve [name] {ChatColors.Grey}finds a throw onto the spot you are looking at", - $" {ChatColors.Default}.drill [count] [worst] / .skip {ChatColors.Grey}drills your book and scores it", + $" {ChatColors.Default}.drill {ChatColors.Grey}reps the lineup you are on; {ChatColors.Default}.drill [count] [worst] {ChatColors.Grey}drills your book", $" {ChatColors.Default}.drill / .cancel {ChatColors.Grey}stops a drill you are in", $" {ChatColors.Default}.playbook / .run / .playbook stop {ChatColors.Grey}the loaded execute", $" {ChatColors.Default}.hud {ChatColors.Grey}swaps the panel for centre text", diff --git a/apps/utility-sw/src/Services/PracticeDrill.cs b/apps/utility-sw/src/Services/PracticeDrill.cs index c821ac53..e7f0eb0e 100644 --- a/apps/utility-sw/src/Services/PracticeDrill.cs +++ b/apps/utility-sw/src/Services/PracticeDrill.cs @@ -252,8 +252,13 @@ public bool Waiting(ulong steamId) return $"Drill {run.Position}/{run.Length} - rep {run.Rep}/{run.Reps} - {tally}"; } - // The same run, sized for a HUD slot rather than a chat line: a position and - // the fraction of the queue behind it. + // Landing it this many times is what "drilled" means. The bar is progress + // towards that, not towards the end of a queue. + public const int MasteryTarget = 10; + + // What a drill is for, sized for a HUD slot: how many landed out of how many + // thrown. Position in the queue was the old readout and it said nothing -- + // on a single-lineup drill it read "1 / 1" for the whole run. public (string Label, int Tenths)? HudProgress(ulong steamId) { if (!_runs.TryGetValue(steamId, out PracticeDrillRun? run) || run.Finished) @@ -261,12 +266,11 @@ public bool Waiting(ulong steamId) return null; } - int tenths = - run.Length <= 0 - ? 0 - : (int)Math.Round((run.Position - 1) / (double)run.Length * (HudSlots.MeterSteps - 1)); + int tenths = Math.Clamp(run.Hits, 0, MasteryTarget) + * (HudSlots.MeterSteps - 1) + / MasteryTarget; - return ($"{run.Position} / {run.Length}", tenths); + return ($"{run.Hits} / {run.Attempts}", tenths); } public void Forget(ulong steamId) diff --git a/apps/utility-sw/src/UtilityPracticePlugin.cs b/apps/utility-sw/src/UtilityPracticePlugin.cs index 6fe42fef..37481b48 100644 --- a/apps/utility-sw/src/UtilityPracticePlugin.cs +++ b/apps/utility-sw/src/UtilityPracticePlugin.cs @@ -9,6 +9,8 @@ using SwiftlyS2.Shared.Players; using SwiftlyS2.Shared.Plugins; using static SwiftlyS2.Shared.Helper; +using SwiftlyS2.Shared.GameEventDefinitions; +using SwiftlyS2.Shared.Misc; using SwiftlyS2.Shared.Natives; using SwiftlyS2.Shared.SchemaDefinitions; @@ -184,6 +186,13 @@ public override void Load(bool hotReload) _mapLoadHandler = @event => OnMapLoad(@event.MapName); Core.Event.OnMapLoad += _mapLoadHandler; + Core.GameEvent.HookPre(_ => + { + KeepRoundsMoving(); + + return HookResult.Continue; + }); + // The grenade models floated over each lineup have to be in the map's // precache list or they render as ERROR. This fires at map load, which // is why a plugin hot-reloaded mid-map cannot show them until the next @@ -1830,6 +1839,16 @@ private void ApplyPracticeCfg() Core.Scheduler.DelayBySeconds(CfgReapplySeconds, () => RunPracticeCfg()); } + // Freeze time is the one cvar a restart can beat us to. The cfg above lands + // a tick after the map loads and again three seconds later, and a restart + // inside that window begins its countdown with whatever the map's own cfg + // left behind -- so it is asserted again as each round begins, where nothing + // can exec over it afterwards. + private void KeepRoundsMoving() + { + Core.Engine.ExecuteCommand("mp_freezetime 0;mp_warmup_pausetimer 0;mp_warmup_end"); + } + // Nobody is here but the thrower unless somebody has asked for a bot to // throw at. Kept out of PracticeCfg because that list is re-run on every // map change and twice on load, and a bot placed to practise against must From 3bd3dd3c16bc3a3dfb78078ec1de47624e6c5c3d Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 10:07:50 -0400 Subject: [PATCH 21/32] wip --- apps/utility-sw/src/Commands/Practice.cs | 5 ++- apps/utility-sw/src/Services/PracticeDrill.cs | 27 +++++++++++----- .../FiveStack.Utilities/PracticeDrillRun.cs | 31 +++++++++++++++++-- 3 files changed, 53 insertions(+), 10 deletions(-) diff --git a/apps/utility-sw/src/Commands/Practice.cs b/apps/utility-sw/src/Commands/Practice.cs index be2c3e21..67a3bede 100644 --- a/apps/utility-sw/src/Commands/Practice.cs +++ b/apps/utility-sw/src/Commands/Practice.cs @@ -584,7 +584,10 @@ public void OnDrill(ICommandContext context) if (here != null) { - if (_drill.StartWith(player.SteamID, new[] { here }) == eDrillStart.Started) + if ( + _drill.StartWith(player.SteamID, new[] { here }, endless: true) + == eDrillStart.Started + ) { Reply( context, diff --git a/apps/utility-sw/src/Services/PracticeDrill.cs b/apps/utility-sw/src/Services/PracticeDrill.cs index e7f0eb0e..db7b7f58 100644 --- a/apps/utility-sw/src/Services/PracticeDrill.cs +++ b/apps/utility-sw/src/Services/PracticeDrill.cs @@ -74,7 +74,11 @@ public eDrillStart Start(ulong steamId, eDrillOrder order, int count) // A drill over lineups somebody picked rather than a slice of their book -- // the website sending "drill these" is the same run, chosen differently. - public eDrillStart StartWith(ulong steamId, IReadOnlyList queue) + public eDrillStart StartWith( + ulong steamId, + IReadOnlyList queue, + bool endless = false + ) { if (_runs.ContainsKey(steamId)) { @@ -91,23 +95,30 @@ public eDrillStart StartWith(ulong steamId, IReadOnlyList queue) return eDrillStart.NotConnected; } - return Begin(steamId, queue.ToList(), "as sent"); + return Begin(steamId, queue.ToList(), "as sent", endless); } - private eDrillStart Begin(ulong steamId, List queue, string ordering) + private eDrillStart Begin( + ulong steamId, + List queue, + string ordering, + bool endless = false + ) { if (queue.Count == 0) { return eDrillStart.NothingToDrill; } - var run = new PracticeDrillRun(queue, DrillReps); + var run = new PracticeDrillRun(queue, DrillReps, endless); _runs[steamId] = run; Tell?.Invoke( steamId, - $"drill started - {queue.Count} lineups x{DrillReps}, {ordering}" - + " (.skip to pass, .cancel to end)" + endless + ? "drilling until you stop it (.drill again to stop, .next for the next one)" + : $"drill started - {queue.Count} lineups x{DrillReps}, {ordering}" + + " (.skip to pass, .cancel to end)" ); Advance(steamId, run); @@ -249,7 +260,9 @@ public bool Waiting(ulong steamId) string tally = run.Attempts == 0 ? "no throws yet" : Tally(run); - return $"Drill {run.Position}/{run.Length} - rep {run.Rep}/{run.Reps} - {tally}"; + return run.Endless + ? $"Drill - {tally}" + : $"Drill {run.Position}/{run.Length} - rep {run.Rep}/{run.Reps} - {tally}"; } // Landing it this many times is what "drilled" means. The bar is progress diff --git a/shared/dotnet/FiveStack.Utilities/PracticeDrillRun.cs b/shared/dotnet/FiveStack.Utilities/PracticeDrillRun.cs index 34c92c63..325fed8a 100644 --- a/shared/dotnet/FiveStack.Utilities/PracticeDrillRun.cs +++ b/shared/dotnet/FiveStack.Utilities/PracticeDrillRun.cs @@ -31,12 +31,27 @@ private class Pending // Reps are consecutive: a lineup is thrown until it is learned, then the // run moves on. Interleaving them would make the drill a memory test of // where the spots are rather than practice at hitting one. - public PracticeDrillRun(IReadOnlyList queue, int reps = 1) + /// + /// Keeps repping rather than completing. A drill somebody started by + /// standing on a spot is "work this until I say stop", and a run that ends + /// itself after three throws cannot be toggled off -- it has already gone. + /// Reps still bound the crosshair fade; they just stop ending the run. + /// + public PracticeDrillRun( + IReadOnlyList queue, + int reps = 1, + bool endless = false + ) { _queue = queue.ToList(); _reps = Math.Max(1, reps); + _endless = endless; } + private readonly bool _endless; + + public bool Endless => _endless; + private readonly int _reps; private int _rep; @@ -114,16 +129,28 @@ public PracticeDrillRun(IReadOnlyList queue, int reps = 1) } _rep = 0; - _faded = 0; _index++; if (_index >= _queue.Count) { + // Round the queue again rather than ending. The assist is NOT reset + // here: they have already learned this throw once, and handing the + // crosshair back every few reps would undo the point of fading it. + if (_endless) + { + _index = 0; + Current = _queue[0]; + + return Current; + } + Current = null; Ending = eDrillEnd.Completed; return null; } + _faded = 0; + Current = _queue[_index]; return Current; From 21aea5315aa0d8841166afd451ecd65309120bdf Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 10:31:06 -0400 Subject: [PATCH 22/32] wip --- .github/workflows/hud-workshop.yaml | 148 ++++++++++++++++++++++++++++ apps/utility-sw/hud/README.md | 41 ++++++++ 2 files changed, 189 insertions(+) create mode 100644 .github/workflows/hud-workshop.yaml diff --git a/.github/workflows/hud-workshop.yaml b/.github/workflows/hud-workshop.yaml new file mode 100644 index 00000000..6e6496aa --- /dev/null +++ b/.github/workflows/hud-workshop.yaml @@ -0,0 +1,148 @@ +name: Publish HUD Addon + +# Manual only. Publishing pushes files to every player who joins a practice +# server, so it is a decision rather than a consequence of merging. +on: + workflow_dispatch: + inputs: + item_id: + description: "Workshop item id to update. Leave blank to create a new item (once)." + required: false + type: string + dry_run: + description: "Build and verify the addon without publishing." + required: false + type: boolean + default: false + +jobs: + publish: + runs-on: ubuntu-latest + permissions: + contents: read + steps: + - uses: actions/checkout@v4 + + - uses: actions/setup-dotnet@v4 + with: + dotnet-version: "10.0.x" + + # The slot contract is the only thing that catches a renamed dialog + # variable, and a broken layout fails silently in game rather than at + # build time. Never publish an addon whose contract has not been checked. + - name: Verify the slot contract + run: dotnet test apps/utility-sw/test/FiveStack.Tests.csproj --nologo + + # PanoramaCompiler needs only the .NET SDK and build.sh fetches vpkeditcli + # into .tools on Linux, so nothing here needs Windows or a CS2 install. + - name: Build the addon + run: ./apps/utility-sw/hud/build.sh + + # An addon that mounts and resolves nothing is the failure mode with no + # symptom: the layouts must sit under panorama/, and there must be five of + # them plus the stylesheet. + - name: Verify what was packed + run: | + set -euo pipefail + VPK=apps/utility-sw/hud/build/upload/5stack_utility_hud.vpk + [ -f "$VPK" ] || { echo "::error::no vpk was produced"; exit 1; } + + TREE=$(apps/utility-sw/hud/.tools/vpkeditcli --file-tree "$VPK" 2>&1 || true) + echo "$TREE" + + for expected in \ + panorama \ + nade_hud.vxml_c nade_list.vxml_c nade_map.vxml_c \ + nade_run.vxml_c nade_edit.vxml_c nadehud.vcss_c + do + case "$TREE" in + *"$expected"*) ;; + *) echo "::error::packed addon is missing $expected"; exit 1 ;; + esac + done + + echo "addon: $(du -h "$VPK" | cut -f1)" + + - name: Stop here + if: inputs.dry_run + run: echo "::notice::dry run - built and verified, nothing published" + + - name: Install SteamCMD + if: ${{ !inputs.dry_run }} + run: | + sudo add-apt-repository -y multiverse + sudo dpkg --add-architecture i386 + sudo apt-get update -qq + echo steam steam/question select "I AGREE" | sudo debconf-set-selections + echo steam steam/license note '' | sudo debconf-set-selections + sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq steamcmd + + - name: Publish + if: ${{ !inputs.dry_run }} + env: + STEAM_USERNAME: ${{ secrets.STEAM_USERNAME }} + STEAM_PASSWORD: ${{ secrets.STEAM_PASSWORD }} + ITEM_ID: ${{ inputs.item_id }} + run: | + set -euo pipefail + HUD="$GITHUB_WORKSPACE/apps/utility-sw/hud" + + if [ -z "${STEAM_USERNAME:-}" ] || [ -z "${STEAM_PASSWORD:-}" ]; then + echo "::error::STEAM_USERNAME and STEAM_PASSWORD secrets are required" + exit 1 + fi + + # Digits or nothing. It is interpolated into the vdf below, and a + # workshop id has never legitimately contained a quote. + case "${ITEM_ID:-}" in + ""|*[!0-9]*) + if [ -n "${ITEM_ID:-}" ]; then + echo "::error::item_id must be digits" + exit 1 + fi + ;; + esac + + [ -f "$HUD/preview.png" ] || { + echo "::error::apps/utility-sw/hud/preview.png is missing; Steam requires a preview image" + exit 1 + } + + cat > "$HUD/build/workshop.vdf" < +quit # answer the prompt once +base64 -i ~/Steam/config/config.vdf | pbcopy +``` + +Restore it to `~/Steam/config/config.vdf` on the runner before the publish step +and drop the password from the login line. + +### Publishing by hand + +`publish.sh` does the same thing locally and needs SteamCMD installed. The CI +route is preferred — it cannot skip the contract check, and it cannot publish +from a working tree with uncommitted layout edits in it. + That collection step is also Windows-only. `publish.sh` skips both by uploading the packed vpk straight through SteamCMD: From b3de2f7b064a77f1c4e99e62bcd103dc8bb463dc Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 10:36:45 -0400 Subject: [PATCH 23/32] wip --- .../src/Services/UtilityApiClient.cs | 17 ++++++++-- .../src/Services/UtilityApiClient.cs | 17 ++++++++-- apps/utility-sw/test/HudAimGridTests.cs | 32 +++++++++++++++++++ .../dotnet/FiveStack.Utilities/HudAimGrid.cs | 8 ++++- 4 files changed, 67 insertions(+), 7 deletions(-) diff --git a/apps/utility-css/src/Services/UtilityApiClient.cs b/apps/utility-css/src/Services/UtilityApiClient.cs index 640adcc1..a540df4b 100644 --- a/apps/utility-css/src/Services/UtilityApiClient.cs +++ b/apps/utility-css/src/Services/UtilityApiClient.cs @@ -496,10 +496,21 @@ private sealed class SendOutcome if (outcome != null) { int status = (int)response.StatusCode; - // 408 and 429 are the two the panel expects to be asked - // again; every other 4xx is a refusal of this payload. + // A refusal is the panel saying this payload is wrong, and + // it will still be wrong next time -- so it is dropped + // rather than queued. 401 and 403 are NOT that: a rotated + // plugin key, or a pod that came up before the panel + // authorised it, refuses every request until the credential + // is right and then accepts them all. Treating those as + // refusals threw away a player's whole session of scored + // attempts, and took the already-queued ones with it. outcome.Rejected = - status >= 400 && status < 500 && status != 408 && status != 429; + status >= 400 + && status < 500 + && status != 401 + && status != 403 + && status != 408 + && status != 429; } return null; diff --git a/apps/utility-sw/src/Services/UtilityApiClient.cs b/apps/utility-sw/src/Services/UtilityApiClient.cs index dc31d517..87c51b1f 100644 --- a/apps/utility-sw/src/Services/UtilityApiClient.cs +++ b/apps/utility-sw/src/Services/UtilityApiClient.cs @@ -627,10 +627,21 @@ private sealed class SendOutcome outcome.Status = status; outcome.Reason = reason; - // 408 and 429 are the two the panel expects to be asked - // again; every other 4xx is a refusal of this payload. + // A refusal is the panel saying this payload is wrong, and + // it will still be wrong next time -- so it is dropped + // rather than queued. 401 and 403 are NOT that: a rotated + // plugin key, or a pod that came up before the panel + // authorised it, refuses every request until the credential + // is right and then accepts them all. Treating those as + // refusals threw away a player's whole session of scored + // attempts, and took the already-queued ones with it. outcome.Rejected = - status >= 400 && status < 500 && status != 408 && status != 429; + status >= 400 + && status < 500 + && status != 401 + && status != 403 + && status != 408 + && status != 429; } return null; diff --git a/apps/utility-sw/test/HudAimGridTests.cs b/apps/utility-sw/test/HudAimGridTests.cs index fa7cf913..8da47967 100644 --- a/apps/utility-sw/test/HudAimGridTests.cs +++ b/apps/utility-sw/test/HudAimGridTests.cs @@ -118,4 +118,36 @@ public void EveryCellIsInRange() Assert.InRange(HudAimGrid.Row(degrees, 0f, Tolerance, Rows), 0, Rows - 1); } } + + // The words and the dot must never disagree: the dot sits where the player + // is aiming, so a target to the right puts the dot LEFT and the text has to + // say LOOK RIGHT. Source yaw increases anticlockwise, so a target BELOW the + // player's yaw is the one on their right. + [Fact] + public void DirectionAgreesWithTheDot() + { + Assert.True(HudAimGrid.Column(90f, 89f, Tolerance, Columns) < CentreColumn); + Assert.Equal("LOOK RIGHT", HudAimGrid.Direction(90f, 0f, 89f, 0f, Tolerance)); + + Assert.True(HudAimGrid.Column(90f, 91f, Tolerance, Columns) > CentreColumn); + Assert.Equal("LOOK LEFT", HudAimGrid.Direction(90f, 0f, 91f, 0f, Tolerance)); + + Assert.True(HudAimGrid.Row(5f, 0f, Tolerance, Rows) > CentreRow); + Assert.Equal("LOOK UP", HudAimGrid.Direction(90f, 5f, 90f, 0f, Tolerance)); + + Assert.True(HudAimGrid.Row(-5f, 0f, Tolerance, Rows) < CentreRow); + Assert.Equal("LOOK DOWN", HudAimGrid.Direction(90f, -5f, 90f, 0f, Tolerance)); + } + + [Fact] + public void DirectionNamesBothAxesWhenBothAreOut() + { + Assert.Equal("LOOK RIGHT AND DOWN", HudAimGrid.Direction(90f, -5f, 89f, 0f, Tolerance)); + } + + [Fact] + public void OnTheAngleSaysSo() + { + Assert.Equal("LINED UP - THROW IT", HudAimGrid.Direction(90f, -12f, 90f, -12f, Tolerance)); + } } diff --git a/shared/dotnet/FiveStack.Utilities/HudAimGrid.cs b/shared/dotnet/FiveStack.Utilities/HudAimGrid.cs index eef036b3..170ca8d8 100644 --- a/shared/dotnet/FiveStack.Utilities/HudAimGrid.cs +++ b/shared/dotnet/FiveStack.Utilities/HudAimGrid.cs @@ -93,7 +93,13 @@ float tolerance tolerance = PracticeLineupUtility.DefaultAimTolerance; } - float yaw = Delta(targetYaw, eyeYaw); + // Both axes are measured EYE minus TARGET, which is the direction the + // player has to move to close the gap. Source yaw increases + // anticlockwise -- mouse right lowers it -- so a target below the + // player's yaw is to their right, and the operand order is what carries + // that. Reversed on yaw alone, this told the player to look away from + // the lineup while the pitch half was still right. + float yaw = Delta(eyeYaw, targetYaw); float pitch = Delta(eyePitch, targetPitch); var parts = new List(); From a49957866936992363aa3b77bb400ba7ef8cbb9f Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 10:42:59 -0400 Subject: [PATCH 24/32] @game-server bug: callouts gave up on a slow map, and a prompt outlived the player who asked Three from the review of this branch. Report ran once, from the map-load handler, and gave up if it found nothing. env_cs_place entities are not guaranteed to have spawned by then, so a map that was slow to load stayed unnamed for the whole session -- silently: no HUD lands kicker, .save falling through to the chat prompt on every throw, and nothing POSTed for the workshop maps that endpoint exists to cover. It is asked again on the per-second tick now, and bounded so a map with genuinely no places is not walked for ever. Pending HUD prompts were keyed by slot id and never cleared on disconnect, so the next player into that slot answered a question they were never asked -- and their first chat line was swallowed rather than reaching the server. A prompt carries the steam id of whoever asked for it now, and the disconnect handler cancels it either way. Both update workflows combined set -euo pipefail with a grep -rl command substitution, which aborts the step before the friendly "the pin pattern must have changed" error it exists to print. --- .github/workflows/ccs-update.yaml | 5 ++++- .github/workflows/swiftly-update.yaml | 5 ++++- .../src/Services/MapCalloutsReporter.cs | 22 +++++++++++++++---- apps/utility-css/src/UtilityPracticePlugin.cs | 2 ++ apps/utility-sw/src/Commands/Practice.cs | 2 +- apps/utility-sw/src/Hud/HudPrompt.cs | 13 ++++++++++- apps/utility-sw/src/Hud/PracticeEdit.cs | 1 + .../src/Services/MapCalloutsReporter.cs | 22 +++++++++++++++---- apps/utility-sw/src/UtilityPracticePlugin.cs | 3 +++ 9 files changed, 63 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ccs-update.yaml b/.github/workflows/ccs-update.yaml index 2508aca4..8ce3957f 100644 --- a/.github/workflows/ccs-update.yaml +++ b/.github/workflows/ccs-update.yaml @@ -64,7 +64,10 @@ jobs: git config user.email github-actions@github.com git add apps/counterstrikesharp/Dockerfile - CSPROJS=$(grep -rl 'Include="CounterStrikeSharp.API"' --include='*.csproj' apps) + # `|| true` because grep exits 1 when it matches nothing, and + # `set -e` would abort the step before the friendly error below -- + # which is the whole reason that branch exists. + CSPROJS=$(grep -rl 'Include="CounterStrikeSharp.API"' --include='*.csproj' apps || true) if [ -z "$CSPROJS" ]; then echo "::error::no csproj references CounterStrikeSharp.API -- the pin pattern must have changed" exit 1 diff --git a/.github/workflows/swiftly-update.yaml b/.github/workflows/swiftly-update.yaml index 362c0bd4..14699ec6 100644 --- a/.github/workflows/swiftly-update.yaml +++ b/.github/workflows/swiftly-update.yaml @@ -63,7 +63,10 @@ jobs: git config user.email github-actions@github.com git add apps/swiftly/Dockerfile - CSPROJS=$(grep -rl 'Include="SwiftlyS2.CS2"' --include='*.csproj' apps) + # `|| true` because grep exits 1 when it matches nothing, and + # `set -e` would abort the step before the friendly error below -- + # which is the whole reason that branch exists. + CSPROJS=$(grep -rl 'Include="SwiftlyS2.CS2"' --include='*.csproj' apps || true) if [ -z "$CSPROJS" ]; then echo "::error::no csproj references SwiftlyS2.CS2 -- the pin pattern must have changed" exit 1 diff --git a/apps/utility-css/src/Services/MapCalloutsReporter.cs b/apps/utility-css/src/Services/MapCalloutsReporter.cs index da52c789..8fbc0207 100644 --- a/apps/utility-css/src/Services/MapCalloutsReporter.cs +++ b/apps/utility-css/src/Services/MapCalloutsReporter.cs @@ -24,7 +24,17 @@ public class MapCalloutsReporter private readonly UtilityApiClient _api; private readonly ILogger _logger; + // env_cs_place entities are not guaranteed to have spawned by the time the + // map-load handler runs, so an empty walk means "not yet", not "this map + // has none". Report is asked again on the per-second tick until one of them + // answers or the attempts run out -- without it a map that was slow to + // spawn stays unnamed for the whole session, silently: no HUD kicker, no + // auto-named save, and nothing ever POSTed for the workshop maps this + // endpoint exists for. + private const int MaxAttempts = 10; + private string _reported = string.Empty; + private int _attempts; private List _cached = new List(); public MapCalloutsReporter(UtilityApiClient api, ILogger logger) @@ -36,6 +46,7 @@ public MapCalloutsReporter(UtilityApiClient api, ILogger lo public void Reset() { _reported = string.Empty; + _attempts = 0; _cached = new List(); } @@ -137,16 +148,19 @@ CBaseEntity entity in Utilities.FindAllEntitiesByDesignerName( } /// - /// Reports the level's callouts once per map. Nothing is retried: the next - /// map load reports again, and a level nobody opens again needs nothing. + /// Reports the level's callouts once per map. Safe to call every tick: it + /// stops the moment it has an answer, and gives up after MaxAttempts so a + /// map that genuinely has no places is not walked for ever. /// - public void Report(string mapName) + public void Report(string? mapName) { - if (string.IsNullOrEmpty(mapName) || _reported == mapName) + if (string.IsNullOrEmpty(mapName) || _reported == mapName || _attempts >= MaxAttempts) { return; } + _attempts++; + List callouts; try diff --git a/apps/utility-css/src/UtilityPracticePlugin.cs b/apps/utility-css/src/UtilityPracticePlugin.cs index ed0028bf..068da6ef 100644 --- a/apps/utility-css/src/UtilityPracticePlugin.cs +++ b/apps/utility-css/src/UtilityPracticePlugin.cs @@ -155,6 +155,8 @@ private void OnSecond() _system.Tick(); _playbook.Second(); _drill.Second(); + // A no-op once the map has answered; see MapCalloutsReporter.Report. + _callouts.Report(_session.Map); DrainPendingMapLoad(); } diff --git a/apps/utility-sw/src/Commands/Practice.cs b/apps/utility-sw/src/Commands/Practice.cs index 67a3bede..f5c37d67 100644 --- a/apps/utility-sw/src/Commands/Practice.cs +++ b/apps/utility-sw/src/Commands/Practice.cs @@ -68,7 +68,7 @@ public void OnSave(ICommandContext context) int playerId = player.PlayerID; ulong steamId = player.SteamID; - _prompt.Ask(playerId, answer => SaveThrow(steamId, answer)); + _prompt.Ask(playerId, steamId, answer => SaveThrow(steamId, answer)); Reply( context, diff --git a/apps/utility-sw/src/Hud/HudPrompt.cs b/apps/utility-sw/src/Hud/HudPrompt.cs index 6cf51674..64108746 100644 --- a/apps/utility-sw/src/Hud/HudPrompt.cs +++ b/apps/utility-sw/src/Hud/HudPrompt.cs @@ -29,6 +29,7 @@ public HudPrompt(ISwiftlyCore core, ILogger logger) private class Pending { + public required ulong SteamId { get; init; } public required Action Answered { get; init; } public required DateTime Expires { get; init; } } @@ -53,10 +54,11 @@ public void Stop() _waiting.Clear(); } - public void Ask(int playerId, Action answered) + public void Ask(int playerId, ulong steamId, Action answered) { _waiting[playerId] = new Pending { + SteamId = steamId, Answered = answered, Expires = DateTime.UtcNow + Window, }; @@ -81,6 +83,15 @@ private HookResult OnChat(int playerId, string text, bool teamOnly) _waiting.Remove(playerId); + // A prompt belongs to the PLAYER, not to the slot they were in. Slots + // are recycled the moment somebody leaves, so without this the next + // occupant's first chat line answers a question they were never asked + // -- and is swallowed on the way, never reaching the server. + if (_core.PlayerManager.GetPlayer(playerId)?.SteamID != pending.SteamId) + { + return HookResult.Continue; + } + if (DateTime.UtcNow > pending.Expires) { return HookResult.Continue; diff --git a/apps/utility-sw/src/Hud/PracticeEdit.cs b/apps/utility-sw/src/Hud/PracticeEdit.cs index 6575b37e..972777d7 100644 --- a/apps/utility-sw/src/Hud/PracticeEdit.cs +++ b/apps/utility-sw/src/Hud/PracticeEdit.cs @@ -140,6 +140,7 @@ private void OnEditClicked(IPlayer player, string button) _prompt.Ask( player.PlayerID, + steamId, answer => { if (!_edits.TryGetValue(steamId, out EditDraft? open)) diff --git a/apps/utility-sw/src/Services/MapCalloutsReporter.cs b/apps/utility-sw/src/Services/MapCalloutsReporter.cs index c387b45d..51eca8cb 100644 --- a/apps/utility-sw/src/Services/MapCalloutsReporter.cs +++ b/apps/utility-sw/src/Services/MapCalloutsReporter.cs @@ -24,7 +24,17 @@ public class MapCalloutsReporter private readonly UtilityApiClient _api; private readonly ILogger _logger; + // env_cs_place entities are not guaranteed to have spawned by the time the + // map-load handler runs, so an empty walk means "not yet", not "this map + // has none". Report is asked again on the per-second tick until one of them + // answers or the attempts run out -- without it a map that was slow to + // spawn stays unnamed for the whole session, silently: no HUD kicker, no + // auto-named save, and nothing ever POSTed for the workshop maps this + // endpoint exists for. + private const int MaxAttempts = 10; + private string _reported = string.Empty; + private int _attempts; private List _cached = new List(); public MapCalloutsReporter( @@ -41,6 +51,7 @@ ILogger logger public void Reset() { _reported = string.Empty; + _attempts = 0; _cached = new List(); } @@ -124,16 +135,19 @@ CCSPlace place in _core.EntitySystem.GetAllEntitiesByDesignerName( } /// - /// Reports the level's callouts once per map. Nothing is retried: the next - /// map load reports again, and a level nobody opens again needs nothing. + /// Reports the level's callouts once per map. Safe to call every tick: it + /// stops the moment it has an answer, and gives up after MaxAttempts so a + /// map that genuinely has no places is not walked for ever. /// - public void Report(string mapName) + public void Report(string? mapName) { - if (string.IsNullOrEmpty(mapName) || _reported == mapName) + if (string.IsNullOrEmpty(mapName) || _reported == mapName || _attempts >= MaxAttempts) { return; } + _attempts++; + List callouts; try diff --git a/apps/utility-sw/src/UtilityPracticePlugin.cs b/apps/utility-sw/src/UtilityPracticePlugin.cs index 37481b48..3d858444 100644 --- a/apps/utility-sw/src/UtilityPracticePlugin.cs +++ b/apps/utility-sw/src/UtilityPracticePlugin.cs @@ -211,6 +211,7 @@ public override void Load(bool hotReload) // Outside ForPlayer: somebody left either way, and a player we // cannot resolve is exactly when the roster most needs re-reading. _occupancyDirty = true; + _prompt?.Cancel(@event.PlayerId); ForPlayer( @event.PlayerId, @@ -1387,6 +1388,8 @@ private void OnSecond() _playbook.Second(); _drill.Second(); _solver.RefreshVisibility(); + // A no-op once the map has answered; see MapCalloutsReporter.Report. + _callouts.Report(_session.Map); DrainPendingMapLoad(); } From 29ce9a4bb36e479330072e1096ec3b433f350395 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 10:44:36 -0400 Subject: [PATCH 25/32] wip --- .github/workflows/hud-workshop.yaml | 19 ++++++++++++++++--- apps/utility-sw/hud/README.md | 8 +++++++- apps/utility-sw/hud/preview.jpg | Bin 0 -> 463891 bytes apps/utility-sw/hud/publish.sh | 6 ++++-- 4 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 apps/utility-sw/hud/preview.jpg diff --git a/.github/workflows/hud-workshop.yaml b/.github/workflows/hud-workshop.yaml index 6e6496aa..9522a036 100644 --- a/.github/workflows/hud-workshop.yaml +++ b/.github/workflows/hud-workshop.yaml @@ -103,18 +103,31 @@ jobs: ;; esac - [ -f "$HUD/preview.png" ] || { - echo "::error::apps/utility-sw/hud/preview.png is missing; Steam requires a preview image" + PREVIEW="" + for candidate in "$HUD/preview.jpg" "$HUD/preview.png"; do + [ -f "$candidate" ] && { PREVIEW="$candidate"; break; } + done + [ -n "$PREVIEW" ] || { + echo "::error::no preview image at apps/utility-sw/hud/preview.{jpg,png}" exit 1 } + # Steam rejects a preview over 1 MB and reports it as a generic upload + # failure that never mentions the image. + BYTES=$(wc -c < "$PREVIEW") + if [ "$BYTES" -gt 1000000 ]; then + echo "::error::preview is $((BYTES / 1024)) KB; Steam's limit is 1 MB" + exit 1 + fi + echo "preview: $PREVIEW ($((BYTES / 1024)) KB)" + cat > "$HUD/build/workshop.vdf" < ./publish.sh # first publish, prints an item id WORKSHOP_ITEM_ID= STEAM_USER= ./publish.sh # updates in place ``` -It needs a `preview.png` beside it and refuses to publish a content folder with +It needs a preview image beside it and refuses to publish a content folder with no vpk in it — the empty-item failure has no other symptom. Whether app 730 accepts a SteamCMD workshop upload at all is unverified; if it does not, fall back to Workshop Manager and read its contents preview before submitting. diff --git a/apps/utility-sw/hud/preview.jpg b/apps/utility-sw/hud/preview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3488cbfd8ba8014d2e3322eada8eac73fab7eec GIT binary patch literal 463891 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ⅅi<_~$?wd8Eha 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 (?_eQ~J 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 z z`zq5&j&vm>%inBu>6+}y(u1b=)Bj>MxY6(bNl=`yX0gq0bjm#N*dHou6p=ku;*F;D zXW1eyYcgnu5)RU$#8jDR-6Ug|FRfW7NOr7UzY880Yao}xZH6)Uk_rvtvtM8rY896q7uCg2|bTm~rDIeK0_Gw1a zf07zx=ON}9yv~m%RA!%~YfK|~!q=RyeKh<-G@{mUh6Cw;Z;kOr7h~wH1duk#hmw2IgZK z^o%8*x$;*B#(Vy_n)Bvf+)OD{!J*2Zy(*jq_t?RoKJepSEhyyPt<*f0HOyV&9U(E7 z_=@m$?Pla<2SdsmF;TwAIn z?zkt8nXtQKM*j2h(ZAQ;m(9t0I;@a{{iQmJVeW-SrEvTSs(%14GK&MgCx)ch4{HA7 zUUS=LWlIE*n_JZBKhMr!ODFLIJG*!H%6$0v4JN3+s+{4pY%s>iOOi2<#>ih0Xpt~S zJ+LC7D(Z!w*M0VIJR_V=xm)oVn z)Qwd2TR(m81Rr0xqi;t}hG2?lm z_Fq*mxc^a|R#IPia{T`s7IUk)jwiflJt=%@X8R8SV?5`IKmuI0FgE=5J{makArZ$& z+VhKjpTGY<4@NSSItX9B{oIUsHtTnH*>UaL?AJ4Ji`2dUsviCi5X5Nz%qxQo+uv;> zo?h|MJ>yh#-tPEHMAzN>{m+qapWBhldD${27KeV1Oa`IZmtXd>Z`qOUeeguTp8o%H zF8TjCmqFZifQ-U3RS57ou;2zclk^XfVkHGPwO5_bM4x*n?%z8rJd)`6oec|b8b1pB z1LPKc`v>SwYWxQvs~W=kgoL>LN2e;M#Ai@=zU9BB+9Un+^FQv*{2%us{gjR8w`cXg zeiDoDJ3~GFKc)ijZw#J&KDTFA`~#fU{71g|&-5?9jbSAHUNn+e5Bu%r$^Xk%a8SCo z@D>p1U+jk8ilW>Lk~w>UftD(s0yA4dohJqPSAc(jlnjGMOyo@ZS+t9HcZcL5>`LvtZ8<+s zgczt!Zd2r@3L|!r1M$KbIUn{$DK9Q;ko0S8erGPbs!E1}+^l{RV^z;+{r>>{Q_qNJ zUt7P^kDs4e+6JJcbLnp_3Vr|gyO3N&3`KE_+hj~uzshGArGW_+HO(_8J~&*eB%v zn|vVc)j+CFrr2(dSQe^S?7$q(8IB;Y*FneX0?DM=0g)GTt+p~6NX;+vxRv2pG=tTC z660+bsu%1YLS5>>;5NahB&J&IMZ0vM%f+BFtp)0b09pstPoTTETF40MZ{5D_TeY@0 z(m$6nBu z8ZXtf>oWEMAkHf_9_%$c#`?S6Bq-f-^q=@Cm303E?v5h{-Saib;$QzpGz|`3gDP$E zC!Ga#2X2z_2Sam}2RMz6`RCQhxG3=`Z1Iz%uMTBWobYb&D`CxXZ^TwbmhuEl{GBvR z1J~Ag`r8jiM*(;8;GzBbfQZ(QKiNmAT5H_h$PmfEP9R-LWdp36sFgawDC(j)ubUWD zR3$xC$ddRzF}?O9v30zhI6rhOK~MZs$lEWb4ahnUts4MwNx09a5Q06>$k+NM@-b|v zTOS=$sAE=p_jJ!reQg=J1YknVBz2)@_p|MkedfnXCZ2)xSPf)kr~&)aSCve5G<7BG zc#XbA`b5DW7}Zurnx?MY?b2n8ItYXrSujBRhZ^;y?aJpXq&=}Z6S3Inb?UUozkjL zFAO2^Z9X1bEtX54RNgEXJF zbD=Br!`jUH2q~ji_T+G%{23T|^DX&$ZiAz)a&&Ql6cBI#fXQb%scD)2v{Rw7u)+1G zD2m6stYW+kJ;Upxc+==nr+}+(jm{f~(~p*XgsEE_M3ylPts2jp2j*@)@;}JCJ04%J zA)!G#H5zhbe4WtJ$9OHSydS7gf5`q?E4^Rcau&Tu)j50SzFv3Zw$BSv@2G7d6sjb3 zGNd?Vd)ZD5K`OJKl@B_+k0pMI^C$Q_i@Zs29|wUM(EnSQlwd02#BhGbHN7yPyoXbc zNV6zHu41=m^A94+H6bW6k_>;${U4yO#92;3@pp(9zg7N}!KhB7=&qPlmk1)Wi66;k z=Qd75ko5jM&`sSh;%!EWob;UAVs6k}}b_*uTAO&rHtuss@XvX#%hz zm}nNt6-;^q$?)(__H<_^nN267nHtqY10!Np8u4ln&O`2gsDb6?D(2Wwl;8j3WyX0S z7(}??%L&h-ydB9sh$pVs)bFo7Z~CZtcH)om7&F(dy{tHW!rZ@FF{&a036;QUzDEQd z&DCX+^nz(XoXjeu*OvJ%Xp8;T_U*Ud}{0?%q0PUV^+jyG&q-B@mZ zOcz?Uw<&V^k>l7V0dZHn1N79t?O8dy*n0jBLz=4z!90MhA`qRwJEE!bZJ*zpqq;Oi zecqJOz24%g49-kY zU&GGgmP{A{v`!GR%s50?@IhX=F1273NhW^Nv;OWN+ zH)hOW{OOX#n7R`lic2odjqHY)ubS99&J9b%QERca<1PDRbCYgkUmure#}OzZltzBo z;?5(ZExV(Zeml{e-!YxjgvV5>dAU69n@X`&w&q?d*GNttlLNa&TvjDAbx`jLwj`Q% zxF>V*P^ul>;$K$qw3+1bG9=hjdBaFui}!D$oo?U5OC<8SCC;GwuqFfd2*%$gbq%Yr z;JX0{cqIJ5OJkyCH+0K`HrbM#1%ENszsVIX%jaS~VihU!!&)6)?UcDWA>U?*+p)M+ z0)~UbC}cJD!QV{;J0s81`&AS5CM$l;rtJ#3EqDh6X@ktrTO(_uG+ge0j72KT6)FaWl;L%p7G3V zp`&WvNV$9u45mR1@kUE~=G<&Pmi&6Jp<=sr^r^!*Z8bznF~=l&Gwfa?wDz~K+<|8j zny+#3s$++#teb21o?n3k2v6>i(6C5dM#2Z#4Uef;7gwX~*tfH!6afugoAkE~9O=;Ef_U64KmwBS|ONysr-{x_v7dr6yjL zQH{7M$R|NYHwjn$?pJig{N&Zj@y$E)_tVx&f_XA5v@dn-k>pIMR?qcAdX|mV-{wE# z#CNr8<^p^i0dT@A+o}*|IKOd}5~MCzQ5aWvumV)DxJ>9zWp2I%K*gTsy(HfKMZ74w z_F*_MzE+4Z+c@%@LNVor-#~4Vsml{$*bD0(Z_6U^@=54`Tt%T#b7~_o@iX==POJzr zwP;bur}2Y36urg=J!`nfh;?DOUuvA&`5L(@U6m~t{EV_Bdz-TfQs~N}nB{!9i86&) z=TiaT&QX6*mq~^m8ISF8_O8>>V{ns90Xhz93uMW$&>GrvFkPp7Qs1M{X;Nj7UC1Yi zg@K)3vJ|5s+6Jc>-=zHmf$lnS3esCh&^-?2cw73c$Fhw{OOlXUafTMOl%v71FPIpy zf&~>@({adoDZl|2N>#LO%WmFM$Iu~J?xqaoeJqLW5BNl0^C-{uOo?bWO;J(5r!loy z{wX0_MTZ3H(Xb|Fb1p~=B5gbjPy!93-;NrRS|wiL+8tc=Oom#M#84~a!BKdq#$ zf9K%`gHXw!@D7`lrkTJ|Dy{?X)h@%w6}O3tGL6Q$pEu-R2Yn4Cx^&3kR2D_neW^gl zy>&i>P!rG5m|G7fv%D5~WvID1?qeMO&Djkp3Dwyk@i?Q9#EN%UBnb*tWMtep-&w*+ z_Eb?bbt+KV|7o>1SEwWF(U$<;-qz~jfwmpZi-gf%6<07aCZS1M?AChx?RDTCaEkX$ zsweo#lp5CvpC+LrKigM)3U?$yM@6RtW@SCP93H7GEuSnM^;}^I0!yk`)U6Sw_FnJt zOL4tWUR(&?q`d+r?XwmDCte?uZ{y%_aH>9y<2K+W$Un zT~|dMtonLNu8x&1@^ahxz^AmYLFP-wNy8V*(wgE80Is7Xl3OccdeIe>ojV|7!tmA! zC*nc3p?dfdo`UVHA*5Sw3MIdZ{d3nJ0C0VvC&h&P*)B8B- zNwKMx7*?D(Xv_rVljo4mG7L)O+7r(OAcRcl=Rb*3%GaxVEn=$T+c_dI*kbu`;DUGt zr~9A$=uRa4^GGIC?%tQV(dJg_iY=Smd9RQ`?Wla+C+@a>Gn*LHNj3|K+m1CRzh~p%s@kWdvX{_=&2ueb>pRo~Ag zXQC;hF9x+)@E{(o3p&yp!pvF{{d3|?zki~ISD{vDljekgL3+#hskmuW4uZTzMsL3o zI1bM1^rn$|Ryq<&4r3r9{r%qF%|#Pw<#TH=?c}RRX$E7J0(#(NWTxki;3I#!rx~UR z0uds;W|$dmK(;)XK$76M6uCdYyqg=9Uu{H2@J}c9<(?_SY7u#$vfqT~utoANK~una zMc|F^^e6YA8lm=G4wi5z9qrrRbl+u6I4EJeo3=(+nXiK>oEI2Ezg&;aMmJ4P6=Tf42U8Xn| zw@xdNC!hHZpXR_}@L2x!#hBwA$AFO8k6@evFr1f)3zNKTpz7#j+w9IaM*>@_qzTM` zI@InF(|e6sA;2_lwiVj zLu2Zn;V>msiV8xDC$JzH8on5RWk#aesyi_AF?s2Vh}4Sqn?~y3J4RxDU)`8ZQcdVZ zyii^G&PtK&#rG9Se!$=gI<*ucTXcS3yU>zIrnqg0TQ=l%#t7r9oLYc8*=xbUdqixD zv)9MrIzJ0DHQlV==<74MY|9t$UryC`@({_C@6o-+B@1ALpl^Ll7K-ciq| zPk3jn0w~(^Z~J#zTT$K^)(8b%-p>!MzZI~)KhF75MxwA#F)@;GlWGBdP}{WPn{Jf< zRl$j|ULrkyj!>Vao2w!wN_(tFvr{9Pphz984C=cNy!8@!o|Qls*|0TaMaQHApk@Jm z3#;3NF^OUa_DZ+w%GZwlZew4XKI*oC#OtQF9$+aTaoI|Y0TXY3S zS<#pB@pp~|f`JVlpz|_cjOouVQPO6?+m=eALi%jYF=&VelpD^24z63hVxhuXck?gj z=6X}##_A+|VgxAV*X1*-{DmlW-JRs@>xyL_q9#BC>_upQcl`J88hI=4oAUP@=}Jc4 zbCrzpgHQ8P^WwJ5CA@uacBnmZc@RSNOR&vWJX-MU261JlI&|7-WOh#YB6GwGld3M7 zF?GAuMI3i@VXe#26@mIOrwPnVLGRm3#zui{hZ1o32Q_=VEd|`zyn5tC!Mzp5b$CQW zn$1MR|HTM+3W%JW9_XLyV9LXPT5oMsw)a8#c#Ojm)!9(5H@> zRy^`dyeM0-qPeH6z57Pb@BJr#GaSBr-fwSjy6Hfg1sNREshMG6de*0)>0gvO@U2sc z_}N^@EMLG)Q0ZYC(>vyQq8QGJL7+|B4Lup(R+&K=oan&gJmKOKtfM9SWTw57%}y;C2jvRNg*oBW1% z+T~S1;<`N`w2moD83|8T%*`nsKpx;sB(jl_+&~M=!b07^{5BqBVUnGMvMDJ##B)`e z?6}y2Ey|ccWAxa=O{MRCHBoQ4WH)-vdh3~3(yXJg?Hnt~0gw$*2W(JN$c5h{%+}xhO;R<* zVLj1SRVYF19K1h|%aY1po*;v;G(H&DAR$Yn){9W{_XkN>Hg3af0Zne&Kd z3vKFqg*FNEW>P^c38mAogxFDyc+Z!Wl#26@S_Jmw1G!d)xah{w#F_yUYvL-}4~&+J za0R}QQvB~XUYG(WA$)h?T4$Ae9!vkp)7h#_wat0e#h_bAJ>ap;2|wXPAdv8m_qvuX zX6vCYb<>Y}MTc*-)_xl(6oYpZ%u_HzxPG@b7@e;)xtJUJs`!hGdQ`eA?+$1h-umQ= z(w@n@(bX9$$25wqM9pcMrC=Y)?BZkJcFZ?bC)k(H)G9)swkmA)`Y>BGU9&52UFrx4 zIq8hQh#Aq_an+if0G;E4t0Cz;^w8!=BA z47+WVz}3dKIjqP(pCCYkFEGKbN~7Swc)7WICdZgfq}IYV{`$6MN@szE!JVgR2x*1< z>bu>$yz?G79a-kWnAup>Ejtfv*@gZ?EE{j|;wc6UMf%Cclf}Vyy2Z2NbFI3~Zf3T# z5!3YR>@U`wEtAVG7L6{sdkxxA*Lj=FPKs@H4UOk!({O(nRtSYz4<;+j={%GyE2L6~ z{jd7<0G@Qcy@|d3Y0rTUom=4kRSjet5!- zoW#9%_o3ITvqhQBizzp3CEpf)&;c`>1=24d^%l}tN`<>8zjr#HWw$yhQ|t{Gs)WE` zI%e-q^`C36=b67`2l?SM9lw!C&}=)sN_+`m_)XiW@vTFO+Eu4|5bc=Cgaibe+1}8o zbZ>=GpwD_UJ(Hap1OY>QCyR9qbjO~`1pfgtuB9qLQCy=zc0zw(3_f83CPNxnavlqx zWNwn^fbV$q$LFWmVkG9}5w#&d+V_XKTH7;QKTLM?Bo1H5O>baUTE+W=bp}b#W8cS0 zT}|&N<6ZCmVQgN=qno=cbB$-$9;3 zT54J*(@yVXb_SIE)(p~+WtTo?GAmzDY9ANOz08F|c)!ri58gFj>27>LZXr_JZip6z z5oivy;gCGfl9auo)E>M|DTywl}&c+qg>)kba#fJ~ZmyQ|_oLTpX zYSw(}&(H1LNH)LnTku?w^Ievcn{1whT*VMsb$pp+4j#xY_%^AX(o1VvW4M9eTS5n1 zp~#imJ$~lc+vopkRk$V%7>pZ*%x3+yx2w0z8Kyu5saR{8vmBjc zi?q^dqZ68AYntS7H)$dn)B$L4#&Epv%?8prTS$>yg%j{$|x#|6%i41wmA)B;LdNO`K{rRV<(FG0}0SXy}=Nf`iA&np*W zkOAe6a5xz46$8*Thbtv;F)d~-rgU*bk4Yth5OHt33lm@Nx-g7ANWoFD@CQ18EvowbupD{Jb+!bt$ zk--=vJpC)>p~VzwFRS6`HAlBIQj_ZED>*+z*Ua@73CdpmTE6$Di_=r>D=!m#CGe?h zgw?dvmuJrK$R>6Q2SFC|o(BVyj`j0b#xL47=6PR5_;)I47P6$td9KN8=3FddHXz%^ z%^n!Bz-J&Sv-pd}@I!Zenev2=bGh6z$nP7gGcd|>cnrsf+QZjv zd?Tl6R}wY6TbZAJSn#C!C;>tD132R}`K=utwkQO2W82%Uc{Q=qtNnjl_3nC74#+s0AXfOe=HIXF@Le6_z;;~&sNJxs1q11QhKK}qi#d;<55l3RWeaMDL zS}l%zy{&=>CwTe4{Z++FZKvPN*2d4tNOp^PS7;|_CxM)RpmClF;;xj{MERD8sKZ`l z%a>LXTwBKt^Q;$)Hmk&XW3LAp810(#i@RM%Pnn=0qx&1~SI!mDjyGqfI(Nv=J?pg6 zbP;bSnSAYh(J>J-r`-hby+|Yz*N?-BwXSNqeU*=p)`gbf`D?d3dC#WigI5J&PoeRmDspLMNT=@B&ZT+Ex@*bt#tI9!vC z-Lv>sEV@06*LL^Lt{pKhSe47M`=lNY2OM`etxJ0wt9?e_QHfW~w%qZv9s%2e2*@Xc z$G_{G)Ftml>u2|gKRphWqKd*ZCBv$lN6ywb1V63=5V_|#>J4YwGG9S+r-8IZyUY23 zXGS?794<%)IUoL{Ws>e`=5VF%wiX!4U7y`J$j;oKT-ABN)9vKFJDm}Fs3hQkPESw@ z;Crd8V5FhQ-@NVjgyR`5Qx?kN)5IEM$7anH&69oEu)K6Ub@M`G^S`J!|)XujyXVC0AY}DeYq7rrw^Z_7GJ$?%P7a7`A_MST@T)g=%r?Q3q>0!Dp^`U zLV^Z2<2)1UYELmwmm-INN3`UOlbXZQuGdk~?TN_-g5%$dY`D$AB<- z;MdF7gM`{=w@zH~O!kce;ia(Moy9_tj-(Nh{{ZT()ZECV^&_11&2Zijy;CpQWII`x z?(vQ}{W^X%=wSzLwXKXEWA^!%0Q2<4cG0QL2LmZ9Ni(AG9oN})c`Tcx%2j^2+z;uB z_we7$Utdr9ajgttACI^YwBwNv&NDk+@t~zs5O;G)U=)TEJgrM z1_ITn$SIbpq$+M+2t5XBWnxYa0L@~CSWI)CNToe8Ii`%~+MR%Z`qgMGdDn>a;BR-h z+_R0`b}Bjl03XJ@_Iqhoa~{CONB}N!c>128=DojIw^^*5kfg`Y&FP+h#=Ngwv5B2- zcNN@s1zvdvp~&Z_dd_#~QnBY=D$yHV@b%`H>;=?czJ#mbhfJJhPaB5^9gTdtw!^H^ z7XJXQ$tUxcRTcL%aN8I@(B)TVa2pvRxFCMGuao?9;p=}6c%JGQ;)*MIThE1>D{wZ+ z$@!!t_0L7=iuJO(*S$7!VSRnmL40u6Iiu-+QMoH(ZZEFE?Zw zGyJ4__a7GMAKIE+)`|h1)r9bpp@!w^FnBp!j%&;2w>G3KZc&Kk5_sZqpHzYtBlD}n z)#ins<~fcR+0}AeGnipBpWWPVUq~dLLHR`*3hiwePYTHD!GH?kk&yj%w>bLNLDMg8 z&-{AaPCZ&Hxku(&HT^52&@?NHWw_sJU{(X=D5<#mfF0Q5+|#Wn^4{inE^cmCv}ZF4 zHJ#*^z#Xui$T|(J)AH%~S4C(Fe!YC@)ndmfB_cWjRyOq=P&j{Qm$mTT-QYMfseyXJpR? z@pt@;SD)`E{(!a4S4ZOC`53Q1-e3IzYn-pH=00@}UbO0B^{3LfG!*cAQz^^VtDp{| ziYQLt6!3FVk_9H?RGAGDk_9xAO$Ri!VhV6H+9)Bb5>ZSC6#BHp6(H$R)3OC$Fq*jV zaZjk}LB$s*(0vq9O)&}%DgA0XP;pkICWp~T2&JkZDM7_06ae6TY1JJj?@FcQONlOV zN#=S~B$L*Xs5wbVC#@wjCV))|iJ|mT1DaZ{VtG(eMHKmk$|yLc-A$sIHXaUWJt>qP zlmYBN4X2(fD|d+CsdL9%`Hf$pUkg4fYWh?wZ+eSy1aUDDyKQ!Jj5hWp;~s#H*cr(D z?f881$EU!-8PIuz?7(#W<8m|i!T#?DIKkwK`a?$4JgDQ9T_i{QvPbt$I`hF(-vk0P z$QiGJ#$xeUOkAtsWo>o0%0I0d;FTt7bUCi)_h``6Qw1>}%RQ zKk;k88q*{e`m|6=E)8Fp#K06$o1`B_Fu-B=|=4-TYIZN!rzg@TQ0*%b3*9-O!({Kw($3Z z7S_&4*7H@KIAZex74qXENeL2V3XlRF*&jdU@NLJ4^>&@h>Q_0=KX&Y?$4#LdXdZ!h z^sE?sU#si-3>tO)MlK=~V|uB{U_L-`k_TWjSWV`WkU{SZ_gA}f>nnSmHe?cMj}6L}BXYXF2Y!U}R+2Z3*fJuPJP>#%9DDI! z8)^O^k59UU*x!hq6U%~Fh*EMu-bMg?4#acZ3iLY%H3`?Ynbg~EU~<@ks2$%Oflo} z{{RZDX3<>ErW@{`GN6@P%#3gtagwC>>0UkJFBW)H#TKh@+GK4x3-+jHkik2|xGL!J z2NEifepUpNkCbvpm)}}w*AA=UTgj~;4DBSBmj=yZn2;1D+$EqSjsTHzGlDamanYeC zr~EO~IY)EsspE=OQ7QrsavL8^RZDvvG9&i8c;PFzD&yu1ahwbsamVLh8#l!7iXIEN zTTNvok^%gJCugJi2RPX*I=-QSVeJ<}wnq99Y#*cTg8bD49z~jl! zsSmjKHBh5cI!0P~3Q8|oBicSFUTcof*y+9}gGXuPON&D+7dG*xG71~Gi$rsg!-38Y zR2uSk_?7X4!J3p8J|R`Sv5*7~(Z<%Y1BDJJg+a;d)Spm#Ry%m=&cfK)we+(_awGW+ zGs4Fia+72n^gd0{$UKa5T+#9DaCz4HW+G|0`%Rzj)=)V=XtQuFr6gqFf$qfh-jpo4 zWgD+FOr7;i`Y%fTp?ocNzF&zgr_yH0^6p^^cN!8f%&vi(Bd#_u^#-YGKNI{&wv$ES zKM?3%CJgHFn~k=*kc^&J%KgkzHzS}{{{Uo~`43mrVALfS7WTIBGagzvn%jPH_o3YJ zp%^?yK`Y*(P5WHC_OT9)>ZLaC7u%gQ*ojXEt zxU^CbjNpT}XPS-PKK0G&el76diefs3rC_hAs}j<{2A!y(+DTwgHMP(iMm|`jIRRH3 zj~WL6!(B;eqY#tl}tv=J;= z)~{G-b4Nd#*p&U>kQPylcg86>+hKBC>GeMtqT5Rylx-Z$ghuWI1!6dDy};}5UoCip zN%2BUB&-tlH)6%&-Mo{@+zw82&wBbQPYyiJ46?ZAl~Ae=)S93E5&KBS=1>6363w1} z3aD3<9nhT=)~CknaF)(h$wwR&ZaMsF>^kk;f!}W<#NEoV0Q-B_vUumhmb$&jy3^)M zd81D(Ay1X?NzQS&6P~=+hw55vx^$jJ^hPEG{KFeh(2Rp#%^Xx_tuuzD7ad}DmY)!= znll!m8p^!`D8U}N9S`YROXKZ2H^fDq%7L|G01WjfapxRz2mb(H$DPU?s4hF>kI>Z% zpC(Y-7;ha^91-;uHL&#ByilQ5OGbSGCyirx6$EJ}4mU{o<-bv=RGR9vC{Q3i$*D-P{ZV$6uip z*{z-vY#=E(84I6m;CfesR;=XidNHRMoQ0o;EiJH-L;&^}2Omngd*N+2P=MKA+oaJx zau{^SaC(9>)K_0`YSziIrD!7#;z^=Z?7;{Ob!! z_qk5Y_`}5h8eI=myVK%AV~NR(@^cyGdix%I#X;bo09$yAUzYY!A%PKEXvB;IJ}?Fp zjBvdA*Q|K!!u~7NwVRZ&)0#w_ua_b^1=yet>@ZF`9Cfcz@F#|>d^4uQr(8&e`cxB4 zHv-JZ8NljQdIOK^Ua!`gqrRsvu}*tvYiW8sFvA!`04CG`54Z;$4mt|xW3)pL?$CV0 zkWK+UhwI;p)Qwe7%0K;81oMdUtDZT?$7~#T>;66K%y8;;DG^6*Q2>yF*!hUy5_;n# zkTcL{imx4`dD2fY2d2UO(T;wkp8lVXY$5YlGn@=`2dVE?8>Y}GPzNrDl6*(g^^4mp zbEet7(xj};h{_mog*aj})b#wlI8Orj7g5sg?lr#=L*-8^6t{?#VmIWL`AGntgSY_a ziuy&?HC@m64(730R_fuTkeJde1ppGjkTMAAo_l%^UN?Cwb*CRlvdz&8$&gO0qC03VOx zo~diAX_|~>wE1GVj6TmY*cqeTycOPolo8x#iWb@$TT<(7a<0!QX3kH_0QwSYP3k}6 z;pKiX4+IQ!=b-$nA{4r@X@W;HHN=K?^CgZ&909g6@?k=N2G9pQ@=42C=A4pC#m)wB z#{-P_9FCmiQ*yAmE?)ag9IEVadX2%e_!g$M>~^a2O#c9NcNI~)fztzyzMi#E2o<;v z$JDqTdUhYqhPKmZby)zq+R8!#WD3jkD-n_g2m~KmSH9!W&@;5yYm5c?SOM~3ha;(M z;Ny-fHtPLaQyfjdX!*`}az;jLM-DRKN&(8`fywH4Jx_j>k#li&$%S7rSbf&#Bb*N8 zR1GTn1((SB#&%kACOtPPP5yrf2#A z?0qXn8$)oMNMemaa_o2kee>_0dSaN?;uR*x=6H-{CxXh$wK+j=TVhZ4gZ@JGO%B0;8+%59Wz#wu)K9#`H)p6`Xy052D zJ$=u$TC$mv;|n2-5;8)Ak?GA^)AabI^Gt!&!x4-xL(e3P=bG5F)8Mtsa>tXFV%X1d z&=0^0))d|DXDO|X7(&Q_*s%nH0UZeEq3QW%h(FSQep#>y8&3<7?T*K#NzUF$D(QsAGx9f0t+kBIA>TjGX4F$1wX*7%jg5 zMld0sF}5*NA8 z6^1S&mQOJs?j6THIr{omQm@$3G|sxx#v4@(Mqe1`)6%Z*LB(^At=X?xK{)M`S#tQh zO@xp)y8uoUbAi{6wLaEl`!seA$8NbHfu17nPHgXn2qZ*r7UJ1eWGpenPM3e3E&4msoVKaFYITv|?oOIBGBe7Rn5 zM`P|Q&-BB8;tN@C5=VweWlt=FwOoL58v~F5=~_BwjV6%}ScG{ak~fr z0~`Ust*EDKvTAQ*t84gVIJae${S|=&-2VWd>Shupt;M%?%O z>P1bUlh>ceHMNX_*aEr3XCz^UF@ulFtTQALGstkUhH`q~4oSrkrVs*oHCIrWTib}# zwqFW8c7Hwcp2uR1^g4T8cFyv~XzvMzMjP^g?F3*c8+k3eo(Jh%-1>`MPLC=L zk&@UaC9(h^hy&BpryiA!_KmQ-c^^0#9^4$}xc>kec&aZA=+fQ-JohFzV+TJsYI%Y4f|Dfu+MD-MSdc z#+y}0Txa}i&OC4irQ&;SKd2LYz;pKo)BR7TYtnSMrLuDZKvGqDYv?a9v_z^^pY zmQ6>*(%jsC%N5AyCnt_^+~o1?TrOHlM@=Z6ucliCv?k?udt~SG&20YwX0yh=OmRjt zyOIGXw?JwO7}v|=Cu!rL{)V)z?;(=y?PAL`VM`8s`}D6Zx6tfk9@64t9{CkEFfGAs zf!m$GooOP*pEDnndteI8xSmiP!wbmcBMbL(Dbq|XEX2Ys#|kib$!re%^)#K>XiIgg zSw?`PhHlEIaX*0Oxea?+hB!sUhzU?a1Kp3;n!@oXiLPztHmFcO-VqK$Wc6c#&m0Q# zo6Sy3$+IaxD8T28_cS)5yw6hwmd>k;=B*M&V#??bxq}(XgkhDz$lfHHtUE;?uV3enJ3IPm$EZ)lTeow~Q$*40X9=?YBw^p zNRl5l7=XxfjvF6Ne+s|-oFs%#c+MS%Kt|O#_pVvzv`NtUj0na;k6e;Q4;6ZCdU;E! zA|*mw3-c4(X+1yvRdJMc<~b@*s+41g(RJ=+-eo3e-vo}htQ|p#jez36%3H&J6-t9IW(wGyHQTrmKWG5J$;X~##<&)UvgbtJj*HTB97 zcdp$^2 zIz52kfC`rF=-J2RUWYG{G;1O(V`77}DIEPeR&;PAlQCn%4B&7H9nEL$p60HDdL!v% zR)gT=EhY;^Wu)f-0DpM^JOP1RrM=`PHNh)^U7nzHzPG=EcKf>Ns{*guPD4U7;8RoYX>Gwnlo@2%2M!k^F}TKE||+dmm~q%ha*xD}$8! zXENk`f!3;ANU_R}cnaX>=}(S*@)a1`I0mTdEDD@+RRyV(-P1nI)$T50Zz@?glA%am zMnD78+NRPq4NBijx`I2Fjti$jDkvX1fZIVh&N)2@_pHWupH8>9n_!WmQdx53vFpwW zCpq=2aczdl+1p~Y$P}=^KPz+4amVRh)3eAZiHx0ma)XlP!M(#@}0cn9+~E- z-6F=Uf-n_u2V;sZHLWJp#3i{*&6612%K_iFA6ly}zojIKv&gC$RD#4~EN~aDO9P$< zIpeNzm$TBz6*`iWyq(Cc&^x?gvyQ_#$7Ao;^QTP<;FOWKeclHgW36M$<6jJ|(?FMs zrBIfU!HpLSysqXL-?!%4K5e|?0~}~>P2h(O$RpqX0Ig8Uj+kTA4E{aql+*lOqZnp4H!<4;K`>clR698gc_RQf z2c|1F_u_wqEoDo0xid*Dd(c9yBC_x@SwR7Edgq?mrR*g71ikOG6XNqm!)9CfOC6^+F9>w7)X@<}NSF`-sL zo=JB3&UovNK;wa1EILuIj1iX5mXJdUFTW18|07u$;)uQEHB z>=IU1l1R#=pLBu?u>lVuf!ayuoZ(wqG~*{?DmN8#*JtsLhjbh4SFzkQU~XG-BxMID zEEJLl2OMI#nfy+(JI87J%r;q>8zYSLAeKCjPpw0uTiIA!PyL)-VtE1+ET(2=P&4x% z_KD*p4#0E_me%S^o(mK>Qdx2H5(YQ}rbiurI_Tv~L}Zg?JFQMnJl=e09m(=OJ`3k59^&q1+^5Ob0U#!1hx z`sSOaX_0C07$=Q8ZYUc%w!MKw4NmZd^@-6{DibyBx`c=5Bg51WSgo|-ja=CX_9FTLB$m`cV zD)rOBVH&OU4q*yL)d7LX&H>H{_4NL88GAa7!(0CVUwGo-9m;=bv9*VKx(17I=Wf&k zf;QufbmOIFTb*28-97n)+LS&{)x#W|gN)~#=cgy9zD1DJG`p$hw274`ec_yww0aK1 zC$AazH9g0Pt>b~vtF(l+!;G)C?m@1JVcLG`Zsrqu=!tY`?ezJ+z>+VRRLIHB?Z+pM zF^^tJu8QgY&u<;%r0$T7r<0OS6n+B(+n$w)px#NT#M93jqo*6Te58@kWN?34*t*l& z_S|0FNQEuiXtyM1e$W(w*CRfh^GdaqPkH)+e9pr)`#G+(hK3mob6ji@7bE5m!5rs~ znE?0tR$Zl+_GB^J+{#KustF_jN&%8jJaNZ0drpE@^9+l&I7&$hAOyQP0hoX~kiT9t z?^X5fJ4@BAC0omw?c`R>Oi4K)6TmpgJoh=`v!yjl_fmQ{t(DG&%CB{=Vl8Io@L0(f ziy}ucLSPKp20${{#yKDyb;liR2JQ_?^TScWs$nlfhWTISU8g-z@<18D9eZR|?Gh+p zvr!u>&luca0F`dVNgQIfXPOp{GR(Z-Y$t$QuN?KQ6ci?*6?;AUoYS+FlCj2Vc4+n< zb=}a^C%2c)g}lbxg98f09I(psk%QbEW{X{MOlG#TtoY`Am5u(;rX5oMTBQxi#3OhSKra=B?rKE?V&< zNj4Q%D&Hp1L*#I9R35&Zcg<)20IiLsmNkf=b}$@b{|=L) zV<1O6S-2wrAD7m<&kpzo<4CxNQFBs>xH)-07oEGJ5WMb+o=> zt1op{&#|poK$M$lIgV5+N3M9RD+Fkv5lO>BN*}|K`eM2pLZpoLtsw5Kb+xG zwX71UNWdGp1Ft>*0F`-pgnjhc+l7_m%h<1>PjPFhrNXII2*YXqA`VA?uWI*IWRU}> zA%GzIgI*d0u(Fu8qYg9F- zYpE(%C;3#kkC@H7hs{<8(!3MmR*qjxd#KkkS;!_+>^N`3X(#F{=z^<`q@MY%M_ton zxq;EtGP;#v>IlKAr6&noQe4W%%*iU16U)NM5SM>W6^2jLb^I&oZwKme-{`P7Z@aoP zjB(|Xqo=3>zG;TuTQr|axaF+ndwh}ATOb^Jsn6qH%kci}L~bPd!gO0qQxgRX-@tpyIjR zb`+M|&pw#y0LbWbQ!%eI%RI-qiCC*(FF*pWPhWcFJXhh^wL1%aMqG=FM%sL~3e6L7 zjzQ=^>0KC-HJQ*x5y1`DA+gt=dQ0`wrju>lXJyT~iHhVfSq3l)@;;)Xokt3aMx3fq zwT~-02AWVCwQ>Oe0G5{$WAY55tU^2|qm9wsSzECAgBieLeF$bIypHd~A7<32wUXG) zVdvzH&I2; z({^ZkTUSM$p^{Z`kmpT_1`qppR|Ni*M9l<8Y%&z~7uJyf0OOEDBYw5$MvXqlgDhok z_W2vI&mHx&cZ{jB<#x)d!O>Xt0fz(w#b(<{Bn;Nfa`3j^dydEPAFW)|CiBFWk_RF{ zSTQroGC%30h^Re)$33c*@_Ba=UAW0oA(!8ul>TRr_o^Xi$;F*Gh3zRSsFGNuWiID= zZV2|T3Grs0_FAk?fC%QeL-b`M^2o1tc@7U@+uFRp#i+LdRl20H$Pc=a{{ZT*PYmxQ zczBP6pDy^f{zfa$_m}?wKw9T3qw#nAj8~uUC;ou7&R5d2#EJ@#bg1e<(vV0gSFJRV zDY-P!B*cMDB+?F)P@RA%qKdEzcsZt1z{ND|PbjoeMOFI)UB?03&`9k`^``-f6C%J4 zX=tLVLxIIO9MdSO6GW6!1DaZCkQCr)xy3NQrBY&OnG0{dO0;pvQNkPW2DOW>1{jqk?X9&_HlfYE+nA9zP?p_W0qDRI-y zQOyL8Q@np@B>NIue2j2tX8)6+vXGM5@1gn0(T@#LzFmd?hDuWxE1V{-VE06 zEuUGG!)0X?su}NYQYBsAIUvZ{atYkQ0d2&9r14)Dnq}C9SK84{xi_V>{{V*mmHK9} zGK8(UO3!<)`(5cM8~mA0U00GBNXGQz?=Nt22N}1h*^NfdTgEEakzvP`4${M+2L;JE z5UxEJ*k%A;=q?;f~R_BNUf5&|G=CvO_eAm??7K zBvLl*yICXLu{q94nUn#_gOCpuEDYl{CGNhfeLSCSKjF<~N7`#0A5_ZT8oS>UX{e>- zxs+`xGU0&qAcLF$20d%ihlaI?2bFPWeH4qsAhvP`{yaaBt{X@%7O5!QZP|%G@h^Sz zE=E|1cl_vch8}iv^rU36EKAuloS&Jc3eE0D#=$-LKU(L-;b|(Z)Zf*Anr0HgsJlvE z*U$Wq|I_qsM_BRJgpA%C)Ye@wl|x!XFP9{24tYQ#l{#m75<2|+;M0RzdH5Z~}7l1z@E*Pp+Rue`QIiXprLRs<13a5&unFKol<2t9eOV(Y~^ zi^jpc$m4fnV?{3m6O3jfxp?iyKb?M4?3|tCkJB!avO7Ij#Qq)C3tZZ~@l7ZJlJy4V zDhJFiBEt}HK3^?YKT>OflKM|L2q%^gFaiq5j)RO4!{yo!rcGwes7mt|F`*1jOhHvi z$ffXZ|HJ#u}Bu9#jM8BHl}Xn$_%R?#$8(!5MC3n$8i^(4l{ko|U_ z@uxqJ{AXY$422_+c088sagGO;r=UK-cKX&n-4x=_Bl{MioNNH+spt7-u1BKXJ_AdQ-7q~m@<{3QuV}RR ze6Bppn}!N9Hmc)3;OD2|&2QTH8%KlYDd>#0s52~%3l&4zcX7G84{yf3q74I1w||n_JOD6A+}ZyCfn?Uk*sc7y zQ4lj8262Eflg4^y(uGn?99HFXrs+!=OGL!rs^kR71dR0zdS@7|cq2fe?y57NUby~MeNIzuLEFYhJoWtQviyWB@&e3o0m7bo4!F;1uq<9~}w*C~-lHJIb;l6pKAH?UbGuU($(y>l7t$j{+NlJTYS<I6F9azYc+WV&I47?)c2vy40+Nn4whjP1`;Y6|pB=KU`9^m)Qr&i_ z;D2AK^{+X``m?1zg;}Qy7{?^l5$8?vu=~A##$zGgr-xZty& zyvOVMR@KCkT+8Jy3}E1G%JlZ{kE!RiXayhuc_OuyNlGdYVpLLm-9~vy6e1Yc3)p8J zKc!0%B~d|8>yALk>(5X*BD1b0xDtW4VzA-6l0W*@qX`OCROIoKQD7E%<%xFyNyh+V z@ax4hYPk#ovy+e<90EN!?fO*FtTz`Pe*Bo%XhYBjCnS#hitv57>Tn1%BsIcDfc00HmNeJW>^8I7_B zLKGeQepBo-*N;!f-kQYkl$nTQw7JO}fH_=_FsBD2r%}kxU6?j%u_(J2ukx(>h-7%3 zVPPDFNJb-YR>ub!836XksSJy03hy~kssR~hV~)d;Pv=!U%kA+ZTZLI9c6Vt4?NB~b zfC*+}kC%W3er$o4$}5)QQjW14u{~R-LDzwfe+qb%ysoh*V1R;m3gzxAb# z24Jl@49lKW6$kLi{Yj|;h|3@E9P|At1F@Ybo+gs&>R_>iK&gR*bHO3Hoy33v@Acw2 zbh}dNJgGOBK4PsTiVHR~xl4pA{>dACs{F3ofL00zB%F$>+xZeQkVziA9+~7)ZqGwV ztL`%*ILv4wKo80|+B4VggWtVEzG6bDEP_V^mQYSluOwq9w{Dd`lNiG`PC4TsemLt< zNb(~nMF2K)y94xLQ*%pLqacjqa=9zUGsn%xAPoMs8H;il%xZlLg&6u4?^8_5l8wGn z>=-WKFc|E-V;y=C_|w^-jk7Cf(2jca4#w5#D%9Rm%(gss(l6k&QCeOJkZcnH4&m$UN2fK#-Rd#<{z(!fjBqln0XfHPj!&x&wb@+EQ1VY6 zybsHPT%@025->imTQ$?-XMSXfm8bD{Qgx`tCsU4R|}tR zD(sQEF4p;@KaM?d=}m$p-m1*OTO()$w@mSj=km>Ly!NZRq1Wg`qcz&g~)6H*8;ryiOHQ1 zb}-HcMI5=PqcAO4BELMY`DSvjw z4=3yXe+rnzBsogulL|+Gcp&EWep95TF{NuS7qY;9~+uE#x z%R6=)j-ByTB%dXbNhMCgaCu?}1J@bt-{@+@l9fkvUE5b63}m-FRbM4w8;J^t8*x6J zNhdk)o@(1fqI(r)nUn&d0O0YKJfF~y&a~uDECY_GAN_i%Z0^>v&OlimK^P=}7y@yS z3CFkx=~5lA?cQ6F)bu}G3}pTln|%r>-4%*Anp3qSQtghxMoF(WkHk9V(IrDhr{)+3 zr(6;M91b}8n(Vw!I*Jb~y>@~@oGCB#U8t&`O#a)Hf3V5#*rhI-PwC_^x#(K?xvhV z6uZbq>|?jocFza&uO09-RyVq|m(fJ3whA9{KQNL*wLm96=jbclJU?qK{rp6(BUjtg zoGuvt9OL|Jp0yunyiD6>8R*tr?edD>g=jLpak_TbOPSv3X?WY6gjc_>} zk^HLDL%4D?+x&`)?D@b>IRxO9&phWC&mOgDTSQCM>R1ZJa(|1AdWvz+H6TnV??`y< z%`!@{Ov55hGwa4ZE1%Z24c8D_fIdPUx}Hes>5lc%A}$Zh`TJJ`8Iw@e+sjR{%ODH8 zlgc8uuC4<7?4krb@LQ62^a8j`nAG3qOtH>KJ&*OTO3;+WZ*Krh`K6_h zp5MZwr*OIaYqGqp6OnJJ(P|PKT@1pE7c2oe`^UMiU%~ciB-azm$&zoEJ@)c{Q~Fky zie(F991!Fc1+q`61N5yg3E9OKn-=`t=I^-VWvLgFn9rNu-FIfHDjC8Kn-{F6X ziw{29J7B{g%RGO{S(`tFYTEoP)O^MJRsE!D#~4pB*nM)UKUzJL>~qgD!^e4}&AjPk z`B$ZS6}{AH;n|9*4v{MPga9|NAOO8jP6_MRis`Jp1*FUjeI0694a-n*~(MD1a|^294Gu)>r%$Rh`S{E|r{8+cqFu6OJ%d=I3vNd)$A zIu1(Q85sTr+aHx~XuAG~uD_9?O%BN46Fe~OCC(2gYUG}z*07?I)ZoSDlAPP5+Fg$? zw9&0J{YFN;jaDOW4{0z{hhp1iL7R=WP2qWe{yItM*<9%kiRZdGC*qGH= zU#!YcWuc}#E2!i|=?$u%;W7?BfeGzO{vMJ>jyW!)MOP#DYRm{D-xc#Wjeb6Bx(|sj zG}!IoD-^6Dor7|xoN`!h0~z2CO5>*Z<>Ku@KpKaZxyTWsp~3By0RDNeNnxhd&y|)c zH`M!9JwHy3#49Y5>>EP_5%JU2vy(;q8VnZ9lajIR!>scK9FI}9z7Lz?7Qc14PpVxy zvB_4Hk@;6MbFa+ISj_Ag=OvF{ermp{F07S|N!~l3dBK11^2v%cnrek7c3fN#K=fk& z0RF#vx21T`!g{UO_D_dyU^2uDxwnKN2nZPmYWE|j{{XM^hVNF-IS0Lc1N$_D)HO|h z?oqvM;YdY+7&9vMoqt)J;UO)(#5LS+r?S5uFvu-)({{Yus zL~msTlwun--h52CGWfBh82K%s2iWbeH*iCOy$R;Lj83%=y~^(#Bn|jvD4t^;SYy-P zptzm3fH+glBeoz5*BGq%C0(3+*z1bsQ9V9l(qYIXa!99KI5&21!g9}X5|sx748R=v za(MX}08&e${gS z0QbRF{{Y#m>v?ua{F|Fo&osMLS7Ef0xWGJqbEV;lW;~leBZ0&57L(9F{fX)U6 zPdLdu)wOFh#AOf?-C4jqbkEn)yxP+Dv^^>m{nc|e;eeF3H=T;3Jx5x(9lA=2tgW?? zfaCbTty+@J9p#oCiX*^c4|eH{@z~b%wzl@mY9^4z&YQtexL}?S0F(Gu5|WBW@rB#e z<71K_rDY5b(zyz8`ihDeqAm!^?a0d?dgQY46HHRSfT(EXW$sSUFO z^sijif8>?SxXJq!nIM1HShHSpV+c0t*zMY~$15~@+&u3I`j=cx*2<&g>C@7tDvP;` zZq6y&M$Md`Se8?OLpGIIKNEzjkRuawhaX#nFs++AW$S zph(am1ac2vJ&ki;6RmE);STa`U6I!A25_evmktV%k(E2S8PBE-Yxp8FCx^7lqWSYJ z(U**4BR-XP#d=d~x-G_^6DpEpea+6@vMzmVz5GYPz1`1@Zll*@j%ZEe{f!hjNIa1E z+(1~_BN8E8Za*;NjmJ5qdqX5@uW@mF&V{9p;oRG9U_$2yAwk9zusF{_jQgAXGlDB4 z=G-jPpkjZ~#vCvMkC>Ig8ObDLJbH27A^2tDOXqL1Y9=U8?$Hcr+Y}sgk~fgO&j%;H zZ3#D{W;GH^M0w7g;hiS??F_abWVZw`YiNem9PSC7$~N@?KS990Vib_04h8@>>@@v3 z;cK;7ZlZ|;v5>b79u)M-lM!MupVKwm=)Vi)({2QpI)w2;tk{YIk*f#J;CFe9a!&*@ z?HniqyE{({Xj*Z9Di!k|nSgi8aex&3y*c2Xy!FYco!ilq7i(P}C;goan&Qu97B-Wg zEUNNw3uJ^D0G>|KgVaU}A&AxB_H9cq*OFpE{ad#m{7l1XK0Hp_5|o8&A{?tu%{ zunAL+03#R^7PgZuzvV{>YkwW?nQL|L9MZ($UK z#=&HjQDlt|IRvo&5saL7#z!^nv3M#gIm=4WM=3iQT1g+LDTP4lG20l$Y}@EsY>I7u z*s4Ho5)$Kgaq|`RJn`T0&Q3dz-spUnci~-X`tQt zX4ApVWdg4Gw(j4!<;io&3@{Uf^2bjTYD zvE@S*-bf*d>Kg=)uV2d*^p(b+;rlWF01~Y-H&kL7r3ORD(lceI!5caT z+>j#t$3DWN>j`W(MZM3HhLz_+_WFIRIFVcihBKaXla(KrzZ_8~hCD@aFh$cY0s>1H zi()9oGm;1OudF3|nS!ji-k^pm*~#tRxUUdNC5%!%yfV)upCTknmM+|Kaez3J;)bgPwispj%n2mf%A%lqv)vvHVApRA;ZT{A&tp6jfKXaUcifb@j*@2RI&| zT2S|AYMOSp>SH+a+nC9`SF>o$aIDeGgmecu_rT(!I!>AixRw?D&@F~gKpc>8M_+!m zsUut4`JZb+Ibs45q`u?MdV*Kq*RQ*8txMa0l6h?*0#I<<)QoYCp1lopxizKj(*4Z& zZ>(91Yp&beX4>A~P*;|1qizRN*QISi4VD)6RVB#E6&Wl}a0vA4#Za+Cv<;=kit}6% z$ruGlzyKe|x%>@ki0y47dufolLA65TYLIh`4&MCM67T}_YT8s+(wVN~2tmm}KPGEax510NW zV0SJ@7~_oh+%&eHW8{6TC9a)m z7<+BI9Z1^Sw+0=!tB_lW3IWhyh9EZ>_dIjQuktoStl-H7xR@y0y+Pf_Il<&&lO;OXmGf>qfT{9wKqu{mY{amP;FU<&0gwB6GEz1jZu?TRyv zqa1nzjMqmc#pydGQ5hpRJAbBWc3mVT-Q&SL9>3ER-5J3-w{c39uG`S&t?sWL<~_F3 zM2G{4m9SR>i+<@p8o($5ll1k=PIiU+K+a$7>TvB54>LXOIU9 zdw=?>yw=SX!$xzA{EjkIjBrToeSiH%sm?n@tLe&~<+#!euH}v=Pr9HGpaI7j>sI7@ zR}At?A#e%K-%i_zWBAojgUD7eZYsf5z)}D?INSoZI`!mLi=+@Fa(Qw2kAdYW+n>be zpIl`AHLNPD+hB`HJ#;eWxRGOhrNDkUke27`!5+k8+P8FH6Y3fbpV;gs5F_QK*r7`? z4q$Z17(C>HdLAm2RqmNlicax&J>$Tdtoo&e z$C~8LxtKHL^OJ*v&N?5ZdUdmfa=ya62jR`k*4O@3!CcG+cIO!*90Sv(d#bTqF#1;4 zvpQ3{xi-CPz6)#R{{WYH266q?>-Fa!oq9Evr?Se<>Jxy&Y3I2koF2n9#X_Ij8f5lu z)s>ZV>N!*S)sGG8Ep?^~2Rs9`V}{7&W6<^b*Dg97(7$7+4DCC2J7{$TGsEUP?`8n8 zPMSm&D=;8i4E!q$j7!T%3j?a+Ecs$+rzJ72>ZjFbIJT`sPOFG zOtEb{m*xj=MgyPaUOW>$38>pc*u;w_Hu0a*o=(-vWY$!2k%Z67{VL++h|6ctR;?K( zPFb0LQJ<|=x`)h(m$@8$YR1y7p53YW2em5!@!jsC_Z~6T^qZimaEP)DE;o5+ZclvR zt!hoGTxklrwSfrng)$s*w2)XI#ZTp1UmJ7_>jiHYcznkV>@l3NP;$S=k%PPC=sj^? zAkE?rh<9d0FLQIsJc}GEs>%r%J5XeE*V?+&d92Z*h1JpeU14~-hMxu8L=iM<*#kX& zD%(7f6i|3<_wW3x&;Al>Q|ew7gY9YMJYxZH2OmHHttD;3~ib;dm@SXU*UeXF!!5^<7v z&!^+Dv2+&k)v; ztgcmeBf@uZNXq+j>G{=DDQgpL8S^KFi9!zCqV~z)5ueJs?-<*gE3YuZh6{nbl}*fy z2>G#&dF%DAG{rcYJDsu1YnN9LuT8@|jxc_e&p7oqjF!ii`1?wNS>V)dLc6#z+#=d6 z>?B{}{p5(C5PIN`dg38??RrYkW2jq;3qQ~-jb7ENX%k;*l2{v0F(*yYe1bwIkCBCJ zfDfU?czRt;YQ2kh@nTdxjORlF|qH4cozPGvaOscFm z19d&o+Irz*fJdLME7)ErWst<`9^Uavussgpf)CVJf!gXGdkkI)kEC~ZlV|<|6iTP_ zuVwK4%$M3IiIzo@2Evz$NU}#DfiKKPILSPbQH`avk6S6kTJUFwN2brA>KED(h7kIE zq$IvwvNOW}05ojU+_1?Y_8e0t)Gi7UCZQZ-(BHxQtzu*O8t;B6X$54{yj2o%Hrd@` zD5QO|a~U3Q$}ss{`-<~hi?u>yH_X568@S@Z{{VK{CjNEVLTaQ`k1rcX*wt`bboA&) z70xaecqUn7QV22qzT-Im0DK}J1erJrRRNBXr0y9cUHSQ67CAE?-H7B_G9iaZJQb+KP z(d7{vi-36Sy${uKS^ofNVgCS|@PFhtgRT6hg;8HgTYLzD<~`!}aBv74SCRQrPw*Z% zkd?c*X4|<&&;dO0oN_78XmyRJ5gUn{{X^`kEhz_&(VLvoIV9cf939f$$!G1*QkFt z=1am=?0o7CEqxGv1)v}C_dn#n;Z6Slg&n~n=6*lj{{RYq+Bkl){Qm&RKBrsxPo8s% zLg%2beV5>&jATtaW3MVd_FCq(Z-(il>}f>qj&N8yji=w_G}dE>dUJkY@Kv{Q{EsA} zy^CRk2x+BAZ#W)<- zu}kp62uW6wa=>Q+m!JG{uj$_jEj10ww=<(J@SUe4{`nP9%y9E|jK48U1zIZY9v?+} z+@A&#CIHVlQgBGy!1d`?qWCEUk_g)Fb=}b6PxP%GE|S*deOjku=dehp0xRi;{hv0B zi^P6x^g6O5j?>Cd$fG{Yr+f5HC% zk(1@_ZhSWJPQRq+ky&Yaq_%Lph1wWYi6nC)42cv1I0GYi$QAXUhdwCT=}}1O;T<%7Ggea`3D0a0odn`8W^l~d~3sDch&pd z5_atR>9NmVykiTsq2(9%{u$MR%^lRbY`2n+HVJg$Zv+H5;wgl;5)qbWIVu8-e{@$| z{s|i0=AEbbO4|2az1EUg*5d7z8gmp3xy&70Jd~glK%ile0ICD zkhIV!$=pGe25_m0_9|pEkH0-HYuoX*t!v%e^f{x7zLceJFZg7?Q^qvEge(p$GjDgqpJaL4$8u3~#JaWl*BTD7rJplT*AQ$nK(Y{aTt;wKCc={LjHp=w$hGm8 z!7mlSo+0syUg?_E=3e&KPl_+Hq^fr2AYBMo05%B7&IxX(%FVJWb@^k4X*GTHy5Hp0 z_Uf$Ba+I3plE0_*xBM~x)X2HfbgS!Tz0)-dXKb@e1-4!|$6ySS7bN;H&T9@05jGc@ znT9ihcIV$cYue}0JRxa*_c~UQY)huoG;GTm9df9rX#W6!;8l0Eu>i>xg|fVdYd;_T- zWRfUA{uS%>;D1{6jV8^Cc_)NLPn3MPK7av?W8D4&is%|RqQc|mJ+b`jmEt7!FOtmi zNIoA&_pUA;R^ucnAI~+tYv9c)+^cyd%Krcpo_|bNprmAugEXxe$V$!5PjRG?%)_Bs zM#0ty!5zwie=}OiXsEbQ03Cp>HGrO-s>;M0py+T%S}YecqO@KZ0iMM3Pd5C3+zzDY zueE8FNXB}5)hQXdXCQhHN~IB8U8=o>4U>R46+xwx`Gy$UR*iB2J3}{MSnxgi;8g6B z2o&71`MBrH1Ry_&B#*6EAi0OTZBkeq0CSF~9-S(!sMIDqq_vLOPC02e%oHAk06;kZ z0BGR))E8#nZT5&}c}~^B7L8*hf*82k0a4C3XQv(N>{ifPTkS?-KpA-*owy#XNhk8H zQb`5%EiOqSTrM~m^c^wyQ4SeF^4W359089`go;RGSd^$>dgT8Alira7`K5>@HjTUv z4o-Rxr6AaJv9Sf&K?Ckb#?nu&0sge9kb$INpX`B=`J7bkISNedp;Y%?hoJ4AwOyqL zBXEtg+~EFr{V64Vgv|T5lqvF=Lkxg%k@;sot#S8vSLNAdRRH%>$@d(3_9u^e>TeN> zvl1llfPQb&n&a*XGBdlnZ3pEicRjKWarhBk5QUMOmZWe%MZz}2yz)B_%c1`OKaXso zBS^yxH%t!Ms(O54Qyh;L)lh!-Qcp~bbgiEu75v#bJ%vQK8)VRh92^XD`PH4kkC&mU z(FZKf*yQj4Jbg(#{z9y7QOTs@7XqM+w@P||TRz=tv?1;w4CJYG$s>X@*nKM71t`i6 zGwIlW`l(nhRF>v%xoj6a=XXr@>G}H9OK);e$vlefw1M)KU&|(~gaBZ1OrA*AK2Kle zOP9FQ=w!9bNr)nC&(GGkEUn3jUHK$;82h=Gt=6u zlvgJG=*)3|ndcz?0EJkMS|uYJix5d(2kL8?vhfX+)0m}HhE_#?FcGoAz!+?vPC)}a zgX}=DHoa^Z#vf^1Wr*kxryQU2>5)UYU7Z)2$}#eeoRgpMs7l7g*pkfWImsQc0LCx} z{{UaTarb^Eu(yTgk=cTtMmCeq4mS~>!mU_q`gQqLx0n~}vA$R1*z$4eIISa2>hUGY z+nscAs;G`Xx}yV}^!KGPobyn?$?gpVK+2K5{9*1&8qt{=IX@jyV4SJ!)VZaA69J9PaYRC-EHqfBk8hM9G2s zrQ@LF!#tlaY>k-~s&VmB*F04ZLIhteUz}yCP1@Lnh(oM%x^$-MAqBoK_sy1I%S~$6|U6 z)|9BFxL|S6V+Z-xOwOF6o=L#Z2E7=ZZ&pWuamjw<6VOscGRJaCv#KKF#L{d>`(fnXacnir)U!BfBcGH{DV~I~6$~;N`G7oGaN`d3q>T*GxX#76l+U`grFU=OE$^^tLBZ49dLlPpf#f-Z54 z{m^+Qj{JT#)Y#lxIWWT+kIOg!j>n#HoP8^aZg0@g+OZ9aIb)m;uP2|aXI#t~m?<8B z4?+I`*QqZx3s_@fWf@$85bin0OfF9!OxG^DjCV5?vPnWlH#5l_M7^*wz-KHakW%3f%eM0a*41H;HbOw#4k%`BCPfDuIo(>Pw{F-&lZ;jiq21w(d zf5ShZu6*6KvdiW;{n$Id*0ccVtPvhZ*AA*(bhRctdT7GPZGoPp9HPO7V{v z>MK3eHj9-ItIWWTHn7YUCyO@9k_onrI8>}z+KW1 z2VsxI)^p{Kru3uDE>r6N0EBuQTKF|}3;c<785-aMFiHWkFXYTW-miM_g{RFm;ZnFe z6_|2I1pXZ>&LZ+*v4Yo6VdO-M93g&X@}nD99kGF4$Kmugnp811-#2Jy1N+2(kzX+> zbIr}3(vKumQLiv>`DQ>Tw?cYjt*Uc01S*1^BjFT)gKaEIEf(u<=cWf_X8iTb)OA1$t9XQ zrC>cTMaa&kwu$u)juhA|L~PuRk=v1h)9~Qc`59Ro1A&ln z?OE2*%WV^u`I&l@JC_;c`r^0`5&TTjG+XHOhIQNsE=Djj^vC}ITB;C~pSot`lGN^X z4Z_?wD8)*gNy?DC^XcE7{{WUeBjZ1ctUM!U2ljfbcQ-K=NL4TcFD1Dj?G7>9^7L2n zzLd7oT~8=Wcu}O@PhJ7^9RaU{{v!CI>%`jZ`h>0wEsre$9&Ij$2&MUws?=KwbI>9sy$ zKO9%7X%aw%T2Nd^mIMxvX&LhP42Io-wJVzy6U>tV?pZs|KmFRW|)|P4J zF$#(ooCA)Pk*FivAOrcDZv{{ZP*$H1o1 zM4E=D1V9c}TZrQys)PE}Inj>7QmFSi%gtQ2a@)K5*V&)5wW`J7$n{AqJdz(VSL;%Vla zj-aUtkb7{I^ODYGSuPmx?#J^vuX}*~i{aIbZa;RqYg{Vi{{XDH-1*@2%jd87SCv8> z)tf%oIjhNog+EWh9|`*KCRys05wI@BoVX z55yMcL}w$amOoNCt}4pPdw&jHU0S!7I4lxH`^rm^k&b!_`VVO0wCa2WmbYaaF9!IQ z>;k_i@0I?$$MUX#_yX?S2fe#Ufa)ZfBOj{&09wbg@Yb(=8cTJkUr7w0mIcr5m%BFS z0QzGd{khtU;mxFT7^RH8%7Y|nG^zx#9DMJ!TWKDH+uYW2jNADC004}VSFx3Kqj*l= zKWWu0LoZ#Eyr(}zaz9G?L-u%&L$|QiuQaDii08S631p5l7ECHmIZ#^yPQ3N67k>lj zP(rs6+d}Zq^2CxE9o5HIath&lW2SNIUq}25&?2$$^w#hnF=f@|N6_=8f`@9)ye zVGNToStMUA2m`Y|0sJbE(5@nIE^e&t$>Zm_jfncHGcX6BIIo|rRxYbiXX-dr8dzw1 zM{Nza6&q}%9i?I~LP$DYS-7dbo{*YNxa{{RUdmy$E~sIi`d z3=MiDz7NtZ$|xQ-ba#~ zk7JYlKDFn*8N0ZT!|_|%%#ho}?G#9)zC6Mosn2)G1ob!-SZGeISxL)9Z^r)s@C?MYs=slt!;cKy=G`6 ziZBPrvTr0F25?6NbK9DpT|Y^SQ)_d3B+&hoGY6B8H$1LJ4tw#BO6hob^IgBd)@b<1{wS6dEd5<_CHWV++LEY`faaoa_7+qLAsIu)cEb17N z+2MX)m;>}2(=R^8i3?lU$fxZAvm{$X0i3Sv43pdGTT`JF^|_3zNykeb(R=Y%!*@On zy729^H%MQ z+U%Ya)b0j|(AiI<*g$StSpHEQ>e<`BcHEJG7bKo*kkg>?43I%{W|pyL(m0i*C7S?e zJT7v53B_lMr%uVqeee8_M=7gX@`X7y=#%{JN}et8MbvQITIum6wCp1c?UpXb7+;uY zpZ0NAH2c36>Qh}o_K0oT+D|R=nf3d;9ysc1j)$acH#$5qweYruT)M_1+{?AI_p-SJ zjNpp1p;}$bsA`ctO`@ujG^R%Me+! zo}PsEqUzN)0c@)l3g-isBx57kW7Ku8I)96kMKisgoo}xj{a<8H5scJuYGm>1$S($(!5>5yh6>=*jA*G5X4YUR=&NGr& zoKo>c{_q<(O`KgBNtW4 zIX`$1Mi?Hv5m0@*K-|tIh9^Q!e8p0yjz=K&$Qa_jaX0#*05E4GC+Ek0z59PEf>|%m z`sR51e1ql2dk}f;QOb)w{(V=&izEL4q{hn380IT;k3K|3b^%7vpmrU)pRF9ReM0i=dsWAed^v8+ z1c8P!afNK2yaIo%V%_{n(9! z?rwjbG@?65*}U<+i5pVK$x=%l%mK;CJ;>zO6RTZm+N{xCq$OS%1Ds`pF9d^v2?rS9 z^v)}7>>^XYVxMuzs*e<92|Q*nzPu=!Syob*AyH>r$xIMKe|wH>`1Oo z^7c5xmW?4(^Ev{lo_gmwuFmSpSYc_l64=VA9dp3#{cDf9w6c;mvyw(@vW(4wp_q3V zIl#&3*WRjDn&mL9Ny%8iQ5F23J7w{ln{_02pzv@)Y<@=F`W%m9(Vf0XveB=gp@ojSap%liDxoM#?_UfVR&d1VZX zB!*W_+eZBT;z&NGp}1J*VyhH!PInNbh9d{p1KWTp(T0lRP12o?1~)M{Vb~0D`S$5p zU|c4-4y6Pchhsx8BOn|Qc{n&Dp8VFcr3RGaxK@gkRJxkCi*ahrb#Dsqbqbg)6!XYn z7-Il}4?dLimQ}M1+lqif@Nf@sI)7SOCxUB)l%OM=g*<&SJv$DR+m(}gM5tpew*kgg zgLDK9z~pidP7O!BDDzFE$%XCA-lbv*JLFP2js|%jl}gY&vEUMz9Z4U^W~7gF5ipWB zPb^?N0-=v5s2f}GKjBgvS9M#3k9=|yka=?5u%naiN2O@7QFPjy9O^~Er@72s>CG&r zPc}ww*lcYXKX(}a03TYg@%^FVjag3O6_^4spVJubD%z_urP?lI1fv2lcLR*$r)q}k z7Ps3xNI@Lz>yht{-qh(SY;sbB@2K>(7Sefao7e9dbCH$@fIIvC6%6XL6c)^@BDi8( z_(Gnb9DQqbZ6sw70Aki%7Qm8>lxM zG;-3%G>lA=6^km23vxz4=j)UBRI>?f8H)L0FxX(twYIRp+B@@#p5n%9i=hVAF|(8g zOmnv+4!PiSRgRr0j1!fKr1JgwJ-;3*V^t+}y4P-oT+)t_M^WLOLM5GU5wId)PI%j& zT-VZZH=KzgoQGZCn6H~GkU=q4!Eid`1mJPc;a@>`dgIU1;9_!9<*vF@a*C7cdJx-F zs?r-|r9ZvWs%gLRF4pI^19s_4#ts!pbG!`T;|GqFX50jkTz?7uD>uaQy^ZyzqZ!%{ z?%4I{cMr!KkKtO$U09_nK4f}XgiOU{kfF~Y4x7hAj=9fTyQWD!q^ijK3|oN!agN+_ zNBQQmpr6lFlK`ZsrI?SIc)v9o;fI=DaRmR?+FVc-}AF}abEoDvLhpOU_tzA&f>TG z9rH(w;mBj(9Yt*&5R+zagY5qRvh@dw5LPE76zmUb^%hn*1M$Uj(n7ZPVs%{a1Ci@p zL~?J9U;Dz8l5XJL#)z9doPkIpY;t+@s|s_^YIZ^ClT)A&h_-SM1as>^RV0s5)~p53 zT8w}gfy)8F=zqznV3CcjY4P3Z(yraEfZ@A^BLs|oe}#Cu+nYD=ZNS z7I@cV2Kk2yPuH$9+Po{rwifypxNiQ^VS`W}d}cXewq5-s0lcP>j_z~M-WBdaRrvp(_s*~C1Wr&NM zZn_>X2BB$jg;_2q&;32#U4#Ds0g5=s>s_~mr~3||Hd{>+PlaM^r+{(Lv&}1K@~<{Y z?rul#uKeF`w_MHt0Ho2VKZR;q+5F;I<4wbrWwN@J)cS_Gl}2;l74Fohc(ih1>he@l zXT0iqb+)l(d7<0@A-;r#KizLp?yZ77>*jlVolX%Yjpg)~v)V}3@~7LQv>T&1J5eGp zx6t>mqM+2JyVC8ih$3jQ<^lqoju;RN4tn)C&3PA(V{IqIQEOI`7_GH*3n@vG-F*0m z1*Bwd89D)uL9RR>yC)ad^F18NDMd|gzbF1oGw%< z1*ey^^RmoAmF_o9F5!_*xxR{XweD@D=lHI#t`Fr3s?{g5NycKeGJD0Qyq~Sh^Z3`I z+_C59lZ@Re<7Xst z#`feq9&B+!eu6lds2Jm%b*dMU8y!tVs$=_9VpUf493RXN(APC5%Pv#96BSYlp{r%5 zM(VAAa(W+H<+Xhc^o>y5LOi&nB6ye%l5Y8jC$Ty7!Nqp=Hz|y%13%1F{bCsP9Uz1N z&l3q__amzQBR`HSu2*YA%~7)@j>0`k7_VReBafV81z*4NsoTS5MDs#66|?gnPPha7 zYX1O$E^X!Crp`fIn8b=Q2ofg*anmE#y-M!F84*<@^6+*r3Qy0E=4-&MCr)-}r%ozy zJo`!0e|j0$p#T6sG5&kvx`xqU6E0T;h8H6}c^Jp28Lh1zJ7?W&gDltsa3gDEa%;S^ zv_T)0D8|x4;OBwPKM&&!seGuUIf=zY4^uP&J+Y{&p8 z0m(gom1bONGOVHqnN=BFj1Fe3)wmfSDdW_0(4Rxk>y9>W z3z(3|&4RgLtHB`SjEr~UzNU*xjbQTLF|oJ_fHxM-;s+f;t`}F)#4REuMfZHeJoGpu zex9|Is$8`L!7jWz5-7Zt8Nnf3FYtq$9tRjb{jptsgQrI`$!J%E<|0XAbN7Zw?0FvF zO6ror6`4%20GqMFIT_&lbLs6-TG}nW*t)lO3Ahjl9CsbZ2ONy_BxbITA*W($QB4w$ z4ufnRHnn2p2bILA*+b+1rc72D^thL7)V$SZ-zr%Ijd5us%nUFm?z z#c)r4F-g^9RMF(?p+hMm9kLY}A#hK(@}!eNw~i*1jiE>kcAoh5=dWt@Z|ucwuEfdZ z<7*BH;C03UJ$qxGl<}uKWH)jU1QX9{UfNM=XnxH~@n(ElMZNW~nji>nzMzhv)04yNvuHuNdRJGaLH2p} zzA-j8WA29?$MQe@YU)myyMw6d`0-xtD(a+pk><{qB&^R4*QV6$!b0xb4+^7!j)yqG zKaFt>Zubfql(~E|l{f;vnASW!4y9(%k;&+N4S4nbnLUe`4Z1GY$t(^JUfnQj%*9R8 zmEOm72q~{Kh>IzpM9kE=lWA^v=@?D717J_j1DpBj=1-(nP*MRpLM$h7|9)Q zdVU72Lp!MXh8G?A`s9E0{{SlDc)rI+u{jC!7KoSfw@AEUS83y?9GrHooghi1d6!nU z*77vzw3*;pUNeF|QhsIY{46u;#dKms<8yDvOyH5<1GYa}hUUg;l)Nvrjuprx06OJI zO#0VO8!)LxSBo*PgN0RTBD2}t>M)C|%}(y-a2qU)AZ^?MmO;IM8OB)l(Mk6)9!9yv%YBU6qaALFfASl zBo_3>a7gWrIOhyk)^Q&89#_9jwfw&G=d%nIT58eQ^Hk6^i^X|n+#wDfxWa-RkbQd5!=tf4&dVo0E~hF&!H9Vnoof>F*csi*d@zZ zF8S36WVp4F*|z0DM-De^Y@OeC_(glIpMfm~nRTSy5piR2A!wrnfRP*(RUqe#b;-&3 zyWo9S5AgMR)G8{=-f3C8t4i13?~Js%YW-3^OA(5SlD4Pkvivk#o8e)l#*&N1`zYLp zbSNZMR+9jMxk8dbVe=mO1En7Xbqm`#wF~P}Z4H{F62lW0l4Oan^8n`q5$6gIB}UPM zUwvD6O2*Ri;`#`}%W|ZCNq`n>aI&TbVOQuP% zg>vd61S*fafyX)9xSv)$0gU>DT0m3Mw=HY}_OGGAWi)Wpbs)Xw+rM2>Px85h>p3ei zEG>$G#cwQNuGSd@V1vjak{EV&uQ2$L@n=Z*dn6ib!uNWe+RuLT{5z_G@;{RvEpA-$43ViD zA3yTZ26;P`xW~cz@4EgG|-R_DqQ+C4Nz>C)d zw*&n8>_(H^GQ`+*VnJ0zB=zT^;2utLE4|aLg{7**%eBeN3=TUEoOG|pBNX&MQJnco z)*5U!G34%P0mkO)K;U%fKN`{zFAdjsbNuOCF_(F7-6-kr>+er2t&TDX?Z;p1S}0h- z&AnL!jsvfkjl6^SQ`HGkG`}VZ&o~&SqzuxQJSN-@bDDF&^U3AE5GW*^^2~c@s1<4g zawQ8J3@FC&oPmbNT9Mgf1fSEb2y%D&^!ipk{o)VZspqF2zy7MF5-vJx)Gjhk+++-O zs*Nk&OXb3TT%3{UI-1UOnexm?{5S*Nw=J#K-XatL>;Ym2r$JPr4U;HTU8ADs@h6gh z8q2$|`)ik#Y@qKPe;zcgl;2qc}*A>XD5V#kY z68U~%^1;AdjO3oJ&T@G?@GD4*c1aS?e8ezR66FT&><%O3cE>-34k&jzIPM~vR<~C3 zS#iH;;BM$M>U#m7GpYz7BTro^yb_R5h-Fdyl!6NTD-`UH0H?TxZ|YI32&OVBX)d zu0Um8<&>cOcM8t6@%MwZF(9_pA#)q~awvSVw>Zc+IQdT_jylxWQ^6vSvs?flpk^tM zM`2wQ=*fIY%5v;v++6v`3Yg>&RGj`q3cGBNJ1LpBgvK+1Mmy))p-WRE42&~#!wscz zj&LzuHLa9Z@eRY!lik1i)l+>Cquid}7Gx5JY<3s}q3hE;{c7Kr&U=oh*ZgWJ@1u${ zBM&Y#87J$|eNA)selOAOqukP?mQf^t{|B~-Bg0LOvH=SMAr zpRx4~)~jkW6}+*$!=eTR{#ngcx1FQ`?r>Q1v{%kBKZ-A|kiD}9VgU18cFE(MkIKEX z!P;iM1Wx+Q;zZBxl%33==RA?0Kn6&~Ki##sl%?41Q&DzPglsQ9><6I5a995T6YXr} zXdW{Y4mPw>mmawcvE%dq0PA+~!zgf6;Z$Jroc<^L{&i1X(yTRmVQ+hH6~eFG^HV!` z{u9+t)BgakSvHoe(%p|8)qX6?DA{6JPI7l_T=DmK^E>y>c>G5y{{RuSCjnRjHsfPE zGPZM&!zvHAPkhrncP@$G$XaV_Xy%l*$kt4eO~GF{{TFhV+ZnI>rk8hEz=V`(;r!9cF*CvAEjya zTAoY#`5C-SJkHgU{x??C^=oJfjipTCh{pr4{A<&EKj3-qqqe=cyk>!d%DY!?9}?ywJVjV=_4+ue1x13Mmu_AwMH#qwgtg#W1O(sG5S>K@v^Z%yHMblPK0&) z{89zEl16C>+mI6k0075adY{u2b1~S35M`Z^x}0s~l6_Chjww*QpsGdWfyd3YdU|J{ z&a7;~BsV9%3;zI7{OSUzGSb`xL?b6)QhtQ71MAHk*9#$yCBnyrZR8K(Bl5rie=6g( zO;Y|aZSC#nGduZNF@{vn@i7ILXdLy=wRIO0#Tq+WFl^(AFaiGnfna}H=NkHZh9O`o z5sJ245#OdUo_#B~4;yOH%~nM=+0n<%{pI8n>PHnqY03?fjnTOaxO2%oXSk_nm(7sv zB}Y??1|;>!BR#w3po-e!dB@C*gQ4Uco-#r0k3wsy7&KA3jpdL-Xc@#x8NfXWJ@eRq zTDxUuIFJb#WU%ST&$+JhC}Fd;XGH;3FfcQ~&IkGRu3`Sswo8vMDhS-6v4w62;7I4b zE0(O=b~dLH>$~1aks{(aA|E;9J2)@XrgAFnt@IY<_X17}ZN@O!z#o99w5Vj1NQ(e$ zefDxn$+PZ-2Ll-$`c~k9Jijtn5v3$Hx$CpjZMdl8O05l@0RQNqWDBO@Jo<0n0RzZ%o>By|}ZNI4wmAEqgZ z5ZWMw2+=^>g-|$9zQUV!WS?LM0UJ06srsJW)To4Emnu0dPaJxFc<1X;$c8e}t_DXK z?Sr26EFW{8o;#b1)kyJ-4l&1}uC~VAtz){sr|#iytcZKkIR5|=YB6cLJkrKTnJP3;pF-m#W7lp#=y~g2 z4}TL)x@;;WXJX?y-HemZt$HVoZbM$JqHIsFBNitd$siw|7j8WWKDEHynO@i=z0U4E zPEYl(O92j8-JCeNURFm5sm4^eZn^zyjk~l`k2wb@b|A;`5sd!7rFS}z2upH6=N;=7 z{?w~MXOX>E&2Tx(F*v};KD{f@zNaim9|;#=L53$n2Zcr+Iine|sGC z>S>THgzk)$&NIbdFl4D9?jKG#s}Vu5axgQVwN`tw8|Wl(fa@!L@P#vz(2#m`?NUhJ zyT?J_G?F?*jVz2KR8s8BcB+Nsl21X7r_!S{?~NzjvL7tFtDz0f2q!$Q268Y?eKF0Z zD;yt)5YKW+&eZ`22ZC2Ux^>Sv=kl+jJOiXfr`yE)j`11^0}KM)N&f)8j~sOUJZnm| zhf&vKfj@X2aMH2oJ4Wn&0|Wm6uU|-qgGkb*)Fxny8nYbmFr(Any3{Qcj2y2oLo3Jr zIJWSPl=JUVbm~zTI63T2dw0!zEvesJ>Q_@=-8(eWxpV2wbpAH+6uv0crn|X2qDLN5 zo=YB^=F0*`e!(lA!VrB=E$zXIuJ!rSXm0jBxc+`V#J&g(DTMI z*00)Ht1}t06a(9yJ!>Y{QqGsdOXj`It@8wlWB&kwImrDK*KV>khMhFAvEM5BOOenx z!9Ry;#n9}2&8C)#Nol1l3Z9@1qo;ngZ^Rd7(!@gNq-^A8JoF!tt||M~G&H8Hj(5W- zZZ!*wgj}Fvp#K1~oPSF6z3jjpye|g?3iIC!tajFaIoMf=B=jA>opje4#+_h=<(E5u zgb|aUYU9Ma&7HJj+DUG8Fv?D+=Re3B|%@{(8s^{HV4 z9CtnHM&yrb;;6w`a?}&FrwArnrBg>v;f;1d$jxn@;UoZ8p%mh9ApF6~LpR$ZSf3L*( zUtG29XC#k_sO_=KSa?SBP=rl=b$Kcu^{XU<5vU(ClF!em82s^F zEFTUu*d=HhFw&qh#ATN%(RVU!Om6f8{7q`v>v}c3ie67Nz8Ym!E?vh=VB-Mv81}8D z@hC+^SZ*ha&EBkt7tCXv1As=+?ZDs?D}Q*&E0~ADdMpr!g4PC0kbJatc^W1k#>Jd< z>9-w!8uuMf;$MgKjWxV4Wot9}Fvn--D9 z%eZ+TICzlDw~xEPIbTk`{InAri?x>R9x%-8jQQAIzUd?>z&XxO0Cle~A5uzbUuA#t z{Eu@f!>(60magA+{{WgjUM)*O5gTB)ClT%^a^s(Hq;uPv>NS6gHn-LXMvl#+wM%&I z2FDA58ih~^UN977kZZ+kuD6vF9KxUy6p+U~0O0i<&wjYzn^sR9(+gQ3avnpJZWOcp zszY@n{QW$*Ia7SvpFvssc%?f#>~$wbhh3f+5;5BBFg|?{~9P`Kj0A9R*#d@5#y43n;E#%l3 zRpSFCo?m^IBa-;Z+mO<&_l- zn@jm_y9s41%13@k9eQ)n)wl&LWMjmO5mMlM-*@^RYjud`eBIgEPY=r;T4~uL1rSGV z_KT?|j#UoDl$>F3Se63>4CT8F*0+T0G>iMEOPIsm#CL}weqq;xjofkE{{T9%Dp}bl zoJ=hoEZ;hS_UFuC4tY5Y%DKl@6_MfQxgI0Zi5^=_jMoahW94SxcEQNw*V?n4Sxyph zcHi*SiBXG6O)V|>w2xb8Rt>SLg&6<^9DjvaUnL0Lg5H=sd+}D5Ank?#oaIS8{$BL= zi8555UOVHjxB2|5=aokHXICOmW1aB@aH0~Yaj5tHvk-V^{*fC zilxG7up&gU!D_1_S}q|iF&PnzKIE;~;6Br*;^m_T zS(yY;7k`+Nq>+=9JNsADC`G2; zxAQ)JRh(R4pW*#~US@o4dk%x*GFNzsZS$9N$Ip`&@y;Y4y2 z*rbt-s&mgd&%Xk@jY!JA8Q10#GlQd)=NmzmMO+MY1RP`9xZeOMT@lAk^By~W(O!;U zQ%a3@UyC8en{K}!A^hP{{SYmJUxFE)5=wg1seci(X(A`Nw#t&6&2ju)xtrqX%`y; zAK!Ew<7a=)q1Ggg=GYf1WQ^w>$;~%iifBARr@~))#*_sfyM%>|5Gj*F<}+t1_R3H=BC@0A^bbf9s@G=Q;y_#Jbr*yYR-?Z{@Tk| zF3IBiZn!pVIQC{WPs9?FsaSduD*piAKnkm@-+hn7mJ^8DQqanwR~aXqVP7UD{Tb~(2D|>pHg{9VR@QW6 zl0q=PRFf3iPao=K!xNqsLTleOOR45FG-q%LBO;D)6%GflO7Tw*+WoKL{j9rpg);_B z0$mJ}Z&9CACmem?E4lFAzb3DxTRXTHC_cwKViHNX-^FLm?KV&5APTc#YTThm24p&D#}Ro+;RF> zMl`rn3cv&E$Bh18&aWki0DRX0h&*l?HKNek zFUxHg-aR&fpTu)p-(;2gD3L(R3<6K5Je++h{90skC}dKMz;L5)=fFRmM5;Z?P>Rsx ze!)7N`9uZC$sFMG^{oi(uJ--VqdaFn=QYtRQ$SiVoMRw2-uA%$wRl6haf86;oPQx% zI*ippBa}LOM;V@JJhW02uo=eVjP>XV=B8~n5~NDSm4DdC<^gI#f-9qE7v$YAJ(Iv zPmsRW0Y)-90>?NYWQ^mv?Ms|FUgsq=Hw6kztg1foRb&S~>KC7G^;N?Z0w>r<@omNj zpadV+{{Yw0$!a0_LbmMl&N=)mCVMe6dD9>zdECv@9@yvctrXD?H{8ZB8<^P`wm1uHGNIMM*b@ z$IZ7pNF&hauWq8VAH&x&6l>`UMH%^HPn4VtW!Mv(_Zh`(!>3$9y5a0+l1SK?%9ch0 z9nT8+JmBy%#afS0B3of|8HuhG?spuuKQZInk2Y;NRXuQg=XF9kVqNy zJf3rp#<eX%7=fugUWQ$SVSxGItdvNyvs&mT{2_ut^ zfS)W%gZ{q6yMZR#l0e6UlW@ z6k{U;fH>#UmV1fiUBMhfw6B=!vvEC_b_pJ*826~`-dpMXkjh9K@D4VBan-w?xavNf z*1Xzrkf02NukeQFwK{G|IIod3;M7`+xy)H#Cf2rWsEqB%$s}`(d+}GHk!4qT117>j z1YrGrzO=fXjhVN}0c2C01GuuB^U!ratu3~g(ZYeGF8Je)2t0*6^Mli+YNfghPVE_& zmo}zVYk8TxzQh$DQgfUS&)%!rUdE8Ix=B2@I9w_3*RN{P)b#70vPbp_Rwjx?X*|SM z-k-!XfK=n5$gX{?rIlK3jn{+F5hig@js<~Z2G2KM>)9545BPaqC?9V^%T6?PU_7%(d!$G1H{ zOjeYg;kAyeJlvJqvF!H1NT=7OLE<}awP_M`-53%K^Y=MFn&eaL-)!uM*LUD+Qc{i# zM+EK32e|27F*Icl4K>B?l^m%d^KJ7VIT^=%{V`qamWy?0CX(t{f)KK*s^xh&$-{A; zp4H|a5ufZg*IIPHBx>Abj)0XJ<uHdKIPUbzm5VD!>*8kPbM>=aJI9d~H5iT^;yY z-ZnS4c(XCihao3oRWjPt^pqW z^rYI7Mgk9%jxp)=t6pYz9!aiWS+{k#Nz)i&GxZhHq7)lJ%8r1NNc>G#y?{>xA?wsu zk$QoeSIxIl21=g&YevZBb|2xYcB(wTDY}u;tiYuR^&A?e296j10Ig3L9O9zh7v7i5 zK9!KsE=lNd_*7EHtog|U+m3s4K#-oa;&Z|1X@!WQX)?;^I6QNlisn35r?jZIkb{sg zdLEpD0pmE$Z>)^7vK+8D!7Ge@Ip?2hn&l16w6UQAMFcKRKz`XC{{YsaNO5*&fP zk|)oYq?H7P#~fpv^ydPlhs>Hm9P;KiV3Mg&SDp?%GoEW-R-K^3|N z$6wvZ!{#0EI(pWZiM$hkt>|;Exu5cTUqoLr}Ydymug@f)HKg0tA z>3})Mx93xDhj*V0iU?nu<MmyBD{{RfMyUnSnYE2_K`>c{a;f($1C2`ODwd%iUL{lJ8*=|`0<8kAHPaP^j zcVz|40!ZO#C3anDNi85-No3$amfaUgxsgPw9QFh`)` zvn6sRLmZLFs7ex&OP5|=MG57ba^99381jU4;FAf15G55|r{{Z^c8d^@b9$O<5l1CrI z_kAyL-QKUqf5fx54XN+SX%kiyLwX}WHGdOIG%fMDWK`J_a zb!r_cg6%Sl9PQ7|*ViO)d)1pS561{%7!^3&r;-n_#&PM%_O5o@dYUU(!&n*_6}*5( z{GTX%r<2FZ0T~{()j=^E9ZnU2Ck2$}u21F8Y8iBYFXgw9$b1u(BZK&M%}H;iTrYB& zBysZ$cmDurA52xnTT)rOWhi;o<^^Ub7mRE>n1acVo8~<^`hONWU$d$z##MuSss}8` zpd6kF>7GgT^`l9(`2n~>CO`me75O^gbJHWA!#>(h#ujen+amyRoM-BKoYzyIQ!6#0 zP}wfgmD|TS>OFB#zMlX=v<=VqNF7c+N2nFBvThkXZR^{Qf2A^ZjK}4;z-|}Z<2d~( zbB8I14TAYfNGw&k3^UGpbm@-&0Lrp8%?(U1bqajZg(M#1u0EsrS7HQg71ZI51{;Il z^~WZqlWW9OlA(q-W7PZS)}^tn&kNM73NM-)%H=^B;Abw-syTK9+W3SSO39dK9z7X)lr%Xs$Df<1=eZ~8{uK?fyowJ3INAryaysDq z;~dnH+m%&~V?8>M1_1p*trZGz!<-H>C~V|8IOBi^`86yoXUPE%xns#Z6OMhpv@Br1 zmO&h392|f8>ryrjyOn`noQ!m&kyXYBq|okjI)I@gA2H+MQVq2=8c z4IWl?QaD-p=M}W{*P)bkFs&n%M3zk%45YZ) zykpe&uG2`ITt(!{z{s2&bDVdsA6K`FPQRKRXic|+Z@thvV z@UFHQV!MGSiLE0Ofv z2XDf;9kr>FAzR!%aGvMn_BI+eD9c4(c00x~vajF07?t!EkK({4V= zZ@Gp}VtkeabH^X&y+sAY@DN8TK5lcz;wt>J!+3?=aVq1S9E0@-iqf4{pEOC76IN%i z{5ANqu6SB?3f_L7xQQ($=Nap zfHm`fi@#{eVVmqe53-F52E_NHbFdf$q)I>-C#y4c8Bx-_f*Wmf#`?3#G|zK87kTck z8Hz@zk1GZ^3cn&TRp4*{#d(}^$!OOT&2#3w((c{2Xb6P)c?6to1OPH{a(mb2*{2!e zt65=}BwMn5UANa|y4&wPY(8C0N19r*yw!dw{6f}dG2Ls|u(M}s+ROG~&U-_!5%tY@ z=ZHK@dw;9VCaZaIeJo)iGhE1Jkch{2a>s*^2R_2O+g(!M%es@~-4sQK9Zycbr#0hu zBTtJ|x-VwZB+O(|CSiw@pPZe&6d+>(;Fn>rKB`f6bk7v|qbpYWH51Pz!nF zA(R3ixjjhQ0QBs7b*^$tskfc`!OuS2yyCYWMzcoeWVmtX^%%-6rV3axlv1 zyzTjpK2W@q*0z7M?NpVPSxe;Pq-e|e`GY?Fv(S;vIK@TU-=W1-RH-(9|JL?RBTcxp zadU7&6(oJ&Pft!j>(@E_>$63QAa?Ai!1ax3Cpc6Wk-PZz#4xAHB4mGmeKIl~yFV8#I^)DnFfCBx7zWn#z%aU;Eof zAY`7yIHo&XxB&o6?Ie?v-*CroW149oV{dN~6=g%00B6{G@-Tfd?_9JgEbcofIVAkV zk@7QE)GCr_jv~$xZQrNWPMXrpyME>g+dl(t=@eCl@t$KKo+0(tGv z;hJnVyu`3gEaks>x)7d9j&Mf=^MTx-Y-bvmc(8^>xR^&AHF^sKwQhTIv(?xQ2Wwhk%7QAo$twB0`ZIcTFtlWLY&(2@sE zO1FNQ81IVbwC@gSnq0DtJ|>J@HtA#DSqq*rQ1GO8*|$CGUg~Ae$eiORA%;eNqZs^+ zYH5+QswI_!w`>yFAC58kS7$w$}t{-Xw$rp+wuLWsARRe2YWq)$typSNC@|mSBGj z7U8)1l0TJ2KC^QqSeI70Z1wWW#y=o4`q$5TeeS(9o>XkEtJRp1{DH~*tJeMMEahNKWkUzyocycloZx^(X*>-oYni2?n#EM8)Kh2FUkH3BvcbGl zf9AZGV{Nyb?8HP5FNQb;$l&8UM;tYKe$ls%G3iMhF~JOW*61UKB?ySU6;xmW=m4nX zBsflhezoCFT+(tqh)0$xBCy5|NC4!4-`LhBp>)X^aN7yaGsXbwe+tr?P(ee;?}67H ztHJ&$__eI;Mwx1HHR_ZYKXxJ1{xp;wNhn8lIn6>YO!@QTF0uW;uS?~==pa5+AaXX2 z{{W9#@;m!5Nyx84y0#IvKp>t$CzD*w)C|W1<|p&7r=bN(DiP>-6<;)*napXH+ML%O zTobT}bJ|`Q(guHSAvuJS+XRtc$5r z7M3`cLywi8_!HBwC#b;3dW!YbQ;{^Oxiu5pJ{kB*F9i5q72?}}s1ZHZa!TifPILDZ z^#1WR-r6(VO@+>QEz^$w0ETNa`s!HBaY318k+G6~>I{-`$4vWIL17$=3b6%P_0L>> zdCh#}*9Zv%uhyMWAT?>#0 z%mL(f^sI}R1dKenJhqj#uF_G7KTKyeD(t1^OsgN1cam^7V?Q?^TzB`WAz>ni5Xi0E zNTVPggN9-GAO5qWM+=8hliaue09c;>wO&VMk|hLfX2S&yoM83mrhmq=+}7oZA(C;1 zQX(9%8%FH*#z!6ME%W)iW7;Dh#khl?W!wE~;?3o*BSmxSc>tfsllbG-m9S90&AjCE zkSSk5knCc(Nq09LQ~HLgmr=Gi8;>P(^9CvvzZ?QT16nb{(+}OCAb$}V_Qp**Xc{#v z9wq2AoP9cTiVzhMRIU&bI&+i!_{B$aVAlh9jXc4|?Wza>_UL~an9t@#w9W|Xa=*xo zarl~|$q|g7I5Tzm#^2Oc(v8_OdRWTTZM5ijK5y*g`49Fi$L z!aDrG5&$G0yqWrU`c(R1XTOdJ&@&WcAZ{=?90S)s)AEgAX;}Fr?f`*-gU??5{SOt= z=$c%RL?)P+=5__}dWAeMpd1fg{unU+WSl%6m_;9v|6+4SSRXslMyua^RjTkeC`*q^O& zNnM+#V$3m}rO$i}=dYzfEHX65dCpH9a0hCgVYqX?S6qR@fz$D;F~zr&-hdX?)FxY@ zW6$~RSJei6{{X^-Uez|A(7{i08-5%!)F)>Gt_m*80*!kJB5qr%M5JlG6@(xI)E|yQ*JI4 zN0dEB1m_&p=&jZ@{(k&p`F@p?e&CX)=Fd@D(WiM4IV6k=tFp+%GL-;lxd4v7-rv@| z+fcr9$UCz043=ln}Ck$fCU=qq3fJQkT`N6Lm@uldW zP5TOd@6M1%7&#e@Fj$NZ2JCU^$4;e1?JFn_9_=?HhP#IEQM)Eq{p7|;qzWTia2Fyih_Y$9&{HS+!kB{a^>)2HtLqDqN5Xju(fIZ$X|Ky#fm(J6tqpX=O2~ z9lC;g9ziGa6{%(5cq6w^^O%Z`ak&TnJ0KtU?LTW2-!Z%})0H%$x7YlJ_$Ns+d6!v@ zwt*aF00Vr71MW!c$Iu%0i$V5uc-29PKtw!!#o!-b$JF$$PeHPaN`e?|n{iNN4Yz*x zf0Yk>@ss#hZEFO#I)$Br4e>ArMqUDrr$1AJ(<3Il9Ay2h&sUe((~Umgn>|lKwMz{u zDA01laq0Y3em%soZJ~~F^!nqaB#ep?6o5ETqn-~R=hCc!x0WLZpcR?V<~JLDZn*TI zGd3~Lr)p^>vLXYV{o{^%4u|upBMg{t?t_&b3H-CiYIg!D;EqVuWXMoe+nfR;JAgjf z10%T2WNUI5|u z9FvX*L%`#YYPx#63F)cO{4f%fLq{ot?G&sXHe)k8V;19>OcRv&_FKzT_Z7oZP zp4Q+^j-Fs>b`16CTa5nzO1bd**UHhOx_k$enU5cLf8E{x00G5I<6jYYFG!4O-YVAg z?K)Ya42yep6b~Y%>`E%{> z_|?xCd_eGGYcnRDsKD?m5UzxMr=Y92lC`mzRQnTs-E6F)99pPLxZY}eB% zMaJy%q^#^|OL1@`B)dF$;c`dQj+Fp$DOn@PWhG914RQB=G`D39WnpzBY#GB8Dy38J z5ZtfJj&OLWlAvet*)hT2K3+ z?0)e)dsmn08n20#Ib=xSgd(E_AhQzZXdm6rax>HNsin5@6~J3@s>KP8<~wxq&}}Z@ zbG&4XZXkn?T;ieZQ<3#`ghm@Ep#udF1CB7q?_=>b=N>A$TX~)dSqI%r%eNaE4% z0i2bLxg&NxGQ5vdoDTJq5Y}eY?cxwa9Ps(~AiI*kyd^qJx>G=Nuk)p4Qp3-~UNTu5Q{Ql!c+r+*nnn*3y#t53? zNh4CvyO_TBA&9^ocs=p?d^4bFJ|WX|`S0$g zS)-PFiEi#gu?jvxy8|1D=hyP7JOiLMe19=;vNPucE6FDuj@)CdW8Fb+<4>`Q+Ced5@@6bEoa2Jn&vBo^yZu%lGhCP| zf@4TvZa==^j(^}es(OM)b+236e7|W(w_E2pR_a)uojL>DdRKKjwvQgPk~zQ~E+V)4 zD20{gmT1GOsNA?y)a_xr(>cHcIIZX{wHW8K)8ivq z&`W#g{QCT+VO6WAi=-;4{oZ`ND)uk6&)y2pW zl+<24eB?|t5UnlGpM@AzEjCWhhTjJib5 zqBzk|vU!f6s_rK}bGf?nRj>5DV@!p$Da?gbD`Dg&Hw6h~R0kO?(~SQBTFt54&tfj+ z3vwZm*}SDOq=5tBN|tt0fu5(HJJ#N#;$Q8ke#C;_c+@hp#6j5})x$0eV3I{pC2l6$^imxhAw)fxeGpec8smn`5zdP<&S7^opbSM1e(z|eeP!Fj8 z0PBi*K+IGwJCoP>ntzt4az0>3`RiU9XI7UupBHJTRnrV$#tcUw&GM&02qbg_8uCvV zK@57uq&A@~+slSx6yUcHuIaFPvCiK+vGY9Uy4tjOm)4GIV z=AF(I&TzM z8qq3@RGzdJ7-oK_b~(UJlC_9ttWo}0HQn$cJQ}v)twHTCL+8K zxbM0w2Tn_HdLPQ6@YEMJhT&#Vj99S;(4M_&tQQXsopm{22ipp>dJV%rm06Ebu#W7? z#kNQW8wUf7lhdHhdKT55VxHGMD^Z4N_1z=Ri*T7PiUumG#II3<^dKLlaT?eSbn7B* zbRkAgdN~IbV^+L*b!|2W1rjLPa5@i^WRFbZvOG&Qm-c~OF%Od(sowb;&r^Zd9jh8p zy_vO1*-1YC0HQtWSr7aw+t|s;8bHV9zvEtEqRgXDx6l0XLC3Buv#^@-e}-C!yNAgu zr+IPw`ST+i2z(E_+*uwB$JMdSo$T!%)h-iMb_b(Q$K6T|ZQNaKx&yr8KRt=*av}aIdLp#Jr z&74@eT;AGu>c1uCd+&jDmmUjSWa$mein#R|bN>LLQ@j@P>HZ>`89`Vv4hDA;Gx8sO zp^EZzg%!dG+j@;FVtzfw-K+ipL&!1l8@mL>gy&h$)lCXcfwTTfX z?uD{(kM>ue=U0|@R^20~$&JT3#&L`cwlnFP@@i8@R3vFlZjf-FE=N2c<&jaM$tDus z5}^0U%OAkhN%J`~63Pg{$6SxlRn<#i`HiOAw*j-a1JgOk`sTU08a7fPYdKf~s^n2B{KL)UoD7mr8Oh1X{OWP`CLk$yaCr=H zzkmlPpIXhul%$O7h$FX$%s?e%1%M!o@~rPY zbS)}JT^ewfk;waCSpMQ<D2arzjsb;_|MhO5642&KzT54_L3lwo+4uFA<2016KLotn%Wl>p=LCa&FPoVbc z_*1&Rgxk54w$|voaEda1QvU$Up7qRMZio=EBS@nmNmG-K+qlX1;8$+Uh@)zNI~}9z z_}7&9v&LfH1-0<=8=H%U*s_4l7$XXH6Y{ywp&%Z)=~o^0GOINec^+%xjXk1SbsO0& zmUiwLQ^5lV9cwW^we{AJi%B&( zBZq07otdL9LEc!lIPASToE}YdegYs%bY*2(*+$HhwUvJG0B}g)`hob@MUqxX@@c{n zs;3jUofzDCVMcMga~=m@O!`(G?}tUr%HG@u?~$J8Bw$rWPoe2bDeiKz*xY#~R!Fiz3Jh+`j)$GVb6n1+ zrQF(DM`$FPcoCXIApqf-nX%u14hDNyrA)Ele9S>O=m!Vb16ewqf<26$W!qav$L|3E zuRiKP&q~qGQdVXaDJK?@;&&HT@ZK~fG4_P!O!i*of%$Qh(+Bjc7P_4Fh|#1f*PS?f^UlFE{eu2Zk~TOUD+^f)eNp61zJQ7eVR zj=T8j=nh42n(QI0+0Xp4aC&xQwEqAwYo^g}{?lO~(h1HME-@gbGgPk2{Dh*Y)fx);uY6k80NYgB3e~9fwNsl#ob##>|EJ;{yQn&mN%H zp!j}MZFg?Tkdom~7#Jgg+t)SaLQ7+s8ZxXK1S-4to7)y@04)j${@%9~5bxY>jCnkdOQ5UnB%za#Z89Wc02o%H3_2XrgWM7CWRk z$?7qI(;kMsvgXb^t)_qAZTg&UqkXpL|v>8t7@vc>I=YDOhd`l#>O5 zF6=PJOo8dzs=kC)P4KLk1Bn_OD%6`Eb2YU;ed73OjL*06lZT z&1uN3aygmhN#Q%GfHMpQTwzo$e=-GGe+WGG<}P3%cB^3u2uW0;G=mS{FKjBt6zKat4%s_5|6mIlUBLW9Q~!^y029rIIIREjn*>Op0muWdPStaGBOnX`)bUlmW^%+83yx27 zQYPV&Po_O6uqH`>n^b@qhd_Rr#}yl*Nsbl1wAGVi1ShWmlTsntcHnc)eRE1fOs@9R zWA{>QVbcRWzM_yT6Sa#n=OFw0@l*NA08mFc zp=A|Sc~UyJ=Sd(Az_1tx05?5HQTqP?jX=^f;X%eTxb->D{{XCFh_)cw$L?VZei{68 zRptdPYRzsfGB6r0cMdQIJpD16@@ut{Ib@ziEUL#j)(CK|gne zV0!x>sH}9|8px?CNB{&NQI+SB#!qZimtSc}qn^%T7|+ab4&X;C&qK~T)1z0CVNxnl zJA{hH^i3>gCV5$sMvrbza)2?%-UEytojJg$>?3_T2=v(47;S)!G8J(iFtLr8P*eeq z2N?IMH0i$AXuH^Xs#ANQ8<-AMoae4Ee;j(%hei>R9G+pzef~~K&N%e`mFwF2ql*0v zB)C$59N=++Fi*GPRcA*BGVdHwJ2Y?Sl!5sZ~>@%94 z;T$knk1dbD{d4{%la0_Psd5Qq2od8W003Cvl087r^QnmhXBi#FeJZ$jRXI~9`ygXI zGs!2P#8Z*ub^;dPpF^IVK|ha9wVPHdE_D=F{UHpxtf-=J=WRi{3d?tNO{|w9=Pa#r8RcOv|1Y;9@G*y`xzxfnITx@qk4AW`i?8HIUkLAGz7b| zpOvG@ZKrX-IAB4+|n7fOOfu6I}u5z%xQo#xPBtB zuC2wOPEZw_(@mQN~h5C{97-e@fdGK~#^KG-~on&tu9wRXn;)zxIOs zsUI!Ia=j1b#b8*;rFe$br?e}$j4~0*xAU)0@g9+Ds%ckN7eg`3g$W(EamVLhCPLb; zgf(+&#nxCGVI=&g2ky77dpB|Uo@#XCTAiBJZfiNZb5_}&g>|D`Sxii9NXOjI2h#_? z(y=0%LnNyzn2Mj2@Yx?gatG8`sp&WNUL>#=Q2>&t+caI!{{VrkJx@inyxt-tNgq(B z4!@UC?Ot_k6r%4Fs-7WBMstu}NU9^0VF@`n3NzR50iVLHK#%4mk&t0y^N=_r>5xIs zabHV(CHMv5-x}%TQP#ETrFdWGwzq{NaD;rV<~eY4(4B(>5$J2`Ul05Y_-EnWuLhF0 za)X~T_1bcNsK?7A{sUi0mhgTv6HQfZD8D=YS3FE_6Je-L)3a@Pf0_B);kZ0UZK~T{ zcwRe;oBMf|NMnLFc@{)D7yvOp)E;ZMtzlk7aH7V8=&As(p8g`~@>}b&+siDm>2JGIxLCnq z`^1jiE_lx>jO@<$;{4{l8I+?{A{~|mpw8Ocv2VRZA(*@;_6h1m4Y!C1wkNZ z_4Ti&?zQWUJufv9v99ZBtfGuA5;&zshiC(Vgko}eX61<_lk-G2aL0dlcP0ngC6Z29 zXAIdKXCtpp)$ug(6zjq>j;%Q@zr*rNO%mBzdA*^Bs-obQ_Wes5C9)ALw^D6MQQ|R? zj_PxtQY$w42_v~#tyv>bNK>$64CIUu0|Sg;@y|{wYuoE+PT!TCakJ;-W2hqy_;mbh z9!r~>vJhe*dJ+I9l6wLA*HVs-FRANb@^x#}xw6`vPzRCi;z=6}B)0}4BpLaDA1KMj zKmcHTyL!_90K!giJgp|xQ~(Ahycx$+{{SByN#yp=KnE2JIxL=2%GrF5zvrcFL*cDb zNY(zyAjr=`e~_-2bM#+<>ca_#r=nkp|JV8w3%e+-z_bcjsbv}YPbYER(BqPM`qd`Y zELg`dmvNJTg9Ppelh+D4>T$5fHyP0Y{IoDtYGgn1F!sdQ{V%Yo2wxPS*7ao6jLw+Or5M7~<8;3mwH zax%o{1Fr+GOy`^lZLNw#3n*7SWcA{#?FbHeHK~aRg#ipW!Oz$0Q;dI~YRuFw-61O& z%MsB=YPFrjHufm41bY{Bzc6eu<%vI9FVJR%-N=G6{r>8YQfn$QjIBGC!Ny4^2OaU- z>rp3}sJNa$QZe@zJ-ts(Pk+jy)X?19wVVV6Z<0gTViC?p7!XGoIL?15+!E|$$r|gI z-euFoEZ{hfCi$91Jnjq5K>+s72OUjyFbM49GQfbd^czBh&O(!%jAy1e=cQm;i$#@Y zRd$~Z9Bm^Q@}z=r0Q5i$zXGE50G_1RNd>rN42ryrfj7=GkaLr~BkPf)mz&jKO4cnlYA0QGX%90ebj;a3%5kIa#xSeth(8h!A*h9z)& zp1r%`s7R~wqFa*J96Xrk{`&2M&}WZdSxiZ5sanyjZsjtYbajD(iJer9K=(ZIO-pk$hxZYp2I}1M z7u&9L^`^CU9IQ!ka8dFk`j;3Vfdu37tgD-+Ogvyolhqs^zQhAfySkVz`5{mT`v*As zsTiz?r?tJ9{ggChkK!uINc7~9oc{pztELdLFq1Ul3wNJ3GoMm1TEAx&@G*%?J`M(b zdwYLMTPtmfGtN1y(gi;u!5zn~M5S@1W0PGdUa4J1+)U+iR$rZY1Z~eyKBJ#Z=DG_D zD6Q@uV7NRg@xVdYdVAIX04(fg0IBPf+>ZT;=}y?(<#;P`scu%i-OvYe88CmxmTUOe$MdM=vsFEVo+D!9we+1fsf{zZJZb!PCL z_fl`ToS7tkpF13%z#8np;koDSC9>Gz#n!UqiNwzbmz|^7*Eex&^Ein{OB?}Rt>WOG z{l2v}i>7av?Ncb)KJPd=_Zv_1uW8QOo>NyP(eyiO3t(6R*vk?-*V*3;ye0nt2*!)& z+{9A$^Ab)7!!P$E{{Vo4&-+BzmwYbpr}oyd{ik;vZD*&lxcOLbo05x?#YkVg+;PXP zeKyWAKz5Pwg6k{iwjqzM z*oO=6^J6vWzZ1MiE~$0>fdL`rB3qrm^3Dm zX)WL6dDyy_e5;|z-XbsDJ*zs-*L>c4>R2DaSx@U)_o?$^k4*Yin>j7vjblY; z>CkmG>Dj%J=S}pvrxB8Hk=x-|kfX^!#mVRZm(2csYwK?eXz_S=M7OfIVfL0$HO9qN z%#1l7BC7nqcYrtw$`PlGnUSJ4&0u{*c^2=&=(Pn(l!Se^sM)hR$Y-`l^H(X zp2DM^A2@PPABQ#O`W~7IZ&AsVuvAlllfiDnnyC`F@XDoE`D6_d)HeKjZ<rz4dhj1fsOGP_F}e(Wh?+2ovLpI`EGP6br&bm)2k&+0nV ziDq~602t#qIU|C3Jeqz|6SgHe!NKT9`TEc_RF-9oe)={$@Bk`XIsX83{{S;tx2+U$ zx!k}g=mtl(0A&7kuQZb2{lan6c2Dca>s-b4#F4rqs2h%cY-0=m0N2HK(1wRSN2#AN zFY^h9%lAtSgnnf7`qq5ccMw07a;ix@@q_u~=k*nOWk*9K3S)fo7?ua8NqBMkhou#te z$!@dW03~Dq{siOc$6B#%95H8T$3u#W>T=jv$pgMPC-J1WSv;&0$E{*nunytYq>VF= zO3U*OaGkr6SM4QM&Ivf_%_P9m0~H+7U>tN5rLYP7s+Gb!##9^=&PNmhnJvJ%oQT5^ zG1~x+$C}%N3Y|G4AC+fY+baO?^Dk^3zW({``PPaC3$Ox4I{M?c<4a}(t|TcJ9A>%3 za?Dw}43cX{P?&+VdUIU8{F29J%O5W<%Dn9(+TXGdeD69T-=n_#(&|t}Y_j6)_S7 z3IKQDea6QF)dfviI&f_0r5|lwN2lnH@5qu#;*JtyS(|c!v<8Vd9FvT3)7RF$8^QK} z>2h4inDUSS4`yNc6M@Zf$+bevq@az4(m37xAeJ4DFh}TX)$~hwt@P0DNs<0zo=#6} zfH?QBpS{`NR!&ct(Km4mg)(kc1TH|x+(-kaf6rRFKGM;dSP+1dfz&QIKELO!XQV3U z9ax^c9!Irm%O3PGl2uB8LXtAxz5f6%lw6Au`S#Hm!F5)4F)KIsuvmb944{{Tu&s-uuV+<5EB@5TjX+}yfIoP6Z{-0*XfF`oQqlZs0B1d*vT6^qRT z7C?7&!Q+wsPvc%wCClFUh$XON9o5H{fta>ck0%F}>9`It)1`Krt=`K!iGW~;8AA*% ze&yUN7;lh;^Mt(B92yG1F}%DI|#nrK08Wx8()pX&Wa51NA5CPm6vz zi^IMgzn(p@tZ_KngBzFvcq5DxjtA1eI_GKN@cKl=iSLR)Upd_KoVOUs$Sq#pU58rL zk>=v6Js}d_k$G#TXs@VEq!T2Yr84g1Ejq{zO)wvnz`d3e_8+Ep`uuuZaG)PnoVkkjlf$jW_XwQ5v{FqbEC zEp`;an1b0D2PdJ< zPp&JRlu31{Tuh+tw}m6e`%)Z|KLLvL9|;K}Yl%R@mRQC{au8(k_|`L4gJV{5u?5|( zjdS8_Yg;`&2-3>dN!Tn(7DknXYrBq0^2?s%isyVnw(YBJjX?4S#m5)~55u)}HaAhv zscV{~crmTvx4`3QwpbKW9$c!Wj$4m{(GxZ{_TeH38%%_|cLH_^& z8UALnbSBM-x_pCkER#33=KlZzTG~ooU0azUhDn%*l!Q{nSCf;0&<^!A7OgKsN)lX= zl)Byh{{Zmi9Uu4Fo~e2|8P?yA`e3*}t5uB|mP^e}_@BLTkxXy2)a!7@vF(#awyWjTGo0!|8njw_$B(KXoo1l}eR*d?>9vi#GrotcYqur4>83=Q8> zJ8bZ^B;=CvIAfUM;GpFt)%Vr^0K>D=z6@H6i1qDh!Edxr94Of67j%u={iUo;B4cx{ zYx=k&_u7oHu1<26;3{+UCZqU!tX}C}1H78sRk5*kmgacvq*B*TLax_U-S=4(f%5j< zn$Ym?g>}ns1KR6m5h_arm$Ev#hQpSVa{@v8xapeoBSu&IzXRm!RpxF-69l7B)~@B_ zciSWw9nuBa{Mxg&3H6)k*&M2}l#~zyvi|_f6+M1!znJOk4~8c(yGbDV(ml+3=0+s{ z0O%sCX%aN9#Dx>c@=sth!je9AZo@d^Kg7O(=e~p+cRZ@ISFxv}+{-k&uD5d%#IGXT zT`o#_ajIZ|4?CEipWYbn#-tFcne1Z;8>$AikPP`zU}WbQ4EfKfZk+9`jRtp%OifBi z#lXC{e>wpeCRcYjau4u;K3@Cy1CmChVdk`GJjb0xf_UXjX5vhi+BS@;oM+gM2SHoM zZAq5x7}pY;i(feak9EYdh9d;5F{%eDco}Sy>7Kb2HlJ?7DBzJ%q9byJ;Dv9P0n~Lq zoOI;1W!}89rK&nBOFVK&!#KlFBQOACkVAL$6{ygxVIq+2cnY!u!N}@8I6V7Tz~g7l zQct^onffMQO~Q;)TBN@%N|VPRniyb?HI12xP);|h@J@60N$30B4o*qwJT+oaBLH^m^sXFBYL@ofU+c*9Xhlk`{{Ro`%=WJjT1{i7+u2RDylc+fe59P? z@XuQ8ZGwgjIXLgz^sYxsONi}bM>*P{5U zB7@HWfN_ui09|vM#CEz=SK8E#n~9@ab!iS!H+-rG94_JuAI`c0Nln=vqp+;oi&(WN z*52+Vk|4phlg3v#$j>9#qMT^OS(8EX-bz1^F(((KJyTF zFzbVkpj5Lgnv+`Tmi}ZjT}q%K+>B9_Kh3nO3@ZXgN2Y7I@%6g>p3de?suEqK^N<@E zsC*j%)wTPbZOGdQ5w6w3?p4{wdSG?`0PEMc?YXJ_Vq2vC`{-o}%A8#Y?Ee7E{sE!k z-5O07SQcuGL&U~OkC?(-72B4PoqW zOPX7n#tI6^Mu?KZR~b0T;*iFmG8}Sw$23haR^z8|4?NUjRgiA$?O7{awwcBFzTl+R zHZj_z(@iGfxk1~v(2^7%a(@c(PZ8WSo*@@kQ99kUk_n?#+!ta1fPMp$#d~LnE;UEh ztSzk7{E}ImsuF>K`F9X{XV(MkUKgrdNOhUg2Hp5%|hvu?x^S^0LMRuqkyHyn}c-;Jc7sD^W&x+;5>fL0 zzpwH+j}rq2f%TCqZrv@23|DXbw9oY7sdzTX-Py%^6wyFHVV3GaW83u4wOaACF8&I? zSwkg#md)aIK+`WH9eAZ$7 zNcw)P>L8s{OSwsabvLZU9!DesMKvvnx|Z?Z%8cM)S1yQt=>tBUeJchgnRM(HAq?tv zj1pP7JpLb@Xh}NC(t9fs4=1xN*orjhi@>mnokETUbyAdj~Lk1+y8CbR# zusrdR*#1=DmqKbiH9f0L@hzC}b?$?AGA+o`oJ4cPtG75Fj5!2*SCvP0q9wM=GLiF? z$sl#d9E$GXj_3Xm`t14ZwgSJ0nP{0y(PWTeNE=tQ*=Kvo}jA$b5Uvf zeZ-JVh14&a!Kp#HVW)P3ZSUNWEV+tXG0lixWvc8m{K zY!mN_n^2M2BXilp{(MwAil4Mv9=Mov_r*=9kg%xEes%tJoE4=H>#4O{xYl3R$FTf2 zX-1oHp@zdOrI7l82n2q3_sFkH)0zIz6cP(F40IR=Jv(%-7Vr(pXs#^;ijO4Gd1}qH zknFx-UgVWuz=2-Fr(Pc}2bTh27$x_F%D$>hUiaD<@?#$53A}!SB zL{BWDoG1g6=452?jy<}Cg2pKfs|CBe4jIu7KA8s}rDD=Xsob^aI}#y*P-Nwmno;={ z!2bX|RY`AM?%)?>18P7m!5A4l8TZO+}I@#`{LZWeN8_HL%(A#l>KqLYO z9<^-8AU?ulS5#p?xk~ zY&5=KnEwEDHZlh}=bgCeijT>+OOLd=$tz%}-y;E^Pow@6P2kTd35~6_+ z+5qLT$j5Sc%_zKh+X!P*pSrtQzXABvf9V$k3d0>fPJnxyb@%+Ju-RVrH=_p*w6uqMqlCc&k{0!V%kOniMgm%$rC;3nHVPxg@tN#CIpAPrsU2 z#jM!tCf??6?71>aD=8t^oM0j;RzKZ64`b53YgzEaU3mJ^{{YD{LH1!J<-usfDJTFW zZO<`Xib05TmNaKq*Yj-23Uy>96@cAD*@U7~Es zWGT2D0C*%0GQ$V)?^mU^8;8!=9k8SNe_GK=Uzr=nZzG?zgUNz8r#szH208o3>(>>Q z_SW*H+%v=;DDZe<3k+n2=dbBqTUy3L1q6S!o=$sotZ8&;B(u1*R+Dsq26ke^5C#b( z_U}zS*rnunW}$l>rNFzfVf(28iB8vL13uVpc)|4iYdS_|FL{D1SpcuG?yw-vk-7`)YGZKrZM9E>hPVrFcUL>` z(dC7V&#<{8cEH_pzdTejTgVwoy8OT0IqUdVhm&-N_nTFH9!1aOfama}k^#F3Dk1me z{{Tb!*2$Z*nbmaZ?`>KXbtIpp2nP7~v zTSB-E$`{BWV1tgNf%(@{{f})epnF**^5r|S8+HZ&A;)qtj>eaTxI zeKzJ~lJ+>>3H+WDyrL&^H za=i`*Y!S&F{d(5L+F5LwMRsbE8SC2)U4!Jw{}HUQdDjVH#0A(=dkbA zx=X82@JSxdSYrSZJ+qFS*6U3U`Zwg&o!5ls^K4o^q#TOuZQCpd)P8m5o(Q`@{y{u} z&$#vcE74+NB{=ALQ(Z86lOlV|VLTGTe~k#^++wo)8#9KQz zadxu*0A=`*%x7v&cP*T)R;DQR3VBg2;qJ+92>2XGzn)1OM{aoV~srOcYM zA=(jewB-yyIp9+C?LlC)t};L{F-jMV)J9~-By-qP9$b%zq)4 zb~1BNIbxYo02u?+b?3fLamEE%z{V;tgCP14kEgXx3Yho=E`FU2 zJ;XUkINArG^x~M#ySWGR`u3z4azM`X+az61C^+BOoojEcd z2T%5h>?!HECY}08dJtKmdHi0m09`7Y2nnB%Q-(9VvQt zsF~J3ner5ZPjP{d%dIlvaRdm`5(~1RQGnc@anCpzV~%hRITSEMolq<8UCQ|Rc=<;| zjGok&VJgm~x5>-& zz#uO}*p5NzT(#@Rr-`O}sj@-k=6CfsBESRiEu>aLCB;rMzm!U92NLK?BgKUUQLy!Q|tUyOt-r7y;fa zD#ppaIJdUku6B`-Kmctg90tf0R{H9D6kF?uibBs4EGhfrg370jy%5MBC-|@n427%Z z(?V{}`qNMsiY6Qb&IlWq2W|)ioP)<~W1MuWhItMf2S45DP6jK0(=INq?d{mw&lH=> zxZktOE~QHkn1@}!pO|zRI6HTAw#2=f1Ly7$gf7uIUI`d0&|?^5jB+q@(>J3leT)A9 zZC5Oy5W$L$I_<_!(FuVYczJ&peWn7VbsUTryc zi|0T?6(f3rxdeUEaxv(0Qr_C^#@M{okQLb38}bepC;go81`avECYGB4m< zQl`+%I8&3H^#=qVhrblDOZKla!LY9(4IbP8NAV7QMDQ{SB!vMfBDmvW z?!0hUgV_Fc>Q4-EDz^k~1e|Wl;~X4}A8}qSbu%aYOja_}v2{Q5$hzc^MtWc#q#k;9 zuSW2ms`vI{34)}NjmT4@$DCvWN#KlqF@k#6ql2q>^1g>HdUlojokXEtBju^d;2xOk z$?t)Vd-Kz+V@o+m{K>%qSyi%01UDVKXYw4J3f?f};5ISXjE}E1Li0?H?k_B}tB^vv z_9Pr+5JpCG&~gCwuD)b*^7SiytTM1k8J$RF$iN2!3&0s1=a6dbD4tf(>d2}F;7?p& z9l+<1dgnN#k4s47cuz65cv4pYl5jc5$FZ#hhy`8aCjoiJTLAa(`BGyj7~VO2rYr-g zaKy16CI=+&qo)I}C$4H(R1jEz{4N|3O|1_1++)QV;#+m;yskUht0hY(DsaS)O+tf9TV zee25nU7@a{X#Pn507!@DjC462N8?_+%5liY9QUk!Ldj(tiu}W)4r`uCr*v$c)sLF= zeNtOXjsE~H8|7>a6f3|acl<(p$5GF0LB_j`c9xPt^WYy z-sO*&F~YY~)7Pl?&1(32P&WtcGEISi6cLcio(VnhI3l)Mu4H3wS7O!lJ03aR*(HRo z6i3duFp_ zE2m7d+^O>BI0RwX_5&Hm=rN9Jqf?ejXt_g~aFz!H^}aIJrqdfw*R;0Ht;SWH zjDTA9T<8Z$Iyep9gh|GUjWp+E2xJI(Xh_AMhDCA6$Ey`ko!ky@gMz)PC#R$^QVsK6^XB zduV-P3*KA$A6e`A+&&)DB-JOjy1Gcn20KWM(wz6l00G>R0QIkwynXR&#QN=x&4spy zWo2MaOI}_?*G#I}je;!Em23=@#GQJcr|cV>OKZql+VT{hCc$XrQ0R7$MnTBnfJePY z7MZ6*6G08EF~;gql@U}GJwX5tE9$cx9ZXF(Nlwvf&qVL*euvIsF%+o2X~UWM-2A%M z{8_FYE$l7;g4Ss_Ie{At%fJP_=P7Ytt_2aMk z>s`-=bf2^CNo`7){$!M|;g9ely64*(o`V(Bgr!QXdE)MlnwX7jj14nJv(tfCmvex) zEy*9yR{D}aAP>f>rSvhghTyIg_XM7lE3Bi;RctpSkUy<@(4!Qrj%QZv|Iqf>G{w7> zZW`J+L}Q^{%s)PdJ$dQYx~q6%iAjw@hB-JJN99lro>&?3(Rt&Fon$g{IA2p=l|@-t z{T5QYB`gI~no_?i^))NVKJQaiNEyi##AnQaF89gn$GNUnM{CQ|YX%w%cKz#P<#~_H z6ngo6N&fL2!N)_Y&vzUpEKoJXpCn=UMP~jc$2bF%(>TXcDz1s9e`Z)g1k!o(Mx;D} zcJFdYX2+`>l6%zHcQn;ZHs=@w3=HrxdRBbQY$B5W`J-3@e)UM)cM>tk86b26X(XOK zD&5Ncr}rBG+Q2iCeo#m7fO$CY>yEgq1y$6nXsn=hZ-3OBbfnp&5?hq4=F_g-n%iru zvw53YLx&t~Y;ryMb821?b z_^Q^{uQP!$Eu0cZALl=fb?`+ZwZ~z(L0mnJ-TMvc zloOb(K3s9gc?L=A_ecB-*0jY%(x>fat=r7PjFnoPkv(U_+8wus^msI@TrrGhNAB`B z-edUm^cWqhZBPn-PPE+MWY^8zw|0F3Nh=}w0=O?6c#aJhPm$&$%ZYc%&Nm<7Kz+|Y zm37ybOKStp{{X@`9;EaiiLaRaNvJ=G{7?2$#!C$`yxH)6S#C-BSFa&@pJ?*IQdhOduOe7mv(BMA3rjb=mMc40_scu1QG{F; zX5bE3j&qO3szn>gCQsgW?t7nl_WuBd9v_NZ*)`jeJez#OZbyghG$342A@+&g-OQn#?A}*-dRUPm< zaC&w6{u!I3T36W1vx0xHM+LeF*f%@5P!+it8+!D|UV2lZxx9Og_f2masQ?< zEs*no-pP2Ua8LroTzSj{cI|t0iJ8|{S zKdp0?R#!hW%N#Kh`=d~*HUo?^e8guxhB)Jz=~74-pR|y~4hP-`>+AW{y9VYO-P~S8 zUe3};-v@>OG3Tc8al6!KisX&Y#HVSaNUUv`NPL8OC1TMKFlK1bs+ByQrw2F(jGsqo zV-f9)jia!PFW>+;s-J0vK4~yU4mt(|^Xd9fq?bVX5Zb`zIOV=@E&~4ZV;K-Pq818q z^;)v9kvq)OyvSozSTL%pz~sI_-;>ad*Z>Rwd8)5(9q9W)`Q$4NrDSCdj-w0P{N&Rm zo=8+dEJ&F-U)`v152+x2W14W)=qX;qwGGc_Ja7R8!yysMaQhpvD!_)vrfUNJ%XCKb8q?6_^467_*dE82{Z1fy#Is7qRoh__! z%z|0q@|(+(;vvv6dTD^c(Q(F%K&)jR2{AQ zimM#$E$Z7v7?McaYd9N5%y;9r*V?LWD2giPqC+j)nIstg5X77Tj-4~X{LO1CSlXu4 zZSJK(Am9)ucwC-;m1#< zwRXzM599X%x9)LVd+20ALf5o`hESg%xcym!4CXxpL)*!79HhjAy5D_32!uyn^pg`yIOu zB@hjxjE=4D4oeg7TDQ{+RPtjWM-qSspdB$?_-YoWkYxHn5j)9=1pxKowSJ2TtcncRijq@KFZbZni_qJOow*qBy}?K zU5G3`QaXPQa_xE1J@{ms*(aUAC6W0};rQX3jI;7-R$fcZZ0H|PH~9Sy4~_FW-7;U0~zW) zyH=}fvTv=CC@p(^scI)LiBiTT9Y>V8a0WlTaw-^O4=j%-cRc5S6N)tLLOnY{f$pxh z$#h;)0Nm0vo0$5X;EKq5`&7~{ZY4Pf}C=AE1%2Ln&zssNVvUjTqtz^00r7hF$QbZd#M{7 zv7O5TdGE>fuPdJ6?X6^$cqoMApW?^(*IDrgSGuxTwEIAU$OMHB?4AL@3)xf-PJ53^ z^81^)=C=^YMqSh$zM1s=D;!tD7#^-z++60mBe1dt4JmMT?TXJ6mRg5C-qx$h$$us4TsEn(|xQxe1OJnUN107y0_}`B%Q`8hm;$h4e2AO?IAb z{p1fnnnI0$`I4NHK2AoY>w2cqI8kU`)h}4}u;YEn9_h-Z#i63}|aguu1&fYEX zb@C~`Wtj8==g`@cPo!^M}=TKp!^Eny60cukTj@XS^x zjCAfc=j&d7t!V9~_(EH|%_eobp7|`2`bm%wEu%3=h9z&kx)vNRFnKu#K9}NArxD>D z8SgCROMO+Qka@tVL}MW%wnCh9+>BNS#4SR~<}VKDc6XN7MQ$aU=tAo%wAT`bcFN?B zn90|ZlbW|iNo%>yQoJPX9ksXK-}x1$&~-gG;qC6BJ(ZZ5t>U%w%!RHMV`8K!*}*R5 zFdG|JZ`P%cjXY7JcyCbf{qq}(Kd{MWfyq~Z$ULF9*!1?J~>hzDd-Ay0|BY7lypVzHu z7!ehbgEjyQl1Cpy+;^^7;x6p2b*!~TIXNvquf+EY>%R=xcp}Xs)NNAk-pvceY|7J1 zF2X{yCR>RKByPq@=~4Jg#eNmg^mf#4Z|)82Td+3Rnp6x4U^yiL=sx!YJu+*^JeXC? zjR+v{i;1GsL)fAQbeq9#U^vp4TT?jt?A^*O=m$Lm%j5npN&&l@Od1kLDZtM`kUnAc^{yOKa!p63zt`M%VVY9A>-~PGxLCy4Tpm67 z#cw1ogSI->J*255Yb-=MFx;%Y!Rd<7Uo_!zR2~oi0It46Tk3rbt!)Y1@5v;A?rKHc zI(6%iDSVU#MhhI(=;IrA;9+{6{{V#?#$Km8u4!M}77c9p4UoyW;A9@>t}4!jqrsxs z$7u))-SB#`>(`umR=GPy8)(k}liI98sDASU>9?AAKDczOhiVie|eS!4hJLaT2ZGd$wnm3rz+IqJX5P*Hn($Tmor0cY$D#U=Z*N! z-5DeBt}j-O)Lp|4*yD@rjQJxWi!mhi8S9+W!#$i$B(ZsBUoJ^!#^Ki`PIx7_AbpuS0HPhw$L18ZdWCM~&Br|9H=DMq8&61!Bk^}@DyS{F@#tF#h zKKSCf&1f0z) zfJVe~)1UFKcfy}%O$ORo6{VHc_OBbJNpkau?CBf&VdR~kBENRdJbq^6-J`fF-(8h!Ucp2Q_5A*F_#tRunjW-#~tL}X6 zI*m!yPAj55O}CMf#4M4hh36P2o>#6%J*$1Lt)f|qh|zf36Xws;9r0gbTK>#_298Br z+pR`*4VGq@Dz~Q#7&xx7AAtV=33RYc){eIkh6=Mubu)!0yA8m7I@Q$8u>CI1YIsVi zbUp$%D%Wc)vjoEYr|)BKah;&c9Ez?}pzAbfnxg4K?=T z9&8IJ$mz?I`h%ZJ=~lzx{fd90={8o#u0G@uMxgx>K;t>>SVKC5ei$=JU}Y^Fk@>l8 zsA@X5hucgVUG2Cra z8BQ4dq}4oOG_sb?$Zatm2V67Doc{p8e>(ai=i&{!Cdi%1IRguTKRk8%S3f_C<+x+J ze;CKj$;VG&S^a+#(c9#LRO2h?_3qi?J~8-DYw+&EE4?oMOQe=mk^I=zyrT&uw*Y*k zFg#@Zr`Dj+=d`)J7lDh$@t_b$vDF5wUJ^sNmWmS1$J_*;$C}d(F3?dz6OM7f9^JE0!@TmSf3NxcD#`N{ZYtdR z^gi8d2_t2o=ZZ%8q%7GzO0)j}AZiIqqwFEe}kyuC_MtIo6u6f`tNyS-G z7ToQSGlPtPMoAq`alpqt>pK^4SS1Jxjhnqe^!LFujULq749>DS+;D>g`{bXe9jX{M zu4J0vfLnop5Dst#Nn(A$>snFC2vI6AloQ4df2~W4TZ%GF%v&i<#BDV5JGSq;g;Dvd z5sc(ukH@8H$E91xD@r%B9!p5YnR}8s0CVk93!8Nze68%<{KSsFoMw_{wv`!fEua95 z^PKVZYKF@~JT~f#C76}u;5HcN+-0a(96s?QZwG=%>B$^p80W4(8d#dui5ANqTOj#i zNgcn476bAXacrZF0@}NIYt&d@2FNg{au zc^LEf=BasZazgC@a8L9dYeXXN`P`7Xz!=7TNflC83Z+s`eL4PPBk-caT9l?h0Rw4} zbq9=oKGo-c5N>SkJSTcCB}Hk#iZGu!FPz{Ej==NVt`0DJT~b)Y4Gp>5Ir&hshvfIc z!2NOWT(+U%NVThLC^bfDMYN)KP!Sc#2MK_rU&2Xov2ayK6T0R3ae_$yDlz3~Ka%V_&-Vlqs!M!~Yn z@`f1sSoP7mKiDNWkqJN+1u(+<`CEboTQDk{LGo&Ff;eD)ME#ndIp=~ zHq?I46{^hpTWsvXSl|M14pnm7eYgh$HOT22Yk03!xQ5+~1IshVA1@lBkTw>`+5jUQ zbLpPGfuQ(m^4deEU);v2ZL)Y_PIvXg7sgK0kU{pSgq`-#(t?|Q?#8^f_YEpMDIb>K zFV5_zJdk)+$KnlHP+m32NShg8a>_oW0iW~Jwafi0QMrLy8;f{AIr+hT+d;;D=p6h0 zH9{ETnIj zLtI)t+_U7yg^CDNvijigz;`_371^{AFo!90C^DMkre{SPvYDMm|Qk>~dMecRkE%+}$OH(5NXSOUn{a=AZyl6l~ND%*oZ zmrcBX^ig?dbrB5^Wb+XT8RKx}PBDYqiqg38L=aocd21h+JZ#aFV!KC}30Vgmg)7kX z$-%+rmACPRzO(-TY0W3vV~BZWcvUL=j)SgOt_^L=7pfe+ik;s3oeW+TI$=w_Dn=71 zZOY?r@J>er7}b@Z74x&4U9b!U$AQ;H~B-hK5j4%Bl*{_WC>zr zzz6<#EW!$-S)p%tEn{z2#AXNjQ=aHVA`}WTjX^6(wz$d0~e;Q&S z^A&(##0+-p&p%2*J^(Go;hZ0C`RFOI<1U};3KF26PFI1SM(3U?ypl?1bY=3DN~|*S z#hB+KZbk+MLC-inDcz4^+Avls#EhOZj!El}rCG;*Kl;^)5|*}&w=bIbQdhnQ%b$D= z+!A`=@y*3IEi7eZSfNa-p-h+DeqWz=9Amd9@WQx@tP5~Pa78zJ4l#~!bJ%}cj(dc+ z8J9mh1q?bS?g2kjz{hjxSoar#9Ds4a$j=$)ihF^lBdFY2j@MiiY+#O^F@QPej%kxm z6DS}?SRKQE@PWx70y)P{MmpCCb>c-Tg;)S^dW??5V?B>vy?-hV;yB06zi?(Fj>KmN zuo(S2RVr_wxzXLvD%?kNWT=RQY!S)`5-9uF`LGp%#|y@D&r0R*mIP~2cB;}s(MUqV zptFzhH$U+qlff)n^4Z+}Jj(M&f^$3|{^2#i-m0o|ir>1%BpP@gEPTJ%}M6t7Ea0nxg zy*~FMpCcDKM{jJl+FX%bBD*u4vLs^)Jlti7B%PtT>xIvttuMC8a?2Dbu||wUo3PAB zIOs?lh8vum91+x4pRb4%KVH}vJ-?;}EE@Wg_kjNLgU3Gp)jrLQR6RC7vcleKqAR#1 zijU%BlgbwKMpIcwlmQ z7|sPA$%~y{=S{6!Ti;npYby|`6G<4(a8zLM26N6h{(XE}>7LZGYB9DBe|oK%30wtM z&I!j)!`8cp@e+NcMr2_luKpB|LXE5o0fB-+=hu$laegDXhIEeahLus61;XIt<{8QS zGoFXmrP5_aqS&r&4YJ7%qalW86CqZ^AUbSOPmj3`t)g!sLba>`sz91N3C%0QLO8&-pb2+(O`}ARZ6lUUUBd2?~LY0dfpO?#x?+}p}jOJ^}u-N-3`LHaN}e~o)x#bT%AAmk3Ddg8p7K=Fvvq!zP>m05yEutu%+I?D}K0Rq5`vAQ2MQNdN@ z;O!^3*BJbBUX7>fkzL!X0t;iGuX_2aT|i3SdrCtG*y$Rm85qgu5NXVp z5#AYNkf8<;wOk#3dzkd$G7uan$rQrc{zPkB!|_*PAbhW06Cv z^}z&t)Puwe!QIHOXO`&m`K_upHA`zvTG~xIg60Xa&!b92*@OM;MdQ()H7M$ znPiQU@)i*~50zL2&JIDyZmLIrrF!-DuN=wdqjClqSDW~{<{d)Ouh4Fq1lu}}vPap6 z2bKIi&uZnvuVptzUkljisMSbwt_{RhSOLdFwn4!M zjldp-s<(=4E$!|kcv;drjq)Rg1P25@GDskn85|x5wRI@BFJ&$IKkM-@mAQH2^IzBC zeztrf_?KzpPY=Z$vWL94j1t82EJNiF{_>xd{rT@+yY{&2@r&U{#cSUOYfv$B7w;E( zzIKK`FF))^1`a<1!8Q6@qxk;EThpP`tmOtdmpCM4SannG4SoJinL6~jDtvL=_^i_a zsZ{2N!p~CiHjAhDuSL4iZ+KgXW{p^NMwTawaQ9H;k9z#}Iz|4Abac&F815iqj1Md} z9ldeL;D9s6Iu8E;Yg+h~9lrf?zANzNfq$iHTCA3fJ=>7*?PdjDLZO==f?Fh<6O3SE zfsY@HGDVJ~?WyS~r}NwVv@yb0bnh3lJV#3g>C{IWhhV4`7njEaBc4t_8eKxm>~m~9 zqjEjHj(d*v+1hw=;%zn?jVju5v8p!Ru6UE~xZE;B5w~z4Gb!3QKt|J%mQ$Q(miP>Z35%tU_EB0%U#*(AM{Vz?;koNa6B;Tm z`gJ@SYj|IWP)DJxne|wqnWDs>DaQ!JeuBD9TTi>u@2)i4^fBC9w#QTa$FUrP+#1AW zjn3v!N$x#1+Mc44dY}K%`U#z6kVa1IbI()$O-*rjAz!ClR2EQ()RJ=jv)F#L z`;>OV$JF=Z(;V03S3g9tSMAY8c8n{LotfvKQP-_J-an9KD}%<-$vpb-G4D$SoObJ% zV(xh?eSL?eX5ZY(8DW82a}Y8IbM@nnriXARwr035Ba|{nl{-(}$53;Q2OV;2NjkRVDo!v7IO5-N{HLG!-TL2Hk`ZTpuorEDy7`)Wm{62clntzM%2$<2>dEZ z<%!W1SU(5mXr|)(wXoRp;T;%hPPJIP+uXSCRJzj@F zrp987BNE$sp4s#jzN8fuhixdW_<{=y8SX9#5!m3n zbQATCn)2thOSu~A;L0RD6KaJX!M78S_zik7YWkjiM)pPT0(fro#G3RP zWK32ZmYM$mx{K8QT|G_*di%D*(hD0%t!>ap6ezLAo{FOayvyNdgyQh_gqPDqW4pgq zl1;~RBz;kHwMfW0BOZYCuTm}kMR@r9ORGCAk?CM?{?0tlc07_!O+&cn*igitwL?+6 zTPtR8M)Shw)c5>4*9&KH=f4pAK`oA-Ahitg?hrt#GFswKl}F*6eREtUm!QX^=_zS3 z-E!HIXB_U4`D4$&1K0|&rmFa(UYlK%H`p}BXe|RCC7Ye{V?6E70moDATDqKRjiJ~x zbH_QaQwvGPI_`P(r_AoQIYOwYKwdz`eQVCOX%gc5${~VB!6+4m?)e4O@zbSs9wO8v z(k&WSWh3sO?p*Zan)4WS5i5m_Sd-O{1KgVTFp+|M@|CQ3*xAb5u~#~M9?E@FQ;SQ6 z4>9L(iLza%o}_~tU;)>jndZL4(savhBTKf@?Lk=KK!czx-^9lq*yNwD72+QWG%J?# z{6{KnE?OHh+~rq>ez@d~zk_<$zuSfphM0}~v0D?@rj~oCv&r_cC@C0CEuQ<7WPr;P0V=6bTw{aRBp+^nDof0#Tv+>u$ASF0WS!=@q?Qjt3_8B*9eIdm9R&%aC#Y2sU1C6*ok z0J@0b-HMI5P;dw3$p@`XrA4LBy7Iy$EaPtcx6BiPkVbgqt%?Fhv7-nh;>;fDwCHJa^jC?zusV~{e+e_p?ZIVGMs zT|p>~k^SUvZokY5r*UbgU0la-=oUoeNQ}r(^yFu24`M(1-N_@F`4Zd5bS4p}+-`@G zqz<_ZIIZhjC?JuVB?EE(U8*}sT0O+Sn5UIE!Tfox5H{yMKqa`&G0<^X)t5q`bNAO5 zV(494`69ssq`{LiTscA)Yi9yABm>=!M*w`=+9jNkKrU{uXPcA9-5rPAY4Km`7j z`Jd(aL1V`NR8q*vvta>pOS5#^0rdCBrB_oEFfL#BWSKrgZ}{Pu4hoX^JXdUfNJf;-da3_;NSuN ze_G{y=8|p9c+UV=eg>BFXEq{N_enK*RV`N86ugpTU<}}Tk?C9xqPLMGt!O;f5fX?Q zS1#Ww_WEu#q_reD>lqVpd0|B85lUuPI>;7o~s#%tTDW@f%lbIwto)e zKA!c-UAa}}waw|-Lzd?mrs!I-&Mv1gs8GRoNE;6Q4p$=^c&A-xcakuUTiDP_!BnD2 zCnubrm3XeLEH!yPRI{Cf1Ca4;%W?hS4*+`AY|sn^Ko5cVQp^5;MkGkJq3z8+-Btw&&e(g7O z8s;zQi-VsnAm3?BXJ#J&KzyDIbE?P0q(O!fR%_02@V2`_#`1=0_J%u z_1ZySpO8I>&Iml$nrqXyoLQSAIX=LD`m4B|;?uNr^GQLsaV&Fyc^Tki?|vQ4cz2HV zC$-S^3DExa(8UoW2YjbukUE}NXWG7>FM^CuBNZmwJV)%wsL!hSmgS@-Q!L08itdgg zRx!t_f%*H^=EI`+FUw48n_DEu4J^GXS8_}%^u*z7;-I>b3{&8%w-wD&U^Ilj8skE zr;y^#lHw7rJb07Kh62+e2OF6>5_>L9ZA;=CT}tms^W_T!4EIuj$r8jipaVH1vm6fi zu2Rm%_DhDkhShKr%R{+CEVu+YQgMX`-1~aVr(2tiS6R48V_S<`bcrMb?>lV_Mn37r z;gAk9p4{U&-c~LW(9ZETs|Ke#OE=2=goLREJe+_>2R+aDS2WC#1XouQ07+BVKApe) zT=b`EKWLihhj2+^a0zS$_c$cuxvDV}GZE$zyp`#m!#VHMy>sGzJ$fF#2{lb6_Mhed z01fz?noYR9)or4c6syUH^FCDwpF8A(oCO5rfAxmfiZyLY?@|X)nmL-uKF*ROGbNQGJ%3P;OFUz zEJcdW?=IE@0YS$nuT#h8QA;#!dvP?3qX%l>cd_0=g+ya+2m&M>Z!92vcqnyVV`X#Y_3+ zk5AL>or5G3NZWgfu$=o4tUnW)@#_m^D%+PiDt?&%064E?)x169UlHnWJ(q^{Hv$xb zA@*qo02{eGa86kF_Numj1b!>dBl5gAbc_jL(@6{%1ZSkOE;#ib-qpv9#8Pu_nSJM8 zUndG&l3iC%nZqPAe4}_?bH_OxRC7OSj&2_fFvQLhV$*=X@CeLUjloHHFeR8pmM|$&KDvV#fGTPXh1 z@l$PPB&-%gCwD@n_Z-4RAc zPwP}|E*0&jn_&{oE_W~)DxB@Z!02qA{W&IS%W zyYrg%v^&5ZG3j3$kD%#QeV(V((5j~kkYZi?c7-_ZGoSJ**np6vsNirhngLchIUe9< zrayE7GoC#wj^({Z2!j&DjxqSu>k22$^5@VDarhdp!^=4bgV1M!MOyPn8F7FxF^}=$ zi;0Pl!yn%D6&}IH+<-Ha*P4{gg$%tp$4)8@`2d^~*B}0>X^Q17M*b}_%HsazNmy5L z+BrW#UI(j7bE<0>8oYnFGQ25o8@6}t#^oRaLB?~~ahmIVYp-72-Q4(Y4=y-ImLzf+ z&PWfBl;n2)79P0byzfxDwzab|Sr;=)CzTe^%n?F_mQV>ib=n5rbLcDSGMpnzovmNx z{eB0Pj;^&$=!YbsrFiYGW6h+5rW1IQX6o2(NC52z>U-8T-OAfvU98U`c}pe`0z2du zAe;)=v`HY_bRvx-v;+gRMHH*Wjb zImSJ6p5H*0m+Ad~!~XzU`0b@rl{>%dZGK-Ml0$YDD>zE+Of*U|eoXFfl=2%L`OY}$ zoGa<>CP8ltM;=@@?1Q+j;zJ4(p-gC%VR0RMaUN-eoK_{Mb?^-HxNjLp}U)Pk*wB;#9ZL#0@X87qkZKcyn zT*-4jN{*le9CM6kp0)0JKaQe;0)sEO4B>+G`ewdpn|SczNfFXL?IUj<=y^l;;%bYvh2Sj=&3w$Ex^K}r+k+<{z9`G#FMCz6{9|GcLDPT z^v-L8vbQBh;q|VL-%ZY2*A;_NT>&fZiS6&N#KgwrW1t^&0iK((0H-a?!HUinRXmJ> zPrn^2N;@)x3Ne-2!0l6}m_girm7hI}vgnG-IxC=p2KmNwoB{P1s4l+R(}gNRGLxMA zr2Rk0tt5r*a~MG*vlF?`-Od05j(~GpiDzvh`LY%Hd1AzVqqS!#w9R8j zJaq!J^y>h+ji_bd$e9Q3oSbvl*0e)R82cGXraSlz;b{UI3VD$KbO5~tWy5~tMfnyjJxg~c_3{Dx#VjS;s~Q`35PzM ze>!)W5n>&_Ud3`xTocpzRby=^#@36T{{S&R`U?L5KgO)3u1kLTbKEfJILBjIy)`vj z=sDj`;ee5foB@UYYz{vR8gk7Xg+#Cy1McLNABNtzseZ&5kKSc_fVj`nrf6b?3zqq| z;~)}o^r&v*BmV$KjzHoB4UhtWPv_qPuDsFz02DFgp19BGbNba79A_4ngOpMnM?pNaCS?HMo4>gYu3u=z9MEO5by8&*iL6?d;4yGtgCMwJN3Njx`O_ zZg-!=w8QSnk0+xgh8K^r+?4;)%>LCRpI^k-~xMe-CQC_IM`9 z^W)kMHl{lIbDn*1PH^_f!6d=#2>y7%qWX%)4crn-ku&lS{PQi1yl@C(`qd+2XZE+d zXpFZ^o=lRM8aWv~3oueZ?b^4*s)^^!&vPLAzF5cClhf(`LuIiD`x+Z&e|C+c@| zS8%su$viWnPosF7RJDyHYhNuLM%*8ni9p#szFzKY%uw%*oRRX53b%8#kk++Wfvy9~QuP*Qv+&1R^ zWP{7ggoarGY@lJe3l1{5LO{o_Zaua*ZC)`Xjq{K?Wd8t>^sA?Iz2-z$y0tI`oQLOj zUUMw>-N((FG|&HP!VY7^Y7_<60{a;V5(C>1-m5_lK~l7IUCcQy6gaot(P zAZ58fI5=T~c_=_CKE9uYeF>~2^XYd`*laVjY!E-)Vn@8 z{?L-uTIrF@k?sQwH#s1-K)@L7gNkvd%=aA%{gE-?AqB4;pH#1 zw=QcoP4-RTgXJ(`j-#>ub<_BMRlCv6zY0}$`rv_pYP8nIQ1Q!v8BgP!)gKK=V7xFl z8}fv9$o~NKRa24EGJTeW*83kPJ!Owm% z)7HHEQwA%Tt{0Ig*nKj&?essTb~;p-S2qbIyd)MyA(&u(?}q201aa$LPGL{&Bd-fR zd0Dk;mjeDfsNoq>6LSy{0(d#}!2B!OG<`@tnHNloQeBu+or+HxBRuClYsT#Cc8iOt zx2z~kk;GiFIqEQa^T@8B!jn!CO zyIdj8=pifB<l-61L{(IXrPpiZ_2LnBf;EAdXJ}55ymTn zJuy?^LNsA`Jmc%$fEzNN3Vgwr1avsh^sM$&jn#K~W0CUo8Rvn}W3^wCDio*~AmsEp z>&LEZKH&x%lA(dYQb8E^=M?M&v6y0ZWIKo(PI*5ssq56$%XtppnB&*dsUhT^S2-u1 zbNE%HEX0wK)B*iz0w!kpwy%FqY0SrHL?CqJ`cx^5l?Rc><4^L5KAeg}BvYIm=jlU8 z{SO;`4@zpL)yHmWN;lmD0Q5fe0P^jgdF{s)3(2_cBR+%q=AVGP^!E3x`D6_wh)-dF zMtT1L3J{C3N`^4ycNJhjBO@T>5$H$KtWHsaO4u7g$pd~z2LNE?;2xaQE%vgQ+0kTO0|h6Idq*~#NQ zFny`3lVXN}Rmoxo0OOBQSN8+T5QGuDjCCB~k&dGupKi5H z;QiuD5dp?_9iJ!z2cYEi8RQK8D)!Bc9G#daARZgg@!u4AjH7pR8^Ad~GLF0-&)U4( zUDcW($9@RO9M^BE{E?B42s~#TaroDVc)E7yZa@Pc{c7o>8?zdcYh#4hd|mc;a$f`< z$G;w@6~~{52%%$H6d>q0>IfiXAJ_i?t>u0?)UHJ0*&At+K^{oXHxM(A#=K`#)|*eh zmdOnA2=SIOsLnt=HXmB|@Y#E*9%OknaeT6|_4;`I3KC!3bDp%%_)n8}md?ZwPVD@n z1aa3n{5yVs8jll7drkiUe~1478>9XbS#gX_{{Vki{{W5F-`Pyd>!;ag$1!c#l3_sO zoB{a|NT7J}56k9{P^9OMe=d2ijep@Km(p+h`ak&HA@MY$wBPsifAP9Mve;u4<4p>`G+Gb$;U(eYvXVDNo73ZZ~OYc{BD>25?M!SzwhYd{{SJ;{g}h+ z$Jyh@st!cG53NYQ5F;aZo03L2uZut7CYKn*-}m%?@e~gd%s2vX`})89ZjbD?A6-7r zK0QtfN%Jm9`MBq)`k!BO>seQRI<~s`KG0aH19m|hfjIzy*Md){wS0(tOEEe9{{a2| zU;Z~uJ|c3#h?^t+ny>!=8>ju0!|S%#`X2Yii3F{Q0YX5=dVjKWo<%_3GL7@PQgShj zccjjk>+*8*kh{{VjKxxR@10ME$(0Jh7={z9ewl*jes>5G3IM{L6q1Lpfl`pm!lYMmaikPVTGoM%7l*RTEit)Z96D>FG` z7U$Rv@d7te9&&(u*4lOiaF@ z{{YV~QA28|>#>E#-Z=A@9Dmy?uk7+ZxP5nH@giA&d2*sHpb!;->IQH}U~|v&?Wq@! z;c!YmInFbTWO^Q-m3(5Fzm^C?aulxI3DjVFe(NHhn$pBeB22jiaVn0zdGhnmdVf%1 z^~3D(I5)Kd#vN>;4n8=Mr&QmtHeT6Xkw!*Wc2vW0f5aGuQl@@Eg19 zd&CPW+;Bk!W?X_l?UAZ+Nofq8Y=3JF{{UUnzx}eO{g)=SBkRdC>L&5Dampl8cK-kn z1QD?JFNHfr8n*HV0^b39sK3b z)BRO1?5WtV?FgS$XrB;+Tck40^KJQXeLB|p@yc})bM>!{W50$b4ua$mazB2*{A#p6 z;URDC&;I~_m;V5b*KI5$lx-uLc$nVk`s8@#K0uSNzIm)`zZj%53xs@w!5QP}UoZav z!a~FNXa4}d%l`nz>94PEQmnJ!{{Yiv{{Z83RKWAA1w3CXx$4^PuM`rIZr`|@Efx<# ze)N2PpO;$bw9g+!uW3zTe=qt(LmTt+XS0ugUb#8-ubwB=Af6L%BHR@xBlpXYM{)bE z4O50&TYG_XAKJr@`fiv$zw*cY_N#bFN-F!IEKF3Lwr8(g_=Rls0VJO?s}-3PfJivV z1p4&{*YU5YJ{Wvx{>Egnxw_wFa2F0+AaR9$PIHbMJo@r6Ujtp;TVB5TR^%PKPTACC zd;aM3sjRgatW(Q}?L~KP0jE>9J#qV?#dOkzN_8Vv8>0%fAvij6*!`o>{vk(mC{>p{ z`q$8Y7x4$$0({x8$Pa_wHMqLCgHL%}x0W6;AqBREDU5&t#@|7~_9nkc{vTe;Byo~^ z3i^r|j&*bAt5M~4KE=^xMS?h?P>6~ZRYn4+-~a~z0n)maIT^1$@awZioY$blq^)*F zS{#iY5An0YvR>Ii;(Hi_J(99r?H@Zra8=K!LJobKJq3Kc8BZhmSLn6E!eVr|+vPHq zaQ^^wsT_lz*sqdxzlHilnzhurKZrEgtlmP=MjD8YQpR}jf zbJ@V+lwrwJrpN!%`Yqfb100^z>|j+pSfpIdaM@<*?NiAhP)Q&Tnd!-|%8~jjD_u$z zeaXNX$2C$nN!f~g!ZVDoOrCH(NEEZf=Wd9eSYY?Uob>lKQsOC6B(}0E62<`KcP>8y z4Gr~RmGmgAq3_+NOO!4OugXvrLye;!H+<)(H1x1Ybup;Ck`<0I1aKGK8kQuqn90i? z22OAX7|G6MtKTfseX?lhQu|_PAt|vy!QHv!&&{4j1#Cs;%!?!{(kl=94ZgjGK2j;Ebb~k^V;+F#kH;saX2)!-%)@H1BoiPdzJqplj-5K= znrd8xy-Px5UC|da0sO*rNzS(DCaM8^xd4+;*aH>Y(hZq^o zI(nYf-C0_!5d!!p0O#M^=~*^0Na1IF!I)t~bpZbWjcPK@CI(1R!T$jDR8^^c5G7*& z0GJs{=Nr5GRJK;;BFx)KAY%iN20P}6BfwFQOnUKF+^l}yr=?<{-c&|p?2 z>_oYeCnq1?>HRuYyPansuK{`i)013=yRLnj-w_gIknBJKY!lppo(Ed>)LK00Nh6ik zE~UD;`!g^r3Cj`CzxVXdEu}4NHx`xWX+X{S!O4rx9~^rk}`dVxULc#X{C6r z;1W$V%n?F?xt-1c`H0CR*Vn!f@YG%y(P6NU4JrNQ#F*vfZl~xv4`4m>%Zsne9XDm+ zsdLL-o1IW3o_f-gj27}4e%?%2>XH8d8~#A^ z=quGVd(^eHWi7O@B$LJwdY|e40P3%wblbD2-`#k&_ZXCzEKu+k1w6k!-1}z((AQ29 zkF=?-$mhh=<&C?W_ESNkY0zo5!-xZBYO|~UGQ8%_3 zil^Ni6x3I;{cU~!Y5dX_>L=IlFtD;L=og#<4r9eUJDH<>6z$XpUn(xR3#BPy{W z2P6*X-mXO$RN!Mil)47&SKd@@9UV{1G6)0{)AaYM=>mD~@%`Pvo=+qIbLrNtx}E?e zlgH3g)dB+=4yUaH@+!vz$ty@O27CAa04AjttR!b#1IPY5!2D|ZfT@Aoic{0v(Q-;J zWekW!tGm;v{#6WmU84NLH6Mm**^@cJ=t%zn>r~1{2fb?w(n`sa;GV3b29slNx5INuteOM@>lG?HE1xhW(2+ncVtvAZMjW7u}F44gx zlgB^@Uj2P49GL8c5d;BLWYnq-?WFTkD{+?jMrol|Hg{|R%MZpKI>-|}FCjvE7y zaqmu(dvLALb?;70DEWCTdgr%K!lIB8RAhh-csQfXPfdrERoX`^g9GuTD~8EA^#1_s zQ&^nfb*BJLk~;72dov z95OisgYx4eapUj<>FHc$!bv`=+L4ibm>sYI%N?pz9y$Zb#cxIzl0-?_HgUS;?4M?W zDC5ecBQ3OmHi5^?Gs*4Or=@)P@doxuF7(|Y-9j{m<;FTJ0}G$4F!cMi?%LGtbt9r+ zyRgahQ$f*|Wa0&azj(tsUL;E-UGKrPslTf+`JG|?xalz_=KRi@VKEkD^amOyK z&yS|M(d|QsqmE6ks=NYQsc)F)j@c%;Wz^Ce+3x0K!EY=ooUj8JBRxmI9V_%g$Ka2` zEjjTnjc+pmU4GSbJb-h@%jR+b_V3=b$Ao?rY2cer4rxGS<&xbC4_;gnIPIJY=BdO~ zn_RJf*UZ*AT+-G^{N{ab6rH42S7tvh+&LH+=nhZmNvAHX^F7X;V|#ScNOA-&RHJm| zLFe$V(tC99O`!tYPPL0^4yHJi@D6d3I3G`Qo|w>+U(qe&XrPH#aLL9O^&IE%u6gkT zdZ>Os@aD107g-+xS$KcqE$XURcyjTfe3xPbWwVR`&PLJOk)KX#-M7L|ism+3Jq>Lo zn&IDklPa-S$L`N05D!e`=bx|JlK7s@mmXMg+jAD$QM^?K;kG3Qc0s_-e=6sB z<#z8Fuj}qLS#>*V&yH>X0A~LHin^@3+-cC0!4h2`smNH*9R5E_=;HmAd|>E{cdS{* zh6IRXXWBab=P?3(vtLp_jIN`{lyCLN90A5iRq6OvslL+msG22=7I4!HFEYbV{vyED>e@tvlg;hg!g5W5(#W>bNbVVv>U)0^Tzj|&<3Ph{GAU=LzX zVO}F8?6)@_T1C1ra7jF5V>slT^XZDdH2Dl_cJ%;|zz{Ms{IN;G3swm;)EnXkpyVRk z6bytko54G~8~}eDn&&ROU9BsbuC8~WK)ix;)30u$isfze`{IH)&cU}iTqxk2D$O#D&OES;*XZ8P7jVcIS#ecDfIdz0F_vPxUC2M<{EAUQ|2asrrnc!0}!^@iW9X z8r_Yht-^@$bR-HNmI|b>B;y(B$4c}eqNI+yw`@GGKYOP*&mDNL6ZoMs+22}QLY`@g zHf9|0yNvpE#{`edG((lmMkcUJSw5fe#}6DM%Z=7!9M=(*SI)s4g}R)K0>E|00E5Q{ ztVI!%%EYE?aM9aJ#F8a;JUb@<@GN&~v`hdYf})L$live_`1P)ZH7g|bXK%1@Zl$zIenys_=_Hrz^Mr_% zGs!9B2y#Adc{n3H@@rBEjh+3s+X0ZoUKt)jr5*`R6aX>8f)7sKwTEDr7VIxAV_1CL zOk;E9?O9YSWEH^WK*vBq{575JWV4#aWLLV7Z!+dNCP@Z9MJnK`lB9GbXD8B$IPCWP zdtdGpd6Im){+GSJ{{ZV!)y33SF)Q35OQ=A8&BTg<0d6=@xBxL9j%&un&{f(}O5_u)GO5--Rr9%%l>aWPzRr2Wm+CM|Yu4_8L9MlWb%p zM$ojb4@TSNtf!_rU|@4xzu8L8HrJ-V@C*9l-Lt=c7-~|^V7AiaGPo1R9E?N#o2exS z&AouY9YN|i!8P9$>o(HBEv=T)AnKU95mxa2e&-nZb{*7!ZItD&;}{09PlOwQ-Cb9P!6-Q&iOM?&FGU zi;*!K5<={XP!;)y?!-h6dgBA0{0*t)>s6+{R{sDq8Di2$OEsX^wQWyWwzyP+;@}wN zC6@^tVM7dKw$qQ#(z(Q!O)EU*W--W2P(>MJXjM22#O(*}j4tkScVmpIy3CI8dG`^7 zRgJvjV%z~Fla|5B9Atn89<>U}_ZM+BtX@jQg%>fZD=`>nJ2!qf9QN;y`YF@8Pei{j z=^Ry{s+&ir(xPo8;&HS&!Ck0#51Fv1*P6zL-sZ|nOIw9SwzZxJ zWsy$l3bt2_XFL`^w|i-_HWqer`7Z@#%9$tp5P_4hfbbic9P$g|$> zjx{U2hTq;YbSesxc^Dvc9eSK}%6F#bmW0BGzZf^FD9L0sDH>=9jwN7l|f1g-we?tPy><=m`rWE0k8o1 zaezT2;DPUt`}>J4B}g83N0iD}5%T=*%V1#f`SDzorz@q=f04E&CZ*^8Xi2TaIv0o1 zW>c8%A35M=Tx0aEvr3y!RaI-4zFZs^QT6Yf{uROa-3&T^hwaL$80}^ySD@c1HJPM1 zP`i6qO**gHY2E&8#yMnaO-fSeza)Jb2Cbu8TahKoZan}6vH1g95qP6Rhz2h5A7nq* z72`Jhq!isPMDdbIL9JKewQ5QMP1v2}(k?)rDx0I zjbX_iU9y!tVF@_@0D&>AhAtx8A0)6ObjB+#I2RdU22OW%$G78G%-G|A!zX0~ZOP+L z5y-((>&oXPQ4vA<7 zuARK6lkOFr$= zHD}JjG)!Z>if=ANSyU**qE0@WNY5UlH4u(WH11fRx|jo>d~U@{FPRE%vSKmvnB@SDdJ%#$eq40K0$><5%L0 zDEXuW4uq1&@dWc%ppr2oM4%o9INj^O>x@;V-@xDkc*@}Bvy(-n%HroI<2`#-$tAgPLV`wnkTdPgLt|QKS1Wk3 zf^w=*uIzwv4^BwO>r?{{VS_HAW@6b|Pp}CCADG0zWL8oLeLq^4<}X)8-uh z0D(})Vn#rOmwayZVtD)q^s3DyCUa~iB&r4=A;-)}9mzcoY3&U1=gVlfV}f@w1L{Up zpVFym+Ewf~&3}7%lI9^7lN2H}$Yb+@WOnC{3vu}IJqktgkYfRxj({i}{&h~~G>jyQ z?g(N0Tyj7>V2+2qTeu!lr_A3og~-9+`vt)K>KUz}l>*D=I0q*!j+~BE4wXKj)`ev9 zksE&E*~wrAK=j8?#+6FH4u|T_Kp%kOrI6aW0LI@hLA{6oIzh$0KVF&qYMrb=hjw2# z4%|vNV1wHuryOIqN_{m84q1-oV0k2uY!9thmPnf+WK=zVTm$-6tF+3Xl~LR7f&D6@ zPWj~L900uHh6u$kF}U+%cVty1vCtkk^aq-lL?lxqWNpDLdgT8AJk_}s+16C^0bZjd zA^NXMfuxgW{{Si2DdT~LKc63tDcm(8Unz$3<;a-lY5a$^LhS0uE#N>tZOq4~rUnjb zb0m}RjwrCnjFLy*BRKw*4V-st<~`Sxu1MUe%9D;cAQOsrLa<7OSV+#GleLs5Uw^`@ z-9(c_@e)d~D#K{O1ad0O%>+A4vSgFV>AnnyPS7OKs zBoJ~j#~hB;cd8#yGOa!Ji~GTTUq8$T{NCyp`KrBRrqcr2vn zpgi^bML4orIkt{n_)t$Baning@rIK3W=zYpi0q6IjCv#U=?DK(1MEF@g&B@6Bmwo(;P2 z?zZ<@YsU5$OSVW05Mntb6(pU&d-Kf`X>=-#YDV2+buS!;=2EJ|j)lLdtOi!I)EU*Y z^9eErG7nxpxvr*oSVqM$zo0uwACDl{J$-F5By&pY=a6=;(a$5f_oWBa>V1yAon%O* zVgSI&sqMxCXMzd*ed{vCi&`o_ai3gg{N}A%+zCr47${1gs5s)i3U5Q2MIBWHwo(=0 zpncqW4!@>rt?<>$&!-@Pl)Nv3r}%OXNY8W4W4uwwt}qCf?;QGZ`1{o#23>ug{%tmV z4dIt3m2J8FjzwjOf|ME^H_If^>JJ6H@Qu<25|DPrISbzmGtN&nb3vIc@33=%Fd4d# zFjQo99DZi9VU8sXAv=9BfD{pqG1{#I<+{v;fEYh7CyMbDY^;w#%Tw4PNGCxoC~z{P zuTH#YwNts%w>y}b(<_03JN-fF+OKJ|thTG=fyc|nI9}a2tIp`TW+8eEx2fO?(Gg<{ zNU@gQW}fbIF5qw&0gtW#=Cwn{-yvVSzyqc!(u9vPNa8-^u>fFt=K~y7SgvB3e8eDz z8=H9FdHV^ZC*j9%8XPbiwLJ<)ekw5)Uk~+6xhaMh-GBCPClLkDnZNkD;EZ(qYd~Cyio7{?I2av=*EQoUdvMHKcR0o?Q%=`pw`2{- z2N@j)*0kj|o*PXMX#l1+a8D=P(_F|#=PW7h zNn?y*2VARga0UPz4m0z01E9}QQgT8(tsKqeZzLz)a7O_`@_FC`jE9|oW0O21yiT)vo4k`5=E_({=Fp#9v zXrh8e2Nb)hv`_=Lb583~(u0b&fPEBoqNO_kQPPa!qGORt;0)R6(wRjSN%S)cD59tW ziYTB0iYTg50Hh}r6N+U}n+~*5MFh4KQAHOJQAHH)z$qK0Eg>1IOcI-^Na2-fa1t#iK%9^wXqj&>UlFL)Eo(C%|QSTV`noq+VbNbin*TYX6!*QlV zcLk$v04o`$iU_>SWPr~3KljdY+P@pLdF8XzEN)`wYzK1ZA1|FJ`TQ&NQ{YF6tTgRL z)_d5ap3-0y{K&%;9;??3r_;7aCy_XOQ=wm$Pu-DK@ZQ#!G7w55hG zDp2S^+EGbd5y1zhK9%bUJWCLfok9_i#DFo6TKZ*YyF3S@*z;ugb8&yNO@C4|I^+<6 zr8qr6dxn!A@D*Qt@r|gy9C&Id)<5*7+A))G;Ge-rACRtw<6qIOf7jkZ4_qq-IQlM4 zW515PK8#glmB9WbjNtxwKcy!+Yj!lI_DBEI`YG6B0jFC$uj*28usEhMEF~&W4 z{RT<(7cSZMswXAR(obRQj{g8kt>tZhv`R}9Tp-U+&$;ev@}|$xJqo^e_I0o~8IpNU z`8=d9az+jnL1G6AIL-w_=a*Jyw0Dh^pWdNDMlgO^LYxu#^!2IJ?ar?>uNZtCkt;sm z#kO_yz{L_<-ZnnXJa9Kw4HuX@_AZC7IsGdqE3;_E$ZEaw+Y<%3hy#$WQapp-3R?u@ z9FF;=i|w+*z13~pq1vw7_8!}U{G@l`>eaWI6eL{AvrO6C(MDolY%4T`erBtg5y()a zmLK0ci2ne9;-$1wOwF^4R8r>Zdt(xOpu-#PEIRHk#C}8hQp^*6;c+(74&**r8;?Q` z%#Wucv^EIP2%`vtrhZ}i@%hy+HKiFCDhEBk4{<`5QP`w>=m9brBpkNs6pRe;0aOF} z{c562?5}e$SvL%P%kqUC6?Y7edeWBSdtctb7E{oGNGd(D276Xb#;vG36cI4so?J2K zpevA0YpRTHVOB&}a7OTLT&p0TS(sivcGaV+Z!Y)D*&MPhPT90n(# z$vrW6qGI=M|pL1K(n}lqPqLbB< zEJa2=1zLtK#QrrRpl%P=rHp~ow|e8TW6LC5@<`(YlhZvp?Nly`%B7`f=^( zad!Kqks$z(I0`ow!2bY0O(?z;=xxp2#oXlba^ZjU5G&Th*P%u>Zs(s;jY+$nF{x`X zmmoLY=i0a_wK*@Y4C-*8ZBBc4KacoV*ARRz@LU5QVKbB0&XM0gT$b(u#TL_9TU^CtlMp14iDTst-~oL{UVGLGd@sAWi6Fbx z5n_!(D%!)bR1PpVGjy+FxGX@}Hz*_J>64y0$74=q!1B;>{J5>@*PS(JI~mH9X70}* zUxXSO4cAwfQx8UELH_`btzC=ZH-VM>*0F1b9SqVlVMku4AEkP0N0E&C@xaYTBLq@T zSbq>x^Kx;;OtE#I@?fy^*V#EsZv%KX#Dj07S}Eji^1(lu&34fUEINL)^$OcrdLDrF>DM()e29~K7H9jv zH!G3+s>sw=00>919G~a?DqYIDDr#2O7ZHWExHj&jWVB&{9Q5RM^*OFW=StTS^iLi1 zEdWvGM6M?QsXxoMt5xG;Y>00X@_F4qL8&N4I87_K=pp(9P7%l`mqp4AC#Hu*Z9pIU<~6C?GfDwh4^oB%)l zT`Mb%7LY2{&lXe9A{?X-vD+4t!kK<=HyccJkoiH#E^0a8SF`<>%ilhObFzX zAOK=A$BdqOan_}ck`&rAkOx7)&*@nggd~cA*nGP{?Vg$Zs%vsfI}yA9SOL#|2kA++ zI~o(n9zP*?l0ZQJ0A!KW<2c1%MQpABBxgD2kL6h6-bT3G>{lRVSDfdJAHucKfCYfY ze_!+KN2t9B-B2+Dk{1p1rjSb?Kz@}mIRw-tk3cfS{$BJju_3_crfM03ZNSDk&-hfi z0djph({}G(y=br^isjhG>b#~{9&!%@Juo;ujb~h42o;o)P#h7B++)6as<$w zsHG5a*vQTYAO5O&o8*-}i#yM_! z3hu#1^5$kW-J@i1vrDslL7nn)OJtlA>Ic1Or-^Q&QiaaI31fl>KKu{XsjinJ-Mrhg zxx4XzKAxH5ijP>a31UzH3xJp&{YE~Ou0BcH=6H0Ahs291+Aaz7!3XP3{{V!dL|m+{ z++%@U?wh29WjFu~=Z{+1T{$FUfrJP1uO4!Z&q5T?lIwF$;hE%OdCmrUV0wF0X6MZL zSI#4$`G^Pb&1*-c1^^=e0F7T7UdeVU{Goo8i>+m$r?Xv7RLw8S7BIl)1h#RG)Cew= z6knBblb)FC-mXhw1S*ceWOX^gAE$pxmsynZDBs7vEN4}#_yx4&G4Jb~N)0IgJ|@&1n(`?9vx!1+p! z20M<`QKMI}GMzr>LvvvnA}Deda6Z3N&VNqy3sWnNv5kOp&NkS!S<>8U406(J^&d}him$3ZtUae>duhFj2^J=n6^xD8-T(mo?2qDZ zrw6}ki0T#*&aXAXVD4txcq5z)f$Pn9!bd!SX6M_X0Df$0t7-CT_+RkitLo9( z<4#?VY`XC;hu~FtCqhtg6m!ql9V_Rb8r%(AT)CDLw`_36ndn4-6V3=9dp*g<2YT5W zdY}M;#GC*R{{X7EZxGLIbFI&3F5`=(T&ej=E&v!k@zd+{6+Xr>n&tET4vJT^=JGEY zk{KCbKQ2nM5O6=*%K^ay90SMXS*Y41s}0PIv8w#H!61zDNt-wS=*D;)M!PjYCd2E~lTaNr@v!hM9D;@H$ zPm*ox{%1vL=iZ;Q?l$UGoyVAowZOm(1QK%K9-01?T6ixkndiB3lFJbb5=*_xf<{95 zaRb*RcLNmd1!Vrxg=P$~G$we!a5jcG%c$Usu%ZA&2YCDGD!`*w@nh3Anjl< zNM_&+VS@D};AaN3j2o=!$71Iyal$I{z1y|Fuj}$%4xa?_{hn#yThwqzHt{HCcX5O%eyyWj?_Tr?nj167|5u*iu~n4%Ck8@ahw7-3}dGV*2a8Y z$vP?mOQ`bX%Wy_ZXNCkE=N#maY7IZmjV5b#Lu}5!=?;f{yuZw(l1VI7j;AE!EnDJC zm~Y{|n&TFd6Z^BVOF09EzyuKa!Ok&|IVQ2Gc+I5t{;le1Clv_EM}PA(7^SVGu{DpI zouQ>MfD@dM6@~^sy@7ym!nx1v>83`wjZ36h*&>~ev8ljegSaYv+~b3vn+FxGs}HmY ze7Uk-X4`H249b3NkO1m^807kA8GB=E#?o+XIB+KkL$Y&>!ow@41xF0a7<9liC z=DOUHByF^ZK^$i}!>W_jhH;*l`>U13Jtjqt1uT+8#ZK`fj%4||9ux)Vpcy=bi>~NIk#=V+3sgamp!5Nh7!SmxbR$p1A(byKAjQ;#P_;D{K*& z8+qN0?SKhYJe+^C(~>4J#cg>3iU_h)d6AVQTf4?fFH!*nk?aZX4OhOpytBV+nIvSn zP99XsA~6IM&phDgKAiN)sWgc0nI2@gOMQ!m4nStuKwMl zH+aV1d*A1O=@+JwF)RseizITP5=K(TGm5z9G`0DZSDXI z$>*hXcCrnij`hbhdlcQxa)=#HdB^jq8B}DRxZqVNcPRHU&v>&G>PwKwQ7-FFk$ zZv^@pj!6}iZR5H3rAS^~z+kZ%4CMgk$r9;TX)R0>_o(+MI)EIF=+!|gQpaKr#& z4&#^GfH~{hvSPGZp+Fq+X6%%Qr*>%sd#G=;T zG>x{C<&r{x2ON*$Abo4*?-nadsY4ij%u|f@87Bkt99Oz(+NGt<^mg`cw=$|LsXsPC zgOR}C`(X92o^S4?mU-lvet2hR9df@vPo{J9HR{oo>9l;M3^buxRPyWQdgp@tK-aog z*`)sfkE>S@ka;YJ?y)|=5PqKZ+B9*?DoZoFc|@}E0QrUvaqXJ%{{V;5$1V1tF~bPl z4u|-^#=T|bg5Szn*@C-Zl}R6t{{V4LJ@byWqLX@@7`jRoq>{J%9Zi7nLmRl=@`89` z0KokJ09w5P-w1Xed;)i5x8+&zO%C89Xy51$^{eJl9AqmbdqxJ;01R`|lR2zRmeG0M zX;oeT`4?|Y16{2ba8*lzD)!-a;EAoMW-g zHW?;zS~y=Gtc;wFdB`9AYP03KgE+Tl`EW|?>VB*$8f6ZRS&3E-+-H;W<2|x}`qgD3 zDU5&P#CQDazngNApDHk084B(P^36eSJ@eeU%8`tg$Il@ldv%N{C)vNiL)0!@+dDRY za-+A- zYy=`8fPha=ES`Oc=~l*%ZIbTN%FT{l`gY@PIrr;I%W&pojS6K|o!bKkoM-Z;l!tB= zTOjo;PxYydvy1^K0ehU2f$mt<6Ati!W_CmwLI@|OIsWkHxFf$%F*frlI}xnJ4kK3| z-eK49sTz4*cBn<;s0*LKXZ&gl=&p+SssZ2vs)H?(IskwA-n9;!XMF@ME!XOs2_%Yr>$2(Us7<_B;rYADtRD(QHqh-jA0ZUW3rL|0PCxYE*UaOJZF*Ksyu`~ zGD$z(sVNl-NJuOX;z0c~nq;Xi%*MN<9Dokoz3E|SCgApis_>w0W5{0*a$c#FsFAMam`${l1rJVhD7q378x9# z7-SxRVEY>1#LWsDk19F)s&17=Ju|cVQnFd2$#Ah1GGlR20c>z8+wMl%7}D6J%FsJv zHUu^}&VA{U+M+}Ddq;ScN|MRR;Ddv>Fu?-{*zu0qt>g(1Az}|uLF4i?rDNoTBop_2 zzLghtFH4w>XKN^Alr|f$&VQk*N5k4PA&N_1J9q$>XJ)|YIb+AQR@8M1zqg2O#6b%% z*c6k6z{?yAHtv8PgmtQVwdiX(wA-s`z>~{}%^YWM?-&j2*%(zM6NAtmJ65qzxtr9+ zmqzgZm#? zOfXP^wEai5Z5i2^)uiVa9_P+hp9?i;v`F<>-|YIdZ|6rCeib_mj*Xsko;p{q_(NHJ zTS-}OR4whZn|qkg7?FG9JqW?{uC`RqBw%MJ9q~+p7?`ud0=MyT)Q_mxFEF{I0L)MWnv^{PB>EX3{O zraM%&ZDe5Sb4Xnw$=kGn{(l;wpiOv}dX>HNGwht~ZMYk8z#mVidPraF*UW_R8}r}g zKcA&;-6};RUh(sgxXwWbp&0IS_~N_hPfHxtW2v=jQ_B$`z`?-lT!f64y5o67vj*OC z*Df+wKA--o-G)%0=lB~W5AL3vcjmdxR6Dc0U;-Z*&rUJ;at13|tD-j4^_yAdSmQ{d zAzC8g$?6ylxW^v3s|aO|6`nHNm!Ft!%VVx^N7FTppj=#DSV0~Xi)G~P5B&Mse&w8ONo3?Ns3Gk4~MWu6hrKrfIFFiawI2H*{?5Cm;+SzW)G~ zbg^6+W?Mv3k)kLJr*J&u1byWr9Otp%=aInpa^m9B*|1hmC}k9PP~8tbNX|Vgv9-m` z$hiAL`FPx80A*R&{zGpBXPjpPBvXUBCR^%iO+CCtA%B>=_c=Jh=blgVAB9Q^sw`*< zfq($Yj1JX|8&4OTt(G>ChQjT%$b*0ZbDW>d6Z+n`o=D_a)i=ghcI=Ok^uY&{xMu`s zp4E0ILdTwnWF+}HUCMUy2^h;`89Dm)rtdE~W+mfLz~t}L30F_fqgfO!yWJMv0 zq-3$lB;*m0NI4+khktaHil$RLSFcqBb>}@#xjgkWY958ul~svFTmo3(a&U9g@ce50 zLMMtvj4G^vl0d;bxhLzBpRHjdqcg(czERErQ}cgyh7W$OIXs;J| zzS`bRDW#IdQef*O49F#j@yX6|4lCl9)Gy>;E=!4BeHqCgmTP#!t3JCZ;g79R_R^h^ z`W2{t(Y_M3GTW`mkvx>DJ#IG8_PuaCOA>G%@0dx9Q?N8xHjWo++ zbtS6Ii_}2-*kjuO{#C^dD&?VRRa+=<>QRAGJ$RzVuvi+anhG!Ek5bWoJ$y;g7#MX0 zoD6Y1O4$Rpcs%`U=x+vo*KaJ5Soph0On08vOl0=?ACLTgz7-&Yf-q?*Sr}rn91V48 zQ%Uz)en;$9lkr=?+U0?k4OwkvL=wDHW+^~Y3165U!16v^oE|x@%SF_!^;>VWTHHl) zj4~c347`p9KtRtNjPagp@t(uP5=UhEMxb6>IY{V!c*y=G{{Ra5>-K8YW6?FYv3+h? z?X?xftR#Nr*+DF)arqwujBr4u$gF%uYr`uGN>w8*wpQJGpLzYA3`JNIo(K(tf=T&L zQR~Jk!^o(crTIV{pQTnp2;P2DPaW`nl}1EcnF_OzxcQ^?{A)WOB$snC{^}c;%+R{J z58?*AQ^is&vAlz!&sz2i_~Nm%k~pKEn$Z{AMFMFu4B!N%KP(zUkTK1o?^yHtz%YbDk@O z9c!fUr-^kB2Y80d#JW<%_f{@l5@jtLhEj~I0aJ!nAmD?~1RiPTG-p!_Qk6a2T2^*< zYooKX^Ru@0Cl56mv6Qw=bid)((E8g-@E?G+y+g#1_{z^t@a4GDbUUBz3t40P518_? zlH$?B6-cg?HY)IPa6oF#xA515^xueo5T#8H!r~1xR?;kNt!`o8Zwxp0i4?nI$WYrj zQ~W)<*Me(b6t%r;PSiApvaz(XzOmD^<$~QN#l5ze=15j1l35&*#O^XPlb)ltji<&> z5L@_*T=5mgou=M5h%POzuB~QC#k$XFD$NVW<<63gj=8~*spK#szdu|(n{v)hZp}q< z^JuK;UfS;^8K$pqJzGA7=2$z$D6JdT-TCd)qiOB=9>?Ra1^7q8zY8@l5$XCoQr)Jv ztLP9hK_It{uUsVZvC9^UD{~A?PYoeGaaZ{j^%%a=w_j(sELB-e!M8aqa(tZn5ncIaO_U2Pu>HbJTNQ;jdYEM(g11wfBc~yBnD-?ez7$zJa#t7FvtRFu40txeoA7yF?{J zAS1EGeD7YBsQgmbbw3C%gXXldNPf*{Wi8?)qUvjHJ>-(!H_WCW5u`k%YR$&xHSgw_ zOjTJ>blv%8o7a_c->U0q>AtUZX43QUwW&c=QtKNnFRi}~f8p+t_BOBZm%#dNv!GnT zrCLjAtZNpk(U_F1VRWmHHVl7s%M#2-s{>vu<833s+IPYoHd(E7i(N|NM$xY99u`H^ z=em|zMbk=(-eW>y0}Si8cSE>w#2?xN#=mQd?XC3oFluS5M;VS%i#l0-hX8rm*wK8% zXFK`G85QOpBJob4;$_m7{y1YAMwoxXQTzN+W3jm&|WGK^!)-IXp@ zl&swECf@B^RlcuF+RTcXjv2RWe0N%OvbXiq%=8@x!xhr}aLw!go! zu+%=!;o;$iisfesHGs(d;fiSF^9VTHuDo{7HMTn>&8o^0gzXhdF=%Q&l z)#ybGb`B~^OI~)v}26$D~W>c!9D{|baZ_!ua{m;EMK*%o4+DhWw|HK>%1@u4`lgkBg4NJHGc}j zb!(#OI$SWzcK6n?vfQ|^xRTxNncyvOS+f(7iHxh99A>z+@kRRhMf?^chwM^nNvat( zx1HxCO$c1>+p}vEjk(W!ab5JXj8m^EO+H>~a#xq~-ufqGt!+J3+DV+V$5HlaE$t-q z?`wX)@HIKgD5Ad0nDD}yPo)IYYQQL>iY@^~6jgH>g%nXjkOdS{5&)_IBo4J1eA7uM zttB;J6r9pgMODdYD58pEvI-3p9+V4|=yaQ3KkTw1?qr1JM^;}pOpmW|?_WfGH`O0Z zy^h)2Y%>tZ{{Y-`(ByjbIriiX*Ulas)IQ0o*vBhvibx0~oCPLndHQ<(eXHopZ80I+ zEI@3PxIf*O(C4#u_xjfjdrD56{zq*Kq^A?~tKpZ6uCFX((@f+vd?&9RS3P~kdvWPr z)8^bxgUprW?a3#n*1iMyVd8n2<1ED7!MDvh`J5^FU)ON%dCBJ_o<8XC{;LkJr=`?P zHxHG-?B2ga*Z%<3U057crkxs(-igVL!zjON4VkD>vN`;!K%TUcPYg)UGb$qTU5EgE zO=7=_ygeI~H-MEmB~jUb0u+Pz8t*tYKmXMCaKz&o&OU6OnWjyc-8ZuVjFnIhbI|iq zOC*RufNmi3p5KQ#=ALDedDa=D0gC5wgfPhL7>sA}ugPTkBlL(y+Oht9q*1HL6a&z^ z70>D@R!K%-LmLFn{0y zf&A+;R8AB$t^2HC;FjQL1J?$e?XwCo_#aQDQA}=T`$FNqZJ-_xe&(Aj(J?qi4b!Ni z!%P}O9`CWS@C~A7(c0lzJ3^ju@A* z89e?1rLm=AB#*fq^iht2tt=>ujAWjsl~){|rlikvNrPm2Ksm)dR-sqkFBWc;svF>`)VvNYFvo7Yz93TgS+an|T){%{fa=RYW z`J;3|`DggKJ${u~#TySYI9GN?OJ#T+@yF$XntT#8Y|05JamnP2el;|%Neo?)dUhxL z{b@0+1_f0Nj8r%P^N@MZ;m~yJMiiDQgOB-Wy+0Gw)DyL>q%U&J?(;AoGhv8CBU=l`JyYz$6Uw&0JO4E$Ac5GW_Bpym7fW%Klu|Ma1kIbkPT1?XbVM zBm;_`>S>CFR{;0Ny<@>N#uu67W(vp49ZC1kVd?%wdK9A4)Z?6y9FxH7xzVB3^ z=s?a!eTcf>{OvR44~uJIBa|10g8%X{$zyglP7Q?cCgNJ56zS8c&!Tsg~-~B ztOBv*yIoo>{Ez|J)>ryZd?Y~N%D9bkNa5GrB>0FHb^ZhF>TT~OMIrYF81D-~EXFOEyhHAh= zk~rEAZ*Rlj6?u5*Fa=eHJ+Y5^m~P$bDGZz*C@kAZQOy+7(-lM&=9yGus}7^DU!`V< zT4@{1QX`WXJ;z=#{&7}roh=}F&)!hP4yW+-IINY_Qt~5oiegxpN42^XKYOQ6loXBY zNRl)zqwjb29CqWHbEGRS_8jfP^}xrVrv?z9R&Che6W>2dg&eAE-MNA4PhZFSQn(H* zvEh4k9Dj#%Om;_}IL}ac9)xpI%Ipu97D*?PI}?m^=~NBNz^N?1HUT|I+&T>Y9VoaY zSk%hzjrV6CF3-;g>7Hr&d61!z!tE!Valp<${dLdXnQmoPKtk^K{D{x>uDT0liWQ9U zfC=Y3j=a-CdT3jWY!xZ~@1sQ&O)P_wP;G zIrsIXBM5i!J&#%gQN^&Q1CfkVLF&W-*n0gcBHQqzkMR{b1CB7my-D3k-XagWnY_eNQ~r=UeSw zNG;oNE)jBb(}q7z3Hnww@lzq%P65E@JPrrx-mkkB2VrCP+Z^Pv!2Wg1N`xGFq>XA- zl4(TsQ}IscIEK-bV}rE+097KQxcH5(k>*7jDLf8``d5>Qq)W(E=K>AcVt($?$sd(& z-fNmPXm-ww$hlPjoSbkvcdb6J1++ujORS0C;{LZK%(k;mWAdD) z1z~hp9)yxcKDFQyp^ctK{vuC3`Sq%CYZsO?hP0HX4sZ@Z`i_;-@Uijx1J_S;tH+wM8^QN|+0!Q+N2mR5<<6M~W z4xq#32o#P63CHV9lU2N#c9}xt;DEim_BEf@k<_v}w!Vi$EtDcKgBLQYobM2bBq+9v2 zGY&w&u8c$=q0AU4N~Kjy`Zg_pO>Va+4{!+M@}++eX==Po54g$xK>q+L@{3pw%#Qu5 zKt%hL4(7aRSJy;+O+2QZwQTg0u2^ji6PYu|+#{dI6<$veMHl?De2-!NHONL8KwKOz zew8G^Gly}`IOei-U94A5DVQ>*4ZI!G^$BvzzPmqpgF(>v2B@__8W=f z^Oi=C$ak*+x^Bn-f;k!Pdt}q}9f>T{9PYNZxR`Y7<&G_;k=u)Fn3Jc8YmPKvMo>u2k8(@)y87t3!UVHWJiV}&I z=gr#!IRZZzf9-GGjmJb*LvaC&F5jpI?x_450T zYGNT$f}w4nf4u8#t;L;$i!>_IOTDlMB@ae^hXbc4(0bIO>eXZWG{!X!35Yq!Nf$ph zaz;*Z@{Hp+$QeBCrNNL}tT$3Z^QiOwc95!|ZbTdbl&N0S#;~4H+!6cE}NpTFXBCwJ~8&SB) z$S0G@0Q1|9D`9j?ty+!!wOD>;f3QGjc&SWgHv-v@Hf;ed!Fx(zMh%nvK3k8g8SW$)mQlaPt)pG&nCSZ`w!A zBrV+F3}fhdV%X0G$XRfk_ZY?j+Q`9no=X+B*7Fe`r#T)Gq!^Zk1Q8t@oTX zm(kzD7{9oR1q52e6yxP5uGMjzjQ!D&dx2Ev)9m0`62fU@k|DM~EnVAtjpP7BA3|Fg z807QEa|P#sU~K7j7dM77RQYB0632qUTVc;QEIU(S)qEp0%cFQ%gsMRzNa6m=4U8#JIZVEJooI8+Sctv~v*45U9!{{UvsdLAd!&%v|E)$AlFO|hLsWMoZj za!wSTrf^sg2cr_#cf6bV z90$b&c)UqzZ21okootPhlehz(nf_+8w3tw?a1MHtQv64rOOF(*NI{U<+ZH(5H!@`L z&#$dzY4b<|fK7TdV*alS_B{wmDvh1AW;SJ1A9P~3t%H@?I)1g!>9D&nC!BtHuBIKZ zC?~o7YnG$d$n~i%tgwpSU~ZfY=AUym$j&~Lj>G`V-@R6y!@4IxIn85c*}HZ_e|iS* zm=Zfv;DT8rcH9@sUD!Fv=b)_%a6l6<`?-~Rxw+O)qzna$YS zT^-*>jN71=W|MXR`G!Ck&!OX*2S zgOSHLJuz5!T85+IFETr8NQj7s4H9h;$B>~DI016QJ^S>{a)qQ22HtVE7|$O{>hwKw z??Z`W3_P2LSvM91t>B2R@ur-$Oc-r3UIRdR;Hj-P5$Kb4ed5 z%NWlfj+yV+eQV7wwAo^dP~3`#?Qba0B*cCH06sly-r7hdX$8#KJ9j#XGlKhZ_ytfn zz~|n)gTzKirnrCrMZ|J1PCUY;f$P9KO?uc^B^G>^BNtMoME1Ywsmk~zj9SIgH{Uk- zAdYu#O!M25UeyXl6kw?%7&+>Hnf_Jbo(+|ch-I0E?e^uEV>t{{BaTO2qd2c|fTqPh zM$$(B;fVU5T9w?}FxIEZ8j&(aNhL77Z~^1Kc&m2zi8O{d%v-vJ7|zq*2a+nJG7Y#V zXXsD(3Y4suETveZN06+eC!V9}^{1me_L@3KWoKQE;Xyds0X=?#rjpz&r(}xm0W6@B zMt;7Ym6r*bK~z%G5!CkM9Dkfuh~ZfNMGd(9>;aMW&l&vdJJ?MoX(TSHTOo?%It{DG<~n^jsM=_sZ<`Ah z$pC^;bM?nKsdgH7lH4M%lnuYUFk$ zqEmgewlJhik&N{KV;T11lv}|7VvLIz2j%bU$?1w|AR(4P04z2fa&zhRrjoKanZe!x z3Uk7aKMKpd)vax3TUCjt=Mog?t&EPnYTTETNof?8cDQ+E5tNwuKnxSRI6QIK8eFYd z8%43TLlMEpC%r6a#Xyb9qL2=Hx8qcnJz3bJC933hXOpMkv?JYRA-awhb~qa{FrVH5 zy5rc;<6zvmEMh_nVaWTv@O^5(lJT92I2~B z$Vej~{K0svdzg%{%CL#Vq^mB--G`-apqe9X&Yg^YTS?}r1FkSYKb>ZyMKq;aW#^n9PTW>o+u=k82gAA9#!0{( zS39v*r?kHE1aa9k0CkbD3aICR#B;|LQA9V;(TPDiQj`c+8oZJz1v;mqwHUA!p# zY6&5`7LvzlG;>I(O32%naqrIEr2Q)g!?w4!_fks!QAY$nl-cM{KKV6#s@D;tdvB~w zAp0!P#Swf3WhKbxzH$8O@U~S|R|FN~IQ0B$PTJmCC1wnY(Slncj{tPWNF4w!LD9Z? z=A&rhUzw+7&q0jw?Ne~-dEUI=W!2&NPRaHbJu|f6`u6C*rT|#j^z=-wUcq^^E$XSjUoRhl@7mzW4-;W2qb+(9A zBRe*N6!DC3I`PGJoW(x{Ux3eTf;Xu(Yh7M8nNo4suTHkJpOs>@V&la4l|TXl^#Bj1sKdvcq>78OO2D73AY#tnl#@X z!vL5ifZ9%Zz|MP)D`H!yuC2sy%AwssV5DaQoMfwDb~zaX)2&$3;f~oB0C%d6GCPm* zYSi}rdIcn}Cm;@>9-Q&cKPuMdW=5W1gUkS8Nmx9bbGsM=E1do(IITGsbYx>2PC@I| zsK)}^lnh4w-INA7$6R`jn85snUwG#(#xNB|(xm?Yc=3Wg2h>qv70r|g?K&vTsy7gQ zIsyLx>h1Y3g6zx#ChQ?2pYLP0V1Lhj6}D}qp9NTL!5HB6?~LcZI#i1aDJ;v9c)>a8 z)b^pGk>P(AyblkId^2%xD&}aTCO6=n{XxfKF~}A9TX$_WmDIMAuGt}WMhCG|iv7a4 zw}GOPCRNz$f-#Jazt+Dl{{U#80?FZ@7Phf%7TY~YmdNO`j=%TUTGpHBeZL3hJhdJY zZ%3;2K6$BPkf>Vk9sUke`QHJUrQ-CaWupBV?g75Sy3YO`BTgy#wZ?$1Cw{cH5s;FpgR#U30M7Y-Wg z#X>MWN`ZiXDsM$}et*SOt5cH1N70!#zYS!uT(pybP6yAN`*WJ{uN3?w*DNHLUht%| zEbEq*DO5ai_s7)N+mfZOp@`>EB1HSJ-JO2#UZfsJ9dJi#v=TfN*aGJpamPQ0H7acR zIvKTUQo27dZaga9DzbS6ghKHPEBPa2itE>aFnRT_2h=qC%`WNe?_y}BL&~thuhFe; z-$l?qBHX+xi43uMvadx(9Z%zm`7h#Dy`*a%DAX_DRW{pvq{#ckcdOj{tdljXDe@@Z zEnm~f@XF}?H{xwa!&-zlwoXTtBFGmwAuNLuP4I6>S<6iTsg2>zPo`V(OUN*Om;v%H7kWLDmbgqm$)br|}9{Ajk?HEFw z;^I8x{o!64;$Qg=U4Oj4`UtOD@mHM=s~jIQuiB$Kk3YsM$vjK{03pk-_m}?wK^68m z4JjWxi~b>pPEgE3C?u1B2PBhCtvwh1LpC4v^$-4rE4^xS7PbEX4S18nck88it4Y4m zZ(b#xZS@OjZDwegvWE#Os}wA(0|A0T9gR(4;ZGFm+D+!arD)oP?w6+mZ!c}_WtQ65 z0l1l^MJXN^lemsKuiBsZDc8b;@n^#wKjOBF7?)M>6~eBhk>tp9eME$IDxj0)P9tzm z6=O2Ccs05I01B!Pg1_)jUmJKf;T8`NTzEH8*7dmlQ7T?)7VdVw(s_wv5C+ZUUu}F&@OQ;6U-n4&4QYSk zn+-!l*R|_w4HrjUFYL40U0o&GMrOVj5_!lnz>gt5@Hsnq`p4jx>{;ROgFm!4g|64) z)`zTkn?y-9E3XVSx>@Q?YdyTs`LRd#xutm3pF7M-qz*`^`nz&TY*Va~yFVNC4LeZM zFYYwGTGo3j+gCA9ZF3t#G*T~BbZ{A1cLW1h^{)*0o5PUVTzH2_ztZB=;xk!EduuJa zT|@$s@U)7eMZ>Ae83xzw(nrT zat39_3lUyLuWKGV_<{cb1v%F=p8)IDz8$~t?uMF0rTyKH_M|>iSS{4**8X+ANtWf* z5g^9g^T@583o|ud==_qowz{ypp2qeWE$(e)cxQrSG07CMlCF-711l>62qPej8jB;X zebMlz_CeP_Xm1ewT-NVAZD*!xUKa6YrE7UK`g<*{-0g8Y%|1oP`ZRe~V7QZLIL{fZ z&yD{8vIdp#x8UOZYVcpgttZF&BwCDGecS1fB10QVA%vK&BD%RrSti0d;Rw!qVzP84 zYuMFQjqP*d`)g~f>zHh;p_1a_;zf!WVp8%+Bao`9stIOdKmZJrSGBzdUGUDL`ag*@ z+s!8aHCB6D=p?qCRmN19*0WnxXqkd=%EdXb;=={{Z36jeQQ8=J-Gom&atHUrT!NDY4Goj zb?*vW&o$<+9Rw?0_uOeZz^9XIR&tU>!i zufV&H7zDMG!g6@3J$UIXB50zzTS*}DP1ZM~x|Skt6_k}5g?@f$mwGhXwWZ9?X3|C6 zW=S40hD%W(+{F~L4avz+NgV;Hbfq7N6w}!4H1CAJ6?JiJxR5*2qPlDp%2<0 zS^crJ?;iML#ecJk*z2DRlETJqM^Dq&Pnz!KmU$k3Ev`Ug6t=!nL|}43$-wG=Iy_yX zr|rA@W6z=6>6(|q`>FI)i%^4F)5G7b-k%db`K^SIuxEtCidlmNQN}PUdC*Hmxs)p3 zbMyL;oLA~5o&Nv?*tFJewT}&G-x&Noed65_1KsG>_M%s|5)vXeMJ~+N;lTbV4?GO@ zuQvFN`wwXT6Zl8suZlhh_^qON;!g#(&0@n$w~VE{kurJlHNvfsPGB zp+3c`(C&N%lUH=zH&WIw;L`MqS?{lIoJR$w}|xL5Z}Rnr)pNweVj_Mw%HY;^CbgrdElcs!0_%#0j9KIoZ zM$ cxkU%%HHEsfn`TzaS>@AOPgembfls#S(t;s7|l9Ty^t!gwb}8BYGr*b`$_)J zhxUD!!TN=Vi!3~4;r{>}*iU_<>XtG2B4xG^vyg&Gk)mX|iKCHaVBwDg0JqIG4lO$| z^Cqr>iYTNYqKYU0qKYb$0Hi%BX^e6y+zy9HvWn^L3$A~3M&Z3^%AE2xoN_yM^x)TrY1Wpy)r!jSp>U-}Pbf&`bBy4e5yw0ly`o#) z_-1E~W)fJ+z?Nf=CO|lBAC##aF&N_n{oEc$QM*=$#J{T@E{d~+_GjF7+9id?%e$w2 zM6leAF${_u`>}u&1A*GQ6oC~$QM3WT0{~ZqcvHr=R+gqEw^_Cwu8ko=zxeBS=kxXB ztv?VZCqH5X{@UmN0A;Uwo-Ul?q?zE*rZ zq7-tABg#uK8<%EAd*kNm`PEFp<}^=n^AYBiZJ+?8cER=Qo-0N;)-?OM9ZNGG=tX`; z+t~drBu%yv6DmBB?j2JA{-J^E=~;IP1elU{l4Rr!?~MNd-yugH*sV2`FcJj}M+1!V z4_eK5TrtFGp_r4v!7a%@ogtz<_QErmm@1FGmMWv`pY!WWzRdv4V3zKnusQud8nW=o zB6&?9D#K|5H~{-rek|?eHp@I_QgRb$+&=(msNX~l*mTP7fo*~+jCJeB<5_aeHKG=k zcc>gH0NkHrR~A;dXGq)~hXmk(pG<*NZW832DMF(iA3x6(-AV}@^N~yl=Wur6n;8Rv z&s^h?~i)yEv?ce+<7g{D$>%#MGg*0Dxl`3 zRWYX={{Z^xEP{5U0m;sB$Q^mBQ7B{?7z6eEtDDrcNgnw*Uq)c*oq#OVRJ2(e| zYKL+`f_XTm$a%o&(DBxT@``99txda#l@w=nInD(z9>SQ%CmxkRAXO%rg41$7P&oep z8kAy!s;Wjl_gYK{<(q2oH!wKB9G|66ZkrKuKDq0Y>S>CqNdEw5rAWkqh3oG~2RY{? z{V9u%gQ%nL9<;wCYI|e)&;lNujMO46o0xzY@ICvJ*WVcSH840C>OPd_AfHNB9n4m> zxO;&kKG?=d1HN;?829V`Mvz^J$t{75RB{LN0bZRs>OJY(HvG-h_4MM2G1#v%Wmt>` zVUkG5`u_m+sgm3!yCiLrT;XxguO^mhUEgla(Si4~j(suTIj&<^n*K}ZS^}}E6NVr# zJPeE+5uEkUVb3O#>; zf=4wMnJ_G6WI$IwQV_&@wgxwPZESm<+1l>rvDn@V2H!RIsRy#C$^3^kQaNUKBHkeV zahw1#*8??ON||;_Tg%TF9P!tT(g@W${)aS0bsJ>T`J5SAKD`NIN4^4_ z{{Si+Dk+_&C0CY1(1G6|(qaP;3p2hr+CEc{bC2avG`6ZXwmnocl1cW-CyK3sYC78D z)!~kP%81}FEc-`4&Z}SD=@LY+-Cg-`yMpf=gkxa`ZuLJdPBI5knz?RvJ6uSZUw%L`nn8CH+oG|J_>*!J1rOfAVaX$oJDP;`D%xs34Np$FU6!&L6rhtk8yGz~ zU{{X1zQcpGthFzfGFMMOzbgpkvwQ0Z91jA=CF#`wCXV$u? zMK^N_uFGP}$>ug?z##Gnsx$0I5kVpuAEIvnfypOnJGjB^*NTlTyoFdFDH4nTN!sLb z)SPkYRjzGgk+(AB4x3Lyp4iAAm3kJ_LzT#BSrwT>1Cz?IJpKfJ6}4diMaqnB9k~E| zcgKEBWyfqz+_96K9p8J8=fJL>*#I041_nQ+XHsn|4l3^D>vY@BGg_&JRmVg4RcO;_ z1dMu~)n+_$M*#^Oo}DX#Ox`5ia5#7YGRDBEO{h=G1J%UNb>Au zTobte04mI~(v0Dlaz!y?^CS-0!f?Fx&vW@y4J3qsn8`fx+O0&)rw5?TF*4Bu98-7) zlbUNtqrW{WyGq7QtJfL)DdUffzLkFTy`^Wnb{^W zZ~!C|gUBHF?cCNJV7#c3=U|wyOk_C?+Xoo>^*mQbV`=gU!Z;v-!8zmg6w76fIZOfb zA}Bb|MI_^oUs_ix#kl2c870Wz921^M6)aN5RZiRzHy-#Wtx&rx!w5kb;CCeceT_2I zh|x(W%pj|0&~(if?n`Ez?lx`43l2!?pm+Q$BGMa~-*lJ?STIxEfI9jC{Od@W83+XK zAmiGs+N#GIpvgRvPkKcKy@YTO*(}`T_Br;eB#q!?06534Y5TF0nuE?#3lY;GfBL?( z(H3RERN+QA=9!Rkxfwkhj2w6EidQPe zP4=d<&oox^i5RxRp+f{C1P(UmzH)olF*c#SWVdV(n9CEp2dNwX0Ep*;kt}%&IWnl5T3eh>*tZkVi%8?bUgif*QBo{ldz3i=-1O?JK@xD(v&CnFCb$D?pROjQ?#DC{G*bjxkedOGgB|seUk&mT%jm3a5yu^WmR1Wp$z9EDqs{z(R6l3#0prKCM zomA;_wG%$!>}9h*X9cAvf^&ceUu^yr$KAo@mT}LwLMu)SX=B|WZM(XT)qH5{br_MH zvA z$94~F^UZYdMW2;N9=)r}##ZK=vGmzy8`;r{exxaDwMKc*p$GX@!4Omm1zd_9xXAXY zo-lAL&6Mu!d-UnqT!I9PVOHym=hCeyiGE!D(Sh|e!wyCdIrOC=6X{XRRH^fBX5F&q z<@fjes}knSuqGfkWAm-qg7o*Owx~TaYg$#MP4hvR;&7C!!`anWUyGDlt5K zyC#+%q^D8eu|haDoG(ha7i$fpkya2Z7TdrTS9tSShR2}#R}JoaT(&0LA>efMs`5#= zg##e)OV`O$8|kPd$gQn=JFxzcD!r=&OYYK4|BEg~g1=jLtW8#(Hk{3}Yw zNANbP-{{v7F(Bh5CLnR1CJ*VH9zCk2pKK@7ZQ;oV>hYf)H%D(CPd(BsjW6$tI}nyC(-XDlM-NR;hu?tIq^f&3s7 z>CSo)$n0xE8%-uiMApz++p6MO4#i$$Jx>`ZbNW{-wfN;H_abS=-vnZ=LoUDJeKO&Ks{=HVzH2bUV{!HrvM9S*2 zD94)%e6BqP;(BCoGoIRdb^W%VXqMW9?HtiWUBNk#$R`qGxnfDj&aHVUn&G0ebyaBOJA|HJ+;9#@B<{vJBk57C#5yg!zuFt7Gdjo}UA);@ zc84GqI8{@Oa7P__jeVUtMJQhHrQiGm7gBL;&q(*OIz;hyu#kPRbgO%4aLjkkINO|) zxndtqbDGVI#`^4+Hx?In5L?L!hk8R?3Bt<|oz=2@k=3PQ|!jbjxicrc@5>Xu2eEJec%gV;~CGhesk>TM(U(2{{H~Yl>Mxi zH96gV-`Dl(S(?XMd6e91Ge4H(NMcE%+k@yPC_(=Ka;z9??KXlTZ0(W%Iago5PdS$+(iyO&fJ;m&5OB6Dq%8iUGEU`pD zRTv;~p1ky?r6Ge#CH)JTa6)#PUNvr(d|~~r)hn_ zeOEc)3WC$aI`o%UGee|A5?P~}1H>~6MZnwpcxuV&TiwRN`E{=di^CZ8=7 z?Dx8N{=dvijR~$T5GBjIs`(0xJaa(UU< zWcBo|$uw^pJf-}bb>JagsJ|+nF_&|nTF3tYgiFP3JQp%r+y4NeEQKO2fnBD_ZNMSP zCp}2#r9!I-t5ll#G*hKGJJE~#igRdImttFol*PLR5;o&F0UQzBt_QDriLK+Xwz#vM zuog1WxH-ZWKQjzqvmE0+^PZx*Sae?(i+g0Zu!1Fws}X=Y0JzC>(0dB2{{RSIitl7| zJ+yJ8vxx~(2g;x*2j|Yw$pfx?Q>9fm%Q>rhilrA7%?LZ5U*p>-M~dfDk|KuMA)W}^ z5{`cw%d)aS!yJLyx?hPgxBMp>h$AIhHQ?lN8sm{!x^=6&s*~<((1eMoqZFfNS%m_?H)D5iYRY61NW}0* zLs}~$g(b&s^+|TLgr0|zDQmdpV^$!L+cb>3!jD|mWY-Top^y|+ZWq)1{{T9?^DA0; zBLkkE)sM?CiZy0A;a8G#^s7qdEhO$N&5~JgfCDK!Y$Ow&o4WVtIjv(J<`Sx!T&9JTp#j{1!AD)J z1~ST2AF7j)?kc*&B-cS+KsPW1`VXfcfcz>OOxzHI8;C9QFiwpr0m#&mBi5EKA9kfekh z1Au=T=loG4$zdh>qa=|C0aF&jT&bh`feE}zJJhUlG9h%L!^=;pxeU&zcC)a!;1AduHkt? zTu$Xv2wI0ZX^cITdYk?q=!LxIaf&~G&twgK&} z=Da&cFoA*2FiREZ+pl`lv^NsOvak`m^;3XGe;%T$TA62?A$I_Bz_?IA$2sKp99GH+ z7w5QWg6FCq=j&LoTb7f{z#Q&g`TkU~MojNIBF4?tf!yTd8Oh*rQRdENAzN|w%}TK% zC{V|5x$9ZGgC*S@MbSDF!r43wHEi9qfZYmd^6#idYwDU(ESngIM8@VHn)m>3tiY%rg zdMIT%_9M69R@NZ6X$J!b400+gR-H(rmK+`NhTIP_=LG(rrAZUo$i8e?Y?7gYVmS26 z8l1?46!|gSjz7ksGh3(28AZqCN%k6Dh@+H5Scu|7lDq)U*f<&fe~nBp9xs+zFsJxP z3J0z@%|w@y$1zaY8$lTZ9sdAYyBw0wjpVUCHm-jzDQY_=KyIEy{m{ri#Guqk=16)u z$6SL}TwH^eR`ee(F-$9RMmZl+D7SH~HX$Lh0;z1%Ojjz(85HOJtO5FUrFEGbXgizP zg&|E$sc5{g4nFzFBRupVgNi`N&Aj3FxZR%Qjy{xv-JOXtDg_*Z3v=6mF;6f~!+esY zf9#Br_~VoKRGwYRkj6-WIpfM;Nc>GZFu8!*V0k3Hd5CP~RZtUs_32hjNhsRvN2y+)Od6oNbT;bDZzd>tA@D)RZaYx*T7oW#Adz=OzE~W6 z{y$o-j~q_sMlQ!`2k$5x^uWj0Jl0Ltv!~gXGRYiBpkb!@6-Id^62H!!XRTUm3+8Fl z!*vlM34nqFU>syK0(k^<;+u=L$?`Pb;aLktxojM69Z%A+Bfq@+Lfc>37bSOxiAdUd zZDnqt^#l{??tJUU{wnZho#LkO&cCcprs`4HrlAC4M~P%rW*;jl0hnWy&OpKFMP=xp z6)kRU7V^sVZY|?fj54-mAml2L=W!>fBm#X+Z5%w@Z(>xrossRgLiQ-PMyt7q`5fS5 zzc@IiY`svS8bLoZy3!eF*2!)er1#Ez{4kD*Hml zu_6RwNgpl%2N1N1_w~!|H17fQc%M!!Wr%u(Qd2M!Q7sN!6$hh)6 zyvi745?lgKM?q9#i(9)tW`-q#4DMHNG5Gh$7(Us^t7-HXsjgzOo-nrnO69r8W{l_i z+!2sHYUB_sgUeP5RFU$I0O$|56_VCEm5wJ#VZz~9ebM@!az7f(wu@PU{!583pdwc# zV^~aQ2l#&b20r){C7_3{vk*+= zI^>j0jAyYPzh0HaT!Uq+Iw%1{faU2xUqp*VM%!Q*;8NdZ|i~w?Z>FM6H^~+|s)2G{?G9nyfo>!mLWPUYALcaaMwRs2! zj0^yH=O^jSb7Lv@nYe29#Nyupzk z0bRfhW1imC=K6Bm`2hrK3_vbSXPwwBV1~Z(Gan`UFucZbXKqdSt zO|<&sJbf$LejNNuUx)r6hV;nu!bnNHv5n|`iTAG%%}VmTii+Iq7ze&6xfr}1JVbda zEgAY@bMf;)(`?q}+R{srCT86usQc%30nRWu1L!>~!gYVz{{Y4_Jke01?N400Za&KaFJ3WO!IE6~a=xtsZCdI_+!6ek|AT zXTH>RDVj@yON3&J&uk9W$~=-u%#6+TB-1FQeI+_H>8n$UOUNtMz7}`}e-!FNQn+P~ z%Ei`34UEdlbF>50de@TIS>gWx8S7ph9!;!*OLB5ykY#@Z)P58gW8qqKTxdHY3WXzx{Rd?~bmP8)-~GJDh-^^P2b161};#kzQXdwwDid4Kc~Ut@s&5%ZXz;uwJDwRB(k4A_6y)Ia(dtdMa|;f6hHwl2)( zl0R~OJO0x;H|+WQW?k5L`r7MJ@K=gH9O;nX+FL@mEVp*o`jLWPDn~^s$nr+xsobZc z*9GDK0F1hq$FJG<_Okeqbdy10d2e-Zqgv06_S#*xn$g>-0FbQsGRUBiB$2R4=D!*( z>@6)_n)3y{6(Y`wm8Hsp6gX(B=BNx0(8{@dp0OO8t+2Wi3-unJuj> z{B5J$Tumzljwqu0V>`1R0;+;ZJpiwfl>lMY1Twepz4N2G5zDpx_$*cgCG$XA}8L<^h0xsV_9kZ9+)ozTI$Pj6)Zi#r(LG zk`Z!F)dZ3N;AGIT32uSVeHrvW?Nk2%CqwZ|{>B;q0Q3~E)SuWR$J!2?`zq_+A@O2H z*8cztb!}r+h1eEoAQlGU}BGG@z?G3;%^(paxUQ4H6Ik-TTU1{wXBaP+4ivDqQkH+`yf~5BmZcSn}=)kD2@D@r(9) z*SpS%A60{;MKZx#N`dZ)(!0E%A} zH7yd;LGcBiqjd$vz0l}#y<-DMPCl-3jScXO~B_ktJgYpozkjL7+{}wj+E7O znz9E$wC>N|Uxt4lZvG=wTOau5L4`A{KF?W z#&ACgd^2ySM%r{5v%EGYNS5j28FYlO5;BZ8%oikZdF*PG+Fg|88d#N#e|L_Rb6`=l zbm>{ttIcbb8eF%r`(va2#orkI8hk_W*1!8Ld`!BB;mKPo+sl1ZTas0}FFQTX%WGRd zu}ch)Y$(KTE?DGnYoV80(Y0^*DrKA+Ez}n+r+6W)FZ_m9@~;&x9LFJEk_etWgUAF5 z{1%@=((Yt3%>uI?rxiSUU5rp0WQjy=)MBse5nCfaV*0c7`}QM>IQ~2S)AAt0Np-E3 zJ<0yjysszymZ6Rx_$OD#rHMj==bR5;vD???(`lAX0Jbp?EOcCPOD3CVC`EX|5&hme zQu@NvPUU+e_Fu$*0X$FpSN_HS00cB|g}3@V)A(vAj-mGJmx&SKwtIOa%yCLYi6;eE zFC5oR@%HCWv;DFE0A?Qrt?j+WtKsW^FHnL9-eL1hDH&nGQ6YuOEAaN~NYn2K zYlu~f@G>a3(=2UKqk<(>ZlDgeUfo-6-+;Z7?tb_F(otJ})!rHSwfi`DO5$xV#{U2f zHJd$l4KChM6n-PN`y_V}tf97v6{NUm@LOzm5!=Y*D*;$PvMuk#9aHuyi^Kl_1ugtD zsCeH-*KXjr(>zwQHJ!HWqa=$wP_jyrc`umrfu0XSEAX%TBTw>79!l&dBxAi3X&QaR zYZS1nDs%)>`p3O{6YO-g&(YubD53bJ4d=pLE8_06;XA!*+fLQz{>t#SopEBiV7L|m z)>gQ_x--V_5m+2Y0R7XQr#Mf~O3k#>Y-~w3u__bPfmf?3&ze^>j4Z54MMp&)Ta0mWc$?IQQ_)#vShA4nh zAEwY$=hR}pSMYRsdqO)zfAnkD*xn1lR8}2@c{utU^5%=PJuDq=Rc5Y_O3^g?MP`*V zY|<_mC(RLIk{caVf={+SgBn*>(j;T;F)}+J^{6)^5s#P^=cj(%>t@SKj%fVIiAVOO zNUp7}8Ezg~p+^m~3FVJN_jA)A^XpzhtyYZrsw?_`k?N%ht3lh>V-Lf3@>oh>Vjd+_ zRFOzK;u!<#Q>J|}oSc*C>E*HpP^=Fip1Ax)a8uY?&u}j-z_gij%93JX$I9cXQtVYc4kajre z2=w*(Q=Qsm3J8y;P6;^n>5eHJ#*mpNCmbFDCqG35)79Yvcq+hw$s`ZR;=dugKTSiU z!Cn|L^amKuJvpdjgJU<$-!pCjh$L~)ALuEPFbZXm?TvUI(Jp5J!U zxHBmP5#N#8lMvbF@?$0__ey?L-6jT4t_J{hCkC-0up)7LbB38l7i$hP*PLhhR@Kb1 zLnKZ6%uJPVi8D;LDT#6(MDvvNo|khZWFS+bj`;>c_d{{{Twpl(|uoS7pdx2jw7O zcB?Z2S85)eew5TMxC%4vgQQnx-MH=Lh{{ZTwfOF+>-k>ulPPpLXwP9+St1jqc0o17lRj}tc&M-YX zbDF`hz4K&5w{SKcjG=;p7lZQTk%9-|k)G5wrNLU~Y*_AMPkdy0epMW@p0h3@BJXVmM*U&wTOAF0Xz)Wf7#@@*vzIl$=#5| z9QPb`$@SyErA+80Vq9fLa(id$di4JQ^-(pRrLhIA%n{{=?a(pAea8+mPBGL0*V?7B zqOLeWZjs41oJmklT0AO`&-3P;Z{--k^0LRNAdKhgbJC-@)8e_dlG*OAP!gn-^0ES) z^bz;RAm*~H^rdUru4dHluMs{$4ALsb7aI$>|N zaV5wKuFnV!@&Lf&b6{tZ260y8x=b-hjANYq_&NMADz(kMgTU}yMp!cP?<|5r+z{cn z40DWg>F-Ic?bt>7GlI*R4D0pj){ynn_>DM3GwozjnNJj%eALms z++Zx8Y3w&HKVCCYd6Gmn`Ex1A0erT}`V40t{VLYyvkfiSbp&(rmgM^kwtotc()KbX zI*skjcHd{3I8246nb{R~pxgq0%ueRxkT}n^Zm50;jBX<*E(Sfh@ARfaJkn&t5fO2N zAlgaE$;T)36(LC?jIqJ$$L1uSbJrZza^FNxHM*6W-tuW4R`S453WR;_k3ujoLG&l< zShrV=3$L3aLA|ztAi-if?ap(LrE1L-kANfq<0B*zKOQSCOL@eH&O639BX zVPtbuoyb1aRZ8zxY~Ue4ah^HP>rjM`I3=^#p~gA%=B>#r@rGCVfzCq!e>$%cCB&fM zrZLK#f%sQVnnoA7rEMSlw0yGwLa_iG9(z|qYN`tN$lz5QXmU3C3NLoWc2 z_OV>mWL!~jvZ`R578w0N{K-63sL_grkx3+BvD1-R?;FcBajpmq8Hwru>5qKi{uQdH zX#|o<85#7hMs7#*MmBEX00vHf$*R!G(?|&USNLnO_aGwy#cBjqf^0Q1-$y{g^P$QOKP?u_HMX5M4VACbJX?Z)ap_% zHS*lryTG#aF{vLYVnF0KQOGr0Nw&L9(@e`6@CvBMPhP#vT>B>GRA$1*j40?mYV3Q} z33569?-?h*`Shn@4VhDJBf|rqsU+u$j@}_2042viF&O%v#-WsnTq9)g3HpwI16Lsc zj=YY&s9;$nXB~wqzXCupp47|=M>}vyz~Yd}%*UPIl_X9Xmy!U_gVmjph1HB=nN~d?u4n{x#@zamzOnw_?0Oa%3^OMg{ z(wx}gP6+GMIL9OL%^4?=_lHsMO5?Fu`Eeonun~CAU zTA>;Tl*^JCnG-nyQS=@vbgll-fG z;@%{ILX4BhC*R()w2N~s=Hri$7Wd2a{VL9*blzvmpoQdf-~RyBRaNR;71ZQ!d1i?5 zv9XU#^IluxX~JE_23CG=FI(Du(OS$b=tfB5@&wmm}DCMgB6ZZHWfqSd{K*5k`N%$oJ`rUdFI$&{;>z>s4B4qQtQ|i9s%q@Nf-`oOjb%@|2pcdux{{WE} z^{oZ?6>A!wwd;~>0Fu$dpo5=6=Zsfe+Kec6{ivMa?hd&6b*%fXV$<%l<=Y^z3`yht z(0`RwY4$Oeaf*_&m*xIOWFH3n6%G>PQ`9AP{_95=$>aWcvG*L-vV11^ZwzlM7nf+~ z&A692_bae|UFwouF6Ndek;%qU5=YKDU~C8Sq!$e%ZChKE11Bck@t?$szh~CxJICT5 z+GfG{aq!mFL0vr`BXBJ=(gHF&nKAfRn0!{Y@OF)$$7`YKc97j(Tp|f$Ogct@vlV6~ zhE4&;U+3L4*S|WgjP9ekD4)%bizc#73y1t)jr&QP-2*=W|+5;SVDypyt(QX`$47%WD9PywwgePc$pNMn1s zI6|^I7`GjxIoh%_az;;D=qx!py-_2zP}uyCo{5aMG6LE z3ZR_eoz0QS$?KACOAM2na`0VTrxD7EvI136RZ8rP^Sdlh11A--JYlct>f+v5lgv{a zVhE21gN&)|Suf+?92vZe8}T3ah=MKv=dQ}q9@V6xm*4*Y1NyPgJiC_eZ~FVrlH2X` zv@qIf^2j1Z-tq@>;4a0^00ZvlsOwS>40wj}=v+RWim~oEk_B@hWDABba)fOP3hf7; zab9(Q<6j-zTs}2>l_!EzY<)QX05Mb>Sn*ZT;^$evmz6=1G*_c z)&LE*9dx@n#?YlSgHJsXeIm)Tea(|^%FtWY*m)-vW1SN&&+xyRc zk5BOBg_yR~d{u3-G)UtR+%Ra;F@;}}UV49b>rmM0p9^%N(w%S3obp*Ac^R1FBoh-1 z_sKc03py~y=E?P`;L+m*lw2Hkrtqnzr&0W@ijEm3trOhO#9xN?!OxL@dhFa09>u`+ zF23EfSd;u#@Y*pJejJisep7Kc{zY7Wg?Wk70`ZQNuVlMIqJVnmy(r-5E$;q*DrKg91E+%{vD2zew0w?^y!_f6rRE z4VDxQzmH1MVX*6HBGe@JW{jRU@tge5sYtow9ccnc1KXHb6t zK&3i#q?RWq*kk_yuT@&bbF>n~pO}+cMx8I^UvM}{7_X>m*Cm=+=a(e>&nq@huO^`| z-^_WDfd2q^*Hs;yYA`?mbj4Wv7T#26KD<`Ss#_yJtKV~xO*Ue8Nh^BeCbS^1V!N1R z_RqC+D`~$Yq8_iIh!jYb!eY8{cV5s}ZWL}ZO+7H7!MvpM5|iY-!7 zcQ_?Unn&_hzlG>Q9!nBBls3dj&06nR;X3R-p#CwAC=}*&Pw`>H9?;pZB-HtxJ$KzCBQ^^-A#8Wap5j@Z^4g(SnI+hq6@NwR)G9{uxZ=zidGT&5OAe!VvhXjBINpePTsz*F$ z`u1rXO80t&)VHnn_Zv_QNrrGo-Qyv6#sEH?R|R2g_qU=O!a$U`C5{5I&JSs{T( zp`q!KM+_`(rGv}HOKsnRU6qb-Njdt~i(}5j^S8>iZ?fs?aaz8gAh?$9+jrT-?;1?R zBNhWBbq9cXJwKIatWBUT<Ki2q7{V1N zD#1?U*m5~F&v>fMZ)Lc#-oVWoWbwf`1GhOV&wB5{txp>?#PdZ$OHRI*Jm*PuZx;ts z!MT_4BsOc*?DZGZ8hBnSuP7fiOksvY0g?BHImz_qyk|pMEVY;;pDJQzF1-lC9P{+A zVYRuN5B69$vtdC5w>cn#)3>E<6}iutKYl5HD*a24YS6XeWw)HHi@dawMZ5KvBCN#> z>v(U&2oiY!2<|d+pn>w_X8`9Js&@-;WlNTdG=-3dRxD;Nr1OAC+kwV;t9GfaUjYh0 zu|*Li8C~+j82MYvBRKc(igH#scRLhOA}|*c2?!=gVwl8EFh)uhVy6IY=zD|Prnj~8 zK5)oajFXecr&{2OYc}xBYY2f|)cI`Xod!tg1{y@E&~BPi{qU+lKUzo=%0c#-8g>JN$MnTy+35PB z60pfKM)N$S+vfw!B$3JI9{di%v*b*7HGj2i;YRyT+jIkS7CS<(sbT;hoiF?(x)aKl zaLAI&Duz(90t%7$fgMNC)?TgP?Gs(FlTFqVNv-BxlOj2dWF5f^&JS^##y<``H)W^K zr)c&OMGU3iY@TZYy+9xVA|6ONAon~PY7n-p6^`LA(YF1L+sqw~?1PTDIX_RYYPI%= zWKhgjGI+wB-2NG?4-a@_M)1|5TIiOG0wR0J+=ks~2hUE~(r6P$63 z;ADQj^%IJ|g1)*G#pas2fzw{%HoMv8Ex7yTPko?rI5oX*73}SZH!5Hb5k!4uR9jux zY>)y4O3@ZdutJMF#oeX2yF-B@!JPs{8!R{tfg;7VxO;GShakn>r8n=r>we$AoV9W! zXYZYJo|$K6LJ;Sj_p@fr)fc@31URAR%rVVp10BM!-HW0O2Zt!W5vHn3f6Bm!jPL~A zMsp;Xw#76qOgKRFGoGMLs&D3)s!(80yZ45=bYk1LTvp-!4GA4Ydc9Dc`nXwPZ0i-r z2(?H3m*3>64Criy#GdrzZhKjSi4NI%F}s9eF9p+I(!n8eqM!S4?>EusAgAB zNS6^0z3De8vbYi*E(M`*b7aC!b6%N+b5V~(p?BN;wa^du=)tKW=4~TsE1{-v8@w2} z3euI}^2uVSyEQ45ev0CcvW)**A9XE= z7fJ>&)dE`XroOjIkCQSxyDBnr9+0NQpvHd}%0LGTjF`=BK_c2A{KvIRsiO9coKnQD zysMx%=r>up&vSZbjGc7-f(QUnR>$n8lg0Lljc_}Hf$gn%{p+puFzr6M?1JH&H$N$@ zH%-HkO=~q^s)4A_ zc<@}D6q7zU`ktCVJJJBwE@Uz9m_ zm{6R3%x((*RZx0^o2?{V(u%;wn2}rnpuut)TlqHN--YSRK27P9(PBAKcS-YdH`t(; znm1JpC3dX8+jnAdM>u{cS%y2m|2z@+55Ps(K!$|m-WMzIRPCi2DA&$Fbw%~Q*nU}v z2Lw7!B;NV&!axR$19q<2Ysz>L8fO^Mbve{I4Eo7>@*A2vw8;DrRnlVzXXVDK_PU2x zp>Pi(T!nXnbu+>N6H8$Ca$Y^^RONUhIih8XID(~{$WBo`3M?k9M`q0~H^VVYV72PD zNxc6Ggh^fzimHV#E6aVNkna$!?sq9zK~qMSlR)lm8D_>^%7@)I@&)<+qT16uSplp(dF=fi zh)-0Cd_jCd*d2!$nqG)U=1#4=l@9nQ9!gj$ZuXkCkd{PI)m#L-o-gWEb-#^AG~c>p zH%kXWNOv{@wotnCBg&@v!RVtT8Ft?X)_SN}e0K0{bk(P%L}>&^jh@-zxvkj=yi6(o z3&hZ{**R8k%WTk+#kGOLHNb5OY*CRPsq=Xk!dT8%_L$NmyG9)=iS^ZkX{G7OzO^mx zMgH_6coM!ds4Y8f{*C(^f5*PhiLq?1^Ow46YPE7%t`3R@kyz%4hM8k)r3Ctvu6g$1 zgg+^`+#$h9p>a|MAKc&7TiP?2*@=!AoV>WI!w)%dGJtvz^A!O8{vy6A; zzI#q?HY)>JJ981n6E8ZkRk#X^ZOtM7-rN6&IqAt;u@llNF==Y_7Z6gi&4ZRIX*IqEI$4gc= z5%oOl?{a#>7}igE$Neu%(eHPugWfYv>q__Td+u?|aoe2@s^2&> zaB(%D_Su9S|u=<*qRlgy_^q%H&RK>RUlL@@}kjr76uasNM&FEz?mEq83yw+?Ttjy@9S5%eqH#QSLP}mkaOB6PXT$V;aooC@!YXD*D?apGmU1 zOqg1y@-*Iaarb~a(Rb1I9!s>wCcOE$cD`3a{OsE`ga6uHs!Q3fP|$y$lM=jw2GYcA zRr^RP7P`22k5OJ-u{EEXcAUXqT_;-?iInbRb2$YH-p}>(>Y~o>2!-&W3&+_%@jPX= zIKPeZ=XLiB*UjjU`Ps-y2K2Z*k@D0PRf;O!ba`xu=JH%v`0L-y-Z_MUdFUIk*D-d2 zhR2-Maw`@@x#4Us#Ago6GKxDeEp{NL-nDq*eB4*J``XR=uJT4*ZQqBA5s#r)&Twrf zP)gx6%fN=3ChX5QDzy8}h6?;!DZ|qVsUmS5ftNVcRE)IsNS^?9;ZGY+67tQ};h)bS zp<)IXR0NOI6URq84;Y`n=82ScD3GHac4U}LQ2u@kW@4YEFCpWOaSp)hafDAh+*wulF%e}L@h`@{Cz&yTqz`BHdEKn?8@^1GU) zh7;D5w-DiVBMFKgTNfrbVE#=suP;*jlL z_Zgc-?2ayZeWH|mfh$};o%v2rTt zR2R8xA7lGz(tgkdT;(62(;8_ILt0|8bf>$D+$SY>?fzjHn>py2FhKerV2DBtNdwmf zJ=({R7;hj(6tNjYT>?^db-Y?M?fmeXb~VoAaHuHFA>| zxmhG|{TQ^4)ki=1(-70BRqT9p>>mJ7)_yy~bD$gXtiKqvPSO4kKwhl-@o*rg7O%oH zXgjmw85P<1)3?{YSTDkB7=#Q0d2}k{VIHeTAom@~sS&F=4r+8po?-kS;EXszy+N!K z^BE1vv-fEGRa9KvL|^>hi^H%c@n0Kznio6iF@2QbKAOtfh%TEuLmEhJ+Wp>9*%W)Y&f3sw6ndsQmGkj@ZrjAR`^4Dbwjg#AhI|8ZhCWCA1NgJw zs(-n8ZaZ5wjw~z^o)t-bzB4_|yC9zkI!SmY{vsl)uCf}?P9uvry2H*ln|7q(&u;w7 zd8g_23=;3jN##kxA6J(l#<~i6LC`ieHzan?rTBo;CB+b?f+v>j@3vm`FeE9qi@dIh zYTfzg*E&lChoG^1m(9SBp5ycPMB=HwzyA6X7~ZH?dAI}3Fes#Oq2K_)psNEknQz&; zz{JI7bIi0*-<$sXn+j3IU3+Bh_xIS6(2yby98wU1^=z8&_IpxNg|m}3c{f%>#uM_Q z#sz>4OWT8S-cNr{sm|j3`JxH=-elh(=;l>b!^s_8ZToNTdiez)%tB6tLv_b)b~05a zIjuMW1`S>ko;E~c4E<_?vEk6@Z$6+(8aV*oi$IC|xGBMu{FjUu1VgwU!oVl7C+(M{ z8~uxZRu@;BX_FkH2EWHKj#dP((SVat7BU!Wcl+{vYuj0q#hk8I^%gB*+Dh+fDLawY z-Wz&epK*(k%`-O6C$IA2oEpo7eh$6CWZ8EE$Aj*4?4kwew8O0f;IS{M{jNy;lps)Wv_U%Uwi{uc0vta=(oUHUQ~o4Kk6^!vhp^wz0(eY_M-@3*5@1W zQ~1F5K1=&JxJoZkV z9lJbN4@l7?=fShGMW*abHQ6cFE);a2z*g@_K-bTa4W<0<=YGh)Qziph{4_jR`j#fm z6?7MvEI1s_F(@%+G$W{W;3z4JRn$;eQ;n7>@Z2n&PH6F-GQ7OKsEa{y6 zQ_h1f+hrtp8nIYeYqyOhEzScC0gy3qf_LkDFX0zEKl>Ink|`}YEyPjzs1xR(!1avs zRpw}U18WT(PACclbTlUx#%}weQMYM)zHazI$A zm|_8dyS{!oCNQ?4)*j{YUAsPtAm5Xm#E`WC`Z#albCRI3o~i)}h|_%l2H7YvE5KIX zFOno-n!N@3-vNWc@j;>)cxPB4MV{Jdz;E)D`?;5;2Uz|;zCe!ZjT|Y>$*3C-f@8BL z^HGV-enkm~EC^M<{s%B=%sY0MWW+j`n;Yu$MLGs-gfNoONH5`1qpC>Ifnf?;Fx7o~ z<4QKJ61XH1VYK=)h@F*ck-}3PppC8!^b4)>TFMHrc}DBuj}T?D&9qD zM&DW9NdtMY7%(rzV(rALk7yG|E^r}uT5r0L|IKJPm;7U`^3oHKemz@Z52{pEc$qIj z)!?B0=t0%CEtnSsr;6-+a?>p{lX~Cc7jmBn6C1lIZjrxp*RkvrA-~uc6I={?Lx+`% zMq5O;b?(EXl_;N7?yyvZjU^1Vr4>M};UbWIF7<}{U!tuR>mQxp3gGnlo-?hx0LFYb z6PtJyUPpOCgNL%x9uOq{y9H?5_nXCxWCNXO_cPyzaO-#VYYb>yMi)e0=t&SWz1)|l zi{U?_NI@HR7mIOMp5xbJYHzLN^R+cW@SIx3E-ko_&#VU&c7JwJd)tI z=-9%`I&uHaqqnGPB2w6aiF}e8`yXtzm&%0@*1Jhl=Ri%k^wONjL~sW+~V_nrcnvNKkx(W>ZN0xeWPP}|rU>zF@xPIBtW zqd`9^ZUc!;vv~yHgR^+~h{h^_R`(f>-}zi3_+(U62X%$xG&t9$>WdCk!5FSXNW)7Z zJdrpOcU)II4zWz?%BP{v0v6tgg2}W=^K{=MvH}|8bk8j-s2}BYI93i18U(ZAW62N~ zM0~KtmOMhO?CMbd5>6uA04BrOS;Qck-WB*y;De0Y<6Y~=baLqkoj^tqx6}Rulxf9h zC3q_~%FmUcKHi{_i9FeNb_$=xE{t%d5!GjlCexputzG23eV6wqtAmYRwraGn`aFr*O-|Gb9&u}Xw+iNncA`N^mZ>H|J48V<26 z5e=(F#kG#Qid4Qv=z|vJsM2{iUG|GHO+avgD`Ah4rldXUXsk}e4mBl)sL|^l-#JGG zI=9Z31&8wIvQ}S1K=CLyr4{&!zb7n#=|=2r{9_ko4n|ma>wa?-<-h_46YUh|L?D`AYB!$+91pkTIW zSOI+tqGE4PYi~$eKbnx+4@W_clb0cWR28kS@xG}5%(>18Q>-(m)366YGUjS zZ3B*;6a=!HiRq#?Mq(MyE#rzR%rjwRldRlIT&5KLx7=C3KeL!r9L2O*b_}*JrGpJFei9pV}GG!ah#H;sQ=M zHB+Nw1OGD8Pi7Z6mkiXF9m3FX9K^C96lv!H-+FmV!y9ow9fs53!2`%E^S$NXVrrO!B$iepi(a>;;kL)T6$fM*G53^4+=EtpL{ zylNz~5(JmFBroQOw5#zyF@YBYcGd|u|5om@e*|F0Vo`u#S9t3CLnh%+LCTDaJ5yUy z3(4>gQGEdlqRD{)IPxJBM-EOdTzpK()q^DXSoKn%EolH~GoI@B*39&Hjjq}V3Vk-q zq0b38Q7MCbIq-Uxa$@hzcz>I9jn5^M;VEi$S@;hWpWew|&YQAAu|fb2U*w?d*^FO$ zsMXc=7XY{gL)?O)Xt2wy1>OX~K8wh5mtHlez5rQ)A`d%9m+hZ_tz!)3bjUwoYx$T} zb)Ze}!X7OrD}Ediq`H|f*PrIuZzWz~2Z%U)-kZ&(wLld>XE5OegL>5)D&^FOGc&OP z0UVrrnn#Ss5ks0bYIP}H=W@|Y!@AqCxBW6?zz{ilI+XFbB=3KKo79v_`D_xr`2&bN z<+6YKXlpE%=m0K6h7uD%`Ftmq>>c-ml03#&1OB8T`{Pi>5ZR!cr<`s^~>1W{?-SIcXfl!{JrMwTkTtzcq#XtIaL@{ zVDR3nyvcQ2S1uE5^jMXu19G*?wKL;ru2L_DrR|ovi*HM-#WlJ0_q{A?8?4HlbX~bH zIxqI+$c9u6$B1B}2YN6}%{j@BGUur^>m7{>#;Z|Jbu%MBHf!AD`4hEpNk zWczj!_e{}e2PJZw#u)jY;`vv|fQ;FSTcynp1yP@@r<`&g1U#N*RbNE#mq%%2HkSP= znBFhE&^z9Y+S>5BD$_f%mZnEXOxBuLW2y9_iKqya>4ZsRw>HlS6*iIerKW$6UsfdX z#;z@SRVZwGN?gnvr&`7@Z}HGlwWqeV8aX55q|;)Fo(%+@Xs!Gl-~*i9Yt`G)O>$QO z67)2MtA5pgja9fV+f1DAax6(@%_B0C5B!Sk5NQO0FlmLacN&|0tRzta?H}E^+S3Qd z3?|k8aA-8~a{Q`S5fRM2nEo zuyC98Wj!ZTbaQ9>pQI!_XPY*O3S4~kz zxV=ZfIOCjs?e|v5RIouvhI+q7NI^E$wVq3+@q&h+#%hZawFh$$v(4wS+~)ZBeD!FR zp&#!ZSDtxDLU6}PtQ}3m&oOWF*K-Kul;vRmwx~|@~mU%^<^K^@{+C%es|xi z!Yc;Wl_eh4oj?A~0LyU?s&6Iu`_3+uO7(W+V_L6+AEkniLbz|IOc;)~R>ov$MWTQ@ z?)U*P@+wBsSI*S9o*TgyV%*UO9Yd?akNZi+m<7(mJICh8z+A%;`HG!Ee1Z=0HZ{&^ z0M>!YkmE+baQKC~dv>+^$k#dOx|VON-mssjX;uy(2Ouq5d7)uxrV?x6JNJCd9DTDyV@6X z!OtOFzP5C3%6ev+ttd(0Hy?gFuNOpz_a%=IH)wz6P{45IvqDx`!rEl{Q%Zr?q+90Q zPJi7N0-lQXPHe4LNAcvabAehF9xhtB_}O4b00))H?*ez7 z;YgmJQn^$=q2`hIAXVLI8#DZEHA{42swuH#@hKy!O;7ljPOm&-H$=Oly(+fBf%K$JG@}-Hinau6mrog}*Nrj^&{-|Zt7HCE zaZurzHu&_xq92VvoVakV`g{;^N=HVEVcj|9opDc5$hbb@J(~ zG=`kW9cTz&k#jhj=t{Arqign#x4d~=64BVLua5RkmdNyJcEgJ)_u^p`buc>u zeEI1YAG_+8o7son<&^bvTz*{8m{_V}^h%C#^rrsVtQ@r!On@3MKyWjQ;`eRF3L74m z7Z=lS1py1r;DIq}?cnF|U{ePJa%D$Kuh`M|XUQG`rIY4*L?L=G-S;iWi;F^zZPuB2!^2kE*xwPf zH1(kn!B}W)?YKD$W>4^{ugS*mpzsJrrr3-7 z8Oto<_@&j+J<~AS#%)jc!3%XfTnnt9!p@{U=F9Tf>&cc z?p(#YAr_4)*+t&I9zv)s+8#`ndqnx&%a*B6b=|xx+u@V*{bUrXl(jO>Ta9TA(c9=j z?90~l&Nl&a?Y@KU?a?#ZdaC%C+poyMyA{JIBc|-;O2#<3is5}7i%U`u@oUX8G9TOq zaQftYhaR*Jcj;9%DpUIzmi zny1J`Y+G$kyN0tPGT)CHWj8rFm4$x@?Q*QuZO(x8@P}wls^p{{0WYU<@0_Q^fLX4H zXjW;)Pld+vo%38y!IIKyRIm!yuLyslSkA>-CpL6^$%M3TKRG}{&KvsBV4jG zeihzjMFZ|Hl-*ubDxxn$<59p|)avDlF6`Jc3ysqpLpv?km7ggucgmQxW6c^#SbYDz zFqWsI8(PT%1hV{w;vqD1HGLPN$&t_tVAI`<`pM?JXmpAisC++0_Lg584|OR$UrjlRBdjSvU{12jUXM2k zy@e)RhVpwrZ@OZq0n9c$07c30WkvnoTkd(2 zfX?X%nEry;fBBNm78aO%(a_`yJ{;2s1?Rd=eV(124A*Q1&EFyD0{pF zYFilWk;te;S~{(MUH-`v1mjG|I!2t4{0#&){Fyh9e5tiO%zYz=js$-rM6X7y4()3= zRz1LXUeP@$@v;)?W9U>)%&tpD(W^A*_LAQeIYkSQsl1P8+N>wCdFx8(o;UWxA)kaI zQo-Q^2Z!Fz$v~Z;? z>k{uyqP5($vCoL6J;#1y*4OI0D-h%Y{y^X2y8QtokU9j-t-AVj?EbtE-pWzY6U#VD z!Q*eJD8`?3VVIval%|})KgAh2a9y28m`FG@Wt5LcYpktzT_&kodI!{Hc`b%rZlmW z-1_czEgsFrc-&;W630rI^ffN#UT1jFYB0I@a#UE~awGiWFui}{{9&WPE&i+e;^kdC z%T9}ZUaVZqtn>$czt~q8{4G2nVrxY|?i;qQbDRTyXV%fbJ2D=$FjCL57k%Tt38u_} zBS8e_XCFgWDI1e&N1|iG#y*Jk=uRuqi1FEXss9lp=`**DC}ZMYc_Yu(jahJ@fg8}} zJEQ(S*4NK(`Ue9Osc)Qbc&uf_oFih&nYJ}n#*{z#3({$oO4Z;Fj^OLUVJD;$+{vn5 z+O~$!1~=48f>j6IZgqe8Tc5`DP?#D`2urPBD=mqLOt0*fZ}KMYY$rrs3WLFx@0&6u zk0*D#O|55XlHcjbhoCg(CdUo+BdBl6X!Fw#&F#ltA0AA?D(ViVA0y8w6TE)edkJdq z6Q^J!yv(3O;^Ka#`OuL{5IBxM1PpTxJGYwLRYX zcqeraq!f|3u7F&ztk2~}EI;fg&$44dXX~a|$IevCH$^z2zK#WhvxyQxpBiTaG+5J_kP`5#N(I)4{51UA1vb^ujRRrwG4b4O$ zOX3>dWbm(N#xil;6bAnQYOpR5DOH&$7D|DY-{%GIU~7MTyuUZF>7li1+8soz63-q5 znQ|2McrdmHsvDTv{_%Wv+8xW?Sc~?9TmJ)uGP6I6A(>X}lU}jq|NZ@*t+zfUc1>Rm zGM`qUSjtrm;F_`zrMh1afYnDaNxwMjq`w|xh?+PM^@;+2c4ajGo#XSIOYDi9{8W*q zjsp(+sE7Daw|{qy^9c*@$va2{m`0pa2{&(MY}f3YHEe8>_))$)^9V+qBKQ3G(@bXwEgyp`Zj12 z^!Uc~mg~P!zgnHwS1mF%+?&njnbXMQ3~|Bf@6@ub|JeMH71s2~$7N_}q`w+@=X+f4cXv=ZBJJ#HW|f!iNH%yN$l%)c@3gmXvevc=mz__= zv-Bx)o;`nj-cEhS{qOATkIW}TLH{%6t+b{SY>#}UD_>Ga$j82PQsmJ6qQh8^FZgvy zvOI8_*bCa9yXWLx4a{)=2jD*rXqZkXUenPXd%d^i_r7RYkW)c zgMPH6uJXHV(bJPkDi_!mujxLvsUC|4h`oMPU0`WH{f{z+@3o&+_^Un*A?KMsa-QA1 z45V;S|1xJVWMp75Z`8if-JVIu>qbYUnALoKUDB|TsRxe#4PgiD+x7@XL^wIK9OX?O zy}RDoluhcWET)CQPmYK36CaEhP4Y$GMOV9|)a^H|uGtR2 zkf<;=lKTAzxETHalRhtQV=j8f9Efi)MDtM98)QcZ4j|F77=~8@Al|6WerXV#D6?3r z2Kki)>o^w$R49h=epzi(%pjiNH}5jjS3&*o{Ghp`_Ghrceo-dEQhC~_iTM#}8w(Nm zm1J)H33H?!+5X%Qqs{wbP!P#xGNl-0?VV$n$NpY2>RmhzcmH5CR|hUk0pRNJ^-=Up z?B@U9r2U)jouPy5pmCOb?rZ{nY5uw#>RPQbg9+F0RsrrgMaH^*BKJWY4MeRLn0*NFdj@Z)ZE+vxvi zX80{<;R?%P+e7-VfAQFrZ?rgbMuHc6KECRDS_ocx>$=QgQcJPcEk?NLaGx5UhhMvs zUcg(xpyOJB-BX=FHIU*$PTD~pOm=ln+dHT-SjyWr=J@HhWo|W2`LxNP$!&G1?CSX> z@gWWinc?iW8FZ{4v_6O&hPcU!?zlI@NK4|{45=H-A8LP)5y;UcoHmy800m)`3}l+X zm()P=S+*LbotWJkv)BnjH3*uEyyo~lc2IcxmgQvo!8KAhA8LC6wRSM;6KUCeqpZe372qg!qLuvsq5`WHOpve0Ubc} z#le68cT-5U-1s7gV`ywvzGvMZP|X!d-yR`NjG^%Q>#=+faceJjbtA(+Rc|Ub^>ff& z6z(s3-CU&@U8T)ik;}FmhN+{Yv-`fNHQR|f%ZeCWzXv9&(NW zu+IzZEXWsqlu#gAOmS18cQbS?E#~QLAB}dshFvhc|1Lw_jto@t-c=Lk)A=o#c0>)K z9KO;vHkbkWcj^{d$ZeZYagQSU>wk`|To6^Jjy;E|ErdFLReKR|bb(*s^8D@QK(9@C zgqZBOVv`&_AV(Vgx__WJqNnb~wd_W$&;1;Dgd+;IBfA;-bi^T=%XXTv`=u45Lz?GB z4Ln*EsdRN=ypUYN{9{{0^;Vzk9sd9qy&Cb^y*6{j+bl*1)>@Fb;#uO)d9-v^I@1OtxAwcDk;8gKEjUJCb158L z7CPlCOtipbq`jRJJ_oc#h=p10k3MAh@h@qaz+^){F$-h}U`UA}aR@T=r2^8@>)MoU zF@GFX37q!f&v<@7s%`xr&K`~&4PI_`A)d@6qjE3Wj1s1@%bIo5lZ1ciHGFV+*>N9% zu92+ZZp{F%dT|(4U?9ljxRVfun_cd^g%5&H>k>FP&{fgIQ@aPO7jKVIe^dDC2*AZd zuCe>1!s8;^v?cPhnjUqO0YwDB1Y~T3?Lc1Q^6@%>6 zcG~E7B3%zvC>ir|#3vFY!x9<|^cYy*O4%2IlY}NZ^-r+vWKZ$@Fm!d|%YJ@iN3w-U zdRH|7-!mF$sI5&%ps;n}Fhn|(AFoq#`EA&z!4$Yz!udM|bX*Vpd{f2(XBZ(~8vYaS z>WCwAmlCe1Ek7xUmYPHcW){>AZ~FE7mzC>be88*&UAQohyF0RVZEA85H2v!2@Xz9- zAT#empo(TAg^&xesQJDCIT&7&xLwh&9%#jGDA-r%CJ zrAPkF`Al{5lkQZgR`u24VOCRQo_(Nre`n++>Ct7ukmEq>h$Tq43X*%!@tmxkp7uSJ zE)i}7x;3NP)yjj}sSW};52Jnkrtu~l*q&|CV5FPD_it^Z*8zu;h&G9id!k#fJaa~g z>MzUelEeCcPU=?+?>+?E1tVfr`H>Qy=^JFp~G13D{zw{ou5q?g? z_$@`qlunN;Wkndq37a2Por*5ZKJH9VyJQYgMQY=c9m|%jgq(z}z6k~>jLjxl7V<4O zicE9uTCU%)2#8+AaF;MM4UvsKbZ3*`OXxwf6Pu8}WKYQnz1NZ;jhCYp32d3}LB-=A!$`;KoQSZCD=-s~nLcEWrqlX(B2-|3ffLD9<{ClthilQca zpL!xwC&x5-b@@9tvagk|=C>^8$O_Cp4S!f0jUiTwX{3J3^cs+*;ub4s@J_jxPrP(H zUDgM{=DNcF*tn;vE6JsT;d!>VTCDK)XPw>43tDtQMDP;u3UN_{-ldzt4J2^Ar9Q=5 zhHgRe-d3JWW@j#-B+&~{uTz4iM9#){3y9~@qTYG++X)t!WMxqYFm;C@?88Ydq4$V* zw|VtJo|R#~25n2m!DgZwUbparO9V*;PM@WYTjUI%TZj5ud*f(;pG8$I=~jr#FvhZZ zz}aj~c2jk2jgNJ}a41{u312o^qX>W)GF>F{${V%(gk4C^Q z^dhcIlhWLC8DPTsH^A4D#O4zrFVd=dZ}JEBiG?aZp>S33@+G27Pxnp*!@da)rs&BE zG63P0C684Q3w=f3U*0`?VshN7pa)K)G?LI<7vaQd#$y)v;>n?r!TV4We@NnkD&iiND$B(is{PHVA}tsvyLW?tMP{+3FD~3a=3~}_yDMSzFgi8uXBpJK4`E(S<=JK#5`+F zkwDI|WK`gqWNK}hilrutt(Oh6;+Hl)tWFklTl9MJL3`*gD4*w0QanhD6YPMfW z2*rh1Q?d5l;xQ@AHq?U;OON*t=MCA<3} zAb=oUdXg{K=p^+oU2?^Hd5x@g%G!wtSP!Z?I1;Gn%LVu;1QWF{&l>K2y-p!!6U^EY znj_Jt(hUBct4t(VpSo+yA}11Y*XwuFdBD;1VW*&P&k2=77?SW!g6i}ml3`Y2DGv^| z4DS#Z%sQ2al$e|M$Qq`c4mBl7ps3oTnR7)?h`M|=Z~WWC?#sOT(?e%Jp@Gf z%Z;R*3Yh+S6StB7QT7qK$0dRYU7dW!Z9hunA%9^ zpi*knm@_z~{BDUV{>3t8W1ruQH5#B0P)L_Jg$BFwy%~y^LX9${1}zbdoj5b2L2R;NL%USVA6u|wp@@s#Rt<$v?-in z-FyJQxxrPs+uBll70XGt0&x`M!G-jQ=6`_K6cMVLCQ3!OtNVIfe-ps(>hzWmPc}a$@gJ)?eH8(bU~=P&cA0W#ToT)HPEXA2w(beX+k|$b4)=44ys>bp@N@ruDcN3=^6`_Oeb?a_;Cf{ud=WH|<`8^5ueUOoK9DEFSB z&7#K)0STg-Y&F$ImR0o};(Dcq61c9SMr`6hkcnED!81NVs?|V)2a0whoo@chzPc$3 z7?^6FydFG8?F&lC$|tH0l}!48RB9Nr-(m{T{kY&TE)a<$eXe00G6ImOQaoto%zId< z)=OwI0dl`|T$YS3LNO^5w)a22x5VMq^1alHGh>CgFc#v7Zb0$UOTvg{#SgSTpXIG8@biyY z)Xw*PR-mCv88Zo~a*i0p|1FPxT=w)A*|L-M+rD*3vT9SMwXHVKi#w%oOGg+V6spS` zlEu)+G_A&x_-)xqEKKm2q~4;~%SGURPAbusshWv2Lz2v=kLlbgtdErFn{I3}5RZTx zoOtrt)6?a66zACbXi9pMKlg6dLoRGkfiiT*0$R3RlI1CR{1%?nsl(}XI zDN*#PgRMhRCE)0Op5;wK{B_4{!(dTcpc~BlKCtGlrfNtd;~F|?ZJ7DeI?K9cQ?lDN zOfwh;n!YS2GFD|R50O`V%2cp~zEPm<1Fcow&lNApS2F6&A1%~VZ&U`nF7w%GCS=id zg1(R>t*0yDdIsXZa^HC8I=<6e)F*n;wwB&A#-1f;?@FWpqRR(*mL!cv5$p5mq@Sj# zUhnt$Je0Db+heT4s-Zj76AO^Qo##Nb1KaW_%5i1!cBnnb=YENbx1Uz;)qRk)ZZM%a_)7BM8HP8|26>Z+>9_o4g3*8*|Y21`*5Q&h{XB1knMc6vLp*Su6pKh*2_;#|(+ zSbIJamc6ec6|gAPtss{}gU-pB+oFpr?54U97pd2zP`Dul1_$My_jiX!3hdPH-=;^# z$PdQq;#?4o=$?99nCdHWHm2yUCt9==lB~=-naQG%D|8@!Gb;RQ80dR?EnCOyvnC8P zH$hzoyk6(N&H4w>-VkYizBt^1ae3j_hEeRZp(msQ+%6Codyo5_$=2f96jGj;$FoLx zMzfIp4~`|Iw)|V}WcN2k-#3yNXzA-5nBLTd3tRfY1?UrRHMo1o{W{X%5(x>HBerxu zKCc=kl6E_qf=2Coyef}Z6X40aLb5@EJD+DK<$oO|kj1@-#jKyL_%JT6!ATl7@0Nwc zduK}*8SU*A3Jtc70DKxRB)AJs6H~XCLVBJ67$pI%_?g85K*aP-ab@`e9mDzajWh1B zw&%rphzs}HY;tJY)P=!&{BVFf0JytatavWlu_=og*DxF;p&YIs8g@~Cq~72@Ds-&;D+}9xJtm@K^W} zvP4G^FH7=Av4Z7#*h;UH`pw;v-J@jejN;1^N=tN56q+D6e}ZH%bRG8ES#grlojWl= z3FG`}Cz^j4ApcSboW($K7o)IsuU%W)SWdzm=tON5LfaNB-=kb)$7s@OQA&XGC0jm^|6Exfa?!-QAy~WW?TNaygeP zibe_UL`(-GQPW56ei}U_*EeEqJg?6>QtE&^0*u}Ndm&_9cdRq83n=G?T{*4LNe=K# zwP^4jZrN~ocXpUymNN~HFCA$=ZAD{XadDl2K{a5l!#9p3f!*d#WMyR<0@&;F3jVf5 zonwk6q7lv@h77yMZ7X+zA!0|WQ6WI_YUUX6(u1EEv-t`h21SOP<%Ja+AFsqZqTIzU znCJFzGj{!mwZ@6Igaf{#tntoszHj2P0nykRyU$?dI8;yft)vEni5%)Qwh`TOQ^z~` z^s~R3DHn4%%B9rTwIgnd_<_TbukVdTaMagAe=AosVAfB-4GD2Y!ODKrm-CKP8l@jL zWS(*0csx8buRej^ud7Y*5Z}bHqQ%Gz8IEJ{3$tb|ym=J4;lN}IoZEc)$1CXKdOwb-&RAk zytL*Zg<>5|{1(+M9;bRpWp>;ULq7m+ex$0Q-**c^zHFRMAdRav^bq#9oocdoaAZFq}P-U zxzS2lw66D$q77fMqO`mMG+L{1sSpXfV78_fo|h2?`K{d}l>oPki95c{ftZt%{tlJx zDWk?BAL3MCNKe=7m|@ayg*}R1_~hX%a>hOD{^R>zI)4ickgGP$TJUd%%*HeTrXn9)Q&&qib&Gq)=*_knGmK{U6+CUp3Gv!>v0OdMA9cC zN|*%y10Y$2*XQu;e306Zft*I69)slu%+b zzOIPPg&flGsgW1IO!rxaVBdx9`26&x&|PlXbunx*ut_f*xfs3q@~m#QZMVX!b@_Y4 zMD5x7o)cy_Q9=dF5kO9bPFo4LR%p!6V|;Ud_Pa@v{B4c{4+0>n(Hn)T{81LDLr+I-D@xLWe*W36RV)L3_#CK)JTGnXQcD50DIT z_4U;p*{;A6y9RE?q_FEZao!%gETX&OIa7|LLcBi_dlOO7uAuAPSGog3E0T$vQXlL^ zuGU0O#N$jxfhw`qlf4{+^?0$4mOqqh6tJT z#Thh0D;OLsAJNcec^qOrRb17tbZVESKGPc;@Lh*X0%G$}-k7y@)Wkht;Za%rFz|>V zBaM;r?M$|s@Z2cq5ntJ^SRD@rK z`^%~I{Fd(?4hlVr14oW^1(YOHMaov=a(*zvgWA8Qw^y4{yhst=XMN$Ue(B?Aftu(} zb7LiJ!w%8!YU3N|?m(btcmd$w@6Mz1lEi~3>BIK+_CD@sNBW5?A<4t3eh#I&G?F&O z?paLzAJBNz>K8~$FLMM}4YTntNJoMweltz;qy9u?-~}GXsXvPDwtIitdEtEnjd;L2 z2FzJqI_cN&_~xVDWpT!1%uEFI6TNNc&i10IM%KA(1tLC2LY<14-Zs#GGt!_`+4cmz z?||*wwAA{JCH%_m|K3V^k5oD>~y3%zW%eGEqV(kaWKmm=MsG=H~L$~ROxmt z`WoWQrs=|LtLS;8xYKL}W+y*N=LhA_oN^g_z@7KrQk_?+g^Sy{o`r~Tt|@%*1!k`2 zQ>Uu^>FGxp%6FG_EAY#)1@e4KZF`#u=2YnkMevz*r%aIi836-H zl%HkWM~&Y{9l24_MW7oO4-)NS7sYWK`v(AS@WE7SnCCFm%{O!NWok^6Q)X(mAQ`z2 zVC2;U>Zk!(&L6vL2S~B_zHfJH*mY~C0qbVijwmHct`D@mtH<-q7q0MZ#@kiXYT=5# zhu-qH^`Wr=eiuU*{{R#-&`rDlwFypD3KKYb1N9rTm_{bKkn<~PQO|7FuODfZMNt)fl)owZOqyG8YRBk#qbaC11Ik730nNy)1nf) zPGeq%D<^VKK*}!>9!pOBG0NCg)1W ziz$HqI7LaiSQK}8W%q{J<<0R4msqNEU)y|VfFzlZE)zvg2CQwV|7G$PyPOKB{^4Wj zNBpo%@8T*ZQL0g#a(}xfj&MPtHX0X3<%+WFP@6$;@n<_+A5$YC2R+G?Meq_g=`05- zL(UH!e}9GgajzM?NlX*wK$22j)Fv4XQH>o|`mS%9FN~i!-BlK72B6q|Jw0EETR&XO z9%670^_peov@RoS1OBByuhacD5o%uZNtT>dD3q&coHQMy$W*nX;#3EX0}A^eFcSbm3-ZtZ zS&%n;>l`4xWm@*z%-nnztwyERx=hKg(6VGbxvwQIx|$lr{_;y4lgXxnU|ro|_@f5O z9hrK)R*byyH?gdi)_%r~uq5R9w~C}Jw|CQbGxW=ci<92_Po&S9R(bCF|ov{3WoMp}0#V6VYOJ#@TVjC6h!;apNn0^r($LT3axPi}utfa&0d`Zzvr44+jrWMuho`+y6d~ z^uOze94;nhOU&CGzJaTE3NFs?6xDCEw2cof%zPk2eHruf3 zUiH*gn$LQ)sIy)Kj5U~YlpSs{9j&Q-|33s1Mn3-^<5TtD<5Ty4jt>guks&TY*4HOv zQ}?lFI>s=#A(0Z`s+@zmoA0e>=K~*7hcc~HL@cUrqBnf}=g419qS#p2ilTu3`cY@f zKt`9MiFV&f{0g$!E`U#owigP%^m@OSdg0t&-%Qxol#OrjHx>wMtBt%R+tUn)?@=5j zy<3!euKdHP?#5AH1%ngHkrXeiCrnzx11WY-TZzT7^?cND5&sdX<(}wb z$=;i-=vZ^D^vZ4BWW_EVte}T8Yz%YTA&QaFG3}YpKZ!L!A({ED@7Vhy}veL?+uUaDs!YbkU&e;TT$HWu0Yz;+W zag7Yq^`x930T0xU?H%R8U+Zm~KYU0}FGT)?H6+n@>;>MxwauP+rrf*dVv{wRy_sz9 zvS0|XIpcxt`@K6(`#5})D3!wnP{j`%(c2*$OmcOU@)wkom&$lQx)WplgOVwS#f}f} z0_9%cf2~+OavHE~MVn=-?VOMVCMfaUueTC8@7|PEGn#p2%*|L^fJ&#G3w%ZtqD@!H z-U0Cr7t&6|6~lc^RBcm>@K{`j5>*;!HAvj5bU6aHIj^t|n(ALx58x(LRUttMk5@sD z2kpDK8wWAjEP57;GZWPaxvcq2r#dzE9`tgEQ(V(pBN1k%stIrnv7#Lp0=Z1^yC<`a zSc(KKqcBd1EX%6Yt05;VO$PI4yYh_O1a{vkN3;dGZx5NZG=EB+#tcMs?KypRh=2Ov zQy+4%Sl!jQ2KkI@%Z(H$f1*Ow5ptinU7Q?2F6WT+b~ZTwLn%fWl}we=dzQoVMR_Jl zHzw02WeJr$EmjKecNwsELSE3nA~kj7;@&+hl`g31j{D4?8yZ^f<2Y@h-(=64#oYfo zsoZ>p6B9B4_L^A{svH?b=0zdk_FV`VJ&heBo-2L+DPtlA(k-<8D9J@>^3GmrTBfC` zJ=#DSGw%2!bc%}z;x&1J%=2H=3eZxmC#sOyIyXo1+^OYIKM29&lU)Y-j@6O zW#2m#R-ZY@ypj&j8%tmmP8`js35h zYAi(DY`n!ga_s)WBa ziV+EU4&X3+nH!6QQ`>mM;>7Q{^L&h$fk(U-&oM_ZrYa07$l>DV+i7EVeqf!%YNRwD zlsG?0CG&R}p+1&%Ogwu3rr06^%i&l}5eM3*zN;$zd#C*S1~~4$#JDa96X|?J*@}I< zc21eYA4i(8FUbu92J9J>-QjfAKkDX>>&SL7G9SdWU-a<{65ND4do{`EN+W(6R{8uK zFNl`RCP38IlWrL5$DAQ5abLos;m?!n>q8@l`c_b==*r*P*P$8>o-FT+G;X$AZ*l4n z;hv_Z62ADG5P8q)epRlZ>YGOT=6UccSX>%*8_qWFN@yUbZ9d+4y%w79IPS!1w-T?Ro;fItUJP)Q&1=Sk}A5n{R=V%Ms?vfp^cdErlb0n*6hDQQ8pj@5+i= zS(u{RkkN#v9A*=FT|zjXBA56Phnasw;*73x(uFxjqKk4(?@A41=ov4y*?ZWlm<#pBmvG0ES2OtQ{B#no%8sr1*m$@K$LqZhv!oP-@`wrbJ6-6-Z zwW-0yuvBKifasT;WIgW@j!J`s)z;Y}#)$UzKGO8E71^af5HQq~F4w2dRDqrvLVPp& z?!vJkLOh~`AXgM9f0T7~rUbg_QFUr1${bzx0>bYrUnK|lB0U@(37wnZfnS912PCSHYsdfid%p3i-nBG~P{xwx zy6HVl`39!rE9_5ye-H-kKB-m@e5fDUBXF(LDQ$2|9an7P9>;Kmjgy~k>dMQbp}dNI zo*f<&Foqhx6ZIU?VMF1TUA?;_rfA*$qm9dl)I_IPH>wOpW&09LxIjcxQ|D>{8uY<=Wy{yJUz2cf?`^Y?4P>T61nxjq4~#cWmcAPC zGzbYvqk<#qDgp+m_HHtIlBK^0y@$EriK6eIYT?=6+{K36nmT(fqZ1sqfCDysxVsu9 zgf0wNZt=a(!yY63Zywb#zCW#KUI$vaxQ~UWNvoaI2!1EB5DyL$0+^t_vz&#qV)HER zhP!QdxF2yjvbo&cT==8YI=8#Udi5eWKZ9H31dNj|G^#1*Wccn;o3coapFBO)-l7x2 zgA*Nrqn~no+irK->d^~03pyG<>n5160G!&YEZg_s;d3XFbk1|Ghv=_awoS>MqF*EC zZrH6f)AJeV&@iPj&^)jGip`)j!aBOqPA`6+L^Fzh3SGR78^ zEL7d?+6t-a|DxUQ@j~NvtmU`sLXFF~!bqGiRTMe{p%=uio zptWmH!AJpy*7>3!(b| zM^}jSLgsY$>`#XXjlJ`z@EzZQNX|^TEd8>sr-Ey6>+*J<6`& z0fsS4j$$>gKQ-W(ppTB)=OJrc2#H*`2cSPV=1q%btDiWLBSDKfj0@Fls3fvhipDQx zfkRlAddegC{pVutJ3Ula=;0U5oloqja>|r3efUp`2%?J1;{O0TH&E(ER1eMkomUjG zfV*fD#sDOIz@)L=bZrwlM#}meC#@_J1!ELHrn3^3dEb5Lfzzze-X~ z#MqS9t016$JN8?@C3*9qqoAXttXCS`yBQVKI&Jd%PGGALA_M?>AfoVPiJq4Rx>E{)vH7v#(cLu>9iqWCU}!J zkas(reK8khwG#VU`Wrr9P@><4gZ#`Z+gGsjtwdmbSI7@*oienK?nYuf2aV-yJM)oY zgH=ApJL75A&Ngz&)DtZY9#&a zM4HnR0@k}%$X?F1uo`QoB3W?yK#qiGF-h4MYQ~FOj-f6Lt;$s_iD`I$2f+0dL1P4Tqfyjv@?taMUP~Eri{+p@(Lg1 zb*&$K(}THC8s6d%RnL%}{braf&@?+Qdt^kTfb%Eo8qF#fT(h`1Qe|^9e*I2-QZn_C zYse!viXE{qc|1$p7JbJ`%b_d2Bgb&(%|LtQEf#k$355e)6uJxzPDW3uwQP0N*Bf;p z->dJtB}tZ}^3XLFPB8+I6lEdbTl^UVRf`eD^YiwRV7{-%J}6}SxuKYnKm5MQ{nIw- zi%&LRBpC|En{L0Wt$3v=5zjN{xF@}y`Rv_$!TGhv`!U;ESy}tVbP&tbDfZ1OCq|q$ zu6|q`t5^%XX*@j>ZA~nPM-<45sju)Vc!iyjlS;5lqCc`x9H!*keBHot;d$#9M$o&| ztZV~}uMMos`Gh=&DV_1LZA9T?i$AeifG%gvxn{Qc6N)baM!TdB!sTLmWi+PdYPC}U)6LG`P_t& ze$6jg_md_u_MyL&rD__hP!y@t6Fx^j0Tp}M=9nhQwYr-scTjQDioxjI9X){~39U7B zn$moNJsjb(_FJ;Nyqk|aaVGu&mN^0_3Dppv#dIzKpbf>0I~%K9?wG{i6pKgAkHCid zj?Y>kU<5EB)U_cX?$v$%z{<)ac#_=AIPeP~DDb00RzOZ@BYFCSLCsEg>o@o}iLW`W zSQYh%j>5=5WWBqL9cbNbr&|=TGHfuc6QxCNpJ?&am+Cd1fz>+21*a zUmtN;D1+z%p=uwYqfMgRYQ4afH5Pd+L`^pgINag$p1i9c5>mQIc8eNkGK)9AnX?*M zu9vy`Q~|yoLlz(wN-N5-q3~%v|GRU)VnxiQwG_>tF$sTpzX>KF++ic$b{cfbln8Nz zCYl-Ee#)*8xamwCu2(GJ4T zH6Q3IxXwF8b~o+&fX%-_O^y()l|hzY++U?1)VAiAiC@Fcv^GW_i^u@mP?BW1ww7a#8f_-4(KTvn!$ z$e0+am~lN2qZgZr+V?kJ`^)R=zjsT4jrb?zrx2fFKQgZ*N35!t+qOxr8Zl`yL5<^F z00Xzahr6=U&UQ2`jA@En6(v_lY?c~Z#&7zf?mvvDd+C687yXxCORw?kwd12Oy=ZT; z?2`9{8DdWvXQ_C(9&qMd3X-qxq>76F07c0Z8kvS$CUMVB`-vT+5e|W*ZLd z*zm7D#Dd(P0AhjxTLyD}t+y9!bvHslyw#+;gTw*VcZK`EKC<^7n*utc*MYt!Yo&i- z2Vg6sq%*@)G%ujM?r0I6LNp|uRwz``De*BRdPos35C7AjL?20LA|UhQf(Cm_+<{r5 z4i+p%#3&?-dAix+PAg?8&hFFk)Phk86WNy@+y3z;QKz_kiu_m#{9-It0Y^kUxMwiI z21VO?h{jEhqthdrrQ(h{74t$|`kUiyfiNiG5CiRlr7hAoPGLa;MMISyS3bl&*q8Dc|gwk7g6?K2JKLkXW1X z`ON+G3PcqwpUABmhWJFek2L~6473hiUg1`&p;Uny$Q`*lUVE%Hz;>#<#>hhUFUns6kNxt?1Kd8!WS88B*i4b3!Y? zvH{1|wSYA`n0;K^eT;X~)`!86DayqZ7?+ll2FwQ*D}-8|$*t*VP$mxgDpHJbWOosl za*>g+un1~RChq?OG>0bbajqhtFP%YYr&&=GdKDg35ZbAvzn=kxzjiqV z^}_p#bREmOj(s&Z^-{q@L5hdv7bCS1=jgT;JFyzK*t7dh<UYDvA2wV=sBn_FfVG zJbL)`cu|~oDhLeGW4*O~heo~fT?z(xn-z_kR#WO*kUf1-Ak)m_k8BaJ^$d!47^$uY z!Zgqgi5$vL!l>Lo#lnzE_084#HHXZ9absScMj6J5qie4Z)Uh2_xhHcyQAaH6F>lRh zNy_awE5GXMU;qW#Hlw4gOSFDm0@5c0;{F8g8^-g*7Upr|bJZ|DzuG<_o(y>*fUJ<5 z<8W7{h|(^c_lyRE+J?`Iyn9xyAljXIeo;U{C?e^;?Byi4eNXLyFzQe@SJjBQGeM(a z>N@+}NntQacOt&8M3RzARZmi24P1Qaix8c?(spA)^duZPoc4YLm*^V|bD_&uPS==m z)(M>2ZsZB}GPo&9Jy<7l@aS>~^w2TO)mm)0^lijs9Dz( zPO#@M?cJM-vy~zskk0}>m(O9Z=0saHq9wln z8dQP^S!}m7+@JKabrz|R7O#Jf*4%K7>HA+~yN>?agrB2MsqgFdJ)3;K zjSKQ+u@InwlUr1EK2s)FNyJ6k<5D9`i(?1?jk%#*67rE|4w@#@v~0K9mNttMA{7-w zvCz+wm_@CMbf*E@ezL1>#saS`empJ}LzY{s1w2eJx|hLd5K4Q8XLZ(+jV_L`4+WSh zXo;?O0MCzSvG2)6b}?hy;bRzL8-;eQCH$2M=FL2(&Kbp*h*8#Rk`y+_szCttvc9tu z4NijKj?j_)XgV?0{{6_CoNN%kMLn&=6X=3Ts#Ycl8fd9qx^hAfME$$p2#)QQ+YBK* z=f@p7+^kH2#C;G~PoLjDu}b&2m@P{|7{R7sG6ko`DHIu4v;A3aK) z1(E(%VG?BKx_g+`gWOcRBzaZ3&?0c-??QDSD|;*x_apTU)bzry&)|dUGvGF6;bWWC z;?-G{N}N|b*G<8b{uL16rgkLDhP3tMExkpT*@-BVs^t{b7VooD zxE~L*`At@bq_i>K*ta@5y0&oUb$YUr*L*sat?e7g7+rP^?rG5}CUyi(i1Jr1(HVgx zoIN2Bp}w54dV_1by?>eKd=w9oUp>7rpOI4Q*ak%4a{w)N$8E(8CR{>>Mt$4|Egq!z zb#|%Er%?l@Nu{oQ=G%)+{h(`c#M!3YH}5Tf}O2ONUz#>wT$3i zt6q+ex(L!q6V$Y}X*Q&RS>S=?heClnfk_f#H0-{)Maf?EckxE|%-z(uS9zj39sN-| z_-@1CQ`Kh-IOqbv!tVJ6T~i{nn~^jtQKGz~S4Nn?t=UE{&4uA*lR2Xnv!n-(Ef2vy zJ7Z`^X6P1})dRbcIH8>KO4k{;G&`+Rcx~_YzeN##hx@gLSKPzhZtvGnfdoYxF*NKs zXwcJTe+rB1JHwj6+YY7D2e%w*Zg9<^$ z*Rc3F+_X7$$^wH~c0)xTdLe;5Bpvyea-)9}rOzep*gzumS`CrHWHpABS4*!0|8@k@r3@%` z=06)V|BnV>Bme*XYv{G+zYk7L>9Nacs0c3j2QakIzZrm%IsC2)Up`4eyOi|tMh>H6E`x}tyx&Oc4piYNo;<12p*t?{q{(1@hSevir?|)`{Az|+V&|wk(ub0C_ zX2oCY{_|z4@9MKnFE#?2TTxauYs3?tb;MJ=v-@bq(bQ~nv+2TYlyuO5bQy{JgzuZz z8gceiNw1#jb0mby$RZeK_FQl^*s+^G^qC&jJ-l>F;eT9bnITLi_S9ci49~#P89SM< z5}mH`yd(7H3rbx&;aspT_48w%@M!7~Dv5}aeQ-oaopa+exMlA&WxGe5NhKSEsyyL| z;IeM3h-ru;yV4SZup#?v0==^xQG;27(|`{%5{9`wX(xAhLmuv);0Jk;W?oAd4iYL| z|B=;e0C}vvms_>s&Y56Qcz+lIys=6Ph54F%lg&Ajw+;udTsY3rxe~d zd1TX4+9_G5?IK60b|Q=6^DU!|Ggr0r(DR@pDY+|54(5{6#V{R=w{{gRo1>OTK!cmT zJam#DSHF~5uct|bBTbX3@oEhVua4E0@8pXSYS=1m958?*Twsg6yFSx~`tbDJ+2TzGP5(`hYU;@Qx6SAXRWvJq=4VE1t|au(ASyor&33|AOv^k& zipg6fT6wQ>G{&hGx(Ou}Wa3IaZdy>XL zg!ntW(I%f_HUMDY?D6p4cp+?FLW<&<-Jws${){`*NjW^Zv)$hZ2>3Ag+n_nM{lgUjaO+%w2$;7mMa+osmtZhV z|GB3_ptIudoi(*^otY@fJAPd46!(!3H~~a_Ym~U7oTjC&r9xH5>RYZ+es@qUyLys8 zB87A-f)x6Csv>G-HQ_+5Va`9%v3%jI8Z*}w6MFxx@v5Vsd@kf*)d6shH&$)b_& z#1^wcq+gfZ#fV>wSgljHcRO%NehN8z=^ldrJhyMMPAFoo8Xd#*r+nm-KZ25@ELpZG z?cu8U#!G$!uhU;O?|@%w5u@J*tccK@=G`jG;LT8;sPmxOD`YhqmeG|%CQaoQCP8^E z2`ogI%^sP({Y=st+Q5yKF<(2FH zC`V*Z{8>{d)o|`}`OYXx3Y`e}OqnXbjDb4dPsrZ1Nftb%)1Wm;ZSE-h>4`yqdGIsx zAmLRlvRILi10bb>Bn|coP1;K3O9Z-i{?IIdgGKdEce5ZvW1CZ zHwMeKuNwYqtYEglHi0O!otg;K547GG<+P41fi+UG>6;-J2AS`9kHC($HmY6ocbm#K z7vd?u(q`8b#c%_O)q@qf%-Q6H)d_m$Km_4;oVj5HnXNs7sitNkobiMU%7E+GrYnqJ z_)ZshC6yoa+@}PQ6NxJWeGA$N*ck?p$v0R)cn67^Ee?N`nwChDRah?i069)dEPFax z898FetQi$G2(YQX2awBWRZ93OZM=~+Ph^b+6AH1j*JC0G{hEO?!#@4~mw4V-Xkq7W zu8zP`2#?Ib;jYxfzva}Kk5q0=75ELrhvspn+Ox3FTZy~c#38XQ-dbL4NT4(lmBJ9z z2i1S^pRg7E5{);oCWL|)VqGc|YL zE&tPyEPa5`fGa=utE{OkbCbyFOB89c5Rq{S?=4R5*Ft*7VGURzgC%Y_1R~=$(1`@S z-6^@R+LXPV7c}&Q9vYTlLEe5-fTnKizJ)ygL;0txAvLvW?4tW33Y+D3727g5hsE@^UBF+KsV&c0e85hn z9mo@^P1S;zo08{0s-)gmFx$K>g@7~gMw&k*e2A{?w4haW08^LHO=>1nB>n=@yQ1fv zyjB_ywpM{1G~zlqg66SwUc8LjbuFD6Tb;vrRW-`^9oG>A?$(1t)+cDY>Fu=^9y4|% zjDL|BVAlP@+wO?9=TY-%N?Z*=#0m4xy~!x1%yIZo-^M(S_QdY{L4irU+f&(-=)}pA z;w$aIV$&~oo1H{Q0c#u7O|G5BGg7qjSf1U#^BuwcDrMFfoe^;003GD(vV^%NG&;o; z?WHmFUZ6j(J(}k`PA%4HfN}g@g}(=7Zne=*Ew8OePTERt(`lmI=~DK}wvPimuYCzq zthXe8I%rvF=sFt=FntoH7;1k(`(TxM1ztw!v==FFNcJgSA(zYa{`oW72&rf7PIYpU@e)S*WW)On?t|;K#_fJ* z^xcqi*}*S#l2kelbd)avIghB*#4%QynAd@0Vv+|!9*VIS?+X@%2qBx6ElzO>+5xNi z?3Gd76W9x}JUgF)8P(-fqfjFVfz(6>XP`Z+#z%_}e|zU^OGCN5EA?qO>IK=VK?;KH zvD^n``q;umR!AS(?bZ_J@Q+C3d$rE^sP?~RvkgfkdW9$;0{4SIzLTLpbgJXBx6S&R z{X$PsRou@J=zMVtuSp}S(l%1e2~aWd+x!WRXX8vI7cj;uanLh>m9-rhK+qE%0Y;`wRZQFwrf(K=mP=C1As( zSpD3<#c);dW+=pVyL!sbasvN$Jas_QhXVuPYw{udWZf@yTg{uinDdo#QQc7zc;@C) zyb!j|#f9dHB^X+>*4)=<5Qe;$1tFI2K!@le1X4IvN?c!)`(O3%heIw%f2`CE>ap!j z9?EAFh@}n@#;3F>1`Wn)7(^2XtK|1X78R)5It*-PcL#MxoOe?zG6bq zlM?Iq3@ljt0qUc7?1IxKUfSV{6!C&bi#!YJ4$PW)8Pr#s5pGBwNGqY>OEe=D9g)zs zIM5NojStAWNm?v>G&Ixx`ZK(9oE-8O`Peqax#e?_sEHe5Ws?nzFg;!p$oiIas-u*! zUow|fsxy>UWxM;#7bI9FRWF!?`9VklLB_29t}4P!?Dbk!uYEmtqmEbdrHDgb=W3X{ z!X||qq_4GYwlFIzO!2{wxnn1Vw9C!8#Dku6B`4+DqsL%G$C$XhNZGpenk6YG`-8es z`<8FB-H0J6j+(S)nkfQ*V_&%%ty0}4GZ4NJjaNlM=GWRf)1XRasg(HCT8@0TENX6Q zmRrSx#DP~q^CuLswcyf+?jxBIwqocQeK%f(+efuJk) z>)6h6{Br_^)ikVGQgwbm#^lxDQa|^@f&TV2$R0H%*zdCUC(m@a(y{Yoa{?Br$Uxrf zQ!W38efvljjV)jHyWD{|^pdFjulsMOo20`~#;J_wd~&IY0$I2J3i zBn*;{^Mk56C&peEzWtHg$FmO1I;SX2T={x3?>XP; z&!_D65nA9>wem{;%~-W#t{X7$Z3F~`41OwWsi=sT=%04lXl49JVf_!_e9&fInjqgI z0oxR9TO$q4s2*^Yuc2kNt)@=XCUjIWTdW9856lCY^%nE!b9@_5#|anIa>a5ZweWB< zbfZjUrd?X;hJD_OTx^~4%S|&*4ZR6)bcXTIx@7T}S8{w!gGo3eXA@}+mSFKOY zN2cAuW_DF`d6l&`<>s{>cRd7I9*@riy1*-4qO*cj zy(PwqLFx|f(yTwIpv#^|8(lz`2VXO$XiOKvjezgRwI2qM@KL3=>!Aj}+y~CamRt=7Vd>H@tYaaw~1!iXu<<*#) zYk}yj)R}Eiid*j{935pO@>{udP9C5DBxr-n6*sG$c(R9T!<`>yZg+ly@ywFjIr>PX z$@|flXh8d5F@8N>^TN5})}i~q2}0VA5`f`-!8PK?u?PHN<&;dgsNO-#fhtL7eB*@m zWbx;+D1&&kxkGy=)xyP*4h$e$67@$Q!M?mn zysXT=f*oVdSoWnmvSJF8SBE{gkD{C`TY3Jb4y0m!a#ewSnmd1zLwuV#c8h%+yV)qs zE^W9$lfE-PGg`bb&~7ufiRDD+FyaiF+o$G>^}x{rzep=u{6xpo_K?B)=&GtIz9A=0 z5k=Be^u@rjlRa-^Iv{v za;Gj~LM*qVxzb%OZ?(cL(w zg?RD(%;syGl40!bgP0O8Y9BL%bUD)>j)`Nz)oUic-v~Ot$$5IB_OLJE0NbEY9*2?r}kqy z{Nv1D{AN63pV5zg3+MbIDNpHN$i9sO+NP#@FmEpeH<_ zlBDQ?V~9?$gC9+V9d3xon2r zHPJna--i3A35Z*P?g{!=>siL!HBJM}nGy#J!jXUC?e}F&yc6O!5=meCQ@Si1fDU`UU@mAg> zr<_(AZp-d|agxxrMsj#1em))PBpi?4;-ZS1@Tzs#0Le>)URH^v*ebb() ztxS(=+FDv)A_+aPb}Tf-j8phdMWH3+y_|uyD?RNPX_4;uOY&d;QR#~P?Ve{KbmH|5_1gh#$Y>4gqD}iY7YzfIlCPFSsj) z6o8qOU0Q3LgTk>GwWpoTc&p zQbHk0-Zq{C~bJ40YCS zz-^M&e8$GP5A7w}2b;;si6|fodkY6sG&7fl#xCC2J^#sA@q+EIM)zP}>GhElY?CZ{ zI14I=5jZkOgkl%NvKy~!?#hLIoqA5Y3p=}@F|&AJ)|qXdrvvmkgR^uqNYg*B^?&P zFS;CM^0X?Cq*|}N=5gTO{gI(m(zIAh*rU9tp)pEDgm1!Mn&nKVO)=?ZAeObSmY~N= zR5~%(BX=#XFn@r3P34MZ|GIf|+N9^@iIn1q1pca~Hsr5!)c)90&^}YSav&juE?)e{ z)30vi)op|!4Wme_ll}ULQBe@R#Hn|UeR>*p@c zk*kyX`_!NLd!^{2H|t(hImmtHUuY_`#r8|)x)OtkGW$YTT8N>u642yOnu*J{t^Wv2 zy%(C4)7-iH_Cv!Ymci_d7y9_Mf)m8F?fA(lZcZ@9{$PhDU($P*ux^yFuDg@O>G7SU z=lwG}mttf&UC({}&C>BaL{F)hM0Mrt-K^{JyJRd#?tL)}U0@r^itqn&%zbjpKIEP{ zG`ejM<{GJ!8VLE>KeUr-=VHP5g20wl-6`$o*Gx z#MY%W`d@Wu2)N_Tvc^)YQ6dYZYDl zGAGsBCJvKa(2_jxu^%1-O&B3EVufH_xL?W-wmt0;h+}$Ap(4pN$TW~L4nwwecfRR$ zbk&kXIgcjeR)XQId1Bb?N8B$Z|xl22oE8O z<%xcy;tY4*#2-xQp^0!t|3bS%7cuCta!j9hAlQUj&&#Br>LIC;^*wz=kkXy!JLaZ) zgh@*aCzZ+&1*~cOu*4Id@jgD_1yf(jLV$FkX_@|2uu|TJ!ZMY{dPU{XG!k#0YrJN6 z{{zvPLeUdDM|PM9nT3041m;9SLi<1&QC58&eo!2HKE49euc-)gg`R!rN&! zr%e+-uVkVt8rTBaBHCbbtuS-a0b6Jve71{pRv%**L7L4*JJ;|z7?Z=qjzUD&NYD)7 z6FoGmFoj$`4zuD^uwxu$tJnlf1?t1Mevl{;kue!8Ke}C?it!tTTC7pt{{tUE;J$)J zTb_Bq{Qm$dt1HO_;7f#+AHN)QBy;Kf>gz!&1(m{;Dha_EJ@Rl*T=(ai@>4w)RuD}& zc$Ib^;w(SA*RS|h>kCXNGY|_Ms&o00ef|1ULebpJcd(7JcJ~hEfPU!5FJ= z8ZrPdKGJsGm7%vYfgh$((WuS26w3*;EwgYWPKI`GN}p1ZQUc_ z!{ME3Q1e<@%OomK%%dP+XZcVxJEzlr)RyvYQ}Z3CrF|*jt6Q5Ji@hr430UOndy&)g z73%Ha%`)>!8hxQKl_Zh?CuDhCV> zI`h(#m614(BXs1a8(E*4E1>I5(#C)L_J6{(ZTuPHd#2kCpEDn(EA)adg}1S}A{%xM z&(D+1ZCQ8+QiZ`^vcgyUsq0hDj3>p;-t1BN^`!g}@s6gcJ>&w;7S2q(9xJ7j;a#Pr zp|-alX`dTe$ik*QEADIm00*&A_WP!hR1e*+%DnckIq?zF>;SR1F~=bUtb2fV1Fs!U zD|$26L*{cl`w@s%Z|*)0*K`ZrH&N3q(UhcDu(ZG4IC0<7xi1s{0LXUl{pJ4v&_#O3 zj{`;GOI8fnlHwe%{0s{6e-r-z$ae4j<^KTCMSXq&-jVP)>A6(9Fv0C!i}0iVN8LC5 z+pqm5mb~7*8{s>D#e1fY_AbBlnp*U*-^Pck{LeQN{3&`r$kitmsx(b$tgZDSr`;P% z$$X1>{Fm~kmn3YB@wJ~Iji8goW7pi8J?_1!_$R}0PP6G_O#c9cMQ$vnXznd9ETq1a zT3y>RKIkT9+$Kj{upLG*T2iK_-OTGv#>d7#*xI;dLt}Hf?pn=9lKE?u#$f{-$Ttk9 z-WeQoS0wPSiQ%|5lIZv8IFv$SYiUD?N_l}cmCo&hb~^3nrGAZH_>;qaBk_lZAHzCx z>EB@SuZXShcZCLhNox}zXPt_K>oZnh%+8>=W_;bWIx@3CQ)|Yt>oi^Vt?n`+V-S>Un zvK0t(jxc$wYWh3l7Nw_;1o#U|ORZ2}9}Ve}wZE9Z*@hh44cjxj&)tr3jlT8a6GNb` zj|BGjmv5@HgimVrh?c1z&4x>XaL(+0T&aNo$@z{3d1^sL*&TG}%&x*u59`qH6KS`J z<$0y|K_J`YDzv%E@#U+bZ2i!{o(QO0N7d4KZC=LZW`ZBI%NdEoqyJB(WBr6I1`&Zd~ z-rI4WGhPv7pA3(~8|S=h@Aymxp#ZlFk0;0}KJ0UY9|^pX<_FuiDI@d+S=XUOf76-lHz7oVH`+Z$VDu~DuQsT2`8`w)wR&Iw?&n7`?8FYNUR`o3QpT1 zU~$NihSWV6@G@)L{sQ=8QywJK{Ac^W?BaE;GdsU{CtV)qW0l9<*m~!!d#;!N03yzm zdw*bf2mb(0^H#L5{L#B6rG8mi9}(JkU&PvkrV9-s{^muNNJ>L(EQ}?G21FrLoyZt& z9akegYNfu7tKMo~*tV88GwK`OKe9&)y!+z>y7^!h%7r_IGB9(}zfLtz6!=eC(!5D? zqTAkRcKU3-FoRQ`*$~{d^1*K<&BOpoppwt>ZgeLDIIoDWd~BX9`0Z)q9S`j`G2ZI- z3lVqOapkX-0~aVr4I+YE0!Pe7Pg7MWMmE%%b>%DQd6eE0@lCbBw7Ai=2&ZWl5fj?V zu4Q%Js1&Yu6dQo*M?ESg@Xv`7*4Fv-tL3)8bdJ_zZ6JKkGB3;R+zLk8pP{|Zh zKy9QFB$M$HvTev|KY$UI?V8KDw7aws8>nQ2PZ*jnF$(#Swm@~r8B#&P9C2Tvo(AzR z*l%sMU0l7~mLClC{{RxZO52`kw0pUo0cJU8Z!-Xs_}9+gw4{1{uf`cXIMOs)ev46AI$h+NYQ);Na#^y9N&jp0(@03uDsZ)qHgx zi*a#xWIP+J`BPm$w$nKBlRKhGXH~(-7?H9$<2V}n{-t4S`#pF*%4@As8_TJ+fo~P8 zincO^yNAsCQj@u`r}ud1-D)FETI{J+Y1tk+z60^Yym6<8byjJR%NmOr$#~apSw_xO zZd{SaBh*%HzlVH5cc{&zTIrXQU)u&VTE}lAPZ&Z27mO)o+DOhv754q+xeET%z8%x_ ztxH$?LI|V2x1LZekzY@R(QVaOovpWYfq?mdBQ@iH2K7G@f5JE8T~9{2cGo4n@Zg4d zWPHgqx`+Tu;O{8yfc)|+M?yT-zkk6QD$;82%ke&U8g`&k+EHsUOU7ijZ!NJisR~vz zkDP))AZG-DR$D>W64K{TeLC%JY^CxpXD~R934sI4k@19lkT$UgCcdEYAk;+P3_rFO zCBOdwgu7h(QrrIksT2PIYC+}*^UlrL+wEPSkFI=M9)o*l;fIIp^Zx+CdnTt9!!V7l zQ&B-9s;L0XppPt^<1{Qf*ImEhf0%n`q47oDkE_^5(_dKJ+s2YCOwz>Yt0N$hP?i7& zD0czWuRSX|zQg^jKGF7%4;?he{g334aw7Zx0NWxMJmWq%-S$Ik<>#H9JJ*DG^*$Lc zm*LakCcZa~VVzU$Slj3M(++t!lW1NO_j@*x^A@b?(omCE*t&IjqMf%q{@YH}FC%Ge z?WUa(i#j)q}4Q-wVhBWWPi)nV-6&sjJcH%MzCw4F^0GwCor-*!OrT7x-#=a-jp7^XjJDp>-vJ0~6 zS#-G(Vw}8*wjY~uAUVh%De6Bz^%!&*t!$r3yu7)&l04qWb7>vCaLa-6!s&4_nRB0+ zk|V(RdE+|Nlr&7zl}9bnk=C*G{{Z;}&;I}b{{Ya|wkscB{{WCo{{Zk0{S9jdZjU#h z^rDdTHJN8!;dz5z*;})14++8d^QHcE_5T2bCWZ(VnSqGl75*HKaqsQkz9G}5@^36~ zaNlRo;pfX=WBfb5i%_>%ordtEaTpk3(TDlPczKfdn>{=e(#N~l+QkHR@W;9W>A5fl zagmT)kVxG^c%IycALgTRqBl68#uTnb2 z=p{xkb*cZ;&A+&kX$s35GN3A}&f)5K?rWb&rHS4^j5iE)?eFha0hSpu89*7sDE0c% z8Dx_!Gn47gYxA0o^75a0qpi%@9a)Gmf_dsQilz2eXJ~g4u5wcVVEsot)}y?LbA~)) zJ&&g~e?*2fxmmB+85n|~9P-^W^yB=BSi#5&$03C;|Y2bCuMkGyvf#Bzn$fb5Y4EZ8u z2al#l6`vFnvJ9upM<903TH0jX!LyKYRuu$bdY=CPN_Puf$~L}QZ2+ItnuTro`G-AC zYNU|OGcMvv9DNVgrgc(w4z)L6tY$@SG7jITzADPwnRo-%uE!8n=bE;mKmZI>yOcp4 zs;)3GRtzgrk6zTYt^^)P>IFqJd1GWi83^EecdJ<#sNV%joNgnp(ttDLxQERFRD!?^ z4xLXXt7=iL#9|OhB%TL+4*tWbtL{W97%pUPGmQQmR0|*yw5pl;wuU@#e)0NoMVRhW z)bFhPIitxv#Hb80J4UWRGBS*X1B~S0SCVP}02Xa5JUM2UG0%Oeh|iny>|Oad+~=lO z9RbJTTYnZHwY;#??L;8oUR($vkP;d=xGqOH$m6IyX1GmvOVIQ!B5Sj28DP5*Hc!lY zV#^Oq^LBJUA z?}}%`pB8v?!dJ3t8l*RqT{5(Byd`!*la9kYlSc6UwAKkN{2}C+nFu8O zp}GOnsKGw<7OSA?7FMj}NQ==`8!XIofHwv?uXRR*VeENbypJu;tDm&Kr_(cd+Q7$W zYogr^R_9Uqt)UI~ROGYD$COp%ka;8!25YTwWFvg5fzAT;BD_Dqo&uZ0bJ%M)w{Dj+ zBP_OxK2R7OE4Fe-;E*sk4*2KT4cLSD180!E&$&H?c$Mi>Qst)ZyPmZv&BpUqV{TqY zV6nQP2j(RS$n+mD>sFvh@EPP{c*y_{$a7F5$1m>>8Q_8UfBjWu6>voemWk_I<)trMw2lCnmbQIc5j zFe<|8B4`#vZh$Zco(>IZN-cZBsPCat=T5VH7FlvJ!p$O%2090`J$SC@Bbl-Z=9LLnjGvb)wSmbU zLG<>j`@G_TTpu%lp#0$bDMNiZE}-JLQGk33XEe4#Nn_=9Npl)9g4~uP zk8h%R>8>%1A8&+lk}v3>Y3Cq410Cssi}O!hQgfm zIrQiGS2u5RvMPjQzGH>YC#PQ6>sx4|Bs&SoJ#)|b9jURF-Tq7mG)P$lN*Uw z%OAT&I46vrSMei~D(grwv@po^s3VO~WG+u!`_PGGqi7fd0I@j7T$BB3%I(i1rZI}n z68Vy-Q}=V9L+$xhq>(@kl6b~_aYGtIZX;HY3-^O@k@f!o8mhLD#zqF?(7I{Y?RK)Df&}#&L>%?16#r%|uuc*S8djk-_GrjIyoB z@9R=-`MBv&at3+8{&WVxTN1yncF!BieEDWy#aFG{{T*DH{z=Y=O%*Sdh<*! z$FuT%=}Y4PbvS#7lC7Veg8Sfpb(BJA2Vb}^C{^S}56hq8Jq|n9t%ik>%Tsd>H&xnSC;EQ1c+HGNm@a)e;8kei1#{nw z=dkJg>h7OtjO^vI4nANxC)4TLx0^{_nRT(ZV+#-_lYpFoo}~W(g=1@1LOrVs67mzD z_yHoic$;JgfVc+$dsm%mS8evWlPY|Jki-s;lY{gL6z5*-KbUI{q>WRv~w zpl9kURc;bki^sIRKu#)y%pm zTbY&^wzfeY{k?0&(r48*7m-zmnI_;^ae{ai=)NJmFzL4vuP#$+jP)(@kLQ~6y(Z~n zz4^ffR58!p&U$CpisY{JvG3(@TFLqzl?(yn*qI(!3+d9XN3}-ShT?ynbCz0^a=sPz z`HXn!(RtiLmj<<&E8P z%Z&T?HRG3Hs$R+%{{W;+ks<5C4>R@W@vlqq9m^(|V2lmSBP>bkxnfuF#d)RSbhfvR zv6C5;sO`M`zou){qOBBs6=~j0vxU~BXl*7rR_yqw2Z2zO_zmhCC_JVR3}1Wx^t zOMXK&o#CkD5k!ML?I)4c^Znscc#-zmNSzu?C)aTU`qlpc55(Uo+D1M7KEGP@aIyCr zXC5kE@<{YcFEF?ukW>@b9B?~J_3nO^Z9KsYvToawd!Bz&RBX_=k@9e=st$4LdocB@ zvLH)9cQD>Z@isaC0JfO@2jN;ZW0_2XhWpH8k9Qme z89&0m-W{vX?^Y$1BMdQ&^2CApvGuP^@P)cXq9ptQJhC=BFjKcaovVW$(xi7_F6th6 z<5@)BA(#=hU__4}MFjpiCb?xXtZYv#--at&TK@n@)h}dom1$fLa0wsCR$zcI?pb@{ekg-q~bgBsj?9 z*!BE4rn@6a+v0r>RL~+=t>c{m-pbt=@(XdtOyi8>HLrhfZ}Z(&OM1yJ&dW^4sPNVay>m|~~E0lSir1HutkN_FM!N~k`#~zjF$u3ln zho?C@@}2trzk$r%HN>su+^$`lehJUs0|RK}RR@D%DnT4tnkOwBcx=>J!k6RA8Vk}JYGRTK(DabyASF8AM;)b!OpR?)=vqAs~k%BQ^ zYINN}Lov6PYIPw_2jkMI5>(*iQ=DTZW;wzYJ}pnEBlw?VGOw8f4Dw2x57xHrej@mN zz*c9B4(*J8pTfRF5=g&siv12L432*D6ZqFV!aj%LqCS%xH2i;>`3pBdRADNLze91 z%xOk2=Sy3j(q$7y3NRzob52&k+Iv+<}#;TxhE<=F<7?AnO%1L&T*07 zp{=0oh?l*fMHSJGSY>~`)75iM7G^XMmMn4KsjK4MjD<&BepMaJVkeI+$Ok9C6rP~0 zj7GEy2?x2yHP7l=MDS}Clgko{VS`~-%kGkgf?`FFSAP| z(C^%G#EBQ2o}(GXaaKNYJ4jh$-uuV?wgt~OluiK7NI7U@AV;*5|?hkHzaaT0yZTv4~6@}Xq8Uih) zRmqXtorOn7B=OjfOd80B(&FM#ug1=^vh9l9oCPqqIBq`sb;#+{-klEL6oj0}_V$+2 z?u>EfHN<>pK8Sh(IXs>#CYId^SKq0>1Q)t-xYlPX=IDv95iyw25CBl%WU7I<9D~jX zs}|aP+O@=fARD3Bq-pALw8r?$Nybl_0Kf!oTzAc5{i^Qz=1&gZA1sKLN#%{OCAW~W zfTOCj6<~Vf868Dfx}Hq{LuYHa!F3>p-8YiaF$C>7`^kWD(1U@T9wyJ{`UCtwQ&Z22 z#B)ifO>EZI)-ST;Zabu$VS1OIL8^Q6JKgDUfcL}WFCFemxgi_ZMKi^BsNZ`!N+?;*IztCd~c-tU~7_eiI91Lt2$yFaI9RTN!D_YXmLzhMc-_3|-cDN6RSqE7Q zbq)yR^&LH`bhk490EQmB5o;Q~&X46srqA|xZ)Ooli^z#cCFVuwyGJd?(ZMyLI_cVO zl(JeMv71=SCBS0MgU`-ROYc2$Nn&%?6_eqYYnf(~RWeO{`PgP(Eu^&F`?mwKzg7c~ z+!30pf(vbN;v3`9?H4#a!wurcHII9Nyfo z`fO7S6(=QQ+T9QigYoN{qho%OYl{u!jQVw>ZPO-kn2f`R`MR?q`D11{>w-=VH^nn8 z!$B698~ahn!^FdzV1IZRoQC&oj%*_`lM6GcRMqzjtTP+l2Hr)0C^VxueL>J26^?? z@dc&7+AJbd8z=>Q=|MZDi4Fr0K2qIS4l_>OJANU5#OQoEw@tN=PShGJeMwcOxeh}a z8Hp_*Y>>eE=Z=RMtX(=;blpnlTk;g?WO-0DWMUwBc>(}-#ODVfcFr-1cD#}JsyK8z z21zBkD><8SD{Tt5C4eC1zUrqL=Qzb`Tx+J@CbyCWx4O3>S_s0ieDJn0CJ1Me)=2KBaW3f0Ly-|XRDSf}j!pp14l7>&0A4cKye)1L zFz#&&oz|w2rO!an5mAdNq!r;ppTyD$&_oO(o2a7y)gbUUr?mQFsJ^0LM&o zPP$8tYgCKGHVGcfKQaqeE&l)?LB9JF*>Et2o=H56RL&~;?1v96*qR9c0EA}EH0@BT zM7eLaDIo(n$wy}ABeNbG+Ns6n-|J1{Z6{zz;x_36fEswwix$sSC-{2w8RMdA8iQ-l zHiKsl+2&F%{LX&Q9!PBU49(GSan5>E&waZYVu=qk3CF-r?eAy`-{ z?YNYmyYp__BXiV|-#Fr_TiI)N7jLdW@XdF2LAZhB2mNGc9J&UbpefP(EcCO2Ct%yu1fbJJ0?f`+b@Ch7|Rm30gjK_5?i#+yLakI$- zKhA+yEa>?e>5>l}a7RkR&=~8J$*AAlt4PtQvk|t}w}_s29T=WZUrvIp$tBLEtv84D z8=aVk&77m-?Gfh+yHDI5cY)U&cckNIZ@g*gf4Jg2U8vg6d#6isLeG4rVr0vH>k1)_ zbBr!a7C*$}o&|ZQ+3QMO(?q9=rXpw*Umnw{yY% zwFU05wwC_@Y0lOdz~J%+1RwtZSMskFw(%{*e>p5Ldwkd)+3!Ykjwg z+6x&=GZwIst`KrS`~F!yv$%E6J699on~UEn>N`1%Zx|1^sve;5c=V-{#ae~D{#E6= zKl?~ZbjNR)X1+doCMyeB&kJcT-G3cFt&h-Q#JF5#1q@~5F8bO1+W!Dsp6lTs0(=Y7 zjAl#U?K_sibE!(q*%|%?3m@T+O84zHZv$zz;vFTl%Xq(qB4|*4LkH5n5gsD9yFv}L zsz)Eff2geMxir}vuHfGL81?#$*A09YDzEXQKfdemN2P|&FjRG*;rChoF6XlT)Us)M z_k^sIO?d9^?e7?f?U+dG8zJ1pCV0-!GmgD0;3%{knONrDeCIntFvm}CdiojS(}NYx zKi~v^N)|mdMmMm|2OOVIr}_PUk1WSe1&34>IXiiG`5!HuVCm)B~9+#-Z(p$*`+FV;rxkS+ClsO#a09VkCIRd<=#J>w}^y`Cppd;#fWTdoj9$Hui zcuCidtUEW|e#bkNeKtX-n}04g+QX;H!_&|le^1cd(l72TLLSjag2?9s=JdhT)3zQyp* z#vc`Ue?-&t7n0gY?5(1J5X^9~s8w95xHtppT%1-KcA%{!FhM9MEY{^?VZir-@+=|#9S5EJ+?0FTbNW1`5z{TgQlfWQ{} zj_i8x9sR#L(t|{jK#e)Op9gcPWr8xJx66}{_!W6j%BtU)D8uo8ujYFdID(2?x0L?? z1^RwQy`H(M+QMw0x%(t?mS&FGL~=ex7#2b1x{!HNNIk~_tR%46d2FlZT`$~DaT&lF zI5;P-)A0miO>t$V0|b+#4EP2MVZLXEUwNQkS%C%3ayxV{@vt;ORvu$FWyd)Ft~p-SURG`y^6HCei_s<6P`hoNxv` zGskN8uY`Xa;_#P+wEqAO-bopKJM9+4+(zoI7H0!D3AiUdvA18#<~>UL?W%07o65CC z!m6E_;~bJkeweOpCz^X?Uo45FaPN)=>7t5KGt=+0{yDEwtr*pZB##!INmG|HKT@Rl zt>JBWTU@lF+B64z>{acKNaN2!(Xadnt9uS>ytdUm)JBcgcv*IlkV7Uo86RG?`AwqT z>V6e(x7g}w43dB(fT@xxNB3WXtO)k+#d~LjwOfnG+FJ`7-3YM+OQ+nlcI?BU`!wO= zDt#3|uOhZom%RyC^l9cDB#+Q*d#hBPZHzurkOFQ8c20Zy=Zc;?X`{JTmSuEIvThuM z@9rz*og>B?{kTNbJVP9~=(o0}6OsP_O(U6<|7eHk6c8?xhH{|(Q0%@7Z<*V&_qWdM+`7mgV^()x&E~%LNku1rhO~R{5$a{ z!y2`MUTBwTac<=21TwC91CCUI{44?W713L2b6relR~r-wGJ`vZ0~pW0HO)B6F49Kv zl9Iex*@*}{c90KDk@{ffr9z`D2?w9U(z%(nD_cn(NfucA&CFd9C)CVbvqlpu(%B*+3jOrhb*zX`e03cn1fA^r$-kM{X;7Mp5T0 zu=zz?wmRogxaxBs5WE|$>NmFfo{0dRRxC&}gU3!Q(moVw`i<|0zQ?LU@XuoA5*!e4 zKDFFHN0Po@8;3P=Ad%+)4c&d~DN9Q;l6a>&Udl^i{^Q<_{i>SCTdz@1-<7Gc$Yg4- zge3k|@<+tahgxTd^}8<JLu2udFp+^?dLRc#n&CiOBb^ zyfxDzRb@@y4$S!r#*riHHmvz9ml0t90KkQKmx>NG`@i>>{{TQ*_U{<5I*qyi0H=um z0Q50l9pa<^02AxHe|dlO0bgO4{{RU2tXJ_2Lf)0=p9#O@f73tRyZ->vX=}~_&3Zq= zZ}}gz&-ZS>^qN}raNov8}j@C-{BhZ9l+5-s@V5{{Y3)UO_hFZefYE=)s(z3A+y? z4=*|SbDn9_grw~fYECg%k>FAIqr|aFlgF!HERo(mqK>yR23y%NzTh3%6E@MAKJmcG z;2GelNvq9pl8M$?FXw3l!ZQ$%F?@#+u|VB+k~$n$&>9E8KMu(qv-p-> zW+`RS^jq0&t)q=+isx3omdvS16CyZ*E0BI{XP%V(clLhpu7LyD-0L^e>Kc3LbKlG& zi7j5wQq&&H5e&1ek%it%7E{w6n)?d2xs$C*=gxONGVy)(ix-BkbmP@n5Wev&x{bur+pIB169fuwCA^wFt%006!fK5n4!dQ{4VOY*(! zHC`6xTOKnPi~LytMTc9|V-Y2^Xcq2O+Llee*+v_I1N_ke!Z#~}Q(1W9#+q#LU1{3> zscSXAo+6S9*`s*=(!u81%HXe>;4|az5tEZ&Px!C)W76~;3gg5!dX?nXmbz}Ib188c zD|2aS9nHFMzj9CBhVB9kcdt75vGAY6J_*qqQ}F%u^zzwicKTiHcY-pnCC!RntdO)} zNL36}h6Iz&c;(8CSgWxr^yQ*FhJP7&zU$2UPPwT~=Pk-f=3UI&*7SzB4VL6iz!^dN zBS5$AWiu_QJ z+}ozHez9J>@?4<0lq~Ob0?yJ6*mEkV5*EpD0Bqv1V4izfe=t7XlHqwe2pY!_PKWXn6MX)~XOEO$YmlqOBuQYLpmPQQ37g)eR$B?6FX|{{TZ;*sOhj{y{VU z0Kh-=HK}_I9&beyR2Fo$dSSeV&EgrBI7_Wu9_UmH1Lm6MVHWzS*#M+8@w z_-7&P`~Kwr0O;8()+4ZM3yAKc%G=Cx$F9~rNA(rrV_N2Eo}L;nl{9^i;am8lw~An6 z8^9+W7%<1LUYPZ+n^A>sElf)59lY3Rw<+6`)laAR9-LQ)_#W{*<+GWzet>i(4MmDd=(nDcV+TyP7k#UyK63m(czht-R^y znNl+6sW|@t8nG-7GkNkaB>cpKh6jPiZuLBN8gigm$c=JvxIA-FN~NxubrX8T|J326 zxp(Kw4!I!hkep-vx@k=pa=gLxl-XwAK#%qRap}ZNVqguQuW{_xG^rj7W7rO+tH790&BFnVb{z02@*>Fl z&p6I8?@ba0AT9!^KjBN1S1qdXh9{3&j#oUW9Y;S(j%m^r1mu=rFgo*0N8KSgIPIEB zA#yuwZH>K8B;@D0Cz`$wJW^wfDFU8|agW!v4G!d>^~uFZj87+zO0U#d=-2Lm0y&()+h z&F{1~=`WdFr{>V;!#c-Z4y8hkqCANzJKWDW4 z?Bz}dM^Jx3_?n}qc*4fd`%6%~khSIP@?34l@c#e;68DEuhM|b!y_$6Veb3S*nH4CXg$0|uZhDAgQl0r8G z=O+g>moyhQ7b`!WQUTT!QG#*Mlh5T^F&N-%;|06oyra0Q-H6}F$4qUhe$b3VZ7RLV;C^`-tlirwD-_M7jr*pUZ8$Oj zq-1($J?mQH;@Ol&@oe-8c8|iL^X;coBJ3a?yQADXcE}?&mvt;C>ljxcf__uZKBW8c zU38-MW>qDq*(A1(L%Ji7cz-bGr**&;2)(pMZIWX>lmq$Ia?pS>k}>W}1E0r%P)%(M zpWQns^k6bSD(s3mVrueFxcGj zki3)JWK>qNG9h_oV(c)=7pGn^$o{p&?rxE^(DP*JZVAV7N8|X`43`2a z37CM4xZRFJ9@!YH%REGG8Tqht-2VV75bR$hah(1XjkM<@jCb~^RkMO{GAYNVGDR>N zQfW}4w$~>k&}a4NYm&H(##u-?4sdhH>B;d}D(#YaP&(rtzLm1mt8G>!l0yKw>OIH3W+8pchui@tC!s$<>FHTFGU}1M z%z(-i07{XMUOx&gaVs52c5(9XPXu?z)cR+&RlL+?iN4N?WneRv!6TkY{{TGJBwCE7 zVRs@Fh$#xW`{$|Wr_!*ey0|y5aEwvqIRF#WwNi*X9d)epTjg0cy}|PU>QPSvBk<{4 zN?nwE#0+|4rE<0lI!pGM8JVznKQ(SFrA9^xV}tlqv6BQl@W(khC+k+zXgpOQ{^p7_N8EbjRHYz4z(~iHJu*pj!zY1ar#uT7E2ZwErHx(oET&2RD*7Ay*kvS_Ult% zxUDG%{AoPTn+KpA`&CxjSe(<;f!CajRakc{`Gtoc%9uGnc<1?3RPExEsh}=Q9|t^> zimNQH7z}+rhNNPur_!mDo=#6W$E6{Ozi}7@j!*bjF1<4>NeXq4l6mKjJAF-SbYQ^c zM_S?a+1Bpml}>pG0XQ6gOx4p@X$ie9LvlQ;MJT|d3}@B5V-;%8RdTI!R`pi_o*c1Nj&8DsgctKV~_ED-;-?=V~oE&&KLgxu4{!^7FOOq zQID9`=ZhTN-}xxqMu2txCg=GPT#fy$(&_R^Y*~I~O~bKckAKe};aqb{Qnk;b!naO` zHLuj{G`ZqwQbb?^{Gk1M*RA*+Be>KaNbiBcwqyG<1RrN`^N*Z^gXMyv2hK$lwLpw?vc=E8QWe`+P$or zy~gO8L%CxIf}?L8{SIrbgI%;}_X}6Y9S~)UA75}Q){I(;Ry?YUnYP*K(MuwTU>VK_ z9E@ZB*^f%F_cD3%NM8jM5A(pT1$<7RhmO)f-hcs*f5xDf#F8;^u(s3HiCl0$Khm?a zeFK&j-0%E8uYauBL%)eG727BHW6X#6y%*BD9~?|GZ*IK-mD|^YwNK@m;r<-z4|}f3 zEzCw3tu2~BNe2aruW$BC9@S&UI*|U*c+bkwMv;-u1_tgk{`aMMmDe^UC($0J9rEGZ zU0LQnC%E4wyb5!=T#yH32l|m+7K6%HkZA_6HPY&#oPTYV#nH4;eCz=TE?q?rqVs`+5 ze|!G`ixur!Xlq{#*=`CeeeIpm&wPvc)CHSVEzGQkbPt4PZj8#=Rb@9Xbh zV|cJz>G~zgLm(>+uz@~ooNWo)>t1GQ?#3yerd3T&rI(WX&!42Zc5=<@lbTqk5^n>O zjs`t@)ohtPhx4m8v8a%*MaLv{&3xQZ`mIS?EtcR&|Gvv`d$Q;R=vf!lNV`Al`qZI3;%Sv7b&cGT zgBc|UQIZY;#bjTqyv6W7Uw#if994yq8;Rq&lsFNtQvl$W>T{3iDl51|(lL$5Aa2M2 z^}rl^W34IKtp|o~okX6Re!t{lNt9w3gPwTlQG=7grbtwr0$Be5d)M%waa=O;KDM69 zmNx87AdN2?x{@%M=@+Iz3Fvt*$z=hjB#*JctN(&lEgAe^>2gp|paWAk-2 z)%Z_JOGuir|EtYw1UAEOQSg4aCqjjbx#6W-I8avhTwmA4=w)yFyFn#;aBBm?`jwxEv`cMHCMS9T<2@X8ADwTAkyC;1 zUR#S!%=y=KqZyE-vFT0?yQfNsuo)he5F9PR6dQ zv++`f1ac{pc4w@T$i<^mRpzq0nS-6a!nOk<_NRHO4ryu}#W>-)$CoT>!ABUZTdPJ% zOL==ndXIYQM8%GC#X~G&Rq8paOgGpxqiblXF4fL@W80dG#dq)aIc=icyO6O{&nbiY z5mhC&bsd;z81)sAt(n@!;zv1jiH>~^J9hl5s|_njdY)E44yP8|=*H_adAe1GPdiW( z^j!Y{O6I>*Fa&r_B3djhF2KPJG;tm3v`G<-4ApGh3HiC(vzM8Nx4Lq0jQga@tz` zjc@MloJB3RBqWT9e)d(lAA0};)Er~b`?YP%yPqS5ZPAssTb-T6+Krvu8ZDgT%ez-G z%;V>Y6Yna6_m~WAC-KfITg6Wc*&F*1e5Bg4Ld~7*#3*1$BtA}CuHZUntt~dr-&M03 zjnwSdHy}3n)DI*KVN*FHYYtCRds666KB;*$nuPvvww039C>W6k$|uJ{Ny>sU1`n-8 zm)*Fzzu+A-T1*K6xoNX}*_E!?fHz~2*m+=o2{^~UH17|!rn3`j`mMUlB!Qt36Y|9v zJ+sIyfZMwC#{gG5aBb~%SahE|79?+(ImAv+$eX`}NO{}s#sRH8eO}%Ou51{K*~pC| zL6amy?-D!g9D~^4cfm?MFSw-omZP~#jbZegi5h!5EIcabiDV-?80Y3Oj2sVQX`1A* z+FV=3WxW>h$-P7je5gn{l|Tn!$N-*3ImUUbQh#EmjppPFSeMLJ&KX>ED!^{vpT|5> zcxF~ejJlw8)g%Gu^Dr5d{lWm~0`Y;+=RDHWdlK%nHMJXf>@>u<)7CiN-9ONpHr!c= z`4Dz>euN$f=YjziG$E$Vq{z3*B)X92P)SE3Yz@JI#sdEU4{TtLIj&N|?@vu?N!ZE# zn1^MqNb;k&Vnl^O=%;|E?t_pqnzOG$ZuJX$YZzUnR#|U09lm9#C--i00W9Bib>Q?F zsd4)^E1Rk{v?-(h)|zXznU#r;OOjLayco*`_uZep^A!N{Dm_TsORa^12_>>t^EGIq zQdO8PV#VZ_IU0CBXT=doO7tZ0`p={5?1m82WWK4Rzn~y9><+I4|QvU#&!TsBi>Wy)Gp<6+0AMLWP+Xqvy_W8j);3hW_ z#b{dH*jd>NOZe6SZlNWHO{bDFeRpr_4>>2+xc~t{{=TgrRD$1GztoDSlQ|occkeCG z^pTL9qDpeaV>#rGxV^44n%I#v<@sr;i z(_z$;MYc-~N>_=Yj3jDCVx2}56vsYcAZ2=jc*y3c>CkGn_jf)f`#wI{6=bvk305fh zM&$D+c2o4=j2G%y@l2NR+Bi#lX+)xZxhCZSDykbFaAdLP&|u_=X)kx6)%WT4UK^wP>a=>&sARcM0aSw>Et?#U^BZeI{jF3u;yxh%=qyPXu zSm?*O^aCb)jb~AcMbfr~)TIru1|}lC41k=CtJJCII26le{{VzWz*`nswB!Zd%8xPz zJeK3{Avx*D`gA<{kISKEX4V7wH}Zh8 z#7PmfL!@M{Adl}3{@BM9x^Atkt^JGNOL1pr;B1%VV{soV9~mJ~o5`_%o|EfuA-VDCmBdPXCX!KSfUS>}yACi<7|F@R@fLJ%4BTr3 ztd|;*R%ylt*<2nFu0H6`>JO!8Yd#{5!&jY~%)(;wZLa6V9{j=-@V z!m&OwTCInNW10z31QlQah9e;0 zpS^>|0sjC$t#Qm)$TuIUt^2eBNiHNHu;B-#WV|GgG>qpxI#;xr;<6QIA+gBDD($ic zTw{=W)JXz>4&J;qYFj`9dhz`6P3TG0_)m-04S*$qmnYbR{VJBUzE#O$PYiGeT#yf` z>rut1e`XY(AQ{z22znfhWZ?e*`s<#&)i18ynpqA@2jc?-a4<(To1*6~WbAZ8v|$cb zu5=MzTH4$!mjxABSe|jn86N!9H(KVLUv;g#(=i-jcCX^h!?#N21Ah_w$EiJO+wodM z2^H}>ky5`m!y6Z-)wL-y@WmCl&jLo?e?f}Rk?+`#Ht6i`sG)Py+>g?b%hw(HQ=(HN zW%^d?F^|HIcH7;Jj@o&f4RIoms0aC0wZ4~efPC2wdKPoj+XkeAY7j;Xb_TYg)FX$a zgMVL{NngsT&Fm!-&Yz;(M#0(2p1J$L{yjgPch-sabY0Q~KHw4g@JHY)h5rDAh^qXm zLFw|g(BGFonX2!ug$zIkJP-?H{{XV4?fO##n_UX`lYoSPV zoA{kC;7J6dYy6-V1Y@be{cGk^;wz*dx*HBK6cSe+`?r3WsiE<1sTyO=C$9sHel5HC z3dU4lLrBy}f=Q*w`Rq&3t6mp3GyH`h3BrUrj=e7fW z9XnSWr~E;^w;6n#5rPN@KI5+*)!*r#5p8CTOsvS=3v>Lr{HkNm2XdQ?v_5;(4E6z% zR58k&6>wFTr%+C5w%=*{G)n;UWGNh(>URkxOaagEv~~4-+K!FlC{`U(&fidrh8}Ec z#dFYta#!jriPk$d}*{=N;O%kdLbVl>Gg$YGt&h@xTX^D5`^{{ZXyC5Dya zYwbO>j}=>6eUfet=kpgHs1Op2I}mGzq!ZFsXzGNmtam<`(L76Ism~-+xQ0nF<*R2I z;~;-N-;YZ4D=WEel*A+?g#$UpSKhux(|jqeXe=$PwMexsJtIL5{H)22sN4WR>_^ib zE7g24;^wq;wAT@YM1UnZB{udw$o$CfUQQMh+5A6R;)=1=%=b9?bOt93q-|nH z)7aJPEj!98F^ry-N5mfyJR9LwXtnK92qjUG5p2kQg1l!`{i%EdXvh0L*6#SJ{uL2} z^xco?TG_L@h7%QCe(nvQKzO6XbND|*8nS8E8l+Lmt2}m#zGRKMxL&LmxE$iTJu6hT z)^yu_TF-HU>MvgUBPe^{J+Gu{|dGrVd6L|#s0T$S7NZrhI8ub&xN7^8x$q=F9w5!lj$ z+MFih?u95RD>Lhz1NM%z(3Zye8&;Q8gG$gWE+=Ay&f0FHE!En)nYT1^K_|+A)PEViJZQfXyg#gH+GVBfxxeu>wzCPHQB^Hq(^AaDcF6c+GMNH^ zSDfcOR&R&?FL-ZA_)@+OnCh*lN2Tj}d9_HR{?D29Sz~DCc@4l|&?+1cA&D)+4yWeo zDLV6Va$)RXqN07X;!oOl!#bvqs_0f0dXTi$bRA1hk!Fe!i^<`FJ84EHZ;>|49Q6w0 z0P-u#{w@4e@RyAADYV}XN2vMt`n|5JaBpCW1c&U}e0D-O%yZ0S+*H2e69WSWt$gi8 zIpQZJW)Q=|F6egZLUTz)VPk6rC^)2|fs#>82emqY3QXpjPH89xNlhoxket#~q)J1V ztvZ^$Y1E`C1r$+2VhSjvClr8Ql)`gK){3-%D58pB6j4P06_2m~0LUhP_y_)mwXs@<136jMp`tX29NBzixFPS>+Oke)y7td;bBmu&_0k+qaz9eVZJ zdmqBSaqz$1vmUUY{Tn5HFX8)pf|0yx6p?})Wf*auK_z+VUKV5VT=lSawTjwz+jQ%e zv;~at5Egv~eVF`?(Y&3=_8pgO5?r`+gPU&eB}VbI^~v?a=nLbrD4i z65Dy?_XGNjpTeVgq>0LT`!W1E2Op(Ug6+?j(MSS}q-+Vv z#^Mi7Gt!?e+|!K6a61lh_3CT$YL8nZ?_#t%Tbt)+Xwv~dGo1AVRgEt0Bxxg*;I|<9 z`&I-cp8((~>z?1|(xx&jXXPi{*D<$4v{^)wv`BCQzFriMeh4Ib;O4F*vr^yv8a=$6aB;~bRgW~1LY<|#8R|`7 zUd1WLl`h{XWQWc-4w%P!swTUEl*m-bsen5tY@c)1j!TI%ZhPs=n|o|X5P-~1HlFo0 zgRqPsKPr>+e|VGEC*HW*C|+hVIU!tzpgu1_6vf%P=3JDTyzB^ep?G}3-x zqdoKJG3)P9z@|8q90Pz3J*uU|mkQo$w#cL9fyP*VJwK=NRvqkL0b@*}4ZwA*NoQd{ zk`85U%-+k`em~NoxYgIrjR(udPdOPQ`3i#49n-De{{WkkM^Qz)j`uoSOJ{Jo1TS;% z>Gi1Y8ar|oo0rbf+~fS_g}W#TjQ9ON8pONR?QEmCzms&oWQs>BoUtHu1Gzn@QNDoQ zhtB^16YcFSZ>AOp$(Hrh+}e&wW#wcT1P#QV2R-}N&xXDc2DLNmw`t_7XUTyJkC(1w z9N>-)+#L7fxm_~G`^Gw!rQ&@~%3JGr5?MqjtOdmTNJxPZhOoqIj&cwTFuqMN$JS){!|M?3PyK`_}`crLQ*q)Bga1cB-vt zqxV?qyi4L+Zw%Qb;f_nGWOa%-iQBmT0PqK(>yKLMtu7jSXr#G}MJYuxMyGg2BajXT zaC_ipyf;FNQ}G{)+4bAFuB|jy+LA`TT1hEymxGXU!#p419dlm4E%mjA=@^7q#^!lg zaJ|n^G4I;5tw}{Ftyt;F%I~4KBv$uU-c!fCWFPLFj)W1;MN1q|h6BnAjseLn&tF=> zvGIU)Z%w{Z$32j3VU)~w4duv~6@V>t(p)KwKJ*@-#e z5&Y{$tcbn#H!Px-G0=Z|1NglMJdAbeTOM1?rZP6BM_x`w4oA@c0F6+yZ!lwHD*||L z=hW7V$f@!u#@^$Kr#U{K{;IYL#RydSSDMUM-z!PCa7N>f z17jTe^`>3k2(Z$y8ObZ$f$3Qlxn^lrX4r=~I3AepYFky4b4xCIf(CkEVzX@u&xz5# zLP%VD9&$MPeie7l`NV6;B=q+5{aP&~4c<-i6m zgV^-RpbY1dN##=GK3K?8oRWCs9CXK8iWmWrCuQ3q8#2TBR+<3A2h)@5`1+5nSZIUo zBn&T1Q`iSX03ET8r1Uj!k~&mMe}tNG!5BYWicJN{f8G4O>A+*2=A%a2NF1>kJXDOl zj6kOuc8udSRag$R)@=N=SVf@Af_f85%t*#|)nV5(*N_2$$>~Lan6@xG)0MfZVodR# zl=9$xXs{Re`_LQ;r?`=lDH>k>w5&3DTpTbUE5LCIl%R(u=!yr z3=iGo9cUU7Sx8oB^TL)~`r^Ft99&+I;1mIw^VBXlIQrLDtla&I!d4$KllNfbfxD^e z{!S~3j_bSPEY>;SXZjFMK$YL4D<&8^D%6A9;nH3 zt9SnZ4>Vmycb@Khxnz@;D#`)i40QGt%nudctmbr%Ba@J=xPj^XL#14A9cu!H}>YVk2l64J)0zWBc5m^*8(>J_(9Ol3h7)s5#u(I32;`@vk?N#QNKoX1OPE z$@vri0Ewt1@iw&~Al)}U%l;J)9XHjQf2*_p@AdLMS{)0*5&16`k!R*a`-AyFHsR3Z zdLO4s%lLtD<=DJgC(n@v?@^N6epTjAuj=Zg3%Li;vC^|<)b$(kt95ZKqn5+5U=K|5 z?NK_;Yg24KQ7SbQ+gdV3VYd}_+Z{(vLleLQtyH&Q7^{!~6?P`FMRhN@FwPH8^Tl(h z>vP+yTixX+ZCU^aFVg^yILY97o%kKP+X>v1;J*XSK zd(>Ni>rL|jIj$y;s#M7SgMi$cPS)RG7_>(#^Pb_cvbubc_ERTsm*&h zYFw~A3@km~W24foA5zp{vrpq;yV*xt`p3dhD$nu^EGQIvcCP~XeWbbxHA{smPstWW z4m+CqKf@6Dc5gFqWNto!x$$z+#u%E3&dZ_JmTIJKXD0~>BRxsQNuPQ`$~j}jdDdM{ zd-esA;GdaQe;RRVG6%{&l+z#sj`bekPBTpq*>ju>^{6KvVl-dEK_8u0676grMH|@k zG+0+Wcf?vFUg>&kYvl*gV$O(7Tr8t1XYv0(_?o|H2I&{Zw@$j?K~ zFkK+(N9RI7$}{QHO?1~jYYd(M>?>VFff0I)VAKZb3BvMysqxRaka)#6c230c28}jn zKjBk{!t+@dQ%)Q;xyV75Ur|+4PSdo2>BX%5t z5-em9kV}pR+;h8kPWAMa7O5Wthq|XX{dE5TGpg0*hC7I(w~|zj;FEfapp}alE=W8R zz$A9(wrgVgYj`XcOE6Y=P_350GGr_AsO`0|Hv`5x`i@sbw_ToYuQ)fzrR7FI6cRDG zFoqwk!7Aj=9yIrtjk1fwxayc76KHW|#6n_!9eg%uD zt)bTAzf8%ez)83&!)Uqa94~T%?=a|3s5rmkC{p$$w$j7Ne&9S(d4vUs{o}ZCwTA=L z{SGQv-D%bqLK~DYOK%wSQ*I2MwrBvL8dFL3+*`+aD@d$K{lR1M#^>qK zjx)!lD|PHE^g39z9U(O4hG-TwL=Zi)jjxh069DoE9CjkJG|QRvD`9P@fU>-eC~|k1 zRQ~`8Y-f5d1`lD!0;o?CUFySDv5W06*anC@G0g0K@r;AfIT`3qKs;5QQs&oRw_P61 z1g~&2EQf(^ih8&4Z^**0etT5%+fMtA_tg{ITr=wL;%H$8%*HLoMkGAs%B$RV$KE5J zc&mEV^@h6?Ru*?q4X+&UIbc>Wryz9%vvkK{$?Oa_8me1BEU#e(WD2pwITMs4VNN|j z&-Z)NbWgN+b~zsCD?xcPPdSKjZzP|1W2uaAH+3CP86!5e=IhY4e}(K{9w*YEo>ra_ z_Sqvv3g0kx%MX>m=bwD^>&9{^G(A^N@YR?0b=~YzK$(;636K?}CAPT6K+ZxpLO3`* zViC=&-$$<5M-Yn9WRBTgNBTm^w|g9nfZImH?Vg6R?$*~{zne?6fo;vy5heR<$CM*> zJ4f)D32qNea&y2n%9^*{CiS_uZfCjF8^yMTT(lzHEpSx5y0+|=JtQo00T{*s>%@0& zZQ|==r&<z)>@wx~w?b!x=rW z39RJPuC#ccQfyoqOHFu+ISzR*7JDyD9!MN>!Arl~54YZQFRoo_%C;A9?!22RY|0Op zHb02xmD|;U{0&uD?>spHySHyL+2nhxws^)--#gtpVK8}IWC6kLSQ>qw_T*7&u`@vg zWc`Vh1C!oHQ^8aBLY~>iG7W0nYP0HcpAR}My~81ErUVuHK0rQRc_s6K{oZrwQsB1x z!<(<%SccmF0A8LS5DZ(o$BQDE+vUF{q*8hF1~>;QG2b|Bx3X(j6L@xec7fqh_WU3D zX5)a3=;J>(1P?>ew^z&ITVV0#dlgWL9)5V-@S}0+g|IzGze*oYnh0M~OQHRvCSGU5 zd2BJnct60s2Y&w5HtY8e{TIwz?MnBdW@_dS7C&l@s(lN05GgM9{nrG?={VPS-rSPR@~cJOvA|`o913J*kO{H;Ea0X zr4Qm?5QR-TDWESpvaFt8&Y?#*VtRqoIp@7;>>k%w>Q6h~+8()UBly8y_G@__2pQsv z2W^`sUK&PV-+UevjNo(B@t=2n;!9hId^0bXy67FZZrEcQj53@9^Y#b7*169N+)rm@ z_ZG|*;LAK&AtpdG&v5zA&D8hEuA55xF0o>|?cp-EprA*z@d5&Nsy7%TsUsOQoOvF* z4L1EtQrX^UQAw%kaEQgaGfxVzG0c&UPi?2TY-iLOxuV-z>pE%F@AgSG>WAULcz?Q) z;N>>;$mcz4ox8ZayVR4zH;&I7aQ&!lQ|DZuI9S*YKBRr%I0Lfkrhg9FKC5X2*77b3 z!0^A8`M}8eaHpQR!Su<^G@D92MBeYADn)m7dY%;3+7WAG5=uG`H9^87WBZ_Fj^i8w zR<+1(v<*IeQ%HE#nbls{l0=Nh0hK`Exykj%H3@o3~wBytA^}i7t z%_avjB-K6UevrZq4!g&;uwBs283d!_hYgdG zd*`ouDO6BuZ(ykhD7d5G>7r(5I3#|8tXkQLBVp7pBkNl__LX_z>*+1!3}Y{*>j2eAuXCm>COhAf8V=RIhUo z{mU@i;NWy8uTHgEk#id6Qdp96pXphw-N#zJat1l>YdrPhx-LUOp7ezJb?HZHX&4!# z0;t?i9XP9SfGn{{X6|H$bQb0AMk> zcqi+Q4Q0kkkCgLISqCMCDoQ$iKU}}HQjjvH2g*t5>N!0Rab5O-@fJuKA-#59K-w2_ zx9i1t^Et*Br3!afLZAO!_xGdmOK|c~^>l8|!`> z5?$J;zth+LTB7CS9k-`Z^%)+xt_M!l@3iSemh%;0K~i}h;EzM?UqX0G;z7BIBGlIh z7%r!JdK`|U@vQyoddE~&lK79E5c8bicO5b-rqeasZ9kQ_G7*kTZT@-b_}994m*L-s z{81E|u7@JnUrCdN7=l(m-d@D_W$(!Z*O5PfZ?wYety$e*c01pQ8uERv{iD)t7>vA%-f;)gH01pV zTH$5YG`$AcE|F-F-L}xK517rk@&g<*4%`4U+M$la#Co-)`qr^>+GVx462o%R1;NQ1 z5@oXSo0X z-cx5E@D>O1C-AQU(CjUA{M>8)Ak{6UJjH8oFWMwT10czm%8ZUevvzYG&7Iy#Ju}(NF(}JMWpKbzK=4@ zva}M9<5no=>&6@C!||^^z7jI`qq*5j662#h2jYE{ntzM+C@&@83;PTlm z&wSUM?ysW$DQG&cjx|sCNo=G^ZoHI=TWko~wrA#F;mPA8*P-k_cAg3Crh9vs+9_i= zbag7qeF!)p*CeURJD;-Td5s)S7Ce%>OI6rF^zFi;%_t_Ll=gXvcM3NOWgRH93!=Tt zarjp+s2&Y;w+D*mZ-Ha9b?seLR;QJiNpiEE(U1I9nm7G~Z9nvC*RFV|HHDO?EJ-rUQz7 zbe;hq=|wOcQ~l@}An8pf(xcr@pa+ART8@`IQea39DJcQXEifJqX=#AspHR>R6jBq4 z6R-=Mb4GJf^``@hrmh31rUTD3`j)H#MHEs1qKYU0qKauglmMjSnMD*4xKT$+C@CPK ziYORT5t>>k0fb_bo=5{Gp(iGS8Wfss6jQid^zRA`wV3Pslm7stWUs2cDxjim0C9&5 z452aU(Xv<8UK3zZ2T_6buM;p@v(v%74^p?WM}+b0c_$!@W9jYE zyrWaoF0?!OZB*=rQW_F-fzCP4U=9vDSGQ^D`>~46@ivVfr)1Gcxnw1xZb1#{pL+0A ztu0So#_`a@@Xo4+*`S??FpxKO`FX&{UOVyWU5rMw5UbeN4-sHv@{`s;uAMW$V(!VruKKGbx zcG8f3U;_Gs`uma6qZWc}0AznL#xQU*&*Q+!>sp4<1g|qn0xWj0v5iLe`Hwlk?N9}g z)J(2Iw?5y8_*1eMHOm(gGY>B#EC?KRCpDHW-G{9tAxJ9Mw|UZTiyVF5N<%G)Gt-*MyuOKpr&V9Sj2zSUd1yxNF^)Rov*3a^ zY!%2;o_mwtiwvliturmu(S=ihtDZpj?OQP-BH(a4Vvu=psZoL7^QH&JSpHQkX_8MU zRXcq;``0V3=ufTab6dUhSgVjsk$_p(oS`0vz79@0;~?&|PjbRAz;5Fwp!YR+Sz391 zO~&a4I;h$+>+6bfe6Hvnq^!;h!g?Un^ysu}X=NT)ne#COId&|08%I{aIO$n`5qu?c zu4r>Lgrn_t$sOIX67F_uZhlapfsjZT9Zh%lH?TnQrMyZEt*~VVFgfP{9OvpOlE(AQ zrR1I>&(;9GS;s)!WDI^4v}(yupQ$pYoH;rlKKQoMElWnyZvOz`Ah@~Fu5Mx%gUVAX z$AZMWrZQEA)AHbFIP7yZC$O^9B$r4q`GR<3({C-1!z291&lngks~E!^Z7kRsHSUk$ zPYp?^++ITr(A>?2nXTq{6DPS?nN+d$BPO^#Ge*<3e;rLNoCWN3ZK33m+D4XT=nJtY z0kgn3!u!`{I`OxX{=eWHlcOv8oyUeeD)w3(oxG~3`@H#yVV^nuGuLYHK9$$Yp=ozE z-(0Sy!;A+=v5?+2c9&(}4%cW>uI9i(unhyV&5yaCt(tOz62RNrZZP)8^S zlk;bqs@8Tc@!d2eHV*}k57ZtFLz{cD)!wYN1-qnT8%SeCQGxSu(;XL|aboeba-#-(jmpg)0rX&aHBx7U zFbZV>Kmdl{pRRM7>{^`cdGjPsDa1~^k+ll2Vlkb>vHY=Gwh^?g=17VeP61x0*FLq8 z8^t4R0m~ko1C#h;71LTOK^_MfJr0tD7UE%f?yT0302PPY2h~`_^>% z4sKj1&Wgp-NP|Y8 zeLqjqrbyw8=c!UKKb2=&xsDI+g&nb+^{cU^{AgvJ3p9G=~JS1_}Sbu*pJ2`{yNbAk_`>~Zv|#r4F$xJ)^3 zn+F3Ov66a&$E_s6?rFrqBV#x$KJdWCLB=?!E>3XE)lbXm(9=nEVdi|G3=aGZW1qy; zX(bZLw9`@I6f+e01aKP;dErQ-pvVvHr9PGT!nAO*42c#%iROD!+X8%{R_S z;tuC&W5?9c1-F=~+BqhpG5~T;NvhH3C5Y;J((U<)C$CRx0kX-HU@g()tbLeUDB1OuA0rtfKa`}7?^&E$c^*)sWlb*E4lO6hc(i$b*j!!>_ z6f8g#PZ1u>kqvwnQnh+u>pe;)Pbn#JVNz_FnuJ2Q}d4+HwwNvcdA zadY!IB#iXQ&3Si;wHA$8V^ZYpgRTaBew=jw04Ki*4yHAoh~DJ7k%BSWuUOCfv(%CX z->yYrD{ci>>yzpDVz(k=jAsB>O+qOyriYuD)HZSf0M|3E-2{k6gyoOs7oYI0vfsM{Jx}S) za@xbGxI|H%i__fVxobalo~8~rs;)tACO|mluuWT&%OsW^s}39V!jZ%70Iqo+nXAum zh`XhAPf`3Y{9I>8rS5&JE^sJud(RUUof%%)QTh2c3UrMeVW33tai5%8ayEckQ zvE~rJjUu>XQIo%#aDBY zoYDe&9MZ6J6TFxl)pH=u0p^<_Y-H0=qLNMlHBm^3v01V)P{NYOGs`38TkfdrDV|_F z)4a|A9M-luTPIiBzD?Qb)|~{%fHRLUwnB{b2BCP15UOxbIID=zLOx{$+@xiF{l~13xZCaK66vJSgbvzk{?6x#`xlE+;Xni*^dw8NuLZ->)@FS;O1{ zy_9F%oaU6^k|zs@ol1)9O-*DZE)4<3a5|Cz?^MKv@H2|mv9&28+)Ws0)bbm@Zl2w1 zo)B%Gooex?9%jq7$s^(daCR08ouwGCT(`O70QDHFS=1KJUo|*Y0I3|dPdFo~`sTH6 zytvRwY*4c}9Q0zxZaC}Kt4(h3!1Bo{WXH-`x^vqAXFpo*g*$tv%GJhmwN}Y$a*Z_3 zbHSk^>l2Pdfi0QJ`+qWDcL<`-AHWRZUA4p%;=y`p^v z-gYtuD(p!ouUgH24_vMSFm9&32-UQCZd_~5+^OhgK|8M4(G(7V3iWF%sO_yHg_Mn| zGml>Nz*ycN2qQIwWEO087U)s$4~-G^!|a(Rr;5LGa@M5?V%9^H;>=>GtP z`p?^RV{0MImhH2z@b>(x=F^(=PllSZ*lWveGZl*L7|;9NNA<4i^zR0G7}#^ten-@5 znSkMZeb~o8g)%7jpvFKP3QL$)XgroU7{RYJ@LA4D;%K3qtdYLY?+!`) zKl=4@9d6#?u%N4U2D2`7VnJSUo(L5jHUgl6u*RlCo_$Xyp*|zi_J?5E zQ;;!Pv%_kj2Eff^v{5_xX@Y?D9P^sE!Ys~Hn%J>EpfwwS&6QkWWYn!0Xy1MtAmI86 zTWvliV}YEGJJy8SeZ+8lg;);VF@HrU}$e9lMj`7Zs?ax(2_;jsU4HVts_aFl3bEmfjG$>$6BEG z+J=og>(N?9_Sf>o8>_KKhCjQ#jxqBdPIwvXSrh9=#FN3MSZViLl0}uJo-nbYUO+Ah zPn*BZ)3<8r?lpUf)B83nQZJ-Ce3=~z4^rInnCN}!S>IK-?z$Q`(H&Cq+G_@gt%Qbl zG7@~p9C>Pb4mmB*9D9*9_M--?W^~(38SW9{kqFvg3^2_7e(CA!+OeW$@W!7FmHoMv z2-Jk0CJ*jGQT#;o=bqfs+NPlllK6q_rVDTa$q7t4#DJCLwo8ud_zp)f(_f%yZCUCg zM72#i@8&R|NTnPJKpZF-IDb)4*)`UgaXzhe5oNw%B=JPqFzw+;IQg(MyQe=&$MX+~ zo-eY4Z*6SiVJj#k%mD#F3`WtMvCet{j!kJLoI29V_@kc=?t#9(A(e-}J~gKqCyO->m!YiNWwGOI^$uAun} z;{=n?mIvg=2d_%bh{fT1G`4x&>|;%^$P+G&&&tENW5SW#;QG_8wC!0QU1}LfyqqX_ zzD>ST@~M(Ia66te$4+TJ{W=Xl_$7m?FNa#+O}z~E<|7@nip(9#6$*?2#_S)x#&K7y zEcFd7rPU)rJl7a$?e`Kk0fkuEj&~>n?;J7f>s-_tVev)mQ_Fd9_PToz%)w)KpCFaO zr~pTS&JIto=XOi&PCJ33?>}#yF&wx8A1QwH*ugu%;HGiA7~+Q;ZNE_`*P(DMJ}EKZ zBeYhw(s`D}N6gm=mGcN-P8TJ1p1hOVqMKH~lHllDe55ri+-mn1GA^Mi2ZVqOQN@x~c7wzq zoQFHS&Eb`cXFQUpC*P$_43>ActEfC7WWRl}4F3SBjYdumI4nTx+wrPCE{(;lFTeor2nn|nZ zblOeC@?W-(a>K|mhLn%JA_gEK`sC*wMR)q7gGjTNSJUybHQgn-Bu68C(8C$S{v6|) z@{JAc9_d8Q=1VChoA`lc$lH#acJW?^qg{V&YVv7!U8@nX|&?^GA#34?VYDnhF8Z08>;Q-F^prSQM0?7Q`cV8RJuujvcmaX z;7H6q`*tpaA3}4*QSk-j`W3t0Y3PWPNU<~^22fuhx+h}2NE{K{j&$uT^xw1nnjoYo z4-BYrF6ZRPTl>WO5PpLdk4xWj`q+=elTD()*V`nB8re_C(W%GC z$CHkyuWB^AlKX_+?GoOj2ZyzdE9|*qI*X(y;BkZaP* z>GH03vpoE4?)h!0$y{9BxZM%kkM53ZKGJrE_9-PKo#Q34P7mu{73G>CGeeDss`_-# zen;}IdRP_7F_0NfO6Q>CkgSTm4oAK- z>r|X`gVwo`vluC)@q-}g1F(8_d&{p7a$rS{I^{2T#ss=peO*9RVvt<0o{{XK|FWAt-CzHiTHg^tv zKT1{v$L|BRCiA;A)%k~EOSB&SC>bCnj}<994l&2_s0Xz_c`AFFKs{LJ^%Y_ZnXTmW zt=y!FbC7XW5r8K&^&|42H9b$mo;JU-xIivcM)*4$cgo$yanrqf{)6KCZAn5*K$8c! z9FNOCm3&yQwB=3+>0Kt5;v0);F)W8`V3INjBkA6=oh0=|Mx#gBGwA*p)+Jl3n>$&j z7y@F7B_7+?4d49pSsJ&1G+kQu8|iK*QEr%q-*UCGI2aGGC?$t(Nbm1nJEi#U=OQ$H z>X-vAGJ124!`z`W>t-vzecU zVHg?Dd}p70n#YgAcA9P5&1k{ocI*ILpJVIjYgqW2(nwCy0N|b37#{iSSu<-EyK-dn z75Lqs=5xoeqB58@6Qq{nD6N9;jTm!=AhvKg7|&jr>sXJfO}IxU;-AHg9iaBe`CIiB zh%W8jm0mPcC;YXMH?wEBQr|Bll1iR?^sD1bgUce_+0J(lG577yY_<L4rBX}LYY;vd2@#)Vsvu9$~ zjAWaVa59Gn9{g2ZO2$LF??$-$Ezu#EGVY3BUot*3k^D+Sbm|5vIK}AAu=tv^CaThQ zlI&ynN8omw;$=u>*M+t3&AJ~i?*Mo)l1A^Bk~)ria(xct_EC@J`wqCop1y2jABG68 zG=s$PSxBp{!1^u7dRV;ErzJ_F$P+w_MseTx}#thW&W_s>l2@F>s;oEaUat z9FA~(GQ;^A`gcb07Llz&E;PG=GO*=;iF$C#c?UoJZ(7=B%C-(W9E|3;9HgC@zxL)b zTKhxfNxxD`?S~q8{Lz;a7a!OEfQG<$o15V??%`Gq-Q|KA=hwVS%{R_ih zJkspEKd0Mi*7E2!bG%luEJ)J3%o)f~0b&5j>TzAyhc0{(@ay0Yhx~PY;O#HOnvS=s z-CIujk_RfWw83_kSK0!^2G9V>C#`AxQNI13J}T=rJ|VvNg*KTzwwZ5YV2?<=nR5wt z&f^mGFOR~xZw>g5;U9~>2HVq6@Ma;J=7 z*W&1e8Hm9;b=4WuZ?R*=l{{U;~!a~+}CMjWmDY*#iDkE=9?I##)WOcy$ zt_h)-Ll;%%QJvp6vu#V2N7_#5-)XmIue>>VbWHi~DXW8?9-6?)Hurh$Yq@ep&3|<( ztu~i6^=S5QjXoaGw10T9R{mwY*; zYnFaEyS(t_mx-^m?LG;#`#ac@K=c0igi|0PJi?$8TAI$Q@H^rsfIJJNc$3ER=y%>4 z(uJ(h$EICe=1CSH;IhZJl2D^`lufQKwhiMs4c~nx|g=>q$8-PLX%zJ806wLp-I5 zbEoW_SK5Y+Qnsr0Uib4WT<+r1A6EFk;4KHn9}Kjg30mCGe9Z(g!y;d(gE)~;Z6YQB zfWY$HR6iOl^-UYY-XVkj6&{bG=}}H?;MZVC7F3VV2^6Xj1_nWaj@!AeV@mNS!>Sptaez&Dhr}Nq>z*a?7QC_Rx`pnG zcd1=XZ3MRy7#agJJUE6!g#mVz1wmgyik!11#o{v@JxIl>P=s6NRpPJhX5T85ljgO) zK4oiZ%VM$lrW%e4v|O)JQfXPzlee>qS8yQT7H>rqg&lLXzXnU*dYNz;Q#}I zMtXHM>mCR3uZDDgg5EyxmZf>*>e}3v4PkHPNZxRUK+p546kGxPOf%ZNHqIy~yMhau z#k4X=i6rc->k=^moT`GvDCYnYam9T%4P@}a<1w{)WRjhucQ&~>ApO+azrD?>yS>+u z;ODuNu~=*^K4`Y%d09n!+|pXvD|@!l^s_$Q_i8w@s+QP>}{^C($3WqY0*pDdFEtijmXSx z)8-h)0qtGI_w762y$8n{E}P+<4^F=D=7$}opKGm41dDqGn<6CU5a_ZXRm$z!H|_2S zuR7B_Z}8K@vwUK((zRgL9wxG6(8}7}D4FJ2oWvBw3}QBuU@`><83!EK!zgF<@L0-K zsnmn6;ZhA?f|2=
    qFDywEF_-cZ{+W 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ƅ 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�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\033[0m %s\n' "$1"; } die() { printf '\033[31mx\033[0m %s\n' "$1" >&2; exit 1; } @@ -42,7 +43,8 @@ fi # whole file exists to avoid. find "${CONTENT_DIR}" -name '*.vpk' | grep -q . || die "no .vpk in ${CONTENT_DIR}" -[ -f "${PREVIEW}" ] || die "workshop items need a preview image at ${PREVIEW}" +[ -f "${PREVIEW}" ] || die "workshop items need a preview image at ${HUD_DIR}/preview.{jpg,png}" +[ "$(wc -c < "${PREVIEW}")" -le 1000000 ] || die "preview exceeds Steam's 1 MB limit: ${PREVIEW}" cat > "${VDF}" < Date: Fri, 28 Aug 2026 10:45:46 -0400 Subject: [PATCH 26/32] wip --- .github/workflows/hud-workshop.yaml | 42 ++++++++++++++++------------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/.github/workflows/hud-workshop.yaml b/.github/workflows/hud-workshop.yaml index 9522a036..358175e3 100644 --- a/.github/workflows/hud-workshop.yaml +++ b/.github/workflows/hud-workshop.yaml @@ -63,6 +63,30 @@ jobs: echo "addon: $(du -h "$VPK" | cut -f1)" + # Checked here rather than in the publish step so that a dry run fails + # on a missing preview instead of reporting green and leaving the real + # run to discover it after a 90s SteamCMD install. + HUD=apps/utility-sw/hud + PREVIEW="" + for candidate in "$HUD/preview.jpg" "$HUD/preview.png"; do + [ -f "$candidate" ] && { PREVIEW="$candidate"; break; } + done + [ -n "$PREVIEW" ] || { + echo "::error::no preview image at $HUD/preview.{jpg,png}" + exit 1 + } + + # Steam reports an oversized preview as a generic upload failure that + # never mentions the image. + BYTES=$(wc -c < "$PREVIEW") + if [ "$BYTES" -gt 1000000 ]; then + echo "::error::preview is $((BYTES / 1024)) KB; Steam's limit is 1 MB" + exit 1 + fi + + echo "preview: $PREVIEW ($((BYTES / 1024)) KB)" + echo "PREVIEW=$GITHUB_WORKSPACE/$PREVIEW" >> "$GITHUB_ENV" + - name: Stop here if: inputs.dry_run run: echo "::notice::dry run - built and verified, nothing published" @@ -103,24 +127,6 @@ jobs: ;; esac - PREVIEW="" - for candidate in "$HUD/preview.jpg" "$HUD/preview.png"; do - [ -f "$candidate" ] && { PREVIEW="$candidate"; break; } - done - [ -n "$PREVIEW" ] || { - echo "::error::no preview image at apps/utility-sw/hud/preview.{jpg,png}" - exit 1 - } - - # Steam rejects a preview over 1 MB and reports it as a generic upload - # failure that never mentions the image. - BYTES=$(wc -c < "$PREVIEW") - if [ "$BYTES" -gt 1000000 ]; then - echo "::error::preview is $((BYTES / 1024)) KB; Steam's limit is 1 MB" - exit 1 - fi - echo "preview: $PREVIEW ($((BYTES / 1024)) KB)" - cat > "$HUD/build/workshop.vdf" < Date: Fri, 28 Aug 2026 10:52:13 -0400 Subject: [PATCH 27/32] wip --- .github/workflows/ccs-update.yaml | 2 +- .github/workflows/ci.yaml | 4 +-- .github/workflows/hud-workshop.yaml | 35 ++++++++++++++++++++------ .github/workflows/metamod-update.yaml | 2 +- .github/workflows/plugin-build.yaml | 18 ++++++------- .github/workflows/swiftly-update.yaml | 2 +- .github/workflows/test.yaml | 6 ++--- .github/workflows/validator-build.yaml | 10 +++++--- apps/utility-sw/hud/README.md | 23 +++++++++++++---- 9 files changed, 68 insertions(+), 34 deletions(-) diff --git a/.github/workflows/ccs-update.yaml b/.github/workflows/ccs-update.yaml index 8ce3957f..b36cd80a 100644 --- a/.github/workflows/ccs-update.yaml +++ b/.github/workflows/ccs-update.yaml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Extract current URL from Dockerfile run: | diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 6059cb57..dfe3e753 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -18,7 +18,7 @@ jobs: validator: ${{ github.event_name == 'workflow_dispatch' || steps.filter.outputs.validator == 'true' }} channel: ${{ steps.channel.outputs.channel }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 # the channel IS the published tag, and workflow_dispatch runs from any branch, # so refuse rather than default an unreviewed ref onto :latest @@ -33,7 +33,7 @@ jobs: ;; esac - - uses: dorny/paths-filter@v3 + - uses: dorny/paths-filter@v4 id: filter if: github.event_name != 'workflow_dispatch' with: diff --git a/.github/workflows/hud-workshop.yaml b/.github/workflows/hud-workshop.yaml index 358175e3..f5ebaafe 100644 --- a/.github/workflows/hud-workshop.yaml +++ b/.github/workflows/hud-workshop.yaml @@ -21,9 +21,9 @@ jobs: permissions: contents: read steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - - uses: actions/setup-dotnet@v4 + - uses: actions/setup-dotnet@v6 with: dotnet-version: "10.0.x" @@ -106,13 +106,32 @@ jobs: env: STEAM_USERNAME: ${{ secrets.STEAM_USERNAME }} STEAM_PASSWORD: ${{ secrets.STEAM_PASSWORD }} + STEAM_CONFIG_VDF: ${{ secrets.STEAM_CONFIG_VDF }} ITEM_ID: ${{ inputs.item_id }} run: | set -euo pipefail HUD="$GITHUB_WORKSPACE/apps/utility-sw/hud" - if [ -z "${STEAM_USERNAME:-}" ] || [ -z "${STEAM_PASSWORD:-}" ]; then - echo "::error::STEAM_USERNAME and STEAM_PASSWORD secrets are required" + if [ -z "${STEAM_USERNAME:-}" ]; then + echo "::error::the STEAM_USERNAME secret is required" + exit 1 + fi + + # An account with Steam Guard cannot be logged in by password alone -- + # SteamCMD would sit waiting for a code no workflow can supply. Handing + # it a config.vdf from a session that already answered the prompt is + # the way in. Password login stays for accounts without a guard. + if [ -n "${STEAM_CONFIG_VDF:-}" ]; then + mkdir -p ~/Steam/config + printf '%s' "$STEAM_CONFIG_VDF" | base64 -d > ~/Steam/config/config.vdf + chmod 600 ~/Steam/config/config.vdf + LOGIN="$STEAM_USERNAME" + echo "auth: restored session for $STEAM_USERNAME" + elif [ -n "${STEAM_PASSWORD:-}" ]; then + LOGIN="$STEAM_USERNAME $STEAM_PASSWORD" + echo "auth: password login" + else + echo "::error::set STEAM_CONFIG_VDF (guarded account) or STEAM_PASSWORD" exit 1 fi @@ -141,10 +160,10 @@ jobs: } EOF - # The account has no Steam Guard, so a plain login is enough. Both - # values are secrets, so Actions masks them in the log; the password - # never appears in a command echo because -x is not set. - steamcmd +login "$STEAM_USERNAME" "$STEAM_PASSWORD" \ + # Unquoted on purpose: $LOGIN is either one word or "user pass", and + # both halves are secrets Actions masks. -x is off, so neither is echoed. + # shellcheck disable=SC2086 + steamcmd +login $LOGIN \ +workshop_build_item "$HUD/build/workshop.vdf" \ +quit | tee /tmp/steam.log diff --git a/.github/workflows/metamod-update.yaml b/.github/workflows/metamod-update.yaml index 894ffa23..c5fe33e2 100644 --- a/.github/workflows/metamod-update.yaml +++ b/.github/workflows/metamod-update.yaml @@ -9,7 +9,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Extract current URL from Dockerfile run: | diff --git a/.github/workflows/plugin-build.yaml b/.github/workflows/plugin-build.yaml index e8727e70..acef3fec 100644 --- a/.github/workflows/plugin-build.yaml +++ b/.github/workflows/plugin-build.yaml @@ -42,11 +42,11 @@ jobs: contents: write packages: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Setup .NET if: inputs.run_tests - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v6 with: dotnet-version: "10.0.x" @@ -63,7 +63,7 @@ jobs: - name: Resolve version and tags id: resolve - uses: actions/github-script@v7 + uses: actions/github-script@v9 env: # never interpolate these into the script body: `${{ }}` inside a JS # string literal eats the regex backslashes ("\d" -> "d"). @@ -115,16 +115,16 @@ jobs: // the package name already namespaces the image, so its version tag stays bare core.setOutput('tags', [repoTag('latest'), repoTag(sha), repoTag(`v${version}`)].join('\n')); - - uses: docker/setup-buildx-action@v3 + - uses: docker/setup-buildx-action@v4 - - uses: docker/login-action@v3 + - uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build plugin zip - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 with: context: . file: ${{ inputs.app_dir }}/Dockerfile @@ -143,7 +143,7 @@ jobs: docker rm temp - name: Build and Push server Docker image - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 with: context: . file: ${{ inputs.app_dir }}/Dockerfile @@ -155,7 +155,7 @@ jobs: cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ inputs.image }}:buildcache,mode=max - name: Create Release and Upload Asset - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -170,7 +170,7 @@ jobs: # against its v0.0.N image tags - name: Prune old beta images if: inputs.channel == 'beta' - uses: actions/github-script@v7 + uses: actions/github-script@v9 env: IMAGE: ${{ inputs.image }} with: diff --git a/.github/workflows/swiftly-update.yaml b/.github/workflows/swiftly-update.yaml index 14699ec6..70f10881 100644 --- a/.github/workflows/swiftly-update.yaml +++ b/.github/workflows/swiftly-update.yaml @@ -13,7 +13,7 @@ jobs: contents: write steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Resolve current and latest SwiftlyS2 versions env: diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index e9ab6094..a58785d0 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -11,7 +11,7 @@ jobs: scripts: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Test setup scripts run: bash shared/scripts/test/util.test.sh @@ -23,10 +23,10 @@ jobs: matrix: plugin: [counterstrikesharp, swiftly] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Setup .NET - uses: actions/setup-dotnet@v4 + uses: actions/setup-dotnet@v6 with: dotnet-version: "10.0.x" diff --git a/.github/workflows/validator-build.yaml b/.github/workflows/validator-build.yaml index e34ba3ac..9dfedc2b 100644 --- a/.github/workflows/validator-build.yaml +++ b/.github/workflows/validator-build.yaml @@ -14,21 +14,21 @@ jobs: contents: read packages: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Resolve upstream refs run: bash apps/gamedata-validator/scripts/resolve-refs.sh >> "$GITHUB_ENV" - - uses: docker/setup-buildx-action@v3 + - uses: docker/setup-buildx-action@v4 - - uses: docker/login-action@v3 + - uses: docker/login-action@v4 with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Build and Push Docker image - uses: docker/build-push-action@v6 + uses: docker/build-push-action@v7 with: context: . file: apps/gamedata-validator/Dockerfile @@ -43,6 +43,8 @@ jobs: cache-to: | type=registry,ref=ghcr.io/${{ github.repository_owner }}/gamedata-validator:buildcache,mode=max + # Still node20 and still warns. v5 is the newest release there is, so + # there is nothing to bump to; leave it until upstream ships a node24 major. - name: Delete Package Versions uses: actions/delete-package-versions@v5 with: diff --git a/apps/utility-sw/hud/README.md b/apps/utility-sw/hud/README.md index aaf32302..c7a1c0ed 100644 --- a/apps/utility-sw/hud/README.md +++ b/apps/utility-sw/hud/README.md @@ -136,8 +136,18 @@ exactly one addon — the map — which is the entire reason that plugin exists. ### Publishing -Workshop items go live at whatever visibility you set — there is no review queue -to wait on. Two things do gate it: +The published item is **3791537475**. Pass it as `item_id` on every run; a blank +one creates a second item rather than updating it. + +Valve does not review Workshop items — there is no submission and no queue. The +only Valve review in CS2 is for maps being considered for official matchmaking, +which has nothing to do with an addon a server mounts. Three things do gate it: + +**The Steam Workshop Legal Agreement.** An account that has never accepted it +publishes items that exist, report `Success.`, and are invisible to everyone +including the server. Accept it once on the item page while signed in as the +publishing account. This is the first thing to check when an item uploads +cleanly and still will not download. **Visibility must be Public.** AddonsManager fetches by id over the anonymous workshop path, so a Private item is not downloadable by the server or by anyone @@ -206,9 +216,12 @@ WORKSHOP_ITEM_ID= STEAM_USER= ./publish.sh # updates in place ``` It needs a preview image beside it and refuses to publish a content folder with -no vpk in it — the empty-item failure has no other symptom. Whether app 730 -accepts a SteamCMD workshop upload at all is unverified; if it does not, fall -back to Workshop Manager and read its contents preview before submitting. +no vpk in it — the empty-item failure has no other symptom. + +App 730 does accept a SteamCMD workshop upload — verified on 2026-08-28, item +3791537475, created and committed from an Ubuntu runner. Workshop Manager and +its `VpkDirectories` whitelist are therefore avoidable entirely, which is the +whole reason this path exists. Practice servers first. A one-time addon download is a fair price for someone who typed `.drill`; it is not something to ask ten people for before a match. From 84000fcd6016d25e91dc50f5045d49a20d1292e8 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 10:54:39 -0400 Subject: [PATCH 28/32] wip --- apps/utility-sw/hud/README.md | 45 ++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/apps/utility-sw/hud/README.md b/apps/utility-sw/hud/README.md index c7a1c0ed..b9597b9d 100644 --- a/apps/utility-sw/hud/README.md +++ b/apps/utility-sw/hud/README.md @@ -177,29 +177,42 @@ exist). Steam caps it at 1 MB, which a full-resolution PNG screenshot exceeds publish paths check the size first, because Steam reports an oversized preview as a generic upload failure that never mentions the image. -Two secrets: +`STEAM_USERNAME` names the account that owns the item, and how it authenticates +depends on whether that account has a guard: -- `STEAM_USERNAME` — the account that owns the item. -- `STEAM_PASSWORD` — its password. +- no Steam Guard — set `STEAM_PASSWORD`; +- Steam Guard on — set `STEAM_CONFIG_VDF`, below. -That is enough because the publishing account has Steam Guard off. Use an -account that owns nothing else you care about: these credentials can upload -Workshop content as that user, and a password in CI is a password on a machine -you do not watch. +Set both and the session wins. Use an account that owns nothing else you care +about either way: these credentials upload Workshop content as that user, and a +secret in CI lives on a machine you do not watch. -If Steam ever does demand a guard code — it can when a login arrives from an -unfamiliar address, and runner addresses change every run — the job fails with a -clear message rather than hanging. The way round it is a pre-authorised session -instead of a password: log in once by hand on any machine with SteamCMD, then -hand the runner the resulting `config.vdf`. +### A publishing account with Steam Guard + +`STEAM_PASSWORD` only works on an account with no guard; with one, SteamCMD sits +waiting for a code no workflow can answer. Set **`STEAM_CONFIG_VDF`** instead — +base64 of a `config.vdf` from a session that already answered the prompt. The +workflow prefers it over the password whenever it is set, and the password +secret can then be deleted. + +Do **not** use the `steamcmd/steamcmd` Docker image on an Apple Silicon Mac. Its +SteamCMD is a 32-bit Linux binary, QEMU cannot run it, and Rosetta does not do +32-bit either, so it dies on `futex robust_list not initialized by pthreads`. +The macOS build is 64-bit x86 and runs fine under Rosetta: ```sh -steamcmd +login +quit # answer the prompt once -base64 -i ~/Steam/config/config.vdf | pbcopy +mkdir -p ~/steamcmd && cd ~/steamcmd +curl -sSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_osx.tar.gz | tar zx +./steamcmd.sh +login +quit # password, then the guard code +base64 -i ~/Library/Application\ Support/Steam/config/config.vdf | pbcopy ``` -Restore it to `~/Steam/config/config.vdf` on the runner before the publish step -and drop the password from the login line. +Stop if the login does not reach `Waiting for user info...OK` — a failed login +writes no session, and the `config.vdf` copied after one authorises nothing. + +That file is a bearer credential: whoever holds it is that account for Workshop +purposes. Steam also expires it, so expect to repeat this occasionally. The job +fails naming the cause rather than hanging when it does. ### Publishing by hand From 97aae9103cc288de1d3110890819a565297c1c03 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 11:00:37 -0400 Subject: [PATCH 29/32] wip --- .github/workflows/hud-workshop.yaml | 74 +++++++++++++++++++++-------- 1 file changed, 55 insertions(+), 19 deletions(-) diff --git a/.github/workflows/hud-workshop.yaml b/.github/workflows/hud-workshop.yaml index f5ebaafe..fa0c369f 100644 --- a/.github/workflows/hud-workshop.yaml +++ b/.github/workflows/hud-workshop.yaml @@ -117,18 +117,36 @@ jobs: exit 1 fi - # An account with Steam Guard cannot be logged in by password alone -- - # SteamCMD would sit waiting for a code no workflow can supply. Handing - # it a config.vdf from a session that already answered the prompt is - # the way in. Password login stays for accounts without a guard. + # Secrets pasted through a UI or piped in pick up trailing newlines, + # and Steam reports the resulting credential as Invalid Password. + RAW_U=${#STEAM_USERNAME}; RAW_P=${#STEAM_PASSWORD} + STEAM_USERNAME=$(printf '%s' "$STEAM_USERNAME" | tr -d '[:space:]') + STEAM_PASSWORD=$(printf '%s' "${STEAM_PASSWORD:-}" | tr -d '\r\n') + + # Whether trimming changed anything, never by how much: this log is + # public and a password length is not something to publish. + [ "${#STEAM_USERNAME}" -ne "$RAW_U" ] && echo "::warning::STEAM_USERNAME had surrounding whitespace; trimmed" + [ "${#STEAM_PASSWORD}" -ne "$RAW_P" ] && echo "::warning::STEAM_PASSWORD had a trailing newline; trimmed" + true + + # An array, not a string: a password containing a space or a glob + # character must reach steamcmd as one argument, and an unquoted + # expansion would split or expand it into something else entirely. if [ -n "${STEAM_CONFIG_VDF:-}" ]; then mkdir -p ~/Steam/config - printf '%s' "$STEAM_CONFIG_VDF" | base64 -d > ~/Steam/config/config.vdf + # macOS base64 wraps at 76 columns; strip whitespace before decoding + # so a secret created there is not rejected on a Linux runner. + printf '%s' "$STEAM_CONFIG_VDF" | tr -d '[:space:]' | base64 -d > ~/Steam/config/config.vdf + if ! grep -q ConnectCache ~/Steam/config/config.vdf; then + echo "::error::the restored config.vdf has no ConnectCache - it holds no session." + echo "::error::Re-run the local steamcmd login and re-copy the file." + exit 1 + fi chmod 600 ~/Steam/config/config.vdf - LOGIN="$STEAM_USERNAME" - echo "auth: restored session for $STEAM_USERNAME" - elif [ -n "${STEAM_PASSWORD:-}" ]; then - LOGIN="$STEAM_USERNAME $STEAM_PASSWORD" + LOGIN=("$STEAM_USERNAME") + echo "auth: restored session" + elif [ -n "$STEAM_PASSWORD" ]; then + LOGIN=("$STEAM_USERNAME" "$STEAM_PASSWORD") echo "auth: password login" else echo "::error::set STEAM_CONFIG_VDF (guarded account) or STEAM_PASSWORD" @@ -160,23 +178,41 @@ jobs: } EOF - # Unquoted on purpose: $LOGIN is either one word or "user pass", and - # both halves are secrets Actions masks. -x is off, so neither is echoed. - # shellcheck disable=SC2086 - steamcmd +login $LOGIN \ + # pipefail would abort on steamcmd's own exit code before the log can be + # read, and the log is where the actionable reason lives. + set +e + steamcmd +login "${LOGIN[@]}" \ +workshop_build_item "$HUD/build/workshop.vdf" \ +quit | tee /tmp/steam.log + STATUS=${PIPESTATUS[0]} + set -e + + # Steam says "Invalid Password" when it cannot resolve the account at + # all, so a wrong username looks exactly like a wrong password. + if grep -qi "Invalid Password" /tmp/steam.log; then + echo "::error::Steam rejected the credentials. In order of likelihood:" + echo "::error:: the password is wrong or was rotated;" + echo "::error:: the secret carries a trailing newline or stray whitespace;" + echo "::error:: STEAM_USERNAME is the account name, not the profile display name." + echo "::error::Steam also says Invalid Password when it cannot resolve the account." + exit 1 + fi + + if grep -qiE "Steam Guard|two-factor|Account Login Denied" /tmp/steam.log; then + echo "::error::this account needs a guard code, which no workflow can answer." + echo "::error::Set STEAM_CONFIG_VDF - see apps/utility-sw/hud/README.md." + exit 1 + fi - # A guard prompt would otherwise look like a generic failure. - if grep -qiE "Steam Guard|two-factor|Rate Limit" /tmp/steam.log; then - echo "::error::Steam asked for a guard code or rate limited this login." - echo "::error::See apps/utility-sw/hud/README.md for the config.vdf route." + if grep -qi "Rate Limit" /tmp/steam.log; then + echo "::error::Steam rate limited this login; wait a few minutes." exit 1 fi - # SteamCMD exits 0 on some upload failures, so the log is the evidence. + # SteamCMD exits 0 on some upload failures, so the log is the evidence + # and the exit code is only corroborating. if ! grep -q "Success" /tmp/steam.log; then - echo "::error::steamcmd did not report success" + echo "::error::steamcmd did not report success (exit $STATUS)" exit 1 fi From 639d7096332c4489cda0be02c3359bdd3456c3a3 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 11:05:03 -0400 Subject: [PATCH 30/32] wip --- .github/workflows/hud-workshop.yaml | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/.github/workflows/hud-workshop.yaml b/.github/workflows/hud-workshop.yaml index fa0c369f..63df6a24 100644 --- a/.github/workflows/hud-workshop.yaml +++ b/.github/workflows/hud-workshop.yaml @@ -133,18 +133,28 @@ jobs: # character must reach steamcmd as one argument, and an unquoted # expansion would split or expand it into something else entirely. if [ -n "${STEAM_CONFIG_VDF:-}" ]; then - mkdir -p ~/Steam/config # macOS base64 wraps at 76 columns; strip whitespace before decoding # so a secret created there is not rejected on a Linux runner. - printf '%s' "$STEAM_CONFIG_VDF" | tr -d '[:space:]' | base64 -d > ~/Steam/config/config.vdf - if ! grep -q ConnectCache ~/Steam/config/config.vdf; then + printf '%s' "$STEAM_CONFIG_VDF" | tr -d '[:space:]' | base64 -d > /tmp/config.vdf + if ! grep -q ConnectCache /tmp/config.vdf; then echo "::error::the restored config.vdf has no ConnectCache - it holds no session." echo "::error::Re-run the local steamcmd login and re-copy the file." exit 1 fi - chmod 600 ~/Steam/config/config.vdf + + # Which root SteamCMD reads depends on how it was installed: the + # Ubuntu package uses ~/.local/share/Steam. Write all three rather + # than guess -- guessing wrong reports "Cached credentials not + # found" and silently falls through to a password prompt. + for root in "$HOME/.local/share/Steam" "$HOME/Steam" "$HOME/.steam/steam"; do + mkdir -p "$root/config" + cp /tmp/config.vdf "$root/config/config.vdf" + chmod 600 "$root/config/config.vdf" + done + rm -f /tmp/config.vdf + echo "auth: restored session into $HOME/.local/share/Steam and 2 fallbacks" + LOGIN=("$STEAM_USERNAME") - echo "auth: restored session" elif [ -n "$STEAM_PASSWORD" ]; then LOGIN=("$STEAM_USERNAME" "$STEAM_PASSWORD") echo "auth: password login" @@ -189,6 +199,12 @@ jobs: # Steam says "Invalid Password" when it cannot resolve the account at # all, so a wrong username looks exactly like a wrong password. + if grep -qi "Cached credentials not found" /tmp/steam.log; then + echo "::error::SteamCMD did not read the restored session." + echo "::error::Its Steam root is not one of the three written above." + exit 1 + fi + if grep -qi "Invalid Password" /tmp/steam.log; then echo "::error::Steam rejected the credentials. In order of likelihood:" echo "::error:: the password is wrong or was rotated;" From 961ab74a3903c87d9d69ea716078ed811d540166 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 11:16:04 -0400 Subject: [PATCH 31/32] wip --- apps/swiftly/Dockerfile | 2 +- apps/swiftly/src/FiveStack.csproj | 3 +++ apps/utility-sw/hud/README.md | 6 ++++-- apps/utility-sw/src/UtilityPractice.csproj | 3 +++ 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/apps/swiftly/Dockerfile b/apps/swiftly/Dockerfile index 5264cd51..c6930365 100644 --- a/apps/swiftly/Dockerfile +++ b/apps/swiftly/Dockerfile @@ -96,7 +96,7 @@ ENV STEAM_RELAY="false" ENV SERVER_TYPE="Ranked" -ENV SWIFTLYS2_VERSION="v1.4.6" +ENV SWIFTLYS2_VERSION="v1.4.7" ENV SWIFTLYS2_URL=https://github.com/swiftly-solution/swiftlys2/releases/download/${SWIFTLYS2_VERSION}/swiftlys2-linux-${SWIFTLYS2_VERSION}-with-runtimes.zip ENV ENABLE_CSS_COMPAT=false diff --git a/apps/swiftly/src/FiveStack.csproj b/apps/swiftly/src/FiveStack.csproj index 6479d930..e98b2952 100644 --- a/apps/swiftly/src/FiveStack.csproj +++ b/apps/swiftly/src/FiveStack.csproj @@ -8,6 +8,9 @@ + diff --git a/apps/utility-sw/hud/README.md b/apps/utility-sw/hud/README.md index b9597b9d..6d7a2b23 100644 --- a/apps/utility-sw/hud/README.md +++ b/apps/utility-sw/hud/README.md @@ -136,8 +136,10 @@ exactly one addon — the map — which is the entire reason that plugin exists. ### Publishing -The published item is **3791537475**. Pass it as `item_id` on every run; a blank -one creates a second item rather than updating it. +The published item is **3791548068**. Pass it as `item_id` on every run; a blank +one creates a second item rather than updating it. (3791537475 was a first +attempt under a different account and is abandoned — an item cannot be +transferred between accounts, so switching publisher means republishing.) Valve does not review Workshop items — there is no submission and no queue. The only Valve review in CS2 is for maps being considered for official matchmaking, diff --git a/apps/utility-sw/src/UtilityPractice.csproj b/apps/utility-sw/src/UtilityPractice.csproj index 9ac788bb..424c540d 100644 --- a/apps/utility-sw/src/UtilityPractice.csproj +++ b/apps/utility-sw/src/UtilityPractice.csproj @@ -8,6 +8,9 @@ + From bb3af4516e858968254237630077e57ce94aa608 Mon Sep 17 00:00:00 2001 From: Luke Policinski Date: Fri, 28 Aug 2026 11:19:13 -0400 Subject: [PATCH 32/32] wip --- .github/workflows/hud-workshop.yaml | 76 +++++++++++++++++++++++++++-- apps/utility-sw/hud/README.md | 17 +++++++ 2 files changed, 89 insertions(+), 4 deletions(-) diff --git a/.github/workflows/hud-workshop.yaml b/.github/workflows/hud-workshop.yaml index 63df6a24..b6f92a0e 100644 --- a/.github/workflows/hud-workshop.yaml +++ b/.github/workflows/hud-workshop.yaml @@ -14,16 +14,69 @@ on: required: false type: boolean default: false + force: + description: "Publish even if the addon is unchanged (e.g. a title or description edit)." + required: false + type: boolean + default: false jobs: publish: runs-on: ubuntu-latest permissions: - contents: read + contents: write steps: - uses: actions/checkout@v7 + with: + fetch-depth: 0 + + + # A Workshop update notifies every subscriber and bumps the item, so an + # identical republish is not free. Hashing the sources rather than the vpk + # sidesteps the question of whether the compiler is deterministic. + - name: Has the addon actually changed? + id: changed + run: | + set -euo pipefail + HUD=apps/utility-sw/hud + + PREVIEW="" + for c in "$HUD/preview.jpg" "$HUD/preview.png"; do + [ -f "$c" ] && { PREVIEW="$c"; break; } + done + + KEY=$( { git rev-parse "HEAD:$HUD/panorama" + git hash-object "$HUD/build.sh" "$HUD/addoninfo.txt" ${PREVIEW:+"$PREVIEW"} + echo "${PANORAMA_COMPILER_REF:-main}" + } | sha256sum | cut -c1-16 ) + TAG="hud-published/$KEY" + echo "key=$KEY" >> "$GITHUB_OUTPUT" + echo "tag=$TAG" >> "$GITHUB_OUTPUT" + + PUBLISHED=no + if git ls-remote --exit-code --tags origin "refs/tags/$TAG" >/dev/null 2>&1; then + PUBLISHED=yes + echo "::notice::$KEY is already on the Workshop." + fi + echo "published=$PUBLISHED" >> "$GITHUB_OUTPUT" + + # A dry run still builds -- verifying an unchanged addon is the point of + # one. Only the upload is suppressed by an unchanged key. + if [ "$PUBLISHED" = no ] || [ "${{ inputs.force }}" = true ] || [ "${{ inputs.dry_run }}" = true ]; then + echo "proceed=yes" >> "$GITHUB_OUTPUT" + else + echo "proceed=no" >> "$GITHUB_OUTPUT" + fi + + - name: Nothing to publish + if: steps.changed.outputs.proceed != 'yes' + run: | + echo "::notice::The addon is byte-identical to the last publish, so nothing" + echo "::notice::was sent to Steam. Re-run with force: true to publish anyway" + echo "::notice::(a title or description edit needs that)." - uses: actions/setup-dotnet@v6 + if: steps.changed.outputs.proceed == 'yes' with: dotnet-version: "10.0.x" @@ -31,17 +84,20 @@ jobs: # variable, and a broken layout fails silently in game rather than at # build time. Never publish an addon whose contract has not been checked. - name: Verify the slot contract + if: steps.changed.outputs.proceed == 'yes' run: dotnet test apps/utility-sw/test/FiveStack.Tests.csproj --nologo # PanoramaCompiler needs only the .NET SDK and build.sh fetches vpkeditcli # into .tools on Linux, so nothing here needs Windows or a CS2 install. - name: Build the addon + if: steps.changed.outputs.proceed == 'yes' run: ./apps/utility-sw/hud/build.sh # An addon that mounts and resolves nothing is the failure mode with no # symptom: the layouts must sit under panorama/, and there must be five of # them plus the stylesheet. - name: Verify what was packed + if: steps.changed.outputs.proceed == 'yes' run: | set -euo pipefail VPK=apps/utility-sw/hud/build/upload/5stack_utility_hud.vpk @@ -88,11 +144,11 @@ jobs: echo "PREVIEW=$GITHUB_WORKSPACE/$PREVIEW" >> "$GITHUB_ENV" - name: Stop here - if: inputs.dry_run + if: inputs.dry_run && steps.changed.outputs.proceed == 'yes' run: echo "::notice::dry run - built and verified, nothing published" - name: Install SteamCMD - if: ${{ !inputs.dry_run }} + if: ${{ !inputs.dry_run && steps.changed.outputs.proceed == 'yes' }} run: | sudo add-apt-repository -y multiverse sudo dpkg --add-architecture i386 @@ -102,7 +158,7 @@ jobs: sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -qq steamcmd - name: Publish - if: ${{ !inputs.dry_run }} + if: ${{ !inputs.dry_run && steps.changed.outputs.proceed == 'yes' }} env: STEAM_USERNAME: ${{ secrets.STEAM_USERNAME }} STEAM_PASSWORD: ${{ secrets.STEAM_PASSWORD }} @@ -236,3 +292,15 @@ jobs: if [ -n "$ID" ]; then echo "::notice::published workshop item $ID - pass it as item_id next time to update in place" fi + + # Only after Steam confirms. Tagging on anything less would make the next + # run skip an upload that never landed. + - name: Record what was published + if: ${{ !inputs.dry_run && steps.changed.outputs.proceed == 'yes' }} + env: + TAG: ${{ steps.changed.outputs.tag }} + run: | + set -euo pipefail + git tag -f "$TAG" + git push -f origin "refs/tags/$TAG" + echo "::notice::tagged $TAG - a later run with these sources will skip" diff --git a/apps/utility-sw/hud/README.md b/apps/utility-sw/hud/README.md index 6d7a2b23..3efc6313 100644 --- a/apps/utility-sw/hud/README.md +++ b/apps/utility-sw/hud/README.md @@ -173,6 +173,23 @@ Leave `item_id` blank the first time; the run logs the id it created. Pass that id on every run afterwards or you will publish a second item rather than update the first. +**An unchanged addon is not republished.** A Workshop update notifies every +subscriber and bumps the item, so the run first hashes everything that decides +the published bytes — the `panorama/` tree, `build.sh`, `addoninfo.txt`, the +preview, the compiler ref — and skips the upload if a `hud-published/` tag +says those exact sources already went up. The tag is written only after Steam +answers `Success.`, so a failed upload never suppresses the retry. + +It hashes sources rather than the vpk because nothing guarantees PanoramaCompiler +is byte-reproducible, and a compiler that stamped a timestamp would defeat an +artifact hash silently — always republishing, which is the failure you would not +notice. + +Two things it deliberately does not cover: the item title and description live in +the workflow, not in the hashed sources, so changing those needs `force: true`. +And a dry run always builds, since verifying an unchanged addon is the point of +one. + The storefront image is `preview.jpg` (or `preview.png`; jpg wins if both exist). Steam caps it at 1 MB, which a full-resolution PNG screenshot exceeds — `preview.jpg` is the same frame at quality 80, 1915x1078 and 453 KB. Both