From c0f42904f0972229f1d31da689756f88d40aff04 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 22 Oct 2015 22:59:52 +0100 Subject: [PATCH] Overhaul the server browser. --- OpenRA.Mods.Common/OpenRA.Mods.Common.csproj | 3 +- .../Widgets/Logic/DirectConnectLogic.cs | 43 --- .../Widgets/Logic/MainMenuLogic.cs | 4 +- ...verBrowserLogic.cs => MultiplayerLogic.cs} | 358 ++++++++++++------ .../Widgets/Logic/ServerCreationLogic.cs | 2 - mods/cnc/chrome.yaml | 2 + mods/cnc/chrome/createserver.yaml | 135 ------- mods/cnc/chrome/directconnect.yaml | 58 --- mods/cnc/chrome/lobby-globalchat.yaml | 2 +- mods/cnc/chrome/multiplayer-browser.yaml | 140 +++++++ mods/cnc/chrome/multiplayer-createserver.yaml | 129 +++++++ .../cnc/chrome/multiplayer-directconnect.yaml | 95 +++++ ...lchat.yaml => multiplayer-globalchat.yaml} | 24 +- mods/cnc/chrome/multiplayer.yaml | 111 ++++++ mods/cnc/chrome/serverbrowser.yaml | 170 --------- mods/cnc/metrics.yaml | 2 +- mods/cnc/mod.yaml | 9 +- mods/cnc/uibits/chrome.png | Bin 80332 -> 80613 bytes mods/d2k/chrome.yaml | 2 + mods/d2k/metrics.yaml | 2 +- mods/d2k/mod.yaml | 10 +- mods/ra/chrome.yaml | 2 + mods/ra/chrome/create-server.yaml | 105 ----- mods/ra/chrome/directconnect.yaml | 51 --- mods/ra/chrome/lobby-globalchat.yaml | 2 +- mods/ra/chrome/lobby.yaml | 5 +- mods/ra/chrome/multiplayer-browser.yaml | 142 +++++++ mods/ra/chrome/multiplayer-createserver.yaml | 131 +++++++ mods/ra/chrome/multiplayer-directconnect.yaml | 96 +++++ ...lchat.yaml => multiplayer-globalchat.yaml} | 25 +- mods/ra/chrome/multiplayer.yaml | 112 ++++++ mods/ra/chrome/serverbrowser.yaml | 170 --------- mods/ra/metrics.yaml | 2 +- mods/ra/mod.yaml | 9 +- mods/ra/uibits/spawnpoints.png | Bin 1000 -> 3232 bytes mods/ts/chrome.yaml | 2 + mods/ts/metrics.yaml | 2 +- mods/ts/mod.yaml | 9 +- 38 files changed, 1272 insertions(+), 894 deletions(-) delete mode 100644 OpenRA.Mods.Common/Widgets/Logic/DirectConnectLogic.cs rename OpenRA.Mods.Common/Widgets/Logic/{ServerBrowserLogic.cs => MultiplayerLogic.cs} (53%) delete mode 100644 mods/cnc/chrome/createserver.yaml delete mode 100644 mods/cnc/chrome/directconnect.yaml create mode 100644 mods/cnc/chrome/multiplayer-browser.yaml create mode 100644 mods/cnc/chrome/multiplayer-createserver.yaml create mode 100644 mods/cnc/chrome/multiplayer-directconnect.yaml rename mods/cnc/chrome/{globalchat.yaml => multiplayer-globalchat.yaml} (86%) create mode 100644 mods/cnc/chrome/multiplayer.yaml delete mode 100644 mods/cnc/chrome/serverbrowser.yaml delete mode 100644 mods/ra/chrome/create-server.yaml delete mode 100644 mods/ra/chrome/directconnect.yaml create mode 100644 mods/ra/chrome/multiplayer-browser.yaml create mode 100644 mods/ra/chrome/multiplayer-createserver.yaml create mode 100644 mods/ra/chrome/multiplayer-directconnect.yaml rename mods/ra/chrome/{globalchat.yaml => multiplayer-globalchat.yaml} (85%) create mode 100644 mods/ra/chrome/multiplayer.yaml delete mode 100644 mods/ra/chrome/serverbrowser.yaml diff --git a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj index cbca0783a5..f73008306c 100644 --- a/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj +++ b/OpenRA.Mods.Common/OpenRA.Mods.Common.csproj @@ -566,7 +566,6 @@ - @@ -620,7 +619,6 @@ - @@ -706,6 +704,7 @@ + diff --git a/OpenRA.Mods.Common/Widgets/Logic/DirectConnectLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/DirectConnectLogic.cs deleted file mode 100644 index d00e94d772..0000000000 --- a/OpenRA.Mods.Common/Widgets/Logic/DirectConnectLogic.cs +++ /dev/null @@ -1,43 +0,0 @@ -#region Copyright & License Information -/* - * Copyright 2007-2015 The OpenRA Developers (see AUTHORS) - * This file is part of OpenRA, which is free software. It is made - * available to you under the terms of the GNU General Public License - * as published by the Free Software Foundation. For more information, - * see COPYING. - */ -#endregion - -using System; -using OpenRA.Widgets; - -namespace OpenRA.Mods.Common.Widgets.Logic -{ - public class DirectConnectLogic : ChromeLogic - { - [ObjectCreator.UseCtor] - public DirectConnectLogic(Widget widget, Action onExit, Action openLobby) - { - var panel = widget; - var ipField = panel.Get("IP"); - var portField = panel.Get("PORT"); - - var last = Game.Settings.Player.LastServer.Split(':'); - ipField.Text = last.Length > 1 ? last[0] : "localhost"; - portField.Text = last.Length == 2 ? last[1] : "1234"; - - panel.Get("JOIN_BUTTON").OnClick = () => - { - var port = Exts.WithDefault(1234, () => Exts.ParseIntegerInvariant(portField.Text)); - - Game.Settings.Player.LastServer = "{0}:{1}".F(ipField.Text, port); - Game.Settings.Save(); - - Ui.CloseWindow(); - ConnectionLogic.Connect(ipField.Text, port, "", openLobby, onExit); - }; - - panel.Get("BACK_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); }; - } - } -} diff --git a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs index 4a944cb647..698f679156 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs @@ -43,7 +43,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic mainMenu.Get("MULTIPLAYER_BUTTON").OnClick = () => { menuType = MenuType.None; - Ui.OpenWindow("SERVERBROWSER_PANEL", new WidgetArgs + Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs { { "onStart", RemoveShellmapUI }, { "onExit", () => menuType = MenuType.Main }, @@ -220,7 +220,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic Game.OnRemoteDirectConnect += (host, port) => { menuType = MenuType.None; - Ui.OpenWindow("SERVERBROWSER_PANEL", new WidgetArgs + Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs { { "onStart", RemoveShellmapUI }, { "onExit", () => menuType = MenuType.Main }, diff --git a/OpenRA.Mods.Common/Widgets/Logic/ServerBrowserLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MultiplayerLogic.cs similarity index 53% rename from OpenRA.Mods.Common/Widgets/Logic/ServerBrowserLogic.cs rename to OpenRA.Mods.Common/Widgets/Logic/MultiplayerLogic.cs index 65a0622778..e2a9d38571 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/ServerBrowserLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MultiplayerLogic.cs @@ -20,10 +20,14 @@ using OpenRA.Widgets; namespace OpenRA.Mods.Common.Widgets.Logic { - public class ServerBrowserLogic : ChromeLogic + public class MultiplayerLogic : ChromeLogic { static readonly Action DoNothing = () => { }; + enum PanelType { Browser, DirectConnect, CreateServer } + PanelType panel = PanelType.Browser; + + readonly Color incompatibleVersionColor; readonly Color incompatibleProtectedGameColor; readonly Color protectedGameColor; readonly Color incompatibleWaitingGameColor; @@ -31,18 +35,20 @@ namespace OpenRA.Mods.Common.Widgets.Logic readonly Color incompatibleGameStartedColor; readonly Color gameStartedColor; readonly Color incompatibleGameColor; - readonly Color cantJoinGameColor; GameServer currentServer; + MapPreview currentMap; + ScrollItemWidget serverTemplate; ScrollItemWidget headerTemplate; Action onStart; + Action onExit; enum SearchStatus { Fetching, Failed, NoGames, Hidden } SearchStatus searchStatus = SearchStatus.Fetching; Download currentQuery; - Widget panel, serverList; + Widget serverList; bool showWaiting = true; bool showEmpty = true; @@ -55,87 +61,52 @@ namespace OpenRA.Mods.Common.Widgets.Logic switch (searchStatus) { case SearchStatus.Failed: return "Failed to contact master server."; - case SearchStatus.NoGames: return "No games found."; + case SearchStatus.NoGames: return "No games found. Try changing filters."; default: return ""; } } [ObjectCreator.UseCtor] - public ServerBrowserLogic(Widget widget, Action onStart, Action onExit, string directConnectHost, int directConnectPort) + public MultiplayerLogic(Widget widget, Action onStart, Action onExit, string directConnectHost, int directConnectPort) { - panel = widget; this.onStart = onStart; + this.onExit = onExit; + incompatibleVersionColor = ChromeMetrics.Get("IncompatibleVersionColor"); incompatibleGameColor = ChromeMetrics.Get("IncompatibleGameColor"); - cantJoinGameColor = ChromeMetrics.Get("CantJoinGameColor"); - protectedGameColor = ChromeMetrics.Get("ProtectedGameColor"); incompatibleProtectedGameColor = ChromeMetrics.Get("IncompatibleProtectedGameColor"); + protectedGameColor = ChromeMetrics.Get("ProtectedGameColor"); waitingGameColor = ChromeMetrics.Get("WaitingGameColor"); incompatibleWaitingGameColor = ChromeMetrics.Get("IncompatibleWaitingGameColor"); gameStartedColor = ChromeMetrics.Get("GameStartedColor"); incompatibleGameStartedColor = ChromeMetrics.Get("IncompatibleGameStartedColor"); - serverList = panel.Get("SERVER_LIST"); - headerTemplate = serverList.Get("HEADER_TEMPLATE"); - serverTemplate = serverList.Get("SERVER_TEMPLATE"); + LoadBrowserPanel(widget); + LoadDirectConnectPanel(widget); + LoadCreateServerPanel(widget); - // Menu buttons - var refreshButton = panel.Get("REFRESH_BUTTON"); - refreshButton.IsDisabled = () => searchStatus == SearchStatus.Fetching; - refreshButton.GetText = () => searchStatus == SearchStatus.Fetching ? "Refreshing..." : "Refresh"; - refreshButton.OnClick = RefreshServerList; + // Filter and refresh buttons act on the browser panel, + // but remain visible (disabled) on the other panels + var refreshButton = widget.Get("REFRESH_BUTTON"); + refreshButton.IsDisabled = () => searchStatus == SearchStatus.Fetching || panel != PanelType.Browser; - panel.Get("DIRECTCONNECT_BUTTON").OnClick = OpenDirectConnectPanel; - panel.Get("CREATE_BUTTON").OnClick = OpenCreateServerPanel; + var filtersButton = widget.GetOrNull("FILTERS_DROPDOWNBUTTON"); + filtersButton.IsDisabled = () => searchStatus == SearchStatus.Fetching || panel != PanelType.Browser; - var join = panel.Get("JOIN_BUTTON"); - join.IsDisabled = () => currentServer == null || !currentServer.IsJoinable; - join.OnClick = () => Join(currentServer); + var browserTab = widget.Get("BROWSER_TAB"); + browserTab.IsHighlighted = () => panel == PanelType.Browser; + browserTab.OnClick = () => panel = PanelType.Browser; - panel.Get("BACK_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); }; + var directConnectTab = widget.Get("DIRECTCONNECT_TAB"); + directConnectTab.IsHighlighted = () => panel == PanelType.DirectConnect; + directConnectTab.OnClick = () => panel = PanelType.DirectConnect; - // Display the progress label over the server list - // The text is only visible when the list is empty - var progressText = panel.Get("PROGRESS_LABEL"); - progressText.IsVisible = () => searchStatus != SearchStatus.Hidden; - progressText.GetText = ProgressLabelText; + var createServerTab = widget.Get("CREATE_TAB"); + createServerTab.IsHighlighted = () => panel == PanelType.CreateServer; + createServerTab.OnClick = () => panel = PanelType.CreateServer; - var showWaitingCheckbox = panel.GetOrNull("WAITING_FOR_PLAYERS"); - if (showWaitingCheckbox != null) - { - showWaitingCheckbox.IsChecked = () => showWaiting; - showWaitingCheckbox.OnClick = () => { showWaiting ^= true; RefreshServerList(); }; - } - - var showEmptyCheckbox = panel.GetOrNull("EMPTY"); - if (showEmptyCheckbox != null) - { - showEmptyCheckbox.IsChecked = () => showEmpty; - showEmptyCheckbox.OnClick = () => { showEmpty ^= true; RefreshServerList(); }; - } - - var showAlreadyStartedCheckbox = panel.GetOrNull("ALREADY_STARTED"); - if (showAlreadyStartedCheckbox != null) - { - showAlreadyStartedCheckbox.IsChecked = () => showStarted; - showAlreadyStartedCheckbox.OnClick = () => { showStarted ^= true; RefreshServerList(); }; - } - - var showProtectedCheckbox = panel.GetOrNull("PASSWORD_PROTECTED"); - if (showProtectedCheckbox != null) - { - showProtectedCheckbox.IsChecked = () => showProtected; - showProtectedCheckbox.OnClick = () => { showProtected ^= true; RefreshServerList(); }; - } - - var showIncompatibleCheckbox = panel.GetOrNull("INCOMPATIBLE_VERSION"); - if (showIncompatibleCheckbox != null) - { - showIncompatibleCheckbox.IsChecked = () => showIncompatible; - showIncompatibleCheckbox.OnClick = () => { showIncompatible ^= true; RefreshServerList(); }; - } - - Game.LoadWidget(null, "GLOBALCHAT_PANEL", panel.Get("GLOBALCHAT_ROOT"), new WidgetArgs()); + widget.Get("BACK_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); }; + Game.LoadWidget(null, "GLOBALCHAT_PANEL", widget.Get("GLOBALCHAT_ROOT"), new WidgetArgs()); RefreshServerList(); @@ -152,6 +123,158 @@ namespace OpenRA.Mods.Common.Widgets.Logic } } + void LoadBrowserPanel(Widget widget) + { + var browserPanel = Game.LoadWidget(null, "MULTIPLAYER_BROWSER_PANEL", widget.Get("TOP_PANELS_ROOT"), new WidgetArgs()); + browserPanel.IsVisible = () => panel == PanelType.Browser; + + serverList = browserPanel.Get("SERVER_LIST"); + headerTemplate = serverList.Get("HEADER_TEMPLATE"); + serverTemplate = serverList.Get("SERVER_TEMPLATE"); + + var join = widget.Get("JOIN_BUTTON"); + join.IsDisabled = () => currentServer == null || !currentServer.IsJoinable; + join.OnClick = () => Join(currentServer); + + // Display the progress label over the server list + // The text is only visible when the list is empty + var progressText = widget.Get("PROGRESS_LABEL"); + progressText.IsVisible = () => searchStatus != SearchStatus.Hidden; + progressText.GetText = ProgressLabelText; + + var filtersPanel = Ui.LoadWidget("MULTIPLAYER_FILTER_PANEL", null, new WidgetArgs()); + var showWaitingCheckbox = filtersPanel.GetOrNull("WAITING_FOR_PLAYERS"); + if (showWaitingCheckbox != null) + { + showWaitingCheckbox.IsChecked = () => showWaiting; + showWaitingCheckbox.OnClick = () => { showWaiting ^= true; RefreshServerList(); }; + } + + var showEmptyCheckbox = filtersPanel.GetOrNull("EMPTY"); + if (showEmptyCheckbox != null) + { + showEmptyCheckbox.IsChecked = () => showEmpty; + showEmptyCheckbox.OnClick = () => { showEmpty ^= true; RefreshServerList(); }; + } + + var showAlreadyStartedCheckbox = filtersPanel.GetOrNull("ALREADY_STARTED"); + if (showAlreadyStartedCheckbox != null) + { + showAlreadyStartedCheckbox.IsChecked = () => showStarted; + showAlreadyStartedCheckbox.OnClick = () => { showStarted ^= true; RefreshServerList(); }; + } + + var showProtectedCheckbox = filtersPanel.GetOrNull("PASSWORD_PROTECTED"); + if (showProtectedCheckbox != null) + { + showProtectedCheckbox.IsChecked = () => showProtected; + showProtectedCheckbox.OnClick = () => { showProtected ^= true; RefreshServerList(); }; + } + + var showIncompatibleCheckbox = filtersPanel.GetOrNull("INCOMPATIBLE_VERSION"); + if (showIncompatibleCheckbox != null) + { + showIncompatibleCheckbox.IsChecked = () => showIncompatible; + showIncompatibleCheckbox.OnClick = () => { showIncompatible ^= true; RefreshServerList(); }; + } + + var filtersButton = widget.GetOrNull("FILTERS_DROPDOWNBUTTON"); + if (filtersButton != null) + { + filtersButton.OnMouseDown = _ => + { + filtersButton.RemovePanel(); + filtersButton.AttachPanel(filtersPanel); + }; + } + + var refreshButton = widget.Get("REFRESH_BUTTON"); + refreshButton.GetText = () => searchStatus == SearchStatus.Fetching ? "Refreshing..." : "Refresh"; + refreshButton.OnClick = RefreshServerList; + + var mapPreview = widget.GetOrNull("SELECTED_MAP_PREVIEW"); + if (mapPreview != null) + mapPreview.Preview = () => currentMap; + + var mapTitle = widget.GetOrNull("SELECTED_MAP"); + if (mapTitle != null) + mapTitle.GetText = () => currentMap != null ? currentMap.Title : "No Server Selected"; + + var ip = widget.GetOrNull("SELECTED_IP"); + if (ip != null) + { + ip.IsVisible = () => currentServer != null; + ip.GetText = () => currentServer.Address; + } + + var status = widget.GetOrNull("SELECTED_STATUS"); + if (status != null) + { + status.IsVisible = () => currentServer != null; + status.GetText = () => GetStateLabel(currentServer); + status.GetColor = () => GetStateColor(currentServer, status); + } + + var modVersion = widget.GetOrNull("SELECTED_MOD_VERSION"); + if (modVersion != null) + { + modVersion.IsVisible = () => currentServer != null; + modVersion.GetText = () => currentServer.ModLabel; + modVersion.GetColor = () => currentServer.IsCompatible ? modVersion.TextColor : incompatibleVersionColor; + } + + var players = widget.GetOrNull("SELECTED_PLAYERS"); + if (players != null) + { + players.IsVisible = () => currentServer != null; + players.GetText = () => PlayersLabel(currentServer); + } + } + + void LoadDirectConnectPanel(Widget widget) + { + var directConnectPanel = Game.LoadWidget(null, "MULTIPLAYER_DIRECTCONNECT_PANEL", + widget.Get("TOP_PANELS_ROOT"), new WidgetArgs()); + directConnectPanel.IsVisible = () => panel == PanelType.DirectConnect; + + var ipField = directConnectPanel.Get("IP"); + var portField = directConnectPanel.Get("PORT"); + + var last = Game.Settings.Player.LastServer.Split(':'); + ipField.Text = last.Length > 1 ? last[0] : "localhost"; + portField.Text = last.Length == 2 ? last[1] : "1234"; + + directConnectPanel.Get("JOIN_BUTTON").OnClick = () => + { + var port = Exts.WithDefault(1234, () => Exts.ParseIntegerInvariant(portField.Text)); + + Game.Settings.Player.LastServer = "{0}:{1}".F(ipField.Text, port); + Game.Settings.Save(); + + ConnectionLogic.Connect(ipField.Text, port, "", OpenLobby, DoNothing); + }; + } + + void LoadCreateServerPanel(Widget widget) + { + var createServerPanel = Game.LoadWidget(null, "MULTIPLAYER_CREATESERVER_PANEL", + widget.Get("TOP_PANELS_ROOT"), new WidgetArgs + { + { "openLobby", OpenLobby }, + { "onExit", DoNothing } + }); + + createServerPanel.IsVisible = () => panel == PanelType.CreateServer; + } + + string PlayersLabel(GameServer game) + { + return "{0}{1}{2}".F( + "{0} Player{1}".F(game.Players > 0 ? game.Players.ToString() : "No", game.Players != 1 ? "s" : ""), + game.Bots > 0 ? ", {0} Bot{1}".F(game.Bots, game.Bots != 1 ? "s" : "") : "", + game.Spectators > 0 ? ", {0} Spectator{1}".F(game.Spectators, game.Spectators != 1 ? "s" : "") : ""); + } + void RefreshServerList() { // Query in progress @@ -196,6 +319,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic return 1; } + void SelectServer(GameServer server) + { + currentServer = server; + currentMap = server != null ? Game.ModData.MapCache[server.Map] : null; + } + void RefreshServerListInner(IEnumerable games) { if (games == null) @@ -205,6 +334,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic .OrderByDescending(g => GroupSortOrder(g.First())) .ThenByDescending(g => g.Count()); + ScrollItemWidget nextServerRow = null; var rows = new List(); foreach (var modGames in mods) { @@ -224,49 +354,39 @@ namespace OpenRA.Mods.Common.Widgets.Logic continue; var canJoin = game.IsJoinable; - var compatible = game.IsCompatible; - - var item = ScrollItemWidget.Setup(serverTemplate, () => currentServer == game, () => currentServer = game, () => Join(game)); - - var map = Game.ModData.MapCache[game.Map]; - var preview = item.GetOrNull("MAP_PREVIEW"); - if (preview != null) - preview.Preview = () => map; - + var item = ScrollItemWidget.Setup(serverTemplate, () => currentServer == game, () => SelectServer(game), () => Join(game)); var title = item.GetOrNull("TITLE"); if (title != null) { title.GetText = () => game.Name; - title.GetColor = () => !compatible ? incompatibleGameColor : !canJoin ? cantJoinGameColor : title.TextColor; + title.GetColor = () => canJoin ? title.TextColor : incompatibleGameColor; } - var maptitle = item.GetOrNull("MAP"); - if (maptitle != null) + var password = item.GetOrNull("PASSWORD_PROTECTED"); + if (password != null) { - maptitle.GetText = () => map.Title; - maptitle.GetColor = () => !compatible ? Color.DarkGray : !canJoin ? Color.LightGray : maptitle.TextColor; + password.IsVisible = () => game.Protected; + password.GetImageName = () => canJoin ? "protected" : "protected-disabled"; } var players = item.GetOrNull("PLAYERS"); if (players != null) { players.GetText = () => "{0} / {1}".F(game.Players, game.MaxPlayers) - + (game.Spectators > 0 ? " ({0} Spectator{1})".F(game.Spectators, game.Spectators > 1 ? "s" : "") : ""); - players.GetColor = () => !compatible ? incompatibleGameColor : !canJoin ? cantJoinGameColor : players.TextColor; + + (game.Spectators > 0 ? " + {0}".F(game.Spectators) : ""); + + players.GetColor = () => canJoin ? players.TextColor : incompatibleGameColor; } - var state = item.GetOrNull("STATE"); + var state = item.GetOrNull("STATUS"); if (state != null) { - state.GetText = () => GetStateLabel(game); - state.GetColor = () => GetStateColor(game, state, !compatible || !canJoin); - } + var label = game.State >= (int)ServerState.GameStarted ? + "Playing" : "Waiting"; + state.GetText = () => label; - var ip = item.GetOrNull("IP"); - if (ip != null) - { - ip.GetText = () => game.Address; - ip.GetColor = () => !compatible ? incompatibleGameColor : !canJoin ? cantJoinGameColor : ip.TextColor; + var color = GetStateColor(game, state, !canJoin); + state.GetColor = () => color; } var location = item.GetOrNull("LOCATION"); @@ -274,9 +394,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic { var cachedServerLocation = GeoIP.LookupCountry(game.Address.Split(':')[0]); location.GetText = () => cachedServerLocation; - location.GetColor = () => !compatible ? incompatibleGameColor : !canJoin ? cantJoinGameColor : location.TextColor; + location.GetColor = () => canJoin ? location.TextColor : incompatibleGameColor; } + if (currentServer != null && game.Address == currentServer.Address) + nextServerRow = item; + rows.Add(item); } } @@ -284,7 +407,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic Game.RunAfterTick(() => { serverList.RemoveChildren(); - currentServer = null; + SelectServer(null); if (games == null) { @@ -292,13 +415,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic return; } - if (!games.Any()) + if (!rows.Any()) { searchStatus = SearchStatus.NoGames; return; } - currentServer = games.FirstOrDefault(); searchStatus = SearchStatus.Hidden; // Search for any unknown maps @@ -307,28 +429,39 @@ namespace OpenRA.Mods.Common.Widgets.Logic foreach (var row in rows) serverList.AddChild(row); + + if (nextServerRow != null) + nextServerRow.OnClick(); }); } void OpenLobby() { + // Close the multiplayer browser + Ui.CloseWindow(); + + Action onLobbyExit = () => + { + // Open a fresh copy of the multiplayer browser + Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs + { + { "onStart", onStart }, + { "onExit", onExit }, + { "directConnectHost", null }, + { "directConnectPort", 0 }, + }); + + Game.Disconnect(); + }; + Game.OpenWindow("SERVER_LOBBY", new WidgetArgs { - { "onExit", Game.Disconnect }, { "onStart", onStart }, + { "onExit", onLobbyExit }, { "skirmishMode", false } }); } - void OpenDirectConnectPanel() - { - Ui.OpenWindow("DIRECTCONNECT_PANEL", new WidgetArgs - { - { "openLobby", OpenLobby }, - { "onExit", DoNothing } - }); - } - void OpenCreateServerPanel() { Ui.OpenWindow("CREATESERVER_PANEL", new WidgetArgs @@ -365,14 +498,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic label += " for {0} minute{1}".F(totalMinutes, totalMinutes > 1 ? "s" : ""); } - return game.Protected ? label + " (Password protected)" : label; + return label; } if (game.State == (int)ServerState.WaitingPlayers) - { - var label = "Waiting for players"; - return game.Protected ? label + " (Password protected)" : label; - } + return game.Protected ? "Password protected" : "Waiting for players"; if (game.State == (int)ServerState.ShuttingDown) return "Server shutting down"; @@ -380,14 +510,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic return "Unknown server state"; } - Color GetStateColor(GameServer game, LabelWidget label, bool darkened) + Color GetStateColor(GameServer game, LabelWidget label, bool darkened = false) { + if (!game.Protected && game.State == (int)ServerState.WaitingPlayers) + return darkened ? incompatibleWaitingGameColor : waitingGameColor; + if (game.Protected && game.State == (int)ServerState.WaitingPlayers) return darkened ? incompatibleProtectedGameColor : protectedGameColor; - if (game.State == (int)ServerState.WaitingPlayers) - return darkened ? incompatibleWaitingGameColor : waitingGameColor; - if (game.State == (int)ServerState.GameStarted) return darkened ? incompatibleGameStartedColor : gameStartedColor; @@ -396,13 +526,13 @@ namespace OpenRA.Mods.Common.Widgets.Logic bool Filtered(GameServer game) { - if ((game.State == (int)ServerState.GameStarted) && !showStarted) + if (game.State == (int)ServerState.GameStarted && !showStarted) return true; - if ((game.State == (int)ServerState.WaitingPlayers) && !showWaiting && game.Players != 0) + if (game.State == (int)ServerState.WaitingPlayers && !showWaiting && game.Players != 0) return true; - if ((game.Players == 0) && !showEmpty) + if (game.Players == 0 && !showEmpty) return true; if (!game.IsCompatible && !showIncompatible) diff --git a/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs index bf2891b404..1f81894f2f 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/ServerCreationLogic.cs @@ -33,7 +33,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic var settings = Game.Settings; preview = Game.ModData.MapCache[WidgetUtils.ChooseInitialMap(Game.Settings.Server.Map)]; - panel.Get("BACK_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); }; panel.Get("CREATE_BUTTON").OnClick = CreateAndJoin; var mapButton = panel.GetOrNull("MAP_BUTTON"); @@ -132,7 +131,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic return; } - Ui.CloseWindow(); ConnectionLogic.Connect(IPAddress.Loopback.ToString(), Game.Settings.Server.ListenPort, password, onCreate, onExit); } } diff --git a/mods/cnc/chrome.yaml b/mods/cnc/chrome.yaml index 9f4a6e826a..9a2fc2709e 100644 --- a/mods/cnc/chrome.yaml +++ b/mods/cnc/chrome.yaml @@ -449,6 +449,8 @@ lobby-bits: chrome.png colorpicker: 257,33,14,14 huepicker: 388,96,7,15 kick: 386,115,11,11 + protected: 403,97,10,13 + protected-disabled: 403,113,10,13 checkbox-bits: chrome.png checked: 272,32,16,16 diff --git a/mods/cnc/chrome/createserver.yaml b/mods/cnc/chrome/createserver.yaml deleted file mode 100644 index 8888069335..0000000000 --- a/mods/cnc/chrome/createserver.yaml +++ /dev/null @@ -1,135 +0,0 @@ -Container@CREATESERVER_PANEL: - Logic: ServerCreationLogic - X: (WINDOW_RIGHT - WIDTH)/2 - Y: (WINDOW_BOTTOM - 260)/2 - Width: 521 - Height: 250 - Children: - Label@TITLE: - Text: Create Server - Width: PARENT_RIGHT - Y: 0-25 - Font: BigBold - Contrast: true - Align: Center - Background@bg: - Width: PARENT_RIGHT - Height: 215 - Background: panel-black - Children: - Background@MAP_BG: - X: PARENT_RIGHT-WIDTH-15 - Y: 15 - Width: 162 - Height: 162 - Background: panel-gray - Children: - MapPreview@MAP_PREVIEW: - X: 1 - Y: 1 - Width: 160 - Height: 160 - Label@MAP_NAME: - X: PARENT_RIGHT-WIDTH-15 - Y: PARENT_BOTTOM - 33 - Width: 162 - Height: 25 - Align: Center - Font: Bold - Label@SERVER_NAME_LABEL: - X: 15 - Y: 14 - Width: 90 - Height: 25 - Align: Right - Text: Server Name: - TextField@SERVER_NAME: - X: 110 - Y: 15 - Width: 215 - MaxLength: 50 - Height: 25 - Text: My OpenRA Server - Label@PASSWORD_LABEL: - X: 10 - Y: 49 - Width: 95 - Height: 25 - Align: Right - Text: Password: - PasswordField@PASSWORD: - X: 110 - Y: 50 - Width: 145 - MaxLength: 20 - Height: 25 - Label@AFTER_PASSWORD_LABEL: - X: 265 - Y: 49 - Width: 95 - Height: 25 - Align: Left - Text: (optional) - Label@LISTEN_PORT_LABEL: - X: 15 - Y: 84 - Width: 90 - Height: 25 - Align: Right - Text: Port: - TextField@LISTEN_PORT: - X: 110 - Y: 85 - Width: 50 - MaxLength: 5 - Height: 25 - Text: 1234 - Label@EXTERNAL_PORT_LABEL: - X: 180 - Y: 84 - Width: 90 - Height: 25 - Align: Right - Text: External Port: - TextField@EXTERNAL_PORT: - X: 275 - Y: 85 - Width: 50 - MaxLength: 5 - Height: 25 - Text: 1234 - Checkbox@ADVERTISE_CHECKBOX: - X: 110 - Y: 135 - Width: 150 - Height: 20 - Font: Regular - Text: Advertise Online - Checkbox@UPNP_CHECKBOX: - X: 110 - Y: 165 - Width: 300 - Height: 20 - Font: Regular - Text: Automatic port forwarding - Button@BACK_BUTTON: - Key: escape - X: 0 - Y: 214 - Width: 140 - Height: 35 - Text: Back - Button@MAP_BUTTON: - X: 231 - Y: 214 - Width: 140 - Height: 35 - Text: Choose Map - Button@CREATE_BUTTON: - Key: return - X: 381 - Y: 214 - Width: 140 - Height: 35 - Text: Create - diff --git a/mods/cnc/chrome/directconnect.yaml b/mods/cnc/chrome/directconnect.yaml deleted file mode 100644 index a7918dfe40..0000000000 --- a/mods/cnc/chrome/directconnect.yaml +++ /dev/null @@ -1,58 +0,0 @@ -Container@DIRECTCONNECT_PANEL: - Logic: DirectConnectLogic - X: (WINDOW_RIGHT - WIDTH)/2 - Y: (WINDOW_BOTTOM - 90)/2 - Width: 370 - Height: 130 - Children: - Label@TITLE: - Width: PARENT_RIGHT - Y: 0-25 - Font: BigBold - Contrast: true - Align: Center - Text: Connect to Server - Background@bg: - Width: 370 - Height: 95 - Background: panel-black - Children: - Label@ADDRESS_LABEL: - X: 50 - Y: 14 - Width: 95 - Height: 25 - Align: Right - Text: Address: - TextField@IP: - X: 150 - Y: 15 - Width: 200 - Height: 25 - Label@PORT_LABEL: - X: 50 - Y: 49 - Width: 95 - Height: 25 - Align: Right - Text: Port: - TextField@PORT: - X: 150 - Y: 50 - Width: 200 - Height: 25 - Button@BACK_BUTTON: - Key: escape - X: 0 - Y: 94 - Width: 140 - Height: 35 - Text: Back - Button@JOIN_BUTTON: - Key: return - X: 230 - Y: 94 - Width: 140 - Height: 35 - Text: Join - diff --git a/mods/cnc/chrome/lobby-globalchat.yaml b/mods/cnc/chrome/lobby-globalchat.yaml index cda13de434..1f3b095305 100644 --- a/mods/cnc/chrome/lobby-globalchat.yaml +++ b/mods/cnc/chrome/lobby-globalchat.yaml @@ -20,8 +20,8 @@ Container@LOBBY_GLOBALCHAT_PANEL: Font: TinyBold Align: Center ScrollPanel@HISTORY_PANEL: - Width: 582 Y: 19 + Width: 582 Height: PARENT_BOTTOM - 19 ItemSpacing: 5 Children: diff --git a/mods/cnc/chrome/multiplayer-browser.yaml b/mods/cnc/chrome/multiplayer-browser.yaml new file mode 100644 index 0000000000..fb351bdb49 --- /dev/null +++ b/mods/cnc/chrome/multiplayer-browser.yaml @@ -0,0 +1,140 @@ +Container@MULTIPLAYER_BROWSER_PANEL: + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Children: + Container@LABEL_CONTAINER: + Y: 5 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Children: + Label@NAME: + X: 5 + Width: 255 + Height: 25 + Text: Server + Align: Center + Font: Bold + Label@PLAYERS: + X: 290 + Width: 85 + Height: 25 + Text: Players + Font: Bold + Label@LOCATION: + X: 380 + Width: 120 + Height: 25 + Text: Country + Font: Bold + Label@STATUS: + X: 495 + Width: 50 + Height: 25 + Text: Status + Font: Bold + ScrollPanel@SERVER_LIST: + Y: 30 + Width: 582 + Height: 249 + TopBottomSpacing: 2 + Children: + ScrollItem@HEADER_TEMPLATE: + Width: PARENT_RIGHT-27 + Height: 20 + X: 2 + Visible: false + Children: + Label@LABEL: + Y: 0-1 + Font: TinyBold + Width: PARENT_RIGHT + Height: 20 + Align: Center + ScrollItem@SERVER_TEMPLATE: + Width: PARENT_RIGHT-27 + Height: 25 + X: 2 + Children: + Label@TITLE: + X: 5 + Width: 255 + Height: 25 + Image@PASSWORD_PROTECTED: + X: 272 + Y: 6 + Width: 8 + Height: 10 + ImageCollection: lobby-bits + Label@PLAYERS: + X: 290 + Width: 85 + Height: 25 + Label@LOCATION: + X: 380 + Width: 120 + Height: 25 + Label@STATUS: + X: 495 + Width: 50 + Height: 25 + Label@PROGRESS_LABEL: + Y: 30 + (249 - HEIGHT) / 2 + Width: 582 + Height: 25 + Font: Bold + Align: Center + Visible: false + Container@SELECTED_SERVER: + X: PARENT_RIGHT-WIDTH + Y: 30 + Width: 174 + Height: 280 + Children: + Background@MAP_BG: + Width: PARENT_RIGHT + Height: 174 + Background: panel-gray + Children: + MapPreview@SELECTED_MAP_PREVIEW: + X: 1 + Y: 1 + Width: PARENT_RIGHT-2 + Height: PARENT_BOTTOM-2 + TooltipContainer: TOOLTIP_CONTAINER + Label@SELECTED_MAP: + Y: 172 + Width: PARENT_RIGHT + Height: 25 + Font: Bold + Align: Center + Label@SELECTED_IP: + Y: 187 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Label@SELECTED_STATUS: + Y: 203 + Width: PARENT_RIGHT + Height: 25 + Font: TinyBold + Align: Center + Label@SELECTED_MOD_VERSION: + Y: 216 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Label@SELECTED_PLAYERS: + Y: 229 + Width: PARENT_RIGHT + Height: 25 + Font: TinyBold + Align: Center + Button@JOIN_BUTTON: + Key: return + X: PARENT_RIGHT - WIDTH + Y: 284 + Width: 174 + Height: 25 + Text: Join diff --git a/mods/cnc/chrome/multiplayer-createserver.yaml b/mods/cnc/chrome/multiplayer-createserver.yaml new file mode 100644 index 0000000000..a247ec7155 --- /dev/null +++ b/mods/cnc/chrome/multiplayer-createserver.yaml @@ -0,0 +1,129 @@ +Container@MULTIPLAYER_CREATESERVER_PANEL: + Logic: ServerCreationLogic + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Children: + Label@TITLE: + Y: 5 + Width: 582 + Height: 25 + Text: Create Server + Align: Center + Font: Bold + ScrollPanel: + Y: 30 + Width: 582 + Height: 249 + Children: + Container: + X: 185 + Y: 25 + Children: + Label@SERVER_NAME_LABEL: + Y: 14 + Width: 95 + Height: 25 + Align: Right + Text: Server Name: + TextField@SERVER_NAME: + X: 100 + Y: 15 + Width: 215 + MaxLength: 50 + Height: 25 + Text: My OpenRA Server + Label@PASSWORD_LABEL: + Y: 49 + Width: 95 + Height: 25 + Align: Right + Text: Password: + PasswordField@PASSWORD: + X: 100 + Y: 50 + Width: 145 + MaxLength: 20 + Height: 25 + Label@AFTER_PASSWORD_LABEL: + X: 255 + Y: 49 + Width: 95 + Height: 25 + Align: Left + Text: (optional) + Label@LISTEN_PORT_LABEL: + Y: 84 + Width: 95 + Height: 25 + Align: Right + Text: Port: + TextField@LISTEN_PORT: + X: 100 + Y: 85 + Width: 50 + Height: 25 + MaxLength: 5 + Text: 1234 + Label@EXTERNAL_PORT_LABEL: + X: 170 + Y: 84 + Width: 90 + Height: 25 + Align: Right + Text: External Port: + TextField@EXTERNAL_PORT: + X: 265 + Y: 85 + Width: 50 + MaxLength: 5 + Height: 25 + Text: 1234 + Checkbox@ADVERTISE_CHECKBOX: + X: 100 + Y: 135 + Width: 150 + Height: 20 + Font: Regular + Text: Advertise Online + Checkbox@UPNP_CHECKBOX: + X: 100 + Y: 165 + Width: 300 + Height: 20 + Font: Regular + Text: Automatic port forwarding + Container@SIDEBAR: + X: PARENT_RIGHT-WIDTH + Y: 30 + Width: 174 + Height: 280 + Children: + Background@MAP_BG: + Width: PARENT_RIGHT + Height: 174 + Background: panel-gray + Children: + MapPreview@MAP_PREVIEW: + X: 1 + Y: 1 + Width: PARENT_RIGHT - 2 + Height: PARENT_RIGHT - 2 + Label@MAP_NAME: + Y: 172 + Width: PARENT_RIGHT + Height: 25 + Font: Bold + Align: Center + Button@MAP_BUTTON: + X: PARENT_RIGHT - WIDTH + Y: 284-30 + Width: 174 + Height: 25 + Text: Choose Map + Button@CREATE_BUTTON: + Key: return + X: PARENT_RIGHT - WIDTH + Y: 284 + Width: 174 + Height: 25 + Text: Create diff --git a/mods/cnc/chrome/multiplayer-directconnect.yaml b/mods/cnc/chrome/multiplayer-directconnect.yaml new file mode 100644 index 0000000000..5d54a63e09 --- /dev/null +++ b/mods/cnc/chrome/multiplayer-directconnect.yaml @@ -0,0 +1,95 @@ +Container@MULTIPLAYER_DIRECTCONNECT_PANEL: + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Children: + Label@TITLE: + Y: 5 + Width: 582 + Height: 25 + Text: Connect to Server + Align: Center + Font: Bold + ScrollPanel: + Y: 30 + Width: 582 + Height: 249 + Children: + Container: + X: 185 + Y: 60 + Children: + Label@ADDRESS_LABEL: + Y: 14 + Width: 95 + Height: 25 + Align: Right + Text: Address: + TextField@IP: + X: 100 + Y: 15 + Width: 215 + Height: 25 + Label@PORT_LABEL: + Y: 49 + Width: 95 + Height: 25 + Align: Right + Text: Port: + TextField@PORT: + X: 100 + Y: 50 + Width: 50 + Height: 25 + MaxLength: 5 + Container@SIDEBAR: + X: PARENT_RIGHT-WIDTH + Y: 30 + Width: 174 + Height: 280 + Children: + Background@MAP_BG: + Width: PARENT_RIGHT + Height: 174 + Background: panel-gray + Label@TITLE: + Y: 172 + Width: PARENT_RIGHT + Height: 25 + Font: Bold + Align: Center + Text: Direct Connect + Label@DESCA: + Y: 190 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Text: Enter the server IP and port in the + Label@DESCB: + Y: 203 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Text: fields to the left, and then press Join. + Label@DESCC: + Y: 216 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Text: The mod and game version will be + Label@DESCD: + Y: 229 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Text: verified when connecting. + Button@JOIN_BUTTON: + Key: return + X: PARENT_RIGHT - WIDTH + Y: 284 + Width: 174 + Height: 25 + Text: Join diff --git a/mods/cnc/chrome/globalchat.yaml b/mods/cnc/chrome/multiplayer-globalchat.yaml similarity index 86% rename from mods/cnc/chrome/globalchat.yaml rename to mods/cnc/chrome/multiplayer-globalchat.yaml index fb23ac5d0c..4bb61bd9c7 100644 --- a/mods/cnc/chrome/globalchat.yaml +++ b/mods/cnc/chrome/multiplayer-globalchat.yaml @@ -8,7 +8,7 @@ Container@GLOBALCHAT_PANEL: Height: PARENT_BOTTOM Children: Background@TOPIC: - Width: 565 + Width: 582 Height: 20 Background: panel-transparent Children: @@ -20,8 +20,8 @@ Container@GLOBALCHAT_PANEL: Font: TinyBold Align: Center ScrollPanel@HISTORY_PANEL: - Width: 565 Y: 19 + Width: 582 Height: PARENT_BOTTOM - 49 ItemSpacing: 5 Children: @@ -32,11 +32,19 @@ Container@GLOBALCHAT_PANEL: WordWrap: True TextField@CHAT_TEXTFIELD: Y: PARENT_BOTTOM - 25 - Width: 565 + Width: 582 Height: 25 + LeftMargin: 60 + Children: + Label@LABEL_CHATTYPE: + Y: 0-1 + Width: 55 + Height: 25 + Align: Right + Text: Global: ScrollPanel@NICKNAME_PANEL: - X: 570 - Width: 130 + X: PARENT_RIGHT-WIDTH + Width: 174 Height: PARENT_BOTTOM - 30 Children: Container@NICKNAME_TEMPLATE: @@ -53,11 +61,11 @@ Container@GLOBALCHAT_PANEL: Width: PARENT_RIGHT-15 Height: 20 Button@DISCONNECT_BUTTON: - X: 570 + X: PARENT_RIGHT-WIDTH Y: PARENT_BOTTOM - 25 - Width: 130 + Width: 174 Height: 25 - Text: Disconnect + Text: Leave Chat Font: Bold Background@GLOBALCHAT_CONNECT_PANEL: Width: PARENT_RIGHT diff --git a/mods/cnc/chrome/multiplayer.yaml b/mods/cnc/chrome/multiplayer.yaml new file mode 100644 index 0000000000..a3ecb9f48d --- /dev/null +++ b/mods/cnc/chrome/multiplayer.yaml @@ -0,0 +1,111 @@ +Container@MULTIPLAYER_PANEL: + Logic: MultiplayerLogic + X: (WINDOW_RIGHT - WIDTH)/2 + Y: (WINDOW_BOTTOM - 560)/2 + Width: 800 + Height: 575 + Children: + Label@TITLE: + Text: Multiplayer + Width: PARENT_RIGHT + Y: 0-25 + Font: BigBold + Contrast: true + Align: Center + Background@bg: + Width: PARENT_RIGHT + Height: PARENT_BOTTOM - 35 + Background: panel-black + Children: + DropDownButton@FILTERS_DROPDOWNBUTTON: + X: 15 + Y: 284 + Width: 147 + Height: 25 + Text: Filter Games + Button@REFRESH_BUTTON: + X: 167 + Y: 284 + Width: 100 + Height: 25 + Text: Refresh + Button@BROWSER_TAB: + X: 272 + Y: 278 + Width: 105 + Height: 31 + Text: Browse + Button@DIRECTCONNECT_TAB: + X: 382 + Y: 278 + Width: 105 + Height: 31 + Text: Direct IP + Button@CREATE_TAB: + X: 492 + Y: 278 + Width: 105 + Height: 31 + Text: Create + Container@TOP_PANELS_ROOT: + X: 15 + Width: PARENT_RIGHT - 30 + Height: PARENT_BOTTOM + Container@GLOBALCHAT_ROOT: + X: 15 + Y: 315 + Width: PARENT_RIGHT - 30 + Height: PARENT_BOTTOM - 330 + TooltipContainer@TOOLTIP_CONTAINER: + Button@BACK_BUTTON: + Key: escape + X: 0 + Y: PARENT_BOTTOM - 36 + Width: 140 + Height: 35 + Text: Back + +ScrollPanel@MULTIPLAYER_FILTER_PANEL: + Width: 147 + Height: 130 + Background: panel-black + Children: + Checkbox@WAITING_FOR_PLAYERS: + X: 5 + Y: 5 + Width: 137 + Height: 20 + Text: Waiting + TextColor: 50,205,50 + Font: Regular + Checkbox@EMPTY: + X: 5 + Y: 30 + Width: 137 + Height: 20 + Text: Empty + Font: Regular + Checkbox@PASSWORD_PROTECTED: + X: 5 + Y: 55 + Width: 137 + Height: 20 + Text: Protected + TextColor: 255,0,0 + Font: Regular + Checkbox@ALREADY_STARTED: + X: 5 + Y: 80 + Width: 137 + Height: 20 + Text: Started + TextColor: 255,165,0 + Font: Regular + Checkbox@INCOMPATIBLE_VERSION: + X: 5 + Y: 105 + Width: 137 + Height: 20 + Text: Incompatible + TextColor: 190,190,190 + Font: Regular \ No newline at end of file diff --git a/mods/cnc/chrome/serverbrowser.yaml b/mods/cnc/chrome/serverbrowser.yaml deleted file mode 100644 index 431baa27b8..0000000000 --- a/mods/cnc/chrome/serverbrowser.yaml +++ /dev/null @@ -1,170 +0,0 @@ -Container@SERVERBROWSER_PANEL: - Logic: ServerBrowserLogic - X: (WINDOW_RIGHT - WIDTH)/2 - Y: (WINDOW_BOTTOM - HEIGHT)/2 - Width: 730 - Height: 595 - Children: - Label@TITLE: - Text: Multiplayer - Width: 740 - Y: 0-10 - Font: BigBold - Contrast: true - Align: Center - Background@bg: - Width: 730 - Height: PARENT_BOTTOM - 30 - Background: panel-black - Y: 15 - Children: - Container@GLOBALCHAT_ROOT: - X: 15 - Y: 15 - Width: 700 - Height: 260 - ScrollPanel@SERVER_LIST: - X: 15 - Y: 280 - Width: 700 - Height: 240 - Children: - ScrollItem@HEADER_TEMPLATE: - Width: PARENT_RIGHT-27 - Height: 25 - X: 2 - Visible: false - Children: - Label@LABEL: - Y: 0-1 - Font: Bold - Width: PARENT_RIGHT - Height: 25 - Align: Center - ScrollItem@SERVER_TEMPLATE: - Width: PARENT_RIGHT-27 - Height: 68 - X: 2 - Y: 0 - Children: - MapPreview@MAP_PREVIEW: - X: 2 - Y: 2 - Width: 64 - Height: 64 - ShowSpawnPoints: no - Label@TITLE: - X: 70 - Width: 200 - Height: 25 - Font: Bold - Label@MAP: - X: 70 - Y: 20 - Width: 250 - Height: 25 - Label@PLAYERS: - X: 70 - Y: 40 - Width: 50 - Height: 25 - Label@STATE: - Width: 140 - X: PARENT_RIGHT-150 - Align: Right - Height: 25 - Font: Bold - Label@IP: - Width: 140 - X: PARENT_RIGHT-150 - Y: 20 - Align: Right - Height: 25 - Label@LOCATION: - Width: 140 - X: PARENT_RIGHT-150 - Y: 40 - Align: Right - Height: 25 - Label@PROGRESS_LABEL: - X: (PARENT_RIGHT - WIDTH) / 2 - Y: PARENT_BOTTOM / 2 - HEIGHT + (280 / 2) - Width: 710 - Height: 25 - Font: Bold - Align: Center - Visible: false - Label@SHOW_LABEL_TITLE: - X: 20 - Y: 525 - Width: 20 - Height: 25 - Text: Show: - Font: Bold - Checkbox@WAITING_FOR_PLAYERS: - X: 80 - Y: 527 - Width: 100 - Height: 20 - Text: Waiting - TextColor: 50,205,50 - Checkbox@EMPTY: - X: 180 - Y: 527 - Width: 100 - Height: 20 - Text: Empty - Checkbox@PASSWORD_PROTECTED: - X: 270 - Y: 527 - Width: 100 - Height: 20 - Text: Protected - TextColor: 255,0,0 - Checkbox@ALREADY_STARTED: - X: 385 - Y: 527 - Width: 100 - Height: 20 - Text: Started - TextColor: 255,165,0 - Checkbox@INCOMPATIBLE_VERSION: - X: 480 - Y: 527 - Width: 100 - Height: 20 - Text: Incompatible - TextColor: 190,190,190 - Button@REFRESH_BUTTON: - X: PARENT_RIGHT - WIDTH - 15 - Y: 525 - Width: 100 - Height: 25 - Text: Refresh - Button@BACK_BUTTON: - Key: escape - X: 0 - Y: PARENT_BOTTOM - 16 - Width: 140 - Height: 35 - Text: Back - Button@CREATE_BUTTON: - X: PARENT_RIGHT - 140 - 10 - 140 - 10 - 140 - Y: PARENT_BOTTOM - 16 - Width: 140 - Height: 35 - Text: Create - Button@DIRECTCONNECT_BUTTON: - X: PARENT_RIGHT - 140 - 10 - 140 - Y: PARENT_BOTTOM - 16 - Width: 140 - Height: 35 - Text: Direct IP - Button@JOIN_BUTTON: - Key: return - X: PARENT_RIGHT - 140 - Y: PARENT_BOTTOM - 16 - Width: 140 - Height: 35 - Text: Join - diff --git a/mods/cnc/metrics.yaml b/mods/cnc/metrics.yaml index b221d9049f..222f8a3e6a 100644 --- a/mods/cnc/metrics.yaml +++ b/mods/cnc/metrics.yaml @@ -26,8 +26,8 @@ Metrics: SpawnColor: 255,255,255 SpawnContrastColor: 0,0,0 SpawnLabelOffset: 0,1 + IncompatibleVersionColor: 255,0,0 IncompatibleGameColor: 169,169,169 - CantJoinGameColor: 211,211,211 ProtectedGameColor: 255,0,0 IncompatibleProtectedGameColor: 139,0,0 WaitingGameColor: 0,255,0 diff --git a/mods/cnc/mod.yaml b/mods/cnc/mod.yaml index 4220f8d721..47669e350d 100644 --- a/mods/cnc/mod.yaml +++ b/mods/cnc/mod.yaml @@ -91,9 +91,11 @@ Assemblies: ChromeLayout: ./mods/cnc/chrome/mainmenu.yaml - ./mods/cnc/chrome/serverbrowser.yaml - ./mods/cnc/chrome/createserver.yaml - ./mods/cnc/chrome/directconnect.yaml + ./mods/cnc/chrome/multiplayer.yaml + ./mods/cnc/chrome/multiplayer-browser.yaml + ./mods/cnc/chrome/multiplayer-createserver.yaml + ./mods/cnc/chrome/multiplayer-directconnect.yaml + ./mods/cnc/chrome/multiplayer-globalchat.yaml ./mods/cnc/chrome/lobby.yaml ./mods/cnc/chrome/lobby-mappreview.yaml ./mods/cnc/chrome/lobby-players.yaml @@ -123,7 +125,6 @@ ChromeLayout: ./mods/cnc/chrome/assetbrowser.yaml ./mods/cnc/chrome/missionbrowser.yaml ./mods/cnc/chrome/editor.yaml - ./mods/cnc/chrome/globalchat.yaml Voices: ./mods/cnc/audio/voices.yaml diff --git a/mods/cnc/uibits/chrome.png b/mods/cnc/uibits/chrome.png index d0d555297ecefd0a60a0476466b2e55352201a12..7080da5ef027e070ac2a55aae4364a3c3e6c86d4 100644 GIT binary patch delta 61821 zcmX6^by$<{_kK6JJ46_akdzRR?kR{02qGQQij;sf@1(l~0ZB;_B&DPqr6nd(qXyDF zn%_R(-ygfKJ=d;n*K?lp+~=J8zTd$^{MBRpO6AAkHsvGPNXWQPhm2_i6dvVGftvOB ztv@*@Mhb;>vr=rlXMUm+0cDCHwjmwDdEzuF z3hs~{N{?;HzBB7MF-)3!#n-0MFFU#!5@_YDAR@di{7L#dQz&;wp5q`B~1+A-}35{m)IKVVuqB< zbq4eD@t}Wa0iD=kM8vyVCzB5&C%0$nU6f>cPgOZTH4rw-f8Y(F7XH>ns}A#7k%P=e zPP86}W7gJ2nzW^wNy)>z)>@VrDjFUr#Xkh|YgSNA>^G-<+7k~?|5(RgNgzR@y^o8o zr%(9V$vIM$8qYUMGyYrJ1&Sj@`j{mH%2nQOTObf3UgJAz)t5I?NZzFHF};6%VhQXN zZ?*H9ALTIxIHtSRb4b?44qi3^iauwnsTSPXa=_1MDOO66hf7?|utzZ#gy@g9;J-c1 zk9v#$9&h_X%5yxMY4Lk(N8tE}+!}CroLIHUWqycimO;jqtFFMWCqbrZd?+E;)kvPu zL`lTwp6J($E-$JdubM=`cgOdCYycCTvnCs{BXbo~U)OX?Tko)b^4zt;nngtfC~2jS zx=FTuR*%29jrdO1UUhhQNYGL83j9O{$j79|r+En5%`;g0Pi$>%)$9x??99~fegk&6 z^M+r)e!R8n4b*1`oJ{ZT_0>DgoY(-jBiA=IcJniU%Q4&+s@TR^pEqM9D}02+9eoxI zgi|&QmXjU}pP7$KC{dtq1ByrKBmNi+E{aTDi+ciRXVJK&xD;0*BN&L+t}Um#I0s~_ zB6cf^*dV9ONb$&ZVXw@@M#s{P1gvtWtMug~&b*$Uo^nN!u;WdX(mQF^Ru+E84Cn4X@dJN`2p@Bm!5%)RFCmf*&?49qJa894vc26Q!5xA7&TsKZ zhtJl(z&6OtwQEiV`hO!sS730qcpM5gfo+;_MDm^NY! z@04BRU$EcGS~Q>-k(}=K*EZGcqU1gPidCT(d=XL1?#+scQI4R;cB= z*^;KuKq|qWL-)HDJ=kkQV@`l_*(uc1X_*?-AmsusO=EcJ3fNqKWC#h#>F)L$tz=Ia zCJ+;d2`Zli_`F>(3{}cCE!KMAaY&CX-T}Ayb6F|uul)Gb->bHdx1CS&nzcS8mQ>hb z!(cFJ5sE&!s8=&5H1H7cQ+9S>80c<{e}|3o+#)Y8-DMh4@_;g{1zPcwdyjywU$ z?TXIM&Ooj_t^^^}ql$}>!AmJ|adD=L<(WDsKRsLmha)2J3d{s)D6C?%BgC?6d=4?T zk9+1V&_1R>uM2YT!6$)@L6Lx=%s&d_S8{feXf|nr=+h)QiM)T4K62iaO5w?IB!Ecq zEB`N!nVRf1Ut<$^o&4?!i{uU9*Mj$tpE;UG2EZ%BAVGA-8yl&P?jw*z3i?(e{;&C) zJ!28e4#_`5g)@;W=^P&e{NA(7vc5HQqhf?2$y}bVC~&R$pjvCXBl((U=Nj^AE8S;G zSIa#wJ=y2K?WzHq8}74Fx?f6Bd7R3hq=Mh}D3h`CQQ<&94L`U8eIHmG1V=_(rmVXb zT_@_cYtqjU!WqBILT0RE+Ul(P;`C1JwQ)Ex!j<>o%f_QNXdI-{dG3d&$UafM%R-tcP;bzmK^!y;EVsgxq*MrD zPNjwo#psq4dlXF#+5QcJix#B*6fjD3fW~n|9NwPdeB6hoUc%h(=CKI|41b?3e(Rk5 z1jHJgae?v$R6m2T(N=@vmd?H;JOy-de|k0V3`T{9a(&l&Z#3V3i(I+-GWb5##yRI} z6b`qq6|<;@kIhN0s=&uVd0B_h+33X}|8l=8R96u6pl|jhK*P^xj5Or$oFf?*{o>0X0~e$O5bIEOlIzD7A2OA zk0!9s@_g|OY;~GZ;>t6FhZKhVL_y?_Lg=*8LiPhj+YRy|qEFaeX|iHPW-D$R6At>{ z6L-NA4S$ZkMu2BN!blmr)`tsZf_a*aNR7;N}jN}_~(Zu(DT zWex7Ik7uS9i^b!je~55F zZaTi3ga8ZaBguA&@aV%2e8i7G6N@~zY2qx}4J~FpoCDA0V@8Wn`tt-Q2&MXWXKv}e zig8yKf>c|lzzY#e{@<4Iuy7z^{Wij5@aV|nr9y>C{mv3~=h$F#Aj9~a3c_AkNGQ|K z<)qqccV0^L(45n_I`K&?^KvAhD5aoqwQ#lH*w|>{ICDY|G`&b$x&u_SVm>*-TF=?o zIatHlLBLf4Kv&KVWLI=_`M_LEHmZXu>;k2cn~+OpWHjWBvSz-VULXk5bsb&$D=jch=a7 zIdcWbgf4_zBdAH?8%-F6Kr^`ZjR?XPRy4D#SbP;tIxjPFA(D z&^;J$bRa-vr2<&37| z_`g47@8l_Z#s59=u&Yd)Wp$4=z?WxyU#=Rts&0KO!OZ=c6`JTl#rr_1s1R*;l8NS9*vmj&;>Gy;F7uZ@;GW#V+3-x- znOx}}_pB!3w!OVQ=*!^94pQ&MN|RHRyM~)bJeY-ah69=8olz-kl!V-^N_gl(#8Ji0 z#7_+|R{)^7BGWx-XSAFDKA3DWyNhQxPlO%^%#l0S_{V|5_{VmUGX}n?as_kO$MA6LIefep9*lbl0fZLQxKO|lpHu?K7 zbKF}lDOU;`IG7E*c%VE(WFnAB?CJ8Y)QcnTVed*YH6J-)$x#L4rJItmnU3|f?iapE z+J47MU$!zT2&t82UBR)JJzJ>>C{$swyvdh>@3Oz?rTLU7rx-(1DfqK=9@?l#PMA); z9)0=exh*k=qjV$q2@ZVEf3~K0C;H9FdKGAixrt7{K?wvZ(pb+nS@%)Woglj5A!G#` zv)wTccCC2rtAXXKl}yV6z<^5l(p#z?seI2=DTx(L=d!{(@xDqWK5$}O)} zn!3D~dqucwe6k^ftIBP`-{?5n8wg{-zS*?5@Ex|Q=dlq)F+Bsp#BL>9L~KMhlqx8D z5gUXz_#upZ)~#RhkM6bZo17HLt_eiM>!$kMFU^EuV$s8;v2VNbu4EgzSd{dWa<_e(pnfH<>y=Q&#q$rCDpC#R^p@43t= zRin*LIkTkh7}9Z?#}MA!)^#-B(*eA!=O9g~?D%`rajH)t?PG)fX}<0e>oB`(Ax#kO zVu@i#IG5vbXBaq5F~wMjg;_&tTHBBl?@#>@9(c&xADac1zc10jRqtXW7BbN1`W>cF zVwl*=J&zcb9TPW zU#8+SDO*j!eQwS7RL}mH2WaBT5fz8%VRXcLf1OjC%jy^j!b48{W=k^w`fhjriquX~ zKE!oR;KZF1>1c0fcRkF$(Bg+pNJoWJ@92A}+O_h8xbAm$b}sJ@9haK#z6K@aqx<&n zXHM~7N}<;r#GMOn`8z*aq(auA89n&##xRW=y|_WQK4de~Hzh)o0M3>e@maT;LRnX# zq@F+mT_Uw_@AoHpNEsP8@?7BhD|ot}^90}PM3*z34duuEB12#+zqyy`DBaD3~s`nF547&i|C-~y8mf0+1 zDlN}>KR>CAZDbDtAQd3q8qInWmbVX#bQ4i2Z#5^<@>p4Hk+! z^X5&s{?0_=o3ouAraUw>lnHmO8IlBjdz7q)1EBM9D^YA+C)+dH=BB3pVl>~1#207= zFGs0WpY7TA#jzC&2@78nR&y9ic3ZW?rr*S*=d1{l&ZE#W&BX1iK->m({-e{JI{zL8 zJ8I0H5Vbj^(-G`AB?6R401i{UPQ~o5wf0lCC(BpZ{mr$3$3QTNzb#1UjvF{s@%I?A!+Bfh5qhVZs8b0(u(7p~W&p(@z-T`-I5^?CCdLvw z-#O?NN`0psONB0AUf#5`vvWQmVq#)i5KJLUeZ4446R}>$yu8fF$e4{6W8#7(@P@TP zdvB*oUp?FE@ew2efp%7NqRs)}Qv3TU3p2>1$;Xk~L15UOuX4&ryxRrU!rL>!E;?OG zA{P*(`^|GX9C`5()Hinv%7aEAt_7wwLTP8x1@!%9i0|?~6{d&dKz9FNyxMCg1w8aS zKq&+vdg)V87P=}He-m`{$sEyLnB|w*#jdKx7{X@O9AkAUA9yP!_F%v1PS!2{U2vXE zeZw`~Q6YfFafKu(v{ne3`T?lB2BydW{xZwYcm~)7jI!OX;MnNwPTYijfjkcb=P@KV zN(8-0sFKo!51EKo1?^+FSN; z)`tlRagc^nnK($R`Q2*&R)L)Y{QzH9@(^lga=8Ds`L+MYbkN4xd57sTGkz%;IligaoTokXG;%WG7#9J%>yuiP`Gqg&|L)xh6Xa4>VUPuIr4w&+ zd-?KZ*Yz-}g;-c+gAYrN&q{?BkYn1X^}Y9^EU2&M6hduIivE_?`4IdY<3mOev6*8h z8qWU)fA58;c`wSc?W=?@^_V=;=|3D%`t24dMRRo@X##1cZ0C(w|4UNz;`glMojEdb zDjYdrgmu?=5TY3VJV#kv1*Wj*QS#WP+hTMu>DLMm5XjK(<52bX);|f1d?O~Q4A3BG zU9vl9d&2o0@9i&3NznWZ?;Qt}r5N=u`M8%g-)LR)>ESG}P5vb+G7eSOgAv>FBwaBS zXYQZ)`J!9~s_GyiX7YT?eM<3r-1`y2gvg=V-O$?kT++ZiU8LMF^1kTr&8YA4zlH*P z?@`QVOVV3P5`Hg9Y$_Hb==`|8eFF z)SdNe#BMnD=0w%r?k{f2WTzWrOFkd1Am)4xuqv^{X3McsZhyM%(!BqLx>JA9zp3&J zizBqcBX(lM%F9`1yUEb9-%s5>^;(SG+3F-V`fL=gCFR-2dK;i-MlrtYp`Q@XyFkES8D8N+E`Xf)U?4<-!0da)U-&*$OF5DKd zQ)F-FO7tdRf{vEOjc7@uZULN>ecY4qHY$krrslDpC>IC%pGGY;U|495`u-4MAnWLJ z#DZdfygL4fxJ1_CDXj!!pe|)ZNc3XCR{-Du9w9)L=W^&2;v{#?4Z6h<8sUrF%<*Kr zk4J5MIs63=RX@S_tO1+dFkhJbVtHNjH|F?>Bb3{NY>+`fc{OWvG^|{$TnV{Gn4rfz z*dn3{MOqC(<21f3MEj#2Jj+`$UJG50)bjq!t)n=uCuTABcx&8crS*Qe!XP4hTrpcQv6yjhN_v*hSv9LHj} zv+Sdy=bdf1NdmF|>Eg9qMfYulaI!UEqep+}_TGhc)if|4p3);x1Ahj9 zS=Cg?<>xNSrn|3y8F3!ovR=5)-T7pZ0f;Sq+?0r zXQzGp$*M&}Srzh=>scI4o>g)yFcP!R4c)6R&O9hND&&1Xt+|oum4zyKXC0#4N54JsCSis>r#3&4N(hv@<^7=9L7?6?*EM$z2;! zIXOSvh(On0V(}rjCuI8#4=i9MjN&%T>+h>#wgkq8W{UU+?X?<(?qF~cFH@j=yk5tt zAP`UBDn~4rpm`gw9ZYIC#7*Q>y(6RKABTz;*j)t<4n0<$w}B$i(@m1O>%eR|$eXkY z@s)Bp+L8^lHAEio=jx3yaKn9xOj-LA#><7?9bJ0%oxsB6?QCCV_HYj@yYEAXH(jNb z!|G!|`133OWTmiUt1u?d3vqU3tBtprM)>tb-yXqpR*pZ?D<*CBlYIPZ4K%(uxIPq1 zJ|-gmO`?NMZ2{@GdX;xRb8uIe^E*bY!Nczg6m~3aboN(-I#Ja8l6)60G@CDHx17bK zvc~iLcRhyIyRdybSnz>05A`oQ^_GjaK0NAZ#CO5oQ&^5>?W^&kHakof@M2tOos!#e zpKGw$UUyMsWats%$i)0q+?^v&>A~xD@x(oQOn%x~xC7W3{!E@eJm4^6!GD^2d6z+V zvdu)r`{Z?q5->`y7){{~McN}P@nUchWjK@3rw_8X#LIT&2vq{8$DlMVX%X3Xltj$G z?WOv_ei$!`ptgDPK-{0;@40dF96Eg1zVzDG@__W{$14f?KCBQCrzmS;o44f#DB)M(wGdD}ZXk<4A};zQ3_$RF+`I0u3N( z4NoL76*TKZ7Z?4^+0+SDHy|}%Wr!$OYy*|33c}Prb8<7fW)mijtc=KnA{1B^eB~3A z5f=6sJzO6l40#*=-E(uwtg@lOn@bmx^(YOSnBJy^PTJNW-ka;r+ehMuLt?$D=6>6?yGj>ZH3l_Ph+Ka859t-qJ##y-xnA~) z2yxVDTcJG-1$mSdXj?-`Zf<->$*I$70*_d+Bg z?aa_FyTNiimL{18@$A3%Cg46fyh7VkCaX3n|}=a zG@9G^JEempcINq8qH%92cXey#wJwI~XG=vm&(hN+t+m`YfeZz4XA2Qa=m`IwPsEK` zm0`RadD65j{Y0$R7T{e!X?R(TzXJQrRGHK5_$^yeM)17tCDgozlVaJ$g4%eKR4bNSfp(B7Lr3TT~%SzBT#fa_cBXBsx$#~N1z<<^+KspTQ^ zsUoFsqz}(fiQ5r$HQ8!!KiBwwTpVk{{=C^_vRVZE@W5?NPm< zcxwHbH0Ro2?E>X6Glf;|FNwlk6j3)hWIAqEDqep-uB{Y+tFE)m%Z~<|zn-)SzE6*T zi3w-*SxF3KXvT3SymVs^IX_9SDfQxDW!imM#vY^u;$%0z3_w_0Ngt;}X6dc{H~&-A z1mjwna-TolwFms^+x7U4_0rzB4~lEJ?SiUbe|XF4%FKZ)6SWn60v$ml;cb-4sl0C# zbO|56SKZJdE^~fsyAe+9LH(Elpp^p0#E~|cOn+a64tC@4f%tvTWO-gabY&EQKD;z@Vf%6JS(cct$o0>`9qk7{w3V)oT2yuA zd>CFf?oyBKPIZQQ-yK{kA45!9VHNIm>disi*A;^vLeSrtH>oeZs>7&SlP&4i3jKV#=*(x?Vv^?jaj{;z@CfUwhO4%f?(8tTntJ)IA0gAaE9oG3;kAB^6o&2#uz z!k^$Q#eXlvZM8j$q{LI?7c%Tt%vpswR9$!CxaiF584p9OZ(BF# zZTiRTb860ES|dsR61l&2^>81T*!@qQ&vBjiS$oQwuY?>;Ko~5tY)74n7IbPU2z4s%sbJDOjMcTOftPAK2V6!GiKm#dJkm6-?m{5zp@QQ{2fZ z=7MJnQ6(iMN@=*$742(25dk&7b$e)rdR72Mn7lc>h9$t8U0}be8Nm{ePqu zYIb%u9C*UTG-^a*L9~}fr!Buv09;#kI{L~Z#oi~m-qL02r7K-tfb0eNy56f8Aa!FU z#N+6@j+T)8*{CgaZR2yhL)fnLlVmnn!KpoExk}>U-156faQlbGrh67J)UvylvIjWY zs`aJYJGRW!5>eG+Wa)RK$_)bOs`i=w6i zfF)$or7D0nD8~`h;!Z?vNxGtvCiq78f~hR1@i0!g)O>LdH~#VE-JXx#B?wBMcNF%PYch;W(C*Uc=(Or9;N zq}1lNI)-KO$If}R?UZN-Y?uSmn`JfchKGi(Y-8LU$0b0iinrwey1UK^e71&%{7?6( zw;#zy-8;P7%Gh3=p_#Q9hx4{9XqQWz42q9jPT`KeG-6%1V8iJH8fG^?DKRtyk@x)X zfE9J{!c6j8dzVJ z+yX6WwTw>${)v$J8=Mw1F6l_MJ?44-#nFQCai6LsPwS&hczmh=xJ4g_ZiG4q(9One zYnz|GjVX4;5hck`7$d4bTeyn=WW)%nLc<4 z`eS$IT=FN3-(dynPF#VZm*H$DiDzeGq}_%zoOaFy!tGfSKEZh=k?Vsv37=Q{>C*rk z2ER?W2rFGhB=LUM!SqypcSQrsmG=_~p+n|eP9?O{O6O`&6amNc~wG8IDj z)Cho&b@vMWD@n!*-WWnS7qSw#zf((cDZ7}~uL{zs7L!ersta3kqn@c-1RYg)9U837 zViVRppf4(p-G$EBq*W-3Z98aX^J7afSi8cWTGCNA;fcVyOm3SBtjRkMs4CRV; z%zhE`a)mQa5R@?U_>W>`UIrf*s-g?Pqi{U$^&g&_fs^c}hK7Hj=;AaV&X0-M1AqjT1c6 zzU#gHEcahXtNr`9T6!fCeF@!XIwuzWkFQ*MzKa+La zewX{WzOY$5WRIW#r1biLUg@xOUG0s%-Bv{OZfCYJE`6bAuzoyb=;ex$Tz0wzwd$z^ z%{PPH_ZMec$2GUxs}M(~1+6D^srMfqFvqkWX6>4`MmfrM461YV#DcW#3*VAHj4q>> zj4s@^&orUj{1+K>%OycDz`^%Z#h+AyO$Qsct7f!ayTElQ_)8O2i)*A%s!``@svP)A z9AvI{wVv~^FuDs)YyXVm_A5bE&}XXV8nfg+u2+kB5j)ZgOg+({+`#G)Tb(S+g}5Y~ z1^j^3+uCVw$MTU9oy8FJ-Q_#^I!_`Xc>831-x8pi>llpB%E=LVT_GYYtQejy)y>Ra zJ$sz_`e;`MT#Dc_-;G}gz|N(LAD&ZpN~Qj&vo2qT%-+WdM>`#sdkZ!@DX-y~2t-cS zr%&eqjRJe*&wx{bspilKVRJ*n^|A}aMOH|p^1C8dUs@#9J$E*P9XIx1{14Z{-YbDZ zXMAFxvMgy-$dh5f!pV!fzPd{=Wg%yO!1bey2h0L|)893FwRCGQr)NOtJ8|6d#Z%44 zcPQ?B-c6<~VRhgSg~xw@6!w@J&fO2$o_BoM`eSa|ET1&g=ho{~|DL}FaP#lmp1;Dj z2NH?&b2Gv_=Cs8sX7oCI*2k7r@a-@-e+V%D7S{*D3j1(s)%h*EYr3DL>-aR1Kpbx# znU)fG*BJ2mkXOz-$7H?1h8->#6u0%s?EDn-i$VB!&DG;^e2JLtWwkChd%djEs!wiSJX-E3(vtnSna!j@zzS$&v>LeM!<96Ou z-ecC>E{5^^zF_=8e?Q{IP8>e7Pg$>J`|V`cIf=xHW%D^ZD_!?fcYy7OxBM0`8n4st7r-WM3g^^WGh1tw~R5%LRJ+Hd#th&gExOv73 z+LBL$&TyfiDT7mSsQ@#>$S=fqUAJv@Iz;^T&aN2We!0i|rK?Maj|0&{JG!hAN!^J} zJG-rMyhdSC_vTE{?pmTz2PvPy3-Rt5930&Cz3jd1A};`jxH9lAEp&_3{AZa7>>DZk zUxQHRbOGV47H~pHSYp&g4@E9UgRNe_-nb!hP}X;(MoUj z2>8mQtQLZku2mtgVy0>>I4KeYon9yqaYuz$2s^y;%S)hVtRgjSQ~xPS>`EHMMYjl=Eo~hgR2b-P18H<;gWsVhD_~x9Lq@@0L&AD1fRL0-BIVRQ9 zlLE(khgh6)D|5b{4}v9PI87#W@Co8b2Z#_;gtlMc)UR?2yNxwCKYwY-Yj1I6&Zmrw z45J=NED3JUM>ylC1X8Z;Vs3X{l9kehnKFEw$dBETrXpb5QR+XjQXB~$Lj2ivZ=-qf z8g_90)gkN6eSR|KX>9r*gQRnu4C0V-%9=QAb#N}HPnNJuK%b89>2DE579Ew@T87^Sl3Q7eF`ZR2VJx#^d9J&LW$tWBItPT)1QVQbS1Y-;&x{B}X>OzYI zemw8?_;ZgO{LQNS&$Y}Nj+`?3X}y*TAEG&6T2_FX@A;{e{|h~7{Q75&pr!HPIPFMd9;j6Oen;ATLeRvIfWi{Ziah2xcf4ibll@5!DGk#STq|4KR z`H~;!`wzdXf^d%(+kN9h%C?aAD{2r? zyDEGOiu8b%>5WSp3z{XdKzP!%`v(3#7liZ6w~HNfiR$K(wi{n=27bR=@dMLXcd74+ zS`AF4`4XZl#y8CW`8VB>0O#krn{On+KU@^-HXC-0yBN6fd#dPrVG181;=7Q&h6_J- zEMuPhO=ldNT=`!deVGbDe;?PHkpgjyttkKoo-T&p6tOGeRycE?HGoWKuZ=2fm12o4 z;$@TnPj+J_HLo00xb29 z0Y}PYma7PW3eFLhdka#Q0yO3awlyyE)GNu_w$ofEQ8O;?+;xcPY`0pi5n!1ogKLI0 z35VW!4%gU@`o<3NxI1S;z)(%_YGiF@Q`*9Tmq}S*ZdX}G-Pq**hBw||gp&y)#aI0A zVZ0m{HLPGg)eIQSMfA0=Q=VIrrb<1YL=?wPR`r}IcjD~XO8;ThmiVxAKJ`PKyUYdH z3&U%<#tAaJz}{wQqa6;9=YaVDjuSNmyFI3ui|nG!27?>9-`XtR)F6(q15fh*MJ;^Q z?q;ry_}v8@kt!2S3@NcvV*3>Q{zpjc`<0iH{XgpIwOCdahl3P<`8^Ie8jU9it#2Sf9 z$h~oxvL*?=2+|nyI>iL5klIvni-0=X{PCXZh)Up)P3x22k1r|*p^ow)dC9IxvHDs{ z|6sMv&Uc7{thpU&wnW~36yLm>Wb`rvz5BBAf1P7qo8SGLzZ{_v&6R%9`s$PJ%h4m{ z7IPVDt;H|$yy>@dqoN0&72i1tM8Xt&C#bb?c9L?B@QO^GQ}DqJ8)f)F>_4Y?ybxTG zV>d8$>!JJ45P_V4`64Io?uFvq%|iIe(!isBZjq+$EB?mKu5i{L*Y|>^Zu70x&EpSu)}P~P(B**~d1!eCD9)UPJBE4*F_iy6Sk*`V4bQHz3qQn+D&PN2_;A5+=ito|-SbkXd zrAR5I#jnAf4Fw?l4z5BaYJg^t90GJ=bab?*54srQ{nu6c4aA?Jod__M!KI2ZBl5?< zkgfUZ{$p|_hV6eGTl^ccSITi67Z}yDk}$r_!%fye7(3x8>HCS#Itho=r*89eyShLL zV+doH*CcR@4W1;sIvhY{8o(ate7hJ$Nof5l%x+H3{JnwV;9;&N7%xDoKd%IA3VeZw zs7C&40Tg_XT-P}+TWDoiD{Z1I<1b(zimoH~7Q&8hHpUEFrIhi|^tb$mT&3mjF+pkJ zLLtfnGgxOYAmQ{!<3??Z$dNI<5!CbQhCYWqw)g9ySZ)>|j#8E;#5g6Kg34bhBVISt zotK3oIiHB?C5z$&OLjLD*~E#-0BnOwg=&{)(!nNBr2H4P0KTe5m4(O*6`p{b22 zMLn!LBC`Wi7A)v!zYQa4$^39Z#mnlvv5#E$(s>K@8$ClswRhuf!aX=q;}I6d1}H>6KXPYZm~Ul zb0FZb!4XfxFxm9%aIthrrl+lc$Dgj~ZF7GgmI1HlSlBe;_fQ4)`R8F)OQr#o5JA?A z=}pQ#U2h&6DuL6@A9%PBuEV_*llIz(+Vv*q7F5VDCoi1B6@KiMT{WCsLeQTu4kTs; z)vb)1;Kxk=#}xPyh<1&akeYtU`HENGiaWxNu3|)Q*&*%5L~CCI(ha{{;(sXkbTLw{ z4hiDod@&z=M`KYfJ(aZs=NhegbV{f4|7HS}=bS@6L0OHvi}+tlsdD?Agr#|u*Tx(@ zD4Dtp_-MwGqvD<;460?;&hR36(f3F<_VB>wdt>?P@v!z0E`~FoXySn2$29&pYqJ}G z9>2MBX13RVWq9yR6KW$?OJ_7+FPv$d>zYrfkiTzf{KoJm=O}wQ`BIzXBVEr*Y*YCrzq;;<0c(IT#?aO$W!jwGDvdH}yEIDLX z7uav&J`o24o-WTz;3w_+HKyHYI;`JYdniRlH{G*+4-zHzrT1Mxd4<`ItO5r0c>`P6 z>lNUB{NtGQ@wVf)0HRc^uQKj8edR%psUeL>{Nw`0m%9=*V1In)13ecm2lycp>eR#o4}smgNB?V;?}95wSC^ zmk7k{gU!^ce^b!Ebq_u)9c;y496j`0b8K8Kmw{ALUug7hD5jaZw#|PipC*`F0Ix3B zntnVyHdLd|8*)-!nwWS{`{oI$(yESW%wRAiQDisvNT|2_Cx2%|%#r!CUb5eryy8eX z+kloAeM}?HOK`D-dC8|StVDPqX-T8OzOch;i#`fAhD~hkiZe6wYQYh9#NL!o#<5wP zzjE41n9*2>Ji(*h5iWGS1Ko8k>^Aa9`2kI}=c|P@V!uzSslCvNU-k-w$(>-#5hIss zj483>HWSCQe|LJ;pT4c~yG8%cC26O)?=Q0_$X!cHi)S(Qo4udKHwOb2+25f_Gtb3b zk)@@Fa5&^#F<+U5f~`Y&68Gq6Q2T-U_Yjp$6?|<8Y>i`zn_?|QoOxeXll6?3(yBWL zx3H*ub$jARKN}-wW4Y=pCsa_&LzTY^ZC&{Yw+i&qJ2|3Kr$=F)|m03sRV_YL1Z?=&0y=C2>o^sd8( zO7?e`9hLR#Hb>PKVg5Hz(}>sSNWH(wiL~F`;`tcv`OJrx-dT4?2b21Gxzs+WGTl-m z_O$bqQ;BBgs@Lt&Ca9<%RNGJ`jyN8EbgvW{o>Rl;{oI#@ln3mf1FnpZTRknRrLMrl zw$wO93WX`*l`}MuJOvW#IA#{Ore+Jshl-`*s}rNg`V}{8HrBR`mHN-CjN2whoJF># zTxa%*a`xF{8*llP@`JG%J)aQOUxZCFjp9on7TA$jO^b29p&CHQpy$MGQlg-tXz>W|LKm8O%>iA&|0NK&@(kx0Ftvd`+q#L?FJ3bRNJs+@>!o z-}^G)wa0ps&~ULBSt$6}B|Dr_i}oll+})TSPp}c(R1cu)>HjgWa{0;cNLrfXviqLB z)S*_{AyF9m4*2V=Ggr}rDLv?E!bl3)BvG@)3b7e9D&Zc) z`umW^-!&kS>NUC z2Mx=t#*g%=ON-3%#qIc(Hy6wp+PD)|RVF<>o6E;J40gvWRmnS=iB1wWpE}g4&Xu+{ z5C)6Y7sh&F3p=NpHd+eJn+EhbL{=YSLy=`^Iz|U5d1$q{edauv?53#%&{SD~{8pgV zSdfuC&B4WQp$?cMAvt|BJH$OPUUzQ^*LX%vVp_|dDJoGqN>NJKc@3QwGp`A zW_TT%_pGCMHgZn_vK!$iWDX*&1Q>oPo(N}$`ck~mLc&Uk{a3Jy<$7_dOVX9HN_oyL zf&9D_1)9aeBwWBS~Y8wY(M6?(-RC8gPyyPWL-UqycUsbQ** zRE~-HK#fMc+B|C8tG|2^&H-}5&}L%1{tFe90cFB|v`v6Te(oA@d365NvqphAiET&Tc=B%#QbWz8?O zm?!x(r3Sei$0W_|SaNXpFIh>t&RVU|#q)bf0=HOT#KR^K8?3t1-GR0{Us6I{oZ`*g z*x5{C_3B&siAbFax6}yD_TYF1en`p8N(3V`GlPBb&GP3dQ>cGUG0c&*9QVvOghOF7 zv~=F+TJho`DE_vrE&Lr5!4nb=UJoOBPo;{m^&m1ThZo8%tx4xcAq>}JF#yRirO>IAO?TmmTpqmnQE?*$67;3;bfRV-3>??Er6Lj{OFLC{@fnyeFk z}ddnv) z@lq-qLbf?P=y<`%%6C_ODqDIKlWglL#IbAtSQNjbTOeOE(@ZL&;9qI;L>lh5c|>Fq zEG{h<8F-U5F&4ZXjPvUdUXF4_CPChVnWTKn6MmM$XOwnIKBeahO8c zOR<}dY4DhbtP*#h^)()w6#T$D|1MD-xY=83puC`dZoa7oD8LZjQ-P*_t^5G^e>8oC zUz6Ye_BJ-UOG03PNH-`bF+f@==|(_Gr91A?T>>IVjFM)60)ljh(o!Ogq;zk2B zsUvqr=p%r%!~FKFZEckh8{WLCt{mu-Egc#M&U|>vIX} zWeoWF(f6ffOwC$BEd)gbS1;<^p8ocUcQ|i#7SQnRXhbFcr5dU$e8B392&7^?l{b{q zj8+}I9|62@EPU`gwD}vGPBP0fBb`xn%SO8yo{jqV9mer_Uz%FB=l@Klr+(fwUHz6Y z@NRE)<6KJ%DA8{*Anl!c>C~nJ@sM#Bus>uw)i~MAbBS+?`tm;4$rTm)XFu^W)v9z% z(8h%QV8H#&EHr`Ll2CbP;qd~IQ3_69=C#B*kQxHmEQH$GAhd1#$PkGNB-~GR&|?@9lY5w_y#&MD-mVa017S0^ZjBjiYWRhWH8=WNku=exjoW z8oJ4_9WIn!FmJ*M)~;ABY6j)7FAezK_<8T^ni+gM|5dcVasDDOYiN;|)LfNo9(!tz zWdOE45B7jl^AqQGW>Cy43%QS1y(cX3I@4`qC7U$utZ_^VNrWMxa&nUs=TXwR{SOen zLPyj`0@|MeQHG)_pg>zrCV`c@&m%BS32CyJuw%EccvpKPZx5U$aH*pM8M#1=tnswE z$A2l}N#yOD?&PGEA9&*2p>>-Ot0xYB0FY`6kxLBT&IW@33AY5SH`f{LWcNmp#Ngq~ ze!)=8)T%=X#TE9g$PaS6i^C@dzgipI-_i8TJRPC9+CA1ec+fFdhfaWc_bco9Rk-%E zs9*hdr595gPx;XHy3r}xx$jy#cA>)WExs6?eZRo^Vevzw-f4opYtWhpVq|0N1JHJr z6UDSsuIQX6?SLQF0gq&nM^Hf$U-3!B-O;n8nzq3%5Em@yEdjM&((w;b)NLc|`YM7!TW3_DbVL%YYgrn$A86oQ@=uUhW#GZwy97~6vt1QU&wq1;$PGLwvo2BVeOe!i9DGF2mt9SvgVC@ zo5t_1J5!c;y}9%4_htUtZIq27KjZs`_ueDt{&6vwUBwL;6Sbdhj$eumlg62B$OMjD zn}mV0md*yljStNo4vrIyPW1dxl%#dEV1wx|`y`_UcuBdi{n7~^nLIxYahTz^N7`k< z+sEp{wZ==v1}OaVXhltcNx;W}Dd#NzFd%iXN#=O))PaM4cA8-9L;J#Naa1VSsITLW zdrO31BVUy3KhEqeKm9^}L9Jh^S@|~CpNO;FimX0+nnn43n3;)il6aj;_~VVs@dc%V z@ialFFNQ+(Ec?Oj5;!X1MGXttMdpU{b^eRo1kK%tHRd3hzZP$SBChkDRHBvf36x?` zuLRM;&Qi-gGi(2fx0_$g4G)oezfP7xC^(2gTkFr(6}HLkw<>{m%~k#s==m&HrYE?u zO*wgi$Z)_J{+Q%=2P2TXZAM(6J#2VXhwFD@xZ2MO+6a32^H0NQ-O2sb50Cwsk+Q{A zcA7lT1c=IxxA$d$c;%t%ZS?`X%IjG9^2A2E!f*k;{b{p1*wX{r^xB9WwL>N4B?(&# z2Nol!@7c?-7AqKTqh$BokFV#`Fbh-1m;)mm7n@E4X(x18L+}2x$PXMX z!)4_9^!Lw9yJ<)%g_t3y2EmCcj)>xoYX!T^CictA&rA%D4pwPiw-^vY95y@S1qm51 z9eT~qPDM_AW4rq3#>BXfJ0nS--IRgqW8`>#DB7ox@!I>DUw{AOy#?l4vc7#6uxzU( zC_mj;Sp%xmoj%8Fx)57fPO{h{_r6mVtGvPd-fPzeE_I)> z_DYtZf6`S>wOnNS9yVg~OkER~EuBk5G>xwmxq3Xf<9^WuOHaf&iJ*UOaIj zCgbLL7MRmwxK~)^w|{j0Oxl2~-C&!YMEv5b0@*3?WL_9gEb=@HI_;Ne2$)4b5R&1`RD{v%Q@;jVZ#b4J0I~~OI@?;8wkgZ z9qAvbY1$RvDYoBUotk!i8#gIYiyF~6qL)=%X!Cgxn38v=GCa@oOLxr8Y!N|{bT#k9 z7~Fr|HBc(i9=#2^NFiGIzLRwjf0R^y>g*8wD@W`YAr8c!6Op0jsZ64f&Lrk9Ocv}AgnF_H5aobWVipGmJN>FTzBYs{L>k{Bk*PXE6*f)p6 z{{4X8Q}a^BO{33oMnxoa_Y#8AlXa)7`dh_iSG>Yd%Er=Tul1pgp0?^0D&k5>WNIFR zD7)F1Vp-*J_}oF6m3b!&HVB;ND9c0!F?S0&6WR&o`CGF-cTcj3$Ml!khB>nm+jjqh z5(V-nK|d4)jhl^Go&XYsK7mFoh_gzPXrzs&{aErV{u->FkmG!ddi!_VQ)BjNhdDDm zWfXS&%LWR*%P-ykfV!@x~L3li$O6CnHZE7Lr-Ft{4R0_X0M zqOkjr5-~s2xhpaf7sQB$)KxLTr!(8rJP@(}FpGhk2*J}G z%yBCsDRHNK37EzYnO9Gs_n3FOrQOXN$uQnrsD11$>lVNwlJkp5f-cFA44=uN{FRhF zp4?q3_woB2|8yU3S*>~~S#4|YZGp+6!A(V1_@-f-a$+6vh$F8mu#T!oQ~&Yj`vJ&s zz49u{@%OeK@_q_kp6511Z5-8_w2k+)sakIJRX}Dw9RT{=0YAUpTf(<@&AT%Hb!yI% z0=)Q0o83EjILLzVH0O8U|0X1Z{C4`n1yiRNd>{~5`L}ov+oT1is43)mUm@B{VOZ6G zNUX#AH}0??UfGlQzS^$uS%+Ze)uw4b{iDBflWnsc70w+0$~aj5T*;77^cx}cx6tx; zJ09Yl1q%9%`#{LXi(tMmf-2U?X6Q+W7%PAEp-T2G)|Z{2QC@a?N>p`|S%Y^!`o~{Q zszzUhcX+1L5AEeGRnkSiFl4!*6cYnBL!GrALx2sfDP}- ze3~ZmTV}S82l2~Qutv-09kgNUY!btD;7(e7fMkp~x}YypacqpNNa*~53DucE!oKO{ zfHlfWBCs`}g_MN5yUc7qY$r0|^jhM!)qei!uU>x($>@Li5ySH8C!oJNn%v&ju%}YN zN-S7;0vEDUO5YQ!WAoq|0n@$aN0_ll^FK+Tik_0sm!8lm@Y=SenPO~VwQ3N>=E4pD zZ|gqd{oLAw^%P(y-nPpfjC^oX`2pd{R3pZ8R46+e>kGx2ZqbT*qjU^Up0te&-^=28 zTvPsSP_Ende0468O`t7z>P1CUvfelpR91FcO7pJM#PlplOpb)WF$N`Lhfp0~9qX5} z&mtiS8!PcyoP>o2P_evR;6Pi@TuaAdW)padB^OwKI4{v%NFVnJpv!xR=fLDze!rwgwG8i@`4<`HXRNNy88w*tYqj;( zvX2QyBgO>PJmc2f0o!}$F^d0$K_UdBiBy`QiCZb;SA?3#bB)QE$Sge30tbNMlxODb z>Iq1i`l!#}&9&kRQ*Eb1qd{;F_uiuik}{9 zCt=!V~>C5`&S@u{- z^^6%4Se^I80XRe5g^Y)x`_BOTy%!DlPUSacq<&lQ9m~U?TA9WvbKe0|4fO;fe*nX? z+430mj%Al1aM<6H84Sc%ES?7Orb7NW^?eIX7%JDDtcw^zV)Ph4ttBF#1fg%uwq|rb z=2~9gRafrQ5hMAQoEn}ctsa5exAO&K{eAeemZ@RW7o3l`#~N(~Kmd1|^1NFP5?Z`m zUM^_HFq6&$yRU9!dK*u50;-7pXv95?qh&NNzKm9xo>-9*Kh#)GR`ZK0)!mW$QJcUul*=l7n__c75WY}*ID4N?Dd;d0ab@hyvl8!i) zF|{R-l4tX1oL&==1I)gBC6xij4y`hKfBLOaDjGFSrmCv3Bbw6eM3~O#c2%{t{#sXe z1GJHG%V|fzNQ<_R6~ed3@{XCEoFGHl`gqixya!_IPR2mI>&K4^ zC3zu{-ezHuMxOh6(?b4qNagtW*Wg)S@cmrx_>dW@3#|7N)OA3w-w1R!Aa#Vz7Fn|J zQ+ogfErx5Mt+FRZ_FLcC?=BjDReOyX!Px{GVp{+QF8hJL+Y!A~j*YF5-f^1WWbelzi#k^M~7aQzaFy)S6+FZI4-r z*CHQ&OAlLLdiV%!{zi}rEpZ1TD_7RdqRqD~xyjzpz>?jQh|pp9#%D43ma1o0M~D8$ zTH}Duz2@qZ=Kw{;uGv0fRuoyd*LrV``KVSW@8{sfdAHOuOHvZquW`XMc6TGkyo6uE zO<6%zmA5j`QH4B+S$O^5mGat=g5;uGdiO;tdyXIXz&k7`_ib18-|?je$n!bjUFVD} zHcNAycP6n7rFwz_VkWuCosj3x3ZZ6yPjZ0wP9KfBg72FxSN&(m?{!n~CN_SQ?XGKsX*?G{R>~D`>GeKxANl0w);#?}0-+dz6x>j!+h~MCSJs%+ zN8*~UPcx|@)u%1;f;k|)2hWX`1NgC~|AFX2c?4IiYnTp*`_qD{e_4;elX)zL+6ww< zRIgXz;c@&rAML%i@N(<2h) zuFA}BYDh9exH>JYBc9~WC;C1T>qhZM{Nq@IN*)P6-2k59-&-ZR_c?a@JKeQmK$`=D zzwcFjTbbpzz!~GZ1Hd}~qA!m!kjKiHM8`)^HyH^Kj$6kE&o377ZoCZypU_W?+*kxE zODw-zhCCQCV!OxbW=R<6@KJ7Bu&AbS_mpg*?<)AcMS<*?bST2@Q?#;LjbX2R|hK$}Y{{>gbUnYxX=zX};bt0G{kq%($QrnHxp#1usi~ zX>6Ur{(mz8m}ok0_l5O`8~}Cr{DttFZZ-nYQ*#CL@~=lPlAbnv=Y|bG5rlqEoMvyF zBkIidUKiDT9inR*vXVJCgc4L0AnljkJ~KEm0!b6E>@~<6(R{b~;*`2s{NpA+BR%e% zwsiwa2WWCCtzK;&{m7b{#?`B3(Id{cS${I!cFL|DjJAcSnu9^V*W$!?1S=>;)x1dv@lGDA_BsH;d zx+2398ym$&4GTx%nzQ&Q-Tkh|zsFoa6h=x2U_z|76CG~HW${p^Z;>y+U%TkZZO`e- zmvdHvKasW%OHMWPu;a&Ikh-0&mGksg^B%K5Q3)RMK}lMnNs?yL&}pVJ0$Tog4Kl2N z3dnkoV_63)V*oS1-YRE>cN$BRpApYo_3yI{GDChpp)k72C8Y_EI5E9*z)Y&(sANW9 ztSmkb&(IaVFZlOpWjqZJB%B{#V|n?xL$Xpi{0ld8f0f@SWy`lww(kP9ed}vwmWj*7 zQG$dZu5J91_u3ctdqliC^#*);ch8@-Z(Dfjw=qqhwefV*)M3W26O6xMu6;Gbm?tCv z{vo|l-eOdhIljcqv)cLMc($iehfaSmI?N9U`W8{Zn!nB@VbtlhHR_j zq_b)m^Gj0P3%z5HT@+2!^Kr7zD~~TuJpDZ(i1E&eS_#h+WNqo~B6>lSr3ai#zre9M ze+4#umS6jqL$098) zzda^zL?iS`5BP%NuDpln0BS+cL!!e?%lrA=8U#U&Gm-dnNq_uh#QTh)CIQ+~;O&PV zH2C1PZ?6zu$2)bIGTkK~`(^ZvxZzC^dW@48HwRU<=DQ{svm2fVJM;egIw#$-9Lo;p zZ64*;{2{7|?BT|`oMj7EpRM3;#WNW#5;4~U(j~vvPT;>AB5(+$fl_5MkfP5>PW)ID zcdxwGv3=^d2SVn^jLjqLZ=XQ(?2sHOa3{yo)qYaH)0j*2)n^Zv-*Z=4Pi`naQe?!V z+d)yBl z8fG)p(f_1M25CVCxK*axtOc!o<}1vjfr-m(DNxD~mdG22^CI(6iM@v{NKYfs!wT`# zC46uDiP-XdO+&|*K^=q+=mHC*f^Jc{Cl%}nFN3L4O_FNkM#o-8R1adlqpI;NlQf;od56Nmzv zng86adWn+i(u6k8 z3*3DuUu8$`S_=3^5&xp9qO|OoIbZj4nrdzB|7u$O=&+`zn_sX6)*IzpC$gOIi4&Bj zQ?wB#YU%Hh1=6GTW3f+!ZZN&f&;5WsGrRSW0QX)WO0kC3RyOE?biuha=dWb^^{vIM z_EQ0TRS49-NWL7Wi~`m9=gB9wV^=P_^}Q@HT5Zut<@M9?h#Gi}KInBIB*Z%1r z+TbDf6I3IYk4WrIvG+f$sCb|StcITu;y3P0jV2bbSdGD zmV>w4j~{nYq*VSqRnF%U@{rr_v%@8q$>{`>$8iiVr!Iv5{#_Z(zXnQAVQ2go?w9*(A{&wQreOL(URE5c6?Pgl9`jCY?`z z(EW}2;xf!^49fFhC3n$Ee^Ii5sh8Dg=YNjt zkqf4o^V^b;rJS*6s>QpZn~@N(C!wy|X9wCkLcYOTNk+%rp~b=XS541z@gpbY4R3a@ zPTCGYP{=-rTs__6I#fT%LFOC!GWGqy2>{LvT&EU#5qrbZsJ4znGRzglS9GjUW!vj@C(nE7z~r|f7WZ7`H; z8>%(wJR!#AJ$}jud{o%Y_IBd0ag3d|yNyiK(O1-7xWdcbI@%Au?_0gkj}~WJMZzFL ztnh^pgGa4m3n>l%T#sJRV$-`D0IB>XD#z3vEOrF$iN_|RbWxy1YKB%a!K6CthVdiBt zs|)1f^ir$x=v1|D(W2lhKWEE@&c`}^ZC;dKjMyzrG{_+tOp6ck*h+7XWWlG*GnGm2 z_kZ0pxmrcD+UKnVkbxtvFOA`ovGMG{mtek3Z=I?*R^c ziHp(ipA+`L0UOdscs~0p2L}pg!7AjMe9*=>18{N#wR{6*$)mCeD#hb#Nx$F_KCs*- zhyNtal`Kd^_+-oQ4i3O#K}m=tcHEFM136Q?0~W_y)(v;Cn58H~tpXeC?o3j`^b=wR zu+~K~lp#6?8O$AsiMEgiG%+e8RaAiVo$adY|HA^jRK`@@vg6VZzTf zfvshTS{##QK-|{c$8tk_4EwJxb&$6*U8X`mZ#^|6s^2%GQQ($$fY>bA!hgG6AO z?JMk+nvo%qCYTS1fQA$)+T-xGZf5|^Htlr+&o2n2JNti!BVRGG^tU*((WKFUw@jsY z`addw!^8@1d*G>LK4R_p_r^tqdP~MVIzfJd&H9Ek6zI(ndFsr? zG3vU4PXz4%%@U z-Ic^VYL1 z(77m#Y>>I!fI?(xbS~54UiWwq4E_P##Om(0fe`SSCT^62W6J~@a!AXXrb+*;eWmz$ z@af{cXWvA7sn3YO3Yo@(OW`p47jw5_fi8cq`bCYay8p^bbjbCKTmhuDIqIu2>4jEH zlA>#LrujH*})h4l$|RnGZuXX(O|c?Mw#|4R0)?6|{)=?UXO|>&P4{ zv%>`Gy)L|Z-oIi!B;$IY*CC&k{9}Y^Jgw1_Z}PguY8_X9qE~Nf`f=Z zWn6^DVCbteU?grL%$s`is6h4T_H8T|zv;LnP#Z>bj? zEJ!9-RS-v!_ftn4K_M0rLY$&MOOD45se8U0L2`8g`??+Lha6%Tp@j0!c3TcSBWIy{ z6z?rB$#pO}hnnb@j4aZ$lQ%PV;#}7qPp8bqlY-6{$*fGjg?k5Go>qG92235U{yr-S z9FhE!<5+^d4O|z8yt%y6ePwO>;9nGS@9H@(0&e))zFl#+yV)QoP%|<7?1_k1D=dol zJp2(HuvEHAmx&TOj2@MhbK}`9~SNzT?al)L9`vef0jY6A~^0V8Ho&D(B!g;>bPf0 zp!}goxb@i;(XjMlS_pKT5)xInfts-+I=RgOdSM1H7{YI*8WZ3{Y^NayWWh}!ggZn{ zE@nj`1jK+#t%hs)8yaF8Q82H=|EYLd-Qn6YxgVM0Xz}h_mv4Ut%DT%7Zh!i{d?!E5 z<(uh8PVzZlds&^E0*dx#TYQ9^b9>75kpRxE;dhsTG&nh@flD?vw&acDOjg z>2X1ep=EPk6WM!xySK}lZ=NTLxEBwMQCN0c=aTfFimQwiY{E@; zL<97?je;#_$#Hsad}4BZlEY^nbnmqm$Jt@%VkvCO*Zcysk#!E3YSxU8@Sg zot}f3i;eKp2~Vye#LnSw!W+mx69zc-91-s@lLnj_i2!Sqr2_)<i!3B(3&ksxzjdR_2;l=sgS^EL5b$#H@)ztmfPF=GO;K0IF=4V!obkZyjvKeK_3JK9JDs>G^pn+I<_gO}X8 zZ}+XyOUZ{Li7iOw-dmqt7(O%2ZTf?d{~{kT=(b@>Ho|EBz*81LMm?3x_?ZUd$=*gR z;3Uz9_WxQ@C_|SCGFMG8eGdHDUVKAyND}j`z4^wBjeC~2b<#di%?bP1niO6TIQmnx7M7&JmbcS#`mT)&yi=#m;!qn!4|ybxrG_KH)cF- z%p>n2{v``IFjhMqEUTEy8-cYy&F~APC|hbn}J)Nwn4I4lw!!BjDutgQJMjKB>oXzMn|5v>%2RYg;{~|6;+a65aGBShyQkU(B>$q%Y*I zeZ}j=j3w)T>!anA65-yjRRpWc!J^PD|+5$!^D z1pMyaz6Fg)g&kjd(pH~oX#~qBfOWmg9Z(0ARC}f29Dm8yaZZ>K`EQKr`P6(-u z362>8TeEGU&DvEJ6QZoF4Y{H|R__|Q8Ju^{Pxl97le=Ami`&&{XnIGkjt_?O%la|K z2T@r$={mWd5LQb^i7H$+1g`Hf~!qJ_TzummHWAyNeNj zue!&>6H0|4+~?q>Hz3_f8*bkNkHD)p^wwI{##tj5HMVXBHDJcF8!V%VfNg@(RufzJ z!~aAOM?a+CuxBY1?XnTy@;G>kLC|0*-$7*16gCP8-!l8k;tJWUtDyT?R-Ldi7gd0Y z6J~AE=*=D;LjRS-FXLf!rB@U8RuB8m_xKE9u5J*-=s)DKh2__y^A#CPJBM4JBSQ~i zscnxIm4=6&tHT!`f42gZ6z;SSIzqN?E^+q;S3s!k7@IBV>(nC;h!#^8z398OQqQFL zyrStN*WAVk37-*JTk=jJxPCF(h0op`u@JO5qCAUVS$CS4{)g)B1K6H2nQN6D1Yt!< z1EwL9h^^C3dL}4*4v=)$a?=kiTj38H8qe0ULx zc%VDkr#TE!JVum?EycGu^ZytkO0Ymd`r6$I>1LCY8l*%*)g#_dkF|jHexS_#+{=d* zEx9ji-Q|7h&fueFrX<73NoGL8aV(B=F8Dw3}9=bmBG7`-U$0YR@WRG;R|>GAP=Fw^THf} zk``n#i{2teC|-DQ`kI?#KmVOq+~c*zlEjw~-5iOM3w$l$45D3q0QoLsaCGcc^TU-( zf+ep4u_A}B5pu+?5elaOfH(t}j9}8hTiY(PUyCD-r?kE&=uPjSt)rTBv$n6a=1L_V zG8av1)5U>>kpJ{eJ&xD&6*tMq9IzboTMaXQcmFQ(XsoS#ma25*?U#tUf0rfZ;ghm- zREz1%gkiE}X#X5ANQTzXSDRgDtiXvDm+?~kyLB1npzB>0!eDPBx5YO6dcdJNdCK?S zpYub5x_^hYpjGyn_tlz>($(arU3N|-3l_$S(3?A-4+j~+oXnnC%xz~}0>%n`u5ym) z)0ni!e_Mml6{`dYe}&2=4kU#HtjzQrk30*Ph%4puBjV$+Cm!TUV;k~_o2T^@Ml_yGYqleZ%d(rd6d55wfX0dhm4({W1a*pGauXlUU4wdTD`FLvQ;gS zg@89M-SOhMI~_ulc9P( z@p05K;$E48OYx0t^32JguEv0R_(yhUY$&_@ztEG+#j3zYxuQ~$LbG;p==||KwW3&W^r(iD6b;U*9wpUS$!`(m9>DY@Kh!ckpwBLEAZDPr}<@ zMM9j(ba8VoHH!#`jSfg(WGvz9D(%sh=Ig@Mwy?GGa0|u_ z!2?R1L*lag4D=Lt&ITIN4o3C4UCAb02Xvch?0=fq0ycU-wk43i#Z%~Uy7AbnMh~wC zapy-)S;YxukHli{BpPpe*H?S2zjf>WLuhS?-B01`i>DuIacxiAYu~fP^tQU} ziFBX~Del}EO%rIaa4U{V!6>q#Q|@j_NHCnNH$y0qb5Al7B}Uvojd=?n&k%CKE1WED zrb`44mHKt)k*dV$4`*oxiOj2}_37X2JjInV8uiO(mEC_%7Sx!QG$Poq=`W7c*8Dn? zq&@ZYjV~j)O*qlo(|Q)Q5ntbBk;vdPA`H(4JhhP^++VAgg9;yZr{~oV@V(q0isuwJ zC_K%v^4zw}j(T&iZ8Bh^~u#_qT{ThIwA{-*&t|S9*=?$jt*Y4 zm-2t`QOZB;5n>fM+&Y#jJKy$&2}QIF#tYNy+ZsCNDz8DEzjl2zbCfJRldTfz&npRA zijK@w2eXfm+lK)j0rrAoGD97;OxHTO~~? zQV}*%3qAeNMCX&SBBIUq-?DtHT!s2JbR_amE#EB}b^kjj@uf#yWRXQ zo9e7A6_?jw=Py3>)$MiD*C|#i%c#doQ*;k+xd$Jls*wX+zjhpqEF+%sD9vN*+<0Vd zs4i~qm#r}C+EDOl3oFAbhDPo$wcQH~ooS+up(p>}vh>7&q~PQQ4~mdF8rzD$8FvKc~k zlcZ!(#o&ln<@WD%{&Rvl*7suqqL|B@m}79%gDsq{$3*(;E%BewoQRw)d!zj3bgANrVAH*uWxEI{VfmDho357k2xU2 zcuNsEXwJe5`ib0hl1^#M;mG(|=@R38j>@F};+P?2H;C{FHvBng0@L7o)iyeaw}#^z za4p-cvpoX+*rr9v6zV3Q5r?0m&YFE*RyCvxfi&e=-;va$$P81^DnoSS3Y*M7?@ArtSK zE&j31&5!j@>wQx)^ajF%zx0wv3)zTaYr;#ixiM)Z*S72dV9N+j(1*Y!T;sH1ZDD#X z*2K9k=>zR+Tc=NB3?+m1TC{Ra;5*-H*+}65!k5|AeXuh`;3vkPB!X++AK4!=$Y@vc zKKPeq9WL30BN^|5IRH-b;SGI3ZS7?_pN$-#+3!>-q6vyPi7beNs)UvU~wb~>0-WYyfhJ*$AKr# zrA?_!e4Xbpq4I6Yf&6nyQBC_I77W^so=*Hi(ulUX;@%QM%iII={KRBQG-O#%9 z)+e?8?XoZhO$jYR0sm&q> zKXe|ctndW0|Ia{KOmUI;e#0}o*2Et7L-XH_;|eYKV4lmh{)vVeX}}+Zj;MpP6i`Nt znZV$=_fWL8?W`2!;;ouf43;8M# zn-f8{%4o}ynG350krFj@8bR2)m#pLAmzp*_4$4<~!y_j6my+z2rA)%6ZO^IsEUk*`jlb*Mw<4w8M;$ofbQkdt{|bk%ItWy@77NJS9pzEohiUf?a`mtOT^ z9cpZ;`v4rF-JNO6`q7t&KO(3VL_x)*$O^RS;h&@AkJ2?Sh#Y|*+$AD=dR|jUD$F$J zNHyYs3=T?5I>jHg#Np>13uGhYKT^r>bQMt@z(t!?SD*T@*xmwD!Z=K4Laq#;#6*$# z?(e?-p$XYG;}W#5tZa~vnLEPn6k=G`{8ZZ(lWHQpl|V7gII2mplwnat6}$H^Xowsau7QL!C9WbF2_Yx_GK72#2L7-6?G8^7_I zD2&U0c>uXQ^8@|zdo7Gb_{V}wi!GkaY~rm}1akb6qjBMG150!+FTgAv#~-BiG;Y)X zLbM*D4)9JARIEOODnGHP@2stcbHM&%Ktn`!zTecc0qf=Oa!+r>)h2Knw{!D#1FEq1 zwoj3azhbj`SU%5CXrlbYn@*f+S`wVeUMD>vr|ScGklZ$H+&8?tq?ebvHYMHUaz!GC ze$1q3X2aIsZu|5gSz?4I)tH!fUoPW^!BvY+f3a>Wm(8P1&;2)HEFS_X{s&j&CuAoh zHdxXCo}$u$1L_}%&Nx3t{ziad*3YGHZyHzB0+_qE&-?I5A)a(v5pwQ%x!9R@JcPrf zpe!kVnA|zDAR36oUnFBGYsS0J5q}G3vx%h-Ilxkim|Jd%{sdK%;=pth_;Bf1kcn4{ zIVAWRQEu5pg~eLpB-;NYfDktD96U<_u#xh4-S&9SrdKU-DmAXuHR97CE^Nz81Hvaw zrXf$?{B>y{#_}yvbl2NL3BTnw;06>;UE_qq)qgn-&q2H|aQ$vz8KJfD`@Y@WzrhFX z6t%$GbuW$c#UQPx8%t_u}W_4voN2($N_RH-Pr+4ExlL_PYXQlt0IeHX^ z0^1;5aQjuF_V%d`?<<{8t>8xpkPHw^R+RFq7{ndiS~vs zb$Rx=L}4;#3>GFn*^8Po5V|7&|2A<~nNJ3#X{K##xlZ|`&49N#<-gV|LmU`R{+6ba z<9o}PnJp2ZB(BoU3$~CE+Y6Uu$;ABp9~o~&nlBRTWEAq63p(T3%yM%>i~EzOm-v5^ zrtX2Und4$4Yf_(^?1D`X(T;I0vtvu#*W)9^t_PX5(0}Rxqa#uC9^L<91HmhhP!GNo zU4}e8@}B}=jA1}}68qbJq=Xl(bFUS8Gz%z=fMR-0({(1EJr~=B4+>SEb~;w33Qw&~ z^QYpfNG3f9ra@gu3Q}EhhbnK)m%P+Ro}XCA(cK9+s`ed$FKn-yI2)02i)SYqle^%wb=x-IT5 zk`DuTyQxmt?t|%fX2T!fS0^nhp;O#DdWm^^qGD}{`lA5R-sG+8-!YWnUz>V8k4)Ui zUndS_6ZF(_XR!!Xyhcu*gc4n?dG{%2ZtF z<3xzjC*B$uq7zWJ+LA2kNp9PcV%Gvu4S@~)EqYMQAdP>CWT$z=1Tjh<&-WwU??}r2 zB3Y@Q*NY(2nT9fxywoCm4HX9lO9_ppyL{VSx~+o=q;_rcsy}5?07(u6nhay@ia@ae zxJb<%3pL#@MVl!ic&ySRlQ8Z-nmEBe&(xE@t~i|}f5CMpr^`s1D$k%~X56FVp?=e@ zDU>7ibGSQ*kUQ{om>>;VeqgyX$skVfH+P{FZOfLM57#oQ@YMdWbb4j4!KF; zOCy(8ckLJdEgTDn7Gh7De>mgw__>hEXLKvS3Ap_Z6Lq8o1Xc>&4^mrHCq!mP*}Tb7 zEr)i~g3mSzH4y=jn7>=nND914PKXX3a@=@UtWL=(obdl~_Lfmme_#0M&|T7vfQ00b zBQ1?cC<;iYGz>`BhXzS80BNLDy1QGXL_%tY7OA0!ocsCy{`bDQYuz_@t$D+m;q=+( z+0V1j+3O}!2gR=-FE_fB4fB7pBcBAzaq8X5^PQa&a9KRQ6L8@B>XI*NHtg`=$NRo` zA4cQihGVyc_mKZK{{!`&UVWzA;@>02^uNwa=JS9&=0J9PgOB6?MUgD$q><4+3@<+V z)WtVK8oNJRH73j07~C$xumAe-<+eEY&~fn}ibGP!ynJ=>$H33_mcDFHuHkPjAOmUg zzAXFH{#e1H29L%pI|;ZMUH^doQrZ6oUK>C2m8od&W4uYmvG(HRv#Z4=zA@GJ_gSkX zfgGIQjYEXMN409f50u=YA#L~BAF(XlEU5*Ta43%36M9c#N{PaQy{zDl5B2%KX>VdJ zSo}K^p}csQ9Q}(4`ax^!75*>Ue8X|Us3TJBcAu6}bx*IbKLucYue1rg~br1+4@@1>{fYJ0sU z-rJO>i=#Ku7uL6E3z^ENPl|3wlkr5LsQNBH{H3$+lGy+2JT9DDi8^Lt(oT_2QDnuG z)@IsZ<7vlTz%l}(d*%#0r@&R#vX(;HMae&W^g^vT^AtaRyRlvBfbR1yhRfq+eLi^@ zXUjX4n!gH~|I!w=e%#(fpDWUk`B|G6-xBjtofE4nCWAxZXr({Ufc+}fUeU3`J|h3W zc~7J1A0*)lh@6@nPzbf`^ZO$IpwEz@-XJy8!31;X#gt}3)&Usw=-lJI#u^ZV@Z)|b zw*77#6LvT>eOr#F@42fxB{_2`vb%nRiMz6$ zfcARq(Evn;?*&~ozW%~SVWdzyWvZ+ngTCs1Jp5rqCF>*=Wy?|h-m?N#!g4q^ zv6G*|3Vq^+@x2qGxgR$&Wn1{@S{%j7ZszJsN##E=hkEK=a`|5+QuTRoK&a94zV8*s z`*ol4kkV~E$@4#{%?DFuxPiB!+WkrpB$af|s2{~Ud;s&5Cpel%tI?tVQpn z%F=w-+^8$R164opnY?#c!VM2v$)i7K@&32z?ZdZEE?>y2O%B_KU`6Eycaxm?>q7XC zumTox0Md>WlnPVU_*NU%U%LZ;3uX8FR8^`o$K2)I1}TR}3YSCa zPw9N0+TU%hf}iy8(-?zaDo{L`k|tnZ)P5BfA99@hwmq%N_=zHna?=aq=iglScuv5N z^*<8S>QaeYX;;N9oylRUDd-h}GDq>aByWZ%P{W1^Dj3wYlVcBI){r1g#@Szgb=41M zi<=uC`a!hWE)TtXG@&#EeOL0`@%iJ;h$a22p?JcscjFgT^n~F`J)&=PAa_B3poHA* z-_w*DD<=7ovRL1L5CxCnP0DBd5!JQ=bqMl)lS(A(O+o#cTpy&Lo470 z3^u3dS~dc-pDTiwj~_W+E2bw`wYt+*wu;=Kl^!;4$fdK&PIPYGZp%|xUMpI@k?*OC zg++q1`{g~WFgUu{;m80Lrr!VfRt{t3xc}Mv|Egp8Pe%k-B;^|9zaJ@8M^O^|&lpBL zh=M`>`!z_P^jQ&NOiv0q&8{33g3G2x#yU#t25(5M9_$j^tZfM3+G48hkiHrA} z@%q7dUEBy>;^Hu0S>+~b+hT-L7ecv>wI`Eskk3y2epc(SoK8+bmxm*nL?%-bV0=G0 z#~{B!?X_4o#Xazo7{eb^Nb2-Zx5psnfAfTjn%r0YdtqB%*;v!M5K+rC==ijhPRjumL<+rUxn4Ga#y#CO_67BJh9OqM=H|e;Ndxoi&{|IaJyu z{5++}L$_WN9THc4mkUg~I@d2UdD<0xA&u<8^*|)UeH8{&pWvsE|8F56!>QDW1q8@k z-F&KRW+O&8iwvTt<~elowvB3^3#&{X@To3X$!WpSzEK~hao0W1=SNMS#NnWn{E4hE zHS{$cXyR^U4gGz}CFn(? zNS#kuE@wZMKcpV(#t70y@J`{_Bv(cX;);Wo9tNKFoG6un7q9;G-s!TN3}qySug>>A zku_H;tC-s7`^wihazt2#NQ5h7D4f^k%Kul+jZl~Y1PIuR7KG4*0T7gU7(07_5O$AS zb?ZVmu;NbdQs!1PO-N5aA>9EO=|3r0eCgN}?)e@$qld$i$D_>F&KrjVpP0u&VTEBR z!t^b+R4B%Y(0LG^lyob^UH{=Sq2+iAfIoIaAs zk&UBHlTTi%eSC&-oJuNKOu9=N0>%vIV^#U}*brmeR7PGJJF!x7$3!w4<&)wVM4E2>+;u3+RzN!O8-ga$b`b!bGLi#Sw89RB4MMXhHt`1 zI>aa}e2-MaAaRJX#2|9#^kDAG$1HJh)k-ky#xyTFeL=Y7PsLe_NB>NqO&VhSDIaR} z$a+;bGOazq*4C z%k!6=S8rG@4AYZsqjfb3sZ75Pb83~q9_7HkEkBDH*>HlBFp;rt#9!a?%o=7*!fn() z)C_R9cL$B=0oGx6L+$Ogt;hyrK9LbI+7HsFVUb|f zGUcr1e_>CtyK8PnN;3$ow@KbS!5T|bFRh?d!=IKISS+L(pP(ky_|r>?{D>{HPk0-O zv+E*MURiJD2CkyjwY7sfoFrpwdo|lk9n`YrINX=#(OkfN@@`fY(%EGdmWMsI$}Z6z z9a0v1Rh(L!W~2vF$L#b0mu zSkS2fp)NMn%`?eU}3qgU1WA2kd#>%MMOuG)ugJ z%M9!x%`q_N)zhC#CbdQ`(H2I9f5aG)2hm3}l%=K9K=E%(7wNulR7HiRli3n6wp*R&God2%)+7Y50~yf3KiAA z=HjyOH9QFXLtujg(NA$&h)o1s-5XKI`6)1Gqz$r_&^;1nXl!Z(lke#E1E|~~v0#y5 z09#mB?1xGnXO=3+&Anu$W>S9=WR+wJt&@FENdBMSXk_Hea&KAKBWTn2GXcEQD=HJA z$hlaY_CQIR%~ob*{^+DL{FQ)~2=&6Z2_#lt+Oe+ok`c28!6*Af;}ga22tm{3vNV9o z^uyZ2hP9Qc$y+5Jeo> zidao~Lbh>lUYww%!Y+{W`=iPRkHF;0|59#lncUltT_A*i zm)h%_Nu)G5dRGD5f~T^|H2lEcLH*IO72b!U@ScDW-GK#@sGmx#iq zdh@66X$q&je4OHN^l_MgaepB4YHFJojxkDaiII;Mz%zq0YL@DlnaSlZx`o@>h%yS4pUT2ufAeQ>2S2!e+nw+WAL&P;_6cRA=9k^MM%{DC zhQ&CvXwE4XAcErrqto{}$d$<257~EXCykKaI4dh-UUW=EW<0f!wkLx#+$h>p^be_T%;WDeZQ65^S@QzD6g(0LxZ>M2^L$j+=+p?0E z%09$4>`2qvuPKSIR(qOt~w5^H04!Y--rXr6W>(H^2+KA1ec=3?8%T_jS%g zR~|EDJf4dQutu_+O8%b4uZHU`IDAFCk&GIU3%0LN9Uu1I$cTe*>bs^YN zE<9T@l*H0FGQS26 z(v)Zq`twg;aP<>|t^v02ndQ)SVJ@aFb4Wx$45HIq`L=Zd!XHNQtgB3^8a8RNTBkRg zKh-->-Fg4#^Mt8k&QXa*sX*OUX+zDDxr=Q*gM{@DL_o5hhGU~(zD{VPE2wAV`u_G<7^sVliQ)^*!EWX)jPKUGDD*rSEW$(&8)*-+fm?$6HFhw^V4RN=`Yv6LGD` zVvuIT+4rTsZZii#$vb=e4{uwZbMOe+0k}wUY^surB2@;Ka9wJGAo;r(4z`YCbv&A)mGpGS6*iNVD3 z9?N5I(Ij`(knmD+`&$^lazYkfNW+7J8=##eFsaUH<*4O-1@iO7Nvd~GE7^_!ZN~7z zb*i!_8%gUn(ui{I~8QuGSn_`4= z-A;C#8i*ok(G24#jQ$B)2j*nDbJ-=Y$((;Mj4*%+cQcI22OPB&fFSCoP6!0szX-VJ z?LKpn^1K}!Y|Y!7`<2171^lQF%6tU<47MSYEONgB-M z=ZWGVx7GmFSEWoDUMrw#zbJD1DUS{ho#~<*w^saWL^2f}L4Fi1EYdS87tbRs6dSjx#%}WPyIdO zxz-t^TTktMQk8VuK|VWcQ}nrKgE*$SOr94e!&W#oT-`9E$}*ri9pr^uQt6UEWO;3`^)4dW(!pplJ{lX=9@9=^b4-W}oq2#lf%vpm; z9rW`|POFgqMCLG{uX6RvI#=^)Yqaa+L=PmciHrqx|_F@-^2uMznBjp|Kh?_LvyUR`2qXv{H3`wH}~SP;lAhHz_vPsv7h zl$@bJ-IuFg7C$lp8j9YraT;71Cy{>SMXjOX>&~0Mm;^v12k9+YEf=M(eshpR`eea1 z1yltDQ* zU~nm<=koDNDbb404p*eGZn%~ZhPa>U=x;+4ErT1A3b~fb3fjrmK*#ApMDp|YQ1R|v zX)uA`kddrFg<%vp;Ehdznx$0Z1X~se%O>W6>4s*8WYDL>@x)~~_m%a($njz6$jLLU z?POdXTLtav-C8KU-w-81cOlV#NR;^>BOxBL3vIi5kH8c%yGkl>L_uR#UwL~HC;yz= zGPLqfXz86pSm3^Qx;3qEMefy!BCZq?V95Y+<=q1_KMivNJydfXXS5~8nR=w??Ff3O zw7S9Y?}cQhP~`M9mBp=GyWx{YBq2A|xCq-g6__!sr|v^*MZ(3(zHN{#?GW#Y{pXK{ z^9#?>|8`ZfbA-m_X$ZR4=itwd{3KHVA|&LD1|yNZN?;Zr_>9|?8KR(Uk=F$rR@sq( z-l@^jxYjilCuMz{Kc+)LYSz#*@T&efX6`Y6{`3q;hj445ra?L+huf$m!Bi-zV_Dd@ zF-WtNX?vUQoXwQAHHUCNcK{CSrBJjG{7BVC;aCA;RF}9yVf^irTfjw%R%V&B>-KiF z7ljptOE|Qk7*+z{D31ymBpt+n(JiBe6 zxT*|SU+TZJpx@nv@@U13*g+33+^mJ*zG?qi65}M-WRXTe9AKe>A!%zZk-{R7AdKhi z7VB)WUm>`lzU2YS)yQCJb2F)NERT%f_VptH9S zX$?|jc|dFOs%U20riaf1We>c`e|Im?|2RgMvM-&!RJW}3fZlCIO+>nUQ6^DSLvoHcy#mkjo+*Pfox0T8Gs4xKC?a@WlNabLd)uBFVO z(>{a*<2pROGXbq#^C(A4x?)$^qVSft{hpRTC2+OuVza1qEg0Gi}Ox%Ekq%r)pzpo=L5140Lp>^w2lZTC- zaAe}XM1?z-cXBsPtcQkvYR|YK&R9v1-o-ycRWi_?RM)JizAw_=CWLY2T04{_O!?~; zD-~9EFs_d+9(^z(GIJ)#CvYGPO$hwvLY6KM8$44t>tP&vxv_J%&GXduoyN>{bJzPY zwNOBD*BR$2^6vZ#8LED2M-~0I&nG+gCw;h6MRj8(YRDr69w;?1Rb#N4@P*WL5qvn7 z!6~N2w4DuGYt1fr{cCtfjCg)iSF4EqWSOj#O&U^YgZOGY`(s z!s%S1&6+i>bOqDS_doZ&1@VA;7gjXsb|g?bR%~oSpwu(7-=%SzdrPs(dAa+1%B}h1 z2_zx!Adg^sSR0#cNl%L-d>uP`Mh-(MOg%l==L02lPu5c~i5$t)-1Nt0I|S(rci9gj-?h7?$uRE|70M_r)1AOmy;^NDfP`>6#lD45XfR ziWw32!>#?v`MG3%ao0wo{cg~NMAb9Oml>uIz}N6G%a(r;@@*TVsP6#`Cq_`;Fs}Y% zI+j}EZau7NPke*tP~;@lYYxyzt&*ZGo!KyK*^$S2evO*h6fVx_Qg>qyjsi?B%YLaZMF-^p%^Gem-1l}7U3aKp)^J0CUc`+vb182| znPm0!lzw0Y0th(eJ{2|Rx|e<9ZIg6RF~vG@mZ2RQoyRgkuzR-3{79_9N4y{2s=aT{+mXO%86@n5&t(VPMHp5}R5$$bDh?OG=Mv(q{n^V9xx9bb ziv8=ijeT+WDy+qj{0dtAf*ewFj)}WczkCD31{UP@ZCRVYp0;l_9FP!?TVYd}UXLSx zol&ubSG^5xo^%t9e)F*8>xExVH<^}6?3?GfDG9f?Y^^!M>V20>H4S7*9$m6Mf5|(o zD)2zz1myljn=|s4v7~01n^WeTgb; zB`2c7_9!Gn@&EIqB|O0QEJuxK?7|eYCg#rrnF?z@RCTy;zwMct!qwpAQhHPpQaY`a zX|r0=DK8;*NC<)Y`n7^K-8wUqmk|$`>+#QCL*_>wu}H~}g@ty7PuU%BtYCh@Ags-Q zZ>8ih0FJ}WwtOd+Lt<`xBY^9$VTk1P#7i&mPdqDze@-=mZ_+$Rn`+2Aba&q-8S1CJ zvA$tah?vHwlp{aCkooHyxZ-a{R!n;(K!>>5*|3;Cb#nF$RT#+XyI(Smy9+Qwuk@;u zQ2f201ha9EL2qr*RHtZ~bRBPk5M)2xjS3gtCe)rw;?FO|9bJu0|G*YZ!a=z-i=4L( z9^h1}yyR{UtspWB zD0HU*@cpV*lY~ z40=D6?Vk_YrsHKK&NS@m8YIks*Kze6^(VnrD@1GW&n6L4AZrPHp7&B^7lf4mIr)!; z63^H?GpGoD_I%kEMzDuhDbn{8Ih^T3dpC|GEd21O@uCBN#xUyF(8To(+7(nUUwpYu>>Na8g%PpEEWQrXq? z$2JOM!Lqg4a|I`4F{XwNyt_b|td#c3k*vJRZ|es(U-9G)=#A(_I^UGDhDpMTn-B$T z;_X=Ux9qd9PBIP0YXLS5f_xnMO9L8nb%0$r(;r%5C~MYz8@t>y6LZI%#b*UUr6;%S2DALXLhc2e&t6UZiVd6d&VT7IJLr(3|D}= zMP)IQ^*@VpdgvCF-ovon{#meh+;GSqH*uHA|KEkH#5lYfF=!`dNoVz@5OjQ}fDdre zyb7FroBVE~}#`k8$K| zXM9-$gC;Y_;|{)1()0(fdZu^Q{3}73m}Rd5d26;YkK=U zO$i~R{f--7V~84*VXzgT|`R>ds$1cFDGmY4ZU;DdH>dp*IfaT38k= zzJ=y$=(uXF;&Z;rcxns&>vE1%?cUC7TpnuiE@36-nwFXF-MKyuKxD#;PKj9;(NU?; zj*m)#<6Bv*GxRY6#YS)^OaR$<6*BRhaGY6IJ*42v%jWWdM_Wb@&7w_DF8ocFA#(*p z>8p(E&KeH12P?BVSN@P8S+tQ{AH@%9C6M^P0NNr8oAm0EboqHDmt582xJW9Nm`=&hB=7 z$er{CcMpTGoB7aud7oODL&gO9MA8+#jmT$vb5}DNz3!O3c1)NPgLjL6MwEhq%u%5} z%JR_B07kG;=rH>{hp0spS zlw}WNU%+2RQ@HwHf!}3?(yJ_K);p33mxVLnlh$n-%`LiE8e4NUoJ}IlSp^)@{RaeC0$RDg!|Ln0!;JPcqY?i-w9u-W#MR@^dDL&^kI^{iD;SuAkG@&TK9jBwgJJ|SU908d`E`oaoLIZipNV|&=ghzv-K ziV)`mRBsmoX2!b0xbBUA=$VfcFlrxI{yO^#My^aPY@-k%?(YZYp@W~DDws7Y_c6{c zuF;x#cSerZi4MX0C#An`&j%AA^N`tTr5yV=ETHo?=zS$v_AY`z8OSurX0dndXA-%P zLfHWE>;Mxe z!D~5Je)%#fMhpnSM=H8xBf39fE1Ye=Dla;l?jQGM?kivbdiJ3@Ldkk!{hm?j1kCYoy<%458Y_D!&jM=CBIk1Cfb`zGBV|lqD#1MYA>X z$~C0dUK%5m-NVaOs4sC$VIAz~dKhAbb8vY2;6NAfK=j(%el7d*eD622_4Q_Js;QY$o zM1x1Bb9sd%G`AE$v7rPt!$2>=&V20F2gbRqgBy8ZV`KIb9|Bj09;NVS*GTL+q}C+2 z0n&F-q~k<;Uoue+tJ!6G&k!fKOvxT_gD)ldaWgYKwWqIwZwYfbzDkI~reX7o-HJE+ zSVfaq}#2<9Kn@5Ve=vb@|8d}!HTyle=sv0%}+ff22k zx;IG_D~Ns(peA`{rp=1YoZKZ`I#$KIE&YsVGvldXYfhSrKnSj2I}VC5yCh_}KUn-S#zIS(t0^7zWveUtE$bVKSE4SMSu*S6PykS^^VJ1Yp0uBDdhS!OXxLGCe9n zcbtmwnU_folE_k{QuLPIHcYk+AX)+W`8EGe55Es!L_vx{lBFYo6}9lMG6D2-_^w*l zHyV}1wr?rYHOBvfd}^>9P7lS8w>h9iqxW3!1NifGl_z`cvlV)my`h54pw)U67~;)M z`CARt-YV4Q=W&yD$B(iQK*wMcBF7dMoRQYHDjHq0V|Io6q2H%p4xcU!m!U@uV_6VN zqw@`u#ezUxBL*_&@pHRys>##MFLBrg(bS<~E+if0n;xXwa-C5h9(VHN!B8BdYq)0}x}{NABQkW5jc=;FD$Mo2{l;|Jy51)vzB7W={(WNu85r z3ZYc3%dvXHB1;!^XE#8?mEcVZye=2OCOTd!GDnG(18bME5EWQ%Uk{f#hVp>Ta?>aU z)Q1~gEY``Eu7jJljz(iFq+=vgsuqQf&G^7@gL}4b46L)wkO@`fM*~K@F!>yXZ*Sj& zTNCn_ahT(6;*GYf}5~(jN1WXgJ#K4{SzkJX5Ei^&TL&zLCNGT4o5Q; z6IoKy8KH{{eib4csTg{K4_uBSr#9YrMDz^MOtGY@rD4g$PX;4*!boQDP|&bEeMLNs zu-U1_9Ljkq`4$l)en;Qjr4^({wGDs6MB{roGi!fqF>qh+ zT(@3byTJ&MQciveSJLG~4mZ5bS#-T>IM4(3)*tpz%dMVndq0J|H<<6cH(29Z=6qFG zSX1sA)qjHh{NB`Ib%-K#BY-y5rqY^*;(|h=&dYO3%u$xK|7~DBe2^X97e2U7lQejS zIZS%?*PHEp(e}QA&Bs;@)7kZwV)S)HSB1yR?TP6y@jL#57^UX8{7ZaxIh4<~4QMztoQ5YfK62}f-_=FC)(ZNe&-k5rl?usTi_F+sVT9RSicb< z*MHar>mAWLE{Y5B0qMfY>^>~bdkLW!Yn7sCw08$Zx>S{HYzRf=dFbNsB63T$hM`;J z=H$fG0+{lQi9O8f`qt-%y<PNs1|OtkH6ELPUfoXAl~$LEC3Y$M2KSQbIqa0f{X!%) z%k?!N@Ea}(K?M~Ja6L}ofL>1b0Ao%{VTxTq%Svpo)jN*dQfiKxzkck7rl%va5cB4^ zy%foml+}g1e=-#IOZ`|J4ZVaH(k6bXR;y32*jHD7ZQx65?>NA9mCThbiMMfo3q82O z>~}b1EgGg(hIrs^y|DWhQTsqUdD>w-3L}j<Je8fE-sc+yei(l3XHkL#b+H@Pyli|x z8)pO2T$&p&G<{gDL^<!WPn+8?@-aa;9B9$r+M<c<`8dUg9Lig0mp}OB{1}>m?@F3n z=qSPBn+abyI7&H8@jnj+qg`%#I|DvHRTlIKVBjJpt8~$LPhmmx7Wl#jnTWG&_M;$b z6Z!H?mD>CoSXNHd3?CpOaKkp(kg5Fcp`d#Tk0K;&u(=!e8{Teb1gY*~V{a}kh`^|5 z?l5&(!|ECH&Y5pEe-bORy?y0NlaX!OG1jank{eA;4mbOU8tuW7-6v8;RQ7Ap#=7;N zG+i2g>4vG!39xeTqGh&@B)M6xUq9ZazPF6k9DRBXh&(*5*78nu4v2m+Vd+zTTpG6y z`3d^}9OI_h@*`YG1Z6?K+dnj#A-S-cmAOI$qb@jl^X*=sC@K12NSvHP+f4E6uR~M+ zKd{x``h3PT3Gp1K{^wpwZQ@DZBCgnvttPGG>|gyIb$?}>`ljNOn({qnEO_ejwMf5d zze9XD;2CtMsQx15TldWy{6@T_`X4i4n8+gkG#{>U16=>q&r;nv8C`yfnp8ud7*`~` z9x=1l;3)Cm_89V2kagWkZIo)1Zk#BbwX$lxmb8`U!}}DkQ)X}dJ7Y*M<?`CEG&?uI z)b_?9ar-asaFr<bJ7WSQn+<m$G^NXV0uwt-1#~3o*BB4kPKyp7v?jqIm>*v8I9122 zr<87CPkydjay*Rkw2zS{ntPVoNjmfl9g5b%nL4}<zUbrMcTage%E?~P{m|COIPHsJ zol}FA1RH9-&^Gj{MWw3gQFO?O7#jg>eDlJIl7V<&h8CMg3{RgRvs*HTi{t-}B>-Mv z5&~|@w-qbRP_fk+RT&eUZy;YNIWlkY?3(11>e*sQ0x?jp4?~{Aq`zdYDA9QgLoVF3 zs0V9*T`d9(yjg~nvqtHa7N0%kNjKVyDp<Wtz{*J;a`0oOi5Kp$$hb<YkywYtdkyq9 z;v^?ugApjGcDK%5gg6_)-f!V94A3|EZlYpbkXINxpHc;tfsPKU%f+az1k!TnF`von zji-D|eHp1?9ibX5h%_xq52Xr45%T|V>6Z%)4%PJ}VDj-tm^6=V92*whS4t*ZVR_=X zoIByCm_503=D1(k81_(QxP@+vHP%GujrY>#AtDELJR=I4=8P+AZWrbl;JvUZ?b{#| zcP=&SA!rIh#e{%92M`fOJYvPd1ckEA#UYG3-ALc<nyLK4mTtb%x%zh_zZOcs+JFCT z&`nhwo!ZiiUY>UokD^vLW0o6*+INC00ZN8kd3MxjmBYt}_Z$BG+y3q$P?4rm!FGJL z%!oO;u(jx7T+?toTat?C2J$)kDf{%Re!tcEh@-D$QX2X;pgmHv#=^&HB6daE?ymZj z=29?)vb0F6SJ+>9O7nYhl6S;SG+NgG-QfZMdy{w-c&NgKE!$xp=FV*ve|XcimylW6 z9@B!u@i1rn<6)<wH4ID|+Q7MKCSIxD#=3S*9!u~tb1c~K<0Vyu5>UwLh~+4>Q~T0< zNcB%4LAUnW;fkV4;;GmZ9nzyWSFFgxINM)l^Nel^b)KEJ+!PqvBaMUH`|5I)$_V7m zeDeatgHnUL@+W+u#?2>ygvQF6FcSSX7y$<B{aW9dHux^7Q=B<0R+{wKMWu;Z?C-0k zmWIALOQ~-k>s;<MB7klsTmncpgD1A(V;hz*d2Vc!*w)d^$%S#ulKb#X*#i}Bp?8ml zPu7pFufl@*nIE3Av<$6<raQ!aV3O{>i7Oi+EoGdm5v4Ni>cy*%%V{hHw+4}|hmv># zz96fjXm*Zs;`qr7ecMupL5~l$t;MV^L#8Gb1Y-O92fp=#HGnxY`hcCPYa2sChd5ER zmBK@P*B-Wed{|dOntBx`^M$=ydi#jFh>gSjp;h1=n`Z--x+XXH$NjPSM%s~T0sBdk z%qyuJXEw!y<I^4fhRhO^QQwl$*K)JjxlG?bF#(t7OxHmJf<j@cPrg_X*mj#tscA=n zfZe8j{om#Uz-^TNt@(9a*GU$1`oVBo0s7|_5$U_$)_{P7BD#1e08kLE4+;GZ8l16< znT~h+HY^mF5C<{aD3{-CW7o@g8Y^L1He-TNPYi#oSTy%?Np5L%w<_xeC>D8rP~|43 z++V3P<o4_ECCHC|F`}3h5RA3M68CVDI$aG0;fQeo8gSU9(_sy4OpLSCP4Wg@<Nx{u zSTH0;+7F7zij~xSAT${dBu;{Ix6&<T+Jk-6JFNNA=Q>Z_<Q`kWTw)y+C+I1BTP|L? zl`Ts2O<KL8I@ov9!uq)p2s{W~UD+;Ix3f<rSK1=6WKBTJP=&0N-dhvZ-el>QyCZ$e zy_6gP1TW}68MFVL{$R_N6toWLyCG_2@sgSPnx+8~Q?3thxAtBb@V`WlO1H7>(Hb@O z>D)8P8jdVCltejKfRTp%@Gj7PNpjP)5s!uR*^pjj?EkqGqE09yqq<5$5BSp$F%2bc z$*K28|A40Gu|K1isPmTW8sXk3&692SUoHVw!o2u{IMb7$lZUb1GV#o@I-R#AS{=Cq z%5!52EMaobpPun;9ZA(*TN<t+*gt1uI?Li)o({8wr9iV*=9RPCT(&VGWc=twSq$bn zZngbKoWt16LDsu6C!D9Ll~J)quvi_{Z<}fmVH>c2Ntdgo)b*K@t}+57ZSLaMgn+|- z*thico(`ToL|N*D1N|Lm*^4?0Q~3oPJ9?@3fE)R=xf9HN{NXPcvbFmDibomyCUw@2 zyGp~&5P7M)#~L^x&;jx5rZTfGHQf1_IPqGQ_UqNN%Oe6oUw1Xmw`>q&rx~<A%kjFN z!`>l%OF+k<znwUf{k_J~!7RsiBH-f>+PlrHdsT?jfNS@99|P>UF%z>Yp4!MDsuQ&R z`3(>cJ&f(^AHy*9!(DAf(4~A3#rudIh$ra~y~Q+16~vQpRtOg8X{?`3Fv2muAz$12 zjuF4%xDjfL++Tz$-g(E@^6u@;r<OH{R}MNd{8A8S*_)Y|#{TmGQts*pG<y+rtJD3| z=r`?lh>qkfcOcm30*{{5XxVWwD7Ps}vHzv=)k*Ew&5-zd-@zGt1`bY*ta37|#Lv6d z=IQ&a$=IRjnz6PI!WDEh#IGC!X&r^$_fEeZjSOlF4(-w{s1A7hoYqry?_pt|Kv&=4 zvBkDLx%4>Zl+H`)Xfh55_@$bi8sITgP7A*k{51$7k2N~*$;#&(vLv#FcGihEdNh6R zr~d-;6{BWj5TVS+>xI<WOCQzyR(`~v`5*&grVVsJq`g>G<#`(zP$<FdIvSt7X8iJ@ zT`{>5Bbfb~=>+|1)yl!zfhO-WwLW&|YlWmM@-+#&>x2si!?Jfkv!;mYi2^NUEaeWd zfA`i3wYA*?iBEBAfG8pQE>=8Qw{5SUBTo&-aL|hKmqO(2vJ7zPoBsNZ_`Q-wRvi+R zZ)Dz(*IpfZZxNkm5NNK}!>P||Vx4$*I6E|8+&wP4=^%E|Ux5Rw%*3)fM{4oM51lD& z*?@@O@=GT3j1Lk3(ch_lzZ!E$ZDkYiZ%$8$T236544JB#>ZQD8?iUvHb;#;;2G8dk zKlLzC;`gbHrP_?uDe8HZU}dkj;A)*{y1%5%N$A;zpQgn=vfh}=Hy~7Gid4KrN8BCU zIMkh~8lU+Xd*`~9kf9ijrtzD#Zr;Xf@sPfKVO*NjtEGesAUPu+cV8&xdd}`oIrDq9 z*ySL2#B-c=^(2$cHx{dWTLQRpoUj(tf@GOq*KtA~fpa3eH>B>1+0PiNil^j9$*K_J z>AhP*#meBzsrDhiw_<1Y$~=c8@F@MmIv9`(jqn}}?yMGnLT;d#SkhYBqlKht5tWbw z6p&Nv2Jt}gyFmE_{POp!`fmci&%4cBrhE80?H85B|L`my9@Kv2)m0JkNzN&c%U}{8 znu1BZsIYRfG314(Q_%Z&+`rQY$F-)sAt)|*&XeTI;y(FF`v>w5<K9e^4{F(+hbtWE z0$Ez+^A1B{1=G7z3olJ8+`60-q299h`@+YT+k}A5t1pkgeN3KmPA(L^I)16~in!uz zOBLe#&g|kOW60=TZ_i5axMM@qur3A*SlOqbDs`k*>C|#~RUs8~(HF7ijB}G%k5^*r zln`?mJ5NR0HjCt0`idXE`sV~o5##lwhDN`tR9ZSmJ)#@#`@M$mXv_#a3rz=ftbYIH zth5ExOgvmkZg&3B=%xkE2==3HmD_teUQJ-WZ-k~tr@%xlIU=O#FO%GUMe31{Ca#R* zCajTP?{HlNFTGH{_gPo+VJ~;R=<kgsZ-(C%6Wd^XGb1TMy{{09^e9pJ`zhGQDGk%i zLququHdha)a&n=PrMtVE#;T4{X<Y3K0wg(5J1U<Pa6@KSkSn;CI6H(3CALIe=a?Vf z97-2XZ912GU7DST7L3jiU*&Q{S7rU;Un7wDb+LOLV*_m=xnw^I8C&O-&s9(?Hk^6! zeFttKg;z+n>^|&hb@FFf-G&60Bp{YU*#c2B@XCT#+mt|C6KiQbV`y7bcLMX}?}-BN z9omM%AGv-#5LUJswkeaAdGRd_h8t%wNbjm%8mBmu`nte{tkF$->P0+AbsVR#>t^_K zWwxd5p~Vaby}v(eHgma!4rY=*v8PvTzPW318?dXzq6#DE7GD!MANzjy;rB@wp^WA# zVwnV(Q}2xP77ExYPW<_SLHP0lv^K!ncoIwoNXY`t%^CDe@<(!G9W?WWZd{hGWS86l zYVVTqKS(k11*@zGF=y6gp;L77@?kUX-R4D?J)@k5kD&*@-XE-5R7Y|^F!ihaq5sU5 zXG|R4SQ-IX@Q&#*-O$5D2*s<h4tvVj!-svLY+MbvBTI9tyo97Ozo&qDNWGfEYIIoM z+Uf80{}2T(S7wDEQ}x4$Zmasyl?J;r!#|C^o<hBZzUKUq>02~m34;Dc`<Hq_tBBH! zkjhhG&z<5hSca$R^X&&p&lSO4FsK>N2LdFmL|!cSDCHJ?mHQx!VDCMV=(_o}x>+XG z&{|;jBlrB}<RJkI!1m(a4DGv#SARtpE{&z0mhvY<mNb;pJvGi&)OvI8zUcB5Fo+Q# zIho#G31)>9{q_1ZZqLsD7d+rm_dLyf>3!9At>unAx#oQUXFmFA1g_Kn10y8B`&rBa zL4VVqFeo#~?Cn3`CD!Mg|4YaONh_X|;f~W6sOF;s0%d1Y)ec_$Tp!iE;;1}%#{*V& zkr<aJkP<(7CGp_338iP}n<UlW3J!N8AGB;lPq`X?Ty_?`c;bhP<ouvDoTBLGf7>{w zYw+x0@ulfgg<Ff^)zAk}PMytoZOVd5k?mf``h|+a-pY5;QT*)G9+lUw#*_TDNH>|! zIH(|XK$Ev$?DkxqyS6_0dQ=v(>=}FOJ#LvNw3lc&VRz5w8=naTf3AkQE=&a57C8nU zs5kzJ&uo2t#rRk43nbA7pkiyMSw8ddQOWe^VUV=P6noKc(6biw0==28&``0g$rJWZ zdzTn_1MU}{q^?D1kDRGu;p6On^R!U4><pm3F;TajQox2cjC}w1aQk?lBg^sh1Z!a5 z{o-<A@U>-vm<|`(<I6L3Q$g)#f~{yO83+q=j8h_n=AB`&1~g^jehWtD-(`yOIU19T z^&a1N(C72!gwdS!wZs2a+gnA&^#tF-K!Ouo26uP2!Cit3lHjhvAy|MzaCZqF+yVr5 zcL)$XKyVB0E_3JiUw3`$d%Eks+<xvk-DjQY>Z;nicJa-?<2HYvQW&x;)gh%q!RVrt zt%$-xDAN^SeCL8w_0D-6lNm-bYW(H%0&+YDXB{CQRUtAFI;z^rk-YiA)^Az2JaiZO zqY*2C+1l0XERS{w$cetH7=^$A*0(Q<M9*DlkzDj<xdR|qZ&(BbMY1FAgjsrh_LtWb z!&f(CQ=aK#zL~Y>dsn33z)f%I+MgXd-?f`;=N!=x(Z`hw$G!Q(fZ#ygdg<DhE+)z1 z;{sYmI93(-O=W&KQ+NSetVp<ysQ*sYxxxpr#FRu~I7(|(zwLYOOhq&*)LA;4{-9Gl z6VeSFTyB*@KaXZX`n+fj6cETwSWxrCFnaGMi+a$iq`Z-a3lGDBL^RWSwxG*Gi^Wkv zFo>J$hRunr+IbmJ?o71VGU|Gn+Q)y{<bxEMCK@u2?opvHVGVq$%zTF~67A!csp*jS zW`kyOt+YUlR+f%g-H%{Y!Yz3I=0$;8c5<JB=fT-nK4N6ycu57X&^6FXuIf!f)Ps{3 z?|9G`F-nPVN#na|1yJz|zMG^8uk}3mgeesxxz5Z&<0%V36qBI=#qXOp10+|(5hIMc zN;lHYZos8s8B}k@Y`;r(a=W`wmGGe>pt+2IQ{;mioVbi9@9MYVbveR^dEoe_Ac6eg zUmxIH$GdSZ{sRcX-_E%-W9*?4y)m+cZ0VHK;#AOuKsjd=s%3(`8#$-GLS>^EwlP=q zk&~4o7zThkwrl!Z1{8vM<v7@eb);gxE;=Lq?OHN#3pr0&K(cZ`L(IAmvgAozT*^Sc zX5OJE(Wu%ho4=ep<Pgz*n?E>*o}o4|=2a9u1OmkqEY^Iu-@UM}{H07!>gaH7B`9LL zl-cWYbLZm#3xL>WpqzUbR&?<X45z3?-*~q8CIGU)_K3}u1`-r>?j8>FU+XmOCRh)@ zhW%RTopmwpGb<IslA50K%mVR>sLpGCt!I`ca<5?FAk(n(^2Q|cN#<)<^F3bcsmo{T z){j)Kr-?P1`DZtl{%t$h7P^JJHEn2ON+lcGmM}SrB;vV{o?O;44Ls6MQ5Hybi}Mvz zs0T9pLkRPAy>olBNMh9T6u8Lj_1h6y2*P_!KUX?*rZHl$aeQfGSIJL#-SBE~aM<YH z6H|nT1|3UpHRv#JkXn9d%IJD2wWFH<t5x)6E70R)i$jJwtUC<!V1iA{Zy;hl{y<Gx z{qj2^nQzB_Iv;Hdj;^ttP8LFrc~M|%u>+8#E1lXrW2Xh}sYQ<N%nr$ZD${ll=^T|0 zE0rRn3C^EqGxinRGSwrDtF&w81d<vAymL#|?}WuO&QEP+n<a*>#0(cTY7AhBH|e#Z zIs*OVOq8#ECHgwq+11t4&ugnNLRK5!OzM<@YR9PZl%xC)l%DsN&5s;=oMN)zc)$_; zB^YHj27A~JD>5kiCow;E6s$Yj@JKb(B5`6p;frZJ)|CIZY^cHCYuq1B|E6^QQS}GJ zMS4}oe}zgySnZY=vBJbXWyRnC`)S)9;wmAaU0F?C%*hyQs@Rn1X)Revv5KO`kPqV> z%+EB%K0jT3Tm1dwPv$hT!$vZg{t5heEq6Z6IRT#f_S2~0sC;39b){mJK+&SXYg7Hl z23PWQs=k{MA{Z_6$1uqxIsC{Q6ZmyJ=et}PPv}a){hb1d;!aUugG6p(?)gdS&xEZ` z3iA}TmS^`HY#Xz12~r74C2n#B?>sC`D)MDqqzAwD0rxVQ9pSdvqK`9@Ab>=_3OpqA zPepnx|Ev7!)~e==QR}^}<4;H1IdpFvmZAM#5K}t)q{wz?5$L&xiz2*1RBNq^)YVhK zT<Dr>sMN5rOqU(aC)#jQnmRZKH&}D-P+*vGygOaL3SrlrdFD=!xqp29ku?XN%i<KJ z2i9wnu-WlUysmP^5P03*0TK{b6tc?%vRuj81_C>+yF4|5i=-*2)Fhv<poCQHey$iR zB4MusRuM44vxJ=Ijt+V8GwOr#a$!gHKaP7BoJ(?VyLxMll<92>3*i)oEii8@nTom4 z<0?NnYH|px;AC8YWB1?Nd6k^oM{F}iA%?px<r`1UI_$xbR<U=K1J*nX=<#l{R^Vwq zuPeSoVUg8c0mQSjG*CRv2(*n*3utqL|4!^K2dA&t^{BAL{^LEJ|L?A2WWf}2ONB4t zmHW-feGdCj!VG;uPNbz`LF~xCOZ=mG-NxKN(WqPjtK-ZjT%g}+*2w3Wdhy$@oQX`* zBs9wMq_?-qF~jKqAS1j;GbjE+K<HAH$;G#WPB;${PjY$&e{AY&vRdqNXb3yd<^>^T z=c>W@?FF->ycZ=caU}~snbX-W5lL5cLH)|)Fg*)V(Md=lTyawWYd~r*)!6C!){aBV zB{3W?jRKs5W$7*N1tAl<UW!D@*(ws*8mUVB&VETD*Ap11iL`mP2~o_4wIO)di|>jO zKxJHH7k-z2(SS{*wkfuyWRI2buUBlN6ft+P4ityr0g|l<pp1P7v(t;t0-NOzLT78S ze_rZTfnG<}HCe41qL0IL7*+53&3arwuxdYfX5x4QHjz1d;lp`w^)|MBG#8w+`8ST* z4c;@BFbe=EAB+|i_3>M$iDEr%33GDxH|QO~>@l(|CG@%rK<4&S(y%Z<<{zN4OIk`3 z;EWmsL5ao9TddW3)CWweJr(yg%3(Qj(JcZAak&Qg*KcY{G($bp2NAmUQr%AnIh|*u z6^&%`6)N4`t^P8FnvyjVCE6@T%QV7RW+-X&z5v`28vj&6*K@+feJ6z!hm9tSh&Bty zVs&b5m@eH-htKFf{@AV0tD6t&Psq<^gM#&FuIFLRxB1-*bGmdd89YfAez;fZDG8oG zKC77<FcLyi1kk-obL2>&#1!WDHjcrr-|Vo8H1&NM@SYRA`vatl;I7~gu+t7bz=n*= zPQVmt|En?2P&-GmpmR8W)cDMsk7t%0@!UD~BCE_buz>$iC%q51gpNf;vx+qre8kpR z+@R}T%NEYn@hr-gia*S_-Pi;%_AMsh@po8grU(yraGsYK;U}XdfZEwuKd=A%xGiDv zYn~5hY{WlpfiF26bZNjHFCmqk*D_p_#IVUlh2lqc=jLU@x4?HO=hn*CB5-kV;}4!H z#5OaX0pI85>#Dq_ixI(-0G^lC=qHoD7BE=tefWquNpsshHuIRWg`%fsNKqx#iI#Ta z>H|*<l%^~xj;2L@S_;GauT)7l6=JB}A5O{~3}%Ht7sPM!ooiS0&%76P&R4SFi)YN) zHwJk5ARBP^T_r17Y#u=-<(Av;89M^%|F)Rsn`%`Og5)%=$M*>=fGLCM$8|aJhn-#Q zPN<1_SL>I6X93KoC0YEWF~y1t<WZoM`x(HA6^g+!r#PeDZl&Znj!7F{$_U?<U%7Y} zmif{-GZf!+;^BvIvMm(-lx=3~;t=j9o?#alO_mok$~p3()=@4Wbh)E<2bqYhtXpB> z%8`%OAW$Jx7(Oxq%Ef(}?h>1dTIlia5<7rpFH2(SH|2cl_UujlPaHuFywaZMi{=zi zG}oRxLQnbe-m8MM`=FlhDJq>5UI}g@Ttnx3CxObJYY#BV8JaOSXkNPFA@KI_K7sNw z7h5`B2cnL{n#U%rydcBZFDb=8j}s=*mU%e0lfC|6>uGEQJhHy6f-5HLm}F~MH%cr7 z151BHY?DI`uUfu@kX`y$0r9TF3d6K$p|%pD6vUWV)pabz!Lz(r#R$iU%SYu{H}+1h z&MkC(zg?CoG&xKr;45?;MLMa6hsV_=O;*^yH{vPHeup#(iIFpycMUSuoR42ow%}Y% z*wAp`<ekI-Z)d4;nWk9E6OXT8w=INtDx&5Lin#ToIDfZc5&ieja4hy^t}5SPkZR?M zW#8}fTU*7(Iw7o{D{Ei4(f#XRwCV9@WBYD|Y1>!NgO_=5E4pN4+Qb+I#Mgdm?tV!z z6)ox_a7cFJZ89A}1xpvA5eXXdBBRvnR)06uD+`nW5zmfvO=%ip*FyHi#8qf?XwI}7 z_t5#{NuV43a-6e}_TM%=J?~=g86j~Bi*{;zDSj*|Qx|eZf*kzduki~~KSWT9zw7dX z{oDSgbrV-vQ&?py>c2h&4Z84H38{uv>=t|VfryQ-=r5!nC?K*R!SsyUfWr~7gdP33 z3=bDznHEj}*YP3JyF3N~;!S#Y|Jl`7q_^(P50s|SEZa-rX^(YFKNEL9o}!K(roe?L zH|7QGKdI(1MPX6geDEaivYHj%w6T7Bw9$(?3fFmjv5k{2FY>+;5O!@<{BS2ITfyh# ze8J80P(^rkA9G`NW&E9CR9g{hN*{`$^BC$4IM$=N&gCWNPWSKz^}yU8Mf!qT(%W~< zPTGRvXfRt_l3-wH(s9OG!CdwR&ejX;cIqd3Z$90J1vc*1o51@CR0S6QRcr?qHA6O2 zoCJkeQbtbarxcxC|6XP(DBAKq<dhK;G1JsFD6PL2Py}uO0@svn)wgeb#0f?@=AHqV zvBCQrF*KP)VkoHK&PYDQ#<8uW*e+Nw?Ls4`z+tgvcX;FRqpwgiQ1FJfl+A%u*{Z)r zT_iE(zB=ki-%#SmOf=OKx<<KvM}X)@U(qeFY*#T@7VUoA2eVBwP!-2v5G=m!X1Md% zl;G!$Uf%ufWy$pQVag||hSixij}s_AiPUt#A?SyNmYnd-N+$oHG`U1>z9L12v4n^q zjE%k6!=WPt@Rx=C6W8z@hB^D&RB`7G(o5m+?5sGQ`+wfD<)D+R1yTV{<Il9H7i>Yn zFSur)_qU6#_(*xPvz8NqIY%7c(QI{I=C5@e5Jla1AHSjSQCj(~u;bTUDu7^TDq-w} zC?d&%lso0hH2GNhlIEP9CO3HjzlZG_ig#fT!apat>?~bEMex3IBE0PKo6b|?Z%VZR zILT8_Tu~AFj}~QKUst(vjN`5GDhNb9^(Dgvirp@c;3W6t{!H#7bwU~s?i9!<YxYoK zktpWv*fq`GYo$)KAnM8sAQLljPrDI#|L|NIp}BOd;K`4V-ESg$*#!+2vU8O6zrZi= z77~X(?MHCe$om1v%+D(F{bPAcQZayH+dkV|!cV9UgCo*F`jHwgEOjugbgdugB)Icv z7AuX0e_B1}QQ`Ay-s2@f!JCO`+q8xH^cG&5b(B!+asSUoQZOZegpWoks8juEvkiXA z_*z%s<Nj?G3rtBW()2gE!dEmQ;rDCG_HUs4Q}86*C|C)IHfu+Y35q>pMH<X{uNopu z)SG_6pqqWgCxetv!je(Kj5q;ZL4F^UvP^BMx67Sr!z6s-bv)2U?jGJ;<c6YMvc2Y5 zdfENzx5RaO`8i?<6mWDh4Fx)`Xjc%H+SqmB72v%MtLKe32BaG+$`;*0@1zDudu*2y zyF``cJ4TuaiVI{K4`D{!Wm`UUrP<!_Q>xwE80cin=P{T@R9UJJwOibd*KqpdsxI&F zS|dp(Oa&V#+&n*Q#(a^wG*7ABl4Oh+_$Rit%NDNq(U%ffDu%foyG)j~oHU{45_wRV z1}q)BOV4iVi}2P&u?d6Rz(%X0rNxWB{)MLE+kGJNPMD4E8j21ntY`K%9+{pFv@TR` z_Ifzv0);f_BYJweHLTciBF0X_;sRLC<M0Nj*;&^v&HefbX&rjafAvO&eSfQMVQl`N z;bKybKd@E+8PzP`8QCTGur-UJIj5hQrpUNj?by>&SLk$d^_wf5HJZ3P6(VeQ7X0T` zs8{8uwi%A6hMV@3ha-w}jdG7QKpaso;}?owL9m2zk!A&vJY<ObYSQ|6;~Tt_t&-l6 zE?0L6Wgj>o!<l+e!sXqD2Hh{-^V028Hh-cT1v-2Lx0anyhihpXKi>F8i8dczKQSf- z1SJ3SEcIIyEuJ5{TFODnX==MB`L&1OL3?Umqg<J>fBsWee1AhoAkHxu^0tc_<(H4s z-;EYDL7T6e{#}OUz(UA3bVRQ)-M76VA8I}<Ui)s#qvDC&<MgwqR%~6&25h-OdCf)P z;DI{$cNDX5aKyJtvQpaUFSz%tS45^0+6d5`JKo>CufH4?p<>azLnO?gClYQd$~JzZ zqACv5CuUOAI};h{*HQGM33Z&-eUm|OSDftc*EU#Ip0KON=b>$CqMv;EWc&m2`l6{} zHD#L51&@-`kv$iZni|+X6=%?V7lJH#2*A0q9x0vO`7;<(CL};9YoULZzKfrG1%3|r z0YNJsc+is@r<CkGty`>c@g<qiPgNEuykNqS0mO$=m8DkpYn~!_xi~563STgoA>;RA z{FX$o<k2;!r?lk6qJAy+KNNY;j-q<@6-BnbO(+sgEE7T{w)`nbT{{43V$9__Ku9>l z<>!9lRJ-@u?uUx?#p5%b0}nA@R*kPJG@Y+0`s`z>h%$x78}rVUOJeH&6MXRf&Rbh; zgn6rWzmJ$zLzHF4At}n4lmTi@yuQ2EzlRm2^jY^V&JtXl=EklaC8-Y*v6mh=E4BCM zAI=^V*doSZJ-F*xpc%NE3?Qf;FurcFMZ~$LV9y&z^cjLG_o@FXU2H7X_Qgq`)Yqux zZb^;h`ZT@Qo6KA<U4pr*h8f?8%to|kw&QP?PHzautlf1}ce6t9fbA;~!wNi6<BkCl zpjaWWw5*1J!7M8Y@0)44kmR)1c+`ZZUn1RkSKkwU|8Dd9fF6k^CV8j=B%R1iDIh+8 zU6ENQLUOjykcwlS7E4#iA+b!Dd^z^g>zk*m%R}RDfrtybfx3cn=1fV=xM}$o$Kxin zW4^KL$7yM3^{20wK34({L4VO*q1Nq*$lURH^LWP`har%tV2=+SQV`loly8kVw4%{H zOmqdjmSU~9H0STk|HUZ*P?x;u7MQpl43Nd-*}Jn5D8!^;nKHq2S*4n3F-@or)NdW= zmC7bAIgtO<@3NCTZWK`Utif`@E3Q^+>%OlR?8NB%T&o{W#MxfXByaSs(?95V>&~2F zUA`it`Ln48Jn9ov`MK|B3s`0buKuh>y(2TOa%Rha1R67e@-PK_lk*H<=+e4^QwpWa z7qCdZ@7jB)q?q@;X7_I=cf0zT=G~iR_50}k=q{(pa%W^oVp1#IQI9Kr-nugvh4GpW zcOj(q;ASYhxQP6-8D^k71in6~N(e0FDZJvTl9ot*udZmYTaiI?Vk<l#DQ4X$dZsr5 z70)8N%;WyF9rFq3@WR=@AMKlDGJ=JpAk1Oyv1#cAeVJ~oJBd$<ik{IRO#fq)bUTrG z{OD??d8_A0(dNoOEK}ZO?1V=`Xo5uN&x381r3LlB84Ke>YPutQI$%9+S5nZJXfUU| zel-6(MbS()XgoCeI`QsdYJ_$Z+A_2vXYUYT{$<4~_G>9H^|W(2tp%TJ^Lu%B&89Jy z66BG1A=Fb>NX$O{Mse6MPzQET{8H;wZ6-a5)IvLaH(0-)GZGr4WV-2jOI()>j_`TL z_Kpnc7ko+loR9;hU62?U{OP+rgYX(Uf$=c)E%X(j3wS>)Q}kZIt|F##=t?@b^BD4} zYy>gjB|s4<|G2eKb?K(gA?2+Vi`lQJ8K`0N84j?tVI00W;$J@br|wW?J$s6wh4+|O z>w;{`aPA&|{{}FokyFb8bJ;E&3X=Y=Xa5r+^-QQl<Y+%aNmzK>9M2>mZtz>UIA>NX zzJ4-6pWXMyw;9i^N^jS+re%Ovg%EbK{X*cC*64sD%_*`#;?$`Am#NI_<-Oo~WN}&Q znn30$lOkt&1Lb3z2>d$#um7^AqNO}lp>ZK0g0)*d$jtwuRxr~9q9T&k#V=nlm!78r zbQ-(C5TXmL8L=zV=??Gd{j3_d9dwShol989jE0p=gJu%d;Dq{mkCU0L-)HJ&6lt9E z@A3e(ckMUeJMl_03{Vw4N!f%1;}NmrZ=~y1xjCYgI~Zcy7GPfNw4bl>^Wixl+00~* zUbeUHJ0z5n@-s@%wOFx=%4>(Lr-Wbv@y!*F7HY@%9&r?|IViX40h|^a+JH|%6B<W> zd$=A3ZVL9hg)#)#Z=>%l9dI5N34~B_Jp+#o{U5NrQ2kJ7|7z&VlsdL}l`3IpJAH+G zkHTN$NAfjd+GG8`wqAZ4N)}y*Z|_OO`rvGV0SeC20s~8XOw`GU+ezbkeix?5>+avY zr$3Yp#SM-xk|UvJUlSn?;%e2%Z9owK+E=)&8l^Rj%*qX#Ff-!IE~WfHAs~Fj3lOAx zY}tA*Nj)96Kj39tL%Vp!f;mv)exm<Xv^g_7CoFNlXWuYd`Tf;Zp%xPA2fOI#BmHL> zbL9HVG!nBB;;`nNeP%ZR)Lo7SMfZJX@A7L2p7sgr|2NcaTn~x~2fy-*=|BO?^1)jR zOPuGVdqn?u?2DB5BM?2sH7IHpVDn5cb9jq=kB)nIMzxA4(=;BT)1n_$7}y~9I^b#4 z>?16m>*BUtxE5iI#dX8q|8;9Km|^$QTDN<>!<Yu+I2C33?N@3PGABdz(tk<YOcZ{` z$Zqb$Q1fZ&O6IBDQc>~dYp3@01hUtvZ^O<>%BFbSXr)KuiHJ!GGhpZt@J0BaUiXvr zX^r@V&ipI>7MFxVc0`Q&)z&Vyvq%Xf^7O5Dt{Gq5!<JO?Wmsd64l8DR70b)(q38BX zz(}Jm{b$V7BYm*n@1DjejJ+0P;l%<CjE7xUMgn^v&zxT1#%6<|j%&yaPaC0f<UF0| zzm>ly&<t^Y1?2ixd4++0jw>f7mN@o+;M6*!+UhTXg2v5@8Y735QjLhNY#%&!wVr;4 zROL2|#bFI)*E_Y?-oO#&L^)H8m@q;wCmk(bz|8uYyb`3hP1)0wuPX?nh*^Wx0RCBJ zGB_;MFMv;|$^F|UqhcL;m#Az&IX50FY5T<qDt>81L7o5V2>d;PCRSFwqz0~7=0km8 z;B$O{qZZ3St2VSF(weW~eoHDE2L2@V#)heId@#k$=QW>>8KNGPPSoXnm{@7e-g#z6 zyWZz|O)IwLV~1H52UVPdv4TVA#E!e1Z^KjC2sMe5+JWI9Xcp|%ziDGn=lWYV1AU$Z zw?^{tt_i?a#S8NWt3bWDB|(fle0*NEW=)nNf)Fow>i3x*xMRJbHThJz@Ipwo{Dxrb z#us*sD<abfIS3qKAU~?elqvS=Ju6}?`QVC|SX}%z=A{~iz`04~qZK)w`d=B0t&U%9 zUS3N3G{RCCw()m)^zZl*(;DDslF}yi*LTgRWq_0}#x?(UGpC0%RW-yH=ipcvfJ#Pq z!7$ywp-+ln;_BTQ!fj@6&=%D58z%4Cq~c92=&1Lzep`cy1(qT9GuDLhV^st~w;q7~ zDxmAqCp!C6;#4QlS{<6Db!Kv!CyLP!<~P~v=0W2%(pWLxkNmy_FI-dBA4&`(P}Zvf zdFh;j#gy+q+LLaC|B-|Feac{&0vKJEt-;O%!Fm}AFp`H|V@ED$*JX&je6T9{=dJqu z7>DMj4o$tslpXqli5c~`V|wFwK(X6bmJOZceRT4yIHw7w7PC|R%9#6+b+p>k%jtqE zez9^-G?7>e;sPb^O<HkLw+XWkd>T6-!TY3Hyd#9jG)|M=T$ZBjvHa+@sH7LQhv^5M zbuDn)X|F=?g1O#z^MCbUL`4NUdjn1KuJ_yWW_rddP1F)rXT&TI|91Q;3WJiDm#Jsf zh|9Zm3S!q56%`~H9q<pd(C=%i5y}lDMn4(pEB=EL@oaZ9t#y%GFh?JSf1U&;`4|eQ z7fF^&Gj$8)xzEmzW{nShS455S+P$Px+OXj@3)U7-**H$i@c*`Ky0?7TK0fYrsGbfR z9oSl!V2KaVyRog6C`{Sfi{*LxqSHps+pKTW>BI|)^S<=BijnvsgveDG`>zKp;pctF z+YzVhgnI;;qXC&P`p=4c)xH9Ne|4OY!+}1+hwxz8hF7WQvx~KdJar;Bd1BtjH<aTu zhAZqFK36(}>I^V;#PDk)LhxpaT~sz))w|*(8ScE{yIq-;roKA9VaDj#j9Xvv<&fhu zf{W7US=4iXCAk<zEr#S9M{>i(t=<<A(MFaN30al`jhYqJ5?Tt0gAyKq1V6M<2#&;# z=n0n@GX_@Tg#9L!(dfa$JI~#Yy8Vc5RUc8-f0{ag|4D%B)590}XPmLmvgiAhmN;oJ zx9I6(+~%^=*U{`IXA%DI4o-%gxNoWZHGR!v^+~Hw2#M7#tz5~_+47Q;2Z?IlA;GWB z?Vo>-I5U9qrI^{)uDA&U!sIm#^se%aTjzuQ3{eQHYtQN*3e9+PW4xa~rE{sypmly+ z*n$f@ejZnR<*VjWBSqCxS6W9nq+NzfAgj7#!Hv63lpc(U*OIE%`da~zYN|e`?)X8o zBJd0CZg0`N@p#j@(cT2__r4lOLY4|76o-FjmDdOhG4b5s4+UBPZ**Jmk>QG-Ou4Rw zz$1mR??Irx-x@5fl8V63Hlb2T)X}2K-}d@`TU+kj`af87`x0c1x0AroG8tS#&a4<L z_`}Q2l*2tunAC%>*Y0W4xw2lq!NRdf8EP0~amA)Cs#HDr5-3!iMTL>-0sErlVKB;G z#$*O27t)Z0Od|j>b>^J1J>K>iRYL{6aZ=N)!iRyMJ_g1;qX(DEi(vKHqc5;u{A5R7 z7gQ|``?PqO-N?wgBu8{9fF)5=tCijs;-mAJl4K8kHSMWU|3d2gY&L-zD1~vCt|(=a zJ!~HoQpH+S6ESxF#B!-)PD}kyMt05yIkK#XJ*UndAD9_?h`3kV$E3NxBG>aDtN>xW zDGBJ=l-l&lKP>akg|~3^hQa@4Lf5oY(I&`dWlQU<+!Ul_i_)Zdv-P{x30*Y@9*l<V zdr9s_;3-%@T1=DOn10uu8r1m-k>am2ZkVtyxAcG3S%6(_8Aj?Mb+GJR5C2&C2F|<z zUC{=RG^G6_MK~9DU5ro?L5-;wfKTi7+U`V^n9cw>UzC8Zq8d-(%8=to`x0DvBcr}Z z(9AxX@E2<KxcqZ<Nl?gm2;U8%RvikHFC2L_PQ38W{9_w<rUGwS=IEf3-`K593#LWE zIB6PIn=R4)#SIEM=DWfOTZ2^V)Y@J>bcz7&6D*x;t%U-NafN^ESd6<5E)VBD#Zo_c z!AWA=lMe(Aw>~3{>aELQ=q>v-GuKrb%Cmfrz^`1D$}W0*Siej7bdpH?TDFtemP#1` z#QT3Wyi+{_#9(;pN{)*oXLy!-@gL{4yKkVFCLu7JCW}6XLI4f=paZF=Jz_%`)iq#O z(*qBO(wM(`QKsuq(Fop73|UZDV?<{~X>c6el*)L@JHZa)=**2HNQA*AjU?bNYn!W@ zB&k-_@-$>{!N=0w(hzu8&kHR&@CuFbr%jRR4y;iVE68{M*9w|O#Jedd8}(vo_?-TI z(Ug+DAmLWgi{$guCnBX*KXuQSMIe$Aw48$)3#;}JCi=7p3ge=XYBk(=G{dprE7WXB zi@J-)d7BB#=}DPxB5N(@%+o71hItMbehks)4?p?y7KTW9->^?ks>LDSd6nsod5DUn z;UR03|G|%<jt>wkte1=p;j49{?@_-XP8x?Q{Mw$a#`TW9!@>T%X=QRR3LIfUt&Q%R z&!5#}4TEtG@RXHV>YY;ex#PWHtb!Q8OOr9xmEOU?^~gG7RX0}6V0dkCMPRN%AU^|! z;=r7HKJK`lMH7DJov4O(*x$>*zdI7*awQ*18qVLxwc!jEie#_W<`9KtvGWaCc>duS z<Vi7?2|6&$a;pcNY)t^=7%fV4GzeUU(HP?y1js}A!N-2XMVt*M)Fu&9lSZ`it1_PF zT5DdaF*r76E}Q&dAa+FhDY__P=M?Db`{Eb+H_Q1yYaQJK`sY!4-!;`M1z!mL;Y@ks z&wv-afcf;r%G1-ZWR{Bf27b(?#Uy_*@ApBqP5R2wd(_X8m4Kc+v)G+aiZZ6xsdmff z!mpTa*S?ut)}dWHPwZ+d{<+|T;m0n)NLgVxDzn3ygrFXw_Qj3oRQXiN{--M}&W`KQ z^w#sSkK&lP8Ld&v>+ra*(8S{}Dl{-yu36OVE>ng3Yygw_lOrhpUDHWjw@FcJa{rx7 z$HAj=vcE}vH}JvocizlN73VK8(AyYBapWg@-xs?gCdqPJ_b1QP6~QB>oYIwfsJ38? zOu2(*H7K|H7$!^2#I2e6IjIc4CuT*lat>;|Db^*|*A)5WLR>CQE%M@QPLZdur~91a zVXxzW7gyNgU#aX~s@nVsrP|a14h=CHf(l;WZeD!T2CUwopo%?rOnT#<^S~3F&R2|E z;s(sXm+2Z|VvfzRB9`P1ntC@bqggSN@JB~VY#z*VZ1a!dF~-V@z`-QeHX`olXNcVQ ziHSdKvV6t|q#y>apOATU)!i9k1uG<~{^3&4!=ZwN4=H0a(a_t~z+^4wVwtcpD`b`O zRF=yLAli}jkUzaY7;R8G_u{R5f2B#Gw6SJ+UzV3Ytfa#+v}FoRHv<nh+Wu;?;atR- zl9veYLarqDB8cig!XvKCVdHw|8EfCDSR>k9@i*LsOs?3$tev{lhE`3D5d-N}H@qNP zE=#wvXU&P&iY&|`Sg^Hi^FvyJaWhKe@T`p(@c6PLB5_1liwPHDIw5{8L3dBb%Ofrc zkNN_QRXt~{VnVFa{kkIfDWppV`1wsh;=gPY;X^j{9Q>J@e8URf(Dn(+dl>!`>l?Sa zio0u0G1UyZ4Gv{yC5$HAt=pVv7k6HZ!!4gqz{fp-3k=Z^wah#qJ}_H|^Og1+?1=$( zHrfcAol@)s#xaoWsYU0A;|iJ5@#D~w4^n39aaOCRnB-=W3lpYRv{^A1J)={`5&I;O zZU&}J|Eu0A(_v?rMTO<92@8aO9?-49k3^O6%nY#?9YUSyo;Sz7MeEP+PUetQCzr0z zqB~Q&8%0BK$UdYzO->GZJZ)k8r~|A`asD(FXuFl^xHn`XUJ9pEHGGSCmy9T)LACj+ zKi^mP#`tw%duL#UgdJL$<PE#3V-FdURNgOIB-A>lBrK;w8FI|EiSvf)@Y}1vg3fbX z`7$*%>5z|mLQyc7#<i!8KRHspT@-eM5y#7bIrR<@78{ue<@9RTMl?D0fXUAUY(s_E zfYQtDZk=4dDNGd-27X0Qjj#=Xi~8W<?va?0{Mt_OMn~>Z(C!5{_%BwFcxS$DGu_^) zkR5+GFP&lk`OB#ENFP56Z5TIPvXB@9jMN`E`e!)HzC^3@TJh`l#~rsz+~B-Yh-WPu zdLet?@4hSP60Q2Vts%$~Q1CGj*1ofHF}SKc?;~HiE1cnm1UB>hTILiz?Y7KcM0>?H z77NjleaC7_e7i;#SeuIAuR}k+&#N-aiPyNe6E-<&fY=NyxKul_r_j&AIMiqenv=83 z-}xzHKmJLR)-z=ewPJOvmYZxG-F0vij`r&vgb<3nwSdWZmuU5S03^=X>SW6FS>~Fv zl&be9H-S=V``x&(eMnwb+y!<g6(jH@$ssa7Ke5vEXV)6-TnQjQ$$5H>ztxHkSpPwf z<*0|Yg0Q0br)g&^^(MeGLh~^=x=Y%Oi|GgOnuSSVR)#7=9DpBUO+Pt7sfjjbmE~v5 z3sQqE#5J9XWJd$&V8Zn*Mlif?f6h~s9}*^nls%H+)QtTxhV8Ypljdo0%=Uzf%<z4e zXI3p+#-H@@(Co(H4lxp|)E9Jy&zOP1MF;`X%Wrsj7AE{<TMpa*dyF~k7`ih~ZAu|7 zdJ@MI6tbz4M@k!e;A+4tFv`TmGpge1Ubiq8O~S)v0C?w!xK0z#y)mC53TWEUDA^Jo z9*zS1IeQM|FIM*R;IGcSWEpdfH|(S<VUQ*2{jeAYt+h_lnFBRmoILtuWn{Pk_`u3o z+li4DGy&XL-yqeRUnBSU57}~si8eru?BwT+M}ck4mPT4Tc9p0{H{oE0jcdz+(TrwS z8bu`rpb<0h-7_Pz*h5Tg57K0Uhqn9>I7I~$M&Ix>kRw|eyfXt^Z_~bkol1OmH%wE+ z?A%x((W`%0L8=`#?}`@S;q2adEcoLR8^kIsBqq7?E7OO|uUa+h(WJYhHV%5Q$hh{U zly;>SGwl$xcJ$T03)pa9rkFi?PmB@dAhMnbC^f!GNK8zuRf2ul-8z}Vv_fM}Qv-qg zrt{Kl^cT7>t)66Z;x?OmJ#~Cc?`zJcPkgVD0~r1!bMYWk(ZWVPezd@Un9vraYG;&) zT(u0PF%+{0tLVGSd?La)!lI5)T<CUCv24W1-J3_5JmU{;58I>W3{2K+;lJQVMu3qK zMbxG$Cj9?6f#$vWhHgv*Mh?S6wxQgYeUjKgnD6r83wv#4?!yz>xi2BgW_m~}%qhhh zW2Od#Y3u}#%3mQ!DZO<VW@W_j{zKb=n<F+ns2ScX2EV`Q{_h>`{%N8~uXiCsU({@= ze$U~Y=uS>X%4YC7QJdnh4ouaifV>>3F!+{1eLdeBtw}&7xvDhRu!8F@PG01?+l~n; zcQ~H^8BN$nmz1L;|1<vZ{qLvKTA+`T1;+f(V5j^4rY8LNa{rA#(*MVaK-2&2%>OqN h75=Yw`Tt-071;D60T+*s#=*gclAM}swX|u_{{qt&Si%4R delta 61512 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 P@TDZDE?X;Y{`r3ZRlIMe diff --git a/mods/d2k/chrome.yaml b/mods/d2k/chrome.yaml index e354ae0813..70cf4f8567 100644 --- a/mods/d2k/chrome.yaml +++ b/mods/d2k/chrome.yaml @@ -155,6 +155,8 @@ lobby-bits: spawnpoints.png admin: 64,5,7,5 colorpicker: 5,5,22,22 huepicker: 71,0,7,15 + protected: 79,0,10,13 + protected-disabled: 90,0,10,13 strategic: strategic.png unowned: 0,0,32,32 diff --git a/mods/d2k/metrics.yaml b/mods/d2k/metrics.yaml index 351ec7393b..d6f47cfa80 100644 --- a/mods/d2k/metrics.yaml +++ b/mods/d2k/metrics.yaml @@ -26,8 +26,8 @@ Metrics: SpawnColor: 255,255,255 SpawnContrastColor: 0,0,0 SpawnLabelOffset: 0,1 + IncompatibleVersionColor: 255,0,0 IncompatibleGameColor: 169,169,169 - CantJoinGameColor: 211,211,211 ProtectedGameColor: 255,0,0 IncompatibleProtectedGameColor: 139,0,0 WaitingGameColor: 0,255,0 diff --git a/mods/d2k/mod.yaml b/mods/d2k/mod.yaml index d3dc0ced77..047b0290c9 100644 --- a/mods/d2k/mod.yaml +++ b/mods/d2k/mod.yaml @@ -93,11 +93,12 @@ ChromeLayout: ./mods/ra/chrome/lobby-globalchat.yaml ./mods/d2k/chrome/color-picker.yaml ./mods/ra/chrome/map-chooser.yaml - ./mods/ra/chrome/create-server.yaml - ./mods/ra/chrome/serverbrowser.yaml + ./mods/ra/chrome/multiplayer.yaml + ./mods/ra/chrome/multiplayer-browser.yaml + ./mods/ra/chrome/multiplayer-createserver.yaml + ./mods/ra/chrome/multiplayer-directconnect.yaml + ./mods/ra/chrome/multiplayer-globalchat.yaml ./mods/ra/chrome/connection.yaml - ./mods/ra/chrome/directconnect.yaml - ./mods/ra/chrome/replaybrowser.yaml ./mods/d2k/chrome/dropdowns.yaml ./mods/ra/chrome/musicplayer.yaml ./mods/d2k/chrome/tooltips.yaml @@ -105,7 +106,6 @@ ChromeLayout: ./mods/d2k/chrome/missionbrowser.yaml ./mods/ra/chrome/confirmation-dialogs.yaml ./mods/ra/chrome/editor.yaml - ./mods/ra/chrome/globalchat.yaml Weapons: ./mods/d2k/weapons.yaml diff --git a/mods/ra/chrome.yaml b/mods/ra/chrome.yaml index 3179ad2a68..4506d38ed1 100644 --- a/mods/ra/chrome.yaml +++ b/mods/ra/chrome.yaml @@ -461,6 +461,8 @@ lobby-bits: spawnpoints.png admin: 64,5,7,5 colorpicker: 5,5,22,22 huepicker: 71,0,7,15 + protected: 79,0,10,13 + protected-disabled: 90,0,10,13 strategic: strategic.png unowned: 0,0,32,32 diff --git a/mods/ra/chrome/create-server.yaml b/mods/ra/chrome/create-server.yaml deleted file mode 100644 index 90773e17ab..0000000000 --- a/mods/ra/chrome/create-server.yaml +++ /dev/null @@ -1,105 +0,0 @@ -Background@CREATESERVER_PANEL: - Logic: ServerCreationLogic - X: (WINDOW_RIGHT - WIDTH)/2 - Y: (WINDOW_BOTTOM - HEIGHT)/2 - Width: 400 - Height: 300 - Children: - Label@LABEL_TITLE: - X: 0 - Y: 20 - Width: 400 - Height: 25 - Text: Create Server - Align: Center - Font: Bold - Label@SERVER_NAME_LABEL: - X: 50 - Y: 59 - Width: 95 - Height: 25 - Align: Right - Text: Game Title: - TextField@SERVER_NAME: - X: 150 - Y: 60 - Width: 210 - MaxLength: 50 - Height: 25 - Text: OpenRA Game - Label@PASSWORD_LABEL: - X: 50 - Y: 94 - Width: 95 - Height: 25 - Align: Right - Text: Password: - PasswordField@PASSWORD: - X: 150 - Y: 95 - Width: 145 - MaxLength: 20 - Height: 25 - Label@AFTER_PASSWORD_LABEL: - X: 300 - Y: 94 - Width: 95 - Height: 25 - Align: Left - Text: (optional) - Label@EXTERNAL_PORT_LABEL: - X: 50 - Y: 129 - Width: 95 - Height: 25 - Align: Right - Text: External Port: - TextField@EXTERNAL_PORT: - X: 150 - Y: 130 - Width: 50 - MaxLength: 5 - Height: 25 - Text: OpenRA Game - Label@LISTEN_PORT_LABEL: - X: 210 - Y: 129 - Width: 95 - Height: 25 - Align: Right - Text: Listen Port: - TextField@LISTEN_PORT: - X: 310 - Y: 130 - Width: 50 - MaxLength: 5 - Height: 25 - Checkbox@UPNP_CHECKBOX: - X: 150 - Y: 165 - Width: 300 - Height: 20 - Text: Automatic port forwarding - Checkbox@ADVERTISE_CHECKBOX: - X: 150 - Y: 200 - Width: 300 - Height: 20 - Text: Advertise game Online - Button@CREATE_BUTTON: - X: 130 - Y: PARENT_BOTTOM - 45 - Width: 120 - Height: 25 - Text: Create - Font: Bold - Key: return - Button@BACK_BUTTON: - X: 260 - Y: PARENT_BOTTOM - 45 - Width: 120 - Height: 25 - Text: Cancel - Font: Bold - Key: escape - diff --git a/mods/ra/chrome/directconnect.yaml b/mods/ra/chrome/directconnect.yaml deleted file mode 100644 index f27b00781c..0000000000 --- a/mods/ra/chrome/directconnect.yaml +++ /dev/null @@ -1,51 +0,0 @@ -Background@DIRECTCONNECT_PANEL: - Logic: DirectConnectLogic - X: (WINDOW_RIGHT - WIDTH)/2 - Y: (WINDOW_BOTTOM - HEIGHT)/2 - Width: 400 - Height: 150 - Children: - Label@DIRECTCONNECT_LABEL_TITLE: - X: 0 - Y: 20 - Width: 400 - Height: 25 - Text: Connect to Server - Align: Center - Font: Bold - Label@ADDRESS_LABEL: - X: 50 - Y: 59 - Width: 95 - Height: 25 - Align: Right - Text: Server Address: - TextField@IP: - X: 150 - Y: 60 - Width: 160 - MaxLength: 50 - Height: 25 - TextField@PORT: - X: 315 - Y: 60 - Width: 55 - MaxLength: 5 - Height: 25 - Button@JOIN_BUTTON: - X: 130 - Y: PARENT_BOTTOM - 45 - Width: 120 - Height: 25 - Text: Join - Font: Bold - Key: return - Button@BACK_BUTTON: - X: 260 - Y: PARENT_BOTTOM - 45 - Width: 120 - Height: 25 - Text: Cancel - Font: Bold - Key: escape - diff --git a/mods/ra/chrome/lobby-globalchat.yaml b/mods/ra/chrome/lobby-globalchat.yaml index 63e96e0047..9d9ab38ca1 100644 --- a/mods/ra/chrome/lobby-globalchat.yaml +++ b/mods/ra/chrome/lobby-globalchat.yaml @@ -49,8 +49,8 @@ Container@LOBBY_GLOBALCHAT_PANEL: Height: PARENT_BOTTOM - 30 Children: Container@NICKNAME_TEMPLATE: - Height: 20 Width: PARENT_RIGHT-25 + Height: 20 Children: Image@INDICATOR: ImageCollection: lobby-bits diff --git a/mods/ra/chrome/lobby.yaml b/mods/ra/chrome/lobby.yaml index bf0c684d3f..24f17b051a 100644 --- a/mods/ra/chrome/lobby.yaml +++ b/mods/ra/chrome/lobby.yaml @@ -7,11 +7,10 @@ Background@SERVER_LOBBY: Children: ColorPreviewManager@COLOR_MANAGER: Label@SERVER_NAME: - X: 0 Y: 15 Align: Center Width: PARENT_RIGHT - Height: 20 + Height: 25 Font: Bold Container@MAP_PREVIEW_ROOT: X: PARENT_RIGHT-20-WIDTH @@ -85,9 +84,9 @@ Background@SERVER_LOBBY: ItemSpacing: 2 Children: Container@CHAT_TEMPLATE: + X: 2 Width: PARENT_RIGHT-27 Height: 16 - X: 2 Children: Label@TIME: X: 3 diff --git a/mods/ra/chrome/multiplayer-browser.yaml b/mods/ra/chrome/multiplayer-browser.yaml new file mode 100644 index 0000000000..d7623af41e --- /dev/null +++ b/mods/ra/chrome/multiplayer-browser.yaml @@ -0,0 +1,142 @@ +Container@MULTIPLAYER_BROWSER_PANEL: + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Children: + Container@LABEL_CONTAINER: + Y: 5 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Children: + Label@NAME: + X: 5 + Width: 255 + Height: 25 + Text: Server + Align: Center + Font: Bold + Label@PLAYERS: + X: 290 + Width: 85 + Height: 25 + Text: Players + Font: Bold + Label@LOCATION: + X: 380 + Width: 120 + Height: 25 + Text: Country + Font: Bold + Label@STATUS: + X: 495 + Width: 50 + Height: 25 + Text: Status + Font: Bold + ScrollPanel@SERVER_LIST: + Y: 30 + Width: 583 + Height: 249 + TopBottomSpacing: 2 + Children: + ScrollItem@HEADER_TEMPLATE: + X: 2 + Width: PARENT_RIGHT-27 + Height: 20 + BaseName: scrollheader + Visible: false + Children: + Label@LABEL: + Y: 0-1 + Font: TinyBold + Width: PARENT_RIGHT + Height: 20 + Align: Center + ScrollItem@SERVER_TEMPLATE: + X: 2 + Width: PARENT_RIGHT-27 + Height: 25 + Children: + Label@TITLE: + X: 5 + Width: 255 + Height: 25 + Image@PASSWORD_PROTECTED: + X: 272 + Y: 6 + Width: 8 + Height: 10 + ImageCollection: lobby-bits + Label@PLAYERS: + X: 290 + Width: 85 + Height: 25 + Label@LOCATION: + X: 380 + Width: 120 + Height: 25 + Label@STATUS: + X: 495 + Width: 50 + Height: 25 + Label@PROGRESS_LABEL: + Y: 30 + (249 - HEIGHT) / 2 + Width: 582 + Height: 25 + Font: Bold + Align: Center + Visible: false + Container@SELECTED_SERVER: + X: PARENT_RIGHT-WIDTH + Y: 30 + Width: 174 + Height: 280 + Children: + Background@MAP_BG: + Width: PARENT_RIGHT + Height: 174 + Background: dialog3 + Children: + MapPreview@SELECTED_MAP_PREVIEW: + X: 1 + Y: 1 + Width: PARENT_RIGHT-2 + Height: PARENT_BOTTOM-2 + TooltipContainer: TOOLTIP_CONTAINER + Label@SELECTED_MAP: + Y: 172 + Width: PARENT_RIGHT + Height: 25 + Font: Bold + Align: Center + Label@SELECTED_IP: + Y: 187 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Label@SELECTED_STATUS: + Y: 203 + Width: PARENT_RIGHT + Height: 25 + Font: TinyBold + Align: Center + Label@SELECTED_MOD_VERSION: + Y: 216 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Label@SELECTED_PLAYERS: + Y: 229 + Width: PARENT_RIGHT + Height: 25 + Font: TinyBold + Align: Center + Button@JOIN_BUTTON: + Key: return + X: PARENT_RIGHT - WIDTH + Y: 284 + Width: 174 + Height: 25 + Text: Join + Font: Bold diff --git a/mods/ra/chrome/multiplayer-createserver.yaml b/mods/ra/chrome/multiplayer-createserver.yaml new file mode 100644 index 0000000000..838e762ec1 --- /dev/null +++ b/mods/ra/chrome/multiplayer-createserver.yaml @@ -0,0 +1,131 @@ +Container@MULTIPLAYER_CREATESERVER_PANEL: + Logic: ServerCreationLogic + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Children: + Label@TITLE: + Y: 5 + Width: 582 + Height: 25 + Text: Create Server + Align: Center + Font: Bold + ScrollPanel: + Y: 30 + Width: 583 + Height: 249 + Children: + Container: + X: 185 + Y: 25 + Children: + Label@SERVER_NAME_LABEL: + Y: 14 + Width: 95 + Height: 25 + Align: Right + Text: Server Name: + TextField@SERVER_NAME: + X: 100 + Y: 15 + Width: 215 + MaxLength: 50 + Height: 25 + Text: My OpenRA Server + Label@PASSWORD_LABEL: + Y: 49 + Width: 95 + Height: 25 + Align: Right + Text: Password: + PasswordField@PASSWORD: + X: 100 + Y: 50 + Width: 145 + MaxLength: 20 + Height: 25 + Label@AFTER_PASSWORD_LABEL: + X: 255 + Y: 49 + Width: 95 + Height: 25 + Align: Left + Text: (optional) + Label@LISTEN_PORT_LABEL: + Y: 84 + Width: 95 + Height: 25 + Align: Right + Text: Port: + TextField@LISTEN_PORT: + X: 100 + Y: 85 + Width: 50 + Height: 25 + MaxLength: 5 + Text: 1234 + Label@EXTERNAL_PORT_LABEL: + X: 170 + Y: 84 + Width: 90 + Height: 25 + Align: Right + Text: External Port: + TextField@EXTERNAL_PORT: + X: 265 + Y: 85 + Width: 50 + MaxLength: 5 + Height: 25 + Text: 1234 + Checkbox@ADVERTISE_CHECKBOX: + X: 100 + Y: 135 + Width: 150 + Height: 20 + Font: Regular + Text: Advertise Online + Checkbox@UPNP_CHECKBOX: + X: 100 + Y: 165 + Width: 300 + Height: 20 + Font: Regular + Text: Automatic port forwarding + Container@SIDEBAR: + X: PARENT_RIGHT-WIDTH + Y: 30 + Width: 174 + Height: 280 + Children: + Background@MAP_BG: + Width: PARENT_RIGHT + Height: 174 + Background: dialog3 + Children: + MapPreview@MAP_PREVIEW: + X: 1 + Y: 1 + Width: PARENT_RIGHT - 2 + Height: PARENT_RIGHT - 2 + Label@MAP_NAME: + Y: 172 + Width: PARENT_RIGHT + Height: 25 + Font: Bold + Align: Center + Button@MAP_BUTTON: + X: PARENT_RIGHT - WIDTH + Y: 284-30 + Width: 174 + Height: 25 + Text: Choose Map + Font: Bold + Button@CREATE_BUTTON: + Key: return + X: PARENT_RIGHT - WIDTH + Y: 284 + Width: 174 + Height: 25 + Text: Create + Font: Bold diff --git a/mods/ra/chrome/multiplayer-directconnect.yaml b/mods/ra/chrome/multiplayer-directconnect.yaml new file mode 100644 index 0000000000..a692b5e4e5 --- /dev/null +++ b/mods/ra/chrome/multiplayer-directconnect.yaml @@ -0,0 +1,96 @@ +Container@MULTIPLAYER_DIRECTCONNECT_PANEL: + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Children: + Label@TITLE: + Y: 5 + Width: 583 + Height: 25 + Text: Connect to Server + Align: Center + Font: Bold + ScrollPanel: + Y: 30 + Width: 583 + Height: 249 + Children: + Container: + X: 185 + Y: 60 + Children: + Label@ADDRESS_LABEL: + Y: 14 + Width: 95 + Height: 25 + Align: Right + Text: Address: + TextField@IP: + X: 100 + Y: 15 + Width: 215 + Height: 25 + Label@PORT_LABEL: + Y: 49 + Width: 95 + Height: 25 + Align: Right + Text: Port: + TextField@PORT: + X: 100 + Y: 50 + Width: 50 + Height: 25 + MaxLength: 5 + Container@SIDEBAR: + X: PARENT_RIGHT-WIDTH + Y: 30 + Width: 174 + Height: 280 + Children: + Background@MAP_BG: + Width: PARENT_RIGHT + Height: 174 + Background: dialog3 + Label@TITLE: + Y: 172 + Width: PARENT_RIGHT + Height: 25 + Font: Bold + Align: Center + Text: Direct Connect + Label@DESCA: + Y: 190 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Text: Enter the server IP and port in the + Label@DESCB: + Y: 203 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Text: fields to the left, and then press Join. + Label@DESCC: + Y: 216 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Text: The mod and game version will be + Label@DESCD: + Y: 229 + Width: PARENT_RIGHT + Height: 25 + Font: Tiny + Align: Center + Text: verified when connecting. + Button@JOIN_BUTTON: + Key: return + X: PARENT_RIGHT - WIDTH + Y: 284 + Width: 174 + Height: 25 + Text: Join + Font: Bold diff --git a/mods/ra/chrome/globalchat.yaml b/mods/ra/chrome/multiplayer-globalchat.yaml similarity index 85% rename from mods/ra/chrome/globalchat.yaml rename to mods/ra/chrome/multiplayer-globalchat.yaml index 67b799ef8d..23b48b03a3 100644 --- a/mods/ra/chrome/globalchat.yaml +++ b/mods/ra/chrome/multiplayer-globalchat.yaml @@ -8,7 +8,7 @@ Container@GLOBALCHAT_PANEL: Height: PARENT_BOTTOM Children: Background@TOPIC: - Width: 565 + Width: 582 Height: 20 Background: dialog2 Children: @@ -21,7 +21,7 @@ Container@GLOBALCHAT_PANEL: Align: Center ScrollPanel@HISTORY_PANEL: Y: 20 - Width: 565 + Width: 582 Height: PARENT_BOTTOM - 50 ItemSpacing: 5 Children: @@ -32,11 +32,19 @@ Container@GLOBALCHAT_PANEL: WordWrap: True TextField@CHAT_TEXTFIELD: Y: PARENT_BOTTOM - 25 - Width: 565 + Width: 582 Height: 25 + LeftMargin: 60 + Children: + Label@LABEL_CHATTYPE: + Y: 0-1 + Width: 55 + Height: 25 + Align: Right + Text: Global: ScrollPanel@NICKNAME_PANEL: - X: 570 - Width: 130 + X: PARENT_RIGHT-WIDTH + Width: 174 Height: PARENT_BOTTOM - 30 Children: Container@NICKNAME_TEMPLATE: @@ -53,11 +61,11 @@ Container@GLOBALCHAT_PANEL: Width: PARENT_RIGHT-15 Height: 20 Button@DISCONNECT_BUTTON: - X: 570 + X: PARENT_RIGHT-WIDTH Y: PARENT_BOTTOM - 25 - Width: 130 + Width: 174 Height: 25 - Text: Disconnect + Text: Leave Chat Font: Bold Background@GLOBALCHAT_CONNECT_PANEL: Width: PARENT_RIGHT @@ -84,6 +92,7 @@ Container@GLOBALCHAT_PANEL: Y: PARENT_BOTTOM / 4 + 75 Height: 20 Width: 180 + Font: Regular Text: Connect Automatically Button@CONNECT_BUTTON: X: 430 diff --git a/mods/ra/chrome/multiplayer.yaml b/mods/ra/chrome/multiplayer.yaml new file mode 100644 index 0000000000..9730367218 --- /dev/null +++ b/mods/ra/chrome/multiplayer.yaml @@ -0,0 +1,112 @@ +Background@MULTIPLAYER_PANEL: + Logic: MultiplayerLogic + X: (WINDOW_RIGHT - WIDTH)/2 + Y: (WINDOW_BOTTOM - HEIGHT)/2 + Width: 808 + Height: 600 + Children: + Label@TITLE: + Y: 15 + Width: PARENT_RIGHT + Height: 25 + Text: Multiplayer + Align: Center + Font: Bold + DropDownButton@FILTERS_DROPDOWNBUTTON: + X: 20 + Y: 321 + Width: 158 + Height: 25 + Text: Filter Games + Font: Bold + Button@REFRESH_BUTTON: + X: 183 + Y: 321 + Width: 100 + Height: 25 + Text: Refresh + Font: Bold + Button@BROWSER_TAB: + X: 288 + Y: 315 + Width: 105 + Height: 31 + Text: Browse + Font: Bold + Button@DIRECTCONNECT_TAB: + X: 393 + Y: 315 + Width: 105 + Height: 31 + Text: Direct IP + Font: Bold + Button@CREATE_TAB: + X: 498 + Y: 315 + Width: 105 + Height: 31 + Text: Create + Font: Bold + Container@TOP_PANELS_ROOT: + X: 20 + Y: 37 + Width: PARENT_RIGHT - 40 + Height: PARENT_BOTTOM + Container@GLOBALCHAT_ROOT: + X: 20 + Y: 351 + Width: PARENT_RIGHT - 40 + Height: PARENT_BOTTOM - 401 + TooltipContainer@TOOLTIP_CONTAINER: + Button@BACK_BUTTON: + Key: escape + X: PARENT_RIGHT - WIDTH - 20 + Y: PARENT_BOTTOM - HEIGHT - 20 + Width: 120 + Height: 25 + Text: Back + Font: Bold + +ScrollPanel@MULTIPLAYER_FILTER_PANEL: + Width: 147 + Height: 130 + Children: + Checkbox@WAITING_FOR_PLAYERS: + X: 5 + Y: 5 + Width: 137 + Height: 20 + Text: Waiting + TextColor: 50,205,50 + Font: Regular + Checkbox@EMPTY: + X: 5 + Y: 30 + Width: 137 + Height: 20 + Text: Empty + Font: Regular + Checkbox@PASSWORD_PROTECTED: + X: 5 + Y: 55 + Width: 137 + Height: 20 + Text: Protected + TextColor: 255,0,0 + Font: Regular + Checkbox@ALREADY_STARTED: + X: 5 + Y: 80 + Width: 137 + Height: 20 + Text: Started + TextColor: 255,165,0 + Font: Regular + Checkbox@INCOMPATIBLE_VERSION: + X: 5 + Y: 105 + Width: 137 + Height: 20 + Text: Incompatible + TextColor: 190,190,190 + Font: Regular \ No newline at end of file diff --git a/mods/ra/chrome/serverbrowser.yaml b/mods/ra/chrome/serverbrowser.yaml deleted file mode 100644 index ceaa3c0cf6..0000000000 --- a/mods/ra/chrome/serverbrowser.yaml +++ /dev/null @@ -1,170 +0,0 @@ -Background@SERVERBROWSER_PANEL: - Logic: ServerBrowserLogic - X: (WINDOW_RIGHT - WIDTH)/2 - Y: (WINDOW_BOTTOM - HEIGHT)/2 - Width: 740 - Height: 645 - Children: - Label@MULTIPLAYER_LABEL_TITLE: - X: 0 - Y: 15 - Width: PARENT_RIGHT - Height: 25 - Text: Multiplayer - Align: Center - Font: Bold - Label@SHOW_LABEL_TITLE: - X: 20 - Y: 48 - Width: 20 - Height: 25 - Text: Show: - Font: Bold - Checkbox@WAITING_FOR_PLAYERS: - X: 80 - Y: 50 - Width: 100 - Height: 20 - Text: Waiting - TextColor: 50,205,50 - Checkbox@EMPTY: - X: 180 - Y: 50 - Width: 100 - Height: 20 - Text: Empty - Checkbox@PASSWORD_PROTECTED: - X: 270 - Y: 50 - Width: 100 - Height: 20 - Text: Protected - TextColor: 255,0,0 - Checkbox@ALREADY_STARTED: - X: 385 - Y: 50 - Width: 100 - Height: 20 - Text: Started - TextColor: 255,165,0 - Checkbox@INCOMPATIBLE_VERSION: - X: 480 - Y: 50 - Width: 100 - Height: 20 - Text: Incompatible - TextColor: 190,190,190 - ScrollPanel@SERVER_LIST: - X: 20 - Y: 80 - Width: 700 - Height: 240 - Children: - ScrollItem@HEADER_TEMPLATE: - BaseName: scrollheader - Width: PARENT_RIGHT-27 - Height: 25 - X: 2 - Visible: false - Children: - Label@LABEL: - Y: 0-1 - Font: Bold - Width: PARENT_RIGHT - Height: 25 - Align: Center - ScrollItem@SERVER_TEMPLATE: - Width: PARENT_RIGHT-27 - Height: 68 - X: 2 - Y: 0 - Children: - MapPreview@MAP_PREVIEW: - X: 2 - Y: 2 - Width: 64 - Height: 64 - ShowSpawnPoints: no - Label@TITLE: - X: 70 - Width: 200 - Height: 25 - Font: Bold - Label@MAP: - X: 70 - Y: 20 - Width: 250 - Height: 25 - Label@PLAYERS: - X: 70 - Y: 40 - Width: 50 - Height: 25 - Label@STATE: - Width: 140 - X: PARENT_RIGHT-150 - Align: Right - Height: 25 - Font: Bold - Label@IP: - Width: 140 - X: PARENT_RIGHT-150 - Y: 20 - Align: Right - Height: 25 - Label@LOCATION: - Width: 140 - X: PARENT_RIGHT-150 - Y: 40 - Align: Right - Height: 25 - Container@GLOBALCHAT_ROOT: - X: 20 - Y: 370 - Width: 700 - Height: 255 - Label@PROGRESS_LABEL: - X: (PARENT_RIGHT - WIDTH) / 2 - Y: PARENT_BOTTOM / 2 - HEIGHT - Width: 150 - Height: 30 - Text: Fetching games... - Align: Center - Button@REFRESH_BUTTON: - X: 20 - Y: 325 - Width: 100 - Height: 25 - Text: Refresh - Font: Bold - Button@CREATE_BUTTON: - X: PARENT_RIGHT - 120 - 120 - 120 - 120 - Y: 325 - Width: 100 - Height: 25 - Text: Create - Font: Bold - Button@DIRECTCONNECT_BUTTON: - X: PARENT_RIGHT - 120 - 120 - 120 - Y: 325 - Width: 100 - Height: 25 - Text: Direct IP - Font: Bold - Button@JOIN_BUTTON: - X: PARENT_RIGHT - 120 - 120 - Y: 325 - Width: 100 - Height: 25 - Text: Join - Font: Bold - Key: return - Button@BACK_BUTTON: - X: PARENT_RIGHT - 120 - Y: 325 - Width: 100 - Height: 25 - Text: Cancel - Font: Bold - Key: escape - diff --git a/mods/ra/metrics.yaml b/mods/ra/metrics.yaml index 8e02da14b7..1ec9953198 100644 --- a/mods/ra/metrics.yaml +++ b/mods/ra/metrics.yaml @@ -33,8 +33,8 @@ Metrics: FactionSuffix-soviet: soviet FactionSuffix-russia: soviet FactionSuffix-ukraine: soviet + IncompatibleVersionColor: 211,211,211 IncompatibleGameColor: 169,169,169 - CantJoinGameColor: 211,211,211 ProtectedGameColor: 255,0,0 IncompatibleProtectedGameColor: 178,34,34 WaitingGameColor: 0,255,0 diff --git a/mods/ra/mod.yaml b/mods/ra/mod.yaml index 15341c5fcb..c6e64603d6 100644 --- a/mods/ra/mod.yaml +++ b/mods/ra/mod.yaml @@ -104,10 +104,12 @@ ChromeLayout: ./mods/ra/chrome/lobby-globalchat.yaml ./mods/ra/chrome/color-picker.yaml ./mods/ra/chrome/map-chooser.yaml - ./mods/ra/chrome/create-server.yaml - ./mods/ra/chrome/serverbrowser.yaml + ./mods/ra/chrome/multiplayer.yaml + ./mods/ra/chrome/multiplayer-browser.yaml + ./mods/ra/chrome/multiplayer-createserver.yaml + ./mods/ra/chrome/multiplayer-directconnect.yaml + ./mods/ra/chrome/multiplayer-globalchat.yaml ./mods/ra/chrome/connection.yaml - ./mods/ra/chrome/directconnect.yaml ./mods/ra/chrome/replaybrowser.yaml ./mods/ra/chrome/dropdowns.yaml ./mods/ra/chrome/musicplayer.yaml @@ -116,7 +118,6 @@ ChromeLayout: ./mods/ra/chrome/missionbrowser.yaml ./mods/ra/chrome/confirmation-dialogs.yaml ./mods/ra/chrome/editor.yaml - ./mods/ra/chrome/globalchat.yaml Weapons: ./mods/ra/weapons/explosions.yaml diff --git a/mods/ra/uibits/spawnpoints.png b/mods/ra/uibits/spawnpoints.png index 575714f0a2208d3256b3e80c974b6260caa2615e..ef3b35756e7a8199fc9e1eb8711a4b328190b4d9 100644 GIT binary patch literal 3232 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 literal 1000 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSEX7WqAsj$Z!;#Vf<Z~8yL>4nJ zNUsNB#yF{oGC)De64!{5;QX|b^2DN4hVt@qz0ADq;^f4FRK5J7^x5xhq!<{OQ$1ZA zLn>~)y|v#vG*RaG$Hj|Q2y~dVs{Q3|njEdid+=_FM*Fry2RFL5a5!FESie|tR>@oT zMDGi7t`|ahSuaiyoiopW?jj}qyNkW=UT-!3e&>1RzW6UT?~CWXFMhZ7)vk2~8s@L; z_vii5|G(Jt-MNH^*YYRVug+9=m~RkvBVVn4|IZk~1^X=`Z)D%oW?Ep+s<FQF(9c6# z59K{9J)C!W+P=>ES1NbbuB)l7516ZWy!=)5)tT$(zYm$t`Qh~weLh~^y>n*IuHLd| zPfdMp?%R*wzI~fL;qjKG`pHJ$<b@st&wSJU^l#)sy*(N+S~V&Mws+b`?y$7A{acfq z{P^U#bAEfbZv9%Bn)>wRp+kobLp7QicG`Zk-?7S1<QyL#U!1JG{C#dqzvy3490BrP z`?)7@%1B65Y}~Qq#{!>s2Y>zgwR+~vnYWddm9KlpFE3cNaPqb<sXoWl)HWX1blkZ+ zMnX=m&fL`WYgt|0zr&X<1<4l80V?2O?DKD!efG)qxqj*UV{)aJ=B_#YV`I<B8%I>k zEc+g=nlB+Mdw2GnIW_xt?TS+WKHnq$SjwCD>q;yZHD}MSwFxg)+frk9{cy|NY!!=) zY0b)4S!Q0idGluT*|TSz)&E;dPTtrV_;kC7Lb!j|&Na_>E`7f0ooQi`&}<psM2m~x zw#{GtD_`w@I;YU(&qWU`5AZXdTfXT0$uqm|z1?;{*U}@WNF}^zo92&A>&kb(Esy3C zy1mNa&3E<2o0rq0r=PMr8hiUmr*GdAuXAEdb9@W0zkX7$zVYP4-3|9xZ=AhncYAlp z4|k1wRwpOMoV=M`v#osPhud5eZan#roA91#&pGCKZ$555Yu&`Ke3J6cNt<0|H%`xu zi)IA6t;?2aMvgawNaF_H7Iw!E8WQ_>n$|ZzWLIQ)@q2!Y;DYn@B3=yYjSLD591Khi tgNQodsn9UlfkA+Qg@F;1`Y#{PQ1O4|zo72f+kv@~!PC{xWt~$(69A*(o$3Gp diff --git a/mods/ts/chrome.yaml b/mods/ts/chrome.yaml index b044bdb67b..fd4df48b03 100644 --- a/mods/ts/chrome.yaml +++ b/mods/ts/chrome.yaml @@ -274,6 +274,8 @@ lobby-bits: spawnpoints.png admin: 64,5,7,5 colorpicker: 5,5,22,22 huepicker: 71,0,7,15 + protected: 79,0,10,13 + protected-disabled: 90,0,10,13 strategic: strategic.png unowned: 0,0,32,32 diff --git a/mods/ts/metrics.yaml b/mods/ts/metrics.yaml index 10eab2bec8..97d2f5ab14 100644 --- a/mods/ts/metrics.yaml +++ b/mods/ts/metrics.yaml @@ -26,8 +26,8 @@ Metrics: SpawnColor: 255,255,255 SpawnContrastColor: 0,0,0 SpawnLabelOffset: 0,1 + IncompatibleVersionColor: 255,0,0 IncompatibleGameColor: 169,169,169 - CantJoinGameColor: 211,211,211 ProtectedGameColor: 255,0,0 IncompatibleProtectedGameColor: 139,0,0 WaitingGameColor: 0,255,0 diff --git a/mods/ts/mod.yaml b/mods/ts/mod.yaml index bab4fda0b6..e90dd9a683 100644 --- a/mods/ts/mod.yaml +++ b/mods/ts/mod.yaml @@ -158,10 +158,12 @@ ChromeLayout: ./mods/ra/chrome/lobby-globalchat.yaml ./mods/ts/chrome/color-picker.yaml ./mods/ra/chrome/map-chooser.yaml - ./mods/ra/chrome/create-server.yaml - ./mods/ra/chrome/serverbrowser.yaml + ./mods/ra/chrome/multiplayer.yaml + ./mods/ra/chrome/multiplayer-browser.yaml + ./mods/ra/chrome/multiplayer-createserver.yaml + ./mods/ra/chrome/multiplayer-directconnect.yaml + ./mods/ra/chrome/multiplayer-globalchat.yaml ./mods/ra/chrome/connection.yaml - ./mods/ra/chrome/directconnect.yaml ./mods/ra/chrome/replaybrowser.yaml ./mods/ts/chrome/dropdowns.yaml ./mods/ra/chrome/musicplayer.yaml @@ -170,7 +172,6 @@ ChromeLayout: ./mods/ra/chrome/missionbrowser.yaml ./mods/ra/chrome/confirmation-dialogs.yaml ./mods/ra/chrome/editor.yaml - ./mods/ra/chrome/globalchat.yaml Voices: ./mods/ts/audio/voices.yaml