From caeb8f92de407fb4f99a1ff882b1d6f7c05b3d47 Mon Sep 17 00:00:00 2001 From: Marek Kulik Date: Mon, 12 Aug 2024 13:52:05 +0200 Subject: [PATCH 01/39] Fix core command handling (Fixes #3629) --- Client/core/CCommands.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Client/core/CCommands.cpp b/Client/core/CCommands.cpp index 1dfc8e0328..fecc85c3c6 100644 --- a/Client/core/CCommands.cpp +++ b/Client/core/CCommands.cpp @@ -125,6 +125,7 @@ bool CCommands::Execute(const char* szCommand, const char* szParametersIn, bool // Grab the command tagCOMMANDENTRY* pEntry = Get(szCommand); + bool wasHandled = false; if (pEntry) { // If its a core command, or if its enabled @@ -133,6 +134,8 @@ bool CCommands::Execute(const char* szCommand, const char* szParametersIn, bool // Execute it if (!bIsScriptedBind || pEntry->bAllowScriptedBind) ExecuteHandler(pEntry->pfnCmdFunc, szParameters); + + wasHandled = true; } } @@ -140,6 +143,7 @@ bool CCommands::Execute(const char* szCommand, const char* szParametersIn, bool std::string val = std::string(szCommand) + " " + std::string(szParameters ? szParameters : ""); // Is it a cvar? (syntax: cvar[ = value]) + if (!wasHandled) { // Check to see if '=' exists unsigned int nOpIndex = val.find('='); @@ -187,7 +191,7 @@ bool CCommands::Execute(const char* szCommand, const char* szParametersIn, bool // HACK: if its a 'nick' command, save it here bool bIsNickCommand = !stricmp(szCommand, "nick"); - if (bIsNickCommand && szParameters && !bIsScriptedBind) + if (!wasHandled && bIsNickCommand && szParameters && !bIsScriptedBind) { if (CCore::GetSingleton().IsValidNick(szParameters)) { @@ -208,10 +212,13 @@ bool CCommands::Execute(const char* szCommand, const char* szParametersIn, bool if (m_pfnExecuteHandler) { bool bAllowScriptedBind = (!pEntry || pEntry->bAllowScriptedBind); - if (m_pfnExecuteHandler(szCommand, szParameters, bHandleRemotely, (pEntry != NULL), bIsScriptedBind, bAllowScriptedBind)) + if (m_pfnExecuteHandler(szCommand, szParameters, bHandleRemotely, wasHandled, bIsScriptedBind, bAllowScriptedBind)) return true; } + if (wasHandled) + return true; + // Unknown command val = _("Unknown command or cvar: ") + szCommand; if (!bIsScriptedBind && !bIsNickCommand && pEntry == nullptr) From 09a1a6040ac33e351229e9b83782d95d4f63de8b Mon Sep 17 00:00:00 2001 From: Pot Bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 11:54:12 +0000 Subject: [PATCH 02/39] Update client en_US pot [ci skip] --- .../MTA/locale/en_US/client.pot | 3069 ++++++++--------- 1 file changed, 1534 insertions(+), 1535 deletions(-) diff --git a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot index b2d760afcb..7ce5401304 100644 --- a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot +++ b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: MTA San Andreas 1.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-02 18:39+0000\n" +"POT-Creation-Date: 2024-08-12 11:54+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,704 +18,835 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#. Couldn't create render target for CPostEffects -#: Client/multiplayer_sa/CMultiplayerSA_CrashFixHacks.cpp:1450 -msgid "Problem with graphics driver" -msgstr "" - -#: Client/loader/Install.cpp:265 -msgid "Unknown" -msgstr "" - -#: Client/loader/Install.cpp:272 -#, c-format -msgid "" -"The file '%s' is currently locked by %zu processes.\n" -"\n" -"Do you want to terminate the following processes and continue updating?\n" -"\n" -"%s" +#: Client/mods/deathmatch/CClient.cpp:36 +msgid "This version has expired." msgstr "" -#: Client/loader/Install.cpp:479 -#, c-format -msgid "" -"Your installation may be corrupt now.\n" -"\n" -"%zu out of %zu files could not be restored from the backup.\n" -"\n" -"You should reinstall Multi Theft Auto from www.multitheftauto.com\n" -"or try running the update with administrator rights." +#: Client/mods/deathmatch/CClient.cpp:56 +msgid "disconnect from the game" msgstr "" -#: Client/loader/Install.cpp:852 Client/loader/Dialogs.cpp:901 -msgid "Installing update..." +#: Client/mods/deathmatch/CClient.cpp:57 +msgid "shows the nametags" msgstr "" -#: Client/loader/Install.cpp:934 Client/loader/Dialogs.cpp:909 -msgid "Extracting files..." +#: Client/mods/deathmatch/CClient.cpp:58 +msgid "shows the chatbox" msgstr "" -#. ///////////////////////////////////////////////////////////////////////// -#. -#. Dialog strings -#. -#. -#. ///////////////////////////////////////////////////////////////////////// -#: Client/loader/Dialogs.cpp:131 Client/core/CVersionUpdater.cpp:1572 -#: Client/core/CVersionUpdater.cpp:1590 Client/core/CVersionUpdater.cpp:1859 -#: Client/core/CVersionUpdater.cpp:1878 Client/core/CSettings.cpp:1389 -#: Client/core/CSettings.cpp:1413 Client/core/CSettings.cpp:4489 -#: Client/core/CSettings.cpp:4563 Client/core/CSettings.cpp:4593 -#: Client/core/CSettings.cpp:4642 Client/core/CMainMenu.cpp:1200 -#: Client/core/CQuestionBox.cpp:195 -#: Client/core/ServerBrowser/CServerInfo.cpp:479 -#: Client/gui/CGUIMessageBox_Impl.cpp:72 -msgid "Yes" +#: Client/mods/deathmatch/CClient.cpp:59 +msgid "shows the network statistics" msgstr "" -#: Client/loader/Dialogs.cpp:132 Client/core/CVersionUpdater.cpp:1571 -#: Client/core/CVersionUpdater.cpp:1589 Client/core/CVersionUpdater.cpp:1858 -#: Client/core/CVersionUpdater.cpp:1877 Client/core/CSettings.cpp:1388 -#: Client/core/CSettings.cpp:1412 Client/core/CSettings.cpp:4488 -#: Client/core/CSettings.cpp:4562 Client/core/CSettings.cpp:4592 -#: Client/core/CSettings.cpp:4641 Client/core/CMainMenu.cpp:1199 -#: Client/core/CQuestionBox.cpp:194 -#: Client/core/ServerBrowser/CServerInfo.cpp:479 -msgid "No" +#. Key commands (registered as 'mod commands', can be disabled) +#: Client/mods/deathmatch/CClient.cpp:62 +msgid "open the chat input" msgstr "" -#. Create buttons -#. OK button -#: Client/loader/Dialogs.cpp:133 Client/core/CVersionUpdater.cpp:1607 -#: Client/core/CVersionUpdater.cpp:1823 Client/core/CVersionUpdater.cpp:1916 -#: Client/core/CVersionUpdater.cpp:1938 Client/core/CVersionUpdater.cpp:1956 -#: Client/core/CVersionUpdater.cpp:1968 Client/core/CVersionUpdater.cpp:2120 -#: Client/core/CVersionUpdater.cpp:2129 Client/core/CVersionUpdater.cpp:2138 -#: Client/core/CVersionUpdater.cpp:2152 Client/core/CSettings.cpp:127 -#: Client/core/CSettings.cpp:4785 Client/gui/CGUIMessageBox_Impl.cpp:64 -msgid "OK" +#: Client/mods/deathmatch/CClient.cpp:63 +msgid "transmits voice to other players" msgstr "" -#: Client/loader/Dialogs.cpp:134 -msgid "Quit" +#: Client/mods/deathmatch/CClient.cpp:64 +msgid "enters a car as passenger" msgstr "" -#: Client/loader/Dialogs.cpp:135 -#: Client/core/ServerBrowser/CServerBrowser.cpp:556 -msgid "Help" +#: Client/mods/deathmatch/CClient.cpp:65 +msgid "next radio channel" msgstr "" -#. Cancel button -#: Client/loader/Dialogs.cpp:136 Client/core/CVersionUpdater.cpp:1790 -#: Client/core/CVersionUpdater.cpp:1806 Client/core/CVersionUpdater.cpp:1841 -#: Client/core/CSettings.cpp:132 Client/core/CSettings.cpp:4784 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:123 -#: Client/gui/CGUIMessageBox_Impl.cpp:68 -msgid "Cancel" +#: Client/mods/deathmatch/CClient.cpp:66 +msgid "previous radio channel" msgstr "" -#: Client/loader/Dialogs.cpp:151 -msgid "MTA: San Andreas has encountered a problem" +#: Client/mods/deathmatch/CClient.cpp:67 +msgid "enables the radar view" msgstr "" -#: Client/loader/Dialogs.cpp:152 -msgid "Crash information" +#: Client/mods/deathmatch/CClient.cpp:68 +msgid "zooms the radar in" msgstr "" -#: Client/loader/Dialogs.cpp:153 -msgid "" -"Tick the check box to send this crash info to MTA devs using the 'internet'" +#: Client/mods/deathmatch/CClient.cpp:69 +msgid "zooms the radar out" msgstr "" -#: Client/loader/Dialogs.cpp:154 -msgid "Doing so will increase the chance of this crash being fixed." +#: Client/mods/deathmatch/CClient.cpp:70 +msgid "moves the radar north" msgstr "" -#: Client/loader/Dialogs.cpp:155 -msgid "Do you want to restart MTA: San Andreas ?" +#: Client/mods/deathmatch/CClient.cpp:71 +msgid "moves the radar south" msgstr "" -#: Client/loader/Dialogs.cpp:162 -msgid "MTA: San Andreas - Warning" +#: Client/mods/deathmatch/CClient.cpp:72 +msgid "moves the radar east" msgstr "" -#: Client/loader/Dialogs.cpp:163 -msgid "" -"Your Grand Theft Auto: San Andreas install directory contains these files:" +#: Client/mods/deathmatch/CClient.cpp:73 +msgid "moves the radar west" msgstr "" -#: Client/loader/Dialogs.cpp:165 -msgid "" -"These files are not required and may interfere with the graphical features " -"in this version of MTA:SA.\n" -"\n" -"It is recommended that you remove or rename these files." +#: Client/mods/deathmatch/CClient.cpp:74 +msgid "attaches the radar" msgstr "" -#: Client/loader/Dialogs.cpp:167 -msgid "Keep these files, but also show this warning on next start" +#: Client/mods/deathmatch/CClient.cpp:75 +msgid "reduces radar opacity" msgstr "" -#: Client/loader/Dialogs.cpp:168 -msgid "Do not remind me about these files again" +#: Client/mods/deathmatch/CClient.cpp:76 +msgid "increases radar opacity" msgstr "" -#: Client/loader/Dialogs.cpp:169 -msgid "Rename these files from *.dll to *.dll.bak" +#: Client/mods/deathmatch/CClient.cpp:77 +msgid "toggles radar help text" msgstr "" -#: Client/loader/Dialogs.cpp:170 -msgid "Show me these files" +#: Client/mods/deathmatch/CClient.cpp:78 +msgid "sends a message to the targetted player" msgstr "" -#: Client/loader/Dialogs.cpp:171 -msgid "Play MTA:SA" +#: Client/mods/deathmatch/CClient.cpp:79 +msgid "changes to the next weapon whilst in a vehicle" msgstr "" -#: Client/loader/Dialogs.cpp:177 -msgid "MTA: San Andreas - Confusing options" +#: Client/mods/deathmatch/CClient.cpp:80 +msgid "changes to the previous weapon whilst in a vehicle" msgstr "" -#: Client/loader/Dialogs.cpp:178 -msgid "NVidia Optimus detected!" +#: Client/mods/deathmatch/CClient.cpp:81 +msgid "outputs info about the current server" msgstr "" -#: Client/loader/Dialogs.cpp:179 -msgid "Try each option and see what works:" +#. ACHTUNG" Should this be handled by the atomic cvar setter? +#: Client/mods/deathmatch/CClient.cpp:84 +msgid "defines the scale multiplier of all text-displays" msgstr "" -#: Client/loader/Dialogs.cpp:180 -msgid "A - Standard NVidia" +#. Development mode +#: Client/mods/deathmatch/CClient.cpp:91 +msgid "(Development mode) shows the colshapes" msgstr "" -#: Client/loader/Dialogs.cpp:181 -msgid "B - Alternate NVidia" +#: Client/mods/deathmatch/CClient.cpp:92 +msgid "(Development mode) prints world sound ids into the debug window" msgstr "" -#: Client/loader/Dialogs.cpp:182 -msgid "C - Standard Intel" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:37 +msgid "HOST GAME" msgstr "" -#: Client/loader/Dialogs.cpp:183 -msgid "D - Alternate Intel" +#. * +#. * Webbrowser tab +#. * +#: Client/mods/deathmatch/logic/CLocalServer.cpp:51 +#: Client/core/CSettings.cpp:442 Client/core/CSettings.cpp:630 +#: Client/core/CSettings.cpp:904 Client/core/CSettings.cpp:2018 +msgid "General" msgstr "" -#: Client/loader/Dialogs.cpp:184 -msgid "If you get desperate, this might help:" +#. m_pTabs->CreateTab ( "Gamemode" ); +#: Client/mods/deathmatch/logic/CLocalServer.cpp:53 +msgid "Resources" msgstr "" -#: Client/loader/Dialogs.cpp:185 -msgid "If you have already selected an option that works, this might help:" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:55 +#: Client/mods/deathmatch/logic/CLocalServer.cpp:57 +msgid "Server name:" msgstr "" -#: Client/loader/Dialogs.cpp:186 -msgid "Force windowed mode" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:64 +#: Client/mods/deathmatch/logic/CLocalServer.cpp:66 +msgid "Password:" msgstr "" -#: Client/loader/Dialogs.cpp:187 -msgid "Don't show again" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:73 +#: Client/mods/deathmatch/logic/CLocalServer.cpp:75 +msgid "Max players:" msgstr "" -#: Client/loader/Dialogs.cpp:194 Client/game_sa/CSettingsSA.cpp:831 -msgid "MTA: San Andreas" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:82 +#: Client/mods/deathmatch/logic/CLocalServer.cpp:84 +msgid "Broadcast:" msgstr "" -#: Client/loader/Dialogs.cpp:195 -msgid "Warning: Could not detect anti-virus product" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:86 +msgid "LAN" msgstr "" -#: Client/loader/Dialogs.cpp:197 -msgid "" -"MTA could not detect an anti-virus on your PC.\n" -"\n" -"Viruses interfere with MTA and degrade your gameplay experience.\n" -"\n" -"Press 'Help' for more information." +#. Create the tabs +#: Client/mods/deathmatch/logic/CLocalServer.cpp:90 +#: Client/core/ServerBrowser/CServerBrowser.cpp:133 +msgid "Internet" msgstr "" -#: Client/loader/Dialogs.cpp:200 -msgid "I have already installed an anti-virus" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:99 +msgid "Selected" msgstr "" -#: Client/loader/Dialogs.cpp:202 -msgid "" -"I will not install an anti-virus.\n" -"I want my PC to lag and be part of a botnet." +#: Client/mods/deathmatch/logic/CLocalServer.cpp:116 +msgid "All" msgstr "" -#: Client/loader/Dialogs.cpp:890 Client/loader/Utils.cpp:534 -msgid "Searching for Grand Theft Auto San Andreas" +#: Client/mods/deathmatch/logic/CLocalServer.cpp:118 +msgid "Start" msgstr "" -#: Client/loader/Dialogs.cpp:893 Client/loader/Utils.cpp:536 -msgid "Please start Grand Theft Auto San Andreas" +#. Cancel button +#: Client/mods/deathmatch/logic/CLocalServer.cpp:123 +#: Client/gui/CGUIMessageBox_Impl.cpp:68 Client/core/CSettings.cpp:132 +#: Client/core/CSettings.cpp:4784 Client/core/CVersionUpdater.cpp:1790 +#: Client/core/CVersionUpdater.cpp:1806 Client/core/CVersionUpdater.cpp:1841 +#: Client/loader/Dialogs.cpp:136 +msgid "Cancel" msgstr "" -#: Client/loader/Dialogs.cpp:914 Client/loader/Utils.cpp:1394 -msgid "Copying files..." +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:506 +msgid "Disconnected: Invalid nickname" msgstr "" -#: Client/loader/Dialogs.cpp:919 Client/loader/Utils.cpp:1454 -msgid "Copy finished early. Everything OK." +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:510 +msgid "Disconnect from server" msgstr "" -#: Client/loader/Dialogs.cpp:924 Client/loader/Utils.cpp:1460 -msgid "Finishing..." +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:514 +#, c-format +msgid "" +"Disconnected: Serial is banned.\n" +"Reason: %s" msgstr "" -#: Client/loader/Dialogs.cpp:928 Client/loader/Utils.cpp:1462 -msgid "Done!" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:520 +#, c-format +msgid "" +"Disconnected: You are banned.\n" +"Reason: %s" msgstr "" -#: Client/loader/CInstallManager.cpp:361 Client/loader/Utils.cpp:968 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:526 #, c-format msgid "" -"MTA:SA needs Administrator access for the following task:\n" -"\n" -" '%s'\n" -"\n" -"Please confirm in the next window." +"Disconnected: Account is banned.\n" +"Reason: %s" msgstr "" -#: Client/loader/CInstallManager.cpp:376 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:531 +msgid "Disconnected: Version mismatch" +msgstr "" + +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:535 +msgid "Disconnected: Join flood. Please wait a minute, then reconnect." +msgstr "" + +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:539 #, c-format msgid "" -"MTA:SA could not complete the following task:\n" -"\n" -" '%s'\n" +"Disconnected: Server from different branch.\n" +"Information: %s" msgstr "" -#: Client/loader/CInstallManager.cpp:426 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:544 +#, c-format msgid "" -"** The crash was caused by a graphics driver error **\n" -"\n" -"** Please update your graphics drivers **" +"Disconnected: Bad version.\n" +"Information: %s" msgstr "" -#: Client/loader/CInstallManager.cpp:532 -msgid "Install updated MTA:SA files" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:549 +#, c-format +msgid "" +"Disconnected: Server is running a newer build.\n" +"Information: %s" msgstr "" -#: Client/loader/CInstallManager.cpp:552 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:554 +#, c-format msgid "" -"Could not update due to file conflicts. Please close other applications and " -"retry" +"Disconnected: Server is running an older build.\n" +"Information: %s" msgstr "" -#. Show a message that the connection timed out and abort -#. Show failed message and abort the attempt -#. Show timeout message and disconnect -#. Display an error, reset the error status and exit -#: Client/loader/CInstallManager.cpp:552 Client/loader/CInstallManager.cpp:561 -#: Client/loader/MainFunctions.cpp:252 Client/loader/MainFunctions.cpp:267 -#: Client/loader/MainFunctions.cpp:269 Client/loader/MainFunctions.cpp:846 -#: Client/core/CSettings.cpp:2941 Client/core/CSettings.cpp:4166 -#: Client/core/CSettings.cpp:4194 Client/core/CSettings.cpp:4764 -#: Client/core/CConnectManager.cpp:80 Client/core/CConnectManager.cpp:111 -#: Client/core/CConnectManager.cpp:127 Client/core/CConnectManager.cpp:263 -#: Client/core/CConnectManager.cpp:321 Client/core/CConnectManager.cpp:404 -#: Client/core/CConnectManager.cpp:411 Client/core/CConnectManager.cpp:421 -#: Client/core/CCore.cpp:1275 Client/core/CCore.cpp:1288 -#: Client/core/CGUI.cpp:87 Client/core/DXHook/CDirect3DHook9.cpp:127 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1278 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1300 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1357 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1406 -#: Client/mods/deathmatch/logic/CResourceFileDownloadManager.cpp:145 -#: Client/mods/deathmatch/logic/CClientGame.cpp:635 -#: Client/mods/deathmatch/logic/CClientGame.cpp:709 -#: Client/mods/deathmatch/logic/CClientGame.cpp:733 -#: Client/mods/deathmatch/logic/CClientGame.cpp:755 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1168 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1248 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1258 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1327 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1364 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1413 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1425 -#: Shared/mods/deathmatch/logic/CLatentTransferManager.cpp:378 -#: Shared/sdk/SharedUtil.Misc.hpp:137 -msgid "Error" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:559 +msgid "Disconnected: Nick already in use" msgstr "" -#: Client/loader/CInstallManager.cpp:561 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:563 +msgid "Disconnected: Player element could not be created." +msgstr "" + +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:567 #, c-format -msgid "Multi Theft Auto has not been installed properly, please reinstall. %s" +msgid "Disconnected: Server refused the connection: %s" msgstr "" -#: Client/loader/CInstallManager.cpp:613 -msgid "Create GTA:SA junctions" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:572 +msgid "Disconnected: Serial verification failed" msgstr "" -#: Client/loader/CInstallManager.cpp:657 -msgid "MTA:SA cannot launch because copying a file failed:" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:576 +#, c-format +msgid "Disconnected: Connection desync %s" msgstr "" -#: Client/loader/CInstallManager.cpp:663 Client/loader/CInstallManager.cpp:703 -msgid "MTA:SA cannot launch because an MTA:SA file is incorrect or missing:" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:585 +#, c-format +msgid "Disconnected: You were kicked by %s" msgstr "" -#: Client/loader/CInstallManager.cpp:672 -msgid "Copy MTA:SA files" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:590 +#, c-format +msgid "Disconnected: You were banned by %s" msgstr "" -#: Client/loader/CInstallManager.cpp:695 Client/loader/CInstallManager.cpp:773 -msgid "MTA:SA cannot launch because a GTA:SA file is incorrect or missing:" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:601 +msgid "Disconnected: Server shutdown or restarting" msgstr "" -#: Client/loader/CInstallManager.cpp:780 -msgid "Patch GTA:SA dependency" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:621 +msgid "You were kicked from the game" msgstr "" -#: Client/loader/CInstallManager.cpp:828 -msgid "" -"MTA:SA cannot launch because the GTA:SA executable is incorrect or missing:" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:622 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:633 +msgid "This server requires a non-modifed gta_sa.exe" msgstr "" -#: Client/loader/CInstallManager.cpp:832 -msgid "" -"Please check your anti-virus for a false-positive detection, try to add an " -"exception for the GTA:SA executable and restart MTA:SA." +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:623 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:634 +msgid "Please replace gta_sa.exe" msgstr "" -#: Client/loader/CInstallManager.cpp:838 -msgid "Generate GTA:SA" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:624 +msgid "This server does not allow custom D3D9.DLLs" msgstr "" -#: Client/loader/CInstallManager.cpp:853 -msgid "MTA:SA cannot launch because the GTA:SA executable is not loadable:" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:625 +msgid "Remove D3D9.DLL from your GTA install directory and restart MTA" msgstr "" -#: Client/loader/CInstallManager.cpp:860 Client/loader/CInstallManager.cpp:883 -msgid "Patch GTA:SA" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:626 +msgid "This server does not allow virtual machines" msgstr "" -#: Client/loader/CInstallManager.cpp:876 -msgid "MTA:SA cannot launch because patching GTA:SA has failed:" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:627 +msgid "This server requires driver signing to be enabled" msgstr "" -#: Client/loader/CInstallManager.cpp:1057 Client/core/CCore.cpp:811 -#, c-format -msgid "MTA:SA cannot continue because drive %s does not have enough space." +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:628 +msgid "Please restart your PC" msgstr "" -#: Client/loader/CInstallManager.cpp:1113 -msgid "Missing file:" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:629 +msgid "This server has detected missing anti-cheat components" msgstr "" -#: Client/loader/CInstallManager.cpp:1117 -msgid "If MTA fails to load, please re-install GTA:SA" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:630 +msgid "Try restarting MTA" msgstr "" -#: Client/loader/CInstallManager.cpp:1152 -msgid "Update install settings" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:631 +msgid "This server requires a non-modifed gta3.img and gta_int.img" msgstr "" -#: Client/loader/CInstallManager.cpp:1305 -msgid "Update compatibility settings" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:632 +msgid "Please replace gta3.img or gta_int.img" msgstr "" -#: Client/loader/Utils.cpp:600 -msgid "Select your Grand Theft Auto: San Andreas Installation Directory" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:635 +msgid "This server does not allow Wine" msgstr "" -#: Client/loader/Utils.cpp:1069 -#, c-format -msgid "Error loading %s module! (%s)" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:636 +msgid "Ensure no other program is modifying MTA:SA" msgstr "" -#: Client/loader/Utils.cpp:1502 -#, c-format -msgid "" -"New installation of %s detected.\n" -"\n" -"Do you want to copy your settings from %s ?" +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:650 +msgid "Time Remaining: " msgstr "" -#: Client/loader/Utils.cpp:1541 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:660 #, c-format -msgid "GTA:SA had trouble opening the file '%s'" -msgstr "" +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "" +msgstr[1] "" -#: Client/loader/Utils.cpp:1563 +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:662 #, c-format -msgid "GTA:SA is missing the file '%s'." +msgid "%d hour" +msgid_plural "%d hours" +msgstr[0] "" +msgstr[1] "" + +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:664 +#, c-format +msgid "%d minute" +msgid_plural "%d minutes" +msgstr[0] "" +msgstr[1] "" + +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:666 +#, c-format +msgid "%d second" +msgid_plural "%d seconds" +msgstr[0] "" +msgstr[1] "" + +#. Display the error +#: Client/mods/deathmatch/logic/CPacketHandler.cpp:670 +msgid "Disconnected" msgstr "" -#: Client/loader/Utils.cpp:1588 -msgid "GTA:SA had trouble loading a model." +#: Client/mods/deathmatch/logic/CClientGame.cpp:369 +msgid "Flying a UFO around" msgstr "" -#: Client/loader/Utils.cpp:1590 -msgid "If you recently modified gta3.img, then try reinstalling GTA:SA." +#: Client/mods/deathmatch/logic/CClientGame.cpp:369 +msgid "Cruising around" msgstr "" -#: Client/loader/Utils.cpp:1615 -msgid "GTA:SA had trouble adding an upgrade to a vehicle." +#: Client/mods/deathmatch/logic/CClientGame.cpp:369 +msgid "Riding the waves of" msgstr "" -#: Client/loader/Utils.cpp:1634 -#, c-format -msgid "GTA:SA found errors in the file '%s'" +#: Client/mods/deathmatch/logic/CClientGame.cpp:370 +msgid "Riding the train in" msgstr "" -#: Client/loader/Utils.cpp:1716 -msgid "Did your computer restart when playing MTA:SA?" +#: Client/mods/deathmatch/logic/CClientGame.cpp:370 +msgid "Flying around" msgstr "" -#: Client/loader/Utils.cpp:1781 -msgid "Please terminate the following programs before continuing:" +#: Client/mods/deathmatch/logic/CClientGame.cpp:371 +msgid "Riding around" msgstr "" -#: Client/loader/MainFunctions.cpp:248 -msgid "" -"Trouble restarting MTA:SA\n" -"\n" -"If the problem persists, open Task Manager and\n" -"stop the 'gta_sa.exe' and 'Multi Theft Auto.exe' processes\n" -"\n" -"\n" -"Try to launch MTA:SA again?" +#: Client/mods/deathmatch/logic/CClientGame.cpp:371 +msgid "Monster truckin' around" msgstr "" -#: Client/loader/MainFunctions.cpp:266 -msgid "" -"Another instance of MTA is already running.\n" -"\n" -"If this problem persists, please restart your computer" +#: Client/mods/deathmatch/logic/CClientGame.cpp:371 +msgid "Quaddin' around" msgstr "" -#: Client/loader/MainFunctions.cpp:269 -msgid "" -"Another instance of MTA is already running.\n" -"\n" -"Do you want to terminate it?" +#: Client/mods/deathmatch/logic/CClientGame.cpp:372 +msgid "Bunny hopping around" msgstr "" -#: Client/loader/MainFunctions.cpp:294 -msgid "" -"Are you having problems running MTA:SA?.\n" -"\n" -"Do you want to revert to an earlier version?" +#: Client/mods/deathmatch/logic/CClientGame.cpp:372 +msgid "Doing weird stuff in" msgstr "" -#: Client/loader/MainFunctions.cpp:324 -msgid "" -"There seems to be a problem launching MTA:SA.\n" -"Resetting GTA settings can sometimes fix this problem.\n" -"\n" -"Do you want to reset GTA settings now?" +#: Client/mods/deathmatch/logic/CClientGame.cpp:376 +msgid "Climbing around in" msgstr "" -#: Client/loader/MainFunctions.cpp:339 -msgid "" -"GTA settings have been reset.\n" -"\n" -"Press OK to continue." +#: Client/mods/deathmatch/logic/CClientGame.cpp:377 +#: Client/mods/deathmatch/logic/CClientGame.cpp:378 +msgid "Doing a drive-by in" msgstr "" -#: Client/loader/MainFunctions.cpp:344 -#, c-format -msgid "File could not be deleted: '%s'" +#: Client/mods/deathmatch/logic/CClientGame.cpp:379 +msgid "Blub blub..." msgstr "" -#. No settings to delete, or can't find them -#: Client/loader/MainFunctions.cpp:352 -msgid "" -"Are you having problems running MTA:SA?.\n" -"\n" -"Do you want to see some online help?" +#: Client/mods/deathmatch/logic/CClientGame.cpp:380 +msgid "Breathing water" msgstr "" -#. Inform user -#: Client/loader/MainFunctions.cpp:388 -msgid "" -"Are you having problems running MTA:SA?.\n" -"\n" -"Do you want to change the following setting?" +#: Client/mods/deathmatch/logic/CClientGame.cpp:381 +msgid "Drowning in" msgstr "" -#: Client/loader/MainFunctions.cpp:389 Client/core/CSettings.cpp:662 -#: Client/core/CSettings.cpp:1004 -msgid "Fullscreen mode:" +#: Client/mods/deathmatch/logic/CClientGame.cpp:382 +msgid "Ducking for cover in" msgstr "" -#: Client/loader/MainFunctions.cpp:389 Client/core/CSettings.cpp:670 -#: Client/core/CSettings.cpp:1615 -msgid "Borderless window" +#: Client/mods/deathmatch/logic/CClientGame.cpp:383 +msgid "Fighting in" msgstr "" -#: Client/loader/MainFunctions.cpp:431 -msgid "" -"Are you having problems running MTA:SA?.\n" -"\n" -"Try disabling the following products for GTA and MTA:" +#: Client/mods/deathmatch/logic/CClientGame.cpp:384 +msgid "Throwing fists in" msgstr "" -#: Client/loader/MainFunctions.cpp:465 -msgid "" -"WARNING\n" -"\n" -"MTA:SA has detected unusual activity.\n" -"Please run a virus scan to ensure your system is secure.\n" -"\n" +#: Client/mods/deathmatch/logic/CClientGame.cpp:385 +msgid "Blastin' fools in" msgstr "" -#: Client/loader/MainFunctions.cpp:468 -#, c-format -msgid "The detected file was: %s\n" +#: Client/mods/deathmatch/logic/CClientGame.cpp:386 +msgid "Shooting up" msgstr "" -#: Client/loader/MainFunctions.cpp:602 -msgid "" -"An instance of GTA: San Andreas is already running. It needs to be " -"terminated before MTA:SA can be started. Do you want to do that now?" +#: Client/mods/deathmatch/logic/CClientGame.cpp:387 +msgid "Jetpacking in" msgstr "" -#: Client/loader/MainFunctions.cpp:603 Client/loader/MainFunctions.cpp:610 -#: Client/loader/MainFunctions.cpp:1219 -#: Client/core/ServerBrowser/CServerInfo.cpp:319 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1380 -msgid "Information" +#: Client/mods/deathmatch/logic/CClientGame.cpp:388 +msgid "Literally on fire in" msgstr "" -#: Client/loader/MainFunctions.cpp:609 -msgid "" -"Unable to terminate GTA: San Andreas. If the problem persists, please " -"restart your computer." +#: Client/mods/deathmatch/logic/CClientGame.cpp:389 +msgid "Burning up in" msgstr "" -#: Client/loader/MainFunctions.cpp:632 -msgid "" -"Registry entries are missing. Please reinstall Multi Theft Auto: San Andreas." +#: Client/mods/deathmatch/logic/CClientGame.cpp:390 +msgid "Swimming in" msgstr "" -#: Client/loader/MainFunctions.cpp:638 -msgid "" -"The path to your installation of GTA: San Andreas contains unsupported " -"(unicode) characters. Please move your Grand Theft Auto: San Andreas " -"installation to a compatible path that contains only standard ASCII " -"characters and reinstall Multi Theft Auto: San Andreas." +#: Client/mods/deathmatch/logic/CClientGame.cpp:391 +msgid "Floating around in" msgstr "" -#: Client/loader/MainFunctions.cpp:648 -msgid "" -"The path to your installation of 'MTA:SA' or 'GTA: San Andreas'\n" -"contains a ';' (semicolon).\n" -"\n" -" If you experience problems when running MTA:SA,\n" -" move your installation(s) to a path that does not contain a semicolon." +#: Client/mods/deathmatch/logic/CClientGame.cpp:392 +msgid "Being chased by a shark" msgstr "" -#: Client/loader/MainFunctions.cpp:810 +#: Client/mods/deathmatch/logic/CClientGame.cpp:393 +msgid "Choking to death in" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:527 +#: Client/core/CSettings.cpp:3479 Client/core/CMainMenu.cpp:304 +#: Client/core/CCore.cpp:674 +msgid "Main menu" +msgstr "" + +#. Show timeout message and disconnect +#. Display an error, reset the error status and exit +#. Show a message that the connection timed out and abort +#. Show failed message and abort the attempt +#: Client/mods/deathmatch/logic/CClientGame.cpp:635 +#: Client/mods/deathmatch/logic/CClientGame.cpp:709 +#: Client/mods/deathmatch/logic/CClientGame.cpp:733 +#: Client/mods/deathmatch/logic/CClientGame.cpp:755 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1168 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1248 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1258 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1327 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1364 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1413 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1425 +#: Client/mods/deathmatch/logic/CResourceFileDownloadManager.cpp:145 +#: Client/core/CConnectManager.cpp:80 Client/core/CConnectManager.cpp:111 +#: Client/core/CConnectManager.cpp:127 Client/core/CConnectManager.cpp:263 +#: Client/core/CConnectManager.cpp:321 Client/core/CConnectManager.cpp:404 +#: Client/core/CConnectManager.cpp:411 Client/core/CConnectManager.cpp:421 +#: Client/core/CSettings.cpp:2941 Client/core/CSettings.cpp:4166 +#: Client/core/CSettings.cpp:4194 Client/core/CSettings.cpp:4764 +#: Client/core/CCore.cpp:1275 Client/core/CCore.cpp:1288 +#: Client/core/CGUI.cpp:87 Client/core/DXHook/CDirect3DHook9.cpp:127 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1278 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1300 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1357 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1406 +#: Client/loader/MainFunctions.cpp:252 Client/loader/MainFunctions.cpp:267 +#: Client/loader/MainFunctions.cpp:269 Client/loader/MainFunctions.cpp:846 +#: Client/loader/CInstallManager.cpp:552 Client/loader/CInstallManager.cpp:561 +#: Shared/mods/deathmatch/logic/CLatentTransferManager.cpp:378 +#: Shared/sdk/SharedUtil.Misc.hpp:137 +msgid "Error" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:635 +#: Client/mods/deathmatch/logic/CClientGame.cpp:733 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1300 +#: Client/core/ServerBrowser/CServerBrowser.cpp:1357 +msgid "Invalid nickname! Please go to Settings and set a new one!" +msgstr "" + +#. Display the status box +#: Client/mods/deathmatch/logic/CClientGame.cpp:651 +#: Client/core/CConnectManager.cpp:148 +msgid "CONNECTING" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:651 +msgid "Entering the game ..." +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:709 msgid "" -"Load failed. Please ensure that the latest data files have been installed " -"correctly." +"Not connected; please use Quick Connect or the 'connect' command to connect " +"to a server." msgstr "" -#: Client/loader/MainFunctions.cpp:819 +#: Client/mods/deathmatch/logic/CClientGame.cpp:755 +msgid "Could not start the local server. See console for details." +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:765 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1237 +msgid "Local Server" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:765 +msgid "Starting local server ..." +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1013 +msgid "Area 51" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1022 +msgid "Walking around " +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1083 +#: Client/mods/deathmatch/logic/CResource.cpp:372 +#: Client/core/CSettings.cpp:3483 Client/core/CCore.cpp:674 +msgid "In-game" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1168 #, c-format -msgid "Load failed. Please ensure that %s is installed correctly." +msgid "You were kicked from the game ( %s )" msgstr "" -#: Client/loader/MainFunctions.cpp:826 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1237 +msgid "Connecting to local server..." +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1248 +msgid "Error connecting to server." +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1258 +msgid "Connecting to local server timed out. See console for details." +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1327 +#: Client/core/CConnectManager.cpp:263 +msgid "Connection timed out" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1364 +msgid "Connection with the server was lost" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1375 +#: Client/core/CConnectManager.cpp:277 Client/core/CConnectManager.cpp:281 +msgid "Disconnected: unknown protocol error" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1379 +#: Client/core/CConnectManager.cpp:285 +msgid "Disconnected: disconnected remotely" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1383 +#: Client/core/CConnectManager.cpp:289 +msgid "Disconnected: connection lost remotely" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1387 +#: Client/core/CConnectManager.cpp:293 +msgid "Disconnected: you are banned from this server" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1391 +msgid "Disconnected: the server is currently full" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1395 +#: Client/core/CConnectManager.cpp:300 +msgid "Disconnected: disconnected from the server" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1399 +#: Client/core/CConnectManager.cpp:304 +msgid "Disconnected: connection to the server was lost" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1403 +msgid "Disconnected: invalid password specified" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1407 +#: Client/core/CConnectManager.cpp:311 +msgid "Disconnected: connection was refused" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:1425 +msgid "MTA Client verification failed!" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:5708 +msgid "In a ditch" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:5708 +msgid "En-route to hospital" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:5708 +msgid "Meeting their maker" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:5709 +msgid "Regretting their decisions" +msgstr "" + +#: Client/mods/deathmatch/logic/CClientGame.cpp:5709 +msgid "Wasted" +msgstr "" + +#: Client/mods/deathmatch/logic/CTransferBox.cpp:25 +msgid "Map download progress:" +msgstr "" + +#: Client/mods/deathmatch/logic/CTransferBox.cpp:28 +msgid "Download Progress:" +msgstr "" + +#. Find our largest piece of text, so we can size accordingly +#: Client/mods/deathmatch/logic/CTransferBox.cpp:42 +#: Client/mods/deathmatch/logic/CTransferBox.cpp:105 #, c-format -msgid "Load failed. Could not find gta_sa.exe in %s." +msgid "%s of %s" msgstr "" -#: Client/loader/MainFunctions.cpp:836 +#: Client/mods/deathmatch/logic/CTransferBox.cpp:44 +#: Client/mods/deathmatch/logic/CTransferBox.cpp:65 +msgid "Disconnect to cancel download" +msgstr "" + +#. Throw the error and disconnect +#: Client/mods/deathmatch/logic/CResourceFileDownloadManager.cpp:141 #, c-format -msgid "" -"Load failed. %s exists in the GTA directory. Please delete before continuing." +msgid "Download error: %s" msgstr "" -#: Client/loader/MainFunctions.cpp:845 +#. Create buttons +#. OK button +#: Client/gui/CGUIMessageBox_Impl.cpp:64 Client/core/CSettings.cpp:127 +#: Client/core/CSettings.cpp:4785 Client/core/CVersionUpdater.cpp:1607 +#: Client/core/CVersionUpdater.cpp:1823 Client/core/CVersionUpdater.cpp:1916 +#: Client/core/CVersionUpdater.cpp:1938 Client/core/CVersionUpdater.cpp:1956 +#: Client/core/CVersionUpdater.cpp:1968 Client/core/CVersionUpdater.cpp:2120 +#: Client/core/CVersionUpdater.cpp:2129 Client/core/CVersionUpdater.cpp:2138 +#: Client/core/CVersionUpdater.cpp:2152 Client/loader/Dialogs.cpp:133 +msgid "OK" +msgstr "" + +#. ///////////////////////////////////////////////////////////////////////// +#. +#. Dialog strings +#. +#. +#. ///////////////////////////////////////////////////////////////////////// +#: Client/gui/CGUIMessageBox_Impl.cpp:72 Client/core/CQuestionBox.cpp:195 +#: Client/core/CSettings.cpp:1389 Client/core/CSettings.cpp:1413 +#: Client/core/CSettings.cpp:4489 Client/core/CSettings.cpp:4563 +#: Client/core/CSettings.cpp:4593 Client/core/CSettings.cpp:4642 +#: Client/core/CMainMenu.cpp:1200 Client/core/CVersionUpdater.cpp:1572 +#: Client/core/CVersionUpdater.cpp:1590 Client/core/CVersionUpdater.cpp:1859 +#: Client/core/CVersionUpdater.cpp:1878 +#: Client/core/ServerBrowser/CServerInfo.cpp:479 Client/loader/Dialogs.cpp:131 +msgid "Yes" +msgstr "" + +#: Client/core/CCommandFuncs.cpp:24 +msgid "***[ COMMAND HELP ]***\n" +msgstr "" + +#: Client/core/CCommandFuncs.cpp:158 #, c-format -msgid "Main file has an incorrect name (%s)" +msgid "* The time is %d:%02d:%02d" msgstr "" -#: Client/loader/MainFunctions.cpp:856 -msgid "" -"Main file is unsigned. Possible virus activity.\n" -"\n" -"See online help if MTA does not work correctly." +#: Client/core/CCommandFuncs.cpp:242 +msgid "connect: Syntax is 'connect [ ]'" msgstr "" -#: Client/loader/MainFunctions.cpp:882 +#: Client/core/CCommandFuncs.cpp:250 Client/core/CCommandFuncs.cpp:318 +msgid "connect: Bad port number" +msgstr "" + +#: Client/core/CCommandFuncs.cpp:272 Client/core/CCommandFuncs.cpp:333 #, c-format -msgid "" -"Data file %s is missing. Possible virus activity.\n" -"\n" -"Consider reinstalling Multi Theft Auto for your security.\n" -"See online help if MTA does not work correctly." +msgid "connect: Connecting to %s:%u..." msgstr "" -#: Client/loader/MainFunctions.cpp:893 +#: Client/core/CCommandFuncs.cpp:276 Client/core/CCommandFuncs.cpp:337 #, c-format -msgid "" -"Data file %s is modified. Possible virus activity.\n" -"\n" -"Consider reinstalling Multi Theft Auto for your security.\n" -"See online help if MTA does not work correctly." +msgid "connect: could not connect to %s:%u!" msgstr "" -#: Client/loader/MainFunctions.cpp:907 -msgid "" -".asi files are in the 'MTA:SA' or 'GTA: San Andreas' installation " -"directory.\n" -"\n" -"Remove these .asi files if you experience problems with MTA:SA." +#: Client/core/CCommandFuncs.cpp:281 +msgid "connect: Failed to unload current mod" msgstr "" -#: Client/loader/MainFunctions.cpp:1009 -msgid "" -"File version mismatch error. Reinstall MTA:SA if you experience problems.\n" +#: Client/core/CCommandFuncs.cpp:371 +msgid "Bound all controls from GTA" msgstr "" -#: Client/loader/MainFunctions.cpp:1018 -msgid "Some files are missing. Reinstall MTA:SA if you experience problems.\n" +#: Client/core/CCommandFuncs.cpp:385 +msgid "Saved configuration file" msgstr "" -#: Client/loader/MainFunctions.cpp:1030 -msgid "" -"MTA:SA is not compatible with Windows 'Safe Mode'.\n" -"\n" -"Please restart your PC.\n" +#. Print it +#: Client/core/CCommandFuncs.cpp:451 +#, c-format +msgid "* Your serial is: %s" msgstr "" -#: Client/loader/MainFunctions.cpp:1123 -msgid "Fix configuration issue" +#. Unknown command +#: Client/core/CCommands.cpp:223 +msgid "Unknown command or cvar: " msgstr "" -#. Try to relaunch as admin if not done so already -#: Client/loader/MainFunctions.cpp:1157 -msgid "Fix elevation required error" +#. Create window +#: Client/core/CConsole.cpp:417 +msgid "CONSOLE" msgstr "" -#: Client/loader/MainFunctions.cpp:1164 +#: Client/core/CConnectManager.cpp:79 +msgid "Connecting failed. Invalid nick provided!" +msgstr "" + +#: Client/core/CConnectManager.cpp:110 +msgid "Connecting failed. Invalid host provided!" +msgstr "" + +#: Client/core/CConnectManager.cpp:126 #, c-format -msgid "" -"Could not start Grand Theft Auto: San Andreas. Please try restarting, or if " -"the problem persists,contact MTA at www.multitheftauto.com. \n" -"\n" -"[%s]" +msgid "Connecting to %s at port %u failed!" +msgstr "" + +#. Display the status box +#: Client/core/CConnectManager.cpp:147 +#, c-format +msgid "Connecting to %s:%u ..." +msgstr "" + +#. Failed loading the mod +#: Client/core/CConnectManager.cpp:403 +#, c-format +msgid "No such mod installed (%s)" msgstr "" -#: Client/loader/MainFunctions.cpp:1219 -msgid "" -"GTA: San Andreas may not have launched correctly. Do you want to terminate " -"it?" +#: Client/core/CConnectManager.cpp:411 +msgid "Bad server response (2)" msgstr "" -#. Create the window -#: Client/core/CNewsBrowser.cpp:153 -msgid "NEWS" +#: Client/core/CConnectManager.cpp:421 +msgid "Bad server response (1)" msgstr "" -#. News link -#: Client/core/CNewsBrowser.cpp:171 Client/core/CNewsBrowser.cpp:172 -msgid "Visit latest news article" +#: Client/core/CQuestionBox.cpp:192 Shared/sdk/SharedUtil.Misc.hpp:688 +msgid "Do you want to see some on-line help about this problem ?" +msgstr "" + +#: Client/core/CQuestionBox.cpp:194 Client/core/CSettings.cpp:1388 +#: Client/core/CSettings.cpp:1412 Client/core/CSettings.cpp:4488 +#: Client/core/CSettings.cpp:4562 Client/core/CSettings.cpp:4592 +#: Client/core/CSettings.cpp:4641 Client/core/CMainMenu.cpp:1199 +#: Client/core/CVersionUpdater.cpp:1571 Client/core/CVersionUpdater.cpp:1589 +#: Client/core/CVersionUpdater.cpp:1858 Client/core/CVersionUpdater.cpp:1877 +#: Client/core/ServerBrowser/CServerInfo.cpp:479 Client/loader/Dialogs.cpp:132 +msgid "No" msgstr "" #: Client/core/CJoystickManager.cpp:1578 @@ -726,202 +857,191 @@ msgstr "" msgid "Brake Axis" msgstr "" -#: Client/core/CCommandFuncs.cpp:24 -msgid "***[ COMMAND HELP ]***\n" +#: Client/core/CKeyBinds.cpp:186 +msgid "Fire" msgstr "" -#: Client/core/CCommandFuncs.cpp:158 -#, c-format -msgid "* The time is %d:%02d:%02d" +#: Client/core/CKeyBinds.cpp:187 +msgid "Next weapon" msgstr "" -#: Client/core/CCommandFuncs.cpp:242 -msgid "connect: Syntax is 'connect [ ]'" +#: Client/core/CKeyBinds.cpp:188 +msgid "Previous weapon" msgstr "" -#: Client/core/CCommandFuncs.cpp:250 Client/core/CCommandFuncs.cpp:318 -msgid "connect: Bad port number" +#: Client/core/CKeyBinds.cpp:189 +msgid "Forwards" msgstr "" -#: Client/core/CCommandFuncs.cpp:272 Client/core/CCommandFuncs.cpp:333 -#, c-format -msgid "connect: Connecting to %s:%u..." +#: Client/core/CKeyBinds.cpp:190 +msgid "Backwards" msgstr "" -#: Client/core/CCommandFuncs.cpp:276 Client/core/CCommandFuncs.cpp:337 -#, c-format -msgid "connect: could not connect to %s:%u!" +#: Client/core/CKeyBinds.cpp:191 Client/core/CSettings.cpp:2240 +#: Client/core/CSettings.cpp:2268 +msgid "Left" msgstr "" -#: Client/core/CCommandFuncs.cpp:281 -msgid "connect: Failed to unload current mod" +#: Client/core/CKeyBinds.cpp:192 Client/core/CSettings.cpp:2242 +#: Client/core/CSettings.cpp:2269 +msgid "Right" msgstr "" -#: Client/core/CCommandFuncs.cpp:371 -msgid "Bound all controls from GTA" +#: Client/core/CKeyBinds.cpp:193 +msgid "Zoom in" msgstr "" -#: Client/core/CCommandFuncs.cpp:385 -msgid "Saved configuration file" +#: Client/core/CKeyBinds.cpp:194 +msgid "Zoom out" msgstr "" -#. Print it -#: Client/core/CCommandFuncs.cpp:451 -#, c-format -msgid "* Your serial is: %s" +#: Client/core/CKeyBinds.cpp:195 +msgid "Enter/Exit" msgstr "" -#: Client/core/CVersionUpdater.cpp:626 -msgid "Busy" +#: Client/core/CKeyBinds.cpp:196 +msgid "Change camera" msgstr "" -#: Client/core/CVersionUpdater.cpp:626 -msgid "Can't check for updates right now" +#. 10 +#: Client/core/CKeyBinds.cpp:197 +msgid "Jump" msgstr "" -#: Client/core/CVersionUpdater.cpp:1567 Client/core/CVersionUpdater.cpp:1587 -#: Client/core/CVersionUpdater.cpp:1605 -#, c-format -msgid "MTA:SA %s required" +#: Client/core/CKeyBinds.cpp:198 +msgid "Sprint" msgstr "" -#: Client/core/CVersionUpdater.cpp:1568 -#, c-format -msgid "" -"An updated version of MTA:SA %s is required to join the selected server.\n" -"\n" -"Do you want to download and install MTA:SA %s ?" +#: Client/core/CKeyBinds.cpp:199 +msgid "Look behind" msgstr "" -#: Client/core/CVersionUpdater.cpp:1588 -#, c-format -msgid "Do you want to launch MTA:SA %s and connect to this server ?" +#: Client/core/CKeyBinds.cpp:200 +msgid "Crouch" msgstr "" -#: Client/core/CVersionUpdater.cpp:1606 -msgid "" -"It is not possible to connect at this time.\n" -"\n" -"Please try later." +#: Client/core/CKeyBinds.cpp:201 +msgid "Action" msgstr "" -#: Client/core/CVersionUpdater.cpp:1788 -msgid "Connecting" +#: Client/core/CKeyBinds.cpp:202 +msgid "Walk" msgstr "" -#: Client/core/CVersionUpdater.cpp:1789 Client/core/CVersionUpdater.cpp:1805 -msgid "Please wait..." +#: Client/core/CKeyBinds.cpp:203 +msgid "Vehicle fire" msgstr "" -#: Client/core/CVersionUpdater.cpp:1804 -msgid "CHECKING" +#: Client/core/CKeyBinds.cpp:204 +msgid "Vehicle secondary fire" msgstr "" -#: Client/core/CVersionUpdater.cpp:1821 Client/core/CVersionUpdater.cpp:1914 -msgid "UPDATE CHECK" +#: Client/core/CKeyBinds.cpp:205 +msgid "Vehicle left" msgstr "" -#: Client/core/CVersionUpdater.cpp:1822 -msgid "No update needed" +#: Client/core/CKeyBinds.cpp:206 +msgid "Vehicle right" msgstr "" -#: Client/core/CVersionUpdater.cpp:1839 -msgid "DOWNLOADING" +#. 20 +#: Client/core/CKeyBinds.cpp:207 +msgid "Steer forwards/down" msgstr "" -#: Client/core/CVersionUpdater.cpp:1840 -msgid "waiting..." +#: Client/core/CKeyBinds.cpp:208 +msgid "Steer backwards/up" msgstr "" -#: Client/core/CVersionUpdater.cpp:1856 -msgid "MANDATORY UPDATE" +#: Client/core/CKeyBinds.cpp:209 +msgid "Accelerate" msgstr "" -#: Client/core/CVersionUpdater.cpp:1857 -msgid "" -"To join this server, you must update MTA.\n" -"\n" -" Do you want to update now ?" +#: Client/core/CKeyBinds.cpp:210 +msgid "Brake/Reverse" msgstr "" -#: Client/core/CVersionUpdater.cpp:1875 -msgid "OPTIONAL UPDATE" +#: Client/core/CKeyBinds.cpp:211 +msgid "Radio next" msgstr "" -#: Client/core/CVersionUpdater.cpp:1876 -msgid "" -"Server says an update is recommended, but not essential.\n" -"\n" -" Do you want to update now ?" +#: Client/core/CKeyBinds.cpp:212 +msgid "Radio previous" msgstr "" -#: Client/core/CVersionUpdater.cpp:1915 -msgid "" -"Update not currently avalable.\n" -"\n" -"Please check www.mtasa.com" +#: Client/core/CKeyBinds.cpp:213 +msgid "Radio user track skip" msgstr "" -#: Client/core/CVersionUpdater.cpp:1936 Client/core/CVersionUpdater.cpp:2118 -msgid "ERROR SAVING" +#: Client/core/CKeyBinds.cpp:214 +msgid "Horn" msgstr "" -#: Client/core/CVersionUpdater.cpp:1937 Client/core/CVersionUpdater.cpp:2119 -msgid "Unable to create the file." +#: Client/core/CKeyBinds.cpp:215 +msgid "Sub-mission" msgstr "" -#: Client/core/CVersionUpdater.cpp:1945 Client/core/CVersionUpdater.cpp:1954 -#: Client/core/CVersionUpdater.cpp:2127 Client/core/CVersionUpdater.cpp:2136 -msgid "ERROR DOWNLOADING" +#: Client/core/CKeyBinds.cpp:216 +msgid "Handbrake" msgstr "" -#: Client/core/CVersionUpdater.cpp:1946 Client/core/CVersionUpdater.cpp:2128 -msgid "The downloaded file appears to be incorrect." +#. 30 +#: Client/core/CKeyBinds.cpp:217 +msgid "Vehicle look left" msgstr "" -#: Client/core/CVersionUpdater.cpp:1955 Client/core/CVersionUpdater.cpp:2137 -msgid "For some reason." +#: Client/core/CKeyBinds.cpp:218 +msgid "Vehicle look right" msgstr "" -#: Client/core/CVersionUpdater.cpp:1966 Client/core/CVersionUpdater.cpp:2150 -msgid "DOWNLOAD COMPLETE" +#: Client/core/CKeyBinds.cpp:219 +msgid "Vehicle look behind" msgstr "" -#: Client/core/CVersionUpdater.cpp:1990 -msgid " - Unknown problem in _DialogUpdateResult" +#: Client/core/CKeyBinds.cpp:220 +msgid "Vehicle mouse look" msgstr "" -#: Client/core/CVersionUpdater.cpp:2081 Client/core/CSettings.cpp:4590 -msgid "CUSTOMIZED GTA:SA FILES" +#: Client/core/CKeyBinds.cpp:221 +msgid "Special control left" msgstr "" -#: Client/core/CVersionUpdater.cpp:2088 Client/core/CVersionUpdater.cpp:2098 -msgid "Ok" +#: Client/core/CKeyBinds.cpp:222 +msgid "Special control right" msgstr "" -#: Client/core/CVersionUpdater.cpp:2096 -msgid "ERROR" +#: Client/core/CKeyBinds.cpp:223 +msgid "Special control down" msgstr "" -#: Client/core/CVersionUpdater.cpp:2097 -msgid "" -"Some MTA:SA data files are missing.\n" -"\n" -"\n" -"Please reinstall MTA:SA" +#: Client/core/CKeyBinds.cpp:224 +msgid "Special control up" msgstr "" -#: Client/core/CVersionUpdater.cpp:2774 -#, c-format -msgid "%3d %% completed" +#: Client/core/CKeyBinds.cpp:225 +msgid "Aim weapon" msgstr "" -#: Client/core/CVersionUpdater.cpp:2777 -#, c-format -msgid "" -"\n" -"\n" -"Waiting for response - %-3d" +#: Client/core/CKeyBinds.cpp:226 +msgid "Conversation yes" +msgstr "" + +#. 40 +#: Client/core/CKeyBinds.cpp:227 +msgid "Conversation no" +msgstr "" + +#: Client/core/CKeyBinds.cpp:228 +msgid "Group control forwards" +msgstr "" + +#: Client/core/CKeyBinds.cpp:229 +msgid "Group control backwards" +msgstr "" + +#. TRANSLATORS: Replace with your language native name +#: Client/core/CLocalization.cpp:16 +msgid "English" msgstr "" #. Create window (with frame) if it will fit inside the screen resolution @@ -1103,20 +1223,11 @@ msgid "MTA volume:" msgstr "" #: Client/core/CSettings.cpp:440 Client/core/CSettings.cpp:524 -msgid "Voice volume:" -msgstr "" - -#: Client/core/CSettings.cpp:440 Client/core/CSettings.cpp:565 -msgid "Play mode:" -msgstr "" - -#. * -#. * Webbrowser tab -#. * -#: Client/core/CSettings.cpp:442 Client/core/CSettings.cpp:630 -#: Client/core/CSettings.cpp:904 Client/core/CSettings.cpp:2018 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:51 -msgid "General" +msgid "Voice volume:" +msgstr "" + +#: Client/core/CSettings.cpp:440 Client/core/CSettings.cpp:565 +msgid "Play mode:" msgstr "" #: Client/core/CSettings.cpp:543 @@ -1218,10 +1329,20 @@ msgstr "" msgid "DPI aware" msgstr "" +#: Client/core/CSettings.cpp:662 Client/core/CSettings.cpp:1004 +#: Client/loader/MainFunctions.cpp:389 +msgid "Fullscreen mode:" +msgstr "" + #: Client/core/CSettings.cpp:669 Client/core/CSettings.cpp:1613 msgid "Standard" msgstr "" +#: Client/core/CSettings.cpp:670 Client/core/CSettings.cpp:1615 +#: Client/loader/MainFunctions.cpp:389 +msgid "Borderless window" +msgstr "" + #: Client/core/CSettings.cpp:671 Client/core/CSettings.cpp:1617 msgid "Borderless keep res" msgstr "" @@ -1531,668 +1652,414 @@ msgstr "" msgid "" "\n" "\n" -"Do you want to disconnect now?" -msgstr "" - -#: Client/core/CSettings.cpp:1410 -msgid "DISCONNECT REQUIRED" -msgstr "" - -#. Update the joystick name -#: Client/core/CSettings.cpp:1737 -msgid "Joypad not detected - Check connections and restart game" -msgstr "" - -#: Client/core/CSettings.cpp:1932 -msgid "Binding axis" -msgstr "" - -#: Client/core/CSettings.cpp:1932 -msgid "Move an axis to bind, or escape to clear" -msgstr "" - -#: Client/core/CSettings.cpp:2009 -msgid "Language:" -msgstr "" - -#: Client/core/CSettings.cpp:2009 -msgid "Skin:" -msgstr "" - -#: Client/core/CSettings.cpp:2009 -msgid "Presets:" -msgstr "" - -#: Client/core/CSettings.cpp:2058 -msgid "Chat" -msgstr "" - -#: Client/core/CSettings.cpp:2075 -msgid "Load" -msgstr "" - -#: Client/core/CSettings.cpp:2087 -msgid "Colors" -msgstr "" - -#: Client/core/CSettings.cpp:2088 -msgid "Layout" -msgstr "" - -#: Client/core/CSettings.cpp:2089 Client/core/CSettings.cpp:2335 -msgid "Options" -msgstr "" - -#: Client/core/CSettings.cpp:2095 -msgid "Chat Background" -msgstr "" - -#: Client/core/CSettings.cpp:2095 -msgid "Chat Text" -msgstr "" - -#: Client/core/CSettings.cpp:2095 -msgid "Input Background" -msgstr "" - -#: Client/core/CSettings.cpp:2095 -msgid "Input Text" -msgstr "" - -#: Client/core/CSettings.cpp:2118 -msgid "Lines:" -msgstr "" - -#: Client/core/CSettings.cpp:2118 -msgid "Scale:" -msgstr "" - -#: Client/core/CSettings.cpp:2118 -msgid "Width:" -msgstr "" - -#: Client/core/CSettings.cpp:2121 -msgid "Size" -msgstr "" - -#: Client/core/CSettings.cpp:2170 -msgid "after" -msgstr "" - -#: Client/core/CSettings.cpp:2170 -msgid "for" -msgstr "" - -#: Client/core/CSettings.cpp:2170 -msgid "sec" -msgstr "" - -#: Client/core/CSettings.cpp:2173 -msgid "Fading" -msgstr "" - -#: Client/core/CSettings.cpp:2179 -msgid "Fade out old lines" -msgstr "" - -#: Client/core/CSettings.cpp:2219 -msgid "Horizontal:" -msgstr "" - -#: Client/core/CSettings.cpp:2219 -msgid "Vertical:" -msgstr "" - -#: Client/core/CSettings.cpp:2219 -msgid "Text-Align:" -msgstr "" - -#: Client/core/CSettings.cpp:2219 -msgid "X-Offset:" -msgstr "" - -#: Client/core/CSettings.cpp:2220 -msgid "Y-Offset:" -msgstr "" - -#: Client/core/CSettings.cpp:2226 -msgid "Position" -msgstr "" - -#: Client/core/CSettings.cpp:2240 Client/core/CSettings.cpp:2268 -#: Client/core/CKeyBinds.cpp:191 -msgid "Left" -msgstr "" - -#: Client/core/CSettings.cpp:2241 Client/core/CSettings.cpp:2255 -msgid "Center" -msgstr "" - -#: Client/core/CSettings.cpp:2242 Client/core/CSettings.cpp:2269 -#: Client/core/CKeyBinds.cpp:192 -msgid "Right" -msgstr "" - -#: Client/core/CSettings.cpp:2254 -msgid "Top" -msgstr "" - -#: Client/core/CSettings.cpp:2256 -msgid "Bottom" -msgstr "" - -#: Client/core/CSettings.cpp:2304 -msgid "Font" -msgstr "" - -#: Client/core/CSettings.cpp:2341 -msgid "Hide background when not typing" -msgstr "" - -#: Client/core/CSettings.cpp:2346 -msgid "Nickname completion using the \"Tab\" key" -msgstr "" - -#: Client/core/CSettings.cpp:2351 -msgid "Allow server to flash the window" -msgstr "" - -#: Client/core/CSettings.cpp:2356 -msgid "Allow tray balloon notifications" -msgstr "" - -#: Client/core/CSettings.cpp:2361 -msgid "Chat text black/white outline" -msgstr "" - -#. Create a messagebox to notify the user -#. SString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); -#. Create a messagebox to notify the user -#. sSString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); -#: Client/core/CSettings.cpp:2610 Client/core/CSettings.cpp:2617 -msgid "Press a key to bind, or escape to clear" -msgstr "" - -#: Client/core/CSettings.cpp:2611 -msgid "Binding a primary key" -msgstr "" - -#: Client/core/CSettings.cpp:2618 -msgid "Binding a secondary key" -msgstr "" - -#: Client/core/CSettings.cpp:2694 -msgid "GTA GAME CONTROLS" -msgstr "" - -#: Client/core/CSettings.cpp:2696 -msgid "MULTIPLAYER CONTROLS" -msgstr "" - -#: Client/core/CSettings.cpp:2941 Client/core/CSettings.cpp:4764 -msgid "Your nickname contains invalid characters!" -msgstr "" - -#: Client/core/CSettings.cpp:3479 Client/core/CMainMenu.cpp:304 -#: Client/core/CCore.cpp:674 Client/mods/deathmatch/logic/CClientGame.cpp:527 -msgid "Main menu" -msgstr "" - -#: Client/core/CSettings.cpp:3483 Client/core/CCore.cpp:674 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1083 -#: Client/mods/deathmatch/logic/CResource.cpp:372 -msgid "In-game" -msgstr "" - -#: Client/core/CSettings.cpp:3778 -msgid "Red:" -msgstr "" - -#: Client/core/CSettings.cpp:3778 -msgid "Green:" -msgstr "" - -#: Client/core/CSettings.cpp:3778 -msgid "Blue:" -msgstr "" - -#: Client/core/CSettings.cpp:3778 -msgid "Transparency:" -msgstr "" - -#: Client/core/CSettings.cpp:3781 -msgid "Color" -msgstr "" - -#: Client/core/CSettings.cpp:3858 -msgid "Preview" -msgstr "" - -#: Client/core/CSettings.cpp:4166 -msgid "Please disconnect before changing language" -msgstr "" - -#: Client/core/CSettings.cpp:4194 -msgid "Please disconnect before changing skin" -msgstr "" - -#: Client/core/CSettings.cpp:4482 -msgid "" -"Volmetric shadows can cause some systems to slow down.\n" -"\n" -"Are you sure you want to enable them?" +"Do you want to disconnect now?" msgstr "" -#: Client/core/CSettings.cpp:4486 -msgid "PERFORMANCE WARNING" +#: Client/core/CSettings.cpp:1410 +msgid "DISCONNECT REQUIRED" msgstr "" -#: Client/core/CSettings.cpp:4506 -msgid "" -"Screen upload is required by some servers for anti-cheat purposes.\n" -"\n" -"(The chat box and GUI is excluded from the upload)\n" +#. Update the joystick name +#: Client/core/CSettings.cpp:1737 +msgid "Joypad not detected - Check connections and restart game" msgstr "" -#: Client/core/CSettings.cpp:4508 -msgid "SCREEN UPLOAD INFORMATION" +#: Client/core/CSettings.cpp:1932 +msgid "Binding axis" msgstr "" -#: Client/core/CSettings.cpp:4523 -msgid "" -"Some scripts may play sounds, such as radio, from the internet.\n" -"\n" -"Disabling this setting may decrease network\n" -"bandwidth consumption.\n" +#: Client/core/CSettings.cpp:1932 +msgid "Move an axis to bind, or escape to clear" msgstr "" -#: Client/core/CSettings.cpp:4526 -msgid "EXTERNAL SOUNDS" +#: Client/core/CSettings.cpp:2009 +msgid "Language:" msgstr "" -#: Client/core/CSettings.cpp:4555 -msgid "" -"It seems that you have the Rich Presence connection option enabled.\n" -"Do you want to allow servers to share their data?\n" -"\n" -"This includes yours unique ID identifier." +#: Client/core/CSettings.cpp:2009 +msgid "Skin:" msgstr "" -#: Client/core/CSettings.cpp:4560 -msgid "CONSENT TO ALLOW DATA SHARING" +#: Client/core/CSettings.cpp:2009 +msgid "Presets:" msgstr "" -#: Client/core/CSettings.cpp:4584 -msgid "" -"Some files in your GTA:SA data directory are customized.\n" -"MTA will only use these modified files if this check box is ticked.\n" -"\n" -"However, CUSTOMIZED GTA:SA FILES ARE BLOCKED BY MANY SERVERS\n" -"\n" -"Are you sure you want to use them?" +#: Client/core/CSettings.cpp:2058 +msgid "Chat" msgstr "" -#: Client/core/CSettings.cpp:4633 -msgid "" -"Enabling DPI awareness is an experimental feature and\n" -"we only recommend it when you play MTA:SA on a scaled monitor.\n" -"You may experience graphical issues if you enable this option.\n" -"\n" -"Are you sure you want to enable this option?" +#: Client/core/CSettings.cpp:2075 +msgid "Load" msgstr "" -#: Client/core/CSettings.cpp:4639 -msgid "EXPERIMENTAL FEATURE" +#: Client/core/CSettings.cpp:2087 +msgid "Colors" msgstr "" -#: Client/core/CSettings.cpp:4782 -msgid "Please enter a nickname" +#: Client/core/CSettings.cpp:2088 +msgid "Layout" msgstr "" -#: Client/core/CSettings.cpp:4783 -msgid "" -"Please enter a nickname to be used ingame. \n" -"This will be your name when you connect to and play in a server" +#: Client/core/CSettings.cpp:2089 Client/core/CSettings.cpp:2335 +msgid "Options" msgstr "" -#: Client/core/CSettings.cpp:4801 -msgid "Very experimental feature." +#: Client/core/CSettings.cpp:2095 +msgid "Chat Background" msgstr "" -#: Client/core/CSettings.cpp:4803 -msgid "Stops stalls with CJ variations (Uses 65MB more RAM)" +#: Client/core/CSettings.cpp:2095 +msgid "Chat Text" msgstr "" -#: Client/core/CSettings.cpp:4805 -msgid "Older routers may require a slower scan speed." +#: Client/core/CSettings.cpp:2095 +msgid "Input Background" msgstr "" -#: Client/core/CSettings.cpp:4807 -msgid "Switch on to use only one connection when downloading." +#: Client/core/CSettings.cpp:2095 +msgid "Input Text" msgstr "" -#: Client/core/CSettings.cpp:4809 -msgid "Tag network packets to help ISPs identify MTA traffic." +#: Client/core/CSettings.cpp:2118 +msgid "Lines:" msgstr "" -#: Client/core/CSettings.cpp:4811 -msgid "Spinning circle animation at the bottom of the screen" +#: Client/core/CSettings.cpp:2118 +msgid "Scale:" msgstr "" -#: Client/core/CSettings.cpp:4813 -msgid "Select default always. (This setting is not saved)" +#: Client/core/CSettings.cpp:2118 +msgid "Width:" msgstr "" -#: Client/core/CSettings.cpp:4815 -msgid "Maximum is usually best" +#: Client/core/CSettings.cpp:2121 +msgid "Size" msgstr "" -#: Client/core/CSettings.cpp:4817 Client/core/CSettings.cpp:4819 -msgid "Auto updater:" +#: Client/core/CSettings.cpp:2170 +msgid "after" msgstr "" -#: Client/core/CSettings.cpp:4817 -msgid "Select default unless you like filling out bug reports." +#: Client/core/CSettings.cpp:2170 +msgid "for" msgstr "" -#: Client/core/CSettings.cpp:4819 -msgid "Select default to automatically install important updates." +#: Client/core/CSettings.cpp:2170 +msgid "sec" msgstr "" -#: Client/core/CSettings.cpp:4821 -msgid "16-bit color:" +#: Client/core/CSettings.cpp:2173 +msgid "Fading" msgstr "" -#: Client/core/CSettings.cpp:4821 -msgid "Enable 16 bit color modes - Requires MTA restart" +#: Client/core/CSettings.cpp:2179 +msgid "Fade out old lines" msgstr "" -#: Client/core/CSettings.cpp:4823 -msgid "Mouse fix:" +#: Client/core/CSettings.cpp:2219 +msgid "Horizontal:" msgstr "" -#: Client/core/CSettings.cpp:4823 -msgid "Mouse movement fix - May need PC restart" +#: Client/core/CSettings.cpp:2219 +msgid "Vertical:" msgstr "" -#: Client/core/CMainMenu.cpp:333 -msgid "" -"You are using a feature-branch build! This is a test build only which cannot " -"be used to connect to public servers!" +#: Client/core/CSettings.cpp:2219 +msgid "Text-Align:" msgstr "" -#: Client/core/CMainMenu.cpp:352 -msgid "" -"MTA will not receive updates on XP/Vista after July 2019.\n" -"\n" -"Upgrade Windows to play on the latest servers." +#: Client/core/CSettings.cpp:2219 +msgid "X-Offset:" msgstr "" -#: Client/core/CMainMenu.cpp:1193 -msgid "" -"This will disconnect you from the current server.\n" -"\n" -"Are you sure you want to disconnect?" +#: Client/core/CSettings.cpp:2220 +msgid "Y-Offset:" msgstr "" -#: Client/core/CMainMenu.cpp:1197 -msgid "DISCONNECT WARNING" +#: Client/core/CSettings.cpp:2226 +msgid "Position" msgstr "" -#: Client/core/CConnectManager.cpp:79 -msgid "Connecting failed. Invalid nick provided!" +#: Client/core/CSettings.cpp:2241 Client/core/CSettings.cpp:2255 +msgid "Center" msgstr "" -#: Client/core/CConnectManager.cpp:110 -msgid "Connecting failed. Invalid host provided!" +#: Client/core/CSettings.cpp:2254 +msgid "Top" msgstr "" -#: Client/core/CConnectManager.cpp:126 -#, c-format -msgid "Connecting to %s at port %u failed!" +#: Client/core/CSettings.cpp:2256 +msgid "Bottom" msgstr "" -#. Display the status box -#: Client/core/CConnectManager.cpp:147 -#, c-format -msgid "Connecting to %s:%u ..." +#: Client/core/CSettings.cpp:2304 +msgid "Font" msgstr "" -#. Display the status box -#: Client/core/CConnectManager.cpp:148 -#: Client/mods/deathmatch/logic/CClientGame.cpp:651 -msgid "CONNECTING" +#: Client/core/CSettings.cpp:2341 +msgid "Hide background when not typing" msgstr "" -#: Client/core/CConnectManager.cpp:263 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1327 -msgid "Connection timed out" +#: Client/core/CSettings.cpp:2346 +msgid "Nickname completion using the \"Tab\" key" msgstr "" -#: Client/core/CConnectManager.cpp:277 Client/core/CConnectManager.cpp:281 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1375 -msgid "Disconnected: unknown protocol error" +#: Client/core/CSettings.cpp:2351 +msgid "Allow server to flash the window" msgstr "" -#: Client/core/CConnectManager.cpp:285 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1379 -msgid "Disconnected: disconnected remotely" +#: Client/core/CSettings.cpp:2356 +msgid "Allow tray balloon notifications" msgstr "" -#: Client/core/CConnectManager.cpp:289 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1383 -msgid "Disconnected: connection lost remotely" +#: Client/core/CSettings.cpp:2361 +msgid "Chat text black/white outline" msgstr "" -#: Client/core/CConnectManager.cpp:293 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1387 -msgid "Disconnected: you are banned from this server" +#. Create a messagebox to notify the user +#. SString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); +#. Create a messagebox to notify the user +#. sSString strText = SString::Printf ( "Press a key to bind to '%s'", pItemBind->GetText ().c_str () ); +#: Client/core/CSettings.cpp:2610 Client/core/CSettings.cpp:2617 +msgid "Press a key to bind, or escape to clear" msgstr "" -#: Client/core/CConnectManager.cpp:300 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1395 -msgid "Disconnected: disconnected from the server" +#: Client/core/CSettings.cpp:2611 +msgid "Binding a primary key" msgstr "" -#: Client/core/CConnectManager.cpp:304 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1399 -msgid "Disconnected: connection to the server was lost" +#: Client/core/CSettings.cpp:2618 +msgid "Binding a secondary key" msgstr "" -#: Client/core/CConnectManager.cpp:311 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1407 -msgid "Disconnected: connection was refused" +#: Client/core/CSettings.cpp:2694 +msgid "GTA GAME CONTROLS" msgstr "" -#. Failed loading the mod -#: Client/core/CConnectManager.cpp:403 -#, c-format -msgid "No such mod installed (%s)" +#: Client/core/CSettings.cpp:2696 +msgid "MULTIPLAYER CONTROLS" msgstr "" -#: Client/core/CConnectManager.cpp:411 -msgid "Bad server response (2)" +#: Client/core/CSettings.cpp:2941 Client/core/CSettings.cpp:4764 +msgid "Your nickname contains invalid characters!" msgstr "" -#: Client/core/CConnectManager.cpp:421 -msgid "Bad server response (1)" +#: Client/core/CSettings.cpp:3778 +msgid "Red:" msgstr "" -#. Unknown command -#: Client/core/CCommands.cpp:216 -msgid "Unknown command or cvar: " +#: Client/core/CSettings.cpp:3778 +msgid "Green:" msgstr "" -#: Client/core/CKeyBinds.cpp:186 -msgid "Fire" +#: Client/core/CSettings.cpp:3778 +msgid "Blue:" msgstr "" -#: Client/core/CKeyBinds.cpp:187 -msgid "Next weapon" +#: Client/core/CSettings.cpp:3778 +msgid "Transparency:" +msgstr "" + +#: Client/core/CSettings.cpp:3781 +msgid "Color" msgstr "" -#: Client/core/CKeyBinds.cpp:188 -msgid "Previous weapon" +#: Client/core/CSettings.cpp:3858 +msgid "Preview" msgstr "" -#: Client/core/CKeyBinds.cpp:189 -msgid "Forwards" +#: Client/core/CSettings.cpp:4166 +msgid "Please disconnect before changing language" msgstr "" -#: Client/core/CKeyBinds.cpp:190 -msgid "Backwards" +#: Client/core/CSettings.cpp:4194 +msgid "Please disconnect before changing skin" msgstr "" -#: Client/core/CKeyBinds.cpp:193 -msgid "Zoom in" +#: Client/core/CSettings.cpp:4482 +msgid "" +"Volmetric shadows can cause some systems to slow down.\n" +"\n" +"Are you sure you want to enable them?" msgstr "" -#: Client/core/CKeyBinds.cpp:194 -msgid "Zoom out" +#: Client/core/CSettings.cpp:4486 +msgid "PERFORMANCE WARNING" msgstr "" -#: Client/core/CKeyBinds.cpp:195 -msgid "Enter/Exit" +#: Client/core/CSettings.cpp:4506 +msgid "" +"Screen upload is required by some servers for anti-cheat purposes.\n" +"\n" +"(The chat box and GUI is excluded from the upload)\n" msgstr "" -#: Client/core/CKeyBinds.cpp:196 -msgid "Change camera" +#: Client/core/CSettings.cpp:4508 +msgid "SCREEN UPLOAD INFORMATION" msgstr "" -#. 10 -#: Client/core/CKeyBinds.cpp:197 -msgid "Jump" +#: Client/core/CSettings.cpp:4523 +msgid "" +"Some scripts may play sounds, such as radio, from the internet.\n" +"\n" +"Disabling this setting may decrease network\n" +"bandwidth consumption.\n" msgstr "" -#: Client/core/CKeyBinds.cpp:198 -msgid "Sprint" +#: Client/core/CSettings.cpp:4526 +msgid "EXTERNAL SOUNDS" msgstr "" -#: Client/core/CKeyBinds.cpp:199 -msgid "Look behind" +#: Client/core/CSettings.cpp:4555 +msgid "" +"It seems that you have the Rich Presence connection option enabled.\n" +"Do you want to allow servers to share their data?\n" +"\n" +"This includes yours unique ID identifier." msgstr "" -#: Client/core/CKeyBinds.cpp:200 -msgid "Crouch" +#: Client/core/CSettings.cpp:4560 +msgid "CONSENT TO ALLOW DATA SHARING" msgstr "" -#: Client/core/CKeyBinds.cpp:201 -msgid "Action" +#: Client/core/CSettings.cpp:4584 +msgid "" +"Some files in your GTA:SA data directory are customized.\n" +"MTA will only use these modified files if this check box is ticked.\n" +"\n" +"However, CUSTOMIZED GTA:SA FILES ARE BLOCKED BY MANY SERVERS\n" +"\n" +"Are you sure you want to use them?" msgstr "" -#: Client/core/CKeyBinds.cpp:202 -msgid "Walk" +#: Client/core/CSettings.cpp:4590 Client/core/CVersionUpdater.cpp:2081 +msgid "CUSTOMIZED GTA:SA FILES" msgstr "" -#: Client/core/CKeyBinds.cpp:203 -msgid "Vehicle fire" +#: Client/core/CSettings.cpp:4633 +msgid "" +"Enabling DPI awareness is an experimental feature and\n" +"we only recommend it when you play MTA:SA on a scaled monitor.\n" +"You may experience graphical issues if you enable this option.\n" +"\n" +"Are you sure you want to enable this option?" msgstr "" -#: Client/core/CKeyBinds.cpp:204 -msgid "Vehicle secondary fire" +#: Client/core/CSettings.cpp:4639 +msgid "EXPERIMENTAL FEATURE" msgstr "" -#: Client/core/CKeyBinds.cpp:205 -msgid "Vehicle left" +#: Client/core/CSettings.cpp:4782 +msgid "Please enter a nickname" msgstr "" -#: Client/core/CKeyBinds.cpp:206 -msgid "Vehicle right" +#: Client/core/CSettings.cpp:4783 +msgid "" +"Please enter a nickname to be used ingame. \n" +"This will be your name when you connect to and play in a server" msgstr "" -#. 20 -#: Client/core/CKeyBinds.cpp:207 -msgid "Steer forwards/down" +#: Client/core/CSettings.cpp:4801 +msgid "Very experimental feature." msgstr "" -#: Client/core/CKeyBinds.cpp:208 -msgid "Steer backwards/up" +#: Client/core/CSettings.cpp:4803 +msgid "Stops stalls with CJ variations (Uses 65MB more RAM)" msgstr "" -#: Client/core/CKeyBinds.cpp:209 -msgid "Accelerate" +#: Client/core/CSettings.cpp:4805 +msgid "Older routers may require a slower scan speed." msgstr "" -#: Client/core/CKeyBinds.cpp:210 -msgid "Brake/Reverse" +#: Client/core/CSettings.cpp:4807 +msgid "Switch on to use only one connection when downloading." msgstr "" -#: Client/core/CKeyBinds.cpp:211 -msgid "Radio next" +#: Client/core/CSettings.cpp:4809 +msgid "Tag network packets to help ISPs identify MTA traffic." msgstr "" -#: Client/core/CKeyBinds.cpp:212 -msgid "Radio previous" +#: Client/core/CSettings.cpp:4811 +msgid "Spinning circle animation at the bottom of the screen" msgstr "" -#: Client/core/CKeyBinds.cpp:213 -msgid "Radio user track skip" +#: Client/core/CSettings.cpp:4813 +msgid "Select default always. (This setting is not saved)" msgstr "" -#: Client/core/CKeyBinds.cpp:214 -msgid "Horn" +#: Client/core/CSettings.cpp:4815 +msgid "Maximum is usually best" msgstr "" -#: Client/core/CKeyBinds.cpp:215 -msgid "Sub-mission" +#: Client/core/CSettings.cpp:4817 Client/core/CSettings.cpp:4819 +msgid "Auto updater:" msgstr "" -#: Client/core/CKeyBinds.cpp:216 -msgid "Handbrake" +#: Client/core/CSettings.cpp:4817 +msgid "Select default unless you like filling out bug reports." msgstr "" -#. 30 -#: Client/core/CKeyBinds.cpp:217 -msgid "Vehicle look left" +#: Client/core/CSettings.cpp:4819 +msgid "Select default to automatically install important updates." msgstr "" -#: Client/core/CKeyBinds.cpp:218 -msgid "Vehicle look right" +#: Client/core/CSettings.cpp:4821 +msgid "16-bit color:" msgstr "" -#: Client/core/CKeyBinds.cpp:219 -msgid "Vehicle look behind" +#: Client/core/CSettings.cpp:4821 +msgid "Enable 16 bit color modes - Requires MTA restart" msgstr "" -#: Client/core/CKeyBinds.cpp:220 -msgid "Vehicle mouse look" +#: Client/core/CSettings.cpp:4823 +msgid "Mouse fix:" msgstr "" -#: Client/core/CKeyBinds.cpp:221 -msgid "Special control left" +#: Client/core/CSettings.cpp:4823 +msgid "Mouse movement fix - May need PC restart" msgstr "" -#: Client/core/CKeyBinds.cpp:222 -msgid "Special control right" +#: Client/core/CMainMenu.cpp:333 +msgid "" +"You are using a feature-branch build! This is a test build only which cannot " +"be used to connect to public servers!" msgstr "" -#: Client/core/CKeyBinds.cpp:223 -msgid "Special control down" +#: Client/core/CMainMenu.cpp:352 +msgid "" +"MTA will not receive updates on XP/Vista after July 2019.\n" +"\n" +"Upgrade Windows to play on the latest servers." msgstr "" -#: Client/core/CKeyBinds.cpp:224 -msgid "Special control up" +#: Client/core/CMainMenu.cpp:1193 +msgid "" +"This will disconnect you from the current server.\n" +"\n" +"Are you sure you want to disconnect?" msgstr "" -#: Client/core/CKeyBinds.cpp:225 -msgid "Aim weapon" +#: Client/core/CMainMenu.cpp:1197 +msgid "DISCONNECT WARNING" msgstr "" -#: Client/core/CKeyBinds.cpp:226 -msgid "Conversation yes" +#: Client/core/CScreenShot.cpp:104 +#, c-format +msgid "Screenshot got %d bytes, but expected %d" msgstr "" -#. 40 -#: Client/core/CKeyBinds.cpp:227 -msgid "Conversation no" +#: Client/core/CScreenShot.cpp:110 +msgid "Screenshot failed" msgstr "" -#: Client/core/CKeyBinds.cpp:228 -msgid "Group control forwards" +#: Client/core/CScreenShot.cpp:160 +#, c-format +msgid "Screenshot taken: '%s'" msgstr "" -#: Client/core/CKeyBinds.cpp:229 -msgid "Group control backwards" +#: Client/core/CCore.cpp:811 Client/loader/CInstallManager.cpp:1057 +#, c-format +msgid "MTA:SA cannot continue because drive %s does not have enough space." msgstr "" #: Client/core/CCore.cpp:813 Shared/mods/deathmatch/logic/Utils.cpp:129 @@ -2307,214 +2174,207 @@ msgstr "" msgid "for developers: reload news" msgstr "" -#: Client/core/CQuestionBox.cpp:192 Shared/sdk/SharedUtil.Misc.hpp:688 -msgid "Do you want to see some on-line help about this problem ?" +#. Even the default skin doesn't work, so give up +#: Client/core/CGUI.cpp:86 +msgid "" +"The skin you selected could not be loaded, and the default skin also could " +"not be loaded, please reinstall MTA." msgstr "" -#: Client/core/CScreenShot.cpp:104 -#, c-format -msgid "Screenshot got %d bytes, but expected %d" +#: Client/core/CCredits.cpp:34 +msgid "Programming" msgstr "" -#: Client/core/CScreenShot.cpp:110 -msgid "Screenshot failed" +#: Client/core/CCredits.cpp:63 +msgid "Contributors" msgstr "" -#: Client/core/CScreenShot.cpp:160 -#, c-format -msgid "Screenshot taken: '%s'" +#: Client/core/CCredits.cpp:84 +msgid "Game Design / Scripting" msgstr "" -#. Create window -#: Client/core/CConsole.cpp:417 -msgid "CONSOLE" +#: Client/core/CCredits.cpp:104 +msgid "Language Localization" msgstr "" -#. TRANSLATORS: Replace with your language native name -#: Client/core/CLocalization.cpp:16 -msgid "English" +#: Client/core/CCredits.cpp:110 +msgid "Patch contributors" msgstr "" -#. Even the default skin doesn't work, so give up -#: Client/core/CGUI.cpp:86 +#: Client/core/CCredits.cpp:234 +msgid "Special Thanks" +msgstr "" + +#: Client/core/CCredits.cpp:265 msgid "" -"The skin you selected could not be loaded, and the default skin also could " -"not be loaded, please reinstall MTA." +"This software and project makes use of the following libraries and software:" msgstr "" -#: Client/core/CCredits.cpp:34 -msgid "Programming" +#. Create the window +#: Client/core/CNewsBrowser.cpp:153 +msgid "NEWS" msgstr "" -#: Client/core/CCredits.cpp:63 -msgid "Contributors" +#. News link +#: Client/core/CNewsBrowser.cpp:171 Client/core/CNewsBrowser.cpp:172 +msgid "Visit latest news article" msgstr "" -#: Client/core/CCredits.cpp:84 -msgid "Game Design / Scripting" +#: Client/core/CVersionUpdater.cpp:626 +msgid "Busy" msgstr "" -#: Client/core/CCredits.cpp:104 -msgid "Language Localization" +#: Client/core/CVersionUpdater.cpp:626 +msgid "Can't check for updates right now" msgstr "" -#: Client/core/CCredits.cpp:110 -msgid "Patch contributors" +#: Client/core/CVersionUpdater.cpp:1567 Client/core/CVersionUpdater.cpp:1587 +#: Client/core/CVersionUpdater.cpp:1605 +#, c-format +msgid "MTA:SA %s required" msgstr "" -#: Client/core/CCredits.cpp:234 -msgid "Special Thanks" +#: Client/core/CVersionUpdater.cpp:1568 +#, c-format +msgid "" +"An updated version of MTA:SA %s is required to join the selected server.\n" +"\n" +"Do you want to download and install MTA:SA %s ?" msgstr "" -#: Client/core/CCredits.cpp:265 -msgid "" -"This software and project makes use of the following libraries and software:" +#: Client/core/CVersionUpdater.cpp:1588 +#, c-format +msgid "Do you want to launch MTA:SA %s and connect to this server ?" msgstr "" -#: Client/core/DXHook/CDirect3DHook9.cpp:124 +#: Client/core/CVersionUpdater.cpp:1606 msgid "" -"Could not initialize Direct3D9.\n" +"It is not possible to connect at this time.\n" "\n" -"Please ensure the DirectX End-User Runtime and\n" -"latest Windows Service Packs are installed correctly." +"Please try later." msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:25 -msgid "Idle" +#: Client/core/CVersionUpdater.cpp:1788 +msgid "Connecting" msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:150 -msgid "player" -msgid_plural "players" -msgstr[0] "" -msgstr[1] "" - -#: Client/core/ServerBrowser/CServerList.cpp:151 -msgid "on" +#: Client/core/CVersionUpdater.cpp:1789 Client/core/CVersionUpdater.cpp:1805 +msgid "Please wait..." msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:154 -msgid "server" -msgid_plural "servers" -msgstr[0] "" -msgstr[1] "" +#: Client/core/CVersionUpdater.cpp:1804 +msgid "CHECKING" +msgstr "" -#. We are polling for the master server list (first pass) -#: Client/core/ServerBrowser/CServerList.cpp:238 -#, c-format -msgid "Requesting master server list (%lu ms elapsed)" +#: Client/core/CVersionUpdater.cpp:1821 Client/core/CVersionUpdater.cpp:1914 +msgid "UPDATE CHECK" msgstr "" -#. Abort -#: Client/core/ServerBrowser/CServerList.cpp:254 -msgid "Master server list could not be parsed." +#: Client/core/CVersionUpdater.cpp:1822 +msgid "No update needed" msgstr "" -#. Abort -#: Client/core/ServerBrowser/CServerList.cpp:264 -msgid "Master server list could not be retrieved." +#: Client/core/CVersionUpdater.cpp:1839 +msgid "DOWNLOADING" msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:274 -msgid "(Backup server list)" +#: Client/core/CVersionUpdater.cpp:1840 +msgid "waiting..." msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:326 -msgid "Cannot bind LAN-broadcast socket" +#: Client/core/CVersionUpdater.cpp:1856 +msgid "MANDATORY UPDATE" msgstr "" -#: Client/core/ServerBrowser/CServerList.cpp:345 -msgid "Attempting to discover LAN servers" +#: Client/core/CVersionUpdater.cpp:1857 +msgid "" +"To join this server, you must update MTA.\n" +"\n" +" Do you want to update now ?" msgstr "" -#. Create queue window -#: Client/core/ServerBrowser/CServerInfo.cpp:32 -#: Client/core/ServerBrowser/CServerInfo.cpp:302 -msgid "SERVER IS FULL" +#: Client/core/CVersionUpdater.cpp:1875 +msgid "OPTIONAL UPDATE" msgstr "" -#. Determine our label draw position for L10n -#. Start position -#. Server Name -#: Client/core/ServerBrowser/CServerInfo.cpp:44 -#: Client/core/ServerBrowser/CServerInfo.cpp:53 -msgid "Name:" +#: Client/core/CVersionUpdater.cpp:1876 +msgid "" +"Server says an update is recommended, but not essential.\n" +"\n" +" Do you want to update now ?" msgstr "" -#. Server IP -#: Client/core/ServerBrowser/CServerInfo.cpp:44 -#: Client/core/ServerBrowser/CServerInfo.cpp:64 -msgid "Server Address:" +#: Client/core/CVersionUpdater.cpp:1915 +msgid "" +"Update not currently avalable.\n" +"\n" +"Please check www.mtasa.com" msgstr "" -#. Gamemode -#: Client/core/ServerBrowser/CServerInfo.cpp:44 -#: Client/core/ServerBrowser/CServerInfo.cpp:75 -msgid "Gamemode:" +#: Client/core/CVersionUpdater.cpp:1936 Client/core/CVersionUpdater.cpp:2118 +msgid "ERROR SAVING" msgstr "" -#. Map -#: Client/core/ServerBrowser/CServerInfo.cpp:44 -#: Client/core/ServerBrowser/CServerInfo.cpp:86 -msgid "Map:" +#: Client/core/CVersionUpdater.cpp:1937 Client/core/CVersionUpdater.cpp:2119 +msgid "Unable to create the file." msgstr "" -#. Players -#: Client/core/ServerBrowser/CServerInfo.cpp:45 -#: Client/core/ServerBrowser/CServerInfo.cpp:97 -msgid "Players:" +#: Client/core/CVersionUpdater.cpp:1945 Client/core/CVersionUpdater.cpp:1954 +#: Client/core/CVersionUpdater.cpp:2127 Client/core/CVersionUpdater.cpp:2136 +msgid "ERROR DOWNLOADING" msgstr "" -#. Passworded -#: Client/core/ServerBrowser/CServerInfo.cpp:45 -#: Client/core/ServerBrowser/CServerInfo.cpp:108 -msgid "Passworded:" +#: Client/core/CVersionUpdater.cpp:1946 Client/core/CVersionUpdater.cpp:2128 +msgid "The downloaded file appears to be incorrect." msgstr "" -#. Latency -#: Client/core/ServerBrowser/CServerInfo.cpp:45 -#: Client/core/ServerBrowser/CServerInfo.cpp:119 -msgid "Latency:" +#: Client/core/CVersionUpdater.cpp:1955 Client/core/CVersionUpdater.cpp:2137 +msgid "For some reason." msgstr "" -#. Column for player names -#. Player List Columns -#: Client/core/ServerBrowser/CServerInfo.cpp:138 -#: Client/core/ServerBrowser/CServerBrowser.cpp:478 -msgid "Player list" +#: Client/core/CVersionUpdater.cpp:1966 Client/core/CVersionUpdater.cpp:2150 +msgid "DOWNLOAD COMPLETE" msgstr "" -#. Close button -#: Client/core/ServerBrowser/CServerInfo.cpp:144 -msgid "Close" +#: Client/core/CVersionUpdater.cpp:1990 +msgid " - Unknown problem in _DialogUpdateResult" msgstr "" -#. Join Game button -#: Client/core/ServerBrowser/CServerInfo.cpp:152 -msgid "Join Game" +#: Client/core/CVersionUpdater.cpp:2088 Client/core/CVersionUpdater.cpp:2098 +msgid "Ok" msgstr "" -#. Please enter password label -#: Client/core/ServerBrowser/CServerInfo.cpp:166 -msgid "Please enter the password to the server:" +#: Client/core/CVersionUpdater.cpp:2096 +msgid "ERROR" msgstr "" -#: Client/core/ServerBrowser/CServerInfo.cpp:177 -msgid "Join the server as soon as a player slot is available." +#: Client/core/CVersionUpdater.cpp:2097 +msgid "" +"Some MTA:SA data files are missing.\n" +"\n" +"\n" +"Please reinstall MTA:SA" msgstr "" -#: Client/core/ServerBrowser/CServerInfo.cpp:310 -msgid "PLEASE ENTER SERVER PASSWORD" +#: Client/core/CVersionUpdater.cpp:2774 +#, c-format +msgid "%3d %% completed" msgstr "" -#. The server has timed out -#: Client/core/ServerBrowser/CServerInfo.cpp:402 -msgid "Timed Out" +#: Client/core/CVersionUpdater.cpp:2777 +#, c-format +msgid "" +"\n" +"\n" +"Waiting for response - %-3d" msgstr "" -#. Set every GUI elements text to blank -#: Client/core/ServerBrowser/CServerInfo.cpp:431 -msgid "Querying..." +#: Client/core/DXHook/CDirect3DHook9.cpp:124 +msgid "" +"Could not initialize Direct3D9.\n" +"\n" +"Please ensure the DirectX End-User Runtime and\n" +"latest Windows Service Packs are installed correctly." msgstr "" #. Create the window @@ -2522,12 +2382,6 @@ msgstr "" msgid "SERVER BROWSER" msgstr "" -#. Create the tabs -#: Client/core/ServerBrowser/CServerBrowser.cpp:133 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:90 -msgid "Internet" -msgstr "" - #: Client/core/ServerBrowser/CServerBrowser.cpp:134 msgid "Local" msgstr "" @@ -2615,6 +2469,13 @@ msgstr "" msgid "Gamemode" msgstr "" +#. Player List Columns +#. Column for player names +#: Client/core/ServerBrowser/CServerBrowser.cpp:478 +#: Client/core/ServerBrowser/CServerInfo.cpp:138 +msgid "Player list" +msgstr "" + #. Include label #: Client/core/ServerBrowser/CServerBrowser.cpp:486 msgid "Include:" @@ -2644,6 +2505,11 @@ msgstr "" msgid "Back" msgstr "" +#: Client/core/ServerBrowser/CServerBrowser.cpp:556 +#: Client/loader/Dialogs.cpp:135 +msgid "Help" +msgstr "" + #: Client/core/ServerBrowser/CServerBrowser.cpp:741 msgid "Loading..." msgstr "" @@ -2658,607 +2524,740 @@ msgstr "" msgid "No address specified!" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:1291 -msgid "Unknown protocol" +#: Client/core/ServerBrowser/CServerBrowser.cpp:1291 +msgid "Unknown protocol" +msgstr "" + +#: Client/core/ServerBrowser/CServerBrowser.cpp:1291 +msgid "Please use the mtasa:// protocol!" +msgstr "" + +#: Client/core/ServerBrowser/CServerBrowser.cpp:1380 +#: Client/core/ServerBrowser/CServerInfo.cpp:319 +#: Client/loader/MainFunctions.cpp:603 Client/loader/MainFunctions.cpp:610 +#: Client/loader/MainFunctions.cpp:1219 +msgid "Information" +msgstr "" + +#: Client/core/ServerBrowser/CServerBrowser.cpp:1380 +msgid "You have to select a server to connect to." +msgstr "" + +#. Create queue window +#: Client/core/ServerBrowser/CServerInfo.cpp:32 +#: Client/core/ServerBrowser/CServerInfo.cpp:302 +msgid "SERVER IS FULL" +msgstr "" + +#. Determine our label draw position for L10n +#. Start position +#. Server Name +#: Client/core/ServerBrowser/CServerInfo.cpp:44 +#: Client/core/ServerBrowser/CServerInfo.cpp:53 +msgid "Name:" +msgstr "" + +#. Server IP +#: Client/core/ServerBrowser/CServerInfo.cpp:44 +#: Client/core/ServerBrowser/CServerInfo.cpp:64 +msgid "Server Address:" +msgstr "" + +#. Gamemode +#: Client/core/ServerBrowser/CServerInfo.cpp:44 +#: Client/core/ServerBrowser/CServerInfo.cpp:75 +msgid "Gamemode:" +msgstr "" + +#. Map +#: Client/core/ServerBrowser/CServerInfo.cpp:44 +#: Client/core/ServerBrowser/CServerInfo.cpp:86 +msgid "Map:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:1291 -msgid "Please use the mtasa:// protocol!" +#. Players +#: Client/core/ServerBrowser/CServerInfo.cpp:45 +#: Client/core/ServerBrowser/CServerInfo.cpp:97 +msgid "Players:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:1300 -#: Client/core/ServerBrowser/CServerBrowser.cpp:1357 -#: Client/mods/deathmatch/logic/CClientGame.cpp:635 -#: Client/mods/deathmatch/logic/CClientGame.cpp:733 -msgid "Invalid nickname! Please go to Settings and set a new one!" +#. Passworded +#: Client/core/ServerBrowser/CServerInfo.cpp:45 +#: Client/core/ServerBrowser/CServerInfo.cpp:108 +msgid "Passworded:" msgstr "" -#: Client/core/ServerBrowser/CServerBrowser.cpp:1380 -msgid "You have to select a server to connect to." +#. Latency +#: Client/core/ServerBrowser/CServerInfo.cpp:45 +#: Client/core/ServerBrowser/CServerInfo.cpp:119 +msgid "Latency:" msgstr "" -#: Client/game_sa/CSettingsSA.cpp:753 -msgid "Can't find valid screen resolution." +#. Close button +#: Client/core/ServerBrowser/CServerInfo.cpp:144 +msgid "Close" msgstr "" -#. Confirm that res should be used -#: Client/game_sa/CSettingsSA.cpp:829 -msgid "Are you sure you want to use this screen resolution?" +#. Join Game button +#: Client/core/ServerBrowser/CServerInfo.cpp:152 +msgid "Join Game" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:36 -msgid "This version has expired." +#. Please enter password label +#: Client/core/ServerBrowser/CServerInfo.cpp:166 +msgid "Please enter the password to the server:" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:56 -msgid "disconnect from the game" +#: Client/core/ServerBrowser/CServerInfo.cpp:177 +msgid "Join the server as soon as a player slot is available." msgstr "" -#: Client/mods/deathmatch/CClient.cpp:57 -msgid "shows the nametags" +#: Client/core/ServerBrowser/CServerInfo.cpp:310 +msgid "PLEASE ENTER SERVER PASSWORD" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:58 -msgid "shows the chatbox" +#. The server has timed out +#: Client/core/ServerBrowser/CServerInfo.cpp:402 +msgid "Timed Out" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:59 -msgid "shows the network statistics" +#. Set every GUI elements text to blank +#: Client/core/ServerBrowser/CServerInfo.cpp:431 +msgid "Querying..." msgstr "" -#. Key commands (registered as 'mod commands', can be disabled) -#: Client/mods/deathmatch/CClient.cpp:62 -msgid "open the chat input" +#: Client/core/ServerBrowser/CServerList.cpp:25 +msgid "Idle" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:63 -msgid "transmits voice to other players" -msgstr "" +#: Client/core/ServerBrowser/CServerList.cpp:150 +msgid "player" +msgid_plural "players" +msgstr[0] "" +msgstr[1] "" -#: Client/mods/deathmatch/CClient.cpp:64 -msgid "enters a car as passenger" +#: Client/core/ServerBrowser/CServerList.cpp:151 +msgid "on" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:65 -msgid "next radio channel" +#: Client/core/ServerBrowser/CServerList.cpp:154 +msgid "server" +msgid_plural "servers" +msgstr[0] "" +msgstr[1] "" + +#. We are polling for the master server list (first pass) +#: Client/core/ServerBrowser/CServerList.cpp:238 +#, c-format +msgid "Requesting master server list (%lu ms elapsed)" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:66 -msgid "previous radio channel" +#. Abort +#: Client/core/ServerBrowser/CServerList.cpp:254 +msgid "Master server list could not be parsed." msgstr "" -#: Client/mods/deathmatch/CClient.cpp:67 -msgid "enables the radar view" +#. Abort +#: Client/core/ServerBrowser/CServerList.cpp:264 +msgid "Master server list could not be retrieved." msgstr "" -#: Client/mods/deathmatch/CClient.cpp:68 -msgid "zooms the radar in" +#: Client/core/ServerBrowser/CServerList.cpp:274 +msgid "(Backup server list)" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:69 -msgid "zooms the radar out" +#: Client/core/ServerBrowser/CServerList.cpp:326 +msgid "Cannot bind LAN-broadcast socket" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:70 -msgid "moves the radar north" +#: Client/core/ServerBrowser/CServerList.cpp:345 +msgid "Attempting to discover LAN servers" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:71 -msgid "moves the radar south" +#: Client/loader/Install.cpp:265 +msgid "Unknown" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:72 -msgid "moves the radar east" +#: Client/loader/Install.cpp:272 +#, c-format +msgid "" +"The file '%s' is currently locked by %zu processes.\n" +"\n" +"Do you want to terminate the following processes and continue updating?\n" +"\n" +"%s" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:73 -msgid "moves the radar west" +#: Client/loader/Install.cpp:479 +#, c-format +msgid "" +"Your installation may be corrupt now.\n" +"\n" +"%zu out of %zu files could not be restored from the backup.\n" +"\n" +"You should reinstall Multi Theft Auto from www.multitheftauto.com\n" +"or try running the update with administrator rights." msgstr "" -#: Client/mods/deathmatch/CClient.cpp:74 -msgid "attaches the radar" +#: Client/loader/Install.cpp:852 Client/loader/Dialogs.cpp:901 +msgid "Installing update..." msgstr "" -#: Client/mods/deathmatch/CClient.cpp:75 -msgid "reduces radar opacity" +#: Client/loader/Install.cpp:934 Client/loader/Dialogs.cpp:909 +msgid "Extracting files..." msgstr "" -#: Client/mods/deathmatch/CClient.cpp:76 -msgid "increases radar opacity" +#: Client/loader/Dialogs.cpp:134 +msgid "Quit" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:77 -msgid "toggles radar help text" +#: Client/loader/Dialogs.cpp:151 +msgid "MTA: San Andreas has encountered a problem" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:78 -msgid "sends a message to the targetted player" +#: Client/loader/Dialogs.cpp:152 +msgid "Crash information" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:79 -msgid "changes to the next weapon whilst in a vehicle" +#: Client/loader/Dialogs.cpp:153 +msgid "" +"Tick the check box to send this crash info to MTA devs using the 'internet'" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:80 -msgid "changes to the previous weapon whilst in a vehicle" +#: Client/loader/Dialogs.cpp:154 +msgid "Doing so will increase the chance of this crash being fixed." msgstr "" -#: Client/mods/deathmatch/CClient.cpp:81 -msgid "outputs info about the current server" +#: Client/loader/Dialogs.cpp:155 +msgid "Do you want to restart MTA: San Andreas ?" msgstr "" -#. ACHTUNG" Should this be handled by the atomic cvar setter? -#: Client/mods/deathmatch/CClient.cpp:84 -msgid "defines the scale multiplier of all text-displays" +#: Client/loader/Dialogs.cpp:162 +msgid "MTA: San Andreas - Warning" msgstr "" -#. Development mode -#: Client/mods/deathmatch/CClient.cpp:91 -msgid "(Development mode) shows the colshapes" +#: Client/loader/Dialogs.cpp:163 +msgid "" +"Your Grand Theft Auto: San Andreas install directory contains these files:" msgstr "" -#: Client/mods/deathmatch/CClient.cpp:92 -msgid "(Development mode) prints world sound ids into the debug window" +#: Client/loader/Dialogs.cpp:165 +msgid "" +"These files are not required and may interfere with the graphical features " +"in this version of MTA:SA.\n" +"\n" +"It is recommended that you remove or rename these files." msgstr "" -#: Client/mods/deathmatch/logic/CLocalServer.cpp:37 -msgid "HOST GAME" +#: Client/loader/Dialogs.cpp:167 +msgid "Keep these files, but also show this warning on next start" msgstr "" -#. m_pTabs->CreateTab ( "Gamemode" ); -#: Client/mods/deathmatch/logic/CLocalServer.cpp:53 -msgid "Resources" +#: Client/loader/Dialogs.cpp:168 +msgid "Do not remind me about these files again" msgstr "" -#: Client/mods/deathmatch/logic/CLocalServer.cpp:55 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:57 -msgid "Server name:" +#: Client/loader/Dialogs.cpp:169 +msgid "Rename these files from *.dll to *.dll.bak" msgstr "" -#: Client/mods/deathmatch/logic/CLocalServer.cpp:64 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:66 -msgid "Password:" +#: Client/loader/Dialogs.cpp:170 +msgid "Show me these files" msgstr "" -#: Client/mods/deathmatch/logic/CLocalServer.cpp:73 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:75 -msgid "Max players:" +#: Client/loader/Dialogs.cpp:171 +msgid "Play MTA:SA" msgstr "" -#: Client/mods/deathmatch/logic/CLocalServer.cpp:82 -#: Client/mods/deathmatch/logic/CLocalServer.cpp:84 -msgid "Broadcast:" +#: Client/loader/Dialogs.cpp:177 +msgid "MTA: San Andreas - Confusing options" msgstr "" -#: Client/mods/deathmatch/logic/CLocalServer.cpp:86 -msgid "LAN" +#: Client/loader/Dialogs.cpp:178 +msgid "NVidia Optimus detected!" msgstr "" -#: Client/mods/deathmatch/logic/CLocalServer.cpp:99 -msgid "Selected" +#: Client/loader/Dialogs.cpp:179 +msgid "Try each option and see what works:" msgstr "" -#: Client/mods/deathmatch/logic/CLocalServer.cpp:116 -msgid "All" +#: Client/loader/Dialogs.cpp:180 +msgid "A - Standard NVidia" msgstr "" -#: Client/mods/deathmatch/logic/CLocalServer.cpp:118 -msgid "Start" +#: Client/loader/Dialogs.cpp:181 +msgid "B - Alternate NVidia" msgstr "" -#. Throw the error and disconnect -#: Client/mods/deathmatch/logic/CResourceFileDownloadManager.cpp:141 -#, c-format -msgid "Download error: %s" +#: Client/loader/Dialogs.cpp:182 +msgid "C - Standard Intel" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:506 -msgid "Disconnected: Invalid nickname" +#: Client/loader/Dialogs.cpp:183 +msgid "D - Alternate Intel" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:510 -msgid "Disconnect from server" +#: Client/loader/Dialogs.cpp:184 +msgid "If you get desperate, this might help:" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:514 -#, c-format -msgid "" -"Disconnected: Serial is banned.\n" -"Reason: %s" +#: Client/loader/Dialogs.cpp:185 +msgid "If you have already selected an option that works, this might help:" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:520 -#, c-format -msgid "" -"Disconnected: You are banned.\n" -"Reason: %s" +#: Client/loader/Dialogs.cpp:186 +msgid "Force windowed mode" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:526 -#, c-format -msgid "" -"Disconnected: Account is banned.\n" -"Reason: %s" +#: Client/loader/Dialogs.cpp:187 +msgid "Don't show again" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:531 -msgid "Disconnected: Version mismatch" +#: Client/loader/Dialogs.cpp:194 Client/game_sa/CSettingsSA.cpp:831 +msgid "MTA: San Andreas" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:535 -msgid "Disconnected: Join flood. Please wait a minute, then reconnect." +#: Client/loader/Dialogs.cpp:195 +msgid "Warning: Could not detect anti-virus product" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:539 -#, c-format +#: Client/loader/Dialogs.cpp:197 msgid "" -"Disconnected: Server from different branch.\n" -"Information: %s" +"MTA could not detect an anti-virus on your PC.\n" +"\n" +"Viruses interfere with MTA and degrade your gameplay experience.\n" +"\n" +"Press 'Help' for more information." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:544 -#, c-format -msgid "" -"Disconnected: Bad version.\n" -"Information: %s" +#: Client/loader/Dialogs.cpp:200 +msgid "I have already installed an anti-virus" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:549 -#, c-format +#: Client/loader/Dialogs.cpp:202 msgid "" -"Disconnected: Server is running a newer build.\n" -"Information: %s" +"I will not install an anti-virus.\n" +"I want my PC to lag and be part of a botnet." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:554 -#, c-format -msgid "" -"Disconnected: Server is running an older build.\n" -"Information: %s" +#: Client/loader/Dialogs.cpp:890 Client/loader/Utils.cpp:534 +msgid "Searching for Grand Theft Auto San Andreas" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:559 -msgid "Disconnected: Nick already in use" +#: Client/loader/Dialogs.cpp:893 Client/loader/Utils.cpp:536 +msgid "Please start Grand Theft Auto San Andreas" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:563 -msgid "Disconnected: Player element could not be created." +#: Client/loader/Dialogs.cpp:914 Client/loader/Utils.cpp:1394 +msgid "Copying files..." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:567 -#, c-format -msgid "Disconnected: Server refused the connection: %s" +#: Client/loader/Dialogs.cpp:919 Client/loader/Utils.cpp:1454 +msgid "Copy finished early. Everything OK." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:572 -msgid "Disconnected: Serial verification failed" +#: Client/loader/Dialogs.cpp:924 Client/loader/Utils.cpp:1460 +msgid "Finishing..." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:576 -#, c-format -msgid "Disconnected: Connection desync %s" +#: Client/loader/Dialogs.cpp:928 Client/loader/Utils.cpp:1462 +msgid "Done!" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:585 -#, c-format -msgid "Disconnected: You were kicked by %s" +#: Client/loader/Utils.cpp:600 +msgid "Select your Grand Theft Auto: San Andreas Installation Directory" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:590 +#: Client/loader/Utils.cpp:968 Client/loader/CInstallManager.cpp:361 #, c-format -msgid "Disconnected: You were banned by %s" +msgid "" +"MTA:SA needs Administrator access for the following task:\n" +"\n" +" '%s'\n" +"\n" +"Please confirm in the next window." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:601 -msgid "Disconnected: Server shutdown or restarting" +#: Client/loader/Utils.cpp:1069 +#, c-format +msgid "Error loading %s module! (%s)" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:621 -msgid "You were kicked from the game" +#: Client/loader/Utils.cpp:1502 +#, c-format +msgid "" +"New installation of %s detected.\n" +"\n" +"Do you want to copy your settings from %s ?" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:622 -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:633 -msgid "This server requires a non-modifed gta_sa.exe" +#: Client/loader/Utils.cpp:1541 +#, c-format +msgid "GTA:SA had trouble opening the file '%s'" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:623 -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:634 -msgid "Please replace gta_sa.exe" +#: Client/loader/Utils.cpp:1563 +#, c-format +msgid "GTA:SA is missing the file '%s'." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:624 -msgid "This server does not allow custom D3D9.DLLs" +#: Client/loader/Utils.cpp:1588 +msgid "GTA:SA had trouble loading a model." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:625 -msgid "Remove D3D9.DLL from your GTA install directory and restart MTA" +#: Client/loader/Utils.cpp:1590 +msgid "If you recently modified gta3.img, then try reinstalling GTA:SA." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:626 -msgid "This server does not allow virtual machines" +#: Client/loader/Utils.cpp:1615 +msgid "GTA:SA had trouble adding an upgrade to a vehicle." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:627 -msgid "This server requires driver signing to be enabled" +#: Client/loader/Utils.cpp:1634 +#, c-format +msgid "GTA:SA found errors in the file '%s'" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:628 -msgid "Please restart your PC" +#: Client/loader/Utils.cpp:1716 +msgid "Did your computer restart when playing MTA:SA?" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:629 -msgid "This server has detected missing anti-cheat components" +#: Client/loader/Utils.cpp:1781 +msgid "Please terminate the following programs before continuing:" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:630 -msgid "Try restarting MTA" +#: Client/loader/MainFunctions.cpp:248 +msgid "" +"Trouble restarting MTA:SA\n" +"\n" +"If the problem persists, open Task Manager and\n" +"stop the 'gta_sa.exe' and 'Multi Theft Auto.exe' processes\n" +"\n" +"\n" +"Try to launch MTA:SA again?" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:631 -msgid "This server requires a non-modifed gta3.img and gta_int.img" +#: Client/loader/MainFunctions.cpp:266 +msgid "" +"Another instance of MTA is already running.\n" +"\n" +"If this problem persists, please restart your computer" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:632 -msgid "Please replace gta3.img or gta_int.img" +#: Client/loader/MainFunctions.cpp:269 +msgid "" +"Another instance of MTA is already running.\n" +"\n" +"Do you want to terminate it?" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:635 -msgid "This server does not allow Wine" +#: Client/loader/MainFunctions.cpp:294 +msgid "" +"Are you having problems running MTA:SA?.\n" +"\n" +"Do you want to revert to an earlier version?" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:636 -msgid "Ensure no other program is modifying MTA:SA" +#: Client/loader/MainFunctions.cpp:324 +msgid "" +"There seems to be a problem launching MTA:SA.\n" +"Resetting GTA settings can sometimes fix this problem.\n" +"\n" +"Do you want to reset GTA settings now?" msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:650 -msgid "Time Remaining: " +#: Client/loader/MainFunctions.cpp:339 +msgid "" +"GTA settings have been reset.\n" +"\n" +"Press OK to continue." msgstr "" -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:660 -#, c-format -msgid "%d day" -msgid_plural "%d days" -msgstr[0] "" -msgstr[1] "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:662 -#, c-format -msgid "%d hour" -msgid_plural "%d hours" -msgstr[0] "" -msgstr[1] "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:664 -#, c-format -msgid "%d minute" -msgid_plural "%d minutes" -msgstr[0] "" -msgstr[1] "" - -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:666 +#: Client/loader/MainFunctions.cpp:344 #, c-format -msgid "%d second" -msgid_plural "%d seconds" -msgstr[0] "" -msgstr[1] "" - -#. Display the error -#: Client/mods/deathmatch/logic/CPacketHandler.cpp:670 -msgid "Disconnected" -msgstr "" - -#: Client/mods/deathmatch/logic/CClientGame.cpp:369 -msgid "Flying a UFO around" +msgid "File could not be deleted: '%s'" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:369 -msgid "Cruising around" +#. No settings to delete, or can't find them +#: Client/loader/MainFunctions.cpp:352 +msgid "" +"Are you having problems running MTA:SA?.\n" +"\n" +"Do you want to see some online help?" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:369 -msgid "Riding the waves of" +#. Inform user +#: Client/loader/MainFunctions.cpp:388 +msgid "" +"Are you having problems running MTA:SA?.\n" +"\n" +"Do you want to change the following setting?" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:370 -msgid "Riding the train in" +#: Client/loader/MainFunctions.cpp:431 +msgid "" +"Are you having problems running MTA:SA?.\n" +"\n" +"Try disabling the following products for GTA and MTA:" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:370 -msgid "Flying around" +#: Client/loader/MainFunctions.cpp:465 +msgid "" +"WARNING\n" +"\n" +"MTA:SA has detected unusual activity.\n" +"Please run a virus scan to ensure your system is secure.\n" +"\n" msgstr "" - -#: Client/mods/deathmatch/logic/CClientGame.cpp:371 -msgid "Riding around" + +#: Client/loader/MainFunctions.cpp:468 +#, c-format +msgid "The detected file was: %s\n" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:371 -msgid "Monster truckin' around" +#: Client/loader/MainFunctions.cpp:602 +msgid "" +"An instance of GTA: San Andreas is already running. It needs to be " +"terminated before MTA:SA can be started. Do you want to do that now?" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:371 -msgid "Quaddin' around" +#: Client/loader/MainFunctions.cpp:609 +msgid "" +"Unable to terminate GTA: San Andreas. If the problem persists, please " +"restart your computer." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:372 -msgid "Bunny hopping around" +#: Client/loader/MainFunctions.cpp:632 +msgid "" +"Registry entries are missing. Please reinstall Multi Theft Auto: San Andreas." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:372 -msgid "Doing weird stuff in" +#: Client/loader/MainFunctions.cpp:638 +msgid "" +"The path to your installation of GTA: San Andreas contains unsupported " +"(unicode) characters. Please move your Grand Theft Auto: San Andreas " +"installation to a compatible path that contains only standard ASCII " +"characters and reinstall Multi Theft Auto: San Andreas." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:376 -msgid "Climbing around in" +#: Client/loader/MainFunctions.cpp:648 +msgid "" +"The path to your installation of 'MTA:SA' or 'GTA: San Andreas'\n" +"contains a ';' (semicolon).\n" +"\n" +" If you experience problems when running MTA:SA,\n" +" move your installation(s) to a path that does not contain a semicolon." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:377 -#: Client/mods/deathmatch/logic/CClientGame.cpp:378 -msgid "Doing a drive-by in" +#: Client/loader/MainFunctions.cpp:810 +msgid "" +"Load failed. Please ensure that the latest data files have been installed " +"correctly." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:379 -msgid "Blub blub..." +#: Client/loader/MainFunctions.cpp:819 +#, c-format +msgid "Load failed. Please ensure that %s is installed correctly." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:380 -msgid "Breathing water" +#: Client/loader/MainFunctions.cpp:826 +#, c-format +msgid "Load failed. Could not find gta_sa.exe in %s." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:381 -msgid "Drowning in" +#: Client/loader/MainFunctions.cpp:836 +#, c-format +msgid "" +"Load failed. %s exists in the GTA directory. Please delete before continuing." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:382 -msgid "Ducking for cover in" +#: Client/loader/MainFunctions.cpp:845 +#, c-format +msgid "Main file has an incorrect name (%s)" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:383 -msgid "Fighting in" +#: Client/loader/MainFunctions.cpp:856 +msgid "" +"Main file is unsigned. Possible virus activity.\n" +"\n" +"See online help if MTA does not work correctly." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:384 -msgid "Throwing fists in" +#: Client/loader/MainFunctions.cpp:882 +#, c-format +msgid "" +"Data file %s is missing. Possible virus activity.\n" +"\n" +"Consider reinstalling Multi Theft Auto for your security.\n" +"See online help if MTA does not work correctly." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:385 -msgid "Blastin' fools in" +#: Client/loader/MainFunctions.cpp:893 +#, c-format +msgid "" +"Data file %s is modified. Possible virus activity.\n" +"\n" +"Consider reinstalling Multi Theft Auto for your security.\n" +"See online help if MTA does not work correctly." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:386 -msgid "Shooting up" +#: Client/loader/MainFunctions.cpp:907 +msgid "" +".asi files are in the 'MTA:SA' or 'GTA: San Andreas' installation " +"directory.\n" +"\n" +"Remove these .asi files if you experience problems with MTA:SA." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:387 -msgid "Jetpacking in" +#: Client/loader/MainFunctions.cpp:1009 +msgid "" +"File version mismatch error. Reinstall MTA:SA if you experience problems.\n" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:388 -msgid "Literally on fire in" +#: Client/loader/MainFunctions.cpp:1018 +msgid "Some files are missing. Reinstall MTA:SA if you experience problems.\n" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:389 -msgid "Burning up in" +#: Client/loader/MainFunctions.cpp:1030 +msgid "" +"MTA:SA is not compatible with Windows 'Safe Mode'.\n" +"\n" +"Please restart your PC.\n" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:390 -msgid "Swimming in" +#: Client/loader/MainFunctions.cpp:1123 +msgid "Fix configuration issue" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:391 -msgid "Floating around in" +#. Try to relaunch as admin if not done so already +#: Client/loader/MainFunctions.cpp:1157 +msgid "Fix elevation required error" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:392 -msgid "Being chased by a shark" +#: Client/loader/MainFunctions.cpp:1164 +#, c-format +msgid "" +"Could not start Grand Theft Auto: San Andreas. Please try restarting, or if " +"the problem persists,contact MTA at www.multitheftauto.com. \n" +"\n" +"[%s]" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:393 -msgid "Choking to death in" +#: Client/loader/MainFunctions.cpp:1219 +msgid "" +"GTA: San Andreas may not have launched correctly. Do you want to terminate " +"it?" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:651 -msgid "Entering the game ..." +#: Client/loader/CInstallManager.cpp:376 +#, c-format +msgid "" +"MTA:SA could not complete the following task:\n" +"\n" +" '%s'\n" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:709 +#: Client/loader/CInstallManager.cpp:426 msgid "" -"Not connected; please use Quick Connect or the 'connect' command to connect " -"to a server." +"** The crash was caused by a graphics driver error **\n" +"\n" +"** Please update your graphics drivers **" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:755 -msgid "Could not start the local server. See console for details." +#: Client/loader/CInstallManager.cpp:532 +msgid "Install updated MTA:SA files" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:765 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1237 -msgid "Local Server" +#: Client/loader/CInstallManager.cpp:552 +msgid "" +"Could not update due to file conflicts. Please close other applications and " +"retry" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:765 -msgid "Starting local server ..." +#: Client/loader/CInstallManager.cpp:561 +#, c-format +msgid "Multi Theft Auto has not been installed properly, please reinstall. %s" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1013 -msgid "Area 51" +#: Client/loader/CInstallManager.cpp:613 +msgid "Create GTA:SA junctions" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1022 -msgid "Walking around " +#: Client/loader/CInstallManager.cpp:657 +msgid "MTA:SA cannot launch because copying a file failed:" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1168 -#, c-format -msgid "You were kicked from the game ( %s )" +#: Client/loader/CInstallManager.cpp:663 Client/loader/CInstallManager.cpp:703 +msgid "MTA:SA cannot launch because an MTA:SA file is incorrect or missing:" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1237 -msgid "Connecting to local server..." +#: Client/loader/CInstallManager.cpp:672 +msgid "Copy MTA:SA files" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1248 -msgid "Error connecting to server." +#: Client/loader/CInstallManager.cpp:695 Client/loader/CInstallManager.cpp:773 +msgid "MTA:SA cannot launch because a GTA:SA file is incorrect or missing:" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1258 -msgid "Connecting to local server timed out. See console for details." +#: Client/loader/CInstallManager.cpp:780 +msgid "Patch GTA:SA dependency" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1364 -msgid "Connection with the server was lost" +#: Client/loader/CInstallManager.cpp:828 +msgid "" +"MTA:SA cannot launch because the GTA:SA executable is incorrect or missing:" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1391 -msgid "Disconnected: the server is currently full" +#: Client/loader/CInstallManager.cpp:832 +msgid "" +"Please check your anti-virus for a false-positive detection, try to add an " +"exception for the GTA:SA executable and restart MTA:SA." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1403 -msgid "Disconnected: invalid password specified" +#: Client/loader/CInstallManager.cpp:838 +msgid "Generate GTA:SA" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1425 -msgid "MTA Client verification failed!" +#: Client/loader/CInstallManager.cpp:853 +msgid "MTA:SA cannot launch because the GTA:SA executable is not loadable:" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5708 -msgid "In a ditch" +#: Client/loader/CInstallManager.cpp:860 Client/loader/CInstallManager.cpp:883 +msgid "Patch GTA:SA" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5708 -msgid "En-route to hospital" +#: Client/loader/CInstallManager.cpp:876 +msgid "MTA:SA cannot launch because patching GTA:SA has failed:" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5708 -msgid "Meeting their maker" +#: Client/loader/CInstallManager.cpp:1113 +msgid "Missing file:" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5709 -msgid "Regretting their decisions" +#: Client/loader/CInstallManager.cpp:1117 +msgid "If MTA fails to load, please re-install GTA:SA" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5709 -msgid "Wasted" +#: Client/loader/CInstallManager.cpp:1152 +msgid "Update install settings" msgstr "" -#: Client/mods/deathmatch/logic/CTransferBox.cpp:25 -msgid "Map download progress:" +#: Client/loader/CInstallManager.cpp:1305 +msgid "Update compatibility settings" msgstr "" -#: Client/mods/deathmatch/logic/CTransferBox.cpp:28 -msgid "Download Progress:" +#. Couldn't create render target for CPostEffects +#: Client/multiplayer_sa/CMultiplayerSA_CrashFixHacks.cpp:1450 +msgid "Problem with graphics driver" msgstr "" -#. Find our largest piece of text, so we can size accordingly -#: Client/mods/deathmatch/logic/CTransferBox.cpp:42 -#: Client/mods/deathmatch/logic/CTransferBox.cpp:105 -#, c-format -msgid "%s of %s" +#: Client/game_sa/CSettingsSA.cpp:753 +msgid "Can't find valid screen resolution." msgstr "" -#: Client/mods/deathmatch/logic/CTransferBox.cpp:44 -#: Client/mods/deathmatch/logic/CTransferBox.cpp:65 -msgid "Disconnect to cancel download" +#. Confirm that res should be used +#: Client/game_sa/CSettingsSA.cpp:829 +msgid "Are you sure you want to use this screen resolution?" msgstr "" #: Client/cefweb/CWebsiteRequests.cpp:19 From 3d70c1f6b2934d2426c33645df2d2bd084926a41 Mon Sep 17 00:00:00 2001 From: MTABot Date: Wed, 14 Aug 2024 07:30:36 +0000 Subject: [PATCH 03/39] Visual Studio Update Build Tools 2022: 17.11.35208.52 This is an automated commit to keep track of toolchain changes on the build server. It applies to every MTA build after this commit until further notice. [skip ci] From fb189bbf92c0cc5a04ece04f110c99319579b025 Mon Sep 17 00:00:00 2001 From: Dutchman101 Date: Wed, 14 Aug 2024 20:26:29 +0200 Subject: [PATCH 04/39] Update CEF to 127.3.4+ge9e2e14+chromium-127.0.6533.100 --- utils/buildactions/install_cef.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/buildactions/install_cef.lua b/utils/buildactions/install_cef.lua index 307fb66a28..8a981df70f 100644 --- a/utils/buildactions/install_cef.lua +++ b/utils/buildactions/install_cef.lua @@ -9,8 +9,8 @@ local CEF_URL_PREFIX = "https://cef-builds.spotifycdn.com/cef_binary_" local CEF_URL_SUFFIX = "_windows32_minimal.tar.bz2" -- Change here to update CEF version -local CEF_VERSION = "127.1.4+ge71a509+chromium-127.0.6533.89" -local CEF_HASH = "c94410e64cd2148df2c12ec70c7d7d8a852f3556f950c510a5eea0672c5fa886" +local CEF_VERSION = "127.3.4+ge9e2e14+chromium-127.0.6533.100" +local CEF_HASH = "621a2ddf02b81441f7b87214dcdcf1bb35401b646c9750807692e45d9818d174" function make_cef_download_url() return CEF_URL_PREFIX..http.escapeUrlParam(CEF_VERSION)..CEF_URL_SUFFIX From 153213021d8091382a0bcce30da52fdf217d1cd9 Mon Sep 17 00:00:00 2001 From: Dutchman101 Date: Wed, 14 Aug 2024 20:31:30 +0200 Subject: [PATCH 05/39] Revert PR #3620 (Read file from path) due to bugs persisting After testing, it turns out not to be stable yet, it could be reproduced on FFS server before they changed something (on which the exact details they still need to collaborate with Tracer. We can't accept that a PR may break certain servers due to their specific use of texture/PNG implementations). Investigation into this took place in a gated channel within MTA discord, but will ideally move to dev discord should collaboration to get to the bottom of why the issues still aren't resolved, resume. --- Client/mods/deathmatch/logic/CScriptFile.cpp | 16 +- .../logic/lua/CLuaFunctionParseHelpers.cpp | 15 -- .../logic/lua/CLuaFunctionParseHelpers.h | 6 +- Server/mods/deathmatch/logic/CScriptFile.cpp | 13 +- .../logic/lua/CLuaFunctionParseHelpers.cpp | 76 ------ .../logic/lua/CLuaFunctionParseHelpers.h | 5 +- .../deathmatch/logic/luadefs/CLuaFileDefs.cpp | 227 +++++------------- .../deathmatch/logic/luadefs/CLuaFileDefs.h | 4 +- 8 files changed, 68 insertions(+), 294 deletions(-) diff --git a/Client/mods/deathmatch/logic/CScriptFile.cpp b/Client/mods/deathmatch/logic/CScriptFile.cpp index 9d20aae9f7..d9ee531842 100644 --- a/Client/mods/deathmatch/logic/CScriptFile.cpp +++ b/Client/mods/deathmatch/logic/CScriptFile.cpp @@ -158,8 +158,7 @@ long CScriptFile::Read(unsigned long ulSize, SString& outBuffer) DoResourceFileCheck(); // If read size is large, limit it to how many bytes can be read (avoid memory problems with over allocation) - // large : >10KB - if (ulSize > 10240) + if (ulSize > 10000) { long lCurrentPos = m_pFile->FTell(); m_pFile->FSeek(0, SEEK_END); @@ -178,18 +177,7 @@ long CScriptFile::Read(unsigned long ulSize, SString& outBuffer) return -2; } - auto bytesRead = m_pFile->FRead(outBuffer.data(), ulSize); - - // EOF reached? - // Cant check for error as binary interface - // is pure virtual class with no definitions - // available (CNetServer) - if (m_pFile->FEof()) - { - // if so, truncate the data to the amount of bytes read - outBuffer.resize(bytesRead + 1); - } - return bytesRead; + return m_pFile->FRead(outBuffer.data(), ulSize); } long CScriptFile::Write(unsigned long ulSize, const char* pData) diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 279eff381a..7090203704 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -1268,11 +1268,6 @@ void CheckCanModifyOtherResource(CScriptArgReader& argStream, CResource* pThisRe // No operation on the client } -std::pair CheckCanModifyOtherResource(CResource* pThisResource, CResource* pOtherResource) noexcept -{ - return {true, ""}; -} - // // Set error if pThisResource does not have permission to modify every resource in resourceList // @@ -1281,11 +1276,6 @@ void CheckCanModifyOtherResources(CScriptArgReader& argStream, CResource* pThisR // No operation on the client } -std::pair CheckCanModifyOtherResources(CResource* pThisResource, std::initializer_list resourceList) noexcept -{ - return {true, ""}; -} - // // Set error if resource file access is blocked due to reasons // @@ -1294,8 +1284,3 @@ void CheckCanAccessOtherResourceFile(CScriptArgReader& argStream, CResource* pTh { // No operation on the client } - -std::pair CheckCanAccessOtherResourceFile(CResource* pThisResource, CResource* pOtherResource, const SString& strAbsPath, bool* pbReadOnly) noexcept -{ - return {true, ""}; -} diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h index dc8b092b50..9b93980d85 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h @@ -590,13 +590,9 @@ void ReadPregFlags(CScriptArgReader& argStream, pcrecpp::RE_Options& pOptions); // Resource access helpers // void CheckCanModifyOtherResource(CScriptArgReader& argStream, CResource* pThisResource, CResource* pOtherResource); -std::pair CheckCanModifyOtherResource(CResource* pThisResource, CResource* pOtherResource) noexcept; void CheckCanModifyOtherResources(CScriptArgReader& argStream, CResource* pThisResource, std::initializer_list resourceList); -std::pair CheckCanModifyOtherResources(CResource* pThisResource, std::initializer_list resourceList) noexcept; - void CheckCanAccessOtherResourceFile(CScriptArgReader& argStream, CResource* pThisResource, CResource* pOtherResource, const SString& strAbsPath, +void CheckCanAccessOtherResourceFile(CScriptArgReader& argStream, CResource* pThisResource, CResource* pOtherResource, const SString& strAbsPath, bool* pbReadOnly = nullptr); -std::pair CheckCanAccessOtherResourceFile(CResource* pThisResource, CResource* pOtherResource, const SString& strAbsPath, - bool* pbReadOnly = nullptr) noexcept; // // Other misc helpers diff --git a/Server/mods/deathmatch/logic/CScriptFile.cpp b/Server/mods/deathmatch/logic/CScriptFile.cpp index c4160f5cca..f8270df393 100644 --- a/Server/mods/deathmatch/logic/CScriptFile.cpp +++ b/Server/mods/deathmatch/logic/CScriptFile.cpp @@ -178,8 +178,7 @@ long CScriptFile::Read(unsigned long ulSize, SString& outBuffer) return -1; // If read size is large, limit it to how many bytes can be read (avoid memory problems with over allocation) - // large : >10KB - if (ulSize > 10240) + if (ulSize > 10000) { long lCurrentPos = ftell(m_pFile); fseek(m_pFile, 0, SEEK_END); @@ -198,15 +197,7 @@ long CScriptFile::Read(unsigned long ulSize, SString& outBuffer) return -2; } - auto bytesRead = fread(outBuffer.data(), 1, ulSize, m_pFile); - - // EOF reached or error was thrown? - if (feof(m_pFile) || ferror(m_pFile)) - { - // if so, truncate the data to the amount of bytes read - outBuffer.resize(bytesRead + 1); - } - return bytesRead; + return fread(outBuffer.data(), 1, ulSize, m_pFile); } long CScriptFile::Write(unsigned long ulSize, const char* pData) diff --git a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 87c614025a..ef25750c05 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -746,17 +746,6 @@ void CheckCanModifyOtherResource(CScriptArgReader& argStream, CResource* pThisRe "Access denied"); } -std::pair CheckCanModifyOtherResource(CResource* pThisResource, CResource* pOtherResource) noexcept -{ - if (GetResourceModifyScope(pThisResource, pOtherResource) != eResourceModifyScope::NONE) - return {true, ""}; - - SString str("ModifyOtherObjects in ACL denied resource %s to access %s", - pThisResource->GetName().c_str(), pOtherResource->GetName().c_str() - ); - return {false, str}; -} - // // Set error if pThisResource does not have permission to modify every resource in resourceList // @@ -798,46 +787,6 @@ void CheckCanModifyOtherResources(CScriptArgReader& argStream, CResource* pThisR SString("ModifyOtherObjects in ACL denied resource %s to access %s", pThisResource->GetName().c_str(), ssResourceNames.str().c_str()), "Access denied"); } -std::pair CheckCanModifyOtherResources(CResource* pThisResource, std::initializer_list resourceList) noexcept -{ - // std::unordered_set only allows unique values and resourceList can contain duplicates - std::unordered_set setNoPermissionResources; - - for (const auto& pOtherResource : resourceList) - { - eResourceModifyScope modifyScope = GetResourceModifyScope(pThisResource, pOtherResource); - - if (modifyScope == eResourceModifyScope::SINGLE_RESOURCE) - continue; - - if (modifyScope == eResourceModifyScope::EVERY_RESOURCE) - return {true, ""}; - - setNoPermissionResources.emplace(pOtherResource); - } - - if (setNoPermissionResources.empty()) - return {true, ""}; - - std::stringstream ssResourceNames; - std::size_t remainingElements = setNoPermissionResources.size(); - - for (const auto& pResource : setNoPermissionResources) - { - ssResourceNames << pResource->GetName(); - - if (remainingElements > 1) - ssResourceNames << ", "; - - --remainingElements; - } - - SString str("ModifyOtherObjects in ACL denied resource %s to access %s", - pThisResource->GetName().c_str(), ssResourceNames.str().c_str() - ); - return {false, str}; -} - // // Set error if resource file access is blocked due to reasons // @@ -864,28 +813,3 @@ void CheckCanAccessOtherResourceFile(CScriptArgReader& argStream, CResource* pTh SString("Database credentials protection denied resource %s to access %s", *pThisResource->GetName(), *pOtherResource->GetName()), "Access denied"); } } - -std::pair CheckCanAccessOtherResourceFile(CResource* pThisResource, CResource* pOtherResource, const SString& strAbsPath, bool* pbReadOnly) noexcept -{ - if (!g_pGame->GetConfig()->IsDatabaseCredentialsProtectionEnabled()) - return {true, ""}; - - // Is other resource different and requested access denied - if (pThisResource == pOtherResource) - return {true, ""}; - - if (!pOtherResource->IsFileDbConnectMysqlProtected(strAbsPath, pbReadOnly ? *pbReadOnly : false)) - return {true, ""}; - - // No access - See if we can change to readonly - if (pbReadOnly && !(*pbReadOnly) && !pOtherResource->IsFileDbConnectMysqlProtected(strAbsPath, true)) { - // Yes readonly access - *pbReadOnly = true; - return {true, ""}; - } - - SString str("Database credentials protection denied resource %s to access %s", - *pThisResource->GetName(), *pOtherResource->GetName() - ); - return {false, str}; -} diff --git a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h index f06abc0d00..52a4536012 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h +++ b/Server/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h @@ -403,12 +403,9 @@ enum class eResourceModifyScope eResourceModifyScope GetResourceModifyScope(CResource* pThisResource, CResource* pOtherResource); void CheckCanModifyOtherResource(CScriptArgReader& argStream, CResource* pThisResource, CResource* pOtherResource); -std::pair CheckCanModifyOtherResource(CResource* pThisResource, CResource* pOtherResource) noexcept; -void CheckCanModifyOtherResources(CScriptArgReader& argStream, CResource* pThisResource, std::initializer_list resourceList); -std::pair CheckCanModifyOtherResources(CResource* pThisResource, std::initializer_list resourceList) noexcept; +void CheckCanModifyOtherResources(CScriptArgReader& argStream, CResource* pThisResource, std::initializer_list resourceList); void CheckCanAccessOtherResourceFile(CScriptArgReader& argStream, CResource* pThisResource, CResource* pOtherResource, const SString& strAbsPath, bool* pbReadOnly = nullptr); -std::pair CheckCanAccessOtherResourceFile(CResource* pThisResource, CResource* pOtherResource, const SString& strAbsPath, bool* pbReadOnly = nullptr) noexcept; // // Other misc helpers diff --git a/Shared/mods/deathmatch/logic/luadefs/CLuaFileDefs.cpp b/Shared/mods/deathmatch/logic/luadefs/CLuaFileDefs.cpp index 5686df112d..bacfe9843b 100644 --- a/Shared/mods/deathmatch/logic/luadefs/CLuaFileDefs.cpp +++ b/Shared/mods/deathmatch/logic/luadefs/CLuaFileDefs.cpp @@ -46,7 +46,7 @@ void CLuaFileDefs::LoadFunctions() {"fileDelete", fileDelete}, {"fileClose", fileClose}, {"fileFlush", fileFlush}, - {"fileRead", ArgumentParser}, + {"fileRead", fileRead}, {"fileWrite", fileWrite}, {"fileGetPos", fileGetPos}, {"fileGetSize", fileGetSize}, @@ -702,92 +702,51 @@ int CLuaFileDefs::fileFlush(lua_State* luaVM) return 1; } -std::variant CLuaFileDefs::fileRead ( - lua_State* luaVM, - std::variant file, - std::optional count -) { - const auto& ReadFile = [&](CScriptFile* pFile, std::uint32_t count) - -> std::variant - { - if (count == 0) - return std::string(); +int CLuaFileDefs::fileRead(lua_State* luaVM) +{ + // string fileRead ( file theFile, int count ) + CScriptFile* pFile; + unsigned long ulCount = 0; - SString buffer; - auto bytesRead = pFile->Read(count, buffer); + CScriptArgReader argStream(luaVM); + argStream.ReadUserData(pFile); + argStream.ReadNumber(ulCount); - if (bytesRead == -2) - { - m_pScriptDebugging->LogWarning(luaVM, "out of memory"); - return false; - } - if (bytesRead >= 0) - return buffer; - }; - if (std::holds_alternative(file)) + if (!argStream.HasErrors()) { - auto pFile = std::get(file); - if (!pFile) - { - m_pScriptDebugging->LogBadPointer(luaVM, "file", 1); - return false; - } - if (!count.has_value()) + // Reading zero bytes from a file results in an empty string + if (ulCount == 0) { - m_pScriptDebugging->LogBadType(luaVM); - return false; + lua_pushstring(luaVM, ""); + return 1; } - return ReadFile(pFile, count.value()); - } - - CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine(luaVM); - if (!pLuaMain) - return false; - - std::string strInputPath = std::get(file); - SString strAbsPath; - SString strMetaPath; - CResource* pThisResource = pLuaMain->GetResource(); - CResource* pResource = pThisResource; - if (!CResourceManager::ParseResourcePathInput(strInputPath, pResource, &strAbsPath, &strMetaPath)) - return false; + // Allocate a buffer to read the stuff into and read some :~ into it + SString buffer; + long lBytesRead = pFile->Read(ulCount, buffer); - { - auto canModify = CheckCanModifyOtherResource(pThisResource, pResource); - if (!canModify.first) + if (lBytesRead >= 0) { - throw LuaFunctionError(canModify.second.c_str(), false); + // Push the string onto the Lua stack. Use pushlstring so we are binary + // compatible. Normal push string takes zero terminated strings. + lua_pushlstring(luaVM, buffer.data(), lBytesRead); + return 1; } - } - { - auto canModify = CheckCanAccessOtherResourceFile(pThisResource, pResource, strAbsPath); - if (!canModify.first) + else if (lBytesRead == -2) { - throw LuaFunctionError(canModify.second.c_str(), false); + m_pScriptDebugging->LogWarning(luaVM, "out of memory"); + } + else + { + m_pScriptDebugging->LogBadPointer(luaVM, "file", 1); } } + else + m_pScriptDebugging->LogCustom(luaVM, argStream.GetFullErrorMessage()); - // IF SERVER -#ifndef MTA_CLIENT - // Create the file to create - CScriptFile* pFile = new CScriptFile(pThisResource->GetScriptID(), strMetaPath, DEFAULT_MAX_FILESIZE); -#else - eAccessType accessType = strInputPath[0] == '@' ? eAccessType::ACCESS_PRIVATE : eAccessType::ACCESS_PUBLIC; - CScriptFile* pFile = new CScriptFile(pThisResource->GetScriptID(), strMetaPath, DEFAULT_MAX_FILESIZE, accessType); -#endif - // Try to load it - if (!pFile->Load(pResource, CScriptFile::MODE_READ)) - { - delete pFile; - SString err("unable to load file '%s'", strInputPath.c_str()); - throw LuaFunctionError(err, false); - } - - std::variant content = ReadFile(pFile, pFile->GetSize()); - pFile->Unload(); - delete pFile; - return content; + // Error + lua_pushnil(luaVM); + return 1; } int CLuaFileDefs::fileWrite(lua_State* luaVM) @@ -850,48 +809,32 @@ int CLuaFileDefs::fileWrite(lua_State* luaVM) return 1; } -std::optional CLuaFileDefs::fileGetContents( - lua_State* luaVM, - std::variant file, - std::optional maybeVerifyContents -) { +std::optional CLuaFileDefs::fileGetContents(lua_State* L, CScriptFile* scriptFile, std::optional maybeVerifyContents) +{ // string fileGetContents ( file target [, bool verifyContents = true ] ) - const auto& ReadFile = [&](CScriptFile* pFile) -> std::optional + std::string buffer; + const long bytesRead = scriptFile->GetContents(buffer); + + if (bytesRead == -2) { - std::string buffer; - const auto bytesRead = pFile->GetContents(buffer); + m_pScriptDebugging->LogWarning(L, "out of memory"); + return {}; + } + else if (bytesRead < 0) + { + m_pScriptDebugging->LogBadPointer(L, "file", 1); + return {}; + } - if (bytesRead == -2) - { - m_pScriptDebugging->LogWarning(luaVM, "out of memory"); - return std::nullopt; - } - else if (bytesRead < 0) - { - m_pScriptDebugging->LogBadPointer(luaVM, "file", 1); - return std::nullopt; - } + if (maybeVerifyContents.value_or(true) == false) + return buffer; - if (!maybeVerifyContents.value_or(true)) - return buffer; + CResource& thisResource = lua_getownerresource(L); - CResource& thisResource = lua_getownerresource(luaVM); - CResourceFile* resourceFile = pFile->GetResourceFile(); - if (!resourceFile) - { - const SString warningFilePath = getResourceFilePath(&thisResource, - pFile->GetResource(), pFile->GetFilePath() - ); - m_pScriptDebugging->LogWarning(luaVM, - "verification failed: resource file not found '%s'", - warningFilePath.c_str() - ); - return std::nullopt; - } - const CChecksum current = CChecksum::GenerateChecksumFromBuffer( - buffer.data(), buffer.size() - ); + if (CResourceFile* resourceFile = scriptFile->GetResourceFile(); resourceFile != nullptr) + { + const CChecksum current = CChecksum::GenerateChecksumFromBuffer(buffer.data(), static_cast(buffer.size())); #ifdef MTA_CLIENT const CChecksum expected = resourceFile->GetServerChecksum(); @@ -902,67 +845,17 @@ std::optional CLuaFileDefs::fileGetContents( if (current == expected) return buffer; - const SString warningFilePath = getResourceFilePath(&thisResource, - pFile->GetResource(), pFile->GetFilePath() - ); - m_pScriptDebugging->LogWarning(luaVM, - "verification failed: checksum mismatch for resource file '%s' (expected %08X, got %08X)", - warningFilePath.c_str(), expected.ulCRC, current.ulCRC - ); - - return std::nullopt; - }; - - if (std::holds_alternative(file)) - return ReadFile(std::get(file)); - - CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine(luaVM); - if (!pLuaMain) - return std::nullopt; - - std::string strInputPath = std::get(file); - - SString strAbsPath; - SString strMetaPath; - CResource* pThisResource = pLuaMain->GetResource(); - CResource* pResource = pThisResource; - if (!CResourceManager::ParseResourcePathInput(strInputPath, pResource, &strAbsPath, &strMetaPath)) - return std::nullopt; - - { - auto canModify = CheckCanModifyOtherResource(pThisResource, pResource); - if (!canModify.first) - { - throw std::invalid_argument(canModify.second); - } + const SString warningFilePath = getResourceFilePath(&thisResource, scriptFile->GetResource(), scriptFile->GetFilePath()); + m_pScriptDebugging->LogWarning(L, "verification failed: checksum mismatch for resource file '%s' (expected %08X, got %08X)", warningFilePath.c_str(), + expected.ulCRC, current.ulCRC); } + else { - auto canModify = CheckCanAccessOtherResourceFile(pThisResource, pResource, strAbsPath); - if (!canModify.first) - { - throw std::invalid_argument(canModify.second); - } - } - - // IF SERVER -#ifndef MTA_CLIENT - // Create the file to create - CScriptFile* pFile = new CScriptFile(pThisResource->GetScriptID(), strMetaPath, DEFAULT_MAX_FILESIZE); -#else - eAccessType accessType = strInputPath[0] == '@' ? eAccessType::ACCESS_PRIVATE : eAccessType::ACCESS_PUBLIC; - CScriptFile* pFile = new CScriptFile(pThisResource->GetScriptID(), strMetaPath, DEFAULT_MAX_FILESIZE, accessType); -#endif - // Try to load it - if (!pFile->Load(pResource, CScriptFile::MODE_READ)) - { - delete pFile; - throw std::invalid_argument(SString("unable to load file '%s'", strInputPath.c_str())); + const SString warningFilePath = getResourceFilePath(&thisResource, scriptFile->GetResource(), scriptFile->GetFilePath()); + m_pScriptDebugging->LogWarning(L, "verification failed: resource file not found '%s'", warningFilePath.c_str()); } - auto content = ReadFile(pFile); - pFile->Unload(); - delete pFile; - return content; + return {}; } int CLuaFileDefs::fileGetPos(lua_State* luaVM) diff --git a/Shared/mods/deathmatch/logic/luadefs/CLuaFileDefs.h b/Shared/mods/deathmatch/logic/luadefs/CLuaFileDefs.h index 4b769825a0..9e42e07f29 100644 --- a/Shared/mods/deathmatch/logic/luadefs/CLuaFileDefs.h +++ b/Shared/mods/deathmatch/logic/luadefs/CLuaFileDefs.h @@ -28,9 +28,9 @@ class CLuaFileDefs : public CLuaDefs LUA_DECLARE(fileClose); LUA_DECLARE(fileFlush); - static std::variant fileRead(lua_State* luaVM, std::variant file, std::optional count); + LUA_DECLARE(fileRead); LUA_DECLARE(fileWrite); - static std::optional fileGetContents(lua_State* luaVM, std::variant file, std::optional maybeVerifyContents); + static std::optional fileGetContents(lua_State* L, CScriptFile* scriptFile, std::optional maybeVerifyContents); LUA_DECLARE(fileGetPos); LUA_DECLARE(fileGetSize); From 92890e830774ebf911fa7cfc2ccdd68632ad0d8e Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Wed, 14 Aug 2024 21:45:19 +0300 Subject: [PATCH 06/39] Fix building / engineSetPoolCapacity crashes (#3625) * Fix crash with engineSetPoolCapacity --- Client/game_sa/CGameSA.cpp | 8 ++------ Client/game_sa/CGameSA.h | 2 +- Client/mods/deathmatch/logic/CClientBuilding.cpp | 2 +- Client/sdk/game/CGame.h | 2 +- 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/Client/game_sa/CGameSA.cpp b/Client/game_sa/CGameSA.cpp index abfb822816..5d4a830099 100644 --- a/Client/game_sa/CGameSA.cpp +++ b/Client/game_sa/CGameSA.cpp @@ -1005,7 +1005,7 @@ void CGameSA::GetShaderReplacementStats(SShaderReplacementStats& outStats) m_pRenderWare->GetShaderReplacementStats(outStats); } -void CGameSA::RemoveAllBuildings(bool clearBuildingRemoval) +void CGameSA::RemoveAllBuildings() { m_pIplStore->SetDynamicIplStreamingEnabled(false); @@ -1013,10 +1013,6 @@ void CGameSA::RemoveAllBuildings(bool clearBuildingRemoval) m_pPools->GetBuildingsPool().RemoveAllBuildings(); auto pBuildingRemoval = static_cast(m_pBuildingRemoval); - if (clearBuildingRemoval) - { - pBuildingRemoval->ClearRemovedBuildingLists(); - } pBuildingRemoval->DropCaches(); m_isBuildingsRemoved = true; @@ -1036,7 +1032,7 @@ bool CGameSA::SetBuildingPoolSize(size_t size) const bool shouldRemoveBuilding = !m_isBuildingsRemoved; if (shouldRemoveBuilding) { - RemoveAllBuildings(false); + RemoveAllBuildings(); } else { diff --git a/Client/game_sa/CGameSA.h b/Client/game_sa/CGameSA.h index f22b5748f7..976c1d5db0 100644 --- a/Client/game_sa/CGameSA.h +++ b/Client/game_sa/CGameSA.h @@ -303,7 +303,7 @@ class CGameSA : public CGame PostWeaponFireHandler* m_pPostWeaponFireHandler; TaskSimpleBeHitHandler* m_pTaskSimpleBeHitHandler; - void RemoveAllBuildings(bool clearBuildingRemoval = true); + void RemoveAllBuildings(); void RestoreGameBuildings(); bool SetBuildingPoolSize(size_t size); diff --git a/Client/mods/deathmatch/logic/CClientBuilding.cpp b/Client/mods/deathmatch/logic/CClientBuilding.cpp index 3d928143d9..61947a6bab 100644 --- a/Client/mods/deathmatch/logic/CClientBuilding.cpp +++ b/Client/mods/deathmatch/logic/CClientBuilding.cpp @@ -145,7 +145,7 @@ void CClientBuilding::Destroy() if (!m_pBuilding) return; - if (m_pHighBuilding) + if (m_pHighBuilding && m_pHighBuilding->IsValid()) { m_pHighBuilding->GetBuildingEntity()->SetLod(nullptr); } diff --git a/Client/sdk/game/CGame.h b/Client/sdk/game/CGame.h index 215141ee23..a1d792813e 100644 --- a/Client/sdk/game/CGame.h +++ b/Client/sdk/game/CGame.h @@ -268,7 +268,7 @@ class __declspec(novtable) CGame virtual int32_t GetBaseIDforSCM() = 0; virtual int32_t GetCountOfAllFileIDs() = 0; - virtual void RemoveAllBuildings(bool clearBuildingRemoval = true) = 0; + virtual void RemoveAllBuildings() = 0; virtual void RestoreGameBuildings() = 0; virtual bool SetBuildingPoolSize(size_t size) = 0; From 612f9a6715059baa43182e891258d9c3ceb19591 Mon Sep 17 00:00:00 2001 From: Tracer <43095317+TracerDS@users.noreply.github.com> Date: Wed, 14 Aug 2024 20:46:59 +0200 Subject: [PATCH 07/39] Fixed element health issues (#3633) --- .../logic/CStaticFunctionDefinitions.cpp | 7 +----- .../logic/CStaticFunctionDefinitions.cpp | 24 +++++-------------- 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index 7aa792bf39..4fae81c6c2 100644 --- a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -1465,13 +1465,8 @@ bool CStaticFunctionDefinitions::SetElementHealth(CClientEntity& Entity, float f // Grab the model CClientPed& Ped = static_cast(Entity); - // Limit to max health - float fMaxHealth = Ped.GetMaxHealth(); - if (fHealth > fMaxHealth) - fHealth = fMaxHealth; - // Set the new health - Ped.SetHealth(fHealth); + Ped.SetHealth(Clamp(0.0f, fHealth, Ped.GetMaxHealth())); return true; break; } diff --git a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index c7ce99d91e..ab24fe0d66 100644 --- a/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Server/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -1654,27 +1654,15 @@ bool CStaticFunctionDefinitions::SetElementHealth(CElement* pElement, float fHea case CElement::PLAYER: { CPed* pPed = static_cast(pElement); - if (pPed->IsSpawned()) - { - // Limit their max health to what the stat says - float fMaxHealth = pPed->GetMaxHealth(); - if (fHealth > fMaxHealth) - fHealth = fMaxHealth; + if (!pPed->IsSpawned()) + return false; - // Do not set the health below zero - if (fHealth < 0.0f) - fHealth = 0.0f; + fHealth = Clamp(0.0f, fHealth, pPed->GetMaxHealth()); + pPed->SetHealth(fHealth); - // This makes sure the health is set to what will get reported - unsigned char ucHealth = static_cast(fHealth * 1.25f); - fHealth = static_cast(ucHealth) / 1.25f; - pPed->SetHealth(fHealth); + if (pPed->IsDead() && fHealth > 0.0f) + pPed->SetIsDead(false); - if (pPed->IsDead() && fHealth > 0.0f) - pPed->SetIsDead(false); - } - else - return false; break; } case CElement::VEHICLE: From 98f22e3abc5bb044a93adbadcdb679f9a3754350 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Wed, 14 Aug 2024 21:49:13 +0300 Subject: [PATCH 08/39] Allow longer LOD distances (#3606) --- Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index db3a25f4c3..f0ebabb419 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -1046,12 +1046,14 @@ int CLuaEngineDefs::EngineGetModelLODDistance(lua_State* luaVM) int CLuaEngineDefs::EngineSetModelLODDistance(lua_State* luaVM) { - // bool engineSetModelLODDistance ( int/string modelID, float distance ) + // bool engineSetModelLODDistance ( int/string modelID, float distance [, bool extendedLod = false ]) SString strModelId; float fDistance; + bool extendedLod; CScriptArgReader argStream(luaVM); argStream.ReadString(strModelId); argStream.ReadNumber(fDistance); + argStream.ReadBool(extendedLod, false); if (!argStream.HasErrors()) { @@ -1062,7 +1064,7 @@ int CLuaEngineDefs::EngineSetModelLODDistance(lua_State* luaVM) CModelInfo* pModelInfo = g_pGame->GetModelInfo(usModelID); if (pModelInfo && fDistance > 0.0f) { - pModelInfo->SetLODDistance(fDistance); + pModelInfo->SetLODDistance(fDistance, extendedLod); lua_pushboolean(luaVM, true); return 1; } From 008eaa7e36ae74bbab7c5bc9861d8f0f890eb945 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Wed, 14 Aug 2024 21:55:34 +0300 Subject: [PATCH 09/39] Add model streaming functions (#3611) --- Client/game_sa/CModelInfoSA.cpp | 12 +- Client/game_sa/CModelInfoSA.h | 1 + Client/mods/deathmatch/logic/CClientModel.cpp | 3 + Client/mods/deathmatch/logic/CResource.cpp | 3 + Client/mods/deathmatch/logic/CResource.h | 5 + .../logic/CResourceModelStreamer.cpp | 122 ++++++++++++++++++ .../deathmatch/logic/CResourceModelStreamer.h | 30 +++++ .../logic/lua/CLuaFunctionParseHelpers.cpp | 8 ++ .../logic/lua/CLuaFunctionParseHelpers.h | 2 + Client/mods/deathmatch/logic/lua/CLuaMain.h | 2 +- .../logic/luadefs/CLuaEngineDefs.cpp | 45 +++++++ .../deathmatch/logic/luadefs/CLuaEngineDefs.h | 4 + Client/sdk/game/CModelInfo.h | 1 + Client/sdk/game/CStreaming.h | 23 +++- 14 files changed, 258 insertions(+), 3 deletions(-) create mode 100644 Client/mods/deathmatch/logic/CResourceModelStreamer.cpp create mode 100644 Client/mods/deathmatch/logic/CResourceModelStreamer.h diff --git a/Client/game_sa/CModelInfoSA.cpp b/Client/game_sa/CModelInfoSA.cpp index 5dc00712da..483615d3e1 100644 --- a/Client/game_sa/CModelInfoSA.cpp +++ b/Client/game_sa/CModelInfoSA.cpp @@ -440,6 +440,16 @@ void CModelInfoSA::Remove() } } +bool CModelInfoSA::UnloadUnused() +{ + if (m_pInterface->usNumberOfRefs == 0 && !m_pCustomClump && !m_pCustomColModel) + { + pGame->GetStreaming()->RemoveModel(m_dwModelID); + return true; + } + return false; +} + bool CModelInfoSA::IsLoaded() { if (DoIsLoaded()) @@ -1035,7 +1045,7 @@ void CModelInfoSA::StaticFlushPendingRestreamIPL() for (it = removedModels.begin(); it != removedModels.end(); it++) { pGame->GetStreaming()->RemoveModel(*it); - pGame->GetStreaming()->GetStreamingInfo(*it)->loadState = 0; + pGame->GetStreaming()->GetStreamingInfo(*it)->loadState = eModelLoadState::LOADSTATE_NOT_LOADED; } } diff --git a/Client/game_sa/CModelInfoSA.h b/Client/game_sa/CModelInfoSA.h index 329d2e3e50..b261bcc04a 100644 --- a/Client/game_sa/CModelInfoSA.h +++ b/Client/game_sa/CModelInfoSA.h @@ -362,6 +362,7 @@ class CModelInfoSA : public CModelInfo BYTE GetVehicleType(); void Request(EModelRequestType requestType, const char* szTag); void Remove(); + bool UnloadUnused(); bool IsLoaded(); bool DoIsLoaded(); unsigned short GetFlags(); diff --git a/Client/mods/deathmatch/logic/CClientModel.cpp b/Client/mods/deathmatch/logic/CClientModel.cpp index 795bc08579..2a9eeb0c8d 100644 --- a/Client/mods/deathmatch/logic/CClientModel.cpp +++ b/Client/mods/deathmatch/logic/CClientModel.cpp @@ -84,6 +84,9 @@ bool CClientModel::Deallocate() if (!m_bAllocatedByUs) return false; + if (m_pParentResource) + m_pParentResource->GetResourceModelStreamer()->FullyReleaseModel(m_iModelID); + SetParentResource(nullptr); CModelInfo* pModelInfo = g_pGame->GetModelInfo(m_iModelID, true); diff --git a/Client/mods/deathmatch/logic/CResource.cpp b/Client/mods/deathmatch/logic/CResource.cpp index c1b5fdf9e7..dcf119ce46 100644 --- a/Client/mods/deathmatch/logic/CResource.cpp +++ b/Client/mods/deathmatch/logic/CResource.cpp @@ -94,6 +94,9 @@ CResource::CResource(unsigned short usNetID, const char* szResourceName, CClient CResource::~CResource() { + // Remove refrences from requested models + m_modelStreamer.ReleaseAll(); + // Deallocate all models that this resource allocated earlier g_pClientGame->GetManager()->GetModelManager()->DeallocateModelsAllocatedByResource(this); diff --git a/Client/mods/deathmatch/logic/CResource.h b/Client/mods/deathmatch/logic/CResource.h index 99df87fc3c..8100d3fc79 100644 --- a/Client/mods/deathmatch/logic/CResource.h +++ b/Client/mods/deathmatch/logic/CResource.h @@ -15,6 +15,7 @@ #include "CClientEntity.h" #include "CResourceConfigItem.h" #include "CResourceFile.h" +#include "CResourceModelStreamer.h" #include "CElementGroup.h" #include @@ -79,6 +80,8 @@ class CResource CClientEntity* GetResourceIFPRoot() { return m_pResourceIFPRoot; }; CClientEntity* GetResourceIMGRoot() { return m_pResourceIMGRoot; }; + CResourceModelStreamer* GetResourceModelStreamer() { return &m_modelStreamer; }; + // This is to delete all the elements created in this resource that are created locally in this client void DeleteClientChildren(); @@ -145,4 +148,6 @@ class CResource CFastHashSet m_exportedFunctions; CElementGroup* m_pDefaultElementGroup; // stores elements created by scripts in this resource std::list m_NoClientCacheScriptList; + + CResourceModelStreamer m_modelStreamer{}; }; diff --git a/Client/mods/deathmatch/logic/CResourceModelStreamer.cpp b/Client/mods/deathmatch/logic/CResourceModelStreamer.cpp new file mode 100644 index 0000000000..9c58219d8b --- /dev/null +++ b/Client/mods/deathmatch/logic/CResourceModelStreamer.cpp @@ -0,0 +1,122 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/CResourceModelStreamer.cpp + * PURPOSE: Resource model manager + * + * Multi Theft Auto is available from https://www.multitheftauto.com/ + * + *****************************************************************************/ + +#include "StdInc.h" + +#include "CResourceModelStreamer.h" +#include "CClientGame.h" +#include + +bool CResourceModelStreamer::RequestModel(std::uint16_t modelId, bool addRef, bool blocking) +{ + CModelInfo* model = g_pGame->GetModelInfo(modelId); + + if (!model) + return false; + + if (addRef) + { + std::uint16_t refsCount = ++m_requestedModels[modelId]; + if (refsCount == 1) + { + model->ModelAddRef(blocking ? EModelRequestType::BLOCKING : EModelRequestType::NON_BLOCKING, "CResourceModelStreamer::RequestModel With reference"); + return true; + } + return false; + } + else + { + if (model->IsLoaded()) + { + return false; + } + else + { + model->Request(blocking ? EModelRequestType::BLOCKING : EModelRequestType::NON_BLOCKING, "CResourceModelStreamer::RequestModel With out reference"); + return true; + } + } +} + +// Return true if model was unloaded +bool CResourceModelStreamer::ReleaseModel(std::uint16_t modelId, bool removeRef) +{ + if (removeRef) + { + auto refs = m_requestedModels.find(modelId); + if (refs == m_requestedModels.end()) + return false; + + std::uint16_t& refsCount = (*refs).second; + + if (refsCount == 0) + return false; + + refsCount--; + + if (refsCount != 0) + return false; + + CModelInfo* model = g_pGame->GetModelInfo(modelId); + + if (!model) + return false; + + // Hack + // This check will update models pending references + model->IsLoaded(); + + // This call can unload the model + model->RemoveRef(); + + return !model->IsLoaded(); + } + else + { + CModelInfo* model = g_pGame->GetModelInfo(modelId); + + if (!model) + return false; + + return model->UnloadUnused(); + } +} + +void CResourceModelStreamer::ReleaseAll() +{ + for (const auto &modelRefs : m_requestedModels) + { + if (modelRefs.second > 0) + { + CModelInfo* model = g_pGame->GetModelInfo(modelRefs.first); + model->RemoveRef(); + } + } + + m_requestedModels.clear(); +} + +void CResourceModelStreamer::FullyReleaseModel(std::uint16_t modelId) +{ + std::uint16_t &refsCount = m_requestedModels[modelId]; + + if (refsCount > 0) + { + refsCount = 0; + + CModelInfo* model = g_pGame->GetModelInfo(modelId); + + if (!model) + return; + + model->RemoveRef(); + } +} diff --git a/Client/mods/deathmatch/logic/CResourceModelStreamer.h b/Client/mods/deathmatch/logic/CResourceModelStreamer.h new file mode 100644 index 0000000000..fa72720b37 --- /dev/null +++ b/Client/mods/deathmatch/logic/CResourceModelStreamer.h @@ -0,0 +1,30 @@ +/***************************************************************************** + * + * PROJECT: Multi Theft Auto + * LICENSE: See LICENSE in the top level directory + * FILE: mods/deathmatch/logic/CResourceModelStreamer.h + * PURPOSE: Resource model manager + * + * Multi Theft Auto is available from https://www.multitheftauto.com/ + * + *****************************************************************************/ + +#pragma once + +#include + +class CResourceModelStreamer +{ +public: + CResourceModelStreamer() = default; + ~CResourceModelStreamer() = default; + + bool RequestModel(std::uint16_t modelId, bool addRef = false, bool blocking = false); + bool ReleaseModel(std::uint16_t modelId, bool removeRef = false); + + void ReleaseAll(); + void FullyReleaseModel(std::uint16_t modelId); + +private: + std::unordered_map m_requestedModels; +}; diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 7090203704..8d2d3a891d 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -896,6 +896,14 @@ ADD_ENUM(WEATHER_SANDSTORM, "Sandstorm") ADD_ENUM(WEATHER_RAINBOW, "Rainbow") IMPLEMENT_ENUM_END("world-property") +IMPLEMENT_ENUM_CLASS_BEGIN(eModelLoadState) +ADD_ENUM(eModelLoadState::LOADSTATE_NOT_LOADED, "unloaded") +ADD_ENUM(eModelLoadState::LOADSTATE_LOADED, "loaded") +ADD_ENUM(eModelLoadState::LOADSTATE_REQUESTED, "requested") +ADD_ENUM(eModelLoadState::LOADSTATE_READING, "reading") +ADD_ENUM(eModelLoadState::LOADSTATE_FINISHING, "finishing") +IMPLEMENT_ENUM_CLASS_END("model-load-state") + // // CResource from userdata // diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h index 9b93980d85..1b75369d02 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h @@ -13,6 +13,7 @@ #include #include #include +#include #include enum eLuaType @@ -85,6 +86,7 @@ DECLARE_ENUM_CLASS(eRenderStage); DECLARE_ENUM_CLASS(eFxParticleSystems); DECLARE_ENUM(ePools); DECLARE_ENUM(eWorldProperty); +DECLARE_ENUM_CLASS(eModelLoadState); class CRemoteCall; diff --git a/Client/mods/deathmatch/logic/lua/CLuaMain.h b/Client/mods/deathmatch/logic/lua/CLuaMain.h index abe2c96cf1..3839e5995e 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaMain.h +++ b/Client/mods/deathmatch/logic/lua/CLuaMain.h @@ -59,7 +59,7 @@ class CLuaMain //: public CClient void ResetInstructionCount(); - class CResource* GetResource() { return m_pResource; } + class CResource* GetResource() const { return m_pResource; } CXMLFile* CreateXML(const char* szFilename, bool bUseIDs = true, bool bReadOnly = false); CXMLNode* ParseString(const char* strXmlContent); diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index f0ebabb419..530b6e58a3 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -14,6 +14,7 @@ #include #include #include +#include "CLuaEngineDefs.h" //! Set the CModelCacheManager limits //! By passing `nil`/no value the original values are restored @@ -135,6 +136,9 @@ void CLuaEngineDefs::LoadFunctions() {"engineStreamingSetBufferSize", ArgumentParser}, {"engineStreamingGetBufferSize", ArgumentParser}, {"engineStreamingRestoreBufferSize", ArgumentParser}, + {"engineStreamingRequestModel", ArgumentParser}, + {"engineStreamingReleaseModel", ArgumentParser}, + {"engineStreamingGetModelLoadState", ArgumentParser}, {"engineRequestTXD", ArgumentParser}, {"engineFreeTXD", ArgumentParser}, {"engineGetPoolCapacity", ArgumentParser}, @@ -2502,3 +2506,44 @@ bool CLuaEngineDefs::EngineSetPoolCapacity(lua_State* luaVM, ePools pool, size_t } return true; } + +bool CLuaEngineDefs::EngineStreamingRequestModel(lua_State* const luaVM, std::uint16_t modelId, std::optional addReference, std::optional blocking) +{ + // Grab the lua main and the resource belonging to this script + CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine(luaVM); + + CModelInfo* pModelInfo = g_pGame->GetModelInfo(modelId); + + if (modelId >= g_pGame->GetBaseIDforCOL() || !pModelInfo) + throw std::invalid_argument("Expected a valid model ID at argument 1"); + + // Get the resource we belong to + CResource* pResource = pLuaMain->GetResource(); + + return pResource->GetResourceModelStreamer()->RequestModel(modelId, addReference.value_or(false), blocking.value_or(false)); +} + +bool CLuaEngineDefs::EngineStreamingReleaseModel(lua_State* const luaVM, std::uint16_t modelId, std::optional removeReference) +{ + // Grab the lua main and the resource belonging to this script + CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine(luaVM); + + CModelInfo* pModelInfo = g_pGame->GetModelInfo(modelId); + + if (modelId >= g_pGame->GetBaseIDforCOL() || !pModelInfo) + throw std::invalid_argument("Expected a valid model ID at argument 1"); + + // Get the resource we belong to + CResource* pResource = pLuaMain->GetResource(); + + return pResource->GetResourceModelStreamer()->ReleaseModel(modelId, removeReference.value_or(false)); +} + +eModelLoadState CLuaEngineDefs::EngineStreamingGetModelLoadState(std::uint16_t modelId) +{ + const auto allCount = g_pGame->GetCountOfAllFileIDs(); + if (modelId >= g_pGame->GetCountOfAllFileIDs()) + throw std::invalid_argument("Expected a valid model ID at argument 1"); + + return g_pGame->GetStreaming()->GetStreamingInfo(modelId)->loadState; +} diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.h index 0226cebc3a..8346f6ef0b 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.h @@ -88,6 +88,10 @@ class CLuaEngineDefs : public CLuaDefs static uint EngineRequestTXD(lua_State* const luaVM, std::string strTxdName); static bool EngineFreeTXD(uint txdID); + static bool EngineStreamingRequestModel(lua_State* const luaVM, std::uint16_t modelId, std::optional addReference, std::optional blocking); + static bool EngineStreamingReleaseModel(lua_State* const luaVM, std::uint16_t modelId, std::optional removeReference); + static eModelLoadState EngineStreamingGetModelLoadState(std::uint16_t modelId); + private: static void AddEngineColClass(lua_State* luaVM); static void AddEngineTxdClass(lua_State* luaVM); diff --git a/Client/sdk/game/CModelInfo.h b/Client/sdk/game/CModelInfo.h index 440f079be6..af9fa1bdf3 100644 --- a/Client/sdk/game/CModelInfo.h +++ b/Client/sdk/game/CModelInfo.h @@ -179,6 +179,7 @@ class CModelInfo virtual void RemoveRef(bool bRemoveExtraGTARef = false) = 0; virtual int GetRefCount() = 0; virtual bool ForceUnload() = 0; + virtual bool UnloadUnused() = 0; virtual void DeallocateModel() = 0; virtual float GetDistanceFromCentreOfMassToBaseOfModel() = 0; diff --git a/Client/sdk/game/CStreaming.h b/Client/sdk/game/CStreaming.h index c8ff17c558..6eb47f13a6 100644 --- a/Client/sdk/game/CStreaming.h +++ b/Client/sdk/game/CStreaming.h @@ -16,6 +16,27 @@ #define INVALID_ARCHIVE_ID 0xFF #define INVALID_STREAM_ID 0xFF +enum class eModelLoadState : std::uint32_t +{ + // Model isn't loaded + LOADSTATE_NOT_LOADED = 0, + + // Model is loaded + LOADSTATE_LOADED = 1, + + // Model in request list, but not yet in loading channel (TODO: Verify this) + LOADSTATE_REQUESTED = 2, + + // Model is being read + LOADSTATE_READING = 3, + + // If the model is a `big` one this state is used to indicate + // that the model's first half has been loaded and is yet to be + // finished by loading the second half. + // When it has been loaded the state is set to `LOADED` + LOADSTATE_FINISHING = 4 +}; + struct CStreamingInfo { uint16_t prevId = (uint16_t)-1; @@ -25,7 +46,7 @@ struct CStreamingInfo uint8_t archiveId = 0u; uint32_t offsetInBlocks = 0u; uint32_t sizeInBlocks = 0u; - uint32_t loadState = 0u; + eModelLoadState loadState = eModelLoadState::LOADSTATE_NOT_LOADED; }; static_assert(sizeof(CStreamingInfo) == 0x14, "Invalid size for CStreamingInfo"); From b8b7ce555e2f0f0dd74425ac7c91786374513bee Mon Sep 17 00:00:00 2001 From: Prox <77501848+Proxy-99@users.noreply.github.com> Date: Wed, 14 Aug 2024 22:04:54 +0300 Subject: [PATCH 10/39] Freeze Time functions (#3567) --- Client/game_sa/CClockSA.cpp | 16 ++++++++++++++ Client/game_sa/CClockSA.h | 7 +++++++ Client/game_sa/CWeatherSA.h | 1 - Client/mods/deathmatch/logic/CClientGame.cpp | 5 +++++ .../logic/luadefs/CLuaWorldDefs.cpp | 21 ++++++++++++++++++- .../deathmatch/logic/luadefs/CLuaWorldDefs.h | 7 ++++++- Client/sdk/game/CClock.h | 4 ++++ 7 files changed, 58 insertions(+), 3 deletions(-) diff --git a/Client/game_sa/CClockSA.cpp b/Client/game_sa/CClockSA.cpp index d8d0f5668a..5ab106609d 100644 --- a/Client/game_sa/CClockSA.cpp +++ b/Client/game_sa/CClockSA.cpp @@ -30,3 +30,19 @@ void CClockSA::Get(BYTE* bHour, BYTE* bMinute) *bMinute = *(BYTE*)VAR_TimeMinutes; *bHour = *(BYTE*)VAR_TimeHours; } + +bool CClockSA::SetTimeFrozen(bool value) noexcept +{ + if (value) + MemSet((void*)0x53BFBD, 0x90, 5); + else + MemCpy((void*)0x53BFBD, "\xE8\x4E\x0F\xFF\xFF", 5); + + m_bTimeCycleFrozen = value; + return true; +} + +bool CClockSA::ResetTimeFrozen() noexcept +{ + return SetTimeFrozen(false); +} diff --git a/Client/game_sa/CClockSA.h b/Client/game_sa/CClockSA.h index fd392e9ecf..4d424ba8c5 100644 --- a/Client/game_sa/CClockSA.h +++ b/Client/game_sa/CClockSA.h @@ -22,4 +22,11 @@ class CClockSA : public CClock public: void Set(BYTE bHour, BYTE bMinute); void Get(BYTE* bHour, BYTE* bMinute); + + bool SetTimeFrozen(bool value) noexcept; + bool IsTimeFrozen() const noexcept { return m_bTimeCycleFrozen; }; + bool ResetTimeFrozen() noexcept; + +private: + bool m_bTimeCycleFrozen; }; diff --git a/Client/game_sa/CWeatherSA.h b/Client/game_sa/CWeatherSA.h index 8e6d970d1d..31898204fa 100644 --- a/Client/game_sa/CWeatherSA.h +++ b/Client/game_sa/CWeatherSA.h @@ -60,5 +60,4 @@ class CWeatherSA : public CWeather static unsigned char* VAR_CWeather__OldWeatherType; static unsigned char* VAR_CWeather__NewWeatherType; static float* VAR_CWeather__Rain; - }; diff --git a/Client/mods/deathmatch/logic/CClientGame.cpp b/Client/mods/deathmatch/logic/CClientGame.cpp index 0bad60ecf2..7b57fe13e1 100644 --- a/Client/mods/deathmatch/logic/CClientGame.cpp +++ b/Client/mods/deathmatch/logic/CClientGame.cpp @@ -33,6 +33,7 @@ #include #include #include +#include "game/CClock.h" #include #include "CServerInfo.h" @@ -5408,6 +5409,7 @@ void CClientGame::ResetMapInfo() // Hud g_pGame->GetHud()->SetComponentVisible(HUD_ALL, true); + // Disable area names as they are on load until camera unfades g_pGame->GetHud()->SetComponentVisible(HUD_AREA_NAME, false); g_pGame->GetHud()->SetComponentVisible(HUD_VITAL_STATS, false); @@ -5548,6 +5550,9 @@ void CClientGame::ResetMapInfo() // Disable the change of any player stats g_pMultiplayer->SetLocalStatsStatic(true); + // Reset Frozen Time + g_pGame->GetClock()->ResetTimeFrozen(); + // Close all garages CGarage* pGarage = NULL; CGarages* pGarages = g_pCore->GetGame()->GetGarages(); diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.cpp index 96dd447921..7f8af634e7 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include "lua/CLuaFunctionParser.h" void CLuaWorldDefs::LoadFunctions() @@ -103,6 +104,7 @@ void CLuaWorldDefs::LoadFunctions() {"removeWorldModel", RemoveWorldBuilding}, {"restoreAllWorldModels", RestoreWorldBuildings}, {"restoreWorldModel", RestoreWorldBuilding}, + {"setTimeFrozen", ArgumentParser}, // World create funcs {"createSWATRope", CreateSWATRope}, @@ -125,13 +127,15 @@ void CLuaWorldDefs::LoadFunctions() {"resetMoonSize", ResetMoonSize}, {"resetBlurLevel", ResetBlurLevel}, {"resetWorldProperty", ArgumentParserWarn}, + {"resetTimeFrozen", ArgumentParser}, // World check funcs {"areTrafficLightsLocked", AreTrafficLightsLocked}, {"isPedTargetingMarkerEnabled", IsPedTargetingMarkerEnabled}, {"isLineOfSightClear", IsLineOfSightClear}, {"isWorldSpecialPropertyEnabled", ArgumentParserWarn}, - {"isGarageOpen", IsGarageOpen}}; + {"isGarageOpen", IsGarageOpen}, + {"isTimeFrozen", ArgumentParser}}; // Add functions for (const auto& [name, func] : functions) @@ -2234,3 +2238,18 @@ bool CLuaWorldDefs::ResetWorldProperty(eWorldProperty property) } return false; } + +bool CLuaWorldDefs::SetTimeFrozen(bool value) noexcept +{ + return g_pGame->GetClock()->SetTimeFrozen(value); +} + +bool CLuaWorldDefs::IsTimeFrozen() noexcept +{ + return g_pGame->GetClock()->IsTimeFrozen(); +} + +bool CLuaWorldDefs::ResetTimeFrozen() noexcept +{ + return g_pGame->GetClock()->ResetTimeFrozen(); +} diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.h index fc1d6bb3a1..6f79c9081a 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.h @@ -130,4 +130,9 @@ class CLuaWorldDefs : public CLuaDefs static std::variant> GetWorldProperty(eWorldProperty property); static bool SetWorldProperty(eWorldProperty property, float arg1, std::optional arg2, std::optional arg3); static bool ResetWorldProperty(eWorldProperty property); -}; + + static bool SetTimeFrozen(bool value) noexcept; + static bool IsTimeFrozen() noexcept; + static bool ResetTimeFrozen() noexcept; + }; + diff --git a/Client/sdk/game/CClock.h b/Client/sdk/game/CClock.h index 2348564c8a..6f795f5919 100644 --- a/Client/sdk/game/CClock.h +++ b/Client/sdk/game/CClock.h @@ -16,4 +16,8 @@ class CClock public: virtual void Set(BYTE bHour, BYTE bMinute) = 0; virtual void Get(BYTE* bHour, BYTE* bMinute) = 0; + + virtual bool SetTimeFrozen(bool value) noexcept = 0; + virtual bool IsTimeFrozen() const noexcept = 0; + virtual bool ResetTimeFrozen() noexcept = 0; }; From b89e9f53391366dc0670d85abe12c80d253538f2 Mon Sep 17 00:00:00 2001 From: Pot Bot <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 14 Aug 2024 19:10:26 +0000 Subject: [PATCH 11/39] Update client en_US pot [ci skip] --- .../MTA/locale/en_US/client.pot | 148 +++++++++--------- 1 file changed, 74 insertions(+), 74 deletions(-) diff --git a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot index 7ce5401304..986344b426 100644 --- a/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot +++ b/Shared/data/MTA San Andreas/MTA/locale/en_US/client.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: MTA San Andreas 1.x\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-08-12 11:54+0000\n" +"POT-Creation-Date: 2024-08-14 19:10+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -398,116 +398,116 @@ msgstr[1] "" msgid "Disconnected" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:369 +#: Client/mods/deathmatch/logic/CClientGame.cpp:370 msgid "Flying a UFO around" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:369 +#: Client/mods/deathmatch/logic/CClientGame.cpp:370 msgid "Cruising around" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:369 +#: Client/mods/deathmatch/logic/CClientGame.cpp:370 msgid "Riding the waves of" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:370 +#: Client/mods/deathmatch/logic/CClientGame.cpp:371 msgid "Riding the train in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:370 +#: Client/mods/deathmatch/logic/CClientGame.cpp:371 msgid "Flying around" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:371 +#: Client/mods/deathmatch/logic/CClientGame.cpp:372 msgid "Riding around" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:371 +#: Client/mods/deathmatch/logic/CClientGame.cpp:372 msgid "Monster truckin' around" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:371 +#: Client/mods/deathmatch/logic/CClientGame.cpp:372 msgid "Quaddin' around" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:372 +#: Client/mods/deathmatch/logic/CClientGame.cpp:373 msgid "Bunny hopping around" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:372 +#: Client/mods/deathmatch/logic/CClientGame.cpp:373 msgid "Doing weird stuff in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:376 +#: Client/mods/deathmatch/logic/CClientGame.cpp:377 msgid "Climbing around in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:377 #: Client/mods/deathmatch/logic/CClientGame.cpp:378 +#: Client/mods/deathmatch/logic/CClientGame.cpp:379 msgid "Doing a drive-by in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:379 +#: Client/mods/deathmatch/logic/CClientGame.cpp:380 msgid "Blub blub..." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:380 +#: Client/mods/deathmatch/logic/CClientGame.cpp:381 msgid "Breathing water" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:381 +#: Client/mods/deathmatch/logic/CClientGame.cpp:382 msgid "Drowning in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:382 +#: Client/mods/deathmatch/logic/CClientGame.cpp:383 msgid "Ducking for cover in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:383 +#: Client/mods/deathmatch/logic/CClientGame.cpp:384 msgid "Fighting in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:384 +#: Client/mods/deathmatch/logic/CClientGame.cpp:385 msgid "Throwing fists in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:385 +#: Client/mods/deathmatch/logic/CClientGame.cpp:386 msgid "Blastin' fools in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:386 +#: Client/mods/deathmatch/logic/CClientGame.cpp:387 msgid "Shooting up" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:387 +#: Client/mods/deathmatch/logic/CClientGame.cpp:388 msgid "Jetpacking in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:388 +#: Client/mods/deathmatch/logic/CClientGame.cpp:389 msgid "Literally on fire in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:389 +#: Client/mods/deathmatch/logic/CClientGame.cpp:390 msgid "Burning up in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:390 +#: Client/mods/deathmatch/logic/CClientGame.cpp:391 msgid "Swimming in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:391 +#: Client/mods/deathmatch/logic/CClientGame.cpp:392 msgid "Floating around in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:392 +#: Client/mods/deathmatch/logic/CClientGame.cpp:393 msgid "Being chased by a shark" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:393 +#: Client/mods/deathmatch/logic/CClientGame.cpp:394 msgid "Choking to death in" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:527 +#: Client/mods/deathmatch/logic/CClientGame.cpp:528 #: Client/core/CSettings.cpp:3479 Client/core/CMainMenu.cpp:304 #: Client/core/CCore.cpp:674 msgid "Main menu" @@ -517,17 +517,17 @@ msgstr "" #. Display an error, reset the error status and exit #. Show a message that the connection timed out and abort #. Show failed message and abort the attempt -#: Client/mods/deathmatch/logic/CClientGame.cpp:635 -#: Client/mods/deathmatch/logic/CClientGame.cpp:709 -#: Client/mods/deathmatch/logic/CClientGame.cpp:733 -#: Client/mods/deathmatch/logic/CClientGame.cpp:755 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1168 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1248 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1258 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1327 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1364 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1413 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1425 +#: Client/mods/deathmatch/logic/CClientGame.cpp:636 +#: Client/mods/deathmatch/logic/CClientGame.cpp:710 +#: Client/mods/deathmatch/logic/CClientGame.cpp:734 +#: Client/mods/deathmatch/logic/CClientGame.cpp:756 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1169 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1249 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1259 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1328 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1365 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1414 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1426 #: Client/mods/deathmatch/logic/CResourceFileDownloadManager.cpp:145 #: Client/core/CConnectManager.cpp:80 Client/core/CConnectManager.cpp:111 #: Client/core/CConnectManager.cpp:127 Client/core/CConnectManager.cpp:263 @@ -549,146 +549,146 @@ msgstr "" msgid "Error" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:635 -#: Client/mods/deathmatch/logic/CClientGame.cpp:733 +#: Client/mods/deathmatch/logic/CClientGame.cpp:636 +#: Client/mods/deathmatch/logic/CClientGame.cpp:734 #: Client/core/ServerBrowser/CServerBrowser.cpp:1300 #: Client/core/ServerBrowser/CServerBrowser.cpp:1357 msgid "Invalid nickname! Please go to Settings and set a new one!" msgstr "" #. Display the status box -#: Client/mods/deathmatch/logic/CClientGame.cpp:651 +#: Client/mods/deathmatch/logic/CClientGame.cpp:652 #: Client/core/CConnectManager.cpp:148 msgid "CONNECTING" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:651 +#: Client/mods/deathmatch/logic/CClientGame.cpp:652 msgid "Entering the game ..." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:709 +#: Client/mods/deathmatch/logic/CClientGame.cpp:710 msgid "" "Not connected; please use Quick Connect or the 'connect' command to connect " "to a server." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:755 +#: Client/mods/deathmatch/logic/CClientGame.cpp:756 msgid "Could not start the local server. See console for details." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:765 -#: Client/mods/deathmatch/logic/CClientGame.cpp:1237 +#: Client/mods/deathmatch/logic/CClientGame.cpp:766 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1238 msgid "Local Server" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:765 +#: Client/mods/deathmatch/logic/CClientGame.cpp:766 msgid "Starting local server ..." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1013 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1014 msgid "Area 51" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1022 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1023 msgid "Walking around " msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1083 -#: Client/mods/deathmatch/logic/CResource.cpp:372 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1084 +#: Client/mods/deathmatch/logic/CResource.cpp:375 #: Client/core/CSettings.cpp:3483 Client/core/CCore.cpp:674 msgid "In-game" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1168 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1169 #, c-format msgid "You were kicked from the game ( %s )" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1237 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1238 msgid "Connecting to local server..." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1248 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1249 msgid "Error connecting to server." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1258 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1259 msgid "Connecting to local server timed out. See console for details." msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1327 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1328 #: Client/core/CConnectManager.cpp:263 msgid "Connection timed out" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1364 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1365 msgid "Connection with the server was lost" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1375 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1376 #: Client/core/CConnectManager.cpp:277 Client/core/CConnectManager.cpp:281 msgid "Disconnected: unknown protocol error" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1379 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1380 #: Client/core/CConnectManager.cpp:285 msgid "Disconnected: disconnected remotely" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1383 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1384 #: Client/core/CConnectManager.cpp:289 msgid "Disconnected: connection lost remotely" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1387 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1388 #: Client/core/CConnectManager.cpp:293 msgid "Disconnected: you are banned from this server" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1391 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1392 msgid "Disconnected: the server is currently full" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1395 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1396 #: Client/core/CConnectManager.cpp:300 msgid "Disconnected: disconnected from the server" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1399 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1400 #: Client/core/CConnectManager.cpp:304 msgid "Disconnected: connection to the server was lost" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1403 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1404 msgid "Disconnected: invalid password specified" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1407 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1408 #: Client/core/CConnectManager.cpp:311 msgid "Disconnected: connection was refused" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:1425 +#: Client/mods/deathmatch/logic/CClientGame.cpp:1426 msgid "MTA Client verification failed!" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5708 +#: Client/mods/deathmatch/logic/CClientGame.cpp:5713 msgid "In a ditch" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5708 +#: Client/mods/deathmatch/logic/CClientGame.cpp:5713 msgid "En-route to hospital" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5708 +#: Client/mods/deathmatch/logic/CClientGame.cpp:5713 msgid "Meeting their maker" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5709 +#: Client/mods/deathmatch/logic/CClientGame.cpp:5714 msgid "Regretting their decisions" msgstr "" -#: Client/mods/deathmatch/logic/CClientGame.cpp:5709 +#: Client/mods/deathmatch/logic/CClientGame.cpp:5714 msgid "Wasted" msgstr "" From 5ac6c8adad9c9ffd4a1c299c7cd548713e485bd6 Mon Sep 17 00:00:00 2001 From: G-Moris Date: Wed, 14 Aug 2024 22:20:01 +0300 Subject: [PATCH 12/39] Optimization Handling (part 2) (#3580) This part 2 is follow up to PR #3482 (part 1) --- Client/game_sa/CHandlingEntrySA.cpp | 84 ++++++------- Client/game_sa/CHandlingEntrySA.h | 153 +++++++++++------------ Client/game_sa/CHandlingManagerSA.cpp | 134 +++++++++----------- Client/game_sa/CHandlingManagerSA.h | 33 ++--- Client/game_sa/CVehicleSA.cpp | 13 +- Client/multiplayer_sa/CMultiplayerSA.cpp | 35 ++---- Client/multiplayer_sa/CMultiplayerSA.h | 4 +- Client/sdk/game/CHandlingEntry.h | 29 ++--- Client/sdk/game/CHandlingManager.h | 14 +-- Client/sdk/multiplayer/CMultiplayer.h | 3 +- 10 files changed, 217 insertions(+), 285 deletions(-) diff --git a/Client/game_sa/CHandlingEntrySA.cpp b/Client/game_sa/CHandlingEntrySA.cpp index 40e8b86423..1ebb1471e3 100644 --- a/Client/game_sa/CHandlingEntrySA.cpp +++ b/Client/game_sa/CHandlingEntrySA.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: game_sa/CHandlingEntrySA.cpp + * FILE: Client/game_sa/CHandlingEntrySA.cpp * PURPOSE: Vehicle handling data entry * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ @@ -22,91 +22,89 @@ CHandlingEntrySA::CHandlingEntrySA() m_pHandlingSA = new tHandlingDataSA; memset(m_pHandlingSA, 0, sizeof(tHandlingDataSA)); m_bDeleteInterface = true; - - // We have no original data - m_pOriginalData = NULL; - m_bChanged = true; } CHandlingEntrySA::CHandlingEntrySA(tHandlingDataSA* pOriginal) { // Store gta's pointer - m_pHandlingSA = NULL; - m_pOriginalData = NULL; + m_pHandlingSA = nullptr; m_bDeleteInterface = false; memcpy(&m_Handling, pOriginal, sizeof(tHandlingDataSA)); - m_bChanged = true; } CHandlingEntrySA::~CHandlingEntrySA() { - if (m_bChanged) - { - pGame->GetHandlingManager()->RemoveChangedVehicle(); - } if (m_bDeleteInterface) { - delete m_pHandlingSA; + SAFE_DELETE(m_pHandlingSA); } } // Apply the handlingdata from another data -void CHandlingEntrySA::Assign(const CHandlingEntry* pData) +void CHandlingEntrySA::Assign(const CHandlingEntry* pEntry) { + if (!pEntry) + return; + // Copy the data - const CHandlingEntrySA* pEntrySA = static_cast(pData); + const CHandlingEntrySA* pEntrySA = static_cast(pEntry); m_Handling = pEntrySA->m_Handling; - if (m_bChanged) - { - pGame->GetHandlingManager()->RemoveChangedVehicle(); - } - pGame->GetHandlingManager()->CheckSuspensionChanges(this); } -void CHandlingEntrySA::Recalculate(unsigned short usModel) +void CHandlingEntrySA::Recalculate() { // Real GTA class? - if (m_pHandlingSA) - { - // Copy our stored field to GTA's - memcpy(m_pHandlingSA, &m_Handling, sizeof(m_Handling)); - ((void(_stdcall*)(tHandlingDataSA*))FUNC_HandlingDataMgr_ConvertDataToGameUnits)(m_pHandlingSA); - } + if (!m_pHandlingSA) + return; + + // Copy our stored field to GTA's + memcpy(m_pHandlingSA, &m_Handling, sizeof(m_Handling)); + ((void(_stdcall*)(tHandlingDataSA*))FUNC_HandlingDataMgr_ConvertDataToGameUnits)(m_pHandlingSA); } -// Moved to cpp to check suspension changes against default values to make sure the handling hasn't changed. -void CHandlingEntrySA::SetSuspensionForceLevel(float fForce) +void CHandlingEntrySA::SetSuspensionForceLevel(float fForce) noexcept { + CheckSuspensionChanges(); m_Handling.fSuspensionForceLevel = fForce; - pGame->GetHandlingManager()->CheckSuspensionChanges(this); } -void CHandlingEntrySA::SetSuspensionDamping(float fDamping) + +void CHandlingEntrySA::SetSuspensionDamping(float fDamping) noexcept { + CheckSuspensionChanges(); m_Handling.fSuspensionDamping = fDamping; - pGame->GetHandlingManager()->CheckSuspensionChanges(this); } -void CHandlingEntrySA::SetSuspensionHighSpeedDamping(float fDamping) + +void CHandlingEntrySA::SetSuspensionHighSpeedDamping(float fDamping) noexcept { + CheckSuspensionChanges(); m_Handling.fSuspensionHighSpdDamping = fDamping; - pGame->GetHandlingManager()->CheckSuspensionChanges(this); } -void CHandlingEntrySA::SetSuspensionUpperLimit(float fUpperLimit) + +void CHandlingEntrySA::SetSuspensionUpperLimit(float fUpperLimit) noexcept { + CheckSuspensionChanges(); m_Handling.fSuspensionUpperLimit = fUpperLimit; - pGame->GetHandlingManager()->CheckSuspensionChanges(this); } -void CHandlingEntrySA::SetSuspensionLowerLimit(float fLowerLimit) + +void CHandlingEntrySA::SetSuspensionLowerLimit(float fLowerLimit) noexcept { + CheckSuspensionChanges(); m_Handling.fSuspensionLowerLimit = fLowerLimit; - pGame->GetHandlingManager()->CheckSuspensionChanges(this); } -void CHandlingEntrySA::SetSuspensionFrontRearBias(float fBias) + +void CHandlingEntrySA::SetSuspensionFrontRearBias(float fBias) noexcept { + CheckSuspensionChanges(); m_Handling.fSuspensionFrontRearBias = fBias; - pGame->GetHandlingManager()->CheckSuspensionChanges(this); } -void CHandlingEntrySA::SetSuspensionAntiDiveMultiplier(float fAntidive) + +void CHandlingEntrySA::SetSuspensionAntiDiveMultiplier(float fAntidive) noexcept { + CheckSuspensionChanges(); m_Handling.fSuspensionAntiDiveMultiplier = fAntidive; +} + +void CHandlingEntrySA::CheckSuspensionChanges() noexcept +{ pGame->GetHandlingManager()->CheckSuspensionChanges(this); } diff --git a/Client/game_sa/CHandlingEntrySA.h b/Client/game_sa/CHandlingEntrySA.h index ede72766f8..d1836f461e 100644 --- a/Client/game_sa/CHandlingEntrySA.h +++ b/Client/game_sa/CHandlingEntrySA.h @@ -1,17 +1,18 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: game_sa/CHandlingEntrySA.h + * FILE: Client/game_sa/CHandlingEntrySA.h * PURPOSE: Header file for vehicle handling data entry class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ #pragma once #include + #define FUNC_HandlingDataMgr_ConvertDataToGameUnits 0x6F5080 // http://www.gtamodding.com/index.php?title=Handling.cfg#GTA_San_Andreas @@ -95,111 +96,107 @@ class CHandlingEntrySA : public CHandlingEntry virtual ~CHandlingEntrySA(); // Use this to copy data from an another handling class to this - void Assign(const CHandlingEntry* pData); + void Assign(const CHandlingEntry* pEntry); // Get functions - float GetMass() const { return m_Handling.fMass; }; - float GetTurnMass() const { return m_Handling.fTurnMass; }; - float GetDragCoeff() const { return m_Handling.fDragCoeff; }; - const CVector& GetCenterOfMass() const { return m_Handling.vecCenterOfMass; }; + float GetMass() const { return m_Handling.fMass; } + float GetTurnMass() const { return m_Handling.fTurnMass; } + float GetDragCoeff() const { return m_Handling.fDragCoeff; } + const CVector& GetCenterOfMass() const { return m_Handling.vecCenterOfMass; } - unsigned int GetPercentSubmerged() const { return m_Handling.uiPercentSubmerged; }; - float GetTractionMultiplier() const { return m_Handling.fTractionMultiplier; }; + unsigned int GetPercentSubmerged() const { return m_Handling.uiPercentSubmerged; } + float GetTractionMultiplier() const { return m_Handling.fTractionMultiplier; } - eDriveType GetCarDriveType() const { return static_cast(m_Handling.Transmission.ucDriveType); }; - eEngineType GetCarEngineType() const { return static_cast(m_Handling.Transmission.ucEngineType); }; - unsigned char GetNumberOfGears() const { return m_Handling.Transmission.ucNumberOfGears; }; + eDriveType GetCarDriveType() const { return static_cast(m_Handling.Transmission.ucDriveType); } + eEngineType GetCarEngineType() const { return static_cast(m_Handling.Transmission.ucEngineType); } + unsigned char GetNumberOfGears() const { return m_Handling.Transmission.ucNumberOfGears; } - float GetEngineAcceleration() const { return m_Handling.Transmission.fEngineAcceleration; }; - float GetEngineInertia() const { return m_Handling.Transmission.fEngineInertia; }; - float GetMaxVelocity() const { return m_Handling.Transmission.fMaxVelocity; }; + float GetEngineAcceleration() const { return m_Handling.Transmission.fEngineAcceleration; } + float GetEngineInertia() const { return m_Handling.Transmission.fEngineInertia; } + float GetMaxVelocity() const { return m_Handling.Transmission.fMaxVelocity; } - float GetBrakeDeceleration() const { return m_Handling.fBrakeDeceleration; }; - float GetBrakeBias() const { return m_Handling.fBrakeBias; }; - bool GetABS() const { return m_Handling.bABS; }; + float GetBrakeDeceleration() const { return m_Handling.fBrakeDeceleration; } + float GetBrakeBias() const { return m_Handling.fBrakeBias; } + bool GetABS() const { return m_Handling.bABS; } - float GetSteeringLock() const { return m_Handling.fSteeringLock; }; - float GetTractionLoss() const { return m_Handling.fTractionLoss; }; - float GetTractionBias() const { return m_Handling.fTractionBias; }; + float GetSteeringLock() const { return m_Handling.fSteeringLock; } + float GetTractionLoss() const { return m_Handling.fTractionLoss; } + float GetTractionBias() const { return m_Handling.fTractionBias; } - float GetSuspensionForceLevel() const { return m_Handling.fSuspensionForceLevel; }; - float GetSuspensionDamping() const { return m_Handling.fSuspensionDamping; }; - float GetSuspensionHighSpeedDamping() const { return m_Handling.fSuspensionHighSpdDamping; }; - float GetSuspensionUpperLimit() const { return m_Handling.fSuspensionUpperLimit; }; - float GetSuspensionLowerLimit() const { return m_Handling.fSuspensionLowerLimit; }; - float GetSuspensionFrontRearBias() const { return m_Handling.fSuspensionFrontRearBias; }; - float GetSuspensionAntiDiveMultiplier() const { return m_Handling.fSuspensionAntiDiveMultiplier; }; + float GetSuspensionForceLevel() const { return m_Handling.fSuspensionForceLevel; } + float GetSuspensionDamping() const { return m_Handling.fSuspensionDamping; } + float GetSuspensionHighSpeedDamping() const { return m_Handling.fSuspensionHighSpdDamping; } + float GetSuspensionUpperLimit() const { return m_Handling.fSuspensionUpperLimit; } + float GetSuspensionLowerLimit() const { return m_Handling.fSuspensionLowerLimit; } + float GetSuspensionFrontRearBias() const { return m_Handling.fSuspensionFrontRearBias; } + float GetSuspensionAntiDiveMultiplier() const { return m_Handling.fSuspensionAntiDiveMultiplier; } - float GetCollisionDamageMultiplier() const { return m_Handling.fCollisionDamageMultiplier; }; + float GetCollisionDamageMultiplier() const { return m_Handling.fCollisionDamageMultiplier; } - unsigned int GetHandlingFlags() const { return m_Handling.uiHandlingFlags; }; - unsigned int GetModelFlags() const { return m_Handling.uiModelFlags; }; - float GetSeatOffsetDistance() const { return m_Handling.fSeatOffsetDistance; }; - unsigned int GetMonetary() const { return m_Handling.uiMonetary; }; + unsigned int GetHandlingFlags() const { return m_Handling.uiHandlingFlags; } + unsigned int GetModelFlags() const { return m_Handling.uiModelFlags; } + float GetSeatOffsetDistance() const { return m_Handling.fSeatOffsetDistance; } + unsigned int GetMonetary() const { return m_Handling.uiMonetary; } - eLightType GetHeadLight() const { return static_cast(m_Handling.ucHeadLight); }; - eLightType GetTailLight() const { return static_cast(m_Handling.ucTailLight); }; - unsigned char GetAnimGroup() const { return m_Handling.ucAnimGroup; }; + eLightType GetHeadLight() const { return static_cast(m_Handling.ucHeadLight); } + eLightType GetTailLight() const { return static_cast(m_Handling.ucTailLight); } + unsigned char GetAnimGroup() const { return m_Handling.ucAnimGroup; } - eVehicleTypes GetModel() const { return static_cast(m_Handling.iVehicleID); }; - bool HasSuspensionChanged() const { return true; }; + std::uint16_t GetVehicleID() const { return static_cast(m_Handling.iVehicleID); } // Set functions - void SetMass(float fMass) { m_Handling.fMass = fMass; }; - void SetTurnMass(float fTurnMass) { m_Handling.fTurnMass = fTurnMass; }; - void SetDragCoeff(float fDrag) { m_Handling.fDragCoeff = fDrag; }; - void SetCenterOfMass(const CVector& vecCenter) { m_Handling.vecCenterOfMass = vecCenter; }; + void SetMass(float fMass) { m_Handling.fMass = fMass; } + void SetTurnMass(float fTurnMass) { m_Handling.fTurnMass = fTurnMass; } + void SetDragCoeff(float fDrag) { m_Handling.fDragCoeff = fDrag; } + void SetCenterOfMass(const CVector& vecCenter) { m_Handling.vecCenterOfMass = vecCenter; } - void SetPercentSubmerged(unsigned int uiPercent) { m_Handling.uiPercentSubmerged = uiPercent; }; - void SetTractionMultiplier(float fTractionMultiplier) { m_Handling.fTractionMultiplier = fTractionMultiplier; }; + void SetPercentSubmerged(unsigned int uiPercent) { m_Handling.uiPercentSubmerged = uiPercent; } + void SetTractionMultiplier(float fTractionMultiplier) { m_Handling.fTractionMultiplier = fTractionMultiplier; } - void SetCarDriveType(eDriveType Type) { m_Handling.Transmission.ucDriveType = Type; }; - void SetCarEngineType(eEngineType Type) { m_Handling.Transmission.ucEngineType = Type; }; - void SetNumberOfGears(unsigned char ucNumber) { m_Handling.Transmission.ucNumberOfGears = ucNumber; }; + void SetCarDriveType(eDriveType Type) { m_Handling.Transmission.ucDriveType = Type; } + void SetCarEngineType(eEngineType Type) { m_Handling.Transmission.ucEngineType = Type; } + void SetNumberOfGears(unsigned char ucNumber) { m_Handling.Transmission.ucNumberOfGears = ucNumber; } - void SetEngineAcceleration(float fAcceleration) { m_Handling.Transmission.fEngineAcceleration = fAcceleration; }; - void SetEngineInertia(float fInertia) { m_Handling.Transmission.fEngineInertia = fInertia; }; - void SetMaxVelocity(float fVelocity) { m_Handling.Transmission.fMaxVelocity = fVelocity; }; + void SetEngineAcceleration(float fAcceleration) { m_Handling.Transmission.fEngineAcceleration = fAcceleration; } + void SetEngineInertia(float fInertia) { m_Handling.Transmission.fEngineInertia = fInertia; } + void SetMaxVelocity(float fVelocity) { m_Handling.Transmission.fMaxVelocity = fVelocity; } - void SetBrakeDeceleration(float fDeceleration) { m_Handling.fBrakeDeceleration = fDeceleration; }; - void SetBrakeBias(float fBias) { m_Handling.fBrakeBias = fBias; }; - void SetABS(bool bABS) { m_Handling.bABS = bABS; }; + void SetBrakeDeceleration(float fDeceleration) { m_Handling.fBrakeDeceleration = fDeceleration; } + void SetBrakeBias(float fBias) { m_Handling.fBrakeBias = fBias; } + void SetABS(bool bABS) { m_Handling.bABS = bABS; } - void SetSteeringLock(float fSteeringLock) { m_Handling.fSteeringLock = fSteeringLock; }; - void SetTractionLoss(float fTractionLoss) { m_Handling.fTractionLoss = fTractionLoss; }; - void SetTractionBias(float fTractionBias) { m_Handling.fTractionBias = fTractionBias; }; + void SetSteeringLock(float fSteeringLock) { m_Handling.fSteeringLock = fSteeringLock; } + void SetTractionLoss(float fTractionLoss) { m_Handling.fTractionLoss = fTractionLoss; } + void SetTractionBias(float fTractionBias) { m_Handling.fTractionBias = fTractionBias; } - void SetSuspensionForceLevel(float fForce); - void SetSuspensionDamping(float fDamping); - void SetSuspensionHighSpeedDamping(float fDamping); - void SetSuspensionUpperLimit(float fUpperLimit); - void SetSuspensionLowerLimit(float fLowerLimit); - void SetSuspensionFrontRearBias(float fBias); - void SetSuspensionAntiDiveMultiplier(float fAntidive); + void SetSuspensionForceLevel(float fForce) noexcept; + void SetSuspensionDamping(float fDamping) noexcept; + void SetSuspensionHighSpeedDamping(float fDamping) noexcept; + void SetSuspensionUpperLimit(float fUpperLimit) noexcept; + void SetSuspensionLowerLimit(float fLowerLimit) noexcept; + void SetSuspensionFrontRearBias(float fBias) noexcept; + void SetSuspensionAntiDiveMultiplier(float fAntidive) noexcept; - void SetCollisionDamageMultiplier(float fMultiplier) { m_Handling.fCollisionDamageMultiplier = fMultiplier; }; + void SetCollisionDamageMultiplier(float fMultiplier) { m_Handling.fCollisionDamageMultiplier = fMultiplier; } - void SetHandlingFlags(unsigned int uiFlags) { m_Handling.uiHandlingFlags = uiFlags; }; - void SetModelFlags(unsigned int uiFlags) { m_Handling.uiModelFlags = uiFlags; }; - void SetSeatOffsetDistance(float fDistance) { m_Handling.fSeatOffsetDistance = fDistance; }; - void SetMonetary(unsigned int uiMonetary) { m_Handling.uiMonetary = uiMonetary; }; + void SetHandlingFlags(unsigned int uiFlags) { m_Handling.uiHandlingFlags = uiFlags; } + void SetModelFlags(unsigned int uiFlags) { m_Handling.uiModelFlags = uiFlags; } + void SetSeatOffsetDistance(float fDistance) { m_Handling.fSeatOffsetDistance = fDistance; } + void SetMonetary(unsigned int uiMonetary) { m_Handling.uiMonetary = uiMonetary; } - void SetHeadLight(eLightType Style) { m_Handling.ucHeadLight = Style; }; - void SetTailLight(eLightType Style) { m_Handling.ucTailLight = Style; }; - void SetAnimGroup(unsigned char ucGroup) { m_Handling.ucAnimGroup = ucGroup; }; + void SetHeadLight(eLightType Style) { m_Handling.ucHeadLight = Style; } + void SetTailLight(eLightType Style) { m_Handling.ucTailLight = Style; } + void SetAnimGroup(unsigned char ucGroup) { m_Handling.ucAnimGroup = ucGroup; } - void Recalculate(unsigned short usModel); + void CheckSuspensionChanges() noexcept; - tHandlingDataSA* GetInterface() { return m_pHandlingSA; }; + void Recalculate(); - void SetSuspensionChanged(bool bChanged) { m_bChanged = bChanged; }; + tHandlingDataSA* GetInterface() const { return m_pHandlingSA; } private: tHandlingDataSA* m_pHandlingSA; bool m_bDeleteInterface; tHandlingDataSA m_Handling; - - tHandlingDataSA* m_pOriginalData; - bool m_bChanged; }; diff --git a/Client/game_sa/CHandlingManagerSA.cpp b/Client/game_sa/CHandlingManagerSA.cpp index cf37268e96..e7e3a43bd0 100644 --- a/Client/game_sa/CHandlingManagerSA.cpp +++ b/Client/game_sa/CHandlingManagerSA.cpp @@ -10,10 +10,10 @@ *****************************************************************************/ #include "StdInc.h" +#include "CGameSA.h" +#include "CHandlingManagerSA.h" #include #include -#include "CHandlingManagerSA.h" -#include "CGameSA.h" extern CCoreInterface* g_pCore; extern CGameSA* pGame; @@ -24,27 +24,28 @@ extern CGameSA* pGame; #define Var_fTurnMassMultiplier 0x858B8C #define Var_fBasicDragCoeff 0x858C58 -DWORD CHandlingManagerSA::m_dwStore_LoadHandlingCfg = 0; +#define DUMP_HANDLING_DATA 0 + +// Original handling data unaffected by handling.cfg changes +tHandlingDataSA m_OriginalHandlingData[HT_MAX]; +CHandlingEntrySA* m_pOriginalEntries[HT_MAX]; -tHandlingDataSA CHandlingManagerSA::m_OriginalHandlingData[HT_MAX]; -CHandlingEntrySA* CHandlingManagerSA::m_pOriginalEntries[HT_MAX]; +tFlyingHandlingDataSA m_OriginalFlyingHandlingData[24]; +CFlyingHandlingEntrySA* m_pOriginalFlyingEntries[24]; -tFlyingHandlingDataSA CHandlingManagerSA::m_OriginalFlyingHandlingData[24]; -CFlyingHandlingEntrySA* CHandlingManagerSA::m_pOriginalFlyingEntries[24]; +tBoatHandlingDataSA m_OriginalBoatHandlingData[12]; +CBoatHandlingEntrySA* m_pOriginalBoatEntries[12]; -tBoatHandlingDataSA CHandlingManagerSA::m_OriginalBoatHandlingData[12]; -CBoatHandlingEntrySA* CHandlingManagerSA::m_pOriginalBoatEntries[12]; +tBikeHandlingDataSA m_OriginalBikeHandlingData[14]; +CBikeHandlingEntrySA* m_pOriginalBikeEntries[14]; -tBikeHandlingDataSA CHandlingManagerSA::m_OriginalBikeHandlingData[14]; -CBikeHandlingEntrySA* CHandlingManagerSA::m_pOriginalBikeEntries[14]; +std::map m_HandlingNames; // TODO We need install a hook in 0x6F52D0 to make some stuff work corrently // Use the following code to dump handling data unrecalculated on GTA load. // NB: You need to disable the other hook in the constructor of the manager and uncomment the other -DWORD m_dwStore_Calculate = 0; - __declspec(noinline) void DumpHandlingData(tHandlingDataSA* pData) { unsigned int iCounter = pData->iVehicleID; @@ -100,17 +101,17 @@ __declspec(noinline) void DumpHandlingData(tHandlingDataSA* pData) fclose(pFile); } -__declspec(naked) void Hook_Calculate() +static __declspec(naked) void Hook_Calculate() { tHandlingDataSA* pData; - DWORD dwHandlingData; + DWORD dwHandlingData; _asm { mov eax, [esp+4] mov dwHandlingData, eax } - pData = (tHandlingDataSA*)(dwHandlingData); + pData = reinterpret_cast(dwHandlingData); DumpHandlingData(pData); _asm @@ -131,28 +132,30 @@ CHandlingManagerSA::CHandlingManagerSA() InitializeDefaultHandlings(); // Create a handling entry for every original handling data. - for (int i = 0; i < HT_MAX; i++) + for (std::size_t i = 0; i < HT_MAX; i++) { m_pOriginalEntries[i] = new CHandlingEntrySA(&m_OriginalHandlingData[i]); } - for (int i = 0; i < 24; i++) + for (std::size_t i = 0; i < 24; i++) { m_pOriginalFlyingEntries[i] = new CFlyingHandlingEntrySA(&m_OriginalFlyingHandlingData[i]); } - for (int i = 0; i < 12; i++) + for (std::size_t i = 0; i < 12; i++) { m_pOriginalBoatEntries[i] = new CBoatHandlingEntrySA(&m_OriginalBoatHandlingData[i]); } - for (int i = 0; i < 14; i++) + for (std::size_t i = 0; i < 14; i++) { m_pOriginalBikeEntries[i] = new CBikeHandlingEntrySA(&m_OriginalBikeHandlingData[i]); } - // Uncomment this to dump - // HookInstall ( Func_Calculate, (DWORD) Hook_Calculate, 11 ); +#if DUMP_HANDLING_DATA + HookInstall(Func_Calculate, (DWORD)Hook_Calculate, 11); +#endif + m_HandlingNames["mass"] = HANDLING_MASS; // works (mass > 0) m_HandlingNames["turnMass"] = HANDLING_TURNMASS; // works m_HandlingNames["dragCoeff"] = HANDLING_DRAGCOEFF; // works @@ -186,35 +189,33 @@ CHandlingManagerSA::CHandlingManagerSA() m_HandlingNames["headLight"] = HANDLING_HEADLIGHT; // doesn't work m_HandlingNames["tailLight"] = HANDLING_TAILLIGHT; // doesn't seem to work* m_HandlingNames["animGroup"] = HANDLING_ANIMGROUP; // works model based - - iChangedVehicles = 0; } CHandlingManagerSA::~CHandlingManagerSA() { // Destroy all original handling entries - for (int i = 0; i < HT_MAX; i++) + for (std::size_t i = 0; i < HT_MAX; i++) { delete m_pOriginalEntries[i]; } - for (int i = 0; i < 24; i++) + for (std::size_t i = 0; i < 24; i++) { delete m_pOriginalFlyingEntries[i]; } - for (int i = 0; i < 12; i++) + for (std::size_t i = 0; i < 12; i++) { delete m_pOriginalBoatEntries[i]; } - for (int i = 0; i < 14; i++) + for (std::size_t i = 0; i < 14; i++) { delete m_pOriginalBikeEntries[i]; } } -eHandlingProperty CHandlingManagerSA::GetPropertyEnumFromName(const std::string& strName) +eHandlingProperty CHandlingManagerSA::GetPropertyEnumFromName(const std::string& strName) const { const auto it = m_HandlingNames.find(strName); return it != m_HandlingNames.end() ? it->second : HANDLING_MAX; @@ -240,26 +241,26 @@ CBikeHandlingEntry* CHandlingManagerSA::CreateBikeHandlingData() return new CBikeHandlingEntrySA; } -const CHandlingEntry* CHandlingManagerSA::GetOriginalHandlingData(eVehicleTypes eModel) +const CHandlingEntry* CHandlingManagerSA::GetOriginalHandlingData(eVehicleTypes eModel) const { // Vehicle? if (!IsVehicleModel(eModel)) return nullptr; // Get our Handling ID, the default value will be HT_LANDSTAL - eHandlingTypes eHandling = GetHandlingID(eModel); + const eHandlingTypes eHandling = GetHandlingID(eModel); // Return it return m_pOriginalEntries[eHandling]; } -const CFlyingHandlingEntry* CHandlingManagerSA::GetOriginalFlyingHandlingData(eVehicleTypes eModel) +const CFlyingHandlingEntry* CHandlingManagerSA::GetOriginalFlyingHandlingData(eVehicleTypes eModel) const { // Vehicle? if (!IsVehicleModel(eModel)) return nullptr; // Get our Handling ID, the default value will be HT_LANDSTAL - eHandlingTypes eHandling = GetHandlingID(eModel); + const eHandlingTypes eHandling = GetHandlingID(eModel); // Original GTA:SA behavior if (eHandling < HT_SEAPLANE || eHandling > HT_RCRAIDER) return m_pOriginalFlyingEntries[0]; @@ -267,14 +268,14 @@ const CFlyingHandlingEntry* CHandlingManagerSA::GetOriginalFlyingHandlingData(eV return m_pOriginalFlyingEntries[eHandling - HT_SEAPLANE]; } -const CBoatHandlingEntry* CHandlingManagerSA::GetOriginalBoatHandlingData(eVehicleTypes eModel) +const CBoatHandlingEntry* CHandlingManagerSA::GetOriginalBoatHandlingData(eVehicleTypes eModel) const { // Vehicle? if (!IsVehicleModel(eModel)) return nullptr; // Get our Handling ID, the default value will be HT_LANDSTAL - eHandlingTypes eHandling = GetHandlingID(eModel); + const eHandlingTypes eHandling = GetHandlingID(eModel); // Original GTA:SA behavior if (eHandling < HT_PREDATOR || eHandling > HT_SEAPLANE) return m_pOriginalBoatEntries[0]; @@ -282,14 +283,14 @@ const CBoatHandlingEntry* CHandlingManagerSA::GetOriginalBoatHandlingData(eVehic return m_pOriginalBoatEntries[eHandling - HT_PREDATOR]; } -const CBikeHandlingEntry* CHandlingManagerSA::GetOriginalBikeHandlingData(eVehicleTypes eModel) +const CBikeHandlingEntry* CHandlingManagerSA::GetOriginalBikeHandlingData(eVehicleTypes eModel) const { // Vehicle? if (!IsVehicleModel(eModel)) return nullptr; // Get our Handling ID, the default value will be HT_LANDSTAL - eHandlingTypes eHandling = GetHandlingID(eModel); + const eHandlingTypes eHandling = GetHandlingID(eModel); if (eHandling >= HT_BIKE && eHandling <= HT_FREEWAY) return m_pOriginalBikeEntries[eHandling - HT_BIKE]; else if (eHandling == HT_FAGGIO) @@ -299,7 +300,7 @@ const CBikeHandlingEntry* CHandlingManagerSA::GetOriginalBikeHandlingData(eVehic } // Return the handling manager id -eHandlingTypes CHandlingManagerSA::GetHandlingID(eVehicleTypes eModel) +eHandlingTypes CHandlingManagerSA::GetHandlingID(eVehicleTypes eModel) const { switch (eModel) { @@ -9153,17 +9154,29 @@ void CHandlingManagerSA::InitializeDefaultHandlings() m_OriginalBikeHandlingData[13].iVehicleID = 214; } -void CHandlingManagerSA::CheckSuspensionChanges(CHandlingEntry* pEntry) +void CHandlingManagerSA::CheckSuspensionChanges(CHandlingEntry* pEntry) noexcept { + // Valid? + if (!pEntry) + return; + // Grab us a multiplayer_sa pointer - CMultiplayer* pMultiplayer = g_pCore->GetMultiplayer(); - eVehicleTypes eModel = pEntry->GetModel(); - // Find our original data - CHandlingEntrySA* pOriginal = m_pOriginalEntries[eModel]; + CMultiplayer* const pMultiplayer = g_pCore->GetMultiplayer(); + if (!pMultiplayer) + return; + + // Get Handling ID + const eHandlingTypes eHandling = static_cast(pEntry->GetVehicleID()); + if (eHandling > HT_MAX) + return; + + const CHandlingEntrySA* pOriginal = m_pOriginalEntries[eHandling]; + if (!pOriginal) + return; + // Default bChanged to false bool bChanged = false; - // loads of if statements because I'm pro like that... na j/k // Set bChanged to true if we find ANY change. if (pEntry->GetSuspensionAntiDiveMultiplier() != pOriginal->GetSuspensionAntiDiveMultiplier()) bChanged = true; @@ -9186,35 +9199,8 @@ void CHandlingManagerSA::CheckSuspensionChanges(CHandlingEntry* pEntry) if (pEntry->GetSuspensionUpperLimit() != pOriginal->GetSuspensionUpperLimit()) bChanged = true; - // Is bChanged true and the suspension flag changed marker false - if (bChanged && !pEntry->HasSuspensionChanged()) - { - // Is our hook uninstalled? - if (!pMultiplayer->IsSuspensionEnabled()) - // Install the hook - pMultiplayer->SetSuspensionEnabled(true); - - // Increment iChangedVehicles - iChangedVehicles++; - // Set our Suspension Changed flag - pEntry->SetSuspensionChanged(true); - } - // is bChanged false and is this model supposed to contain non-default info? (i.e. they just reverted) - else if (!bChanged && pEntry->HasSuspensionChanged()) - { - // Decrement iChangedVehicles - iChangedVehicles--; - // Set the suspension Changed flag to false - pEntry->SetSuspensionChanged(false); - } - - // if we hit 0 vehicles installed and it's installed uninstall the hook - if (iChangedVehicles == 0 && pMultiplayer->IsSuspensionEnabled()) - pMultiplayer->SetSuspensionEnabled(false); -} + if (!bChanged) + return; -void CHandlingManagerSA::RemoveChangedVehicle() -{ - // Decrement the count - iChangedVehicles--; + pMultiplayer->UpdateVehicleSuspension(); } diff --git a/Client/game_sa/CHandlingManagerSA.h b/Client/game_sa/CHandlingManagerSA.h index fe024b1041..52ce90c9f3 100644 --- a/Client/game_sa/CHandlingManagerSA.h +++ b/Client/game_sa/CHandlingManagerSA.h @@ -28,36 +28,17 @@ class CHandlingManagerSA : public CHandlingManager CBoatHandlingEntry* CreateBoatHandlingData(); CBikeHandlingEntry* CreateBikeHandlingData(); - const CHandlingEntry* GetOriginalHandlingData(eVehicleTypes eModel); - const CFlyingHandlingEntry* GetOriginalFlyingHandlingData(eVehicleTypes eModel); - const CBoatHandlingEntry* GetOriginalBoatHandlingData(eVehicleTypes eModel); - const CBikeHandlingEntry* GetOriginalBikeHandlingData(eVehicleTypes eModel); + const CHandlingEntry* GetOriginalHandlingData(eVehicleTypes eModel) const; + const CFlyingHandlingEntry* GetOriginalFlyingHandlingData(eVehicleTypes eModel) const; + const CBoatHandlingEntry* GetOriginalBoatHandlingData(eVehicleTypes eModel) const; + const CBikeHandlingEntry* GetOriginalBikeHandlingData(eVehicleTypes eModel) const; - eHandlingTypes GetHandlingID(eVehicleTypes eModel); + eHandlingProperty GetPropertyEnumFromName(const std::string& strName) const; - eHandlingProperty GetPropertyEnumFromName(const std::string& strName); - - void CheckSuspensionChanges(CHandlingEntry* pEntry); - void RemoveChangedVehicle(); + void CheckSuspensionChanges(CHandlingEntry* pEntry) noexcept; private: void InitializeDefaultHandlings(); - static DWORD m_dwStore_LoadHandlingCfg; - - // Original handling data unaffected by handling.cfg changes - static tHandlingDataSA m_OriginalHandlingData[HT_MAX]; - static CHandlingEntrySA* m_pOriginalEntries[HT_MAX]; - - static tFlyingHandlingDataSA m_OriginalFlyingHandlingData[24]; - static CFlyingHandlingEntrySA* m_pOriginalFlyingEntries[24]; - - static tBoatHandlingDataSA m_OriginalBoatHandlingData[12]; - static CBoatHandlingEntrySA* m_pOriginalBoatEntries[12]; - - static tBikeHandlingDataSA m_OriginalBikeHandlingData[14]; - static CBikeHandlingEntrySA* m_pOriginalBikeEntries[14]; - - std::map m_HandlingNames; - int iChangedVehicles; + eHandlingTypes GetHandlingID(eVehicleTypes eModel) const; }; diff --git a/Client/game_sa/CVehicleSA.cpp b/Client/game_sa/CVehicleSA.cpp index c2c612d5c7..b0361b493f 100644 --- a/Client/game_sa/CVehicleSA.cpp +++ b/Client/game_sa/CVehicleSA.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: game_sa/CVehicleSA.cpp + * FILE: Client/game_sa/CVehicleSA.cpp * PURPOSE: Vehicle base entity * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ @@ -1320,7 +1320,7 @@ void CVehicleSA::RecalculateHandling() if (!m_pHandlingData) return; - m_pHandlingData->Recalculate(GetModelIndex()); + m_pHandlingData->Recalculate(); // Recalculate the suspension lines RecalculateSuspensionLines(); @@ -1699,11 +1699,6 @@ void CVehicleSA::CopyGlobalSuspensionLinesToPrivate() void CVehicleSA::RecalculateSuspensionLines() { CHandlingEntry* pHandlingEntry = GetHandlingData(); - // if suspension is master disabled or suspension hasn't changed return. - // if ( g_pCore->GetMultiplayer ()->IsSuspensionEnabled () == false || pHandlingEntry->HasSuspensionChanged ( ) == false ) - //{ - // return; - //} DWORD dwModel = GetModelIndex(); CModelInfo* pModelInfo = pGame->GetModelInfo(dwModel); diff --git a/Client/multiplayer_sa/CMultiplayerSA.cpp b/Client/multiplayer_sa/CMultiplayerSA.cpp index b421b473e2..28d5b1f551 100644 --- a/Client/multiplayer_sa/CMultiplayerSA.cpp +++ b/Client/multiplayer_sa/CMultiplayerSA.cpp @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: multiplayer_sa/CMultiplayerSA.cpp + * FILE: Client/multiplayer_sa/CMultiplayerSA.cpp * PURPOSE: Multiplayer module class * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ @@ -190,8 +190,6 @@ DWORD RETURN_CHandlingData_isNotRWD = 0x6A0493; DWORD RETURN_CHandlingData_isNotFWD = 0x6A04C3; // end of handling fix #define CALL_CAutomobile_ProcessEntityCollision 0x6AD053 -#define CALL_CBike_ProcessEntityCollision1 0x6BDF82 -#define CALL_CBike_ProcessEntityCollision2 0x6BE0D1 #define CALL_CMonsterTruck_ProcessEntityCollision 0x6C8B9E DWORD RETURN_ProcessEntityCollision = 0x4185C0; @@ -599,7 +597,6 @@ CMultiplayerSA::CMultiplayerSA() MemSetFast(&localStatsData, 0, sizeof(CStatsData)); localStatsData.StatTypesFloat[24] = 569.0f; // Max Health - m_bSuspensionEnabled = true; m_fAircraftMaxHeight = 800.0f; @@ -1455,7 +1452,7 @@ void CMultiplayerSA::InitHooks() // Disable CStreaming::StreamVehiclesAndPeds_Always MemPut(0x40B650, 0xC3); - SetSuspensionEnabled(true); + UpdateVehicleSuspension(); // Aircraft Max Height checks are at 0x6D2614 and 0x6D2625 edit the check to use our own float. MemPut(0x6D2614, &m_fAircraftMaxHeight); @@ -6116,7 +6113,7 @@ bool CheckHasSuspensionChanged() CModelInfo* pModelInfo = pGameInterface->GetModelInfo(pVehicle->GetModelIndex()); if (pModelInfo && (pModelInfo->IsCar() || pModelInfo->IsMonsterTruck())) - return pVehicle->GetHandlingData()->HasSuspensionChanged(); + return true; else return false; } @@ -6181,26 +6178,10 @@ void _declspec(naked) HOOK_ProcessVehicleCollision() } } -void CMultiplayerSA::SetSuspensionEnabled(bool bEnabled) +void CMultiplayerSA::UpdateVehicleSuspension() noexcept { - // if ( bEnabled ) - { - // Hook Install - m_bSuspensionEnabled = true; - HookInstallCall(CALL_CAutomobile_ProcessEntityCollision, (DWORD)HOOK_ProcessVehicleCollision); - // HookInstallCall ( CALL_CBike_ProcessEntityCollision1, (DWORD)HOOK_ProcessVehicleCollision ); - // HookInstallCall ( CALL_CBike_ProcessEntityCollision2, (DWORD)HOOK_ProcessVehicleCollision ); - HookInstallCall(CALL_CMonsterTruck_ProcessEntityCollision, (DWORD)HOOK_ProcessVehicleCollision); - } - // else - // { - // // Hook Uninstall - // m_bSuspensionEnabled = false; - // HookInstallCall ( CALL_CAutomobile_ProcessEntityCollision, RETURN_ProcessEntityCollision ); - // HookInstallCall ( CALL_CBike_ProcessEntityCollision1, RETURN_ProcessEntityCollision ); - // HookInstallCall ( CALL_CBike_ProcessEntityCollision2, RETURN_ProcessEntityCollision ); - // HookInstallCall ( CALL_CMonsterTruck_ProcessEntityCollision, RETURN_ProcessEntityCollision ); - // } + HookInstallCall(CALL_CAutomobile_ProcessEntityCollision, reinterpret_cast(HOOK_ProcessVehicleCollision)); + HookInstallCall(CALL_CMonsterTruck_ProcessEntityCollision, reinterpret_cast(HOOK_ProcessVehicleCollision)); } // Variables diff --git a/Client/multiplayer_sa/CMultiplayerSA.h b/Client/multiplayer_sa/CMultiplayerSA.h index 65a7afb715..f725f37b63 100644 --- a/Client/multiplayer_sa/CMultiplayerSA.h +++ b/Client/multiplayer_sa/CMultiplayerSA.h @@ -310,8 +310,7 @@ class CMultiplayerSA : public CMultiplayer CLimits* GetLimits() { return &m_limits; } - void SetSuspensionEnabled(bool bEnabled); - bool IsSuspensionEnabled() { return m_bSuspensionEnabled; }; + void UpdateVehicleSuspension() noexcept; virtual void FlushClothesCache(); virtual void SetFastClothesLoading(EFastClothesLoading fastClothesLoading); @@ -362,7 +361,6 @@ class CMultiplayerSA : public CMultiplayer bool m_bBadDrivebyHitboxesDisabled; private: - bool m_bSuspensionEnabled; std::vector m_PlayerImgCache; EFastClothesLoading m_FastClothesLoading; CLimitsSA m_limits; diff --git a/Client/sdk/game/CHandlingEntry.h b/Client/sdk/game/CHandlingEntry.h index 356741e6d8..a2da6167c9 100644 --- a/Client/sdk/game/CHandlingEntry.h +++ b/Client/sdk/game/CHandlingEntry.h @@ -1,11 +1,11 @@ /***************************************************************************** * - * PROJECT: Multi Theft Auto v1.0 + * PROJECT: Multi Theft Auto * LICENSE: See LICENSE in the top level directory - * FILE: sdk/game/CHandlingEntry.h + * FILE: Client/sdk/game/CHandlingEntry.h * PURPOSE: Vehicle handling entry interface * - * Multi Theft Auto is available from http://www.multitheftauto.com/ + * Multi Theft Auto is available from https://multitheftauto.com/ * *****************************************************************************/ @@ -91,7 +91,7 @@ class CHandlingEntry virtual ~CHandlingEntry(){}; // Use this to copy data from an another handling class to this - virtual void Assign(const CHandlingEntry* pData) = 0; + virtual void Assign(const CHandlingEntry* pEntry) = 0; // Get functions virtual float GetMass() const = 0; @@ -137,8 +137,7 @@ class CHandlingEntry virtual eLightType GetTailLight() const = 0; virtual unsigned char GetAnimGroup() const = 0; - virtual eVehicleTypes GetModel() const = 0; - virtual bool HasSuspensionChanged() const = 0; + virtual std::uint16_t GetVehicleID() const = 0; // Set functions virtual void SetMass(float fMass) = 0; @@ -165,13 +164,13 @@ class CHandlingEntry virtual void SetTractionLoss(float fTractionLoss) = 0; virtual void SetTractionBias(float fTractionBias) = 0; - virtual void SetSuspensionForceLevel(float fForce) = 0; - virtual void SetSuspensionDamping(float fDamping) = 0; - virtual void SetSuspensionHighSpeedDamping(float fDamping) = 0; - virtual void SetSuspensionUpperLimit(float fUpperLimit) = 0; - virtual void SetSuspensionLowerLimit(float fLowerLimit) = 0; - virtual void SetSuspensionFrontRearBias(float fBias) = 0; - virtual void SetSuspensionAntiDiveMultiplier(float fAntiDive) = 0; + virtual void SetSuspensionForceLevel(float fForce) noexcept = 0; + virtual void SetSuspensionDamping(float fDamping) noexcept = 0; + virtual void SetSuspensionHighSpeedDamping(float fDamping) noexcept = 0; + virtual void SetSuspensionUpperLimit(float fUpperLimit) noexcept = 0; + virtual void SetSuspensionLowerLimit(float fLowerLimit) noexcept = 0; + virtual void SetSuspensionFrontRearBias(float fBias) noexcept = 0; + virtual void SetSuspensionAntiDiveMultiplier(float fAntiDive) noexcept = 0; virtual void SetCollisionDamageMultiplier(float fMultiplier) = 0; @@ -184,9 +183,7 @@ class CHandlingEntry virtual void SetTailLight(eLightType Style) = 0; virtual void SetAnimGroup(unsigned char ucGroup) = 0; - virtual void SetSuspensionChanged(bool bChanged) = 0; - // Call this every time you're done changing something. This will recalculate // all transmission/handling values according to the new values. - virtual void Recalculate(unsigned short usModel) = 0; + virtual void Recalculate() = 0; }; diff --git a/Client/sdk/game/CHandlingManager.h b/Client/sdk/game/CHandlingManager.h index d57959b3de..25d706220e 100644 --- a/Client/sdk/game/CHandlingManager.h +++ b/Client/sdk/game/CHandlingManager.h @@ -27,12 +27,12 @@ class CHandlingManager virtual CBoatHandlingEntry* CreateBoatHandlingData() = 0; virtual CBikeHandlingEntry* CreateBikeHandlingData() = 0; - virtual const CHandlingEntry* GetOriginalHandlingData(enum eVehicleTypes eModel) = 0; - virtual const CFlyingHandlingEntry* GetOriginalFlyingHandlingData(enum eVehicleTypes eModel) = 0; - virtual const CBoatHandlingEntry* GetOriginalBoatHandlingData(enum eVehicleTypes eModel) = 0; - virtual const CBikeHandlingEntry* GetOriginalBikeHandlingData(enum eVehicleTypes eModel) = 0; + virtual const CHandlingEntry* GetOriginalHandlingData(enum eVehicleTypes eModel) const = 0; + virtual const CFlyingHandlingEntry* GetOriginalFlyingHandlingData(enum eVehicleTypes eModel) const = 0; + virtual const CBoatHandlingEntry* GetOriginalBoatHandlingData(enum eVehicleTypes eModel) const = 0; + virtual const CBikeHandlingEntry* GetOriginalBikeHandlingData(enum eVehicleTypes eModel) const = 0; - virtual eHandlingProperty GetPropertyEnumFromName(const std::string& strName) = 0; - virtual void RemoveChangedVehicle() = 0; - virtual void CheckSuspensionChanges(CHandlingEntry* pEntry) = 0; + virtual eHandlingProperty GetPropertyEnumFromName(const std::string& strName) const = 0; + + virtual void CheckSuspensionChanges(CHandlingEntry* pEntry) noexcept = 0; }; diff --git a/Client/sdk/multiplayer/CMultiplayer.h b/Client/sdk/multiplayer/CMultiplayer.h index 3d977e3f13..c8b043a37f 100644 --- a/Client/sdk/multiplayer/CMultiplayer.h +++ b/Client/sdk/multiplayer/CMultiplayer.h @@ -427,8 +427,7 @@ class CMultiplayer virtual CLimits* GetLimits() = 0; - virtual bool IsSuspensionEnabled() = 0; - virtual void SetSuspensionEnabled(bool bEnabled) = 0; + virtual void UpdateVehicleSuspension() noexcept = 0; virtual void FlushClothesCache() = 0; virtual void SetFastClothesLoading(EFastClothesLoading fastClothesLoading) = 0; From d4f884935626c638dca0f7f45c71cfb22c4e2d72 Mon Sep 17 00:00:00 2001 From: FileEX Date: Thu, 15 Aug 2024 19:53:59 +0200 Subject: [PATCH 13/39] Fix inconsistent extra component names (#3645) --- Client/game_sa/CPoolsSA.cpp | 2 ++ Client/game_sa/CVehicleSA.cpp | 38 +++++++++++++++++++---------------- Client/game_sa/CVehicleSA.h | 1 + 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/Client/game_sa/CPoolsSA.cpp b/Client/game_sa/CPoolsSA.cpp index 2be6742617..42c534dcaa 100644 --- a/Client/game_sa/CPoolsSA.cpp +++ b/Client/game_sa/CPoolsSA.cpp @@ -128,6 +128,8 @@ CVehicle* CPoolsSA::AddVehicle(CClientVehicle* pClientVehicle, eVehicleTypes eVe { pVehicle->m_ucVariant = ucVariation; pVehicle->m_ucVariant2 = ucVariation2; + + pVehicle->DumpVehicleFrames(); } else { diff --git a/Client/game_sa/CVehicleSA.cpp b/Client/game_sa/CVehicleSA.cpp index b0361b493f..91fb5440e0 100644 --- a/Client/game_sa/CVehicleSA.cpp +++ b/Client/game_sa/CVehicleSA.cpp @@ -186,12 +186,6 @@ void CVehicleSA::Init() } CopyGlobalSuspensionLinesToPrivate(); - - // clear our rw frames list - m_ExtraFrames.clear(); - // dump the frames - VehicleDump(this); - FinalizeFramesList(); } CVehicleSA::~CVehicleSA() @@ -1949,6 +1943,7 @@ void CVehicleSA::AddComponent(RwFrame* pFrame, bool bReadOnly) // if the frame is invalid we don't want to be here if (!pFrame) return; + // if the frame already exists ignore it if (IsComponentPresent(pFrame->szName) || pFrame->szName == "") return; @@ -1957,23 +1952,22 @@ void CVehicleSA::AddComponent(RwFrame* pFrame, bool bReadOnly) // variants have no name field. if (strName == "") { + // In MTA variant 255 means no variant + if ((m_ucVariantCount == 0 && m_ucVariant == 255) || (m_ucVariantCount == 1 && m_ucVariant2 == 255)) + return; + // name starts with extra strName = "extra_"; - if (m_ucVariantCount == 0) - { - // variants are extra_a, extra_b and so on - strName += ('a' - 1) + m_ucVariant; - } - if (m_ucVariantCount == 1) - { - // variants are extra_a, extra_b and so on - strName += ('a' - 1) + m_ucVariant2; - } + + // variants are extra_a - extra_f + strName += 'a' + (m_ucVariantCount == 0 ? m_ucVariant : m_ucVariant2); + // increment the variant count ( we assume that the first variant created is variant1 and the second is variant2 ) m_ucVariantCount++; } - SVehicleFrame frame = SVehicleFrame(pFrame, bReadOnly); + // insert our new frame + SVehicleFrame frame = SVehicleFrame(pFrame, bReadOnly); m_ExtraFrames.insert(std::pair(strName, frame)); } @@ -2001,6 +1995,16 @@ void CVehicleSA::FinalizeFramesList() } } +void CVehicleSA::DumpVehicleFrames() +{ + // clear our rw frames list + m_ExtraFrames.clear(); + + // dump the frames + VehicleDump(this); + FinalizeFramesList(); +} + bool CVehicleSA::SetComponentVisible(const SString& vehicleComponent, bool bRequestVisible) { SVehicleFrame* pComponent = GetVehicleComponent(vehicleComponent); diff --git a/Client/game_sa/CVehicleSA.h b/Client/game_sa/CVehicleSA.h index f9847d4c33..58632dabbf 100644 --- a/Client/game_sa/CVehicleSA.h +++ b/Client/game_sa/CVehicleSA.h @@ -687,4 +687,5 @@ class CVehicleSA : public virtual CVehicle, public virtual CPhysicalSA void CopyGlobalSuspensionLinesToPrivate(); SVehicleFrame* GetVehicleComponent(const SString& vehicleComponent); void FinalizeFramesList(); + void DumpVehicleFrames(); }; From 3ebefc37951e24cbfb25035d99045d67571b5324 Mon Sep 17 00:00:00 2001 From: FileEX Date: Thu, 15 Aug 2024 19:54:39 +0200 Subject: [PATCH 14/39] Fix Changing the "voiceptt" bind won't change it's "up" pressed state bind (#3644) Fix binds --- Client/core/CKeyBinds.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Client/core/CKeyBinds.cpp b/Client/core/CKeyBinds.cpp index 78b354bd00..0a1eee4a1e 100644 --- a/Client/core/CKeyBinds.cpp +++ b/Client/core/CKeyBinds.cpp @@ -841,7 +841,8 @@ CCommandBind* CKeyBinds::FindCommandMatch(const char* szKey, const char* szComma NullEmptyStrings(szKey, szArguments, szResource, szOriginalScriptKey); std::string arguments = szArguments ? szArguments : ""; - szArguments = SharedUtil::Trim(arguments.data()); + if (!arguments.empty()) + szArguments = SharedUtil::Trim(arguments.data()); for (KeyBindPtr& bind : m_binds) { From bca4dff8dc490328000d7653a9166704d859b7e5 Mon Sep 17 00:00:00 2001 From: Dutchman101 <12105539+Dutchman101@users.noreply.github.com> Date: Thu, 15 Aug 2024 18:04:12 +0000 Subject: [PATCH 15/39] Update CEF to 127.3.5+g114ea2a+chromium-127.0.6533.120 --- utils/buildactions/install_cef.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/utils/buildactions/install_cef.lua b/utils/buildactions/install_cef.lua index 8a981df70f..f01f92af47 100644 --- a/utils/buildactions/install_cef.lua +++ b/utils/buildactions/install_cef.lua @@ -9,8 +9,8 @@ local CEF_URL_PREFIX = "https://cef-builds.spotifycdn.com/cef_binary_" local CEF_URL_SUFFIX = "_windows32_minimal.tar.bz2" -- Change here to update CEF version -local CEF_VERSION = "127.3.4+ge9e2e14+chromium-127.0.6533.100" -local CEF_HASH = "621a2ddf02b81441f7b87214dcdcf1bb35401b646c9750807692e45d9818d174" +local CEF_VERSION = "127.3.5+g114ea2a+chromium-127.0.6533.120" +local CEF_HASH = "ad91d535873bdd2b6f36135d42a383f92ab2f2959be33db0a6f0f4178cf49436" function make_cef_download_url() return CEF_URL_PREFIX..http.escapeUrlParam(CEF_VERSION)..CEF_URL_SUFFIX From 590b248a29f23d2c5e27fc0d6817a06f786642ff Mon Sep 17 00:00:00 2001 From: Dutchman101 Date: Sat, 17 Aug 2024 00:26:55 +0200 Subject: [PATCH 16/39] Update launchers This will also put our new certificate to them, so that SmartScreen gets used to it being on launchers as well --- Shared/data/launchers/CEFLauncher.exe | Bin 97664 -> 95112 bytes Shared/data/launchers/MTA Server ARM64.exe | Bin 372096 -> 369544 bytes Shared/data/launchers/MTA Server.exe | Bin 326528 -> 323976 bytes Shared/data/launchers/MTA Server64.exe | Bin 380800 -> 378248 bytes Shared/data/launchers/Multi Theft Auto.exe | Bin 418688 -> 416136 bytes Shared/data/launchers/wow64_helper.exe | Bin 262016 -> 259464 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Shared/data/launchers/CEFLauncher.exe b/Shared/data/launchers/CEFLauncher.exe index 8c8babb2856edbc9abf36965796cdbdb21712d7a..62684b73d0559f7621adb23233750a71f3fa8caa 100644 GIT binary patch delta 2949 zcmZveXH?Tk7sm4sy$Tw70-=Z^EeTb63!+jaNN)xRMVf>r2nGTo(xknFB2B7bfq+B= zmacSZOOuWWQdB@dmf{QSx}SE=x#yYRo#)>9c4xx&X`+{C5>){DBvoyK3CBl6F2C2X z-(kaC1BD&44RZxF<5Vl5RL4s9z2+aSgwmXH1r&L#_8Zku$f>Uy%5kh*e$_DaX}$u= zd8*f7e=FsbF>a2oCwGDVUMX|{J0t}Chx0!SngxLYCV*8eMFLQvB5eUF?tmsZTCD0N zfB`2V=!w)d)IjPv<=-XX<2u*lcrFcqp7Q{wU4EZ29~0yx5C90m`|la$0~as{ut zlB7N&X=gH}&ugvBL?>jBrodAQ)QUfxK41oXtf$jo7M2j>Mh@%G0%;@~>C z0Gx;S9ULAhA&w9`F;FoJ{ii_!ejOL!<^{ik_xANA*}DLOgnZ?i(FJ~mEJ)OvbiGkn zb^rDawDt{!BOfK79x|^O1&W&cO7NHYnd6zB1c*)+-;kql2`DjsXthdi3ed@_#(^!j|OWTNkLgVmxIC9*x;aH zc2SAyzHQWXuL^4ypVbd@1}rHH?;2LaL}Y!eXaNLkg)fr3v*dQA z&r(ti@#I+E{|S+8&lFD8r!9cSGm__1OIOy4-Kh%=>8VJr7QjBF(#`hl0Q<|>#}kiX zJnCYVY!hlcq(Dm`iV&Ia9wb%X1l#%y*RMyZ{95dGVmjAO4BX?da5R`)$U?1KV9$R6 z7pO>oFVE$h=gQU-9Jpy7zSgg%*Gx0-P&DG+WoezjTsFqkf7#5{mVH1Vq2{s#4Wlp^ zztjs;ZEzc4H7g3l;?E8+7KS)^>w4K1WOp-u za!M~JY>1|Y!8WCzn@t5YJ3!VGoy8*vfl91@8Se*YOegXyyOq$0EEW=6a6$tbldpr( znjYd(_Xr7fql5>fq#YN}%ahpqN(5o2B-9Pd7mv$RrG_lvwgxQ8<4VhvEmeTsrK5i`=*qT{~B)Pg&w|g$CT!LZE0DhQM0E7FRXni~Ml!|$p^D!Yy3gqjg}q_Oi;WSqMRfnf-u)#D zx$D#<6Hsn!6ITnSV=N6(p8!4JK7&G_PTpHNq@o-OL7{a9)FAY~k)$6C=p(GN+dr;r z=QNFK=DLinZc<&?hV`sl=-AzJV4NpEZJ$fR8`un}mw$%J_k_e86RgGs;;r>wHl~hZdD`{%oUsl&h_5F{9^x^cLMM{~;E| zUj>2nOFfuw4eoOvr^y#CY3|**-6S|vkQi1s@z)-`F-b!*h#GK->|N`$AjojHy=ZHx zi+5Gd8LiQ|Ed@_1`DAoH_)rC-4N_;bmm*9Y_DO+ z^|9{5f)w5jp81gNPwB3)t@5Rd0ygC8RMx<|0&6tnyeX?`&b;Bys%eoWYA@YOlEaGw z!L%w)npL?UvL5*TNP7Qud69tPcFCu`zRQLjh$&VNd^)SxdXEFdP3Gr!s+A6<+;y4K zj|iKOY`u)E&biz!|ARGK!6CZ})>e}Z<(d4;2LZ EKOwIw2mk;8 delta 3931 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 diff --git a/Shared/data/launchers/MTA Server ARM64.exe b/Shared/data/launchers/MTA Server ARM64.exe index fcc6ac81c00208c79ebb6a2925336659a9e7ee86..1dba234e53b9b81c0a8a234818365112ac27c8cb 100644 GIT binary patch delta 46179 zcmeFad016d`~Sbz+MovnJF8)9>>g{`g(j_qx8j>v-?iecx*y z_d182=abmtH)BgY?u6%igkAaW`lZ$<=EZeaE(XWEc+-_lhP?60nUFIsy?^OaL$15h zWyl*z-gIRr!|(bl7eHS5?)6LSAY-TBWW*CYef^axTXZ0Tt^HuIemx&DyrD&7 zIZ&sb(wIxxbAwpx63&=2h&kiIw*<4|0g$!9Y;FjIew-(9kA9ku<%L*X>F1dTVG{ z-{*tb_9Tb)fniLxd8fhn=dG_-)M`ur`RA<%cm1g`?_fQ-%XmIVU(&@9R373Ts26qV z&z<_NE=fFHKiVZVD7lL_TtC|-X?|ZT>CC@LIxpP&C+vUTT4%&=W~ZySErLa>vKyS& z&3ne5i|pRk2>t4?gfVNQ*>=OFJi_}eMbpt+`#@#X%zUJ`$vW)lY}@&ghcHwx7{hWt3o5xs!su`{7Z{S(U9Q*(;c5c77#mZ`PtKmF>v{3SAWA z_34*~&kP@6Wu-30TZZ_eWZ7pTNUseK>)X>ZCC7WW|6MM5toJ_sbolRlp8jLkVSKsX zvs)scq-S&+%LnW0x=rIL`hjl4c$$8yTcWMoUbg*_ zDpZpeS6LPiVyAvQB8p4>n~47W4m~{bF8upoWKu*Ta*&te+|`6|g7afb^&^qW`a~E&Yd2AG~(_>;s^4{;hbFvJ_2l?eQ8Zki9^W&xpA{+B*T)Z2+K$|wUF?=NbA)~@ zzMrN3qnDL~5qe_xgsA2b-Xt3`suC+7;kET)yY#eP(VYziMb%`5$s2<(iIHQ@2gw`r zw?X(}{d9LLgNZL#;i)two9Zqy;?K*_=OhewKlPsu*`e{{ZJ1BenCAhev37eG*6w1p z6VynI2A|bniuL1^%&2m=pXdR;-mELJ+J3+`nH}kV>G0EP_WZs9UXIXA9wEJr*D7% zFa31SDBi9I_qv9EuCMF0!iIio+rrxR>Yw$}BW#$IY(3bVV#Y@2V(7%{MM(>|OaCY- zG2~a&{~1kGj@185S}3uCzTgC{RSzLjJ8Hc=Rzfy*My< z2kKr&cT{GEzQ>Wsv-P8n#IBi$PxbMREbfhL*MD)0akpXdVeI0Qzs|uzLyL`3lg(qj zzoI?PXndd=Lis7q14*2%+lDci+tt}VwLjY)gtp9QZDSPoLe#mj&UPpCMtDBf7*dFQ z4DaMQp^}ZEl|YV(w|9=jDf34N+px0+|h?Rhw1Mo59EL7?a8TqPmZN4meyDFt$+2f%*BL7|gv+p3A8i*=hJ+0p;zE@w_ZyGu#6N0j;KEzUt^lyeqzLX>fpYxOn#6M3nAcmE_TS-bFWv3|6FZ|>HA#QjZr zcxvzP>kzgH%NL65ov2Spoi;E$$n0mB^o>QOC&@&T!6f5?^ygB45usi5#|NZ@e};HI z?C6N|r1bLsr5_(Kt$RH*uR!zXt*`F-bq?Qk7K2;uXkOBX4}2NZ|BnNQx!wO(Gm~ai zwyI=RxtOIYU8o!uGr@=W+QMuv{%4vkS2(mc+a#%m|2Ua>)VPW*<(ozt7O7YNUU z)a2Tm=PnK2m7l_HPQ9cyBmYvC;hw=VRJ=x9y*(3(5Kn=qo#4!3?Q@rgxOdr^XF`4? zRzW*Ez>%Qpt@pu6t)^e1RWdgVuM-PG#~&T?EE0WucIK{M(K?S|+PefJq8h_k2)3_0 z$TM4oozJ4ScG`sz!P&l>REC)|qh->q8L8Yhyuh+1xK+%kRSG?nUl@!#J4*zfqV5mtiPIv8ZDz4tFQE zxAxDDxfK|eD!!$d%Uzhi)e;&QXK@7LRFii-5>u1+d`#R`h+G9wyOpEXT#fB-G|kl` zP&2Qqjz;tJ{5jgLs7kZ8ZboV6ZD!s+SjBsf9PdqmY(|YZp}Pok&D=#vQ7{wBgsT$(Hcg!up`ai2nt$V^OEOV+V8?gAR z&K8H&MOABrUk$9rG8acR@C$Y(YROc!Fn6T6TD_0&uddpb}>yU;YvNJuSe|Dr8X z_R{kaIp>%WeFd9p!lj!<#?szhc4g1>^T{%OK86oQns@iv4*B~aXM6iKlXv~5zcVaK z?=iv_6NkELLQ0;tj{OV`cL??6)o<-@O(7|0^T(F~qM%s4Z{2*G?mJd%y^_MK})_ zBQ%m7aL>MQWZsYPek0Qwm~LZa=FhIpu(?=bP-3YxH zH4`{Olh8j^ZT)v6G#iup|M3Vt_{{%&guV!$|6fMvU!DK!2>k->{eLn-`Tx!c{WlU; z)%-qXCw4m_^1(DbH;y!hKxvb{N3n$gqzzphD&#j$mLJ!S1*#Yy1)CO@V)4xD82!-_H89gH(sD$ZiwgLrTZ>tg1{i8}mH)Oo-0JKZab-ZLG5Rj&G;Y^VJL5(3 zXuV73@ZnEkZdBVM9Q;+P4WoM_Hy(9Y`#s(Y&hQ|`jFX(}^);FCqI|S|SLQmtPjAm0 zAMwt(?bheOyEz^N9GZH|nP+ z^$)t|*AA&yy%VjcWew&F^d(t~@Jx9iYc2n`K49{1JV;NTG7L|Sv!?X!9;~tLzalcV zrOD~+Y|lhhsL0>bw@sNQ>VDQQPVH5FW=etJN&3p{X%Xw%JLE<1#kM>QG+HVVGdoD_ zATV061;nP9dH?f^o^a_uIhT|ev?QZjZxm3sH-3%b2gW;UWq*S2e{?w%fV{&8vN^d5M`IWRquPtZS@ z-kZK~|-D=zDW zh;F_tF(Mp+v$HrxPHOtBLzDKn^rtQx$z%18E=vqQTdpFTv?uAB(dijFzr4TOtkVmh z&ExTGu6FWjD~PB6xk(e*=~Qe9zeHo^%v2A5(Unfj1Ro)`Y{;Z*%)^q9ZsuW0NEn+N zL)*`PF}D48)VvD22+v3=Y|a9K#!9R_TF!z{&he_8wqM|=%BjD7dHk#bwIPl3Oz7yu z*3CMk?U~itGhs*wn|rd8v)yRF(-Vyvo;}If7LCfsyu-O!>z6}UiveQjl1*K%K0?TVmbwPF|cXnDG>K_TFRNXWG1X zS@+2y-YwRBU5K{`_iiKMyio5(%fP#MZ?*2ryLbz6KMFnY3UqAinIH!H+%mPJ{Tk1@AHK7(1rIHBQev=M(%m=|9vn3=;F`f}X2V3*74I`{H6{@x)~0+Wz{ za^}awy&E7sUxs`8>+5Dt99}n0JzOVLR{z`~)goL3i{dxIDw$L~5gH+ryBhifdh^Ua zIhkF(%5enJ>OxVoa#J_N%1d%L??CImuA8^Nb&ovu!9C^C`w(SOC3>&E#FfM+>$kfS zV<*4|^TEKS7+Y%iVVrFZ`%z6Pwl+)^YN65_U8DHY>hM{KS`eZu(Ff1HEa((&s&AY7 zDd#Wh3+E5RgZbU_cZ>1}ee8nug7?#(U63Nml=sx%1Z5`azdP{7kr|~wzaoWm{ltpzMR}BdaAhXn zSIt)~<^r?V(yQhrO?#Maug1Pht;Klun*IBwYT{>=$aa;je60TdRr7)d!beYgIa+t- z&+D2QWt@g7do=7%?6< zriW4`UN?`IRIj^k4(G%5BWp)>E$?kb*J?xII~R-*MZNWj1?xpoQgwB~#a!f#)qh== zB8rmrxb^p-D37lnscavvzm03HHm=X#uv`Usc|$K4Ki+_KPhWMzO#J)e4U_l_dixDJ zwiDZKd?x8Csm@HJzsKYJ+%-6)IEaIZ0k|(#y#rM}=cd;pv4bt!jEC#LI;7EX&AqF8 z7j_ks{B~#18{0u8u^l|OJ5&3q($gK%+MP8ao*%yJkQL@OvHJR3@&y0A`h(k+a`9}l z{@j+>>dQ9Xz|qLnhupI?eob}E=H6WIb7Pb~eM_DQZ>oN7ix7Nn_1-(9(4VW1+%=M8 zr9OU7ydH7)_o_l5PA!}@(^V)ce! zqxo3HguY(x>T>8 z!rIF>I(4;z4Re2aWCC~dMZPH)^R43hD$)G~U$0EQL_;;* zHkt3{Ax}TwA-g#|CrW+8r}9Od&+~1Y#@!lUC&Q=n4*sAo{4!oGqC9)hld^31>PJ+z zFxDXI2Fdql@RWpQBfaMLkx`Y8kHoUymyI^;d4pxQnY<@YmP2OpxuR&K+&q*2Lu8GV zi7q}c;n4VV!Db*>QvwC68!VT)_)CW0EPk<)i)Qf=O5Q(<4^;ByS$t}Dzwlp-z!On8 zh37J1HeckQtJh)94Iy*p5PAP>zTTa6KG%<_;K6M4mwqMLp~3`NSsHRKtJ|S3(=PPA zUxkOxD0SxWbG~;&?-Xn_YR$WNx8I}q@~mCbGl%!!!Sazg{5R2MxBSOkj%if>Yc9W< zetss zwIII7*K-lNAnN_;B^)bMhVR2Aysn!FeMatB!=D$KH_xX+d zaW3pn$W4W4obV^)bA^1oXb$#$U&x0BhwcsbqFPG2XL8wlBOIOxmNPe^RrdzV`#188 z?yo)GA#?F1R#`6`F4|GI3C{L1EMYaWc_SajcgqMjkK<3v0dC}MhP>O&SBRou`Lmmk z5m{XJ_wd=GJlJ=uhsSV!QhJL}5!Jr4MaXbeJ-!s|hhg#c=FZ-)x_M@c%!%@*&3p-(+kVzUD=|ry$m}iLDPqgyJzMw)o+)45f(rgx4!;Ar*dZ^u z1GRrB*thl$zMtFHKGq?BLtFj>KjZK@@8S<}QQl8}Qp{g~^xc0qPv*SdxAz|I;3Bh^ z@BOX(X-zZ_^4)qrzg*+5$(}k|x#>m2qiLIV^OTwo zG*sxZ(~k0gMkaT@&^5EO9QGE!FEY<|p}xo_-+PPS8Hu0isQsJzw$g~FE<|2+jNcfF z{$OxksQm62-x!Hs?!a##{3;E7W*2$W+k8`GUFe13n?q%nclcY8c&529-Y)XHclfGE zJfo1_jHf(IE`6789GFa1lo{sDaxib1@XWsQ&kpItHbkW-5Y9*!{+-|B<3dm+1}Do) z-{WK5=WEQHWoKU1RYxPZ5%ipEuo1NbwxN~{RcJ(0WZImt^|x%9ou~>r8R0yzIV>Bh z*$9`}*|518P7=CXMsB0L*$iVYY>}1??O-No+B~pzv25q-+z7`|2SJt%^=yP|4mE5J z*#5+q2udfCy9}n>bTN!h82=4pE~Mdr#!!`NL{Qg7KHINyqk0! z=f!bv+^be$cH9VwXIvvxd1ra>I8O-SAtoowFOTz$yv&z(fajp|p=`%veD+h>Pdey_7e1Cn-b<7~$eEPS1 zZxBzEQ@-cb{3l=g_iAN&#@F{Jj%S0*e0zW9ojJc+9%#kF*6B{))u;JG0!0iu!_&gT zw{F7j3(w_h7Abx(Q!M9eAACya{8C>A7w-vflXaOqNu~yg>DZ--39>3kl3}@t0AIyNX&?DOhqz0KQ&Z*0-r`JjRmhK1+bi(JacD%y)~)Eq`KPD)#`h6Dx#)GX{?~i4vY@Z1 z=`0m@EyKO#*3{%w%__1haHvb z0ovC(QN#rWH~fZ0S%ys(i{$3pMU2gn+~whGuu}Q9OconL!hgB0Lzb<_Z`-h^`Pmmd zLnLY8{rz-(e8Xpn5^e%P3$-KW@_FO3X$7VrQyy?m|RP;X2rloDl?c!_Y zUyDRyR8f>yeQ%zNZ;2i2g1sZ*Ds$s77H51K>w9IPSjdq<8MjD`v%@usnXarL*jp;| z7KvfQ@4e=Hp6*unl&3q@J>_Y$x~DvOWZfdsKjucL0`s&^{<%o>2+YzdcpA0tTr7%k zjxazTS|WCcyfJd=mEsXR;{AE08qr7OJ9*+7{f_ddxhRaO7{!b%G0#xKhq95Yr=9PibGa39$#WS@~)>A-~lH;?js+liQaq^V4(L zb)C3XV3(kB<||t#Qn|Quh3fFKX}y?--KrdWy%-}d>E&B{y}%akL*L391fIiFmdh&& z#k=U218x>~@fx}JW>myZx$YKp)-Arhw_tX)^YtbJG4dMdHE@M`JG}h zo{1{&6zj2{?0FZeJM&^G?-Co)D6z$2ys^`sbGK*+&1hYn$-UXlEF%?ht6xsfI@}@m zVLA9M$$20Z^<%?6L8Ys{3vs}ni)T2cmy5THL@XkO+eM#X{*HX)A;kNV{OBREQ+OTn zrX5Hek7_$aQbM!C+lCm6Q3_G#@Se5q%N@Sn4~r#1JWLinhFO2AJn$IimbYb5nZW6q zUB3LJNKSbkCz7j$^JY{6_V|On|9Zch_wj#ke4mGeY;}f2Z~Zw;{`I7Ym4nMgVZ<@~ z^38_o+mzus!LbUsef!Hr2alK*p#NPSc|uGLYPB^-%5G1JN-MSG{cxnzs{Ssuv+~a; z#r+Y-@x`itI(PUUc?z8+VrYQ=OF5uIOcu?NzO@zNRUE*`A=7{)RJUY|N(Y9Y5gGH&@E@) z$XNk8EJM|<3w2FcVV{%Uk3`gjT>&PB6UQe5bdD^1Q4**-#JoFX^GE2hXO)PO_K!u- zfae3;oQJr#I8cY^bUEu|tk4?`vGVT!;vu|S0(JNe+uA_gX5qa$P=^(HWuOj)%9Yzb z7I8x=mRwjBWys9LfNHFOj^Uf4EO{J3_yi@QgYXT}Sjj(uVz{YD=H5YaxKi|$Yd#eV zx?P0@R((lQ_E$#(%k3E>}TrML%6AQ%tN9AA5qF1o0mwV*4&(OY` zm52{sj-zPw+0R9s{OmK)8&3xOb68i&o}Y^(o-ZdTkt>%dkt1(c!X+P3B3r(ygj0T| z!~^nAgcB2H%KJVOaa|DY>y#bcJ~vj*{z5#8jrZv6~Op{nN@OO0o zikXvk+0t4227L4P8#p?RweLk7segS@Z{yDP=$_8@(`)69CNVI0`-TqrjXc^UW{RFS zsA46^QO&~6`^hQIVnN?nY&XjA#b7cZ!SN$yc}0iJUsapY@>j>GhJ| zeJ8rh>=rRXj%dMhQ_>+H>G89HVH#-an*7e`m=a?P{T6QuVlF?;~P!c z)X(&9I7s2<3RzXE^|KdoBOd2Fras3P(JJNyCj=qlorlk77CUWL3vT*L-gidC{;l0{ z#IQeiR!mL6bjW@HTNi#Wz#MOw_9!he8n@OZa8nD;l|P;li7{UXm|9gR(`0}1d?-~Z z@!(c@`B{+|cbT6_ITe6yUH+0Y&x-CbPXd(xE08KSJYc z;csFXXY%gfFz3V{y)Z$CJOFj%ZBVQD?j>1sRQ~HX(JQ8f*#4HrRE0SqE6l71##9PZ zlYI3zkvQCn?G>n0a;=ax9UUFGHBzZ~PIIc%3Wk_XnJyn{6aACV;XG6Acs|grxlN39 z2fDRYnQp08Y!rN)L#2mBZ13OO?Jt=6w!vm{ZI_wSNwQ+9$xYKtY0oyKl(1vEzuQ8KJr>bau(R2^g7y1J9KF+mne0X}SsdtggCs|0cgk%NDdS9l{ z?$X?zUS_yeX3eu=;uXXd#4Cwwh}RJ}5UYNxt`_2C6B$b~;#}gZhzp5vKxJH|#Mcs65l0f&6R$BC>s1pe?Brn8t-dM_qQ}7~HG$nS&J9E5MaTyun1~B));zMSLT1F7Zvog~Xx6#l$xgml5N4Sw{M- zf)w~snsL<<-$L9-d@FGaaSvjaVwUhW;&@^;|EVjDILbukA{LZB%O!<1(^{h^ngV#p z?jbHAzMZ&?7{9hNt}5a%Vrvu@5!aG^wOM{V;*+9)99oFgoU1Nt_--oG>@d1$V#mUiK~e3Cax#mO5A9& zo83c-7IH8)R*(AFDAFw-uPPbl~EUMTw*Y>)q8%=<$nBHDL|7 zNiO+K3<_>CZnt64jR{`Q_0_(RCa35 zC3Ha^RLNUmsxosL|E`st7#D7>OL^sjOU-0=`k7SR72wAInj>XufXOW11<5K?3rwx@ zRqVYY!`?femYT90@5z6i5xv}t{q!mi1>k(YHY%YuVnt>f6(2C$tjuk){Uwt<9+RzI zttD&kHuaWl+jarFSyhRtz!!l|mFLC>O<8mAh0=;Jb(N{Nxa4Is1G$u;)H_UjI?1$R zlj|uXRt8eNN84;t!T~bRG5!jj2 zDBppy^-fBbq=TYmavh?(pv$WEseMoGh|z{}yF41B`9$kZxhYnA&K4q_{TRASX9)isz{ zHG;a*{8=qHqXGh?`#ZpXQ2;vwIGfno5zP&-w@?AB4CVOQho~Ga_ERX{J-{rn6(E=F zT<(h3@XiJ0gX>J!3*8z5_*yHN>COrQlGzYoFAT8X7GU?7>^7DJ73Y=!hvERfH-Jls zt(Mpxz@-7aGl0tsmM?bKBDs)9yK70^t-7cpSBv+_h+a6fuu^&@Af{SktB*AVa1*iB zr&@@uCT=6PHbnMOW>Z*phskbcZL`zK!P=tb5L=tl!T@_|fW0Qb-bmb=+LnzrGk{;A z8kfUh^lk?!vdO{PFXR(j+wzit2&#zjCJy7OCAKQ~FtN3ZZV2#iQmjUomBXMhW)7`+ z#7=BAfrHq3GD;)1O5`H8YOsK~FJ-WlxDRnH*sVs8<xw!4e>zY7Gmqc$Cj?SjfK&gS>w~q1kXJw5nB^q;6&#P@XsN(5-23L`dA6ERYO(j zZZkpaNhvUaz=>%E^=fP02^_D1<2!J|2^<9tJl!|Dm-cNZUgFE>t91kgyFS!di?OA< z;2cK{(-OIQpf-`m%UuJtVeY^UpR*AgBEQ`Y)j4au$vi8wxS;StZur#Xmd{M-B)cV9 zsj06ZnLFJ$bGww4nm1OwteyfE*O>vDNVYVaoc^UL<8L>ml|Z&EAEd=iv(Spqd9&$e zace-nT*S5u^|Ii!$dkE)HHW*&X*RAELop@XO8OdGkkR`ry)D!9xAgI4W)2(y`kZ;@ zsbhM8-gSkkcbWQ7W<_N8g$&U;N4v`wmdvV!Dpl2s)4k*p#43dzGH8%Q>iY$17u zB+D_=2_tDYr5k_wXd2>4_8{pX*@t8*$-yMkNRA?zPSQy-o8(-Qi%DAXuP_*M-L+)c zK+;39gk&kn3X=Os){v|v*+8;|q%|Jfh}lB3pf-|rCDmLTPYMUgRFY{Vog`f(b4eDG zEFoD&vW8?W$$F9vBpXRKLCQ}jX&1RuuQ0RbBC_LUQJWdZi83+?hTmv%FL z`_O%sw!qzZwV9VGYzCW$e$yJj@z-2vclvQA{BwwBu*=vaaK4{C3+y4jf@R}Be4*&a zm#9;&5>jNrJO>VCehw-?eSp2y&yEOK{IzBVRrtAJC$W{GTw<$$#eSTrPPxkb6qg}_ zT0d4LX!K)MLbm37jTjm5<4a*q_v0(TEBp)-`F^Z2P)t0TO=0+JTpUdJDO3aveyk#B^J5i3{Mrj^Af5OUG=Q?_ z5YNC1lxBkq0=V=%yV31X<)m;S0#(JW#8VKRkzj$9;2guA?#C*FIet77?D1n&pb9^p z3~oBd?m28K6l~r31f~E}{a7`L%a2v3EcD~c!KHqz3RL6As*g1Jv8r*lp3-xpe5#YA zS_-hLvTQ$AeW1XP7lKRtcs{s>cn+Iy6sVC{wXv$fuh03H7wfv98`iv zE+Nld*PA(>hv<~ePCN|_qB86tR>M%$K-xLJf=$8SGiix#%e8<^YJ{rR@DOL?BuC|~ z^ql<)c;Gjj0bE0DCDjnXEyONlOjSPHU}RlY^?Y?$#O$U56`yHTRvPhi>aW=W_WS_5 zhj=c!tLko6s<9dMKq zTaQ{5#MYBk6>(<@Uqfsot|bmJ+0E)nVVwyz5L*u-jl{^jaWxTJr{^ui)}vZ0vGuIj zMr?hB#I~3PHXnR2``JigJ-OJ4qbR|6V(anRK^#N&RATEZo-|_Xa6FyZdhl@)8_$wz z_RS`R^(f^cwjP~wh^@!-Tw?3%fPCU4%1{BZgSe15nb<>|0#@mt>pi{6p_m-3r`Hl< z>*2MO*m_(qBkoV(D~JaWR}oter!~ZbtnZj=NimoL)Ds&AQqVOJ4!}L@d6WBA+cLc{p#|N zVx@_!*m5AQ>T1>yr-`71?1H$ASR<|?4kAunX@%pew7Xd+QZ!J2&csc`HsV&| z5Mmc?w!09sJIw^bi0#C9DWq{Zh`SP}8I1bxMhYi6*oj@l5yWjP%mgBd<5!v-MVw3i z(ZmJBF~lC?SmF}Js{P|hQAQ5kiK~c>-_pRZmKd+IG_D5X9>h(=c9r^>(pQk0Ry zK;kOmLBzGhgNYl6hY+_A4(D0iDwWO5YHs`5W9#=i1Df=b-7s?Ddv+y74ZV%TH-5+8;DmD zHxXY$+)8{cF}ugCfg)l%F*kN37=I2@1ko17M&r6OaT?h}h@Hft#4h46;#^`oaRG4@ zv4=QXu^Rs+q=+SlGU5c{D&n5R^~8gT8;Qpgw-V!xisrS|tbr_IJMlGOl|D-)1*bh$ zI&lzjHgRX-9AdoR$++@~Lx~HC!-$KC6NpQR$A{7STSba%$f1@Pf1z(&4a7mjO~jpv zTZu!6*}Z0oLy7IgVZ;vN1iMjwtk0wvPYzCEPMba#aS(AXacANJ;t*mFaVT*KaTswK zae|u^RiqeCTu;nt7uiT0Lfk?eO58>qMr_+=)<6PrJn?wqG-5ZWU8a*1A;d1?P~u$T z1mXhX@x;Z%++j9ZDRBsK1#u{Gjmd5{o)q;~1bxg18m$P3TdW9(+la>#+wL<<%u~(q z@x&p-sl=hg=?0_y`Cv0ZwiSRl#|l84Pt4Oy|3b^3xY+V1F17qenf?`)KXHv>)&D|C zQEvrEHv=>hhZ46~_KQq=n`I}q-A^^(H0|-kp~R^cPd4r8;LFwW8=7q@vMq;=PigCRwrSQ})NqDq3zi&{ME#Zgn}x zPF;be5nDf+a}xVZ_jAVp)-gd2+0{{%x~yY>Al$3;Sw1;fPdtUhcPS$->zu$kM<^yc zbwy^K8(8NGrDT8H49+Tuy~H)dmr(kwo)p#O&`A6&vGstHN!&vAt;E(rMQ7qRvRhAR z*13g^?6xwq#-E@yjm4AV9dbw|-c6iNe3Uqw_yOV^;+Kf?iH{H$67M4}CjO^U|4^2a zqJbPLh^G_R5Z4md6TeSvoy3F?H>0=;&|fy#Hqw}#OcH* ziL;5HB+en;L!3|i1#zLtZl;r>m>imjONn15t{{GwxQ4iyxSseE;zr`niCc(2B5pGn z_5TJbtdkP!WX1NlStHg{wso*!os7hj{aOldot#)FEvaPBC%bhx7D}A1?5h1QBZYPH zF_bu)BDkK|I!)_BoJ02Q#QDTe5f>6aM_f#NIdLi2ttOclNl`%#uMii|WBkR$HDoU) zwoXQ@qnvuOTb#5EM)ZsL04ImC8KU<7d^*>5JUp!oX|w~+lRlkrSR4t>a>jT}}H+nzM5^gd$i zJaG_lJlWR}rxI@_wocb35T}#d}zH!NPGiv zG4VX&_$_9EA{DElQc4d0AcqR#xx_WZlGs5JL=o4MeH(EaW!O4#Z6y0fvZqq`Xs}A3 zwUC2#0GUP(F%+PU>yCWjnyaFRnDaSquR z66fAwX5b>?e6rs`TuA&3aWV0Y#HGYLt@YnU33exk3UXLPTtfB~;u^BAAg(8VjkuBc z5OE7}6>%GJjZyzl+MYH`bc`J0iQgp7p$sGtr;>d!aWQT0zama2`|HFm;#Z0DiQP|= z!b6IOh;u2yMB-Ai?;x%qUP2syhgpD;#5H8Uh1f%OCvm-LKmT_NPI5>mhenFPL!3?a z4B{5D7ZK-EhINR z4Sm)a?dg!2m0DEf?ym*wgT>!86|#oYzEzdlJz{uM3Y3K_@;0c2{2TnK2Qp)FA7iDo z{x_XNSDHR}E#V$5YQTz9nvuz&tChNs(YFhsYeLCLXEa`pT(U=7gqJ5A*rUBSJC~)! zHy`g*zolN>_4QX@eZ`jHI~|*bH_Mur?Hg4wjP)RC0RD+aCY8r1NOjGH@#&IpA^6@|_O(~?R=qkt{$a=_N$R@~6kZq7EyzManuK0`1G)o~n zgBu}jkSivd+=)4CMJU7!=8{{V*TP4rOf*m?-bQt+s|nKKFmBljNFzg#DxormeCv5F z!L2HRg`BU1G{3^9_cMJ9Al21K9Lv%Ynm3~cPj>!#Gd?QqG{m9eJ%coBl1=~BtRTMm zj^lS84XWRiip(~Yn}2;&gH1{+KFE)o1!4Vl&P7Y$qcYe6`73idzQld=iO{3PM~xQS zYPDD{6563s!Zny`EeKMD#S0mX+IB*!YcZBu<@Y3{x;}+eeobS|jKrs-m#SuI!tADk z{C5eLP{MFKcMZn=O(k$Gq`G!PssyUAX;JaDKpM@C6;ZKt?bV{MRCQj9*eX>}T$8EJ zb0Dw9{z>U7XdiVLQpM;TZ0gfln!ULJUHFc#zbeZ^M}qGFrK=a4RTY)x$mzCnr_Ci4^lP1{W6ME zM(o$3=2$uDh6%PA{Zg?LIa62T05eLvpRIs$t+JUr&~Rhv%wvy42K(aETy$LCzh9dW ztRgCt$MH88pXTms&DTLI@JClGQI=D}komYTv{+`;XbTdI zn(kwEy^G*xUxz4hHLR1BHCnGsWp5?>+pw#v1=7grzs#v96;hQm8&XwWK4dUtF{D$5 z9MBTGs%RX2&B{2rQI0sEr5F={i*$pF;EyYu3a9)%u*GjQ^(eHx`HmD-exvrQU{jOH z*GNKL_6JPAY)GYFL3}Uq2&1LyH}ydbD(7S`o4<4*Kzoiy08WyZ@|;soWI3slkMP&6Az?xyFJ zuOU^RX(P7XYVs)QeOZg@r=lpKC@TC)rP7_d*(_1GJJmcL2i0Yn>5ez%c(;Ad(Fz*4OxnhlB#l*9EWxv$<)k? zwFM1t<+&BMEiagUrI1fBr{e*c_qrA(2OrepRT-xq)E)>?Ezz2;vB9$WpcXeNztJ4) ztsf&xpI|Ea$t=dbetUAOd#U%bZ2d2KIj&Y48mk&b*+&^$9<>cJyLGKL(6Cj&Hu^%_ zYqi=4m91ak)7J_g<=3cI(RL$WHTY!9%sMS8!cs4WD&J7AtJC7nsne%$mW|H_`B0tK z|D5`VOE|M#s?^8pv|$lexl5s{GSm^TYl$j5Ltoco&zYO>yw{4)208C_ZS1+o2G8Xz z9iMFZ$m?2Cj1?KX0%_o*+R7%6zpjl}5q3SK#VXnFkk-#Ar|P`Xs+>jUFtrL)yPUI6 z@xd!V4{5!787(zILtOYx-D++OzkEn_6|R;q9HKeaak1(1 zpM1IQ4Xt;wie5z+y@Rte_-vqBVGncW#Ak!t|AsbfsFjOrcXC#Uk5&4CJk8<1<2A>Y zjC@l|S!jj1?J3T}o<{GYs3)kLZ@sW|F4);K=qpq@qd#pn*D))e$*|AGCtGfNQ;S<; z<-DYlvz%wo=X?e33;g)+8ffxv&RqCdSxQ9T3RitAAjuU~h*y1NM7{Qe+set{m(ULQ zShWyyz6+h3z=B@ptOq`pPmjOxSqyuLpHK4N_}r$_G1E#=Lxo*LPhr+H)`$-Emdrb* zMX7$a?5H+F$rp}l1JC6*_dU*P@TsTT9b=?(VGG>$Ir{7u=mh>P5HO;HzC@YSr`7C( z2}V3-|FR~H3fNELgLvekx3o3J6rnnOzrQJ5k3Uhj_)L~RzNICen~x@U63l~7f$V6n&a4BNN0fl7{fTkAE|>T!-?f;He%N=YnE!`g|D#r~TxD_ikHu-(N6 zQ^Jn7wW$|dQ^C_0EF$J}_AvCuRMi`4O|+`E!6{gLreO80ve!FWN#=hoBf;Gdw1p^g{E!#>QgTU$W+ z=(}2qs{YsC)do&del_rOswy*%CjP)y(+oTAZ**@PYdf9m+^u}&(D$^25G$VLMr)5# zsJhXxzv-XR#e$XKGntBTBc7_%@oF;`7ex2yd)l~jYiq6)tQenodFnlFxytp72CY|5 zEBYY_+W%ZoY^;#v;&c7&QMjrguR#t_LDYybp4W;loCHsPh=(3*a(14El)=Zf<-Ad@ zJE28|w5aVfu54NKK6Xj2hqa)P{BJZ?f)6uv-n1a;fm+rc*X*LLw>)uN>!(%pW^(OL zEk@c;K-<($rkv3F@idu?Naf-aT6B`Dw;8klzgB9lZ#6mWQ7tAo|641W7)C$4MiGqR z6_0>eZV+D=D_9kRxy!Yfh$aMULJn<^HGVk_lMUs_Y5Mz`ojc@l|FEgwQIh9M)*mmk zjX3ESeKA}nKCH!rRD6fWYJARDfa?h@=pQFFds5jo{^c?6t?ad0;q5Jf;a8m0qIs2( zT&U%q(<1LXp~VHA%m2A@mb6e_D-aQrdl6XviJVSoeC@xcZq=7Kr5SrJ4j1)lL)br5 zc<5a?#*CAff1nK-txlq?>&%bpUSsJ$oY%$wgr|Ff#~wf32)XA2{BhO)d%NoYd%LRH zQT{J~yQ=TeMr~PV^@Wk^#U>4}jZgQLf31DUyKkRnem8|B$hb--nf!qCeybhCdnIOl zhu1wu*{7K5lBuR_nyaZ-sgCwxyyn_C{uUdrNtQiNYf-o#ep(v_k#}0_Z&H-pc^b1p zzT8VH<@}@R%zrVw@IOt8kr)4>CBUob7ns-lV#I~}bCJ9PJ%_KY?N=H#>5 zObDoys5`4ov%>WFw+iDM{%`Gl?k+f{VS&YS8l($y3#12fJ7gK8{cX(NkUb#rc3aj5 zvJLX0^{%gcTGA)KJVzp2> z@q2`NNDs+cNTqLpY=E@mM7|L+7qSVm0y2X&u_j3NCJyIt9;(;{IRUZ+vf&N+d7C!X zebG^k6(-_H12U%vV@udqyav(*j_-w|4V;1&B;kzk5aM;9V6VeJ8Q%mQM*5J&U{`O( z7P4i$0&*71<837K`?R`?-fkScz> zHWq*Kx{MbL!Res7sexiY|5kXg4Xa1M27ISd_y$&$(Wn7%{1`Aw+=4IRTOpe!F!l#Z zUOW*sfEsR_gl`U!frc!c@j~B5(lr?w0hdjI9kO<+nE~|&yt7c#x%g{e;|4E(HFAa* z&ayn#%nKk-BEr;5aWagOIxoY<2@%*X$Egxz%?u=r43^Bnxj!
ytFsBJ!)5*f-~ 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%0AXQUl(`jy4-%&pCWv{ zbYc09D~DViIzM*2acd(tzB_Nh4=<*jy*kCeY4>POCvToNS#O7X`400Q>Ra4yKWmJm z-T%V!&^*>e-ue_){ho{}n^QM)(t5OuF{@{b%%3PgCH(9lkGIc{;81 zz>s4JElHDW|9KR?Lr-6ctWR_Fob-Bb!qDMKuI3-(x15_$Rd7obXu5M|8sBy7&bp~@ zuDgAErK??My`AW-2XmaVjG(0 zu9Gz#PIDZ!zf|O-Dt}s+eroBm152#D`lr|zHTAm3{%&4zVJy}2L|x_nF=lppRnt{NU`7HbC0<5+VJh|u9z!^*+3I@N zY4zI>Z~0C3^^A*+>Gq{Jx74<~Aei$+*mXw2rBR*}{)yCP>^@pF`lrquo4{Thr$~HV z-tkX%)*ZYaX-psJJgzzMSpQ`U|LX1&5ZPzr>4^G$t}Q8>YezpB^ykV;{RXLGSB8XN zo<6kCs){pv_L^(#W277ZE?>LHUii}oMc=q??$fvr9rt8fd-dov>21dR9o`u(yOy%| r^3HbtZcM+e*fJvRR-Vg>@w47#?HKRB&}OD@UHk7db0=c=NdEo{6)LGG delta 47339 zcmeFad0bUh`}e=r+MowSWd=dzfD_I*<9rZJEC-wtr(19eD-+EM8$1Vx!nESFsfA?; zWd)>#Q5_luwL)z`^S+}Qv;k8K(-Q9nexJ4XwH43pbAO-bkKgb0`{UWYj@N!)*R|$x zuXEVteh}{ZGCa@a%t?<+dXG;IwmuK9n-=l`_~CVvLhdnSO2~1@RvY#PA2j5&kRygn zAvr1JDZ_6{$cK>c@hQRcA!{~IGUBP(JUK*#tJz#`gny5JX~>$*QyLi?h7<(8WT#?K5alD^4KBJX>JMTNdeoA9$P-jD? zDto#QYh1_~bNH~tNbudh%rywI(wEKhW2{j>%42w$evS|03-q3%2hY@}i)lQuyhw}` z{HF4+eLnMzEec}!Ho@}P1np8LXN|T2j!TS>{TJ?QScc8LPXDKWk8Y=YS$>RN`=_Bz z@^jx3%<})bXMb^}w&-7f-LtRcFO9jE>#=P{^1JkfZR|c({_d%IPMaQlsb1112FV|4 z6YrB0;2xm=)+Xl0NmiOk*GMy`ojcZuy~>E)%tw27$6yw!3T<#spgXc97X`UPgY}yO zqK4|BEZ=ac3U>QbG|gSKf2xd{nGbRMv<%8a+$>msGoV-7w<0NMeW?3a{aiqo;r$a> z{soPdh6q-cKF-(uIXrSXE3+lVxdn60$Sh@->b1~PWvh;&&_&_yFZC&Hr?s78Wu-pc zeGu`5$eOQ(k6zg}ply<6O6uUQ(A@!HT7>%*{ao8W_#OJ$cK!JSdZ+f$e6c>f{V+aN zU)_EpAE&?3zCWL(pK2d%>%W)fe|z_!Y~9g5Opguh-AeOk`QiThjKJ&o7=3%-i~KKr zLeQ|Fqh&1rgw~<7UW+cR(?Uu=(jN+n==%Y*b!{A%cx&cvYR~f9G8U=|QKvLQ$v4T5<)`U$ zL%QiN4YxUcO7{tVT2u?wFI{^hFL_ZP9X5y;=&Qpf zqK~{0)|)TXzYiN58;{yheVp?l?govQ`gN*IJk{JhM75A=sa5)r@L@bdUl|_FbM-CZ zsc}gI-KP+7CO+{fK-LD=sD?N;d~l4}mu(q?^*_QpbX$f@)U>lrRgv4O2D_EN%63`j z$f;Qyaz-_4!X2OwkBIMy2m`-k(^T7BKn|2+MjYA>9~F6^6>*jRU_^hBG*Dla-l@&M zJ5zFekbW|vJE;f#V5u_(T~1N8(fQU%P1bPsD;ngEv7rPiXBmU^`H`Ki;D@c?vBUn? z!83+k2_8GFMR5L-?$;rH#Q#v99ab7tDR~>JMj2U&9iiXSVF15Hf2u=te z*+%AGjh<|S+<9|+VtWkRE$tkyjODh|TQID`5eMe{WB0dZ`4^F(3L6okI!#Dv=zI-B zHKH^F;dkCVEHO~49IYXqIxWnU(yi$p6DUy+|8)|^Q`n|93}kReV;Z!=lq+Mqzg=K!gb7v%%9Xd zb-IOD>svZ4wV@?#n^@D6`fr`|pkD(~ksaC0T*ii|08HQBc@75Xxz5pks^6Z+oHSSu zi<#pbj%c63__McBRT)`2WRWNd-($`Nsx4JJu3&8Nm9Z9r87idIj=3PX70VBDIQGP( z@sb$Eh7UNv_rxAh)gD?p4 zt1!*U++EwG``d@|Iz7oADT)&H`Swmj6MC?GA9ROI)-*J|o#T=X{^{Y4OTC~sTBph! z0cg6Ryp`*i8oJGG^q1^iLSa#3)flJBicWV<4~h-Zo9vPN2i(PXMa3zXbPQqThU)3{ zUPqR1MCNNo_Nl%ww(GSV%PmLEbga^!i%kpUqunZ7ENQHJe+So$=k&I5-*UHpHZDe- z-mSOm@^Iqmi_Nn6fH?YZ4T)mG4O@|D%qwFVJC}edd~o1nPo!c*sgAw{t&key8r^^z z(vNo;C4PNT5AGV*w{;tq-((DgkkYh~=0ZJlz6}E*vh>7@=qxuUCMF%=ZU>5`Comb$j8@TxmEO3> z2hoO#m zk12ggY9!B+y;;-W@A0d+;IF?KAJ_H+MD|&8bA&6dv%5h*6+e-`q7Ud9!Cm^Ko^SEF zx^J)k&I!Mx_LHyFerVB1qxMzJt6H{dKDD)L^dA^4i=3jw>i;1;^oW{@oFe>mbs(E{ z2|db*DGjYS>jbK3=1l_AS!k&vnYpKxqDmm0n9gR-8CQ~qT?wW&XJ{towHO|LdJ?t> zVKlET#ea~gv&v~=biVKnDxM5LNiEj|0x{E0{xIekh(H|9Q(+TJx;9=`IIOdHkF|*1^PC$I~%`rFYz&C##=wsvl$(Z>ZJ<@UiM zoaDqX|C*UQ&t?&N8XKBf4H(vHn%IJf>(mT~X<{%UZeGqyngtu~9_QF|ZXDaQ6TA~_ z^fdB!^fvwD;lJpnRwav)`S6s9SK@PwH0^f7ZYzmhbN~)CFR26_G%rP}1ktVE*Nghb zbh9dLC@QTIWi9;O*j^ob6?OKJFw1;I|GIAv=d-_g^{3cT|F86?JthAK{i)LSzwS>@ zBBK9K`_og%jCX&!8=1IPe=3HrcYo^tKlP`P{~P`3QAGTI(x2{!|9|UG>ka#V=}&j6 z1ksj1jxrq7b9?aU~H8xy5b-6@;NhLnmdZ~3aW-L253H{uKfprpoc(glKj|tb))GU8T9N)HLdy8PFrzB_T zkW0;SI_3@UNNtEvEg318pBk_(tZ0#-nwxAKk3N`}Qt;5A5>@k$N;n@0t3BXY&2~B$ z)67`ds-ahVz`0#~O4NL%eAS~`&-PAp)3*Yf#YmbQo3Ss8!-8VXM{}3>lzdfe_7hbD zb5elgR7|Y!KBGhFT9f){t4)8{MgeZ(U)mfh~49v+zhUcgc98 z`X*s&NI?KqZE8hSrLyPbKB1~FvqkkK{njspJ5rk{#UKa_SWW()sgxhk*$J*bG>YTOIV-1CwKYuxV98 zLQSW(qC|Ht_9?~aSUdgM8-p;VzNEh~FlI#}yb7@bI~aR)PaN+1J1*@T#tbe|j45wl zf0Lh690TrQa*^T)aE!@MDQ*vrFnPOTtUCM9vhDPwL3W?mME3{!vOyR5=j96rH}R;9 z5$@J%so^nekj*^5su60|&$Gpj)K?AdwCpofR<(L|%ZYXuo@DOr5jbjKfkTx~$p1R5 zdr(mB6S3;qb0c%#C|JJQd!9g_E!@c6`&-5d-lU%!n)lx_^5n2iL$^Rv?D1b!=;MB_+a;X|I4R1Wele_cemvF zAom7+QsNSRQs0v}pZ}!$4ev2}|MTh)BNSaT3Xk|RiE5yjF!s7M3zIwzUzFmI~|EB4m zkLbep>3@yr&&&0`Bm48;jQdmiLnBA>j^&3&dN`k~=Zv29-|F(0(Vc=WVk33AQ8n&< zqrB6Yw|UBcY0kk`b1q?Sf6Uox$}yS~q3`sHEm4nkOpFf3P%XjUr2$)Pbx5!xj+dy~ z_A45yZ*&X@e*u%MntK}1DY69iLhE^nAJY#zqN1mtZt&W%CxYpJN0*x9_V%-v}Ut}qgf(L*MW0Ihpn84Z+!-bDJ~JYb*;W) zoH}%Lk4xr5^nZ?<&x7>=$*cHry(sx2Z>4V^-yeJKL*u*f*817;5&R?Fcfv%zvwX^g zM+A@6zn(ZTXc%VNQE1(2e-^~W3;b`gR>uo0uo}M$%J(gnvLnD|6oA2T@ ziW}Wt{~3FjjqIpeQ}7($D+T93yl520wCmUpZMV+o#$7Y8dpmXjV=)e&I*qy8o!1|o z)DO>URgD>zooX3pd`C7*?X%;Jr;4!B+0(8(ReXln z)B}J@Nga}u&>=}rJOG5ydU*yz%Y2v!D@~(^2^ELx$sZK4Zuu%J*Q$^U2&gJVt<1V( zN~8$vq|ciYH6#-wj_)-aZ00yTe&Z0*&{dhbsnAuTf(%`~shgyiOtCvTcNZd3WndZH z{gic|B-~F}_pzE=TK7plZp_D~e~z!)ZQWP3azAX{C)wOvt$Xh0#wmyCU+?GMY~APh zyEow8X(Sxm#_hBWRc+k&TK5?N?sd2yj1D~yRXG;VN!6HZLa}m z$5@CU-^EO29ItR@)C@~%>%Pf~Gq#<3DefDvR(+-zmgf_sC;6+*2Oi1(ZdV=nDPlv=}}?KQ}Epd<=Xr0rgshp{hnR zhV9lMZ0GVH=e@`I^zuCmY?^h-8ief+0yo-nLiBGJ^;7Eh>HP#~ zEQE1@*InS`=i5bH^wLFbtY9DEFv$p3e>qr8Mn7J!Pt7n6aGe?b1Wx;2hCm$OX51+1 zJL|(1BVxOL6GUvBE*FmzMQijg7q1b#hdymdXN10ONnGG@MyTF@SrRWRU%hMr7b_C=PnOS)Nq&;$mt!BNR(+i5&-mkd z^Hc^oEwg1L>d80F_UR5Ez3|OYz3ish?RcnhdZp~4u!m$0=a=*;nW>^GynJV7Th5Eh z_pIouiD%d7pWZs1AJDt4oXGd;D_3?@s;w($^M}jpSI*=(jU2LSaJ!7IR&!}^LlbiP{u>y8&wAY&tJ*9M%5q@pH}6+BnuB9?{S& zi_Ohw`N?$|f`3*%;oe1DJW#K9-V|Q`_I-D7G-&xC=X8xvEZ@AL3)gq$hUjl?%n+x( zE$_TZ2)?{L_Wlsg$CeLyU=ZiO>PZhq>N&ZmRh4e}l;2yP^xz9z{QR~4)7IDdt9sEk zCok4xANqu+m!Eq`xABeo=Eu8+B~Q4Ni|;hjwO;PzhgiN{O{&TIyN?gW7aqSoK8VlJ zd&)m}LV34>n|wmv`&_Ni;wWQyBvFM->ZR}8ah=E+tN*woi9cW7^QqlFB6eW;XGLcP z|5AT%*DAiRe8_W41Q+GoUwGL^eDhEFa5#_CZ`~a$c$e}=cK@T5>eIix(p^;b!MNz4 zCzSh!@V>@4j8{Xcs*l^&m6hm?tK#&V%U?ldbb587#_uR!=1JE?ePsCuZ|)U7%kM`= z%zG=eJnx+ggZV^#^RLhH?)qQnBXq}k9RKUH&%Yqf9Vq|%{COdgy6MgT4lB1^{0#%Q zTY2-p<9w9t(%ee1r?=oM{rP^+_5gmD58v$x3gSIDpXV7K%xC)WDV~SI!QziMJ+DXb zCwy9c^+vP2bc_6ZBaeC^t0U)pn`d<={)i9H^6)r*H}}c&&*>?hUHD5Pr>CcXSN=_F zkobVWaUSw-=1xAx z^V(>>O7Qlwn}gpZe%tGL*ufWSyv%bZneXO)8(waf?d`5(Ydu91_c>cPMJ2k#i z-giB3=BqvT-N4I5$bvoUyvla831M>^9E;LQ0<*ghjp^8)DdF z`%33j-iddTPfg{sMABe+eky-lXoKa}X}nj|#!;7pO+~P}C<>O-SAH^$ziIfT@-a#t zN#z5TY)<99l~Occ}D(v7aHf(GqQ6wA1R7jdFE&H ze!l*zTe(p!c^$aG7X@%w(n{{T53Rbom2AF`5AX2AGtDv`XDWrAaomdUp9-TKmkP0j z<;&^od4HZObJp_+zCmtZkDT?Am)7&8BB_;JrVOajeH=wZr@F);7VDv3AuP&zOf0lzp<6)+fDp6Zo6S;vozW=YbX!(l-tGyd14>rb}o2~CwVJ>UK6qXJf|P#Q#AgBeCSa$bLyjf6yNN@ z{fiuJI6R*}qVb{fkmOGeZ@&Y37>qR=$5wQGV96oe_vB&5Dr@Sa-7DgPN_wJ{YQbND zqaF3VB<6_%{<6kL%PBi}7oR_$XqI}yn~|PvJ9w24d;5E)?c}SuXxJ|I7h=kbklz<# zX83EnXKE4h-ZpZ3vsAm*^cl=OMYi3=T_UN6=aF4_M&|E&hQEZL&hW`{^~-#l;6r5d z%lrhS=VTfGQ-ooK;cmabzOA<7=Q8+8sMiq8lAa6Y{5jOYV9%4U@!vT2k!}w^!atV_ zEBGLOP`WGl2mF3H_YF*cDW2(XqMwP7N9EH6Jl^y4Tl`e(4rMR?%lFd0WHwyotD(8M zk=2iO0EDycMyZXD^x()ZDw({b8{5Jojb|z=EldIkb zpCiVU`s4fjX8#Od)1Koi=YPPL2UYnRUk<7-1&w&><*^U=XYFEJK}{<3VNW&xS8#pn zt6jNG?mWaF4vzJ^TA$=6#~$YQ2WR+St)R;5Ug~RG zL(c=`k4N~1;2cA*euiLXt*DK>=Rq&5!vo=am|BCkHY- zuDNEY?|zM-mtB30sO_-zvuvnBBbuaEhRp$656i||o3_~2hRp?=-Lj#Yjd0v%*qjUp z6CEsLm5uUd8q;A5wrpqzGeJKyQrOy9wkvgR*cj@-$FiZGjc`S644WOczwmX0(uw*u zeJD2phS34z?=YrA8V+a-RjEb088C0O0)^ckNe<Hc%j^}A&h#v+;}U!J=klg_Ra{0xtm?vs2Z z?;t-q$!`j89*H0JU@L_$-HyGd2aiT>s;gndbA(-ULVBq+E2Wk z|KwS5TCG?cJ&&E`TRA3;*k5>S&aaa_8?oS>*zEbDk#83$;@a~(A)xI|8?YLoW8>D+IEsw@Ja72J$p4np+lt=u-U+;;-*@*l%V`MsFHeU6 zfys1-2euf&13atSi;)_iAom1|FXYZp5hizph)}-Nvo}OUaNgN-C{#@3{6iTOE@pOe z-rFpbPzW_q-!YE4%fa}yLa^d&nG-HNSUQJCz;lR~=ZY4d{gh{nr#eEUx8|K?&lvHG z_$k{HWfu?NnPsAUHcng!&GYk}c&Qi%!~Q{jTXBw(m+3dr^I{j#iSvKUqHZEW)^!z? z{GbQ-x(}c48PZFn3sLVUWgoFlZOZ%NSC)LO#3OMC?;-E#CvL}n=2Sm%1NN&!`U^+D zj4*dhZM)TVA-PZZVZWS<*`39Pxm#KH_ywY7-4}(*XZwqP^5^Bc1aTLlKbIhW;XF~+ z4;0S^^^RAE#M~_=nBAy{d~A?N4jp(0jvsLP(tz(M*aXL=Qz(W!Gf4a?eqJko8Z3J8 z)-r5}_>r%We+?1)c$j==sQ7@Nl$(c%lj2`%^uN!Cdt8YkQSiq-Z;TLIeQf8u8HXLE z>XF)$K2}8d_?BJ7AeZ+hi}~{6c+uJOTe7&_ukFXTHOs;^j!Sje+#K=TF-62^ZM7CU z<|#@Qd3dY|^$eOVR≀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 F{sR^q&!7MR diff --git a/Shared/data/launchers/MTA Server64.exe b/Shared/data/launchers/MTA Server64.exe index daa94651681542d0efdc326f6029c2c0d7e8237d..0914af8aa5c123575023f97058953625d9cc0ad3 100644 GIT binary patch delta 3040 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 delta 4018 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 PB6Sd*uXU?g|84&PW_ine diff --git a/Shared/data/launchers/Multi Theft Auto.exe b/Shared/data/launchers/Multi Theft Auto.exe index 64ecb98eabf2976f16267d2126a5bbbb38de6712..3093964d55db51e65aa08745d494446378c6b8b5 100644 GIT binary patch delta 3171 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 Uyy_UQ5`(}X+#`Rrmmtu800%o&bpQYW delta 4149 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 diff --git a/Shared/data/launchers/wow64_helper.exe b/Shared/data/launchers/wow64_helper.exe index c6fcaeefa150f6c753957346d179d4c00d82c771..38927395bb82cce700877469bdebcb12932a053e 100644 GIT binary patch delta 34685 zcmbrncUV-%_Xm9EURLU|AS^|?EP@3^5XFLmf-Z^*3W^0wY}ipjjSUQ9#FeNSbu{)C zHO7j%c0on3V~ZL!0b3TaV2yp>&)fy|o8SAq|GYdooHA$5%$<79xfhdZRL!YSEy&F1 zcKzCWr+tUER73KG{hRH;CtolYFw*Y6i{K<2v*AC!VN$(DsaE_LIg1!3^)8bWgP(V;@s zPo+>>uoi9W3X4QRXhLLZ3XLR<#DZixo^%uE)TO7$cO)dQu2@Fek2xd=T3xX=M-j0> z5{&BJYeYett2{d&DC=ZE`I4i8aPFKo>v6zt0{KWN8IA@C!U8aVR4a|6ab{}bOoy69 zwYzW-26L5Dd07tri?9IL4K0drAq1^VT`!poKRv=Uq7v!1X>KsP1~wI^Ok1tK_bCs_s=Cxd!?&9FlUE>iW6L)10^X z%GX^0{_SB?f3!IX8ar)Hti~cXCyL%t1Q9Q4Tca8IhqkZLhHRpF5NFF_C(SvND_Li|kMf+JMsKkAIP!s29b7M6D zhTmy{Wlyq#x>|il7Sd@}EyT}z=zgp2WFWP%jv)E8vvn&{pU$=JLT=NW)@{i$>Tc74 z#M8kxF~pp1xAAB?GY>**tEdu`j1 zO#05&lcZA@m5;Kgl54Jf%QZLA_Nu<5CS9*;KniGys?g)!cJwVfUp4D4AGF*ge{I&i zQf*GVw-pwKBD&jdhhN29L5R_v!U7Gd?tTA$eNGq#z2O#ff5uE2tm$m~Xbki@`vGJQ z4Xo)`ywcGPLw>+9vd+)LumE%kn#rAYr($&H3_pO6)kSII zI_5gIjFGN&%C%`?7)`y^4H~BW2E+Ba;imtoR0n*gT*pSSx)WOI54nm1ouaO*d{TqA z9rA*=9Zq+u4-*?Y+R06<+)U>>)m7ab!W%1$(Or$fIy*~`J2iGK*o;=(cq{Y&r*tN@ zac-#Wq2LBrRC0sA(hkmNJcezm8kTeacjPGfRt&SeOxMfdp9fn++Gs6Y;44sor zDigeb#g%e6Nb<4=%U)~#Xncj)fy+yRqtT&%a2wUW1-DHoo00~0u{}GLThz54R>eo=By9$!&+M;;Wuv;M|31?m};=KpNSKtzTG`9EEfd1 z9c|7?Zw!&Ps9k^xH6rGWv@`6YW}1K+bD(1APlGihafPhXIFnm+pQfj{=@;I2yOIA^ z8$GAhS(XRTP`_>@kk0XIZGPsBTx4qOp5H7CN=ltjl0jG1@h1J~u{wQ7H|pj;LTt2@ zZVw2vf6aKui?q5}O{zBJoMAdG@mHH~eTCbMuND79vHmpb?%#-x4`@Lw=(d37H7_jr z-zq&Az2xs`KI((dj>7%-l zB!@Pr7ot3XQ@5yH6u+Cxx6x7ce6X^9suxKf(2{!2_KhJowu>sS3oNfG`nH}2E+MD- zVI-J#t*_BsdTumE>e_qfbijyq^41y)Ft{$-oKD`lc5&L4#S_0*dC}GNJCdICQT^6o zNm|_~%>X_{@?qJxf4>t3@5vZCL%+%|V~csy=JeILB=+cu8#Yy|Qv}ih4cy2jI<3Jk z

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 z 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 PH7BL+N=zui@3#K~eqJf_ From 5b72fb9d3c9e6813cdf56e53d1a1e72958abd3cf Mon Sep 17 00:00:00 2001 From: Jordy Sleeubus Date: Fri, 16 Aug 2024 18:32:47 -0400 Subject: [PATCH 17/39] Add enginePreloadWorldArea function for preloading areas (#3646) --- Client/game_sa/CStreamingSA.cpp | 12 ++++++++++++ Client/game_sa/CStreamingSA.h | 5 +++++ .../logic/lua/CLuaFunctionParseHelpers.cpp | 6 ++++++ .../deathmatch/logic/lua/CLuaFunctionParseHelpers.h | 1 + .../deathmatch/logic/luadefs/CLuaEngineDefs.cpp | 13 +++++++++++++ .../mods/deathmatch/logic/luadefs/CLuaEngineDefs.h | 2 ++ Client/sdk/game/CStreaming.h | 9 +++++++++ 7 files changed, 48 insertions(+) diff --git a/Client/game_sa/CStreamingSA.cpp b/Client/game_sa/CStreamingSA.cpp index b67c6ee937..8f8b93dc91 100644 --- a/Client/game_sa/CStreamingSA.cpp +++ b/Client/game_sa/CStreamingSA.cpp @@ -503,3 +503,15 @@ void CStreamingSA::RemoveBigBuildings() { (reinterpret_cast(0x4093B0))(); } + +void CStreamingSA::LoadScene(const CVector* position) +{ + auto CStreaming_LoadScene = (void(__cdecl*)(const CVector*))FUNC_CStreaming_LoadScene; + CStreaming_LoadScene(position); +} + +void CStreamingSA::LoadSceneCollision(const CVector* position) +{ + auto CStreaming_LoadSceneCollision = (void(__cdecl*)(const CVector*))FUNC_CStreaming_LoadSceneCollision; + CStreaming_LoadSceneCollision(position); +} diff --git a/Client/game_sa/CStreamingSA.h b/Client/game_sa/CStreamingSA.h index f25409a334..5db5aad830 100644 --- a/Client/game_sa/CStreamingSA.h +++ b/Client/game_sa/CStreamingSA.h @@ -20,6 +20,8 @@ #define FUNC_LoadAllRequestedModels 0x40EA10 #define FUNC_CStreaming__HasVehicleUpgradeLoaded 0x407820 #define FUNC_CStreaming_RequestSpecialModel 0x409d10 +#define FUNC_CStreaming_LoadScene 0x40EB70 +#define FUNC_CStreaming_LoadSceneCollision 0x40ED80 struct CArchiveInfo { @@ -77,6 +79,9 @@ class CStreamingSA final : public CStreaming void MakeSpaceFor(std::uint32_t memoryToCleanInBytes) override; std::uint32_t GetMemoryUsed() const override; + void LoadScene(const CVector* position); + void LoadSceneCollision(const CVector* position); + private: void AllocateArchive(); diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp index 8d2d3a891d..64708dea0c 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.cpp @@ -904,6 +904,12 @@ ADD_ENUM(eModelLoadState::LOADSTATE_READING, "reading") ADD_ENUM(eModelLoadState::LOADSTATE_FINISHING, "finishing") IMPLEMENT_ENUM_CLASS_END("model-load-state") +IMPLEMENT_ENUM_CLASS_BEGIN(PreloadAreaOption) +ADD_ENUM(PreloadAreaOption::MODELS, "models") +ADD_ENUM(PreloadAreaOption::COLLISIONS, "collisions") +ADD_ENUM(PreloadAreaOption::ALL, "all") +IMPLEMENT_ENUM_CLASS_END("preload-area-option") + // // CResource from userdata // diff --git a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h index 1b75369d02..e134a73bea 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h +++ b/Client/mods/deathmatch/logic/lua/CLuaFunctionParseHelpers.h @@ -87,6 +87,7 @@ DECLARE_ENUM_CLASS(eFxParticleSystems); DECLARE_ENUM(ePools); DECLARE_ENUM(eWorldProperty); DECLARE_ENUM_CLASS(eModelLoadState); +DECLARE_ENUM_CLASS(PreloadAreaOption); class CRemoteCall; diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp index 530b6e58a3..7ca02230d5 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.cpp @@ -145,6 +145,7 @@ void CLuaEngineDefs::LoadFunctions() {"engineGetPoolDefaultCapacity", ArgumentParser}, {"engineGetPoolUsedCapacity", ArgumentParser}, {"engineSetPoolCapacity", ArgumentParser}, + {"enginePreloadWorldArea", ArgumentParser}, // CLuaCFunctions::AddFunction ( "engineReplaceMatchingAtomics", EngineReplaceMatchingAtomics ); // CLuaCFunctions::AddFunction ( "engineReplaceWheelAtomics", EngineReplaceWheelAtomics ); @@ -2547,3 +2548,15 @@ eModelLoadState CLuaEngineDefs::EngineStreamingGetModelLoadState(std::uint16_t m return g_pGame->GetStreaming()->GetStreamingInfo(modelId)->loadState; } + +void CLuaEngineDefs::EnginePreloadWorldArea(CVector position, std::optional option) +{ + if (!option.has_value()) + option = PreloadAreaOption::ALL; + + if (option == PreloadAreaOption::ALL || option == PreloadAreaOption::MODELS) + g_pGame->GetStreaming()->LoadScene(&position); + + if (option == PreloadAreaOption::ALL || option == PreloadAreaOption::COLLISIONS) + g_pGame->GetStreaming()->LoadSceneCollision(&position); +} diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.h index 8346f6ef0b..a67ecfc68d 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaEngineDefs.h @@ -92,6 +92,8 @@ class CLuaEngineDefs : public CLuaDefs static bool EngineStreamingReleaseModel(lua_State* const luaVM, std::uint16_t modelId, std::optional removeReference); static eModelLoadState EngineStreamingGetModelLoadState(std::uint16_t modelId); + static void EnginePreloadWorldArea(CVector position, std::optional option); + private: static void AddEngineColClass(lua_State* luaVM); static void AddEngineTxdClass(lua_State* luaVM); diff --git a/Client/sdk/game/CStreaming.h b/Client/sdk/game/CStreaming.h index 6eb47f13a6..5cce3c1ffa 100644 --- a/Client/sdk/game/CStreaming.h +++ b/Client/sdk/game/CStreaming.h @@ -37,6 +37,13 @@ enum class eModelLoadState : std::uint32_t LOADSTATE_FINISHING = 4 }; +enum class PreloadAreaOption +{ + MODELS = 0, + COLLISIONS, + ALL +}; + struct CStreamingInfo { uint16_t prevId = (uint16_t)-1; @@ -68,4 +75,6 @@ class CStreaming virtual void MakeSpaceFor(std::uint32_t memoryToCleanInBytes) = 0; virtual std::uint32_t GetMemoryUsed() const = 0; virtual void RemoveBigBuildings() = 0; + virtual void LoadScene(const CVector* position) = 0; + virtual void LoadSceneCollision(const CVector* position) = 0; }; From 1ec1f5be69d3ef99bd2e26fd3d008a7cecd0a5ad Mon Sep 17 00:00:00 2001 From: FileEX Date: Sun, 18 Aug 2024 02:36:37 +0200 Subject: [PATCH 18/39] Add player argument to onVehicleExplode (#3651) --- Server/mods/deathmatch/logic/CGame.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CGame.cpp b/Server/mods/deathmatch/logic/CGame.cpp index 5e170324b5..3745d40404 100644 --- a/Server/mods/deathmatch/logic/CGame.cpp +++ b/Server/mods/deathmatch/logic/CGame.cpp @@ -1633,7 +1633,7 @@ void CGame::AddBuiltInEvents() m_Events.AddEvent("onVehicleStartExit", "player, seat, jacker", NULL, false); m_Events.AddEvent("onVehicleEnter", "player, seat, jacked", NULL, false); m_Events.AddEvent("onVehicleExit", "player, seat, jacker", NULL, false); - m_Events.AddEvent("onVehicleExplode", "", NULL, false); + m_Events.AddEvent("onVehicleExplode", "withExplosion, player", nullptr, false); // Console events m_Events.AddEvent("onConsole", "text", NULL, false); @@ -2745,6 +2745,7 @@ void CGame::Packet_ExplosionSync(CExplosionSyncPacket& Packet) { CLuaArguments arguments; arguments.PushBoolean(!Packet.m_blowVehicleWithoutExplosion); + arguments.PushElement(clientSource); vehicle->CallEvent("onVehicleExplode", arguments); } From bc622e2838ea7c20b7a68f944104d22ebc75b651 Mon Sep 17 00:00:00 2001 From: Dutchman101 Date: Sun, 18 Aug 2024 02:53:14 +0200 Subject: [PATCH 19/39] Revert "Update launchers" for it just to be reintroduced in a few mins (so we can get a single build without it) --- Shared/data/launchers/CEFLauncher.exe | Bin 95112 -> 97664 bytes Shared/data/launchers/MTA Server ARM64.exe | Bin 369544 -> 372096 bytes Shared/data/launchers/MTA Server.exe | Bin 323976 -> 326528 bytes Shared/data/launchers/MTA Server64.exe | Bin 378248 -> 380800 bytes Shared/data/launchers/Multi Theft Auto.exe | Bin 416136 -> 418688 bytes Shared/data/launchers/wow64_helper.exe | Bin 259464 -> 262016 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Shared/data/launchers/CEFLauncher.exe b/Shared/data/launchers/CEFLauncher.exe index 62684b73d0559f7621adb23233750a71f3fa8caa..8c8babb2856edbc9abf36965796cdbdb21712d7a 100644 GIT binary patch delta 3931 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 delta 2949 zcmZveXH?Tk7sm4sy$Tw70-=Z^EeTb63!+jaNN)xRMVf>r2nGTo(xknFB2B7bfq+B= zmacSZOOuWWQdB@dmf{QSx}SE=x#yYRo#)>9c4xx&X`+{C5>){DBvoyK3CBl6F2C2X z-(kaC1BD&44RZxF<5Vl5RL4s9z2+aSgwmXH1r&L#_8Zku$f>Uy%5kh*e$_DaX}$u= zd8*f7e=FsbF>a2oCwGDVUMX|{J0t}Chx0!SngxLYCV*8eMFLQvB5eUF?tmsZTCD0N zfB`2V=!w)d)IjPv<=-XX<2u*lcrFcqp7Q{wU4EZ29~0yx5C90m`|la$0~as{ut zlB7N&X=gH}&ugvBL?>jBrodAQ)QUfxK41oXtf$jo7M2j>Mh@%G0%;@~>C z0Gx;S9ULAhA&w9`F;FoJ{ii_!ejOL!<^{ik_xANA*}DLOgnZ?i(FJ~mEJ)OvbiGkn zb^rDawDt{!BOfK79x|^O1&W&cO7NHYnd6zB1c*)+-;kql2`DjsXthdi3ed@_#(^!j|OWTNkLgVmxIC9*x;aH zc2SAyzHQWXuL^4ypVbd@1}rHH?;2LaL}Y!eXaNLkg)fr3v*dQA z&r(ti@#I+E{|S+8&lFD8r!9cSGm__1OIOy4-Kh%=>8VJr7QjBF(#`hl0Q<|>#}kiX zJnCYVY!hlcq(Dm`iV&Ia9wb%X1l#%y*RMyZ{95dGVmjAO4BX?da5R`)$U?1KV9$R6 z7pO>oFVE$h=gQU-9Jpy7zSgg%*Gx0-P&DG+WoezjTsFqkf7#5{mVH1Vq2{s#4Wlp^ zztjs;ZEzc4H7g3l;?E8+7KS)^>w4K1WOp-u za!M~JY>1|Y!8WCzn@t5YJ3!VGoy8*vfl91@8Se*YOegXyyOq$0EEW=6a6$tbldpr( znjYd(_Xr7fql5>fq#YN}%ahpqN(5o2B-9Pd7mv$RrG_lvwgxQ8<4VhvEmeTsrK5i`=*qT{~B)Pg&w|g$CT!LZE0DhQM0E7FRXni~Ml!|$p^D!Yy3gqjg}q_Oi;WSqMRfnf-u)#D zx$D#<6Hsn!6ITnSV=N6(p8!4JK7&G_PTpHNq@o-OL7{a9)FAY~k)$6C=p(GN+dr;r z=QNFK=DLinZc<&?hV`sl=-AzJV4NpEZJ$fR8`un}mw$%J_k_e86RgGs;;r>wHl~hZdD`{%oUsl&h_5F{9^x^cLMM{~;E| zUj>2nOFfuw4eoOvr^y#CY3|**-6S|vkQi1s@z)-`F-b!*h#GK->|N`$AjojHy=ZHx zi+5Gd8LiQ|Ed@_1`DAoH_)rC-4N_;bmm*9Y_DO+ z^|9{5f)w5jp81gNPwB3)t@5Rd0ygC8RMx<|0&6tnyeX?`&b;Bys%eoWYA@YOlEaGw z!L%w)npL?UvL5*TNP7Qud69tPcFCu`zRQLjh$&VNd^)SxdXEFdP3Gr!s+A6<+;y4K zj|iKOY`u)E&biz!|ARGK!6CZ})>e}Z<(d4;2LZ EKOwIw2mk;8 diff --git a/Shared/data/launchers/MTA Server ARM64.exe b/Shared/data/launchers/MTA Server ARM64.exe index 1dba234e53b9b81c0a8a234818365112ac27c8cb..fcc6ac81c00208c79ebb6a2925336659a9e7ee86 100644 GIT binary patch delta 47339 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≀MK_8U@B}bvju^{N$SrfkBjTr<&F(ikO~ecsax3NxMCm}3 z1J(WA=6!#4k6+s;wj8PEB}EZ%!}mc3~>uzFH17Si+sMEy;v+5Q55P9dk4*+vB4;O8P5pC ziCIYL&xg=0uthL*Ri^F~bm@4qHgr79b9%AB9`?tZWUHlOm`Lg_$1WA)c$H_vQuGs? z#>nL5Vl+>cIm^Wo-d}#dTx5&bFuCX^k%T3^=q6DnVk2d9CI)n7rg%(L#VK&}O&<3O z(FX@3VV-?AiwRu(vP?bvb(Uv_2tR%Fy{-9|a>%XXQ}NO=b;=;^D}_54<(U0uvviqx z&g016ft7e*7Z;bx_g9G`~EneJ0UnSRPiF-s& zTO((lz||t2i^WS-KbNU%#BA(Z(_MOFOuyxi7q(j@(kJ}@Z_8$-`Ok{;OQvpez6Ao$cOGn zee3mj{TB*hEg(Ia_X2Z#icWUS4%3b1-ppWodv6kuN zc-lUP-V)TyOaG1B{(=}Uib6c!z98Nae3E>sRD2RNz@O!xMK!1|#8fuF_uTiQIL-OP za>X9eUpzS5I9Kw#y+;)K@ab~lE8-D6MVx&_wBx+S^JlpzM8}p-y@qvSsSJ7@v;56+ z%j=??$9hJ4L_%w^I?S``U2!9i;&JY^{#l(HTd@U0My%}|v~J~}nW`d_dU?LxC&Dp4 z2g-|;;%`G%q5og!*|Hzg0{=t~Ifyy-Ir;TL@rSs3nwg_N-xGs2?IU z_SioX1#RZuorVP#Wl_7BpjGCeaeB zEUMKq=yMS=`hb^-;n?wAFP%M^x!>^C9boQPWya?sTC|@o*MBa;dmi#~aU9_8XS{WY zYL7gMlzD+6lAiq!58;0LKXlB!#Y?AtKv_7}ap^6Y@r4NKFvF`VijfeDW$s($Ltlu9 z4$Hkl8|EVXoLj!5%=4~gj^*xI@+{1Js_gldnA7cUES~D;4TXO<*D#l#+p78u#_+W~ znq(t$e;{+d6rrM~y_8>yx$S4S3=-HwHh(F?f-1dIE0p!95SjRuNNGQyWq_>yMgYD| z#-fa2e@*jhMjXP8k{=;!qWWq1j}xMEt3nj}sdV}7*CN6f9prJkUBcX9sY)9z3%(Xz zd7OObYqZ=t!yGOfzZN!}#pHY~B5i7;l7Z^JLa3&kD^!oKPOlK^X!RA!;O-TQB4pV& z!X}#%AYZQaIkse>GFLiFbCl;|Q|Cxj1<6V$!08kA*n`bp8lmvP4%&&j>tiLUam z6JjQRK&cn;RdVl1gk7qr%j4f6=se@rw+=y5uLK<~bG}1_g&~eN`m5XiSke($58lmm zcfmbc^6$k)@$+X!&SmlUA|5|CW=z)LjvtpfKZ?#W;s?O@& z$9+uZG>8Ix*&?G)iMW8O7vfXVBx_0jOtKYzajULSl6H~_BuA0Fp5#1|Yf0vjEGAiLN++u&#Tk;~XEUKl zlKn_d#`%T193%&l>`by9$v=NJ{Z5eFM&X|)SxNFML*k3!CQ^j|Vg`&SIf~?sByT0@ zBKbJU-6Ri_{DS09B>zn^ppgnjvX7D-QKB)Vm`rjx$vb7$SrOrUny{GUev-#X){*?3 zWUF&#I-w-vNe(7?9mzD3OG##tEFf8GN+)}p6d#iOhUCvAeW<3RNcJH)iexIuo(3F;6Wt}ke7CV+o|6j!O zz0;SNe)grNEUqru_V)@kXB0AjLWPcB)X8F=@;<^qhzXui5rS59L>GJE}5OnbSS4{ZApQVHA{+2&q z5K&=gTG)gN{(%a1_JW8G>xx_JQl=0(vt%yHP%XF{qv%!4d8OXM9>159=Dp^GAVfE8Q75sj(j9FP^w&CR$q zQYn5(bEwqP`kBpJDOWU!95>@WcR3TX=o0F$nBqu%%JfZrN*=o;y01te zebZP|?-*msT#7rJWCO`sl8Kb2gE)nx#p$nkmC2LwZ_&DyurGP+X06}wwA;*NDyb?O zUpL*o_1PXT{cA_H_IyBQxT$uLEFf7-vXW#i$tF*b&>qm7Wu47%%gu^s6~y=)SVf7>8Txa%40 zzJ<7&_*UXN;$Y$?;*|zt2@ABFB?u%3t0sFACy?DnoI)H#oK74~oJHK7*hL&qTtIxA zVx-T?NU@3>s)>6M*AaIhZXz~zTF}{J%>v*DGsb0gflkB;WLJ}px*Wt|xL4`3R8rio z09QKkS`%3o@g2l2;ya1+i0>jUCiW+;AjS{IjH`yY2c^$yNs&zsjl_2o+v3a;-a{No ztTq7ZN+7=1M3zFVrayJ16Ni|{T*SgGKjuhMSQD)^dO|5c8QERLmBjZE*ATBKt|Ja0 zwnkwNaU2`z9E-3$f;g zc`wK5mrcRmrtFX8Jhiyz!^OJP_%8(4{O97Xoa(M^QrQXoSY_uw@}NrYfT_&PY33EL zLfl%H@+t!tn8}`LVN!87fouOWN6KXX9N5mf$iu@J*8g$!_g+Et&eD>1Rp&^w6PlXR*`aHWhjK zrp$cYlqnBgEv*PEXfthb-dkn{8l9$p#b#4hldQ}&IgK)6WuU@L_j<-2F&z?hQ@S2A zWy&^Frc*}jl=D22l@FNqT&jUOSs$uJOiHDS@b1r*ly7h8qG&8xMw};;@S=*VdaY`o zz#4gTnAVS{%k5#BN4TDnGs3l(oZefS#TiTO%d(d&%UZi)m0A_k2b#5Ht+-jlYGkP^ z+smFyOnVAeKy0l)#aFYFRgl7(o~ykgI8JP>A9Y^#MlWWA%nVx@2qd;L97$|u2y=cs zDXiHv(JO+ec4mZTc^Ml|c5BH`CAJbsBUYVNT?>d+Bd9CACCk1Yv}mVgy0xVVu3283 zO>8yBCNFy=Wz|YL*UP@mi@)k=6m2oH0_2f{#ra-bKy1wlUE7;=WBD^L-eHB8!=tnq z{Jd-~gwygaBdb;XS1oU&o*1j};?Tj7uS06SHxEF z>%90oFaHKFK4UQYoK@mRaA2iLJgBNo;k1cw%dBYG)leaEH_Bi& zv9(!i^s+||bDBBqO#xDdnQSGHNo*&39&sFT1#vua1930n$V4+f>lrAK*qUHdoTRw? z&_rxafZh{cmY07nv6VnEvDL{ciLDx{BetHI26!jnJ#Bf3kNPi2$YIB-D=dos9;cpgi^f7nR2;7RJBtCAGSFwcZTO$!GVpvlW_ztzmJ ziVzX76k-*A7C4L8%1|D$RltfCoTLuAYFa4N7;0?6ssy%`S87O=Frft-8ECi;_TJS8j0c>cYmnmITCgfmK?_zHs30EC zCNQUJ!`c=K6#-jiWoU zQlugRRmJu!s|IEo5vH_YWzTHEDucN#cpA8@1*-zpw&3yLz|~g#&YA2wC=xC!W}?ja zI;RDzCULc3)hUZx@Dy-$3swbcXu+z60@qjx&Sa{_6D)S3e5#YASqiYKvg{VD`aod| zo(ryQ!8d{%h-b1JjRM(jztV)NNkWNLlc@rABpzZ7i})4}DnXUYmRADVXCs42@~PQ) zR8}KS6*iqr$ta1cye#60XiHTVmlqcjs}ZVNql`F(-C*Rc`m%kV(f#VYxWQy6vogTe znuWDEk~kH~tJ+T>R+V!D*g-rGrBtn-PJ9FP*K99)ftS6^;8E(=t+Np1O6^)DuB8AL zHxV0^2mg+@d-mU`-S6)#+i2!oK&h?@V$DQWN$f*hO>8}4)e>7zP<6!CLuv!Djlwq) z`IRJ^~@JfY<-KAKx{tnVD?KSMKC4c zAPyl;A+{c?Q;EaKo#`>BmffQrOA(7ZY z>>#%0q!eOft%6S~v6@WOl}4<_wz|@Z)x@W+OyWsK{X>yO3blNzE1OtN7V2^ltJzLn zxx{Mht1FK<)kIc6tY&6)6%x-ekrfj=)zq)9GEyuvkyTg@#C7e=Cg3y?RFYi~*AU}X zhQ?J#>_eQk%nXlL9vWApX?L<#q+s`(4tO`BaRn0N{lms(C-x(D(T2MXaRS)`h#kaj ziBpN&5vLoB`fpE)EOH1Wb`b{=$5RRL_8#L(Ar2wVBmYq1LgFyuGU9OJO2w-EBS}$1 z4jqW=h@*%biKB_x17?kNBn~9*L~JMSOq@WB_sHPDwhlDI!{Jn=x{ zMB>53DY;HFf+3_xBZr~HnZ(10vxyUlbBTu&7Z8siE+!sHTtPgBxY|jIv81Rab`UoZ zClNOhCllMYm<1S5Y$u*ToIrdXv4eObu``tvlSq+Hd_8d%@eRZ-;>pB$#8Zh2iKh{l z5vLMY664KF>TWA1jK5S; z_|O(5k;Zjv;&ih65oZzm6T655i1Ua8i3^ECh|7pW6|3=INs4fCs3DFbt|RV5+(g`m z*tXTIk&(o9;xWVt#L2`C;#V&X_*f8u!Jk;I9_Jl+hSVudG8v%(W+8jSYmearyaRsiB$D*$l;F;6i4 zi!FcR3d^6k+VUT4`qx_i#0`p7|MMqBlNBJ*3}Ac2tO0-GNMb(9w8vX^;zY~tFzqRp zojA?n@uoc!JVh}j)L)=w3!XHe4{{$#Hug`M~d;soNo#17&@lbtM;6pxTYI`JpOS;YS&b`c*V z&Lb`%E+l?~xQzH9aV7Cr2BS@DNMSu6)DeG30UC+-5wo3UjZ_m`4?xxvR3O=(BzrvZ zEyUInTdZQ$ryS(4#B!jgY}MTAN+mmW1(r^1{cbLc*kih1J_fLk33AD9ZzMl#_$4 z(5&JYiLD2mB;rW2ZzZ-4Dq0iAlihkkv(7DSWKSgfv$UqM6jFRd4r#=@i8F~05oZ%W zN}NmlCUF7rd&I@WuM$@f|I4U! zmiS}h2I6|+CgLxNZO@oB@C|V!@#n?v7NCB*;Y(_JqbuyAd_FE~u zb#h{zw4{+elk7H%-=8>B*;V^bCWW06=trDQ5!_B3ND;Il&Lw+3aRKpj#Kpuf5myjT zA+82H)g<#eDQd~#ZQ?@8&=}$dvgZ<8CnMHTP7~R!P8~@Z4j_Nqvu2Z62P5&D>6y|x zD~cqCwG<$mBA|^BizoZbWKSfv4o2+c-TCon6Hfr#WZW$=xZXYAp08PM6wSc zt|ognv5V{@h-=Bdf!OJw32OMO;jL2XO`QY~qwnW(@@^Rzszl93Cf!TH;y64aAZ-l_CfsZX)|b z#Oah_>%`UeoSEQyvZqn_P_Rm$MUsPc0GUn>VH6;q>~n|{i3^BRh_?}^5$`0zdBZn+iiEkq=H2hKjok)>F4vUD> zD8V5Xll@*|>q}BQaVFUp6Bkp4IumD;J)JmJ#jo0bFe!4$;c4PR;(Lf2D8e4Z6=YvQ zTur=+xRzM6!V{k$ZUP(6lzF7E6`NIFL>x){3UNGfDRCn4b;K#2sx6upIMVtbZwlzu z2-)_I#KX;fAs2L!U%aFZbSAuruZ0kg@+tVijH3)v`5c5)ny(;HHg*Bh2QuJC!F(aR zLbie&1!;ue3BXl2#!S;bma*30bVwWI8RAyVZp%R-rm|GI^<}N?K$VFa%EV+UKsscT z9iecIiZwHx2B{Ltj+KXB)}oxM5}4nWN+@elcsn|?@=c>oT}d3y5~Auiq6Uw*{%#{a zD(wWsp?udOd>$%HT`O2tWc}u&_aE}9-Vl$>raxo;M%yt9-^<~H3Uab-SbD1gO{Rin zfs0rw{=9>+`eXiwat|3Tw$*B}bR_hIN(t8{)TWXtkgB%rkS(vWVP*kF(Y$ppr1IMV zsXW&XrwQj?Ok66W|CVqbCEPNBL~PwuxPy@D^1(huCD0X8CGaPtx_q!0DnFUJR|_@j zyb`gMDiyASROhvjv-+5xd64Sb4XI*`$0k$xZbQ|mIpI35+CX+; zH0oSMl*keS>uWF;Hh*_AVKLeOx}Hi`EjFsURyy?uVj(=${u{zxD?z*emA0_zegP#s z7*b_HWkmJ-EYf!zkZP7Bg|@}jkg9~cu}f6}Y9UpCSs2!8sB9Z-`r}RfX5&FBzg@(; z2g^0DX#K8NJvp^ShAuQHuPawPrE8yV>N>Hk!1|5Hxlvg3U>Cxwin0A5e|kmhYz*r% z(w#xe{D~crx?0oFbE9G&K*q0CF?B8SVYP&+AXQEq{;#7guO{r=l)iGlS+2AN2FJ0l zSYBX9=3u+=sdpd6AnI-mwZJxJM&FhtqinC1fE#PN-b~qcgCb0(kSdN^NEOGZ$!6;pKq@{ck0OUgqo|y;$IM-ieyVbo z1y)yOFEh%(7PdmlwaR8nZ^MlxGFMJd)@5$fp{pyurbXpfCY$NCVyT#z8B_DM5fph^3EeCe=R2uWNA=#$%W$yNv}JtCJNzj5z`W zj2b-7|3obeFiT!J|35DU-^5{!+%?UWSnklafvN*p?H^ zQyy(jlu@T$&H8h}t#CEM;Ywd4=T&H(la$@w&9n#pq#|Xk52VWJWJsmC6;hRR8>FhN z-H>X1{t&W8zEPn?w^PxiA{uoqb;=VJTAa}xU8H+E$1vdy<*IA`X*6pYY{lzMJqjII zzd25o-{=N)l%@F7W|j&cHT`NK)d0Id+)+1qpwUp(8@eI}m6yQon$rwH|BlDej|!Lu zsjj8O;YPqK2|K!*g;?M++%O)p?DZRuwWfvoat5==&-B7#hRwB#Kj1!76UX|PGpGuo za#TnGZbgZe6t=~a}CkC+kfz@Asx9GHfBLZy}@ zBMpRAOHyB>Ce5y-(q%o&#yw6mYv#SO^i3_Qo3bUqrmi}dAy{;a)=7sgPo8>Hiyp09 z^C+4f6io%mQEI)#wH8wKnOx!m;)62jEiI(GilUODID>A}^7?M0S)#~I^6s~^p+=W= z^)z#)`~rVB{S$wehu_jV4^WG50ZJP0)pTVo!l-a{JJi2;LyGM1wl+4*8c(%PVW)`C zcvS8gx$0 zYwT_5-ls*3YpONJy6a1137=Fd#? zm(|r1IIG2{LQbmEdR$iDdp&0b_*BT8Dy@HzRqps3ICJ1rA*-siXqBCBs|<1)!v=H(H%5IEq`GW3%f$z1j!h+>!I`Gd z+mPx?Mo$^7dJ4^}Rx4qH3;=b)W~u2KCTF6ZnxJ~sHPtJf8u zR_4?u{SIpVjhc)nG@bKJM;DLX*aL5dQBIVrOoE_Z>9UH`i8)T=A&%SGqQd4ph;cN*;@En zc{7WDb*m&I4hKHFW$gP}msl0Os)t=qaJK15^b8s>dAP4pESJ5n_3vlp;?Et3{i!P{ z^x_HjmYZU8Y{~uaYjJa}FaghVwgaDS6!mD8^Q~8xt`7FR7tmLzbVh&LXs%;cJjY@G z4xepu^aonRN-O8~7ddOd$IAHy+_T+R_*xBg9QHbVtSm*NZ?$FUTV6?CDC5j$ud0Qr z542~UR!-i2ld});vFbVON*B63f#tu2I>yKH>39vFGqBs=zTy*m4W9t`%rfJNGWzQ% zdT_I*v08Mf!!qcI7NYuD@F8ugl8X;%y)Ngs@e|HcYB&pMR85Wl|GAOQ)h!V4E&41z ziR5#w5uJYmWx^+&e4>na%>HFf8i^-4TZ#|jk!=oZD~%~ab^7ktDBSM9P``h3mMfn+ ztVLg*kB+wzEU>j;ugXJ*TTE`d+X>c)&#Th!h!$;Aqeaaf~;4k za^`y4`C~0SN)H6Lre#wouF_~EIIPBYY+Y=#|i4c&*v z+D>OmTa5Mln~$|9KP#RkMr)5ysJc=AYxK`uxq{iZ2$oB=btfL>)TwSg78hh|>L=QW z%WG?+6fCkpumy7aC)yH~>%TwII(M?7?~9=7Y|RXcKm9?H3oiG!sWn<>734O^o+^kM zF~;Ls&efCPQfzPv@u@?l7RuLZv?ZM?yCGVys|L@<>MD=}KE;+P^-0agui|^0n&Ojc z=-dfD(gn55I;sVVx~_7=QLQ`AlR3xW@7e)Fr7~3akjG#Uk@521$|2EkXk*1+_=6_< zKdpuNR{UT^EN?xgg~p`*mrSuAHR&wU!h#Zh)K~%nrr~3|9DzF_K-Lr?0}aQtK)hu8 z=us`?a)Q|iYb1ENBt2ppZZ!+r@?R^1weTPNq!#AagtYSTxl;PnXOTwPr&?f4!heat z(O^UnZfo!kA9@_+bXZ?^wn*GcyBI-@yk05W<#N(Sk@}>7C*zZfPc6<;Z<2o<*Ln|8$K%#D{%3WsvD`CPbeYgq3cT~Eg>Hjf z_)q+C*#CV8?EifStl3fifBFvCF8>?vfb~qO)oyD2dYy*1&}VvzzSBPA9S%-3zfu!4 zFe=BHykEM1(Dw04&-5Sh;>i%l1XEpkohbunYwA6(Lp&JE={8;nMM_p!J41_BU-B1XM~?{iaQ{!gTyyh4BpdUHgRq-LvI%nAQGA&fgk=fR4p|7f77|MhtA>G(in zk@!`E;#A1dka>`SAINW-wCkMthcuQQjlVgAOzX(lLUxi@Ko)}|JL9+n2eVl*I2r+` z*l|vD0Qrc;k;Z;hNF4HoSN#@4=7JNuGB%ej=6R6Q@&7)qBdL~1#cKVY0BP%vO)31c zy5nn`8bnx){ep6cj5iG~$iCn*$Rx-{NEI*<2WR!{JD!L|U-{=j_Cdz#AXNb)dt<3k z1%W({j8{UYzK0gX_e|@MAl@AdKV%G2#UI$u$?zAri#gsgYsf;#*Z2=2GXXX9KAIL^ z$5cSthhiUth}bZE$%hi>;;Xer$iPu(TIe&!;3N?>5a>WxL5;hTalorGG9E|M(7Q<1 zLZ*V_uS3&ArZ^{>Il)_MQKFL^Z>KdR-b!oa5O2a|8LXZ+LH0q3%C1LW!#5Flb1rK@ z1bI`?=O7)^kT5bDISWmWjHyNPPh>3bMl>xlRJ#CO1%8PO!RWgMkh>tAO}JUeDp}e; z@K=6Nutg{#WG!S8OX88~j7@>egq#jp0oe`yb&wCSaXc%7v3J-3uC{Wcq0fVKvk7=T zt{FZZ@&e+sFJ&wib_b*ip9$&nAr5;Zmz#!k$P|p8T#}8DIjoZ9-h?WHJ~ETBf3k5R zVTGAcG2}92An;~WW^Ks&Hy6G#Bp|;JLWTU{zdg zu9Sn?=opTWO5a2hufIbLjN`?S_aZ~JB-K7yu>sPvGTc)MgJiNNd`K zw!<2c`J5`*0bU0=0gmy{D^3=LkU@N+R`vph6%q(6!Ff4k4W#O{@ug@wgwKOi!>x>D z4P;-~*^8!Br^%a9)6NRqOn@W4kTq%|6>>PZ7}AA^Y9M|20baXDWndgneMwEFNxT|z z5@h1bs*hChT*&EcKTj*eJaP;(+bcM&hfKhc_UG)7W_uMA7#6+MH*gdWS^O6Mu#+Ej z@|w4C{tbnC98e{wgG@od+A1}%jN^s-Q9@)S_aI|?kmJPnP}Q)fy|3nngS-}UC1l=Ev6OY_j!-7* z4tCBE&eOLk9Sd*FhtgIuhCeB4Ju)D^M{cB}nm_~MRo=%&#BCU^2XLJL#o%c)sntUx zrH?48vy4^A$Qw{nt!U@ z8Y^;$sP0QsdUD|aEI@;XpRtmM5@p!aXp&OeQ($BZIF^~nxH}msA4yXW(S%|bntF|< z3m8Qc6HW_-G?c!SZV|#8%^b=_jiymG&{pso29LxsMvB~MoWINjjHRj0sA};zBuq~* zQI9v$;7(I~WXNhFO>sd_Y#&IGF#~uFHz=G!6Z^mtO+^6^-r|L2Jy4DPgeFil9c#$l zV0Z$(Y03enI1S!ute2=W5jhJ(aFn(7Y9m(tXCM34tz?H)9M2C#k^ z-KNFDU^EGd2TDQpa+(^Thth&gkSXjTlz|4Y5ENnGp>0?O<&bqNY096eWURtShCOIm z8V-)qWsD$#ZX3^a;6fy5wuYu8paEQjHuH=$QVsg!LMjR?tvIg+$#BYx#uf@>30Ms3 zz(eRYfw45@g(fUqi<&~XPzsrHXYk%Q3jPT)3NMnQh^4}d@!Ar`d+gfAZ@h4>ZMemY z=-O<*a2?%dpv0gL;&bCkd`vh%GA!4F^N4aKkQ?ZzM38hxyzj0pK7RvE3GSgu(d3;# zULtDpo(ye*gZ0z|mI16s4)LK29`zj&MJJ%;_tEwsA1us7Nx(epNk~9SO`61=5rb!uAzn5OQ|-ZO z0@ov4a+2tZj;aCoAU+ox5JYFhAQ@}&z-p3?7X6`c9G5i)sPKf_lHo@ z^T+_?%JWc$CL9QhX{sDcMN|o?8Vn-fYm|il2dPpFLZB4!GA^JSfdM*lzLfU72(5>V zmoBy`BVM{lky&$Io9scGl^VNkAV_MUuwCYsL8p)rN>+}l#R0#Pn9$2CJs5@?23#Rk ztYdVb80Ym>#+q=y3WG!}TQzCRi?rD_no7WV-F2EOLb&t>3D;4TU=6~>HLwGOwIp5C zWIF?H8D&`w4oElR*U^|7!7$uzy8%W!!ZKP7l6k)HE@3HM2__*SPd$xEWEouplIwJT zl8G+nkoVB$xM3kk42mWre3?yvGv#c>-0EYULE;r2^%wRZ$N#!$m!oei-XQr)x%Rz2EZajo(>uze$7P5LML-9e~Fa|TI zGFp!9pajUCBbYYJngO~&HgjNP=--!Ui35ZF?M~-``ygjH!bp(_BjIxas$CeW8mx3B z30`89*z@shK-0J}WIE0mz)i@QWGpse5H26jPy;|K4|q7@Iz1SNCK63xsGm^~DQG}A zcQW3moepKuO=fU8I^|T91Q&WvW2h9u=}cQMz*|?_X2n8p26mzp8i=+-f`K5u)=LG< zKuuAX838tq$YfLrK0tUHHjUoFROk7kK#9Fn8r|KK9L5d;X3hd=nyFR6$JyOdzdzZR|9&{vdJv*UecB@nIKj& z7&*4LD#?Wz(C$V&!5n}RLC!lwN`8q>JIqia>?WXR{a=a$@>hxgED{kP|N2WTium{w62E&w z@+SsD@+SsD;?GY=e9Q@nk2xXnXb!|`m)UcMN-V_{= zk|mqJjq)&%ixY4#{$zn6_qmklv)_|CjQNm9c-B8t);Kv(^25YueL0S*?Ia-l- zh{fL0$%0+b$%6B7o_Rz7O_5)O!hAJnE6a&;Riv-xxRQf{o2xl7tnqS9nkGY2sL^RE zH8mQ&re4Fa_3Bh5+7k>{l4P+aI7ZkeXaQ01u#RXSCrsz#+()vFAuCKVQ!PH;1=GI^Q&OhKkF z(>+shPr}Ji@M1Y87PyKB{Xv#VG_w=j6NLzuIn#wlI=4SJ<`PqVOVYYj= zXSOIiAUiNyoGr;tJjp*LI3-kgNjbiXNs*kXYyp}{u`80}HBoTP{g~(&mCMcLB2=z%2Op$1*ig5VwFTCRVAwADpG-p9cwws z3JWR6-c$m8Ld_KXh~~_qX-XlA$QdgtrQ8^B|0IHLB~mUT4Q29WV7ey=FYS!qfB-RLeOG`-8zn+EHf-= zOE1;LF_BF>hu#Q$GkpBzv#HO_-%P0Jl0NmHiU-ZgWUGOKWR8y@nKe?$BA-z2uyo92 ztc2p{Ea?1ix-^GF31ki(1?DC!f3}Gw<3G#6QqYYEW|kf1E{zh0hOdZ@2zTHLx{yFq zOH;p);4oQ4c(6lXfh`H@VA;bbbXjCXRK)UV-o%JVNkrsQ^3fNEp9O=-d6p&bzvqKP zcymG`LzjmxYm3G6i-?F8^zGHz!9n2cFw#-rFw)6+ey`4s?V=+Q1snd8Ly@;b|GoP; z5?M0c|Gy=nITS0I?uvS&J21&;h^ODyACEkDsp(4hEuU7=GaAC(P0xi5ULxWZfS=~>Y=MBDLKDbyD9=Xw05c#I^Tyo{objB)f9(}#IsKgHefuwww_K}!*y)`kKmG20!@->{ef6l@ z@Lr4T3Pm>;TW5tnGIiotiPFDh&AvK&vuJYm7cYiIQ}pqqtAeD;wl?jw?H;AyxTqV*`igSYWJ>rcUa(0BG|EK2)qT;l%C2dn;zx|0`gXDGr@rsk{TMyO`jK{(4S%XM{J@2mQ7Z!W z54P67TsYP&ATa3AyzVy+$DX8X2?8(ArnG-qtD4-$N;S`xZq`?j%~$+U z$%5_YARC)hI^FQ{S@8%>GvvOB+j0}Cmf{ET|99U33sp% za7jRiPUfCV!=qrRLZbdRjP>8J0fPSj+Ea77XAd!Ak60EG866WQa}SFMhOUnY3V~TV z_Fs)Qnya0}T>S!bm4r{?o?7#CsDGyAg10YtCu!#zrrQ7HRO_-#$x4^2H;M!F+mv}X zEuIg2e4RZw?$*30fq5Utlnt(?;@>a&J_*nX*#J#^|Zcspw^hkFv z-)SpLckQYkI_!<@LCx7+2QqTc#isqBx8^Z%vT4HUwu8f>lD=HFx62ydI(yL@p^wX$ zzf%UAjw^k)if!v#P@un&*W>lhYTYS6zl8H+lcx^rB*|~s7SsKL$-NIx1% zclT~rWT$Yxb^rF;_sg9YtK=3-=RG zW{2NRl|OKNvDZ4gXu9NdL3-ec{>koR<>~fiabAx+C2`VCuTLF&xK}MdZ13Is7n_q6 z7xkY`&xp^GZal*=W6OreS^A_c`t9K&PO8RaSL*TLXI% zjrH&i1v%lPzMb#AaNj_dw1fIn+=uw{b z-TvNrwOJQa(mDkdC+Jf*9UoEkyUSL)!u8zPS1k|k44XSj!sy=5eQtGldc@@PQTxyD z7+vMjY<+%s>}+X7B-X--1PiXS%~Yk1gLltYD z%!wbVkGiy^w5(ToiCi~w)?M3Xy}NAh)Kf+AmE1AU^cSkLrk0l+=fn*Pp5@(|GVr%= z2Mm{cbW$$09PIu$;^pAZQC{hNBByLw9$qr!P3XZs-ST_=^X%iIP0XkI%rlciOy^(v zynWT3yaOAyJ@=l{n6DbyyFO5Tnr#x_UvtuV;^(9x=cay?vp$#oY5QhZ`HPD&-pbJj z1nh0uEsX`~>o_GQogI>GE(nrs&NDPESgA-%;sjVQ|KA3km2<*m2TSf8+sQ6|8+a`w zdwSV&rs_hxb@`^);-Q@^N9kuT7W^Npz)q$UxycT*JIWJVS4Rx3eYfVH=EXCd zu2{N!T(>srs4k^`Tw?jkg|i}-(aWCCDtcxaqdJ&ZdV2mTr}M7{Wh~$Hs6@u~9myYl zeaduvsQG4&>`A`w)>$oqlOJcKs-3H^ZCv%_Z1Sdy&q5krjgR;`hqKMbDzyL8g>PL1 z^1-feJ9m3@CCbq1mv3mPdp>^FoDP?zW%CQJY#-j+V#dYl#^-&NPOf&X^^Y|p>Kl%( zoj+si%%aAl^&4APJRX?mF_imcwDpbSyIRYdx=SvkIKPl_g|9k3Po2HylXc8>f9H{V zhXt)VeD{{QZ?`dT<8$(ttz5pdtgHH)qrNV`vf66&s8*ZSy0LeM_tgFFWBbP=ix0<+ zh^C%#m{v6>d~eFUUniIUnzY|zuG@sIpU^B2c?f)o0b-R z@kK?&ufmm|m&7*@EgJ9Qcz4uKxeEVO&U)9I%lfY7KXFr3Ze6qKj>kGfLcy4ps|D4C zt8Fwx2TyR5F{T~V3F8`@lC8Qr3NXBkavX(8tb_B&f{xobW4oLGD=U1Joaustqt-{} zs}76L&2!A(_~1u#`CoTORgd#??0Mzen!@9Pm$5-x9-XkbaB4-^?!;*>auY?hl58nHyZyV4v7c=3TqV2QVX->$L&n%!L;74;!IO23aJDG; zI_QY6F5Y{nwbPKp_6Zq^$_e-9HJhFMF>dbeF9)+$em^{b_kHw+^zXCjURV{ zxu?m{VGg&1vV*hU$F%$%du;K^Yx`v9<6{B<-A*NRl(Oa75qC^9VQKps_VCY(u}5FyE~n;S@?16 zxVd#30}p7zLPBNX<#Oj<>m5JXEgEe;k5?>suwsC_>Seyuo<;GpewB|?;-A?sn=HC? zx95DH3tjhj3BtCP+myq%2k$-3^5EWx&}BrQbgSD=TO3oQyjXl|$KWcv&$Sk_J#KaK zJe@6aS^JBuVBFd^7&ppNBy-X$T#}eqhV*vH>|I}s(oAgGF8)9>>g{`g(j_qx8j>v-?iecx*y z_d182=abmtH)BgY?u6%igkAaW`lZ$<=EZeaE(XWEc+-_lhP?60nUFIsy?^OaL$15h zWyl*z-gIRr!|(bl7eHS5?)6LSAY-TBWW*CYef^axTXZ0Tt^HuIemx&DyrD&7 zIZ&sb(wIxxbAwpx63&=2h&kiIw*<4|0g$!9Y;FjIew-(9kA9ku<%L*X>F1dTVG{ z-{*tb_9Tb)fniLxd8fhn=dG_-)M`ur`RA<%cm1g`?_fQ-%XmIVU(&@9R373Ts26qV z&z<_NE=fFHKiVZVD7lL_TtC|-X?|ZT>CC@LIxpP&C+vUTT4%&=W~ZySErLa>vKyS& z&3ne5i|pRk2>t4?gfVNQ*>=OFJi_}eMbpt+`#@#X%zUJ`$vW)lY}@&ghcHwx7{hWt3o5xs!su`{7Z{S(U9Q*(;c5c77#mZ`PtKmF>v{3SAWA z_34*~&kP@6Wu-30TZZ_eWZ7pTNUseK>)X>ZCC7WW|6MM5toJ_sbolRlp8jLkVSKsX zvs)scq-S&+%LnW0x=rIL`hjl4c$$8yTcWMoUbg*_ zDpZpeS6LPiVyAvQB8p4>n~47W4m~{bF8upoWKu*Ta*&te+|`6|g7afb^&^qW`a~E&Yd2AG~(_>;s^4{;hbFvJ_2l?eQ8Zki9^W&xpA{+B*T)Z2+K$|wUF?=NbA)~@ zzMrN3qnDL~5qe_xgsA2b-Xt3`suC+7;kET)yY#eP(VYziMb%`5$s2<(iIHQ@2gw`r zw?X(}{d9LLgNZL#;i)two9Zqy;?K*_=OhewKlPsu*`e{{ZJ1BenCAhev37eG*6w1p z6VynI2A|bniuL1^%&2m=pXdR;-mELJ+J3+`nH}kV>G0EP_WZs9UXIXA9wEJr*D7% zFa31SDBi9I_qv9EuCMF0!iIio+rrxR>Yw$}BW#$IY(3bVV#Y@2V(7%{MM(>|OaCY- zG2~a&{~1kGj@185S}3uCzTgC{RSzLjJ8Hc=Rzfy*My< z2kKr&cT{GEzQ>Wsv-P8n#IBi$PxbMREbfhL*MD)0akpXdVeI0Qzs|uzLyL`3lg(qj zzoI?PXndd=Lis7q14*2%+lDci+tt}VwLjY)gtp9QZDSPoLe#mj&UPpCMtDBf7*dFQ z4DaMQp^}ZEl|YV(w|9=jDf34N+px0+|h?Rhw1Mo59EL7?a8TqPmZN4meyDFt$+2f%*BL7|gv+p3A8i*=hJ+0p;zE@w_ZyGu#6N0j;KEzUt^lyeqzLX>fpYxOn#6M3nAcmE_TS-bFWv3|6FZ|>HA#QjZr zcxvzP>kzgH%NL65ov2Spoi;E$$n0mB^o>QOC&@&T!6f5?^ygB45usi5#|NZ@e};HI z?C6N|r1bLsr5_(Kt$RH*uR!zXt*`F-bq?Qk7K2;uXkOBX4}2NZ|BnNQx!wO(Gm~ai zwyI=RxtOIYU8o!uGr@=W+QMuv{%4vkS2(mc+a#%m|2Ua>)VPW*<(ozt7O7YNUU z)a2Tm=PnK2m7l_HPQ9cyBmYvC;hw=VRJ=x9y*(3(5Kn=qo#4!3?Q@rgxOdr^XF`4? zRzW*Ez>%Qpt@pu6t)^e1RWdgVuM-PG#~&T?EE0WucIK{M(K?S|+PefJq8h_k2)3_0 z$TM4oozJ4ScG`sz!P&l>REC)|qh->q8L8Yhyuh+1xK+%kRSG?nUl@!#J4*zfqV5mtiPIv8ZDz4tFQE zxAxDDxfK|eD!!$d%Uzhi)e;&QXK@7LRFii-5>u1+d`#R`h+G9wyOpEXT#fB-G|kl` zP&2Qqjz;tJ{5jgLs7kZ8ZboV6ZD!s+SjBsf9PdqmY(|YZp}Pok&D=#vQ7{wBgsT$(Hcg!up`ai2nt$V^OEOV+V8?gAR z&K8H&MOABrUk$9rG8acR@C$Y(YROc!Fn6T6TD_0&uddpb}>yU;YvNJuSe|Dr8X z_R{kaIp>%WeFd9p!lj!<#?szhc4g1>^T{%OK86oQns@iv4*B~aXM6iKlXv~5zcVaK z?=iv_6NkELLQ0;tj{OV`cL??6)o<-@O(7|0^T(F~qM%s4Z{2*G?mJd%y^_MK})_ zBQ%m7aL>MQWZsYPek0Qwm~LZa=FhIpu(?=bP-3YxH zH4`{Olh8j^ZT)v6G#iup|M3Vt_{{%&guV!$|6fMvU!DK!2>k->{eLn-`Tx!c{WlU; z)%-qXCw4m_^1(DbH;y!hKxvb{N3n$gqzzphD&#j$mLJ!S1*#Yy1)CO@V)4xD82!-_H89gH(sD$ZiwgLrTZ>tg1{i8}mH)Oo-0JKZab-ZLG5Rj&G;Y^VJL5(3 zXuV73@ZnEkZdBVM9Q;+P4WoM_Hy(9Y`#s(Y&hQ|`jFX(}^);FCqI|S|SLQmtPjAm0 zAMwt(?bheOyEz^N9GZH|nP+ z^$)t|*AA&yy%VjcWew&F^d(t~@Jx9iYc2n`K49{1JV;NTG7L|Sv!?X!9;~tLzalcV zrOD~+Y|lhhsL0>bw@sNQ>VDQQPVH5FW=etJN&3p{X%Xw%JLE<1#kM>QG+HVVGdoD_ zATV061;nP9dH?f^o^a_uIhT|ev?QZjZxm3sH-3%b2gW;UWq*S2e{?w%fV{&8vN^d5M`IWRquPtZS@ z-kZK~|-D=zDW zh;F_tF(Mp+v$HrxPHOtBLzDKn^rtQx$z%18E=vqQTdpFTv?uAB(dijFzr4TOtkVmh z&ExTGu6FWjD~PB6xk(e*=~Qe9zeHo^%v2A5(Unfj1Ro)`Y{;Z*%)^q9ZsuW0NEn+N zL)*`PF}D48)VvD22+v3=Y|a9K#!9R_TF!z{&he_8wqM|=%BjD7dHk#bwIPl3Oz7yu z*3CMk?U~itGhs*wn|rd8v)yRF(-Vyvo;}If7LCfsyu-O!>z6}UiveQjl1*K%K0?TVmbwPF|cXnDG>K_TFRNXWG1X zS@+2y-YwRBU5K{`_iiKMyio5(%fP#MZ?*2ryLbz6KMFnY3UqAinIH!H+%mPJ{Tk1@AHK7(1rIHBQev=M(%m=|9vn3=;F`f}X2V3*74I`{H6{@x)~0+Wz{ za^}awy&E7sUxs`8>+5Dt99}n0JzOVLR{z`~)goL3i{dxIDw$L~5gH+ryBhifdh^Ua zIhkF(%5enJ>OxVoa#J_N%1d%L??CImuA8^Nb&ovu!9C^C`w(SOC3>&E#FfM+>$kfS zV<*4|^TEKS7+Y%iVVrFZ`%z6Pwl+)^YN65_U8DHY>hM{KS`eZu(Ff1HEa((&s&AY7 zDd#Wh3+E5RgZbU_cZ>1}ee8nug7?#(U63Nml=sx%1Z5`azdP{7kr|~wzaoWm{ltpzMR}BdaAhXn zSIt)~<^r?V(yQhrO?#Maug1Pht;Klun*IBwYT{>=$aa;je60TdRr7)d!beYgIa+t- z&+D2QWt@g7do=7%?6< zriW4`UN?`IRIj^k4(G%5BWp)>E$?kb*J?xII~R-*MZNWj1?xpoQgwB~#a!f#)qh== zB8rmrxb^p-D37lnscavvzm03HHm=X#uv`Usc|$K4Ki+_KPhWMzO#J)e4U_l_dixDJ zwiDZKd?x8Csm@HJzsKYJ+%-6)IEaIZ0k|(#y#rM}=cd;pv4bt!jEC#LI;7EX&AqF8 z7j_ks{B~#18{0u8u^l|OJ5&3q($gK%+MP8ao*%yJkQL@OvHJR3@&y0A`h(k+a`9}l z{@j+>>dQ9Xz|qLnhupI?eob}E=H6WIb7Pb~eM_DQZ>oN7ix7Nn_1-(9(4VW1+%=M8 zr9OU7ydH7)_o_l5PA!}@(^V)ce! zqxo3HguY(x>T>8 z!rIF>I(4;z4Re2aWCC~dMZPH)^R43hD$)G~U$0EQL_;;* zHkt3{Ax}TwA-g#|CrW+8r}9Od&+~1Y#@!lUC&Q=n4*sAo{4!oGqC9)hld^31>PJ+z zFxDXI2Fdql@RWpQBfaMLkx`Y8kHoUymyI^;d4pxQnY<@YmP2OpxuR&K+&q*2Lu8GV zi7q}c;n4VV!Db*>QvwC68!VT)_)CW0EPk<)i)Qf=O5Q(<4^;ByS$t}Dzwlp-z!On8 zh37J1HeckQtJh)94Iy*p5PAP>zTTa6KG%<_;K6M4mwqMLp~3`NSsHRKtJ|S3(=PPA zUxkOxD0SxWbG~;&?-Xn_YR$WNx8I}q@~mCbGl%!!!Sazg{5R2MxBSOkj%if>Yc9W< zetss zwIII7*K-lNAnN_;B^)bMhVR2Aysn!FeMatB!=D$KH_xX+d zaW3pn$W4W4obV^)bA^1oXb$#$U&x0BhwcsbqFPG2XL8wlBOIOxmNPe^RrdzV`#188 z?yo)GA#?F1R#`6`F4|GI3C{L1EMYaWc_SajcgqMjkK<3v0dC}MhP>O&SBRou`Lmmk z5m{XJ_wd=GJlJ=uhsSV!QhJL}5!Jr4MaXbeJ-!s|hhg#c=FZ-)x_M@c%!%@*&3p-(+kVzUD=|ry$m}iLDPqgyJzMw)o+)45f(rgx4!;Ar*dZ^u z1GRrB*thl$zMtFHKGq?BLtFj>KjZK@@8S<}QQl8}Qp{g~^xc0qPv*SdxAz|I;3Bh^ z@BOX(X-zZ_^4)qrzg*+5$(}k|x#>m2qiLIV^OTwo zG*sxZ(~k0gMkaT@&^5EO9QGE!FEY<|p}xo_-+PPS8Hu0isQsJzw$g~FE<|2+jNcfF z{$OxksQm62-x!Hs?!a##{3;E7W*2$W+k8`GUFe13n?q%nclcY8c&529-Y)XHclfGE zJfo1_jHf(IE`6789GFa1lo{sDaxib1@XWsQ&kpItHbkW-5Y9*!{+-|B<3dm+1}Do) z-{WK5=WEQHWoKU1RYxPZ5%ipEuo1NbwxN~{RcJ(0WZImt^|x%9ou~>r8R0yzIV>Bh z*$9`}*|518P7=CXMsB0L*$iVYY>}1??O-No+B~pzv25q-+z7`|2SJt%^=yP|4mE5J z*#5+q2udfCy9}n>bTN!h82=4pE~Mdr#!!`NL{Qg7KHINyqk0! z=f!bv+^be$cH9VwXIvvxd1ra>I8O-SAtoowFOTz$yv&z(fajp|p=`%veD+h>Pdey_7e1Cn-b<7~$eEPS1 zZxBzEQ@-cb{3l=g_iAN&#@F{Jj%S0*e0zW9ojJc+9%#kF*6B{))u;JG0!0iu!_&gT zw{F7j3(w_h7Abx(Q!M9eAACya{8C>A7w-vflXaOqNu~yg>DZ--39>3kl3}@t0AIyNX&?DOhqz0KQ&Z*0-r`JjRmhK1+bi(JacD%y)~)Eq`KPD)#`h6Dx#)GX{?~i4vY@Z1 z=`0m@EyKO#*3{%w%__1haHvb z0ovC(QN#rWH~fZ0S%ys(i{$3pMU2gn+~whGuu}Q9OconL!hgB0Lzb<_Z`-h^`Pmmd zLnLY8{rz-(e8Xpn5^e%P3$-KW@_FO3X$7VrQyy?m|RP;X2rloDl?c!_Y zUyDRyR8f>yeQ%zNZ;2i2g1sZ*Ds$s77H51K>w9IPSjdq<8MjD`v%@usnXarL*jp;| z7KvfQ@4e=Hp6*unl&3q@J>_Y$x~DvOWZfdsKjucL0`s&^{<%o>2+YzdcpA0tTr7%k zjxazTS|WCcyfJd=mEsXR;{AE08qr7OJ9*+7{f_ddxhRaO7{!b%G0#xKhq95Yr=9PibGa39$#WS@~)>A-~lH;?js+liQaq^V4(L zb)C3XV3(kB<||t#Qn|Quh3fFKX}y?--KrdWy%-}d>E&B{y}%akL*L391fIiFmdh&& z#k=U218x>~@fx}JW>myZx$YKp)-Arhw_tX)^YtbJG4dMdHE@M`JG}h zo{1{&6zj2{?0FZeJM&^G?-Co)D6z$2ys^`sbGK*+&1hYn$-UXlEF%?ht6xsfI@}@m zVLA9M$$20Z^<%?6L8Ys{3vs}ni)T2cmy5THL@XkO+eM#X{*HX)A;kNV{OBREQ+OTn zrX5Hek7_$aQbM!C+lCm6Q3_G#@Se5q%N@Sn4~r#1JWLinhFO2AJn$IimbYb5nZW6q zUB3LJNKSbkCz7j$^JY{6_V|On|9Zch_wj#ke4mGeY;}f2Z~Zw;{`I7Ym4nMgVZ<@~ z^38_o+mzus!LbUsef!Hr2alK*p#NPSc|uGLYPB^-%5G1JN-MSG{cxnzs{Ssuv+~a; z#r+Y-@x`itI(PUUc?z8+VrYQ=OF5uIOcu?NzO@zNRUE*`A=7{)RJUY|N(Y9Y5gGH&@E@) z$XNk8EJM|<3w2FcVV{%Uk3`gjT>&PB6UQe5bdD^1Q4**-#JoFX^GE2hXO)PO_K!u- zfae3;oQJr#I8cY^bUEu|tk4?`vGVT!;vu|S0(JNe+uA_gX5qa$P=^(HWuOj)%9Yzb z7I8x=mRwjBWys9LfNHFOj^Uf4EO{J3_yi@QgYXT}Sjj(uVz{YD=H5YaxKi|$Yd#eV zx?P0@R((lQ_E$#(%k3E>}TrML%6AQ%tN9AA5qF1o0mwV*4&(OY` zm52{sj-zPw+0R9s{OmK)8&3xOb68i&o}Y^(o-ZdTkt>%dkt1(c!X+P3B3r(ygj0T| z!~^nAgcB2H%KJVOaa|DY>y#bcJ~vj*{z5#8jrZv6~Op{nN@OO0o zikXvk+0t4227L4P8#p?RweLk7segS@Z{yDP=$_8@(`)69CNVI0`-TqrjXc^UW{RFS zsA46^QO&~6`^hQIVnN?nY&XjA#b7cZ!SN$yc}0iJUsapY@>j>GhJ| zeJ8rh>=rRXj%dMhQ_>+H>G89HVH#-an*7e`m=a?P{T6QuVlF?;~P!c z)X(&9I7s2<3RzXE^|KdoBOd2Fras3P(JJNyCj=qlorlk77CUWL3vT*L-gidC{;l0{ z#IQeiR!mL6bjW@HTNi#Wz#MOw_9!he8n@OZa8nD;l|P;li7{UXm|9gR(`0}1d?-~Z z@!(c@`B{+|cbT6_ITe6yUH+0Y&x-CbPXd(xE08KSJYc z;csFXXY%gfFz3V{y)Z$CJOFj%ZBVQD?j>1sRQ~HX(JQ8f*#4HrRE0SqE6l71##9PZ zlYI3zkvQCn?G>n0a;=ax9UUFGHBzZ~PIIc%3Wk_XnJyn{6aACV;XG6Acs|grxlN39 z2fDRYnQp08Y!rN)L#2mBZ13OO?Jt=6w!vm{ZI_wSNwQ+9$xYKtY0oyKl(1vEzuQ8KJr>bau(R2^g7y1J9KF+mne0X}SsdtggCs|0cgk%NDdS9l{ z?$X?zUS_yeX3eu=;uXXd#4Cwwh}RJ}5UYNxt`_2C6B$b~;#}gZhzp5vKxJH|#Mcs65l0f&6R$BC>s1pe?Brn8t-dM_qQ}7~HG$nS&J9E5MaTyun1~B));zMSLT1F7Zvog~Xx6#l$xgml5N4Sw{M- zf)w~snsL<<-$L9-d@FGaaSvjaVwUhW;&@^;|EVjDILbukA{LZB%O!<1(^{h^ngV#p z?jbHAzMZ&?7{9hNt}5a%Vrvu@5!aG^wOM{V;*+9)99oFgoU1Nt_--oG>@d1$V#mUiK~e3Cax#mO5A9& zo83c-7IH8)R*(AFDAFw-uPPbl~EUMTw*Y>)q8%=<$nBHDL|7 zNiO+K3<_>CZnt64jR{`Q_0_(RCa35 zC3Ha^RLNUmsxosL|E`st7#D7>OL^sjOU-0=`k7SR72wAInj>XufXOW11<5K?3rwx@ zRqVYY!`?femYT90@5z6i5xv}t{q!mi1>k(YHY%YuVnt>f6(2C$tjuk){Uwt<9+RzI zttD&kHuaWl+jarFSyhRtz!!l|mFLC>O<8mAh0=;Jb(N{Nxa4Is1G$u;)H_UjI?1$R zlj|uXRt8eNN84;t!T~bRG5!jj2 zDBppy^-fBbq=TYmavh?(pv$WEseMoGh|z{}yF41B`9$kZxhYnA&K4q_{TRASX9)isz{ zHG;a*{8=qHqXGh?`#ZpXQ2;vwIGfno5zP&-w@?AB4CVOQho~Ga_ERX{J-{rn6(E=F zT<(h3@XiJ0gX>J!3*8z5_*yHN>COrQlGzYoFAT8X7GU?7>^7DJ73Y=!hvERfH-Jls zt(Mpxz@-7aGl0tsmM?bKBDs)9yK70^t-7cpSBv+_h+a6fuu^&@Af{SktB*AVa1*iB zr&@@uCT=6PHbnMOW>Z*phskbcZL`zK!P=tb5L=tl!T@_|fW0Qb-bmb=+LnzrGk{;A z8kfUh^lk?!vdO{PFXR(j+wzit2&#zjCJy7OCAKQ~FtN3ZZV2#iQmjUomBXMhW)7`+ z#7=BAfrHq3GD;)1O5`H8YOsK~FJ-WlxDRnH*sVs8<xw!4e>zY7Gmqc$Cj?SjfK&gS>w~q1kXJw5nB^q;6&#P@XsN(5-23L`dA6ERYO(j zZZkpaNhvUaz=>%E^=fP02^_D1<2!J|2^<9tJl!|Dm-cNZUgFE>t91kgyFS!di?OA< z;2cK{(-OIQpf-`m%UuJtVeY^UpR*AgBEQ`Y)j4au$vi8wxS;StZur#Xmd{M-B)cV9 zsj06ZnLFJ$bGww4nm1OwteyfE*O>vDNVYVaoc^UL<8L>ml|Z&EAEd=iv(Spqd9&$e zace-nT*S5u^|Ii!$dkE)HHW*&X*RAELop@XO8OdGkkR`ry)D!9xAgI4W)2(y`kZ;@ zsbhM8-gSkkcbWQ7W<_N8g$&U;N4v`wmdvV!Dpl2s)4k*p#43dzGH8%Q>iY$17u zB+D_=2_tDYr5k_wXd2>4_8{pX*@t8*$-yMkNRA?zPSQy-o8(-Qi%DAXuP_*M-L+)c zK+;39gk&kn3X=Os){v|v*+8;|q%|Jfh}lB3pf-|rCDmLTPYMUgRFY{Vog`f(b4eDG zEFoD&vW8?W$$F9vBpXRKLCQ}jX&1RuuQ0RbBC_LUQJWdZi83+?hTmv%FL z`_O%sw!qzZwV9VGYzCW$e$yJj@z-2vclvQA{BwwBu*=vaaK4{C3+y4jf@R}Be4*&a zm#9;&5>jNrJO>VCehw-?eSp2y&yEOK{IzBVRrtAJC$W{GTw<$$#eSTrPPxkb6qg}_ zT0d4LX!K)MLbm37jTjm5<4a*q_v0(TEBp)-`F^Z2P)t0TO=0+JTpUdJDO3aveyk#B^J5i3{Mrj^Af5OUG=Q?_ z5YNC1lxBkq0=V=%yV31X<)m;S0#(JW#8VKRkzj$9;2guA?#C*FIet77?D1n&pb9^p z3~oBd?m28K6l~r31f~E}{a7`L%a2v3EcD~c!KHqz3RL6As*g1Jv8r*lp3-xpe5#YA zS_-hLvTQ$AeW1XP7lKRtcs{s>cn+Iy6sVC{wXv$fuh03H7wfv98`iv zE+Nld*PA(>hv<~ePCN|_qB86tR>M%$K-xLJf=$8SGiix#%e8<^YJ{rR@DOL?BuC|~ z^ql<)c;Gjj0bE0DCDjnXEyONlOjSPHU}RlY^?Y?$#O$U56`yHTRvPhi>aW=W_WS_5 zhj=c!tLko6s<9dMKq zTaQ{5#MYBk6>(<@Uqfsot|bmJ+0E)nVVwyz5L*u-jl{^jaWxTJr{^ui)}vZ0vGuIj zMr?hB#I~3PHXnR2``JigJ-OJ4qbR|6V(anRK^#N&RATEZo-|_Xa6FyZdhl@)8_$wz z_RS`R^(f^cwjP~wh^@!-Tw?3%fPCU4%1{BZgSe15nb<>|0#@mt>pi{6p_m-3r`Hl< z>*2MO*m_(qBkoV(D~JaWR}oter!~ZbtnZj=NimoL)Ds&AQqVOJ4!}L@d6WBA+cLc{p#|N zVx@_!*m5AQ>T1>yr-`71?1H$ASR<|?4kAunX@%pew7Xd+QZ!J2&csc`HsV&| z5Mmc?w!09sJIw^bi0#C9DWq{Zh`SP}8I1bxMhYi6*oj@l5yWjP%mgBd<5!v-MVw3i z(ZmJBF~lC?SmF}Js{P|hQAQ5kiK~c>-_pRZmKd+IG_D5X9>h(=c9r^>(pQk0Ry zK;kOmLBzGhgNYl6hY+_A4(D0iDwWO5YHs`5W9#=i1Df=b-7s?Ddv+y74ZV%TH-5+8;DmD zHxXY$+)8{cF}ugCfg)l%F*kN37=I2@1ko17M&r6OaT?h}h@Hft#4h46;#^`oaRG4@ zv4=QXu^Rs+q=+SlGU5c{D&n5R^~8gT8;Qpgw-V!xisrS|tbr_IJMlGOl|D-)1*bh$ zI&lzjHgRX-9AdoR$++@~Lx~HC!-$KC6NpQR$A{7STSba%$f1@Pf1z(&4a7mjO~jpv zTZu!6*}Z0oLy7IgVZ;vN1iMjwtk0wvPYzCEPMba#aS(AXacANJ;t*mFaVT*KaTswK zae|u^RiqeCTu;nt7uiT0Lfk?eO58>qMr_+=)<6PrJn?wqG-5ZWU8a*1A;d1?P~u$T z1mXhX@x;Z%++j9ZDRBsK1#u{Gjmd5{o)q;~1bxg18m$P3TdW9(+la>#+wL<<%u~(q z@x&p-sl=hg=?0_y`Cv0ZwiSRl#|l84Pt4Oy|3b^3xY+V1F17qenf?`)KXHv>)&D|C zQEvrEHv=>hhZ46~_KQq=n`I}q-A^^(H0|-kp~R^cPd4r8;LFwW8=7q@vMq;=PigCRwrSQ})NqDq3zi&{ME#Zgn}x zPF;be5nDf+a}xVZ_jAVp)-gd2+0{{%x~yY>Al$3;Sw1;fPdtUhcPS$->zu$kM<^yc zbwy^K8(8NGrDT8H49+Tuy~H)dmr(kwo)p#O&`A6&vGstHN!&vAt;E(rMQ7qRvRhAR z*13g^?6xwq#-E@yjm4AV9dbw|-c6iNe3Uqw_yOV^;+Kf?iH{H$67M4}CjO^U|4^2a zqJbPLh^G_R5Z4md6TeSvoy3F?H>0=;&|fy#Hqw}#OcH* ziL;5HB+en;L!3|i1#zLtZl;r>m>imjONn15t{{GwxQ4iyxSseE;zr`niCc(2B5pGn z_5TJbtdkP!WX1NlStHg{wso*!os7hj{aOldot#)FEvaPBC%bhx7D}A1?5h1QBZYPH zF_bu)BDkK|I!)_BoJ02Q#QDTe5f>6aM_f#NIdLi2ttOclNl`%#uMii|WBkR$HDoU) zwoXQ@qnvuOTb#5EM)ZsL04ImC8KU<7d^*>5JUp!oX|w~+lRlkrSR4t>a>jT}}H+nzM5^gd$i zJaG_lJlWR}rxI@_wocb35T}#d}zH!NPGiv zG4VX&_$_9EA{DElQc4d0AcqR#xx_WZlGs5JL=o4MeH(EaW!O4#Z6y0fvZqq`Xs}A3 zwUC2#0GUP(F%+PU>yCWjnyaFRnDaSquR z66fAwX5b>?e6rs`TuA&3aWV0Y#HGYLt@YnU33exk3UXLPTtfB~;u^BAAg(8VjkuBc z5OE7}6>%GJjZyzl+MYH`bc`J0iQgp7p$sGtr;>d!aWQT0zama2`|HFm;#Z0DiQP|= z!b6IOh;u2yMB-Ai?;x%qUP2syhgpD;#5H8Uh1f%OCvm-LKmT_NPI5>mhenFPL!3?a z4B{5D7ZK-EhINR z4Sm)a?dg!2m0DEf?ym*wgT>!86|#oYzEzdlJz{uM3Y3K_@;0c2{2TnK2Qp)FA7iDo z{x_XNSDHR}E#V$5YQTz9nvuz&tChNs(YFhsYeLCLXEa`pT(U=7gqJ5A*rUBSJC~)! zHy`g*zolN>_4QX@eZ`jHI~|*bH_Mur?Hg4wjP)RC0RD+aCY8r1NOjGH@#&IpA^6@|_O(~?R=qkt{$a=_N$R@~6kZq7EyzManuK0`1G)o~n zgBu}jkSivd+=)4CMJU7!=8{{V*TP4rOf*m?-bQt+s|nKKFmBljNFzg#DxormeCv5F z!L2HRg`BU1G{3^9_cMJ9Al21K9Lv%Ynm3~cPj>!#Gd?QqG{m9eJ%coBl1=~BtRTMm zj^lS84XWRiip(~Yn}2;&gH1{+KFE)o1!4Vl&P7Y$qcYe6`73idzQld=iO{3PM~xQS zYPDD{6563s!Zny`EeKMD#S0mX+IB*!YcZBu<@Y3{x;}+eeobS|jKrs-m#SuI!tADk z{C5eLP{MFKcMZn=O(k$Gq`G!PssyUAX;JaDKpM@C6;ZKt?bV{MRCQj9*eX>}T$8EJ zb0Dw9{z>U7XdiVLQpM;TZ0gfln!ULJUHFc#zbeZ^M}qGFrK=a4RTY)x$mzCnr_Ci4^lP1{W6ME zM(o$3=2$uDh6%PA{Zg?LIa62T05eLvpRIs$t+JUr&~Rhv%wvy42K(aETy$LCzh9dW ztRgCt$MH88pXTms&DTLI@JClGQI=D}komYTv{+`;XbTdI zn(kwEy^G*xUxz4hHLR1BHCnGsWp5?>+pw#v1=7grzs#v96;hQm8&XwWK4dUtF{D$5 z9MBTGs%RX2&B{2rQI0sEr5F={i*$pF;EyYu3a9)%u*GjQ^(eHx`HmD-exvrQU{jOH z*GNKL_6JPAY)GYFL3}Uq2&1LyH}ydbD(7S`o4<4*Kzoiy08WyZ@|;soWI3slkMP&6Az?xyFJ zuOU^RX(P7XYVs)QeOZg@r=lpKC@TC)rP7_d*(_1GJJmcL2i0Yn>5ez%c(;Ad(Fz*4OxnhlB#l*9EWxv$<)k? zwFM1t<+&BMEiagUrI1fBr{e*c_qrA(2OrepRT-xq)E)>?Ezz2;vB9$WpcXeNztJ4) ztsf&xpI|Ea$t=dbetUAOd#U%bZ2d2KIj&Y48mk&b*+&^$9<>cJyLGKL(6Cj&Hu^%_ zYqi=4m91ak)7J_g<=3cI(RL$WHTY!9%sMS8!cs4WD&J7AtJC7nsne%$mW|H_`B0tK z|D5`VOE|M#s?^8pv|$lexl5s{GSm^TYl$j5Ltoco&zYO>yw{4)208C_ZS1+o2G8Xz z9iMFZ$m?2Cj1?KX0%_o*+R7%6zpjl}5q3SK#VXnFkk-#Ar|P`Xs+>jUFtrL)yPUI6 z@xd!V4{5!787(zILtOYx-D++OzkEn_6|R;q9HKeaak1(1 zpM1IQ4Xt;wie5z+y@Rte_-vqBVGncW#Ak!t|AsbfsFjOrcXC#Uk5&4CJk8<1<2A>Y zjC@l|S!jj1?J3T}o<{GYs3)kLZ@sW|F4);K=qpq@qd#pn*D))e$*|AGCtGfNQ;S<; z<-DYlvz%wo=X?e33;g)+8ffxv&RqCdSxQ9T3RitAAjuU~h*y1NM7{Qe+set{m(ULQ zShWyyz6+h3z=B@ptOq`pPmjOxSqyuLpHK4N_}r$_G1E#=Lxo*LPhr+H)`$-Emdrb* zMX7$a?5H+F$rp}l1JC6*_dU*P@TsTT9b=?(VGG>$Ir{7u=mh>P5HO;HzC@YSr`7C( z2}V3-|FR~H3fNELgLvekx3o3J6rnnOzrQJ5k3Uhj_)L~RzNICen~x@U63l~7f$V6n&a4BNN0fl7{fTkAE|>T!-?f;He%N=YnE!`g|D#r~TxD_ikHu-(N6 zQ^Jn7wW$|dQ^C_0EF$J}_AvCuRMi`4O|+`E!6{gLreO80ve!FWN#=hoBf;Gdw1p^g{E!#>QgTU$W+ z=(}2qs{YsC)do&del_rOswy*%CjP)y(+oTAZ**@PYdf9m+^u}&(D$^25G$VLMr)5# zsJhXxzv-XR#e$XKGntBTBc7_%@oF;`7ex2yd)l~jYiq6)tQenodFnlFxytp72CY|5 zEBYY_+W%ZoY^;#v;&c7&QMjrguR#t_LDYybp4W;loCHsPh=(3*a(14El)=Zf<-Ad@ zJE28|w5aVfu54NKK6Xj2hqa)P{BJZ?f)6uv-n1a;fm+rc*X*LLw>)uN>!(%pW^(OL zEk@c;K-<($rkv3F@idu?Naf-aT6B`Dw;8klzgB9lZ#6mWQ7tAo|641W7)C$4MiGqR z6_0>eZV+D=D_9kRxy!Yfh$aMULJn<^HGVk_lMUs_Y5Mz`ojc@l|FEgwQIh9M)*mmk zjX3ESeKA}nKCH!rRD6fWYJARDfa?h@=pQFFds5jo{^c?6t?ad0;q5Jf;a8m0qIs2( zT&U%q(<1LXp~VHA%m2A@mb6e_D-aQrdl6XviJVSoeC@xcZq=7Kr5SrJ4j1)lL)br5 zc<5a?#*CAff1nK-txlq?>&%bpUSsJ$oY%$wgr|Ff#~wf32)XA2{BhO)d%NoYd%LRH zQT{J~yQ=TeMr~PV^@Wk^#U>4}jZgQLf31DUyKkRnem8|B$hb--nf!qCeybhCdnIOl zhu1wu*{7K5lBuR_nyaZ-sgCwxyyn_C{uUdrNtQiNYf-o#ep(v_k#}0_Z&H-pc^b1p zzT8VH<@}@R%zrVw@IOt8kr)4>CBUob7ns-lV#I~}bCJ9PJ%_KY?N=H#>5 zObDoys5`4ov%>WFw+iDM{%`Gl?k+f{VS&YS8l($y3#12fJ7gK8{cX(NkUb#rc3aj5 zvJLX0^{%gcTGA)KJVzp2> z@q2`NNDs+cNTqLpY=E@mM7|L+7qSVm0y2X&u_j3NCJyIt9;(;{IRUZ+vf&N+d7C!X zebG^k6(-_H12U%vV@udqyav(*j_-w|4V;1&B;kzk5aM;9V6VeJ8Q%mQM*5J&U{`O( z7P4i$0&*71<837K`?R`?-fkScz> zHWq*Kx{MbL!Res7sexiY|5kXg4Xa1M27ISd_y$&$(Wn7%{1`Aw+=4IRTOpe!F!l#Z zUOW*sfEsR_gl`U!frc!c@j~B5(lr?w0hdjI9kO<+nE~|&yt7c#x%g{e;|4E(HFAa* z&ayn#%nKk-BEr;5aWagOIxoY<2@%*X$Egxz%?u=r43^Bnxj!
ytFsBJ!)5*f-~ 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%0AXQUl(`jy4-%&pCWv{ zbYc09D~DViIzM*2acd(tzB_Nh4=<*jy*kCeY4>POCvToNS#O7X`400Q>Ra4yKWmJm z-T%V!&^*>e-ue_){ho{}n^QM)(t5OuF{@{b%%3PgCH(9lkGIc{;81 zz>s4JElHDW|9KR?Lr-6ctWR_Fob-Bb!qDMKuI3-(x15_$Rd7obXu5M|8sBy7&bp~@ zuDgAErK??My`AW-2XmaVjG(0 zu9Gz#PIDZ!zf|O-Dt}s+eroBm152#D`lr|zHTAm3{%&4zVJy}2L|x_nF=lppRnt{NU`7HbC0<5+VJh|u9z!^*+3I@N zY4zI>Z~0C3^^A*+>Gq{Jx74<~Aei$+*mXw2rBR*}{)yCP>^@pF`lrquo4{Thr$~HV z-tkX%)*ZYaX-psJJgzzMSpQ`U|LX1&5ZPzr>4^G$t}Q8>YezpB^ykV;{RXLGSB8XN zo<6kCs){pv_L^(#W277ZE?>LHUii}oMc=q??$fvr9rt8fd-dov>21dR9o`u(yOy%| r^3HbtZcM+e*fJvRR-Vg>@w47#?HKRB&}OD@UHk7db0=c=NdEo{6)LGG diff --git a/Shared/data/launchers/MTA Server.exe b/Shared/data/launchers/MTA Server.exe index f89f45b7ef4be166372bbb8c00b9fe6f37559893..be07ece63d15a66cc6779f5bff0bea8e3ede242e 100644 GIT binary patch delta 3958 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 F{sR^q&!7MR delta 2989 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 PB6Sd*uXU?g|84&PW_ine delta 3040 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 diff --git a/Shared/data/launchers/Multi Theft Auto.exe b/Shared/data/launchers/Multi Theft Auto.exe index 3093964d55db51e65aa08745d494446378c6b8b5..64ecb98eabf2976f16267d2126a5bbbb38de6712 100644 GIT binary patch delta 4149 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 delta 3171 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 Uyy_UQ5`(}X+#`Rrmmtu800%o&bpQYW diff --git a/Shared/data/launchers/wow64_helper.exe b/Shared/data/launchers/wow64_helper.exe index 38927395bb82cce700877469bdebcb12932a053e..c6fcaeefa150f6c753957346d179d4c00d82c771 100644 GIT binary patch delta 35681 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 z zv4oE0ef4)O86OPn`KKqfW4c${Mfod7qJX^9uLCtSi9LD$+Q#O^d&`oo6ue7E6Nql} zFNj{+ragUcG30b*H_HO}TA2*CnvVnn6{^DB6k02H{Yf~!b}1*s>7WVW=M?gA^1+L& za#xy6FBIxS^u*LjL+xeS$d}sEkMyIdjU7EuD4It&(INTWJ<~HMvaum|{*Mbap#!FR zRcV<_xxC1gTGJ73=SF^XhKIRPXuzg5IK_O?+GG$GWD%WK0^pT;EX1PK=I~K&RG&KY zHEuMd!>mQ(Xu5(CO`mDe*M>&ctKR7mvAJz+ksiS$r5?bt37)M^kvn!m)OpA)`uGp^ z+Tn`=l;G#;8<-7G1lyPc5;iUx< z8^3@+L;HZtM)7(9wcsJ0tT-uCL{q}6!adR(9jtV8j8~DHS&eFY#A=469IK^y!cq(@ z!3JzORaCD2k)av})sod?QVk6ehQ#RyLtU+gx(P$CkrMrnq4TI)Ve|}N>rVQpNT?cL z<1xa78R1aCjH{^sgGi|wf5Tv+FYw0apz=dpE?@Ec?o`9=$v#y49m;=zFsLT3^FR;s zu@5U(^f0yapx#7l`5I4ZNK^T5p46P`a-A1AdmigWjjJ9s!b*`LXQ18D_Ac-d4|1ay zwWM$PaWCrYbq=Ko#$9$8CUKBO<7)u*C@kbHs?#U*6`x$4nz|=JE9$uMl|`QdO5AF= zJiG8C)v1m5cgw^LjRV%Mr@{D0eeIbwqyVYPf0pykGs%-a;my72gfh%XjQ(}y-ah2$ zGKb@+h`{3~81a%{(}Xwnq2-jsi+w1>ZQ+;Vaf|kPSntGeOl~f>^QBsjcTr7B*Xmp} zO?gXS+DZ|ohrZNLrW(9`0ClHZd}RQo!H!EH`OrEZ5lH@&$~y*<7anC;AhncV&F0?+ zQh?LFFVu+58^imMpAV$b4x@J>x+9%Qlgi_RD8T#Ve9;XgZBCl&WQ#?v%f?#)busbT zLG%-bJ1UrlkQ-kfOx>uEKMKaE&*y>o(uIEK{X)>_CY~OG2{QB3f@{a`htR-2L$_BN z?)-%?oSuPRBz}-Kvr30U`uoq7y1`aycS!4e(A8R{Eg}8Nv^Eqc04?R0Ymi?U&k$9S zLo!$lS+D<{JW`E6b0E!nC8sClj0y=yCE`9|)RCI=5n| zZAzfo3Kf_ly3ko!F3U2#??wr>6tuBJU$UVX3ChH*HHmYRl*Ba7^~Jx0c4x?nPGOyeiQnEX!&KRJooIu3|N z{8kMG+rzlmWNK>qH;qmaeZx;oqF4t9q;b{KB$MZ4icsY9pI8@~-jqC*9xKX;#xhU7 zOP;3GnG{E~fd7<12OJ|q)d{bLtT~^YDNaiMb0!6o%zw+IDKwlX%%YH_*aldbwKK&_ zQ}`jR1lJN*jiH%u1JLR9_KLT6IW2v`hz}B|LeouXx>_~ugr){z)WdXx@u4BNQD;w) zlWi2qPtPI`yDRn83@z5nEE@Y{wMCAO`fhxgc#BY zNE3{OD9GZUW>Zav*P>;7%J9^c&&Vckn}$$i3xD%B{gO@HW!yu$x#Vs)wjqq=_!@Y` zT>9GfNEE^^jfo$fOWmDQz=*M*0hd-kfQRK!Q_AMaIn=@~xwfdKi7|bfLo>jP@ zim^_D*V}PTF4b_4sg4naXBCDE*9mEmbS*d=9+OLM^*p@QvNEWcH;P*=SC8-Agt`XE zyjX~gZSAs}O6kr=H4FLdT#AvOc<^Jnw9Q-V4ozc`@i&XU8b};Y_0Sy=P}JsMe?{>< zXMHNpYKwl4hfu^xjk^W$f?mj>B&tJFEq?E~X?+K*{E{|^y8S)NmBl+NTZ`TaYQlSt zg!77s@dl4vKuv0DkS8-3&m}a|tPI5x4~#Ju< zT2VEAb^(P`DSx#9C*m~TU?G*ceG(!@xzTfbAmNq68L7t`FQOP)&!;S+1#W{~;hN;e z$m%UBTxX+3=H6dZsOR+{IE97Qxkj~fU~%ziPxHjDsSeKA?5`30;!DtnA=hYYEg!bc|7gJq&!e=g~KswFWEyfY`Ge5AH#!_oucL@!&`?IRJ z6*X7*k|opuNBYer=$``*UP_qB53B^Fk$ zwk5aYR1;@w15WKT9^%PyD3s|63DJ1EKUUrqbufHi+rn1!lW=Q;{jimDd*4{-1-)tj_joO zjUzO|x>(%?Q=h9{8iOq5)35LelX#HX$J5-!+c|s+DfZZA1fk_sP-CRE#$Z$YGHNDc zT(VZsDBsc5#el?>R2)9(vjaDaJFTR3lx*6%k{rn4JDi7U9+<-Zyl@r8 z+BSjvVbl_LT1}yJjW<|LHE1XAvl?SJk7uo>Ap4EbFl1ZOTzTMHa&<8`xGT=7au-e8 zf}dNBi{6JnT}^@Vn|Iu84c1*TZ@Gq|ZGXi#o<_K~v)90Q3jbjZjHALD7_Y|PuAv~R z$Nkn)7#-v7)=~&<;3L;!U1ajywNUBBO>3z$Tz1=aRIlx&H@H02_+xs15q}&3Z>bo| z${d@!?#5Z0;51}w-r8Wt*qPt)?d!O1owhi8(4Nx1@Ls=w&qdmsTV1H-g-DbxA?~O^l9Kq z^zNYz0_+fV&xm<7r@X_;gvVhof&gA^14U9TQ`-#`uhCt>3zUaWMolqrj`oCUutV`ZOhU-wUalFhL+U*|M%6Y{l1GJb5Pt&?7!; zCk@v<2*z3}EU}4KkZ{x9;jedM4Rqx`yC~kr_8C5&vJ^k`#PK-sa+mlyg-7Aw)7j<$n*{N?aqt4^C1drKG6UoK2Yd8HQJNCgW7>rL1 zDG}}Ym_78G_Lx%l(qp0yyw^TzORjvyK6phoe9t~C-e(c~`aUY4aE|DurTpxg>H2=^ zM6|(F`&athmTXMl9VJs0$}}aNh7(04JgJxt(r6xVj&9rJ+$M={dquuH>{tX68@M~%ha5!*ip*ahv{*{};jqW2&$)Vu zKmLPqs4<`XCvFr^(~>{&?C>vtETKcxijTcX)o};SyGap_5l7TV@we!w@q;(1J?;pH zTR5{2Qrx1=IJ$1!LNoQb(``CVm-(gJ2ry>zns;zM4dk8f&@#s=2UQDjXA}6-J6PQ- zd9}OLLD_rOI(YKGyZPsLDO2$)7tkQ?c8``}+_&DtuGjHD?%~jT!mHe;LN`WrWCI8dhYgscF{zB;sJG$yZyui9-*OeyyZhm^HqLP2d$dO@=<%6=7%Qe z49)+Zu<{`S*|Gf0L+V1Exc?&@rK5PvBQlC0=n;8iX_P*qo(NJ~KSo&sAM}_mPzG=O z7r47T@h|GAOgLJ;0Cw?$zpxqV@L5kV09W~iCln&@Ji% zJ8(OH^qj8CcMABK=a|1;-28&RaUHZ>eat`+9g7#*c*AE}^EYM5jv=we*KqW!zxfv~=~+uh2@r!S$ZM_Sx{uSAlm&Hdu&bGXV2V0SCc>r4Yf?vVaK>+=h>bo7r z=iht0&>d`*ouJW!?R@@QT!bd>{En)-EfWgfR)x7%g&clIC=9eJj1meyR)zjng+9E+ zJE|FGiw@_*Z^VIA;n(2m+W$htT4-(?2y1ii$S?6A219kUtyh;NG#-Le2yOb5zd82=+LA7*M zs}wy+vG!yz|NLJXgW$vbFGV4n;`5%uJhndzgzEN-Hv>NF8pH_`xtHwFr z-$D^?C!eCh^7N4jH0tK_)fVy!-n~(DO01={HmJQ(D2jJxXoOi67xSwY?DkPhNOrYL zT#g$lw`JEQK5}4iJ;8{iGTw}!ZnUUtZ>?L$S~p@zvh3m3NEB$T1%cLrpe07xpAIhh zQEp7eCAZ|}A!{*Z_%#L*M7SX5U=eRh-hPA5Wd#EezluC(49Wg2ZT3P_onR47m=Ju7$L%9ZfdBzMtSkQKv+Luy2B(O>27NUniIP_QgV z$}Q?HO6ZxvQO(t5Fzek&$3;VrpzJ_aLfn zGCIhOhz9dQN4Yf;MdT#c#yJ?_B!5mn@r_RMcHH}YwDL-9T717UsEz(73`f@6_vzJ+ zX{vx0g9C44DVD1~>+QekZpSoFwpNI5LTtS9&?D>ZyL7yo!poFnnsa=av)m0%>_ca{ zI`V>5baF7(T`is5LH;L)Pu9ty@Jv?g`AMH^Q+lA7{Hu5wTL*<3!~Rc?-xw8&NN zM3cCOo7}rIZ9*5)6X3)5_)1KL_QpnaVydWlKyAHTb$*J4Fh{!w$Q+V`tRD6?=mcZI z4%&k(pT#@}e&I9Utc@kEh!FmZv;`PVpEoxh}yO@sj;;hb{1u!#;Vr zK|Hoo5l)~V=ZW9*s0coMoxX$TBy#G%LFMC|I)k1?``Ue5gOrEVZ3C2-)fSY{fjoMBtVQYldRvSLjPwq+vzTZzy(av9i zl3IooabUxezZ_q6#9CyvrD$S7CXG=2G({&HYOi)`#Qjk)Slu~9k%ASctnDzPk4 zCE<{STP2UJl1NDWtdeV1NmEGNtdiqaNi-x5R*A_fF+d_&CEr;ksgO7~vx=BiG!7yg zt7Mi{G6j-1v(+w+RVBtuY&8fU^W*^8&Ar507H2IJ@48U-8=n^-hsOI_%N(qh>`>rp zmAqQ4KAH<8_EyO~t0WPU)>g>{t0WncMy6K*@^X@&f6iHuoI;oQKSA<+`kwz8jMdnm zcMXy2AUK^FA~%rV?czH^oBpl~vYd#=cJ|TR}nzFxk z%QRfd*AVFWTJ&b#v!>k5S+fu`k2j?!F!QgCd{<35J*drCEM4o}0oQ0}$T|!Y-1xl3 zgs(ZS;fk4MN~k5jAv(v~*OAZBY?D`noJ7Jyt}7#3Z#r35zNR3?-q=81N@Go}qU7B~ zp8W5Ia%Z<9{PIkK(X4){6lF-!VQci{iH&5RsG_l|^ZoZoINzm6mc<)ST;aP_YW%*a%nESNvEb95EYAj*YRiF&?#=$PHb7!dLDFe7`Eb(u}g` z&ziMakJ-*o0_z2%w+w$}8P!;n`#+FKqb5?YCvUQgaL5&h`NJ^RR;@!$vhK;;yF&`177 zwi|BR*jH|WUnS>v`pH)^-x7zyQDyo}MJ%bXuB>Rf(04quR(n8z2wU1w)cxJegoTCgO7~zcN5Ru1xA# z9%Sq>?HefPk|S%Yt{^OdQd5sXvZG8(cyfx|l6vzsDOfM<`Ti6+KtJ%5Bn{Ptn}_Op zLJ*8x$<{KVe;xcu z*onA}SR1@{r4|2$2P{SFE;fZ&uR|}Yjkz6!W+-juZbRhA&}FJ-f6Y1-Cl;e+SRVkZ zE}^T`7F;5B^5H||;Fx4lQ&^;cEw@&HBpmO{;-n~CNpUTip2_a>qr`tw|O@9)y5a7l(PO!tE| z?e63Fl^dhx3GXyic5jexHT_7T^R|EJbE|Hn zY3QtOHasj*s!dX**L;Tvd~@P+I&$;E@xwP?&n!A}^;+o9(1o?oVWQ3#+eObZuvm_i zKGg3L6`nrSZUx4gr~wz~$n*Xu4i`?uVu9dqQT2JB!Xs~8d|wOQw=NNdz=v-=-Ryg% zoQN0;0z*@xN_VJgeZZXCQ*`*&%{`}JKzkkO6;atut#jP(#}7+l!};|s{}BCLXe{Et+*Mk`M%*9dKy`#T8b zv1tejvJNL6T8POnMe-*t3`DUY#47j)gt~`eLou}(E_)~x%=?a#y}d6Z(}PbNV-a5k z;E!ua(H8yeCYZ7u&11e03fgl`#c_rAvxt>e^ZZeAql^U*;VY$P!o9~OJi?-H*;M2P zs-zD@5HkLw3N3}Htid6Xa89-1XbN;VzSR_A;(uB_(b%dQfJ5jk-XNg|VXzb{lA9MT z`nGCo2IHuZMAN9zay{A8+z87tt?|o4(P{PZnrVX#wnKxXnscVSv2aIewW)Z#+=}F9 z9k|OxxmB$l9Y_kP(xOTnyg+>0`3+d0bwDBodDsQN`-IQg;3w<(l!@{i$6A*pX`D)~sk->Kxa9>{j=M{+Z#UJ=g@NG(Ge-Nw_3TYpByhD*n2Y=wh z1>fTXZx;Hod`}KS#sGdJNA~V&^Px0Vl!kohPPpLjOt0*o%G-P>-z3UkEUPTHK0c41 z2kQ&@=y|etM%stk(L#IhN4(m%4}7NJV?XdELcie$UPQ{JAs_ev!MlCn;Q?T9Kk%YG zxio~^8_}I&9$}Qd2ko3z+1W&4{@V|{r>K6ISC%gm<+DGO=L}h=+PZhvs~G^3Ju`~CWqhyv(ZeR7b|vw zMW5k<)5EBZ2D4Ypv~aLWH`IQwE_Sit#gf-9LUF0hLTlRa*URYSjrdn+oz0EN&l{w8zN<&UgyOYmaEY}E45{d<1shgvwpl56GVI96Z1zrA^ zGBjF#YO(C?d>4BXd0m~_$t(Qt#d1*9j`#~I>hBODHqnNI5x>^W4NGLL&elzM0vQ^- zK*4wWWr#b+K%sY7JrE&y2670jnm&#i2 zuyV!Ls$%#D#Wr*JxFxbj)fo^~HX;nMR!+fuckNIkW#=ZCuIv#oXU&getk zA~0%QM=m?)+LzZ|3+YkKTpq&ZQ@fYR`P9s5g}4hODWDuTD97!}@z8QSy&QjCj<=Ye zE|(`$41Oyi8jmYg;OMzXtAS7c4;F2Rf9uNSRt^^^-@H;D*eu|<)eM{rwfepyD~`@3 zl^?9NnhhCY#j|T$u?vq`C5O4rUu{*}ImIeY`-*sRD<#ylZk3#<2^_b}YOP?W6({Fe zaalQbF?nr}!)ybS%k{>U>y`W;y+NDhFlW47%Q4Ag2`{W)=gY_3GRihso3D7Nrr-Q8 z@8e|cRzUevbh%({zXGR)TFbAL<5vx=yjzqNSJ<6WZr5gu)qb=U2T2LHt%AAbxJ8Jy zVnqW}_@FbgM@$70EXd^tnv10oI(^pz}m z1GE53t}HzT+y-0(90TkDh=0`<$&xd`8(898O_I6-+95of0=R!!l2WdK z2Al=lKwwZG`BVpd=h6@nV_W=h2NV*Fc6bKgwun}+$kc@`c0g3^OmSfZart;3(iU-~!+;z$<_Spsd7ib^yEpH2_h7I6z0hV8BR#gsaA5ha}ZG zC`lpkzBBQF#aLh4iY2L_lcaWb75L)WwJ;wbx}aD7_L5YxR+du0ck3S8{d7#ofd!j> z=rsS&y)VwTnK+i0#4C$GO`e27O&c;LEo3yZOOh0cr4|ibAq$C&l*U0;;`ouQL4CD_ zZI!YqIOR+SK2=^S@Emq^Qbr=b6WCdqrqA3aN#6kG;?J@K!mP^k?VXk2nl6abMgsE7 zi~g6#L*KEJR2lyl>PeZqU0xQF;+r`7XQl&8p7{RQBdwog*Q2j03mha#ql6s&5;`CAAJ_B3 zhO*g!^~no+Dz(+ed4+19V3@*bj3U(pI5`J!n_fyHhB&F0QXAdL>7@uqbZakl-0t>L zB5fsnS^ZvG#(jD#_zQ$QsW(;{o~gI`6oHA#N^tuV)kpg`Q5E*=qjZOGb04KW(9=F@ zS^d6>k6ZFmB;pdKM4QEummcH}F+79%s>8FouUh$Upk^*Hk`xSxoLIi_dN`>3TF6=m z86IAgf6S|OOxgXEX@uvYBqa#n^@JoTk?2FuB(;e}NlF+mPEvea#q5@(E7E5$6kZDA zWjePcDUGU$g78Tn71ZbL1}HU>qBr9&Zvk4MEYP=#v#{1wU!q6`Lw z-Ul85>tUQ9gYBgMu>rkGo*y5ec&khD0!)P8z>nJi**TiO8lVKIljk&9k>FlR;d&6M zfa=c4JaV9tsdo8W2r$`F_*M|7`N4t8r|L6GQy>?$>_I%6V)9Q`Vn}VN3;z68cpv;2 z2#}p4dD4r1y6ZnvJOag5*)&y=n(8syyFeTUV9m?>1*Xhme)TgYSXFyeq4pYt z-88Ej2~3&E+&4vOJw)u7b*OEx9v60!L$@m9Dh`P76F7-bo`CB?V3BYe{Si+xNpht1 zz_1s`P7tOQhYN;DG9mLBgKKOA>c;TG6y;DTxjRViJ)9)>hK`bZgKA|iCC&v-;~bN{ zd=$xEjMGx03|T9iGMys>0DnF;ck)q@LBCPz`v{Ti6-!Ed?|Yw*mX4q z1^=ocRP+S6^4CKY??6#a6x?+o^|t*Q7o50t1^)%Gi8mT520z>Sd#Z!0lXM8s7}f-y z?u8bB6Zq#tl`!=&v8tuFSdZe~Zi!9^Eck=Kqri)QZ4ieU02SpG{3w2Ns8YLX#bZ`+ zCaDQv689aZgw?F*Yhf8)3O=wvxVK6-nQqYDq;GMxeZ;T=(Vwhi>h^C22iCT`qrfIaT=-Crrmw z?0{lEI#oUT3RBgi&wjYdB@I^()mg(;mG#3F@2cOI5DSkEwiv+NO zzaFWC=_}gZf!``Q3=n-d%o~kT{Izb_ps()0LBhX$K4_HUVJ}1hci~s@S)&x!u7Wjy z75}=e5LGd%Rd9@VlPi}qet$;l3%HM^^Br(iosFc!XzLm{svA_)IOEOBA#hg?#&HrCz0Y^LKc?3^>i7j#gYN#WlYtsWsp~ z;_(oz|G(l=82Cpuk~F5=^+`k@y=vP^)zcEC>J58K)v1T%s2(WW$9&ZMSNSBp2CU#u z$0#0^&DYsO(nUZlUqAMvUWs3x^aeot?4_cA zWC=~H|Hkn_6V#nH3#HgZ-%U_DhgNjV>R;MdUKnDT1nFdHJ>U!OH4*-1F^`$3x<8*! zRQ%N^Y6>MU9TqVzaa}`Obum{A00kgs1Xy_CL?udXXPj-t!gG*x6F#i_)j0ZFRF|c@ z+$-&)$!$^-@fCuImAp^dN5|riVfd3SfR%j7$Kt~Jvh*9klb=gdf+H$6PbmK2QU+jW z`7C<*p{o-d%j`>R3pC?wlEu|i%mdSv&XuFv{u5am1E|kur7QjL*f-K~LP+iKKGYyf zcXF*RfXZ{PN$Q9;1Jb(;LWBee|H`VN@_h6prF-SgWtxT$>;Rh)3l;E-lhk>5JxS@% ztfIf4&6cI%0HGnU^&+n#IW(|d1<}K~>;)fI58i z8pT69AEL4_xHjS9s9&^3d6>}|3wjhnz%IZ6c;n&(XH#H`L2NckkyKY2v~a(Jfh*i> zfxl=YNr{jPd>Akaw7_=((?OR3zllXWgZM&4qR2;Z_%5`|dD`$i@Y@Sr7b` zA;_bF^9I5*g*W_hP-G35GRh;ULAZ(lnW!xAFQ4K504?xSz$VaA3Q|u)FvfU-OyEJI z&_T$@0nbP9z8D=^2z-1j#(XF`4P0*mMh>GG2^=&LdgxFjaFZz*F^o!d28d}>5xt^! znZQ-2<0 zG7|XvWw42`b{p{ERj>1 z%H`X(Vy6K1q2V&%nm<|TNZ=TNXt)dT*q^a0P=mG>C09;?C zGtg@gUCRrSfybBAnZOmf6M=657NfGj%66;?&>tsFL^36Q2U3%e3p@l+0$SklfHKgT z!21EB69vF>MxK>%0q$B(BUdb)2Ry6BY&-f&Bq#paXz61D1i_2HYSY=L7b1H1OYhumBOd zb=ik#>HzdXNB=5Gy9=-wv0w{;*A-%pvBI|jdmO|eh9^z{o(m9DBkkWjR6NC@Dy|i@Xr8YbQ`eY40Z}C z3p@%S5AwnaGeWSjG+4iPX-91tAOuZ#9=aBQL*18gbdIL2mTx&bmjx!2iSl%1BYC;(gG)2 z=?s;~1mgmwxxo7XqIUu>xPtfOXka1mw*X;O;Fzn>hddT|J0Jk`PTnJ_8U96a(KXr|$s2699dIMbIN?fmZ;E(SS&`^fP0sKqmvA2K2`R zUjSB0G5?}MIEb$RqOpa*8vyE11Me=U^MMbR)53A<{>b`d$-r{~LSNwZ<@71whvoDm zV9jHzjveqZfEc-=$Jqb6zpMo=zzxdjhQR&G>Hfgk0MXIKz-IxXqb0!Yo>=7u;6`QE zX=)1G_!-s#j`pU&&0b(SK(_#X2iO8y;Qff(uVjEJ0I}#LPO(fh06gR$E1e45O7Zbl^a0FCbwrOgUS^FeO`URQ;rO`rw7VT-^8yPyQPwmsr%_+xc|Qyh_7g3e&z zS6Y&MKqF%$b;!UE8+0N8_zXZiL(erN!d3xLP@ zlk_d5``SNu$(RiK37gV1(4JYAUfRx*jP^gKV_T=SWVmi|MwZ12vL+Yp_D|Y zQA$Kfhz4bkeg=*n!{yNgSC8Sb{RaeM0HjcgP!)B_W}bJh`j?IH#+hdcbroeyvcc%X?Nx^`xbIL zh;A;Nk9XxUS&I-4j|)pL<}vAz3j98B+!D^~fQ4?{1&HgHb3O`O;LUkQ@QDxCe2w5H zU(VwNxs1t5v_G}0*-F%SHJ+p50#m`C!8}F;&xD{U!a3gpdPH!y*9$CNhh<9SDFa7E zV{U*~0pCIX@Lgcp2CmZ)SI2PafuKYzHwvU#n0$!ZjHtMg^Ge`FXdg~g33|t&pzyxn z3>2Cs78}q%9)&;~6VE5|m{#~oaQG(9D}ld3$++!%!6_-YqtvWm1H}4bgN*!U9`g)d z0sIZ3p1&6qr6MEJi8Hoh=)l{6ub@Ksb}&2*ohwkJTCfK&%_37McoL!=mEaq( zCyvkJ()B>OgV=}s#5hQ}3173o3(z;DSAtrHxQmHEH;B#|2;xNp{dc7pdPuS|FLYpd4~;}h(3d!m0U@^z=Mzt4$c8LU*c|iDtPHKE{2(|3Y5NrA%{FfQ;0^v z67c?2%#KKJ0OkJR+MXB;QPVKjc#QQm79~O^8*H>y$#5Gd|3p3ye zHn2k$9Mi~SqTn?_nI;}%OzB|dGfdC$MB`>O4L%EqZVZZZDkV;D#dkoYTYSq9Qg@!J}Qc6Yzzg(|hhi z$OXh7&G%oR3*6ex`MsdbC)|y#xI^IJ&uDLWIdJ?J&g+3$Uoj0MooL+09ZPijhQ6~E z^S=wsvY)thxG?^#nOVs2nPME^0y^;U&>G$mtb?dF#7qQr&^)mZ^c8TP_*}^EZ<-eH zvIL@yaBLMAD}{9l3_oH6MCT#uu?X{^4LvYf?1{AywQD=L1Pds1F`~@?Eb^j_iH9L- zntV`wAl4J$HNfoI63QPi%y!pu~@2Pb?kFXX25k z4Aj;{;nMKU2lR$0zpo~Xzx2}LbKhRTN{DKPut;XeIL>>46541Uf7BRU0(s#?L`H|t zgu?59|3EZ1$YBj9FiI0~aeN{X=R(we z_MpooK9i3;E#M-&4vY#B51xZ4e+!t3B_KK}u@@>s{?DL?A$J}xum_@J5$DMu#uMl1M8~D~3w-qOn#zN8_s2zSUsAY=gfY$+eW_(6=J8B7LKval*;Oi-9 zbELlkPnlzcz?Xm`ON=adqUm%Ld^?{1o56g6vasVD*kO%cP6vZ(Hn=c`jRx2SQ4NT+ z5JkPce?iKQTcDzasyTDfWH^?X1Qz9J#HnuR}|ht4$%-r%rkQj zqJk24M5AUYs15i9q7fwAz-JD{qP=l!4k)n^{Rv(g`~#vUsNRV2-w}rng&lG%#wx_@ zL=OjZAZmM}X*`1AknRY2K}zsB;0;I)g{TGZCE+e2oya6}g(Ip$R3Hs73o=F?;>G@S z%>R`z^$^uYV-uovA$Q6Ij!r>IF{WurC+>$R5Am$n6Diz-^4A|k=c4cw%0#4i z6Y@lgEg?^|5qly9M^HL3QS6Ba#GXh?@05plN9>8OAi6N|C#AEA>&2bv|k{v@#}tHKaE9xVF4=xR`lo6a1IHH z5UD8+GB6Ms8<-f13`~rSmnjZ16mJ^RrYP>05<1!&jLCQ-2xSv_V}7j(Pl6F7@`m8P z@dohm0&nJJ-^RSK3x9OoRM_0JhPU8Fu$9z>AZ-u!liS2I%WgP%7Udfr_1;__JS63T zh@biSNxe;m`$k{qEiImEFxM>hf$+gRopudR3#r_?`Qc3;PCDFJ^k`W@#+I)i ziu~Dzu_;Tn@5*Rb76*qVsffb7-o=5OVTAFEnV zn$0n)Tem5D%B%+Q8}?lKE$>Zs%kKqR-FPBR(f6i zZKeFH|jvDU#upUSv6 zuIYJ@vG)BTkt=0T7cLOli{|Fo<=Cd!_(w#9n(OPY2n(DP^uN9_X+=noe(0J2O4Sby z3-OIy5fQG>{?|9GLwx=Edj|E0NyzkT06~lDh&U@TARlF?Mo#EdO+cD@jt#apa3olPypZiBz{FcTUN{f{%?l~^Lrt{C& zdp7Y4;)!CgTz6#ii8abPv!j9!T3$A4)VUX-=LeV$5aQd8*Op)n71?bjPWGp(z)Z5TK*O{Uj-K(n37 zf$2X7T0eQui}x;i8hW=N*{1l6%AIkdo?D&)t4xxD^HS4>RO~tM*iCXc+ct0GdB-A| zmY4}0_R4E6sN9MkRg;}?snxn`;*0c0hgV7kw!NAaEIF{Lr_wsTV(SqJ*H;<-#i|BP zX2MDp%kq(t_s_=bCaRga+pg0JoWCt1$;CSIpO`c0SKi5c9U5HUck7e6u5->&tvMSM zN1C_qRo6=t3YH&pn%e0c5@UVmDLWydjD4!C=i_((jn3pmk%Ga&;g^0E*KX4ao^eTi zY{aOS-@eTIyTi6E!D->(n{$(+w!bN?7_!}-ZRss}P-Ax5A+cKS$L5M1*UL*j#||qf zOPc>pZQE+MFOPhqr`>-Ur`%hswzO&fEid=Qak)#@zxgULjxj9g{VBg-Ut@@ywfz}G z(^jp@KP|G&S_Z$qoX~bteF$HFyZNxx!X2YZ|5>+tno_grFr6QtR=UQzHTc>^IA0sR z<=oW{LA`{!C{fZ@lqj6UO>c6B+mFtRd8FrXe@Fi9izx@oGuJ*81hR%AGm(*j$iUQK zGEFMR*u>0&P19wfz+WbnnX?Rrpuf=!CoAa^;1}o@Y%okDM+pODW$e6z!!c3$h5s*2 z@N1f;Xv}}}sSIz#aDU{Uw8AeeA~J}z3JUQ>U!UaThiNJI*B;GHS37CC+KTBafyq2r zwD#o$*Q4@oov$^H^NjED>s*h|9$9@fbhYX2yOm2C({f7g4{Ou<>yA)6`r*=Wk&LQg za@-Ut|FWyjFHcqM=x+U4>UVf-4dlzt!%<4EuQP$0e&V@~3>3_(WwZ%yF8#`r7W@brba7sbm$O z-F;x+sSE3N{orjW;YYJ`&E~0S2ZbkmxuLIKF!860$2+t6rWXGuYfDYL_I`~}#p&F+ z#=9lM-|nodDspy?y=a*@TTeE${6$)%!WGGsLq5X|@ZEj@tCLDEE0rVd^1$`%zn!k6*vq*i*V7rXVWmjD)n1 zofs`Yf0xJU=N=NcMd+%J*IGf zOiPQO&vBI>udjB6l2mD{)gwaYQ>sM zsZ}NmpQwClv|=-67oCr(m9u!&c%`mjcFmp(0*gMY>v0Qw$)!D z9omD!=cKEK*=}ALd`b6RK$hyza>ehjK6-58_p}^6Gs{nE*&n^z*E}vc5SP|wZ`)d) zZ!)UItFTlk88fE%xUqF_g6@UcA5#Ur)qkqI+gHp8HAWY=NTS)f|d)B`5>K)axsHaA5nj^GrR~U4keAh7X_qb=ghJ%8_fvT>kuw5(#TT}avWJl!w) zo-5}?yLVof^0>D3>DRCy?p3j>ZR=OCf9CVfY^;7h?9(xk@-a>4Me`m7yx(pq>zCJI((_Ysf#vDJpHqqhM>2&k%n!$vzST1MBcb_+V`A5e$l~=; zw@s}p4W>U;%+Gh|Y1+SQp~2TThYv36vpD4;7dyz*IBkb!%ZU-y?g>LazW&x%Iml{j zl0!(d!@C)ouFnML?gZh2Ct)+R7r)`eSZu+JwENb7fYx-)w)PTa+ zX?06)Dh)9d;p1hp;ba42Ly?K`xq;0BO9h$#wlkf&1@lC{^BqbSyWgMmbmzNaGq;|K z_;LMI;Pm3Sj<4@-OD710vt#z(^^fk`l)LoZqEp|pCr!$%>lU14_pbOdYUHgQL2tu4 zS!0p2>zlyNBUY|o_zPJ5{RQt=KU?+b=(>WqgIkxkr4~14+dsYZJju!|`MX8gorU}F z+AVr4kYBO8>T+Gyd7bta)2i{kc5f{H{I}(C!l%>u;RYQfp{un^wo_-JG@jq2>#= zbznwM^m()V9(f0~O(ztVEWjH>4y8Gsx7>VlxahZnHyHt=v)c}NPu*})#=J~<#6&Zd z`g;eu_A0tQ-}%O2V2R2fBhA;CWSlzY?(+PB_Sq_1&9B{ygw;`7zh)1p4~b(BpJe~J zx}u`zh`iZ;9p-qWu%_I5XG_w-fq99mHZ3}N_Iq(f&1e42LvuIOE!`VGdvCDj?ti?- z|NAIQ&FIXtfGNJuu6PIp-R(NCik)B`+TGV+(w4F5Uq{Kjrw=U^<2;ut`*se0 zR5HxyX{JP@iiP22y+KYA|L#fpXuV|2)LmyEl_%+@)@duM-TPJ^cIsu&7$1*Ng&OI_ z-Rj%U*1Wr_E77z+{`u2R-mN&1(vE=23B6|&^w*B}ENh+?FUh=;TJ9qy)Amoq`xw!s PH7BL+N=zui@3#K~eqJf_ delta 34685 zcmbrncUV-%_Xm9EURLU|AS^|?EP@3^5XFLmf-Z^*3W^0wY}ipjjSUQ9#FeNSbu{)C zHO7j%c0on3V~ZL!0b3TaV2yp>&)fy|o8SAq|GYdooHA$5%$<79xfhdZRL!YSEy&F1 zcKzCWr+tUER73KG{hRH;CtolYFw*Y6i{K<2v*AC!VN$(DsaE_LIg1!3^)8bWgP(V;@s zPo+>>uoi9W3X4QRXhLLZ3XLR<#DZixo^%uE)TO7$cO)dQu2@Fek2xd=T3xX=M-j0> z5{&BJYeYett2{d&DC=ZE`I4i8aPFKo>v6zt0{KWN8IA@C!U8aVR4a|6ab{}bOoy69 zwYzW-26L5Dd07tri?9IL4K0drAq1^VT`!poKRv=Uq7v!1X>KsP1~wI^Ok1tK_bCs_s=Cxd!?&9FlUE>iW6L)10^X z%GX^0{_SB?f3!IX8ar)Hti~cXCyL%t1Q9Q4Tca8IhqkZLhHRpF5NFF_C(SvND_Li|kMf+JMsKkAIP!s29b7M6D zhTmy{Wlyq#x>|il7Sd@}EyT}z=zgp2WFWP%jv)E8vvn&{pU$=JLT=NW)@{i$>Tc74 z#M8kxF~pp1xAAB?GY>**tEdu`j1 zO#05&lcZA@m5;Kgl54Jf%QZLA_Nu<5CS9*;KniGys?g)!cJwVfUp4D4AGF*ge{I&i zQf*GVw-pwKBD&jdhhN29L5R_v!U7Gd?tTA$eNGq#z2O#ff5uE2tm$m~Xbki@`vGJQ z4Xo)`ywcGPLw>+9vd+)LumE%kn#rAYr($&H3_pO6)kSII zI_5gIjFGN&%C%`?7)`y^4H~BW2E+Ba;imtoR0n*gT*pSSx)WOI54nm1ouaO*d{TqA z9rA*=9Zq+u4-*?Y+R06<+)U>>)m7ab!W%1$(Or$fIy*~`J2iGK*o;=(cq{Y&r*tN@ zac-#Wq2LBrRC0sA(hkmNJcezm8kTeacjPGfRt&SeOxMfdp9fn++Gs6Y;44sor zDigeb#g%e6Nb<4=%U)~#Xncj)fy+yRqtT&%a2wUW1-DHoo00~0u{}GLThz54R>eo=By9$!&+M;;Wuv;M|31?m};=KpNSKtzTG`9EEfd1 z9c|7?Zw!&Ps9k^xH6rGWv@`6YW}1K+bD(1APlGihafPhXIFnm+pQfj{=@;I2yOIA^ z8$GAhS(XRTP`_>@kk0XIZGPsBTx4qOp5H7CN=ltjl0jG1@h1J~u{wQ7H|pj;LTt2@ zZVw2vf6aKui?q5}O{zBJoMAdG@mHH~eTCbMuND79vHmpb?%#-x4`@Lw=(d37H7_jr z-zq&Az2xs`KI((dj>7%-l zB!@Pr7ot3XQ@5yH6u+Cxx6x7ce6X^9suxKf(2{!2_KhJowu>sS3oNfG`nH}2E+MD- zVI-J#t*_BsdTumE>e_qfbijyq^41y)Ft{$-oKD`lc5&L4#S_0*dC}GNJCdICQT^6o zNm|_~%>X_{@?qJxf4>t3@5vZCL%+%|V~csy=JeILB=+cu8#Yy|Qv}ih4cy2jI<3Jk z

!d3?Q9pL|`B;!ZCqScI&3V5%9wa9+eXit5Z;VJTTEE^qJ9!^DZJMIt8~Ct~KSA z@1Zt>Hfq=_c0EWTJtX9`p=mcFXzMGsLZDOb!f$QMf*Cf@j_2Adtnu7g;b~l5HEWqd z5Ku+pRdN)Qxw1|XPp>wNuv+>9zwbK-7>-fTMkDI3n9R%Uv^p!TQORVcEqo805FABX z!2b7;8e-|LMqXBZGv&&ehIaJNM$gCxdM3!tTA#s%v6=yfC$ut1M)aHhJ(2`co zJk%w40QCJC25i2;f2>?9aXz?D*i@Y+N*6CecGlGiaaAu*7_}}sxPxNYijb9e3Ls> z0Xk&?{TNZJ{@r1cpqjs#ukoz#8$J14XAcJ#x!-6GS?(eY98t`?Q9X}FMtYDpw0~qP zcsna1z3}^RWR$%bDrvLct0p$l8gZ#8Z&UlWp?1IafL*(JnoMjimA!Hk?a?;MvKxea zEB!{-w+-+Q9Ew#i3kq4`J|K;%>^7f`7%JtQ?ikm9GI;Y!i=p&I+YmC0)@c`Ly$rXf zXM+}PW?E(Y7Bxf07YPEfv-0`-QG!+3kJ`>ge&AKGU(IxL1YZ|>adyYrNteV!9Dy= z+t@mWJ0EBv!hl0l>mGD@DCaw`G4wi#PNO3#`{)7a1zPQ#8oA#By+GGin6w5MLg*vy z2ogXOV^&!$94uFjFnH&EiXp`Msfk}>P#>pjV%@A#Onj!{8Ex3f(>h3IdCRBrdUk3} ztcDG$YI+7;9qVp=={uRtG$iHIMx8vYm&rWWZa$s zpI_%DdFN8YTzV<47R`-Qg%->5#7qoTsiFIIn1fFtYew+1!RHTIqUhDXx;lgnP}|R` z&OY9@JmPL9vU8@vp4!BF`oBRZ47tJFO-Xl(+>gBgi|YGw*E;7LLb~%{LGhNx$E$6Q zbE)nMZ%mgrKE9tw4%18BH7$#<=?IyNCBpamBd zDVhQC3q5L1s0%0UB$d6wR;D`HVFfzSGYQ2mce{u}6mI`qb$)M76`EQJp}!@1s@&Us zWBlK?G&P|P{gh}EaHXx>LJ3e+3%fWex3Ed3r|GO7E$TGI7BVax#rJkS zkl5SdpX9x*h`{K+8Y%B>dwRb|6Ou+;*3}JUO3q zrJs{MNlBhZzX)QbiswVx`K@7M-mw043HeAD4hSWG(4ql@Nn_ezU^jAsW(;ge#?wOs zJ1ToK+LgED^|F9+8Q zT*gqN`o}0y&=uEL`hw3r40 zA_(EG-3gqC#V9sd58y+47^E>h+o-ldBPiMiK1Z>hE6nH*rzXWHkNHnra1(;8@E>>$ z2UT`7N{s41+VM3|jGCk9vO%>;Bt1N+A)KI!K@F|ib&|*HqTxOD9o)xijNC%!XNJXe z&fs>c_|5YENo<56eTI19&%xKo`MjM&HW3m^lZJJ$I^RLAt}>+2EyFHay=q^@F3t^1 zEMKq#48zy(_Ors*(8HrNUVGY_eGgE`CZ zkh^qwT82X~pOycypGE`IZ<8!)HE|+2M`uoaO776qN$#YS=1zKO@vbR?w_JrMojQ3g z=|F3IUt+N&R2Chge|`U|=9G1?ha)vVMt2R*y2kL1-k*{|Tzv!KMWMS56NRZPw5}Ga_xv8;e48Nd7_o$Oyz1P7e}wtLg0-&FK5--E0@gD@j)Z z`-0&m?LDKdZAs8K6@2M$GlDQnw`R;$OxlDdY3kHqx*{WnF#0fKp~LHjJODkR+LwU4 zTV5OY=-kZlq=bIT{L#@6C<>i*h2NC^v4ZL{-RYj0iQ)-LKW8?hZGX7HeZH*PqU$em zhu_ryru`T?D=UmFphvP8@)wD-;&EndnzfO;7uk`P{d_TJh+bz?maQe>v^3if{i-qh z2|@JFj@oU_vTs;M~4A z>E_PePdd_ex(@2`3yj8CU8y$ftuYSlgU$LX)3eUTEINnepoc@r0nCw5IHeWP~+X@j?m?~~NLJ4)(;+d{<7;%+2av=Wu3E#${Df-kGd0m zC^4+b+xE*nLeAwaTrpQ9m-5_KPZE(qTC}!}MLEUDPg zw#m=k?KvJNryT+wpBVltg!O6F|ySkA=6ke$8CB%84 zP)oH>;ZJLA@y3>Jxh24UA-eJ<9{>vn^3t|UBcjc4`r@~3CxY<- zzaJHC2U72C*`z4%*KMao9<=P-K|WFMU9ZS~s@}cUvPUEjT4&95q{nu5YC3f086haM ztWDJW{of_hc;XvfnRa;A8X@+*%_Mnp>o~AYWvMW%L7PMceXt`ePK$z@orJM_Ax; zR@}s+K+gesJmMTd^Y;7Ua=E#`vFa{N3j;52dTXOPwt@)d&v10Y$26*)sMo>GWE(9$7~)=Ts#V9R?g>iwR-5&~m}ZYX zV^sH}&WAd<&o(Le7}c-JzbI^%6+X}@hnjjfF)3(_>UCcfRI`%c8OTZ-Y0066WFj>l zY6%ys<>7vI^dCM^lH4~7qk0eBa@f6V{~98O(;gPkMLcr`czCQv^-u#ux#}Nf{w%Tv z$CSE-VxO-4?KGI>GY083U`S36#|nAbR5Ug zKD22d7od=zX0_jlvho`yg+;tKxyn$ku;M(jJc_?)*3k$gwoe`nuVEc(G#ctq^J9l` zIGjATnkSj_{X}bt>hfc}mR5*D`qSWiY}or8_W^vT*m%1jV=(r{W*@Uw%}BPh!LpDFv78E&NM#~Zl(S&jikM4xVMn05uJ zU=@!=a+N3Pf#YpzALfPXeRnbSimQLXK(2BNL^}0WUXY)oI7VxosMU7^irVFv5uqhB6Gc>FIpM-<1&W;>!FtEG@$JImTw5gi?Z_*mT(C6RbiDEZ1tfpozM zbvR+vZW6n#LT2a(9M=q^R;Zqn}y8#sAEnDv%SbKQ?LhLEd$ zuUZ$SyG#!iy7#!16J42;{3@sO+nmIY$YOoEA_|9U@P(6A`ngE)0xVx=MT*Cu_+f!L zx(QNs@E^wsZcutwq&WYz=qSh>kCQa;RI`kEpm&#M6e@a{}1K_}XSj`BSX>z~kE80T7^P7l`VqP=S$Z*e@`2RgMO%~JZ~ zcLelq<#@P)gtiq>g*g;52q@LTht3mhw5o%ZNJT21T}I=ogLfS!bo^o~B9f=vPiPCu z?fi^_nUGaxo}*az0JdhHM%I*Q|GlL3RqjPiZH{s~5C(FhwKl8l82D9H2GtWBxk0p3 z>M+3)C^YLb{jR7XccqIw>Ua4Ii%A!aH+a#NMzwGUt1w^NnA7)f%XDsM7ZbmM-YjYn z{rx4hhTAeu`)>)l{TpZTS}FNNNdAd)auAMNaK8{CXUDO0a_&RH=yx23&z;*zPVhrI zn)BNVjQTTCQrUZQT1;xt6O zUBs)POdIBW6=h0Ljm(EdWg)LxWJdT#`YP8c;jNr=R3@G0_G8Vwq3KR%o(s-chG#-w zEs(zs(iO{{Jp~hnbUsrM2A~Jq&;#DtfU3@hb6%%d!cmUG9O^}iCx2J>?;lX6{yndv zzV;(mSq>TA6$WW@9Qlj&79-x^&ghIpB*IHv0Q~SrKHi&W<0Ej?8r21SfOUu7$}1-U z%R+ZiUN^hwsPj!*{2-V1)uf{*8bsBrI4PFY&yVx1;ejAp!(bpHl z@SdSz$$HWW{dDd(X z@`2X!=XptM{;d_Qit_sYJ&lk>^k!*<^NamB(9_LB^2>S7&!|Q=9=Vh|G^otS;}FUW zy+h^8yvxB%l;?JwX;{3LXIoa&F=h2#CO{+PvcV2I*aL=u4k)^4R3E0h%IbOsqY!aY znjbEr*(E&XVmQ%6HfCF-D5r1BJni4;q4Lg{W@8XglBIl*=YKbjki~hE@AV`$xqKyJ z;dvX?zvbP!|AyG;&VG?>&b#w)lbL9-J#Ti!6f*?-q_PK3bX3kG0eKH9D@4*N@6yYr z1U|UM>&4`H-m2I2M7;4l{cj@P4SK!Z#mnDX6B3kn=bev&%%;ZA@5~%ueKsyWLVWjn zk@1AQWIq$~#(dWE&qi%dJbhm2&31@HYp(uAFjgWpm_{P2#ev&t**-^$L1*~splHI% zB;st-pn&gv*^#!_o0*Ybgc$Yx6r_Vl^z2u2vXvatce5amBofEMZO94H<{!PNB+#tG z%&?VRoy#0Ml)`PI}|YE%j^Hf6RNr^7)Npw?qvD@X zehNY>n|RC`I}>-yW>t#*`X0`tCm}o7b{Eow%w_jnNK4Y1dAWjfWeKjNsr_XgtQ2c= z`dggpU*-CplNW5OH%WsXZy(}LcCv6E;zcI2 zWFO*+N15b9!bOX0w$F!n+r0Tfj@aBVydT(IA2Ql%`W{4gM5R|uX1!_?Z?{|XcsG!; zIcsQ;%@?^U8}9_<#l#lXCfhOG?R?1)qG4NnNjGwdee}hsuV9Teq&a!SMrzRLewMAl z1ifWJxk)-4(nmYK==z$Z-63uDRaa?}hC{ka zzrznF0Qr^uQ-^r^Z_40RkwMZLwOQ{zO&Tf3pUWW4dMlpprdn;7>Y}PHc)l z2_?Duo&MyN4>9OB#*ms4N!0I;C9@<_q7RQF7e!H+rMK-)V$DhLrarxi8ELHV+mD2NUBo@)HHSD^WHf=X9FHUxK8O5lek}yym!gRMF^6=wodAZ9{dBmr>M^WY4hbWR zS!xbxWszE+*HXmm_vDZn#N$z2QAkr5kWj|@mi;^&J^}c$McYz&igncyAOA&AG3m>$zm7n}-uB>xy+( zjOyATaX2+XcX&Y2lCArR#3U~4$j@q{`m{4w#7T|21@VHK%b~=pLsB#5VCvM~{g(eo z*73TdT&k4$8!L08+8t`#dk%v0iiq(EiR8(aq|&jYhL3Wn#7%Lp9L`7^ z)_x(0B)iz0g=D^Cngd*u+(=QrMY-#&Q`BVje=(oHhdGKL zJVk-Wt~?cr#h0s$gupP0FRWZ;XXe64U7W3L8R?Mm0Z)!Yp;A>q5RIpMVdWX*!SJxO zfUTBi;nwa0 zS$5kb+hvli1;S!4=E5w$6`YfeBQ(Og*wz+PpR4>e5?RXUKOsBJA7s|)G$;OU&JDWQ zV_Oh}R#icbsiqof`d&*(a}nc0e<7nhrq|*F5?z`T&xgS)oG+;88~m%GT;)RMzMQNf zsrnQu`-E8V=tcwL~C9;ZSC@We`x)LYm zyoNMt_wYR~PdWaW)|ba0*T5UA$MQ>#O`%d_D0F{nn~P~qx|y5dG-NBR@opg9!tjw5 ztRYTjxr$qkOtqFckt^)r8seqiijn?rmDTJiipV5pyOub64l|PtY@WbZ2<`>GHn8kM z^5N-PN3eElNe|+{epw60=LOTRB^`aXqIVT$2(UHsp5gOq81xY<6CQ^p4+2>2btH(i z(05-)ViYQalAl#NMJaHO@=yKNO(a{ypf>)EEFwkh)NjPg`X7A$h}w=u^=MZ48~NZG z`JM|RREtmHQ1Q}c->UNJ%k*ZyllsJB8_y9Bf@{)j8zG`-RG6;nw)*ZnNEyBrWud#s z2(px|*@YYXmj2)_+{nruh)1jUa2|WKo5VZC!}q{m?`A^XO(=oI=aHk>!ghN|l)ILo z|E|c@G~)!4li{s7Va~tYVySzGH~GjG?jgff?|reD3QEmlBxKx_ubAatEP{co!Cn&M z?)(BDP8mxoTyQ>4xE>cXyWkW&e0-g%Q=|4?l4xJY66cdzcrFiw6LRG2-@T-ZO%e7m zUSft^#(N1CzmH5H0s6vyWV>iR9MhoHJ=YEj?8#;vAn(X&{p5q>2_b#h(8Hu1@nydq zhFj#wP9MhV6&te0hevH(aJk*GRa9%Y7oK zx`x}c!`FzP>PiV8inMxKT_OC*JFM~=+^NBA_#ar1PgwpRL{0u?fBb=a`~p*5Cv!+B zTY8-gCME3Cbuv-e3k^)@8KWzX%~f}1nK#Hvsn%`62FxJNB$aI=i^3Wc^{ni_y{^zZO1Eop@o>@F4=;!>&aa-6Up4~k<;WK z_V6Aej76;ZeH>6@S-<;askPH_*#i98zKlG;>fXv~KOmi?GZ*E-bAe}>^MGVZ4Nbf= z8OJma$x;mak%!pzUhL^Z9C}9P^bbiwa5VNG_=Dwoje#5>xa0mRhwHqHX&#ZiB#Zs| zh{TECZD&D`(M~4oTtU)291h82R+DG>NC&f)C&sI^EnkmcUV%V1gZ))O;z&Q%=rNAc zX)OLR(eWVYF>%Anc=wnjB1rA}1Z92MxF_T)na|ok1^1ezJSCl_A5K-xe<3S*ioMW^ zEqsROFK73k5si4VkoCV$8nc#_WVUEs$WBy}1jH6D&vD-5u&C!4x4CS>b21l+jL**z z)GT97UXToHpFQ$`SsK-d2wvdmeXGCrf|%pAJ-hP~8?b`7wQXbj)98;|-sF`)iUVlKT4Kw^+?$i{I%0qnfRBB-WZJ-8(q?_1=GiOM21R zSyvXLGsNm1b=58UoOwzT7R2g2a+ka(-?eP}J72dvxuVM6iM5H(lkj&8Ji!v3o3s;A zcoeexxoTg0xNo?y%4oy}YhV&>W-H$lSBIxts|}*8r^^U zi6>j$loWoOY_UZn)ybCkaAvtH_!B%G#Lpi{W5=ub4E%sAx`T~!5;S^Hz*c;~Jy^s% zKayIGo4JCUNnxo;VHtbH6~>wrrf~&#lfo#I!f+P*k<|5fMu+#qZNza@?bhJtI{%7? zT4*jGgsHiY#53tK`YHR_rkl&?*9(Gkh-`*e;rRc-Jo}){Nz>Tz9Itnzt`e62g+V!c z@{n7WvnMv!S(5LYr6!FsHp)l>9dF^rsm>l1fkxe8w#`Uf zeNS!To#JaLtu1QnxgvjMhDO$#6gRMPBR2cA#rC3uManYVN4enx7dH@neA{q_=alhc z1a;$hT}xBlR;Ie)i&I5s$7o)lG!-;96$CF{E_#v6iw}uS$@0Z7#Fm;Jm@@o11CJr> zka95c7bVsk(77yM0K!+E=8PwzSGeOrXv!1JgQ*;ah0IstYkUqlijTrWkfn%X1f0k%q8JCS?>(f-O*@H@ zHby(>1ERI{tc4`Hx51Y^=&{W^!_A3CBTqh?8KV%B=oF((1$ZUT<8QCEe1w%r)!OZL zW3qHeLM@iW7_wdewJWG%Kqp2*%ttdCKCQKoZS1JBiuu$8MSQJ+^ZK`W`De0ez2oEXG-Urw-1=6y_*KZs1X{hlv@=db*$^ zds(K7IF7VrFI>ca-l5b6ypRsG*|wDrYiREaNh{O ziKo=>t%K!nQtIoWXHS+h@^BR`C#2EW2tC7BL~oL4A+a+_Hku?Uka#vXiKt1G3X!8pGSeiP42hLVGFF!8GO^Pj z{KQhdMMtN~S#tNIO=bK|7s~FjU%W-Xm_SpRmC2F?3VcnHw~ORQvxCIdBzb6(Btg>E zB)Mvm41gqBZ{Z^@Bce2gt*w$>l;naWY)E)^)`ETAnk|%j|rtakHgx&lmH1HUQro`@Lc={$g`1 z?{5Cs-$;A-}XB+TF%t>6)$%I7WLkYcNdk;ZH0g_?F`qZkUDozV*cSgp{$K z4a7@ik-l!Am`u2P+)zZWUVp2hcuPWrtq&HLkPLm75OE(N0Zb7pc6GdgznY2F8RYMj zLbQWa*cwAvN~q`_a$~IQdA}YB&$}F{vKZZYyzw6=`*!&L>VRCVyJ5Hr1??bbRCHqc zP~23j*!57HFuV0`O|h{t9xa-QP3(^13wJHPUFBbBh8Wd<>t{3*TblE*ytQ}~`{nyK z;y}E@xYb6iUCZkT&Xiji0$Wa8*6J1~;hqKmM(-RU4pNYx+0 z#N!z2fgQz>V#F3!7A^YgUw0HmiKz8&JBtgYyf0P>x zXbtEH=mGc+Fb42=nAk#i3F19~q=31E32ak!2@~Wj4PK zz^cT`$4R}MjqfK8Q-weht2-O3E8@Yq2Q%~&PfN2Ct3r&^`g8roTw=YxoxFmu1m5Wf z4-~CMvXP|@62r+bwtW!ROHX!wkm#)*dk!O`3NQ>+B?N}Zbfduf3=`m+(G%H8Xi^Y35Uqu^~$NDO@KrxrfVx)qhTGg21p{hoHiM+-SfAiy} zz|df*szSY9wpF2A&g&q7{FmIsnHQ0&UN!~j$0a}k3T~YjGSIl4$2}+lE4RwH*Pky` zz0LrRL$CCOD#;^HmM1Bvn#v)Qb&7e}kESxNe;fQ+*a>`zKpVVrs|i2F1D2z8JF^0; z*NNBU#vG4B(~lfrnjvD4-)32}uVSZ+lS1_S4q zI&%pP-343*aQYFdsBKJU9-!fe;6opuktg8BP}MDuRCZ^G*t*?wh)}F9m$BU=6sbFN zHLYp}nxAm3$xzk%z>zTYQuXk4`Ez(ALl>lb!kY5bY5cj3PGMyIhKf$X#U}0nGz}kZ zu*K^Q9jfx;83fEoOT{u2BW>AIk;#b*T5H87_UllweufTw;roX#3*X%e?8@nPjRHFW zt7h?6T!ojOJ%OZ9H5{N%)bUXsGH ztEW$vy_->7c=MLuF;gACNxaSvyLitsuviMqE7XO&!t)B{5n!x|rtp9YU-mt7vS0!h z3j_*0SK-TE1%)5%JS@4H4|aiQuv|Y z8QAa>sygB#<6h4TUnZSK8<$SrE#KmIMQ)&cOW-5cE=BaM`%vyq-xGzml1dA2^-{Ly zMsM}<>%#H9UJ9AN*UO_Jo1Y?j*6z>66@Aq`IleUEa+AXHTk3ew;gvW3H4h=es9w|zQGLm0@TKbO658 zM8f&Mt^V26r0R`B=px=9p$E-iDT-${uNl?d<<|ILHz(<*jTRe;E^kAz9MhVAZYeRN(Z-?OY*f36nYE8p{_ z{@i?CzTqpM3BGOlqOXEATw&H%9&b>D^0cpf0OtpPJWwug@|E}Iyyhzp4*-MvmFMk=>W5!n94loiM4$0Px)ee zGBCeDi^yrm7CRenrLDE?g6*c(0Y&sR^M)6%>RL{4=>7i4`fjP)$nmbtK>*{}&7dv0@ ze90@IJJX^TZ)`}5*A`kTSX`o++9+k`Y9 z*Uy0Tlp+PcAC|1&1^3$(bAtot&2JAIi+quVtE@GqsAZ z)^n-iUsXL{g#N$*cKFkee* z#D${pc>#2R-vKuP)&R@_ufg{Q?f{4bGzSC$ya5v6Im&fEkNbRN2eQl-v zH8QrG6NF=cuJ{|OrtrO^02=|7fXFM5Aw)|7T)!>|-EV*f90Qz3aNvWK>U%pPG{uQ} z67I-#z;0SLHm%y$cd`*A_gzys%TVhPsQni4_C?}C5@ z9bExFe^xzF7yu#yz4Eez(rPRg@ZGvcb+^9t-Ju=*X0%<=q~nltLn@E6(imw`$GC~2 z&@gStcJ3F^tIdtnJ+ zmI6x(toJ4=nZFI0W3}w6g~0j1eS*+{%h2L~d2ZuN9o{4GlueJ5nt9|S9*lzspI!=P zcLl-T%1p3oVkKCOuaP>BU5b#+6|Kxl@_zU#EReU0g zjF<55x3T1SsT0tac&QmsnF+aelLmpC-c4%fIPV`pC>|jR0hjRWIzY57VOP6J_)|~z zuA9`-CI2F(bfhGVM>7F2AQAy)wgQXoF1bT#cz3C#AGh*5kvS+-HFeG#f>5k z2z+2<`9ciJXQ!cx8j1v|4N!D~)DviBf|LyOAwe3R%m)FxSMaewx~WMoVP}8D)dTRT zqcNWN0@*pOk6@9|Tb9`m#4X6>=oi=dmjAY%D>jtbI;>AtkSNucALlKqwZO0ikTH@_ z7hq#+$IN<2Nf_ef9#VaDC#Q$x3$(3=JZ=wqNI~Y6c%aXfjJfxe@Q)F)xW4yJOrEQK*q5B$+J|T=9KUjoo~B z2KJVRXJv1>@@t^xLZl!#0D>k|ExZIPnV%0?D=x#s^YU+bxsE=&k2ICwc}TKU8<|s0 zvJ`|qBqqyEEKHXC*{H#iD?5-ZxjFDDew!`{-@#e{nJ5Xi6WKq>QfN(i?!kX4h+z%; zNp+HgwjjI(B%sX4qlVz|%1lt+w-yv>ma^P{vH`pd2D#o>9+B%w93q1)g#WPty)Qi5 z)lYJh*X3iF2zZTO9{{3l5G(B`dCN1XnIsADGlhUa5Sf5lwsFj*zmzF=`7i{SaUq}( z!~^zQf2pJVj4qQQ=e2x5SbeWIA0R~%xuq2R16%>)@M{u4wDo3v2TD!wt;E8Cl9&B7 z$oP{Czz2Wx0n=E)K+Gt zsfmr?6kM~?uGBW)Ce?ZX-$40OBq2c%w>_K<~ zxSA`+Br}dF21#w2^L?}iVoUiDu@J1f)kv*AHh6Bw9p$ZXX>i;LkX+5P>4PL^HCM$j z37e1tZH&9DH&h$5ErX;JN>_KR4&p9|IIHs6!okwm$ZBnC++g(qwQ!+uOf1Xe`ss!bKw3;w#!U zfF~kqiiIOhC#d{nxLg%0Io znvH`BY6-Q7kO!y(YaEYqCBhZpR_yzslE3_zSiSheL(?T4h)(d!n)ADX`-0~`!3ey< z0M+Hyd|y^JRH|=ZJpyl(M1X563}qg}B>%eAece?l2oIl|hTr>zAk+YG%%_86OV&6| za>^*F*53_T`Abu|FTRzq1aQptWnOI|sM7$0%>{Ln8iG35zO=dvy`fi9rOUs|u>Akf zb$cxc3jy-7z+Zl(NF8yUbWXua&u61k&hs#{@aQOtCIb2p*J6v+JUo=~k z4LsuMtfoZh&(05*8o|J);Zj#_ZiLhhXyFL?kUBp?YV&2dIzl}GFqe6ZlqP%;5664M ziGYo4?MSJ^7xCTMSR{bC?A=JoUtQhqI{XpI9sqxcJuGyTfegG$m%^W2;#B){)mjATsRl2EHjPoWk` z5Uk|`W!IQ*nxC;BDGb0|_I!-w{H1w!e1K92Xu{Tx{iau+A+kOwYk%9>G5B+>$$+_R z;8@A)%bAd#PlS2}aILF`bu;LE&i}8`Ge?PV4{(GPjz!O^7gFU(BDfXe6k&=~$yk>k zw-IGUfyXlQHo8palF*kuexIuh(?sIYUH>f2F*O+VCH64_h1ii#RC+fxqe=o)2`%BQn@cFbXYBEKN5;v&WrPfldCBKShZ0Quqo9xsdm?Cu$ z|Nmy2^gCxrT8S0^Ai1-*Go=#!{U4+tSA2k?UV&%3t#7^pBd9dMLs@`7XLtZO$JVZt zoD;d1!#$-t@OtKf=C~a2J7|ud0nUN`)+_S#7KC*^xQ1blZgpEMm%4h%~sn z#oeq&8k~J7=J*Xj1DfNHfG9S4mE^4408yns{+XQsL|ts*Dybr)85Z?^cvum@c6iOA zfn&+>^9Vu690eaE@~gl7tzXUk>+x*`AqhS=$9n*yKy!QzFb#Am@S`XMFbF6rfm^o6 z-)W?xE#SFYT(#*^2L6r*QC}xPm^EIKu@DQRpgGT{y50H3PPiJ950}Q zfP=fi??QYP0sIcIAEAuUT@dOfpbq3g!0Y>ihUfcj6r>u!Bcu#d$izdXy?{(q=6LIO zxI;j5Tn5+-x)ONE5J7m1CrAa3AB8v(@&Ulp5UnplhcbcrCmtV%qSL@$H4N?`AWczVb=cEU$_0&IE%FIftkh-23PC#--R^Z?+L^@5Nw7)&aNLco5| zCBPpxz_mwDg^hxcw+YTM=zQRIn=wrY52Tm~!x&GAdX zX3*beNqF|8`EGOqa*h)LrJy+;2&e>|3cL-#JG2w{MMf1P(`Ix4D>a^C{ovT6hko91sD0j-LV&Kxc5mQjho(496-! z8fZJtq722iU>T2H>J9x)`|MNz_5S zw+Hx703XHMz&?d0eGPDYF?JAi5`eb?xc=|O*#D~2rpE9FK;R!-@ZRxHEp7m~A&#F{ z(XW7qoW*FNatiPi0N0rYydNO%d*C}&@>1ZI=P-)Uj{_b9SOc1;4EaYhA2ZO{3J})- za$~?X5oB`O5qLF#8(jk&b^$vDl{xMU;Bt<$tLQnv$E)a*z_$S0&TZi6iza<7FwbGg z9R<#4Q-T%Cdk4GNUK(hMZ&DKQPpw zU4VxJxXv`->i{#*H-H_ln`n;XOmv1!q=K=7(q!P@0laq{XWYQ?38R_7ivZjx$Bl0y zWdV5;;I)7-&>Mi&e`1b72LT@eBtbtP_yK_1Gyu;>klhzL3xLaRVg5DKCE-4p(Ax-n zP!IDn;dm8*cWw=E>fcxk*b$3>3rjKgs9Ox& z_%3!c=qA9;?!i89D+5H&`zFTyp&;}C@CK5Aw*vUk{SJH-z#GU1zFb9L1%3?R`W&16 zW1=~p3n)PYJU!CMfb$=89Pkl9Up(+h;Fo|5UfHD_i5dWJEED)=fIQT|zgE$kfp=HY z+<9yF*z{y^z>@)7pW}s9^kLvzRrGD(*H!deVEq%*$nAfE{ci-rD+^C?$N)I40q#^q z#{#DVct>Xe9|Q1?mH;<>W|D^i`&F8zDFC?63uK&evZjE>rItjoA0yR|2=pK*GZeooEGo6u_TygNg{H08R_Y z%sfJ7Mwo$K12;z=Wgh4fHHC5?2KYczV z-O&-qL)U-^@GupW0&n+31E{XgR{{QhaGZbyISBjx7MQO^==BjKr6oVwG zh(^U|MIk0hLRu7+lC)EiaI347^>#116QPJAOO~!|36<~b-I?F_@%!U@ACH&k>wM1V zoby@FnK_?#bHPlx&j!ChRQ@h-g)SNq6DtF3foMb!mGoGz4o=hK;MRd1HrUuJ-w_4A zhtzkWbwQV3IDOA7S1=!?8baFUSi7(>txGDNyRcm*<-VxtAd3Ga@m5YFJ(X{agE4M87>*^T=XILwSa5wTkC z8FRedv*a)~$a5Yvn28uEctg;5Ho7AmH&W1IF6*a*)^@D70j2Zivm5r{B74@0z!eMS zei7a>LasPzH&`xWeZvyed@1XR3mjSRzYIgq3EhATcY%ABqif)!z!A=@*8r1O_MKna zXT03mi+O`HJXmi7{<((jzZ!6}C+kDNU)Hf+A2e9cVTy49L-4&XhY`ScfQ~_|mw^tO z*wz(+C$?~ydgRFlmA9h*9kHRZmBT!Nyy08G>}~9zBf4y7(_O(Y5Y6Z=Ffo)pDN%6; z>j!`ZP%_R_2rk}_E25@aO`k#s5F`h67 zA)1PD;2)3%(knotgKUivLcuJGK`k*O=7sj&3ia@E{hk=}UcEDzU;so|y z;tgJh=-8SB%>RXlF%57r5qK4%8^|^A?h$qz)Puv5P-Eo5PaQC(5EWDiE|hx_m;l)$ zPa3F_%$|qn0MW4`FiD=C49cLI2;8;Fq^6)*=wQ&}C`LBCCwK&+k|u-Y5M8(eoRrF8 z{E=rhm<~~TA=o7MM9nldT^nSMahP|=PxOWQ?ZF2t@D%+~O*eKFg2U6}d;8YyvOJ zeFgYL?pr|SG|L)I?1J+5 z;?)tE@l~h|W`P}e`7&;|IQSaKTw(j3=nhfWbbwQ?;-ttU1n*zNN#Ps7$=5N>;O#-P z8z^iPKAnS>e<43^T+_h@h>vvUHtq*9^nW5Yl4W2Wng*V@`7UYz9|AhmWAwv|z}$Om zH|2xh?_-c6y&D|TfY>wIH#{&oH0`LPQ zg8vLgzd-*}|B+eolI~VaN9@LM}XftQGxwvp-#;I-mmCyY%pCI)!$gJ4Mu;*Z5Zi9y&vqs zMB8qxh9Z47IR7VF4i~luXE9u+kkUbG4x)(QZNLhMDns0hxDEQ06$Lu-$m9M`=5{}B zU*E{U)BU+jJq|7gC5l*%!1NMgf2!D;-`pc3=!iY z>Y7AwkW`u5_smuYcR;iw3`DG7-^GZ=Pzwqq00*fe%n2SbfXrfu3X~0Ms>urku7ao# ztHD@#dK~yg?z_NKSR(1hd8CCfR)e_={{Tif7(bMLBnG7eH4wu=A1sMttaq$Nx<5EW z3kSp7fRzwU#cI%b6k7qJwGIkRdB8JRR;ht62EF-Mdd zOxfT_Jrph)pM1c@5an?M*Zji8H*QQJun?k_K;$ES3Yztz@u)FGUzWN+y9uZO&O_{g z{NXk9rC6xfM-6auV6b#EV zh`Mh&NIyxIjXW}Nu7E9sKbQwme)@k`gka%EB*g(_UP9+_0R3>AgDHC=5%>b48X%UF zK^$ja?bX3-hz1w&4MZ1y2R;^ZnFgGv3*3z*q&D~naQHNI2fPOO!3^W;AS!9jWu%e# zhnh4BY_z~a5Oy?y$1S;xCwvCT{}oLPPaJQ}WuoBq!Pih4{5$Z`EYupl2~?Yn3uD%( zgDntMfJn+r;A#{on&F=`L54xWZ+ zJ)#&4@xgpYdKicx;=b>P#7Php!Vnb8y*Ky_qON%kZrH%y1EN5_1n0-h;!9!9ZN!Oj zb2tx<^kqk{252t##5jn)5ffYF>BW9nyW5QJK!Lo$`CGV5B78R37>urg7lm+{Oo*l^ z!kU?Chzd&FxfT6S9}vP|UPCm6K7%o#=x-bx2Y!JX;Jd(*9cWjuucO3i)^A{x5(rg+%mr4RnH> z;lsc<$c|o~fITrthgXlq9SrJwkpc$Cu|5MVhQjCt3uumjQOZMMtp_1P6o|rG%OC+> zEmD|koAm!S4&xpGHLb@1M-bf$kylSbI1WUfLJ#lDJw@$}NS5aZx5&K=?38;Z1ziBq zu@n|X@lNE46rpqt1(K4X&?XI(lt}SOBM$n~@B#~lSp|_N?uRH7F-Pu+6y-sAh!m7Ud59EcLY_zw zCFF@hxhGOc1f>%LBl} zye?0tmG2I@CyvO#m|KIPvDmgt2}Zq?l$uf6(G$E$H)9*y)Tz=2v+VhxKsW3(muFxh3?RK)>e`q~yOdc|6+SB=( z@wQ2K9`Gbmp}^c^ipkWercUlL3PZWJOH9-SYP2yx zMRAs2pr_v&50fzh9ZFGD8R6t3k$CWb6Z?t-JtX{@Vu@Fvhp(T>Xn{6mP*NGb$Y1Qs zU+T9xaIKg>Tf9Xq@$(l4nix(J7*GbD%DDfT!H~Z|yv4_t|68D6P*BpU*ZAv$6IQ=J zXdP{qIxO;?amAvr^Rh3ZIkQA&y#ba1w@S1OO0`X&{wv))r7L}7ay&<`%wh$u!1b30?cb*?$x%={xpco{ zZ@o>w*H3Gk59EJ&>n+^yv|G_`X3??K&Lx>AznX3EK4DxbUhmqQcZQ#t_*vB?t~=~g zV9t_mO&hi7Br~g7$A=GeTkOzX+491Yx6>_hfp76juYkAzJate_XuVPSHcU?#u(JPE z1rKS(;>O^OmTNZg8ZMtsc-!w(>cPQD{RcFE+!?p%_`x%w!8IH5RyfY-f73&JX<{c& zsmJa|-iV{+kyUffS-;xboo4gYuX**nCz$T zIyG(`pBu3NsGJh}2<$pNjy<4W8HWk0Ss z(#kZZ9D0_R|K?rphJM)#2k?@-AM$<-JL}^%q;Bx(1F;Wdbu_IF&ZiQa9cg@32(aqvn1vMw%)zU$bR!`^5FNX<_DGn{6()9STgz zw0y2^cy1Qg-|17%^VZ;nlY%At8og?_56`Zi+Xu{oZ=g;iUav0X)Y-#|8+TK&Z}ahmF+JQ+OkgXyKOtA-lRnP z)xu{VLeALpmlrf`*<_wrbtV1uh`<~DI@1PL4L`JSNl{9~?#bD!qiw!zs~SA_xRrIo z+2)y6e77}kjttwE8>>G!VDk?blkid2g78sRT>P&8`lP21c+Nxq$4$`W1#hD?P)F!9 z|5VOO`}GYyC3{=8$9sS3)GjHo+9-~9yyn|lEl~aM{g}h)k8iAa>MS+sF?{4yH+P|N z(8orJu6y}!OE1a(J-?)Re9Ob#-=5hpHk)e09(3xdY#F(VQ@!i3UE1`UoA%rqs^*%V z7OB5RN%dvbzc+`Z->grKl`e^nmF~9rd@T+S*Q108ndFnY=8fJ2agf<7o zXN3K;>tx;T3_XcAcf^{avJd&WuMpmT_{-d$7{$wu``&s~_{{y}Hb)i_Z7v;Q&NVDK zF7fK!qxJpq`LmZLYUA3iueaPtz0k0tP^Ka?Jt_Px@b3Kv?==4lTKiX7sTcLuwCi!6 z+mBJ*I@R6ldv?junyl*sj(vTR!K9Ih%?dZw)oOxX)24uDV;c{g)`M(l?vRPhI?Veu~Ssq?Dd7#kom| z?fi@SZi!xPs#@h)VLMYop6l8Dtu)9uJYe{u!wN>H^8dOs>T`OdZ`Fb(uj4b9O`LC2 zRnI(L7I8WzVtG==KjVFx4~+e)qba<2h_l?cy}Q&h>B*LL1>aJ%57k-pe12+S+ZA-E z)9hf@>zDh#M?SoHZqe)~B4w-M4Rczz^I&9#7x04*Yc?$$vyK{Pe4&VNCD)0Ac!}6Bb zO7wCjS_^W`#|<7~lIfsW#T?$go?8g1TaI zEA}|F&AYp)S0j4wsZm$m#1|yB=?afOTdZtUDO4&?Ju#!aU0Zbf4);r{^1qo%k48vD z;>Mpvyq4!vKi=V3UpciWYSH7yb@A1=H(oc|`kr&v_HXapRHv`530Wg1Ns~<#$BeDM z#y_k4=cP!6lD#(+2bA2aHCJ!BljjmU+{&Xpu&3f*M`SBEFo zO1pYng<0Z%2DRmJjyEgokMd|;DXm}VRH!(6$mk=%A%#Uc)m1UuGA{{k4CHzGN9hjs zQqQ&%x_p12*`|FUalKiEq~+*hGtTo16MWViY$$!VAT-^}z_?`SAU7LT!Ml4taYsH6 z`R8w?bM>;wQ1@2{&Z%YS9ZU!rxFW1 Date: Sun, 18 Aug 2024 02:56:47 +0200 Subject: [PATCH 20/39] Revert the last revert: "Update launchers" This reverts commit bc622e2838ea7c20b7a68f944104d22ebc75b651. For details, refer to said commit. --- Shared/data/launchers/CEFLauncher.exe | Bin 97664 -> 95112 bytes Shared/data/launchers/MTA Server ARM64.exe | Bin 372096 -> 369544 bytes Shared/data/launchers/MTA Server.exe | Bin 326528 -> 323976 bytes Shared/data/launchers/MTA Server64.exe | Bin 380800 -> 378248 bytes Shared/data/launchers/Multi Theft Auto.exe | Bin 418688 -> 416136 bytes Shared/data/launchers/wow64_helper.exe | Bin 262016 -> 259464 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Shared/data/launchers/CEFLauncher.exe b/Shared/data/launchers/CEFLauncher.exe index 8c8babb2856edbc9abf36965796cdbdb21712d7a..62684b73d0559f7621adb23233750a71f3fa8caa 100644 GIT binary patch delta 2949 zcmZveXH?Tk7sm4sy$Tw70-=Z^EeTb63!+jaNN)xRMVf>r2nGTo(xknFB2B7bfq+B= zmacSZOOuWWQdB@dmf{QSx}SE=x#yYRo#)>9c4xx&X`+{C5>){DBvoyK3CBl6F2C2X z-(kaC1BD&44RZxF<5Vl5RL4s9z2+aSgwmXH1r&L#_8Zku$f>Uy%5kh*e$_DaX}$u= zd8*f7e=FsbF>a2oCwGDVUMX|{J0t}Chx0!SngxLYCV*8eMFLQvB5eUF?tmsZTCD0N zfB`2V=!w)d)IjPv<=-XX<2u*lcrFcqp7Q{wU4EZ29~0yx5C90m`|la$0~as{ut zlB7N&X=gH}&ugvBL?>jBrodAQ)QUfxK41oXtf$jo7M2j>Mh@%G0%;@~>C z0Gx;S9ULAhA&w9`F;FoJ{ii_!ejOL!<^{ik_xANA*}DLOgnZ?i(FJ~mEJ)OvbiGkn zb^rDawDt{!BOfK79x|^O1&W&cO7NHYnd6zB1c*)+-;kql2`DjsXthdi3ed@_#(^!j|OWTNkLgVmxIC9*x;aH zc2SAyzHQWXuL^4ypVbd@1}rHH?;2LaL}Y!eXaNLkg)fr3v*dQA z&r(ti@#I+E{|S+8&lFD8r!9cSGm__1OIOy4-Kh%=>8VJr7QjBF(#`hl0Q<|>#}kiX zJnCYVY!hlcq(Dm`iV&Ia9wb%X1l#%y*RMyZ{95dGVmjAO4BX?da5R`)$U?1KV9$R6 z7pO>oFVE$h=gQU-9Jpy7zSgg%*Gx0-P&DG+WoezjTsFqkf7#5{mVH1Vq2{s#4Wlp^ zztjs;ZEzc4H7g3l;?E8+7KS)^>w4K1WOp-u za!M~JY>1|Y!8WCzn@t5YJ3!VGoy8*vfl91@8Se*YOegXyyOq$0EEW=6a6$tbldpr( znjYd(_Xr7fql5>fq#YN}%ahpqN(5o2B-9Pd7mv$RrG_lvwgxQ8<4VhvEmeTsrK5i`=*qT{~B)Pg&w|g$CT!LZE0DhQM0E7FRXni~Ml!|$p^D!Yy3gqjg}q_Oi;WSqMRfnf-u)#D zx$D#<6Hsn!6ITnSV=N6(p8!4JK7&G_PTpHNq@o-OL7{a9)FAY~k)$6C=p(GN+dr;r z=QNFK=DLinZc<&?hV`sl=-AzJV4NpEZJ$fR8`un}mw$%J_k_e86RgGs;;r>wHl~hZdD`{%oUsl&h_5F{9^x^cLMM{~;E| zUj>2nOFfuw4eoOvr^y#CY3|**-6S|vkQi1s@z)-`F-b!*h#GK->|N`$AjojHy=ZHx zi+5Gd8LiQ|Ed@_1`DAoH_)rC-4N_;bmm*9Y_DO+ z^|9{5f)w5jp81gNPwB3)t@5Rd0ygC8RMx<|0&6tnyeX?`&b;Bys%eoWYA@YOlEaGw z!L%w)npL?UvL5*TNP7Qud69tPcFCu`zRQLjh$&VNd^)SxdXEFdP3Gr!s+A6<+;y4K zj|iKOY`u)E&biz!|ARGK!6CZ})>e}Z<(d4;2LZ EKOwIw2mk;8 delta 3931 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 diff --git a/Shared/data/launchers/MTA Server ARM64.exe b/Shared/data/launchers/MTA Server ARM64.exe index fcc6ac81c00208c79ebb6a2925336659a9e7ee86..1dba234e53b9b81c0a8a234818365112ac27c8cb 100644 GIT binary patch delta 46179 zcmeFad016d`~Sbz+MovnJF8)9>>g{`g(j_qx8j>v-?iecx*y z_d182=abmtH)BgY?u6%igkAaW`lZ$<=EZeaE(XWEc+-_lhP?60nUFIsy?^OaL$15h zWyl*z-gIRr!|(bl7eHS5?)6LSAY-TBWW*CYef^axTXZ0Tt^HuIemx&DyrD&7 zIZ&sb(wIxxbAwpx63&=2h&kiIw*<4|0g$!9Y;FjIew-(9kA9ku<%L*X>F1dTVG{ z-{*tb_9Tb)fniLxd8fhn=dG_-)M`ur`RA<%cm1g`?_fQ-%XmIVU(&@9R373Ts26qV z&z<_NE=fFHKiVZVD7lL_TtC|-X?|ZT>CC@LIxpP&C+vUTT4%&=W~ZySErLa>vKyS& z&3ne5i|pRk2>t4?gfVNQ*>=OFJi_}eMbpt+`#@#X%zUJ`$vW)lY}@&ghcHwx7{hWt3o5xs!su`{7Z{S(U9Q*(;c5c77#mZ`PtKmF>v{3SAWA z_34*~&kP@6Wu-30TZZ_eWZ7pTNUseK>)X>ZCC7WW|6MM5toJ_sbolRlp8jLkVSKsX zvs)scq-S&+%LnW0x=rIL`hjl4c$$8yTcWMoUbg*_ zDpZpeS6LPiVyAvQB8p4>n~47W4m~{bF8upoWKu*Ta*&te+|`6|g7afb^&^qW`a~E&Yd2AG~(_>;s^4{;hbFvJ_2l?eQ8Zki9^W&xpA{+B*T)Z2+K$|wUF?=NbA)~@ zzMrN3qnDL~5qe_xgsA2b-Xt3`suC+7;kET)yY#eP(VYziMb%`5$s2<(iIHQ@2gw`r zw?X(}{d9LLgNZL#;i)two9Zqy;?K*_=OhewKlPsu*`e{{ZJ1BenCAhev37eG*6w1p z6VynI2A|bniuL1^%&2m=pXdR;-mELJ+J3+`nH}kV>G0EP_WZs9UXIXA9wEJr*D7% zFa31SDBi9I_qv9EuCMF0!iIio+rrxR>Yw$}BW#$IY(3bVV#Y@2V(7%{MM(>|OaCY- zG2~a&{~1kGj@185S}3uCzTgC{RSzLjJ8Hc=Rzfy*My< z2kKr&cT{GEzQ>Wsv-P8n#IBi$PxbMREbfhL*MD)0akpXdVeI0Qzs|uzLyL`3lg(qj zzoI?PXndd=Lis7q14*2%+lDci+tt}VwLjY)gtp9QZDSPoLe#mj&UPpCMtDBf7*dFQ z4DaMQp^}ZEl|YV(w|9=jDf34N+px0+|h?Rhw1Mo59EL7?a8TqPmZN4meyDFt$+2f%*BL7|gv+p3A8i*=hJ+0p;zE@w_ZyGu#6N0j;KEzUt^lyeqzLX>fpYxOn#6M3nAcmE_TS-bFWv3|6FZ|>HA#QjZr zcxvzP>kzgH%NL65ov2Spoi;E$$n0mB^o>QOC&@&T!6f5?^ygB45usi5#|NZ@e};HI z?C6N|r1bLsr5_(Kt$RH*uR!zXt*`F-bq?Qk7K2;uXkOBX4}2NZ|BnNQx!wO(Gm~ai zwyI=RxtOIYU8o!uGr@=W+QMuv{%4vkS2(mc+a#%m|2Ua>)VPW*<(ozt7O7YNUU z)a2Tm=PnK2m7l_HPQ9cyBmYvC;hw=VRJ=x9y*(3(5Kn=qo#4!3?Q@rgxOdr^XF`4? zRzW*Ez>%Qpt@pu6t)^e1RWdgVuM-PG#~&T?EE0WucIK{M(K?S|+PefJq8h_k2)3_0 z$TM4oozJ4ScG`sz!P&l>REC)|qh->q8L8Yhyuh+1xK+%kRSG?nUl@!#J4*zfqV5mtiPIv8ZDz4tFQE zxAxDDxfK|eD!!$d%Uzhi)e;&QXK@7LRFii-5>u1+d`#R`h+G9wyOpEXT#fB-G|kl` zP&2Qqjz;tJ{5jgLs7kZ8ZboV6ZD!s+SjBsf9PdqmY(|YZp}Pok&D=#vQ7{wBgsT$(Hcg!up`ai2nt$V^OEOV+V8?gAR z&K8H&MOABrUk$9rG8acR@C$Y(YROc!Fn6T6TD_0&uddpb}>yU;YvNJuSe|Dr8X z_R{kaIp>%WeFd9p!lj!<#?szhc4g1>^T{%OK86oQns@iv4*B~aXM6iKlXv~5zcVaK z?=iv_6NkELLQ0;tj{OV`cL??6)o<-@O(7|0^T(F~qM%s4Z{2*G?mJd%y^_MK})_ zBQ%m7aL>MQWZsYPek0Qwm~LZa=FhIpu(?=bP-3YxH zH4`{Olh8j^ZT)v6G#iup|M3Vt_{{%&guV!$|6fMvU!DK!2>k->{eLn-`Tx!c{WlU; z)%-qXCw4m_^1(DbH;y!hKxvb{N3n$gqzzphD&#j$mLJ!S1*#Yy1)CO@V)4xD82!-_H89gH(sD$ZiwgLrTZ>tg1{i8}mH)Oo-0JKZab-ZLG5Rj&G;Y^VJL5(3 zXuV73@ZnEkZdBVM9Q;+P4WoM_Hy(9Y`#s(Y&hQ|`jFX(}^);FCqI|S|SLQmtPjAm0 zAMwt(?bheOyEz^N9GZH|nP+ z^$)t|*AA&yy%VjcWew&F^d(t~@Jx9iYc2n`K49{1JV;NTG7L|Sv!?X!9;~tLzalcV zrOD~+Y|lhhsL0>bw@sNQ>VDQQPVH5FW=etJN&3p{X%Xw%JLE<1#kM>QG+HVVGdoD_ zATV061;nP9dH?f^o^a_uIhT|ev?QZjZxm3sH-3%b2gW;UWq*S2e{?w%fV{&8vN^d5M`IWRquPtZS@ z-kZK~|-D=zDW zh;F_tF(Mp+v$HrxPHOtBLzDKn^rtQx$z%18E=vqQTdpFTv?uAB(dijFzr4TOtkVmh z&ExTGu6FWjD~PB6xk(e*=~Qe9zeHo^%v2A5(Unfj1Ro)`Y{;Z*%)^q9ZsuW0NEn+N zL)*`PF}D48)VvD22+v3=Y|a9K#!9R_TF!z{&he_8wqM|=%BjD7dHk#bwIPl3Oz7yu z*3CMk?U~itGhs*wn|rd8v)yRF(-Vyvo;}If7LCfsyu-O!>z6}UiveQjl1*K%K0?TVmbwPF|cXnDG>K_TFRNXWG1X zS@+2y-YwRBU5K{`_iiKMyio5(%fP#MZ?*2ryLbz6KMFnY3UqAinIH!H+%mPJ{Tk1@AHK7(1rIHBQev=M(%m=|9vn3=;F`f}X2V3*74I`{H6{@x)~0+Wz{ za^}awy&E7sUxs`8>+5Dt99}n0JzOVLR{z`~)goL3i{dxIDw$L~5gH+ryBhifdh^Ua zIhkF(%5enJ>OxVoa#J_N%1d%L??CImuA8^Nb&ovu!9C^C`w(SOC3>&E#FfM+>$kfS zV<*4|^TEKS7+Y%iVVrFZ`%z6Pwl+)^YN65_U8DHY>hM{KS`eZu(Ff1HEa((&s&AY7 zDd#Wh3+E5RgZbU_cZ>1}ee8nug7?#(U63Nml=sx%1Z5`azdP{7kr|~wzaoWm{ltpzMR}BdaAhXn zSIt)~<^r?V(yQhrO?#Maug1Pht;Klun*IBwYT{>=$aa;je60TdRr7)d!beYgIa+t- z&+D2QWt@g7do=7%?6< zriW4`UN?`IRIj^k4(G%5BWp)>E$?kb*J?xII~R-*MZNWj1?xpoQgwB~#a!f#)qh== zB8rmrxb^p-D37lnscavvzm03HHm=X#uv`Usc|$K4Ki+_KPhWMzO#J)e4U_l_dixDJ zwiDZKd?x8Csm@HJzsKYJ+%-6)IEaIZ0k|(#y#rM}=cd;pv4bt!jEC#LI;7EX&AqF8 z7j_ks{B~#18{0u8u^l|OJ5&3q($gK%+MP8ao*%yJkQL@OvHJR3@&y0A`h(k+a`9}l z{@j+>>dQ9Xz|qLnhupI?eob}E=H6WIb7Pb~eM_DQZ>oN7ix7Nn_1-(9(4VW1+%=M8 zr9OU7ydH7)_o_l5PA!}@(^V)ce! zqxo3HguY(x>T>8 z!rIF>I(4;z4Re2aWCC~dMZPH)^R43hD$)G~U$0EQL_;;* zHkt3{Ax}TwA-g#|CrW+8r}9Od&+~1Y#@!lUC&Q=n4*sAo{4!oGqC9)hld^31>PJ+z zFxDXI2Fdql@RWpQBfaMLkx`Y8kHoUymyI^;d4pxQnY<@YmP2OpxuR&K+&q*2Lu8GV zi7q}c;n4VV!Db*>QvwC68!VT)_)CW0EPk<)i)Qf=O5Q(<4^;ByS$t}Dzwlp-z!On8 zh37J1HeckQtJh)94Iy*p5PAP>zTTa6KG%<_;K6M4mwqMLp~3`NSsHRKtJ|S3(=PPA zUxkOxD0SxWbG~;&?-Xn_YR$WNx8I}q@~mCbGl%!!!Sazg{5R2MxBSOkj%if>Yc9W< zetss zwIII7*K-lNAnN_;B^)bMhVR2Aysn!FeMatB!=D$KH_xX+d zaW3pn$W4W4obV^)bA^1oXb$#$U&x0BhwcsbqFPG2XL8wlBOIOxmNPe^RrdzV`#188 z?yo)GA#?F1R#`6`F4|GI3C{L1EMYaWc_SajcgqMjkK<3v0dC}MhP>O&SBRou`Lmmk z5m{XJ_wd=GJlJ=uhsSV!QhJL}5!Jr4MaXbeJ-!s|hhg#c=FZ-)x_M@c%!%@*&3p-(+kVzUD=|ry$m}iLDPqgyJzMw)o+)45f(rgx4!;Ar*dZ^u z1GRrB*thl$zMtFHKGq?BLtFj>KjZK@@8S<}QQl8}Qp{g~^xc0qPv*SdxAz|I;3Bh^ z@BOX(X-zZ_^4)qrzg*+5$(}k|x#>m2qiLIV^OTwo zG*sxZ(~k0gMkaT@&^5EO9QGE!FEY<|p}xo_-+PPS8Hu0isQsJzw$g~FE<|2+jNcfF z{$OxksQm62-x!Hs?!a##{3;E7W*2$W+k8`GUFe13n?q%nclcY8c&529-Y)XHclfGE zJfo1_jHf(IE`6789GFa1lo{sDaxib1@XWsQ&kpItHbkW-5Y9*!{+-|B<3dm+1}Do) z-{WK5=WEQHWoKU1RYxPZ5%ipEuo1NbwxN~{RcJ(0WZImt^|x%9ou~>r8R0yzIV>Bh z*$9`}*|518P7=CXMsB0L*$iVYY>}1??O-No+B~pzv25q-+z7`|2SJt%^=yP|4mE5J z*#5+q2udfCy9}n>bTN!h82=4pE~Mdr#!!`NL{Qg7KHINyqk0! z=f!bv+^be$cH9VwXIvvxd1ra>I8O-SAtoowFOTz$yv&z(fajp|p=`%veD+h>Pdey_7e1Cn-b<7~$eEPS1 zZxBzEQ@-cb{3l=g_iAN&#@F{Jj%S0*e0zW9ojJc+9%#kF*6B{))u;JG0!0iu!_&gT zw{F7j3(w_h7Abx(Q!M9eAACya{8C>A7w-vflXaOqNu~yg>DZ--39>3kl3}@t0AIyNX&?DOhqz0KQ&Z*0-r`JjRmhK1+bi(JacD%y)~)Eq`KPD)#`h6Dx#)GX{?~i4vY@Z1 z=`0m@EyKO#*3{%w%__1haHvb z0ovC(QN#rWH~fZ0S%ys(i{$3pMU2gn+~whGuu}Q9OconL!hgB0Lzb<_Z`-h^`Pmmd zLnLY8{rz-(e8Xpn5^e%P3$-KW@_FO3X$7VrQyy?m|RP;X2rloDl?c!_Y zUyDRyR8f>yeQ%zNZ;2i2g1sZ*Ds$s77H51K>w9IPSjdq<8MjD`v%@usnXarL*jp;| z7KvfQ@4e=Hp6*unl&3q@J>_Y$x~DvOWZfdsKjucL0`s&^{<%o>2+YzdcpA0tTr7%k zjxazTS|WCcyfJd=mEsXR;{AE08qr7OJ9*+7{f_ddxhRaO7{!b%G0#xKhq95Yr=9PibGa39$#WS@~)>A-~lH;?js+liQaq^V4(L zb)C3XV3(kB<||t#Qn|Quh3fFKX}y?--KrdWy%-}d>E&B{y}%akL*L391fIiFmdh&& z#k=U218x>~@fx}JW>myZx$YKp)-Arhw_tX)^YtbJG4dMdHE@M`JG}h zo{1{&6zj2{?0FZeJM&^G?-Co)D6z$2ys^`sbGK*+&1hYn$-UXlEF%?ht6xsfI@}@m zVLA9M$$20Z^<%?6L8Ys{3vs}ni)T2cmy5THL@XkO+eM#X{*HX)A;kNV{OBREQ+OTn zrX5Hek7_$aQbM!C+lCm6Q3_G#@Se5q%N@Sn4~r#1JWLinhFO2AJn$IimbYb5nZW6q zUB3LJNKSbkCz7j$^JY{6_V|On|9Zch_wj#ke4mGeY;}f2Z~Zw;{`I7Ym4nMgVZ<@~ z^38_o+mzus!LbUsef!Hr2alK*p#NPSc|uGLYPB^-%5G1JN-MSG{cxnzs{Ssuv+~a; z#r+Y-@x`itI(PUUc?z8+VrYQ=OF5uIOcu?NzO@zNRUE*`A=7{)RJUY|N(Y9Y5gGH&@E@) z$XNk8EJM|<3w2FcVV{%Uk3`gjT>&PB6UQe5bdD^1Q4**-#JoFX^GE2hXO)PO_K!u- zfae3;oQJr#I8cY^bUEu|tk4?`vGVT!;vu|S0(JNe+uA_gX5qa$P=^(HWuOj)%9Yzb z7I8x=mRwjBWys9LfNHFOj^Uf4EO{J3_yi@QgYXT}Sjj(uVz{YD=H5YaxKi|$Yd#eV zx?P0@R((lQ_E$#(%k3E>}TrML%6AQ%tN9AA5qF1o0mwV*4&(OY` zm52{sj-zPw+0R9s{OmK)8&3xOb68i&o}Y^(o-ZdTkt>%dkt1(c!X+P3B3r(ygj0T| z!~^nAgcB2H%KJVOaa|DY>y#bcJ~vj*{z5#8jrZv6~Op{nN@OO0o zikXvk+0t4227L4P8#p?RweLk7segS@Z{yDP=$_8@(`)69CNVI0`-TqrjXc^UW{RFS zsA46^QO&~6`^hQIVnN?nY&XjA#b7cZ!SN$yc}0iJUsapY@>j>GhJ| zeJ8rh>=rRXj%dMhQ_>+H>G89HVH#-an*7e`m=a?P{T6QuVlF?;~P!c z)X(&9I7s2<3RzXE^|KdoBOd2Fras3P(JJNyCj=qlorlk77CUWL3vT*L-gidC{;l0{ z#IQeiR!mL6bjW@HTNi#Wz#MOw_9!he8n@OZa8nD;l|P;li7{UXm|9gR(`0}1d?-~Z z@!(c@`B{+|cbT6_ITe6yUH+0Y&x-CbPXd(xE08KSJYc z;csFXXY%gfFz3V{y)Z$CJOFj%ZBVQD?j>1sRQ~HX(JQ8f*#4HrRE0SqE6l71##9PZ zlYI3zkvQCn?G>n0a;=ax9UUFGHBzZ~PIIc%3Wk_XnJyn{6aACV;XG6Acs|grxlN39 z2fDRYnQp08Y!rN)L#2mBZ13OO?Jt=6w!vm{ZI_wSNwQ+9$xYKtY0oyKl(1vEzuQ8KJr>bau(R2^g7y1J9KF+mne0X}SsdtggCs|0cgk%NDdS9l{ z?$X?zUS_yeX3eu=;uXXd#4Cwwh}RJ}5UYNxt`_2C6B$b~;#}gZhzp5vKxJH|#Mcs65l0f&6R$BC>s1pe?Brn8t-dM_qQ}7~HG$nS&J9E5MaTyun1~B));zMSLT1F7Zvog~Xx6#l$xgml5N4Sw{M- zf)w~snsL<<-$L9-d@FGaaSvjaVwUhW;&@^;|EVjDILbukA{LZB%O!<1(^{h^ngV#p z?jbHAzMZ&?7{9hNt}5a%Vrvu@5!aG^wOM{V;*+9)99oFgoU1Nt_--oG>@d1$V#mUiK~e3Cax#mO5A9& zo83c-7IH8)R*(AFDAFw-uPPbl~EUMTw*Y>)q8%=<$nBHDL|7 zNiO+K3<_>CZnt64jR{`Q_0_(RCa35 zC3Ha^RLNUmsxosL|E`st7#D7>OL^sjOU-0=`k7SR72wAInj>XufXOW11<5K?3rwx@ zRqVYY!`?femYT90@5z6i5xv}t{q!mi1>k(YHY%YuVnt>f6(2C$tjuk){Uwt<9+RzI zttD&kHuaWl+jarFSyhRtz!!l|mFLC>O<8mAh0=;Jb(N{Nxa4Is1G$u;)H_UjI?1$R zlj|uXRt8eNN84;t!T~bRG5!jj2 zDBppy^-fBbq=TYmavh?(pv$WEseMoGh|z{}yF41B`9$kZxhYnA&K4q_{TRASX9)isz{ zHG;a*{8=qHqXGh?`#ZpXQ2;vwIGfno5zP&-w@?AB4CVOQho~Ga_ERX{J-{rn6(E=F zT<(h3@XiJ0gX>J!3*8z5_*yHN>COrQlGzYoFAT8X7GU?7>^7DJ73Y=!hvERfH-Jls zt(Mpxz@-7aGl0tsmM?bKBDs)9yK70^t-7cpSBv+_h+a6fuu^&@Af{SktB*AVa1*iB zr&@@uCT=6PHbnMOW>Z*phskbcZL`zK!P=tb5L=tl!T@_|fW0Qb-bmb=+LnzrGk{;A z8kfUh^lk?!vdO{PFXR(j+wzit2&#zjCJy7OCAKQ~FtN3ZZV2#iQmjUomBXMhW)7`+ z#7=BAfrHq3GD;)1O5`H8YOsK~FJ-WlxDRnH*sVs8<xw!4e>zY7Gmqc$Cj?SjfK&gS>w~q1kXJw5nB^q;6&#P@XsN(5-23L`dA6ERYO(j zZZkpaNhvUaz=>%E^=fP02^_D1<2!J|2^<9tJl!|Dm-cNZUgFE>t91kgyFS!di?OA< z;2cK{(-OIQpf-`m%UuJtVeY^UpR*AgBEQ`Y)j4au$vi8wxS;StZur#Xmd{M-B)cV9 zsj06ZnLFJ$bGww4nm1OwteyfE*O>vDNVYVaoc^UL<8L>ml|Z&EAEd=iv(Spqd9&$e zace-nT*S5u^|Ii!$dkE)HHW*&X*RAELop@XO8OdGkkR`ry)D!9xAgI4W)2(y`kZ;@ zsbhM8-gSkkcbWQ7W<_N8g$&U;N4v`wmdvV!Dpl2s)4k*p#43dzGH8%Q>iY$17u zB+D_=2_tDYr5k_wXd2>4_8{pX*@t8*$-yMkNRA?zPSQy-o8(-Qi%DAXuP_*M-L+)c zK+;39gk&kn3X=Os){v|v*+8;|q%|Jfh}lB3pf-|rCDmLTPYMUgRFY{Vog`f(b4eDG zEFoD&vW8?W$$F9vBpXRKLCQ}jX&1RuuQ0RbBC_LUQJWdZi83+?hTmv%FL z`_O%sw!qzZwV9VGYzCW$e$yJj@z-2vclvQA{BwwBu*=vaaK4{C3+y4jf@R}Be4*&a zm#9;&5>jNrJO>VCehw-?eSp2y&yEOK{IzBVRrtAJC$W{GTw<$$#eSTrPPxkb6qg}_ zT0d4LX!K)MLbm37jTjm5<4a*q_v0(TEBp)-`F^Z2P)t0TO=0+JTpUdJDO3aveyk#B^J5i3{Mrj^Af5OUG=Q?_ z5YNC1lxBkq0=V=%yV31X<)m;S0#(JW#8VKRkzj$9;2guA?#C*FIet77?D1n&pb9^p z3~oBd?m28K6l~r31f~E}{a7`L%a2v3EcD~c!KHqz3RL6As*g1Jv8r*lp3-xpe5#YA zS_-hLvTQ$AeW1XP7lKRtcs{s>cn+Iy6sVC{wXv$fuh03H7wfv98`iv zE+Nld*PA(>hv<~ePCN|_qB86tR>M%$K-xLJf=$8SGiix#%e8<^YJ{rR@DOL?BuC|~ z^ql<)c;Gjj0bE0DCDjnXEyONlOjSPHU}RlY^?Y?$#O$U56`yHTRvPhi>aW=W_WS_5 zhj=c!tLko6s<9dMKq zTaQ{5#MYBk6>(<@Uqfsot|bmJ+0E)nVVwyz5L*u-jl{^jaWxTJr{^ui)}vZ0vGuIj zMr?hB#I~3PHXnR2``JigJ-OJ4qbR|6V(anRK^#N&RATEZo-|_Xa6FyZdhl@)8_$wz z_RS`R^(f^cwjP~wh^@!-Tw?3%fPCU4%1{BZgSe15nb<>|0#@mt>pi{6p_m-3r`Hl< z>*2MO*m_(qBkoV(D~JaWR}oter!~ZbtnZj=NimoL)Ds&AQqVOJ4!}L@d6WBA+cLc{p#|N zVx@_!*m5AQ>T1>yr-`71?1H$ASR<|?4kAunX@%pew7Xd+QZ!J2&csc`HsV&| z5Mmc?w!09sJIw^bi0#C9DWq{Zh`SP}8I1bxMhYi6*oj@l5yWjP%mgBd<5!v-MVw3i z(ZmJBF~lC?SmF}Js{P|hQAQ5kiK~c>-_pRZmKd+IG_D5X9>h(=c9r^>(pQk0Ry zK;kOmLBzGhgNYl6hY+_A4(D0iDwWO5YHs`5W9#=i1Df=b-7s?Ddv+y74ZV%TH-5+8;DmD zHxXY$+)8{cF}ugCfg)l%F*kN37=I2@1ko17M&r6OaT?h}h@Hft#4h46;#^`oaRG4@ zv4=QXu^Rs+q=+SlGU5c{D&n5R^~8gT8;Qpgw-V!xisrS|tbr_IJMlGOl|D-)1*bh$ zI&lzjHgRX-9AdoR$++@~Lx~HC!-$KC6NpQR$A{7STSba%$f1@Pf1z(&4a7mjO~jpv zTZu!6*}Z0oLy7IgVZ;vN1iMjwtk0wvPYzCEPMba#aS(AXacANJ;t*mFaVT*KaTswK zae|u^RiqeCTu;nt7uiT0Lfk?eO58>qMr_+=)<6PrJn?wqG-5ZWU8a*1A;d1?P~u$T z1mXhX@x;Z%++j9ZDRBsK1#u{Gjmd5{o)q;~1bxg18m$P3TdW9(+la>#+wL<<%u~(q z@x&p-sl=hg=?0_y`Cv0ZwiSRl#|l84Pt4Oy|3b^3xY+V1F17qenf?`)KXHv>)&D|C zQEvrEHv=>hhZ46~_KQq=n`I}q-A^^(H0|-kp~R^cPd4r8;LFwW8=7q@vMq;=PigCRwrSQ})NqDq3zi&{ME#Zgn}x zPF;be5nDf+a}xVZ_jAVp)-gd2+0{{%x~yY>Al$3;Sw1;fPdtUhcPS$->zu$kM<^yc zbwy^K8(8NGrDT8H49+Tuy~H)dmr(kwo)p#O&`A6&vGstHN!&vAt;E(rMQ7qRvRhAR z*13g^?6xwq#-E@yjm4AV9dbw|-c6iNe3Uqw_yOV^;+Kf?iH{H$67M4}CjO^U|4^2a zqJbPLh^G_R5Z4md6TeSvoy3F?H>0=;&|fy#Hqw}#OcH* ziL;5HB+en;L!3|i1#zLtZl;r>m>imjONn15t{{GwxQ4iyxSseE;zr`niCc(2B5pGn z_5TJbtdkP!WX1NlStHg{wso*!os7hj{aOldot#)FEvaPBC%bhx7D}A1?5h1QBZYPH zF_bu)BDkK|I!)_BoJ02Q#QDTe5f>6aM_f#NIdLi2ttOclNl`%#uMii|WBkR$HDoU) zwoXQ@qnvuOTb#5EM)ZsL04ImC8KU<7d^*>5JUp!oX|w~+lRlkrSR4t>a>jT}}H+nzM5^gd$i zJaG_lJlWR}rxI@_wocb35T}#d}zH!NPGiv zG4VX&_$_9EA{DElQc4d0AcqR#xx_WZlGs5JL=o4MeH(EaW!O4#Z6y0fvZqq`Xs}A3 zwUC2#0GUP(F%+PU>yCWjnyaFRnDaSquR z66fAwX5b>?e6rs`TuA&3aWV0Y#HGYLt@YnU33exk3UXLPTtfB~;u^BAAg(8VjkuBc z5OE7}6>%GJjZyzl+MYH`bc`J0iQgp7p$sGtr;>d!aWQT0zama2`|HFm;#Z0DiQP|= z!b6IOh;u2yMB-Ai?;x%qUP2syhgpD;#5H8Uh1f%OCvm-LKmT_NPI5>mhenFPL!3?a z4B{5D7ZK-EhINR z4Sm)a?dg!2m0DEf?ym*wgT>!86|#oYzEzdlJz{uM3Y3K_@;0c2{2TnK2Qp)FA7iDo z{x_XNSDHR}E#V$5YQTz9nvuz&tChNs(YFhsYeLCLXEa`pT(U=7gqJ5A*rUBSJC~)! zHy`g*zolN>_4QX@eZ`jHI~|*bH_Mur?Hg4wjP)RC0RD+aCY8r1NOjGH@#&IpA^6@|_O(~?R=qkt{$a=_N$R@~6kZq7EyzManuK0`1G)o~n zgBu}jkSivd+=)4CMJU7!=8{{V*TP4rOf*m?-bQt+s|nKKFmBljNFzg#DxormeCv5F z!L2HRg`BU1G{3^9_cMJ9Al21K9Lv%Ynm3~cPj>!#Gd?QqG{m9eJ%coBl1=~BtRTMm zj^lS84XWRiip(~Yn}2;&gH1{+KFE)o1!4Vl&P7Y$qcYe6`73idzQld=iO{3PM~xQS zYPDD{6563s!Zny`EeKMD#S0mX+IB*!YcZBu<@Y3{x;}+eeobS|jKrs-m#SuI!tADk z{C5eLP{MFKcMZn=O(k$Gq`G!PssyUAX;JaDKpM@C6;ZKt?bV{MRCQj9*eX>}T$8EJ zb0Dw9{z>U7XdiVLQpM;TZ0gfln!ULJUHFc#zbeZ^M}qGFrK=a4RTY)x$mzCnr_Ci4^lP1{W6ME zM(o$3=2$uDh6%PA{Zg?LIa62T05eLvpRIs$t+JUr&~Rhv%wvy42K(aETy$LCzh9dW ztRgCt$MH88pXTms&DTLI@JClGQI=D}komYTv{+`;XbTdI zn(kwEy^G*xUxz4hHLR1BHCnGsWp5?>+pw#v1=7grzs#v96;hQm8&XwWK4dUtF{D$5 z9MBTGs%RX2&B{2rQI0sEr5F={i*$pF;EyYu3a9)%u*GjQ^(eHx`HmD-exvrQU{jOH z*GNKL_6JPAY)GYFL3}Uq2&1LyH}ydbD(7S`o4<4*Kzoiy08WyZ@|;soWI3slkMP&6Az?xyFJ zuOU^RX(P7XYVs)QeOZg@r=lpKC@TC)rP7_d*(_1GJJmcL2i0Yn>5ez%c(;Ad(Fz*4OxnhlB#l*9EWxv$<)k? zwFM1t<+&BMEiagUrI1fBr{e*c_qrA(2OrepRT-xq)E)>?Ezz2;vB9$WpcXeNztJ4) ztsf&xpI|Ea$t=dbetUAOd#U%bZ2d2KIj&Y48mk&b*+&^$9<>cJyLGKL(6Cj&Hu^%_ zYqi=4m91ak)7J_g<=3cI(RL$WHTY!9%sMS8!cs4WD&J7AtJC7nsne%$mW|H_`B0tK z|D5`VOE|M#s?^8pv|$lexl5s{GSm^TYl$j5Ltoco&zYO>yw{4)208C_ZS1+o2G8Xz z9iMFZ$m?2Cj1?KX0%_o*+R7%6zpjl}5q3SK#VXnFkk-#Ar|P`Xs+>jUFtrL)yPUI6 z@xd!V4{5!787(zILtOYx-D++OzkEn_6|R;q9HKeaak1(1 zpM1IQ4Xt;wie5z+y@Rte_-vqBVGncW#Ak!t|AsbfsFjOrcXC#Uk5&4CJk8<1<2A>Y zjC@l|S!jj1?J3T}o<{GYs3)kLZ@sW|F4);K=qpq@qd#pn*D))e$*|AGCtGfNQ;S<; z<-DYlvz%wo=X?e33;g)+8ffxv&RqCdSxQ9T3RitAAjuU~h*y1NM7{Qe+set{m(ULQ zShWyyz6+h3z=B@ptOq`pPmjOxSqyuLpHK4N_}r$_G1E#=Lxo*LPhr+H)`$-Emdrb* zMX7$a?5H+F$rp}l1JC6*_dU*P@TsTT9b=?(VGG>$Ir{7u=mh>P5HO;HzC@YSr`7C( z2}V3-|FR~H3fNELgLvekx3o3J6rnnOzrQJ5k3Uhj_)L~RzNICen~x@U63l~7f$V6n&a4BNN0fl7{fTkAE|>T!-?f;He%N=YnE!`g|D#r~TxD_ikHu-(N6 zQ^Jn7wW$|dQ^C_0EF$J}_AvCuRMi`4O|+`E!6{gLreO80ve!FWN#=hoBf;Gdw1p^g{E!#>QgTU$W+ z=(}2qs{YsC)do&del_rOswy*%CjP)y(+oTAZ**@PYdf9m+^u}&(D$^25G$VLMr)5# zsJhXxzv-XR#e$XKGntBTBc7_%@oF;`7ex2yd)l~jYiq6)tQenodFnlFxytp72CY|5 zEBYY_+W%ZoY^;#v;&c7&QMjrguR#t_LDYybp4W;loCHsPh=(3*a(14El)=Zf<-Ad@ zJE28|w5aVfu54NKK6Xj2hqa)P{BJZ?f)6uv-n1a;fm+rc*X*LLw>)uN>!(%pW^(OL zEk@c;K-<($rkv3F@idu?Naf-aT6B`Dw;8klzgB9lZ#6mWQ7tAo|641W7)C$4MiGqR z6_0>eZV+D=D_9kRxy!Yfh$aMULJn<^HGVk_lMUs_Y5Mz`ojc@l|FEgwQIh9M)*mmk zjX3ESeKA}nKCH!rRD6fWYJARDfa?h@=pQFFds5jo{^c?6t?ad0;q5Jf;a8m0qIs2( zT&U%q(<1LXp~VHA%m2A@mb6e_D-aQrdl6XviJVSoeC@xcZq=7Kr5SrJ4j1)lL)br5 zc<5a?#*CAff1nK-txlq?>&%bpUSsJ$oY%$wgr|Ff#~wf32)XA2{BhO)d%NoYd%LRH zQT{J~yQ=TeMr~PV^@Wk^#U>4}jZgQLf31DUyKkRnem8|B$hb--nf!qCeybhCdnIOl zhu1wu*{7K5lBuR_nyaZ-sgCwxyyn_C{uUdrNtQiNYf-o#ep(v_k#}0_Z&H-pc^b1p zzT8VH<@}@R%zrVw@IOt8kr)4>CBUob7ns-lV#I~}bCJ9PJ%_KY?N=H#>5 zObDoys5`4ov%>WFw+iDM{%`Gl?k+f{VS&YS8l($y3#12fJ7gK8{cX(NkUb#rc3aj5 zvJLX0^{%gcTGA)KJVzp2> z@q2`NNDs+cNTqLpY=E@mM7|L+7qSVm0y2X&u_j3NCJyIt9;(;{IRUZ+vf&N+d7C!X zebG^k6(-_H12U%vV@udqyav(*j_-w|4V;1&B;kzk5aM;9V6VeJ8Q%mQM*5J&U{`O( z7P4i$0&*71<837K`?R`?-fkScz> zHWq*Kx{MbL!Res7sexiY|5kXg4Xa1M27ISd_y$&$(Wn7%{1`Aw+=4IRTOpe!F!l#Z zUOW*sfEsR_gl`U!frc!c@j~B5(lr?w0hdjI9kO<+nE~|&yt7c#x%g{e;|4E(HFAa* z&ayn#%nKk-BEr;5aWagOIxoY<2@%*X$Egxz%?u=r43^Bnxj!
ytFsBJ!)5*f-~ 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%0AXQUl(`jy4-%&pCWv{ zbYc09D~DViIzM*2acd(tzB_Nh4=<*jy*kCeY4>POCvToNS#O7X`400Q>Ra4yKWmJm z-T%V!&^*>e-ue_){ho{}n^QM)(t5OuF{@{b%%3PgCH(9lkGIc{;81 zz>s4JElHDW|9KR?Lr-6ctWR_Fob-Bb!qDMKuI3-(x15_$Rd7obXu5M|8sBy7&bp~@ zuDgAErK??My`AW-2XmaVjG(0 zu9Gz#PIDZ!zf|O-Dt}s+eroBm152#D`lr|zHTAm3{%&4zVJy}2L|x_nF=lppRnt{NU`7HbC0<5+VJh|u9z!^*+3I@N zY4zI>Z~0C3^^A*+>Gq{Jx74<~Aei$+*mXw2rBR*}{)yCP>^@pF`lrquo4{Thr$~HV z-tkX%)*ZYaX-psJJgzzMSpQ`U|LX1&5ZPzr>4^G$t}Q8>YezpB^ykV;{RXLGSB8XN zo<6kCs){pv_L^(#W277ZE?>LHUii}oMc=q??$fvr9rt8fd-dov>21dR9o`u(yOy%| r^3HbtZcM+e*fJvRR-Vg>@w47#?HKRB&}OD@UHk7db0=c=NdEo{6)LGG delta 47339 zcmeFad0bUh`}e=r+MowSWd=dzfD_I*<9rZJEC-wtr(19eD-+EM8$1Vx!nESFsfA?; zWd)>#Q5_luwL)z`^S+}Qv;k8K(-Q9nexJ4XwH43pbAO-bkKgb0`{UWYj@N!)*R|$x zuXEVteh}{ZGCa@a%t?<+dXG;IwmuK9n-=l`_~CVvLhdnSO2~1@RvY#PA2j5&kRygn zAvr1JDZ_6{$cK>c@hQRcA!{~IGUBP(JUK*#tJz#`gny5JX~>$*QyLi?h7<(8WT#?K5alD^4KBJX>JMTNdeoA9$P-jD? zDto#QYh1_~bNH~tNbudh%rywI(wEKhW2{j>%42w$evS|03-q3%2hY@}i)lQuyhw}` z{HF4+eLnMzEec}!Ho@}P1np8LXN|T2j!TS>{TJ?QScc8LPXDKWk8Y=YS$>RN`=_Bz z@^jx3%<})bXMb^}w&-7f-LtRcFO9jE>#=P{^1JkfZR|c({_d%IPMaQlsb1112FV|4 z6YrB0;2xm=)+Xl0NmiOk*GMy`ojcZuy~>E)%tw27$6yw!3T<#spgXc97X`UPgY}yO zqK4|BEZ=ac3U>QbG|gSKf2xd{nGbRMv<%8a+$>msGoV-7w<0NMeW?3a{aiqo;r$a> z{soPdh6q-cKF-(uIXrSXE3+lVxdn60$Sh@->b1~PWvh;&&_&_yFZC&Hr?s78Wu-pc zeGu`5$eOQ(k6zg}ply<6O6uUQ(A@!HT7>%*{ao8W_#OJ$cK!JSdZ+f$e6c>f{V+aN zU)_EpAE&?3zCWL(pK2d%>%W)fe|z_!Y~9g5Opguh-AeOk`QiThjKJ&o7=3%-i~KKr zLeQ|Fqh&1rgw~<7UW+cR(?Uu=(jN+n==%Y*b!{A%cx&cvYR~f9G8U=|QKvLQ$v4T5<)`U$ zL%QiN4YxUcO7{tVT2u?wFI{^hFL_ZP9X5y;=&Qpf zqK~{0)|)TXzYiN58;{yheVp?l?govQ`gN*IJk{JhM75A=sa5)r@L@bdUl|_FbM-CZ zsc}gI-KP+7CO+{fK-LD=sD?N;d~l4}mu(q?^*_QpbX$f@)U>lrRgv4O2D_EN%63`j z$f;Qyaz-_4!X2OwkBIMy2m`-k(^T7BKn|2+MjYA>9~F6^6>*jRU_^hBG*Dla-l@&M zJ5zFekbW|vJE;f#V5u_(T~1N8(fQU%P1bPsD;ngEv7rPiXBmU^`H`Ki;D@c?vBUn? z!83+k2_8GFMR5L-?$;rH#Q#v99ab7tDR~>JMj2U&9iiXSVF15Hf2u=te z*+%AGjh<|S+<9|+VtWkRE$tkyjODh|TQID`5eMe{WB0dZ`4^F(3L6okI!#Dv=zI-B zHKH^F;dkCVEHO~49IYXqIxWnU(yi$p6DUy+|8)|^Q`n|93}kReV;Z!=lq+Mqzg=K!gb7v%%9Xd zb-IOD>svZ4wV@?#n^@D6`fr`|pkD(~ksaC0T*ii|08HQBc@75Xxz5pks^6Z+oHSSu zi<#pbj%c63__McBRT)`2WRWNd-($`Nsx4JJu3&8Nm9Z9r87idIj=3PX70VBDIQGP( z@sb$Eh7UNv_rxAh)gD?p4 zt1!*U++EwG``d@|Iz7oADT)&H`Swmj6MC?GA9ROI)-*J|o#T=X{^{Y4OTC~sTBph! z0cg6Ryp`*i8oJGG^q1^iLSa#3)flJBicWV<4~h-Zo9vPN2i(PXMa3zXbPQqThU)3{ zUPqR1MCNNo_Nl%ww(GSV%PmLEbga^!i%kpUqunZ7ENQHJe+So$=k&I5-*UHpHZDe- z-mSOm@^Iqmi_Nn6fH?YZ4T)mG4O@|D%qwFVJC}edd~o1nPo!c*sgAw{t&key8r^^z z(vNo;C4PNT5AGV*w{;tq-((DgkkYh~=0ZJlz6}E*vh>7@=qxuUCMF%=ZU>5`Comb$j8@TxmEO3> z2hoO#m zk12ggY9!B+y;;-W@A0d+;IF?KAJ_H+MD|&8bA&6dv%5h*6+e-`q7Ud9!Cm^Ko^SEF zx^J)k&I!Mx_LHyFerVB1qxMzJt6H{dKDD)L^dA^4i=3jw>i;1;^oW{@oFe>mbs(E{ z2|db*DGjYS>jbK3=1l_AS!k&vnYpKxqDmm0n9gR-8CQ~qT?wW&XJ{towHO|LdJ?t> zVKlET#ea~gv&v~=biVKnDxM5LNiEj|0x{E0{xIekh(H|9Q(+TJx;9=`IIOdHkF|*1^PC$I~%`rFYz&C##=wsvl$(Z>ZJ<@UiM zoaDqX|C*UQ&t?&N8XKBf4H(vHn%IJf>(mT~X<{%UZeGqyngtu~9_QF|ZXDaQ6TA~_ z^fdB!^fvwD;lJpnRwav)`S6s9SK@PwH0^f7ZYzmhbN~)CFR26_G%rP}1ktVE*Nghb zbh9dLC@QTIWi9;O*j^ob6?OKJFw1;I|GIAv=d-_g^{3cT|F86?JthAK{i)LSzwS>@ zBBK9K`_og%jCX&!8=1IPe=3HrcYo^tKlP`P{~P`3QAGTI(x2{!|9|UG>ka#V=}&j6 z1ksj1jxrq7b9?aU~H8xy5b-6@;NhLnmdZ~3aW-L253H{uKfprpoc(glKj|tb))GU8T9N)HLdy8PFrzB_T zkW0;SI_3@UNNtEvEg318pBk_(tZ0#-nwxAKk3N`}Qt;5A5>@k$N;n@0t3BXY&2~B$ z)67`ds-ahVz`0#~O4NL%eAS~`&-PAp)3*Yf#YmbQo3Ss8!-8VXM{}3>lzdfe_7hbD zb5elgR7|Y!KBGhFT9f){t4)8{MgeZ(U)mfh~49v+zhUcgc98 z`X*s&NI?KqZE8hSrLyPbKB1~FvqkkK{njspJ5rk{#UKa_SWW()sgxhk*$J*bG>YTOIV-1CwKYuxV98 zLQSW(qC|Ht_9?~aSUdgM8-p;VzNEh~FlI#}yb7@bI~aR)PaN+1J1*@T#tbe|j45wl zf0Lh690TrQa*^T)aE!@MDQ*vrFnPOTtUCM9vhDPwL3W?mME3{!vOyR5=j96rH}R;9 z5$@J%so^nekj*^5su60|&$Gpj)K?AdwCpofR<(L|%ZYXuo@DOr5jbjKfkTx~$p1R5 zdr(mB6S3;qb0c%#C|JJQd!9g_E!@c6`&-5d-lU%!n)lx_^5n2iL$^Rv?D1b!=;MB_+a;X|I4R1Wele_cemvF zAom7+QsNSRQs0v}pZ}!$4ev2}|MTh)BNSaT3Xk|RiE5yjF!s7M3zIwzUzFmI~|EB4m zkLbep>3@yr&&&0`Bm48;jQdmiLnBA>j^&3&dN`k~=Zv29-|F(0(Vc=WVk33AQ8n&< zqrB6Yw|UBcY0kk`b1q?Sf6Uox$}yS~q3`sHEm4nkOpFf3P%XjUr2$)Pbx5!xj+dy~ z_A45yZ*&X@e*u%MntK}1DY69iLhE^nAJY#zqN1mtZt&W%CxYpJN0*x9_V%-v}Ut}qgf(L*MW0Ihpn84Z+!-bDJ~JYb*;W) zoH}%Lk4xr5^nZ?<&x7>=$*cHry(sx2Z>4V^-yeJKL*u*f*817;5&R?Fcfv%zvwX^g zM+A@6zn(ZTXc%VNQE1(2e-^~W3;b`gR>uo0uo}M$%J(gnvLnD|6oA2T@ ziW}Wt{~3FjjqIpeQ}7($D+T93yl520wCmUpZMV+o#$7Y8dpmXjV=)e&I*qy8o!1|o z)DO>URgD>zooX3pd`C7*?X%;Jr;4!B+0(8(ReXln z)B}J@Nga}u&>=}rJOG5ydU*yz%Y2v!D@~(^2^ELx$sZK4Zuu%J*Q$^U2&gJVt<1V( zN~8$vq|ciYH6#-wj_)-aZ00yTe&Z0*&{dhbsnAuTf(%`~shgyiOtCvTcNZd3WndZH z{gic|B-~F}_pzE=TK7plZp_D~e~z!)ZQWP3azAX{C)wOvt$Xh0#wmyCU+?GMY~APh zyEow8X(Sxm#_hBWRc+k&TK5?N?sd2yj1D~yRXG;VN!6HZLa}m z$5@CU-^EO29ItR@)C@~%>%Pf~Gq#<3DefDvR(+-zmgf_sC;6+*2Oi1(ZdV=nDPlv=}}?KQ}Epd<=Xr0rgshp{hnR zhV9lMZ0GVH=e@`I^zuCmY?^h-8ief+0yo-nLiBGJ^;7Eh>HP#~ zEQE1@*InS`=i5bH^wLFbtY9DEFv$p3e>qr8Mn7J!Pt7n6aGe?b1Wx;2hCm$OX51+1 zJL|(1BVxOL6GUvBE*FmzMQijg7q1b#hdymdXN10ONnGG@MyTF@SrRWRU%hMr7b_C=PnOS)Nq&;$mt!BNR(+i5&-mkd z^Hc^oEwg1L>d80F_UR5Ez3|OYz3ish?RcnhdZp~4u!m$0=a=*;nW>^GynJV7Th5Eh z_pIouiD%d7pWZs1AJDt4oXGd;D_3?@s;w($^M}jpSI*=(jU2LSaJ!7IR&!}^LlbiP{u>y8&wAY&tJ*9M%5q@pH}6+BnuB9?{S& zi_Ohw`N?$|f`3*%;oe1DJW#K9-V|Q`_I-D7G-&xC=X8xvEZ@AL3)gq$hUjl?%n+x( zE$_TZ2)?{L_Wlsg$CeLyU=ZiO>PZhq>N&ZmRh4e}l;2yP^xz9z{QR~4)7IDdt9sEk zCok4xANqu+m!Eq`xABeo=Eu8+B~Q4Ni|;hjwO;PzhgiN{O{&TIyN?gW7aqSoK8VlJ zd&)m}LV34>n|wmv`&_Ni;wWQyBvFM->ZR}8ah=E+tN*woi9cW7^QqlFB6eW;XGLcP z|5AT%*DAiRe8_W41Q+GoUwGL^eDhEFa5#_CZ`~a$c$e}=cK@T5>eIix(p^;b!MNz4 zCzSh!@V>@4j8{Xcs*l^&m6hm?tK#&V%U?ldbb587#_uR!=1JE?ePsCuZ|)U7%kM`= z%zG=eJnx+ggZV^#^RLhH?)qQnBXq}k9RKUH&%Yqf9Vq|%{COdgy6MgT4lB1^{0#%Q zTY2-p<9w9t(%ee1r?=oM{rP^+_5gmD58v$x3gSIDpXV7K%xC)WDV~SI!QziMJ+DXb zCwy9c^+vP2bc_6ZBaeC^t0U)pn`d<={)i9H^6)r*H}}c&&*>?hUHD5Pr>CcXSN=_F zkobVWaUSw-=1xAx z^V(>>O7Qlwn}gpZe%tGL*ufWSyv%bZneXO)8(waf?d`5(Ydu91_c>cPMJ2k#i z-giB3=BqvT-N4I5$bvoUyvla831M>^9E;LQ0<*ghjp^8)DdF z`%33j-iddTPfg{sMABe+eky-lXoKa}X}nj|#!;7pO+~P}C<>O-SAH^$ziIfT@-a#t zN#z5TY)<99l~Occ}D(v7aHf(GqQ6wA1R7jdFE&H ze!l*zTe(p!c^$aG7X@%w(n{{T53Rbom2AF`5AX2AGtDv`XDWrAaomdUp9-TKmkP0j z<;&^od4HZObJp_+zCmtZkDT?Am)7&8BB_;JrVOajeH=wZr@F);7VDv3AuP&zOf0lzp<6)+fDp6Zo6S;vozW=YbX!(l-tGyd14>rb}o2~CwVJ>UK6qXJf|P#Q#AgBeCSa$bLyjf6yNN@ z{fiuJI6R*}qVb{fkmOGeZ@&Y37>qR=$5wQGV96oe_vB&5Dr@Sa-7DgPN_wJ{YQbND zqaF3VB<6_%{<6kL%PBi}7oR_$XqI}yn~|PvJ9w24d;5E)?c}SuXxJ|I7h=kbklz<# zX83EnXKE4h-ZpZ3vsAm*^cl=OMYi3=T_UN6=aF4_M&|E&hQEZL&hW`{^~-#l;6r5d z%lrhS=VTfGQ-ooK;cmabzOA<7=Q8+8sMiq8lAa6Y{5jOYV9%4U@!vT2k!}w^!atV_ zEBGLOP`WGl2mF3H_YF*cDW2(XqMwP7N9EH6Jl^y4Tl`e(4rMR?%lFd0WHwyotD(8M zk=2iO0EDycMyZXD^x()ZDw({b8{5Jojb|z=EldIkb zpCiVU`s4fjX8#Od)1Koi=YPPL2UYnRUk<7-1&w&><*^U=XYFEJK}{<3VNW&xS8#pn zt6jNG?mWaF4vzJ^TA$=6#~$YQ2WR+St)R;5Ug~RG zL(c=`k4N~1;2cA*euiLXt*DK>=Rq&5!vo=am|BCkHY- zuDNEY?|zM-mtB30sO_-zvuvnBBbuaEhRp$656i||o3_~2hRp?=-Lj#Yjd0v%*qjUp z6CEsLm5uUd8q;A5wrpqzGeJKyQrOy9wkvgR*cj@-$FiZGjc`S644WOczwmX0(uw*u zeJD2phS34z?=YrA8V+a-RjEb088C0O0)^ckNe<Hc%j^}A&h#v+;}U!J=klg_Ra{0xtm?vs2Z z?;t-q$!`j89*H0JU@L_$-HyGd2aiT>s;gndbA(-ULVBq+E2Wk z|KwS5TCG?cJ&&E`TRA3;*k5>S&aaa_8?oS>*zEbDk#83$;@a~(A)xI|8?YLoW8>D+IEsw@Ja72J$p4np+lt=u-U+;;-*@*l%V`MsFHeU6 zfys1-2euf&13atSi;)_iAom1|FXYZp5hizph)}-Nvo}OUaNgN-C{#@3{6iTOE@pOe z-rFpbPzW_q-!YE4%fa}yLa^d&nG-HNSUQJCz;lR~=ZY4d{gh{nr#eEUx8|K?&lvHG z_$k{HWfu?NnPsAUHcng!&GYk}c&Qi%!~Q{jTXBw(m+3dr^I{j#iSvKUqHZEW)^!z? z{GbQ-x(}c48PZFn3sLVUWgoFlZOZ%NSC)LO#3OMC?;-E#CvL}n=2Sm%1NN&!`U^+D zj4*dhZM)TVA-PZZVZWS<*`39Pxm#KH_ywY7-4}(*XZwqP^5^Bc1aTLlKbIhW;XF~+ z4;0S^^^RAE#M~_=nBAy{d~A?N4jp(0jvsLP(tz(M*aXL=Qz(W!Gf4a?eqJko8Z3J8 z)-r5}_>r%We+?1)c$j==sQ7@Nl$(c%lj2`%^uN!Cdt8YkQSiq-Z;TLIeQf8u8HXLE z>XF)$K2}8d_?BJ7AeZ+hi}~{6c+uJOTe7&_ukFXTHOs;^j!Sje+#K=TF-62^ZM7CU z<|#@Qd3dY|^$eOVR≀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 F{sR^q&!7MR diff --git a/Shared/data/launchers/MTA Server64.exe b/Shared/data/launchers/MTA Server64.exe index daa94651681542d0efdc326f6029c2c0d7e8237d..0914af8aa5c123575023f97058953625d9cc0ad3 100644 GIT binary patch delta 3040 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 delta 4018 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 PB6Sd*uXU?g|84&PW_ine diff --git a/Shared/data/launchers/Multi Theft Auto.exe b/Shared/data/launchers/Multi Theft Auto.exe index 64ecb98eabf2976f16267d2126a5bbbb38de6712..3093964d55db51e65aa08745d494446378c6b8b5 100644 GIT binary patch delta 3171 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 Uyy_UQ5`(}X+#`Rrmmtu800%o&bpQYW delta 4149 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 diff --git a/Shared/data/launchers/wow64_helper.exe b/Shared/data/launchers/wow64_helper.exe index c6fcaeefa150f6c753957346d179d4c00d82c771..38927395bb82cce700877469bdebcb12932a053e 100644 GIT binary patch delta 34685 zcmbrncUV-%_Xm9EURLU|AS^|?EP@3^5XFLmf-Z^*3W^0wY}ipjjSUQ9#FeNSbu{)C zHO7j%c0on3V~ZL!0b3TaV2yp>&)fy|o8SAq|GYdooHA$5%$<79xfhdZRL!YSEy&F1 zcKzCWr+tUER73KG{hRH;CtolYFw*Y6i{K<2v*AC!VN$(DsaE_LIg1!3^)8bWgP(V;@s zPo+>>uoi9W3X4QRXhLLZ3XLR<#DZixo^%uE)TO7$cO)dQu2@Fek2xd=T3xX=M-j0> z5{&BJYeYett2{d&DC=ZE`I4i8aPFKo>v6zt0{KWN8IA@C!U8aVR4a|6ab{}bOoy69 zwYzW-26L5Dd07tri?9IL4K0drAq1^VT`!poKRv=Uq7v!1X>KsP1~wI^Ok1tK_bCs_s=Cxd!?&9FlUE>iW6L)10^X z%GX^0{_SB?f3!IX8ar)Hti~cXCyL%t1Q9Q4Tca8IhqkZLhHRpF5NFF_C(SvND_Li|kMf+JMsKkAIP!s29b7M6D zhTmy{Wlyq#x>|il7Sd@}EyT}z=zgp2WFWP%jv)E8vvn&{pU$=JLT=NW)@{i$>Tc74 z#M8kxF~pp1xAAB?GY>**tEdu`j1 zO#05&lcZA@m5;Kgl54Jf%QZLA_Nu<5CS9*;KniGys?g)!cJwVfUp4D4AGF*ge{I&i zQf*GVw-pwKBD&jdhhN29L5R_v!U7Gd?tTA$eNGq#z2O#ff5uE2tm$m~Xbki@`vGJQ z4Xo)`ywcGPLw>+9vd+)LumE%kn#rAYr($&H3_pO6)kSII zI_5gIjFGN&%C%`?7)`y^4H~BW2E+Ba;imtoR0n*gT*pSSx)WOI54nm1ouaO*d{TqA z9rA*=9Zq+u4-*?Y+R06<+)U>>)m7ab!W%1$(Or$fIy*~`J2iGK*o;=(cq{Y&r*tN@ zac-#Wq2LBrRC0sA(hkmNJcezm8kTeacjPGfRt&SeOxMfdp9fn++Gs6Y;44sor zDigeb#g%e6Nb<4=%U)~#Xncj)fy+yRqtT&%a2wUW1-DHoo00~0u{}GLThz54R>eo=By9$!&+M;;Wuv;M|31?m};=KpNSKtzTG`9EEfd1 z9c|7?Zw!&Ps9k^xH6rGWv@`6YW}1K+bD(1APlGihafPhXIFnm+pQfj{=@;I2yOIA^ z8$GAhS(XRTP`_>@kk0XIZGPsBTx4qOp5H7CN=ltjl0jG1@h1J~u{wQ7H|pj;LTt2@ zZVw2vf6aKui?q5}O{zBJoMAdG@mHH~eTCbMuND79vHmpb?%#-x4`@Lw=(d37H7_jr z-zq&Az2xs`KI((dj>7%-l zB!@Pr7ot3XQ@5yH6u+Cxx6x7ce6X^9suxKf(2{!2_KhJowu>sS3oNfG`nH}2E+MD- zVI-J#t*_BsdTumE>e_qfbijyq^41y)Ft{$-oKD`lc5&L4#S_0*dC}GNJCdICQT^6o zNm|_~%>X_{@?qJxf4>t3@5vZCL%+%|V~csy=JeILB=+cu8#Yy|Qv}ih4cy2jI<3Jk z

!d3?Q9pL|`B;!ZCqScI&3V5%9wa9+eXit5Z;VJTTEE^qJ9!^DZJMIt8~Ct~KSA z@1Zt>Hfq=_c0EWTJtX9`p=mcFXzMGsLZDOb!f$QMf*Cf@j_2Adtnu7g;b~l5HEWqd z5Ku+pRdN)Qxw1|XPp>wNuv+>9zwbK-7>-fTMkDI3n9R%Uv^p!TQORVcEqo805FABX z!2b7;8e-|LMqXBZGv&&ehIaJNM$gCxdM3!tTA#s%v6=yfC$ut1M)aHhJ(2`co zJk%w40QCJC25i2;f2>?9aXz?D*i@Y+N*6CecGlGiaaAu*7_}}sxPxNYijb9e3Ls> z0Xk&?{TNZJ{@r1cpqjs#ukoz#8$J14XAcJ#x!-6GS?(eY98t`?Q9X}FMtYDpw0~qP zcsna1z3}^RWR$%bDrvLct0p$l8gZ#8Z&UlWp?1IafL*(JnoMjimA!Hk?a?;MvKxea zEB!{-w+-+Q9Ew#i3kq4`J|K;%>^7f`7%JtQ?ikm9GI;Y!i=p&I+YmC0)@c`Ly$rXf zXM+}PW?E(Y7Bxf07YPEfv-0`-QG!+3kJ`>ge&AKGU(IxL1YZ|>adyYrNteV!9Dy= z+t@mWJ0EBv!hl0l>mGD@DCaw`G4wi#PNO3#`{)7a1zPQ#8oA#By+GGin6w5MLg*vy z2ogXOV^&!$94uFjFnH&EiXp`Msfk}>P#>pjV%@A#Onj!{8Ex3f(>h3IdCRBrdUk3} ztcDG$YI+7;9qVp=={uRtG$iHIMx8vYm&rWWZa$s zpI_%DdFN8YTzV<47R`-Qg%->5#7qoTsiFIIn1fFtYew+1!RHTIqUhDXx;lgnP}|R` z&OY9@JmPL9vU8@vp4!BF`oBRZ47tJFO-Xl(+>gBgi|YGw*E;7LLb~%{LGhNx$E$6Q zbE)nMZ%mgrKE9tw4%18BH7$#<=?IyNCBpamBd zDVhQC3q5L1s0%0UB$d6wR;D`HVFfzSGYQ2mce{u}6mI`qb$)M76`EQJp}!@1s@&Us zWBlK?G&P|P{gh}EaHXx>LJ3e+3%fWex3Ed3r|GO7E$TGI7BVax#rJkS zkl5SdpX9x*h`{K+8Y%B>dwRb|6Ou+;*3}JUO3q zrJs{MNlBhZzX)QbiswVx`K@7M-mw043HeAD4hSWG(4ql@Nn_ezU^jAsW(;ge#?wOs zJ1ToK+LgED^|F9+8Q zT*gqN`o}0y&=uEL`hw3r40 zA_(EG-3gqC#V9sd58y+47^E>h+o-ldBPiMiK1Z>hE6nH*rzXWHkNHnra1(;8@E>>$ z2UT`7N{s41+VM3|jGCk9vO%>;Bt1N+A)KI!K@F|ib&|*HqTxOD9o)xijNC%!XNJXe z&fs>c_|5YENo<56eTI19&%xKo`MjM&HW3m^lZJJ$I^RLAt}>+2EyFHay=q^@F3t^1 zEMKq#48zy(_Ors*(8HrNUVGY_eGgE`CZ zkh^qwT82X~pOycypGE`IZ<8!)HE|+2M`uoaO776qN$#YS=1zKO@vbR?w_JrMojQ3g z=|F3IUt+N&R2Chge|`U|=9G1?ha)vVMt2R*y2kL1-k*{|Tzv!KMWMS56NRZPw5}Ga_xv8;e48Nd7_o$Oyz1P7e}wtLg0-&FK5--E0@gD@j)Z z`-0&m?LDKdZAs8K6@2M$GlDQnw`R;$OxlDdY3kHqx*{WnF#0fKp~LHjJODkR+LwU4 zTV5OY=-kZlq=bIT{L#@6C<>i*h2NC^v4ZL{-RYj0iQ)-LKW8?hZGX7HeZH*PqU$em zhu_ryru`T?D=UmFphvP8@)wD-;&EndnzfO;7uk`P{d_TJh+bz?maQe>v^3if{i-qh z2|@JFj@oU_vTs;M~4A z>E_PePdd_ex(@2`3yj8CU8y$ftuYSlgU$LX)3eUTEINnepoc@r0nCw5IHeWP~+X@j?m?~~NLJ4)(;+d{<7;%+2av=Wu3E#${Df-kGd0m zC^4+b+xE*nLeAwaTrpQ9m-5_KPZE(qTC}!}MLEUDPg zw#m=k?KvJNryT+wpBVltg!O6F|ySkA=6ke$8CB%84 zP)oH>;ZJLA@y3>Jxh24UA-eJ<9{>vn^3t|UBcjc4`r@~3CxY<- zzaJHC2U72C*`z4%*KMao9<=P-K|WFMU9ZS~s@}cUvPUEjT4&95q{nu5YC3f086haM ztWDJW{of_hc;XvfnRa;A8X@+*%_Mnp>o~AYWvMW%L7PMceXt`ePK$z@orJM_Ax; zR@}s+K+gesJmMTd^Y;7Ua=E#`vFa{N3j;52dTXOPwt@)d&v10Y$26*)sMo>GWE(9$7~)=Ts#V9R?g>iwR-5&~m}ZYX zV^sH}&WAd<&o(Le7}c-JzbI^%6+X}@hnjjfF)3(_>UCcfRI`%c8OTZ-Y0066WFj>l zY6%ys<>7vI^dCM^lH4~7qk0eBa@f6V{~98O(;gPkMLcr`czCQv^-u#ux#}Nf{w%Tv z$CSE-VxO-4?KGI>GY083U`S36#|nAbR5Ug zKD22d7od=zX0_jlvho`yg+;tKxyn$ku;M(jJc_?)*3k$gwoe`nuVEc(G#ctq^J9l` zIGjATnkSj_{X}bt>hfc}mR5*D`qSWiY}or8_W^vT*m%1jV=(r{W*@Uw%}BPh!LpDFv78E&NM#~Zl(S&jikM4xVMn05uJ zU=@!=a+N3Pf#YpzALfPXeRnbSimQLXK(2BNL^}0WUXY)oI7VxosMU7^irVFv5uqhB6Gc>FIpM-<1&W;>!FtEG@$JImTw5gi?Z_*mT(C6RbiDEZ1tfpozM zbvR+vZW6n#LT2a(9M=q^R;Zqn}y8#sAEnDv%SbKQ?LhLEd$ zuUZ$SyG#!iy7#!16J42;{3@sO+nmIY$YOoEA_|9U@P(6A`ngE)0xVx=MT*Cu_+f!L zx(QNs@E^wsZcutwq&WYz=qSh>kCQa;RI`kEpm&#M6e@a{}1K_}XSj`BSX>z~kE80T7^P7l`VqP=S$Z*e@`2RgMO%~JZ~ zcLelq<#@P)gtiq>g*g;52q@LTht3mhw5o%ZNJT21T}I=ogLfS!bo^o~B9f=vPiPCu z?fi^_nUGaxo}*az0JdhHM%I*Q|GlL3RqjPiZH{s~5C(FhwKl8l82D9H2GtWBxk0p3 z>M+3)C^YLb{jR7XccqIw>Ua4Ii%A!aH+a#NMzwGUt1w^NnA7)f%XDsM7ZbmM-YjYn z{rx4hhTAeu`)>)l{TpZTS}FNNNdAd)auAMNaK8{CXUDO0a_&RH=yx23&z;*zPVhrI zn)BNVjQTTCQrUZQT1;xt6O zUBs)POdIBW6=h0Ljm(EdWg)LxWJdT#`YP8c;jNr=R3@G0_G8Vwq3KR%o(s-chG#-w zEs(zs(iO{{Jp~hnbUsrM2A~Jq&;#DtfU3@hb6%%d!cmUG9O^}iCx2J>?;lX6{yndv zzV;(mSq>TA6$WW@9Qlj&79-x^&ghIpB*IHv0Q~SrKHi&W<0Ej?8r21SfOUu7$}1-U z%R+ZiUN^hwsPj!*{2-V1)uf{*8bsBrI4PFY&yVx1;ejAp!(bpHl z@SdSz$$HWW{dDd(X z@`2X!=XptM{;d_Qit_sYJ&lk>^k!*<^NamB(9_LB^2>S7&!|Q=9=Vh|G^otS;}FUW zy+h^8yvxB%l;?JwX;{3LXIoa&F=h2#CO{+PvcV2I*aL=u4k)^4R3E0h%IbOsqY!aY znjbEr*(E&XVmQ%6HfCF-D5r1BJni4;q4Lg{W@8XglBIl*=YKbjki~hE@AV`$xqKyJ z;dvX?zvbP!|AyG;&VG?>&b#w)lbL9-J#Ti!6f*?-q_PK3bX3kG0eKH9D@4*N@6yYr z1U|UM>&4`H-m2I2M7;4l{cj@P4SK!Z#mnDX6B3kn=bev&%%;ZA@5~%ueKsyWLVWjn zk@1AQWIq$~#(dWE&qi%dJbhm2&31@HYp(uAFjgWpm_{P2#ev&t**-^$L1*~splHI% zB;st-pn&gv*^#!_o0*Ybgc$Yx6r_Vl^z2u2vXvatce5amBofEMZO94H<{!PNB+#tG z%&?VRoy#0Ml)`PI}|YE%j^Hf6RNr^7)Npw?qvD@X zehNY>n|RC`I}>-yW>t#*`X0`tCm}o7b{Eow%w_jnNK4Y1dAWjfWeKjNsr_XgtQ2c= z`dggpU*-CplNW5OH%WsXZy(}LcCv6E;zcI2 zWFO*+N15b9!bOX0w$F!n+r0Tfj@aBVydT(IA2Ql%`W{4gM5R|uX1!_?Z?{|XcsG!; zIcsQ;%@?^U8}9_<#l#lXCfhOG?R?1)qG4NnNjGwdee}hsuV9Teq&a!SMrzRLewMAl z1ifWJxk)-4(nmYK==z$Z-63uDRaa?}hC{ka zzrznF0Qr^uQ-^r^Z_40RkwMZLwOQ{zO&Tf3pUWW4dMlpprdn;7>Y}PHc)l z2_?Duo&MyN4>9OB#*ms4N!0I;C9@<_q7RQF7e!H+rMK-)V$DhLrarxi8ELHV+mD2NUBo@)HHSD^WHf=X9FHUxK8O5lek}yym!gRMF^6=wodAZ9{dBmr>M^WY4hbWR zS!xbxWszE+*HXmm_vDZn#N$z2QAkr5kWj|@mi;^&J^}c$McYz&igncyAOA&AG3m>$zm7n}-uB>xy+( zjOyATaX2+XcX&Y2lCArR#3U~4$j@q{`m{4w#7T|21@VHK%b~=pLsB#5VCvM~{g(eo z*73TdT&k4$8!L08+8t`#dk%v0iiq(EiR8(aq|&jYhL3Wn#7%Lp9L`7^ z)_x(0B)iz0g=D^Cngd*u+(=QrMY-#&Q`BVje=(oHhdGKL zJVk-Wt~?cr#h0s$gupP0FRWZ;XXe64U7W3L8R?Mm0Z)!Yp;A>q5RIpMVdWX*!SJxO zfUTBi;nwa0 zS$5kb+hvli1;S!4=E5w$6`YfeBQ(Og*wz+PpR4>e5?RXUKOsBJA7s|)G$;OU&JDWQ zV_Oh}R#icbsiqof`d&*(a}nc0e<7nhrq|*F5?z`T&xgS)oG+;88~m%GT;)RMzMQNf zsrnQu`-E8V=tcwL~C9;ZSC@We`x)LYm zyoNMt_wYR~PdWaW)|ba0*T5UA$MQ>#O`%d_D0F{nn~P~qx|y5dG-NBR@opg9!tjw5 ztRYTjxr$qkOtqFckt^)r8seqiijn?rmDTJiipV5pyOub64l|PtY@WbZ2<`>GHn8kM z^5N-PN3eElNe|+{epw60=LOTRB^`aXqIVT$2(UHsp5gOq81xY<6CQ^p4+2>2btH(i z(05-)ViYQalAl#NMJaHO@=yKNO(a{ypf>)EEFwkh)NjPg`X7A$h}w=u^=MZ48~NZG z`JM|RREtmHQ1Q}c->UNJ%k*ZyllsJB8_y9Bf@{)j8zG`-RG6;nw)*ZnNEyBrWud#s z2(px|*@YYXmj2)_+{nruh)1jUa2|WKo5VZC!}q{m?`A^XO(=oI=aHk>!ghN|l)ILo z|E|c@G~)!4li{s7Va~tYVySzGH~GjG?jgff?|reD3QEmlBxKx_ubAatEP{co!Cn&M z?)(BDP8mxoTyQ>4xE>cXyWkW&e0-g%Q=|4?l4xJY66cdzcrFiw6LRG2-@T-ZO%e7m zUSft^#(N1CzmH5H0s6vyWV>iR9MhoHJ=YEj?8#;vAn(X&{p5q>2_b#h(8Hu1@nydq zhFj#wP9MhV6&te0hevH(aJk*GRa9%Y7oK zx`x}c!`FzP>PiV8inMxKT_OC*JFM~=+^NBA_#ar1PgwpRL{0u?fBb=a`~p*5Cv!+B zTY8-gCME3Cbuv-e3k^)@8KWzX%~f}1nK#Hvsn%`62FxJNB$aI=i^3Wc^{ni_y{^zZO1Eop@o>@F4=;!>&aa-6Up4~k<;WK z_V6Aej76;ZeH>6@S-<;askPH_*#i98zKlG;>fXv~KOmi?GZ*E-bAe}>^MGVZ4Nbf= z8OJma$x;mak%!pzUhL^Z9C}9P^bbiwa5VNG_=Dwoje#5>xa0mRhwHqHX&#ZiB#Zs| zh{TECZD&D`(M~4oTtU)291h82R+DG>NC&f)C&sI^EnkmcUV%V1gZ))O;z&Q%=rNAc zX)OLR(eWVYF>%Anc=wnjB1rA}1Z92MxF_T)na|ok1^1ezJSCl_A5K-xe<3S*ioMW^ zEqsROFK73k5si4VkoCV$8nc#_WVUEs$WBy}1jH6D&vD-5u&C!4x4CS>b21l+jL**z z)GT97UXToHpFQ$`SsK-d2wvdmeXGCrf|%pAJ-hP~8?b`7wQXbj)98;|-sF`)iUVlKT4Kw^+?$i{I%0qnfRBB-WZJ-8(q?_1=GiOM21R zSyvXLGsNm1b=58UoOwzT7R2g2a+ka(-?eP}J72dvxuVM6iM5H(lkj&8Ji!v3o3s;A zcoeexxoTg0xNo?y%4oy}YhV&>W-H$lSBIxts|}*8r^^U zi6>j$loWoOY_UZn)ybCkaAvtH_!B%G#Lpi{W5=ub4E%sAx`T~!5;S^Hz*c;~Jy^s% zKayIGo4JCUNnxo;VHtbH6~>wrrf~&#lfo#I!f+P*k<|5fMu+#qZNza@?bhJtI{%7? zT4*jGgsHiY#53tK`YHR_rkl&?*9(Gkh-`*e;rRc-Jo}){Nz>Tz9Itnzt`e62g+V!c z@{n7WvnMv!S(5LYr6!FsHp)l>9dF^rsm>l1fkxe8w#`Uf zeNS!To#JaLtu1QnxgvjMhDO$#6gRMPBR2cA#rC3uManYVN4enx7dH@neA{q_=alhc z1a;$hT}xBlR;Ie)i&I5s$7o)lG!-;96$CF{E_#v6iw}uS$@0Z7#Fm;Jm@@o11CJr> zka95c7bVsk(77yM0K!+E=8PwzSGeOrXv!1JgQ*;ah0IstYkUqlijTrWkfn%X1f0k%q8JCS?>(f-O*@H@ zHby(>1ERI{tc4`Hx51Y^=&{W^!_A3CBTqh?8KV%B=oF((1$ZUT<8QCEe1w%r)!OZL zW3qHeLM@iW7_wdewJWG%Kqp2*%ttdCKCQKoZS1JBiuu$8MSQJ+^ZK`W`De0ez2oEXG-Urw-1=6y_*KZs1X{hlv@=db*$^ zds(K7IF7VrFI>ca-l5b6ypRsG*|wDrYiREaNh{O ziKo=>t%K!nQtIoWXHS+h@^BR`C#2EW2tC7BL~oL4A+a+_Hku?Uka#vXiKt1G3X!8pGSeiP42hLVGFF!8GO^Pj z{KQhdMMtN~S#tNIO=bK|7s~FjU%W-Xm_SpRmC2F?3VcnHw~ORQvxCIdBzb6(Btg>E zB)Mvm41gqBZ{Z^@Bce2gt*w$>l;naWY)E)^)`ETAnk|%j|rtakHgx&lmH1HUQro`@Lc={$g`1 z?{5Cs-$;A-}XB+TF%t>6)$%I7WLkYcNdk;ZH0g_?F`qZkUDozV*cSgp{$K z4a7@ik-l!Am`u2P+)zZWUVp2hcuPWrtq&HLkPLm75OE(N0Zb7pc6GdgznY2F8RYMj zLbQWa*cwAvN~q`_a$~IQdA}YB&$}F{vKZZYyzw6=`*!&L>VRCVyJ5Hr1??bbRCHqc zP~23j*!57HFuV0`O|h{t9xa-QP3(^13wJHPUFBbBh8Wd<>t{3*TblE*ytQ}~`{nyK z;y}E@xYb6iUCZkT&Xiji0$Wa8*6J1~;hqKmM(-RU4pNYx+0 z#N!z2fgQz>V#F3!7A^YgUw0HmiKz8&JBtgYyf0P>x zXbtEH=mGc+Fb42=nAk#i3F19~q=31E32ak!2@~Wj4PK zz^cT`$4R}MjqfK8Q-weht2-O3E8@Yq2Q%~&PfN2Ct3r&^`g8roTw=YxoxFmu1m5Wf z4-~CMvXP|@62r+bwtW!ROHX!wkm#)*dk!O`3NQ>+B?N}Zbfduf3=`m+(G%H8Xi^Y35Uqu^~$NDO@KrxrfVx)qhTGg21p{hoHiM+-SfAiy} zz|df*szSY9wpF2A&g&q7{FmIsnHQ0&UN!~j$0a}k3T~YjGSIl4$2}+lE4RwH*Pky` zz0LrRL$CCOD#;^HmM1Bvn#v)Qb&7e}kESxNe;fQ+*a>`zKpVVrs|i2F1D2z8JF^0; z*NNBU#vG4B(~lfrnjvD4-)32}uVSZ+lS1_S4q zI&%pP-343*aQYFdsBKJU9-!fe;6opuktg8BP}MDuRCZ^G*t*?wh)}F9m$BU=6sbFN zHLYp}nxAm3$xzk%z>zTYQuXk4`Ez(ALl>lb!kY5bY5cj3PGMyIhKf$X#U}0nGz}kZ zu*K^Q9jfx;83fEoOT{u2BW>AIk;#b*T5H87_UllweufTw;roX#3*X%e?8@nPjRHFW zt7h?6T!ojOJ%OZ9H5{N%)bUXsGH ztEW$vy_->7c=MLuF;gACNxaSvyLitsuviMqE7XO&!t)B{5n!x|rtp9YU-mt7vS0!h z3j_*0SK-TE1%)5%JS@4H4|aiQuv|Y z8QAa>sygB#<6h4TUnZSK8<$SrE#KmIMQ)&cOW-5cE=BaM`%vyq-xGzml1dA2^-{Ly zMsM}<>%#H9UJ9AN*UO_Jo1Y?j*6z>66@Aq`IleUEa+AXHTk3ew;gvW3H4h=es9w|zQGLm0@TKbO658 zM8f&Mt^V26r0R`B=px=9p$E-iDT-${uNl?d<<|ILHz(<*jTRe;E^kAz9MhVAZYeRN(Z-?OY*f36nYE8p{_ z{@i?CzTqpM3BGOlqOXEATw&H%9&b>D^0cpf0OtpPJWwug@|E}Iyyhzp4*-MvmFMk=>W5!n94loiM4$0Px)ee zGBCeDi^yrm7CRenrLDE?g6*c(0Y&sR^M)6%>RL{4=>7i4`fjP)$nmbtK>*{}&7dv0@ ze90@IJJX^TZ)`}5*A`kTSX`o++9+k`Y9 z*Uy0Tlp+PcAC|1&1^3$(bAtot&2JAIi+quVtE@GqsAZ z)^n-iUsXL{g#N$*cKFkee* z#D${pc>#2R-vKuP)&R@_ufg{Q?f{4bGzSC$ya5v6Im&fEkNbRN2eQl-v zH8QrG6NF=cuJ{|OrtrO^02=|7fXFM5Aw)|7T)!>|-EV*f90Qz3aNvWK>U%pPG{uQ} z67I-#z;0SLHm%y$cd`*A_gzys%TVhPsQni4_C?}C5@ z9bExFe^xzF7yu#yz4Eez(rPRg@ZGvcb+^9t-Ju=*X0%<=q~nltLn@E6(imw`$GC~2 z&@gStcJ3F^tIdtnJ+ zmI6x(toJ4=nZFI0W3}w6g~0j1eS*+{%h2L~d2ZuN9o{4GlueJ5nt9|S9*lzspI!=P zcLl-T%1p3oVkKCOuaP>BU5b#+6|Kxl@_zU#EReU0g zjF<55x3T1SsT0tac&QmsnF+aelLmpC-c4%fIPV`pC>|jR0hjRWIzY57VOP6J_)|~z zuA9`-CI2F(bfhGVM>7F2AQAy)wgQXoF1bT#cz3C#AGh*5kvS+-HFeG#f>5k z2z+2<`9ciJXQ!cx8j1v|4N!D~)DviBf|LyOAwe3R%m)FxSMaewx~WMoVP}8D)dTRT zqcNWN0@*pOk6@9|Tb9`m#4X6>=oi=dmjAY%D>jtbI;>AtkSNucALlKqwZO0ikTH@_ z7hq#+$IN<2Nf_ef9#VaDC#Q$x3$(3=JZ=wqNI~Y6c%aXfjJfxe@Q)F)xW4yJOrEQK*q5B$+J|T=9KUjoo~B z2KJVRXJv1>@@t^xLZl!#0D>k|ExZIPnV%0?D=x#s^YU+bxsE=&k2ICwc}TKU8<|s0 zvJ`|qBqqyEEKHXC*{H#iD?5-ZxjFDDew!`{-@#e{nJ5Xi6WKq>QfN(i?!kX4h+z%; zNp+HgwjjI(B%sX4qlVz|%1lt+w-yv>ma^P{vH`pd2D#o>9+B%w93q1)g#WPty)Qi5 z)lYJh*X3iF2zZTO9{{3l5G(B`dCN1XnIsADGlhUa5Sf5lwsFj*zmzF=`7i{SaUq}( z!~^zQf2pJVj4qQQ=e2x5SbeWIA0R~%xuq2R16%>)@M{u4wDo3v2TD!wt;E8Cl9&B7 z$oP{Czz2Wx0n=E)K+Gt zsfmr?6kM~?uGBW)Ce?ZX-$40OBq2c%w>_K<~ zxSA`+Br}dF21#w2^L?}iVoUiDu@J1f)kv*AHh6Bw9p$ZXX>i;LkX+5P>4PL^HCM$j z37e1tZH&9DH&h$5ErX;JN>_KR4&p9|IIHs6!okwm$ZBnC++g(qwQ!+uOf1Xe`ss!bKw3;w#!U zfF~kqiiIOhC#d{nxLg%0Io znvH`BY6-Q7kO!y(YaEYqCBhZpR_yzslE3_zSiSheL(?T4h)(d!n)ADX`-0~`!3ey< z0M+Hyd|y^JRH|=ZJpyl(M1X563}qg}B>%eAece?l2oIl|hTr>zAk+YG%%_86OV&6| za>^*F*53_T`Abu|FTRzq1aQptWnOI|sM7$0%>{Ln8iG35zO=dvy`fi9rOUs|u>Akf zb$cxc3jy-7z+Zl(NF8yUbWXua&u61k&hs#{@aQOtCIb2p*J6v+JUo=~k z4LsuMtfoZh&(05*8o|J);Zj#_ZiLhhXyFL?kUBp?YV&2dIzl}GFqe6ZlqP%;5664M ziGYo4?MSJ^7xCTMSR{bC?A=JoUtQhqI{XpI9sqxcJuGyTfegG$m%^W2;#B){)mjATsRl2EHjPoWk` z5Uk|`W!IQ*nxC;BDGb0|_I!-w{H1w!e1K92Xu{Tx{iau+A+kOwYk%9>G5B+>$$+_R z;8@A)%bAd#PlS2}aILF`bu;LE&i}8`Ge?PV4{(GPjz!O^7gFU(BDfXe6k&=~$yk>k zw-IGUfyXlQHo8palF*kuexIuh(?sIYUH>f2F*O+VCH64_h1ii#RC+fxqe=o)2`%BQn@cFbXYBEKN5;v&WrPfldCBKShZ0Quqo9xsdm?Cu$ z|Nmy2^gCxrT8S0^Ai1-*Go=#!{U4+tSA2k?UV&%3t#7^pBd9dMLs@`7XLtZO$JVZt zoD;d1!#$-t@OtKf=C~a2J7|ud0nUN`)+_S#7KC*^xQ1blZgpEMm%4h%~sn z#oeq&8k~J7=J*Xj1DfNHfG9S4mE^4408yns{+XQsL|ts*Dybr)85Z?^cvum@c6iOA zfn&+>^9Vu690eaE@~gl7tzXUk>+x*`AqhS=$9n*yKy!QzFb#Am@S`XMFbF6rfm^o6 z-)W?xE#SFYT(#*^2L6r*QC}xPm^EIKu@DQRpgGT{y50H3PPiJ950}Q zfP=fi??QYP0sIcIAEAuUT@dOfpbq3g!0Y>ihUfcj6r>u!Bcu#d$izdXy?{(q=6LIO zxI;j5Tn5+-x)ONE5J7m1CrAa3AB8v(@&Ulp5UnplhcbcrCmtV%qSL@$H4N?`AWczVb=cEU$_0&IE%FIftkh-23PC#--R^Z?+L^@5Nw7)&aNLco5| zCBPpxz_mwDg^hxcw+YTM=zQRIn=wrY52Tm~!x&GAdX zX3*beNqF|8`EGOqa*h)LrJy+;2&e>|3cL-#JG2w{MMf1P(`Ix4D>a^C{ovT6hko91sD0j-LV&Kxc5mQjho(496-! z8fZJtq722iU>T2H>J9x)`|MNz_5S zw+Hx703XHMz&?d0eGPDYF?JAi5`eb?xc=|O*#D~2rpE9FK;R!-@ZRxHEp7m~A&#F{ z(XW7qoW*FNatiPi0N0rYydNO%d*C}&@>1ZI=P-)Uj{_b9SOc1;4EaYhA2ZO{3J})- za$~?X5oB`O5qLF#8(jk&b^$vDl{xMU;Bt<$tLQnv$E)a*z_$S0&TZi6iza<7FwbGg z9R<#4Q-T%Cdk4GNUK(hMZ&DKQPpw zU4VxJxXv`->i{#*H-H_ln`n;XOmv1!q=K=7(q!P@0laq{XWYQ?38R_7ivZjx$Bl0y zWdV5;;I)7-&>Mi&e`1b72LT@eBtbtP_yK_1Gyu;>klhzL3xLaRVg5DKCE-4p(Ax-n zP!IDn;dm8*cWw=E>fcxk*b$3>3rjKgs9Ox& z_%3!c=qA9;?!i89D+5H&`zFTyp&;}C@CK5Aw*vUk{SJH-z#GU1zFb9L1%3?R`W&16 zW1=~p3n)PYJU!CMfb$=89Pkl9Up(+h;Fo|5UfHD_i5dWJEED)=fIQT|zgE$kfp=HY z+<9yF*z{y^z>@)7pW}s9^kLvzRrGD(*H!deVEq%*$nAfE{ci-rD+^C?$N)I40q#^q z#{#DVct>Xe9|Q1?mH;<>W|D^i`&F8zDFC?63uK&evZjE>rItjoA0yR|2=pK*GZeooEGo6u_TygNg{H08R_Y z%sfJ7Mwo$K12;z=Wgh4fHHC5?2KYczV z-O&-qL)U-^@GupW0&n+31E{XgR{{QhaGZbyISBjx7MQO^==BjKr6oVwG zh(^U|MIk0hLRu7+lC)EiaI347^>#116QPJAOO~!|36<~b-I?F_@%!U@ACH&k>wM1V zoby@FnK_?#bHPlx&j!ChRQ@h-g)SNq6DtF3foMb!mGoGz4o=hK;MRd1HrUuJ-w_4A zhtzkWbwQV3IDOA7S1=!?8baFUSi7(>txGDNyRcm*<-VxtAd3Ga@m5YFJ(X{agE4M87>*^T=XILwSa5wTkC z8FRedv*a)~$a5Yvn28uEctg;5Ho7AmH&W1IF6*a*)^@D70j2Zivm5r{B74@0z!eMS zei7a>LasPzH&`xWeZvyed@1XR3mjSRzYIgq3EhATcY%ABqif)!z!A=@*8r1O_MKna zXT03mi+O`HJXmi7{<((jzZ!6}C+kDNU)Hf+A2e9cVTy49L-4&XhY`ScfQ~_|mw^tO z*wz(+C$?~ydgRFlmA9h*9kHRZmBT!Nyy08G>}~9zBf4y7(_O(Y5Y6Z=Ffo)pDN%6; z>j!`ZP%_R_2rk}_E25@aO`k#s5F`h67 zA)1PD;2)3%(knotgKUivLcuJGK`k*O=7sj&3ia@E{hk=}UcEDzU;so|y z;tgJh=-8SB%>RXlF%57r5qK4%8^|^A?h$qz)Puv5P-Eo5PaQC(5EWDiE|hx_m;l)$ zPa3F_%$|qn0MW4`FiD=C49cLI2;8;Fq^6)*=wQ&}C`LBCCwK&+k|u-Y5M8(eoRrF8 z{E=rhm<~~TA=o7MM9nldT^nSMahP|=PxOWQ?ZF2t@D%+~O*eKFg2U6}d;8YyvOJ zeFgYL?pr|SG|L)I?1J+5 z;?)tE@l~h|W`P}e`7&;|IQSaKTw(j3=nhfWbbwQ?;-ttU1n*zNN#Ps7$=5N>;O#-P z8z^iPKAnS>e<43^T+_h@h>vvUHtq*9^nW5Yl4W2Wng*V@`7UYz9|AhmWAwv|z}$Om zH|2xh?_-c6y&D|TfY>wIH#{&oH0`LPQ zg8vLgzd-*}|B+eolI~VaN9@LM}XftQGxwvp-#;I-mmCyY%pCI)!$gJ4Mu;*Z5Zi9y&vqs zMB8qxh9Z47IR7VF4i~luXE9u+kkUbG4x)(QZNLhMDns0hxDEQ06$Lu-$m9M`=5{}B zU*E{U)BU+jJq|7gC5l*%!1NMgf2!D;-`pc3=!iY z>Y7AwkW`u5_smuYcR;iw3`DG7-^GZ=Pzwqq00*fe%n2SbfXrfu3X~0Ms>urku7ao# ztHD@#dK~yg?z_NKSR(1hd8CCfR)e_={{Tif7(bMLBnG7eH4wu=A1sMttaq$Nx<5EW z3kSp7fRzwU#cI%b6k7qJwGIkRdB8JRR;ht62EF-Mdd zOxfT_Jrph)pM1c@5an?M*Zji8H*QQJun?k_K;$ES3Yztz@u)FGUzWN+y9uZO&O_{g z{NXk9rC6xfM-6auV6b#EV zh`Mh&NIyxIjXW}Nu7E9sKbQwme)@k`gka%EB*g(_UP9+_0R3>AgDHC=5%>b48X%UF zK^$ja?bX3-hz1w&4MZ1y2R;^ZnFgGv3*3z*q&D~naQHNI2fPOO!3^W;AS!9jWu%e# zhnh4BY_z~a5Oy?y$1S;xCwvCT{}oLPPaJQ}WuoBq!Pih4{5$Z`EYupl2~?Yn3uD%( zgDntMfJn+r;A#{on&F=`L54xWZ+ zJ)#&4@xgpYdKicx;=b>P#7Php!Vnb8y*Ky_qON%kZrH%y1EN5_1n0-h;!9!9ZN!Oj zb2tx<^kqk{252t##5jn)5ffYF>BW9nyW5QJK!Lo$`CGV5B78R37>urg7lm+{Oo*l^ z!kU?Chzd&FxfT6S9}vP|UPCm6K7%o#=x-bx2Y!JX;Jd(*9cWjuucO3i)^A{x5(rg+%mr4RnH> z;lsc<$c|o~fITrthgXlq9SrJwkpc$Cu|5MVhQjCt3uumjQOZMMtp_1P6o|rG%OC+> zEmD|koAm!S4&xpGHLb@1M-bf$kylSbI1WUfLJ#lDJw@$}NS5aZx5&K=?38;Z1ziBq zu@n|X@lNE46rpqt1(K4X&?XI(lt}SOBM$n~@B#~lSp|_N?uRH7F-Pu+6y-sAh!m7Ud59EcLY_zw zCFF@hxhGOc1f>%LBl} zye?0tmG2I@CyvO#m|KIPvDmgt2}Zq?l$uf6(G$E$H)9*y)Tz=2v+VhxKsW3(muFxh3?RK)>e`q~yOdc|6+SB=( z@wQ2K9`Gbmp}^c^ipkWercUlL3PZWJOH9-SYP2yx zMRAs2pr_v&50fzh9ZFGD8R6t3k$CWb6Z?t-JtX{@Vu@Fvhp(T>Xn{6mP*NGb$Y1Qs zU+T9xaIKg>Tf9Xq@$(l4nix(J7*GbD%DDfT!H~Z|yv4_t|68D6P*BpU*ZAv$6IQ=J zXdP{qIxO;?amAvr^Rh3ZIkQA&y#ba1w@S1OO0`X&{wv))r7L}7ay&<`%wh$u!1b30?cb*?$x%={xpco{ zZ@o>w*H3Gk59EJ&>n+^yv|G_`X3??K&Lx>AznX3EK4DxbUhmqQcZQ#t_*vB?t~=~g zV9t_mO&hi7Br~g7$A=GeTkOzX+491Yx6>_hfp76juYkAzJate_XuVPSHcU?#u(JPE z1rKS(;>O^OmTNZg8ZMtsc-!w(>cPQD{RcFE+!?p%_`x%w!8IH5RyfY-f73&JX<{c& zsmJa|-iV{+kyUffS-;xboo4gYuX**nCz$T zIyG(`pBu3NsGJh}2<$pNjy<4W8HWk0Ss z(#kZZ9D0_R|K?rphJM)#2k?@-AM$<-JL}^%q;Bx(1F;Wdbu_IF&ZiQa9cg@32(aqvn1vMw%)zU$bR!`^5FNX<_DGn{6()9STgz zw0y2^cy1Qg-|17%^VZ;nlY%At8og?_56`Zi+Xu{oZ=g;iUav0X)Y-#|8+TK&Z}ahmF+JQ+OkgXyKOtA-lRnP z)xu{VLeALpmlrf`*<_wrbtV1uh`<~DI@1PL4L`JSNl{9~?#bD!qiw!zs~SA_xRrIo z+2)y6e77}kjttwE8>>G!VDk?blkid2g78sRT>P&8`lP21c+Nxq$4$`W1#hD?P)F!9 z|5VOO`}GYyC3{=8$9sS3)GjHo+9-~9yyn|lEl~aM{g}h)k8iAa>MS+sF?{4yH+P|N z(8orJu6y}!OE1a(J-?)Re9Ob#-=5hpHk)e09(3xdY#F(VQ@!i3UE1`UoA%rqs^*%V z7OB5RN%dvbzc+`Z->grKl`e^nmF~9rd@T+S*Q108ndFnY=8fJ2agf<7o zXN3K;>tx;T3_XcAcf^{avJd&WuMpmT_{-d$7{$wu``&s~_{{y}Hb)i_Z7v;Q&NVDK zF7fK!qxJpq`LmZLYUA3iueaPtz0k0tP^Ka?Jt_Px@b3Kv?==4lTKiX7sTcLuwCi!6 z+mBJ*I@R6ldv?junyl*sj(vTR!K9Ih%?dZw)oOxX)24uDV;c{g)`M(l?vRPhI?Veu~Ssq?Dd7#kom| z?fi@SZi!xPs#@h)VLMYop6l8Dtu)9uJYe{u!wN>H^8dOs>T`OdZ`Fb(uj4b9O`LC2 zRnI(L7I8WzVtG==KjVFx4~+e)qba<2h_l?cy}Q&h>B*LL1>aJ%57k-pe12+S+ZA-E z)9hf@>zDh#M?SoHZqe)~B4w-M4Rczz^I&9#7x04*Yc?$$vyK{Pe4&VNCD)0Ac!}6Bb zO7wCjS_^W`#|<7~lIfsW#T?$go?8g1TaI zEA}|F&AYp)S0j4wsZm$m#1|yB=?afOTdZtUDO4&?Ju#!aU0Zbf4);r{^1qo%k48vD z;>Mpvyq4!vKi=V3UpciWYSH7yb@A1=H(oc|`kr&v_HXapRHv`530Wg1Ns~<#$BeDM z#y_k4=cP!6lD#(+2bA2aHCJ!BljjmU+{&Xpu&3f*M`SBEFo zO1pYng<0Z%2DRmJjyEgokMd|;DXm}VRH!(6$mk=%A%#Uc)m1UuGA{{k4CHzGN9hjs zQqQ&%x_p12*`|FUalKiEq~+*hGtTo16MWViY$$!VAT-^}z_?`SAU7LT!Ml4taYsH6 z`R8w?bM>;wQ1@2{&Z%YS9ZU!rxFW1y{yz_QCN!fCRk7uYiyvPOT^x=pcpLJ8>q2?L5#Q(HKUHbrKpJ} zD(a$916J&4tWgu}izQ--vBiBqa~IHWe(&?Vf4n|9oHA$5%$<79xfe3`p)S*+TbP+q z*G>6kMEdCA6%eQ$lR64~pf)x2ii(G)CIfGNxp4SM6^|+Bho??e`P9@Ns@|y7VZbBO zM-ATyobfa@HC4r(Dc9cG&ws|$>o78URFOp<178!Ch(cdbP zMc;RwEE#gO*A@U}9S$%3{(vN%I%UXu6uyHX9|1+KH2 zNK!&>Y>2^-+jEm4x8q#%K(@xtn+~zPcD-mPt7@M>{%nAK4_&q0Vo-a|HRL9Qgq!!V zLi^sdg?TxAM(f#hhfieZT`b?BJB?>fj?q-iIy$zX=4_s0Cwj!LI<}$B%*Uxc4Pt|x z;>m;kAmKul6h|9(k_%m;LM7<0b*bBFqKi~93>_2)W9+U{gv zJ++atvV(o8ZAZVbGg@!TV-K{!TIMV&AAfDJoHE~L)tx(1BbMr%Ko{69=eD$vy>|Aa zZ04y8)DF`M&DF1jrir!F^`{{Ajjj%zW5v27zR!O`-?9sIvu}w(%S{Y3WZfp`0*$Qb{lEeJ4w+M43X7}1#>z5#vpH4cFwm!}Cetz&Q7yE} zgsoUK@hq|03E!bx%9}t_XkrSQxQ`~x0xI~;dcM2)EIn+T(^1&#zO|>l3FF0P1V=b{#!+~9raAK z-H~n6?;{^J+TB~0HnVx|HFc#!L}N$djThpv&aSb8?)AOSZ9*&FqLsD(Q@V&bdDPVo z)d+*D%7nq)ti8tx-^m-xhvn4&9r=E&u4fG~`JVBPHK6w}FdlYau+5%roOdb0(!;-m zC5@52_8daB*g&tobe8S)@^!sCLUgU2ox$jyQ2U_R23Rm&LDdRoVL}`+m#54}9*eqJ z%&+>rfZ5-c_u}e*d*K*wJYychLcD9ZP8cq1wuem*)#gcaG)waCL9T3vca&|Dxx(l! z_Q<+_| z<~l`nG#)c2u&(~KD3ne2zv9zyt*BUprJWXU$SS~^E5VvGyn3iHd$Dl=zOt@ATM*!_ zefd^2T<5-MxE(VEG@$P6K|lxDb}MTV*aoM=)WG!=$b5p@&`>roC_sN>wJ^LYBvS&; zI-ET4klFbSTO8C*ez1zI4RQDT=`}1?{xcZk?F`w+(;W6jqeAH}<`V4RX~`-{I#j6w zqO>;5eI&4+&<5jG^Rt5Ztdu0R9YfB@ z01T1gSle(NYDCW+>0&NqHX-3vmO;flmNf_&i7RAHhzC7nyF+@*rWK;^F4O+0FnY>h zv@dPS8ijVFmTYclE8E{+szuhuZimjsprqDlL<`uO8UZwh{aT|Rea5`QM#!y~v7f@5 zR@E#M9Y1C;CWMSLM4d9{vf?nk?JqBIn~Aj&)>Cdio%w{-V-vzZAy2k7yjitBmi}** zp`4uybF*FiT-5oBxz-HC!Pcl|GuHv%RUGx=ZW3!emd&ae%m({aXS-|Gre5q;%@|t5 zLTW{63vucmYa1)>W{m#eT7g(ub85xZe4HrOXu6NFeLzgJb^+T;^a*QUJA{t2QMLV@baQ6Fq|QGRKiPuXpVC0~d+k;{v@^Me z2B-&R|3hZaDHt?!uQD-ohMfK(o;`c@#+^FOVAS}sE_J-Akd3Odf_5|8h;WQ^WJCmA zW&o`Ei}p*EX#;NqXM#X6cCbGjQgaKozMj8B zLZ(_d(;UT4)O&(Owl~t-abt!MCWIuLZ?KZc5TCg!-_cHWw&vA& z0rl&UL-7pNjM+RauUCT*az8&#af`Q#i;V>_Dv;?_A` zmdp;*#G<<}%<6o#V6$4((iir}5JVj|*0QCI{25f;j zY^++V=K^qN&BK{n%S_+YvsMiu)0yXuv1;hR{cJwPwzu3UzZk*#w(39|+4rs5V=?{J z$|yhY!=|;ap}F=a>azGYP1zr<>!HXw`f&9XiRFEn9kQ;PSgBWq8x?NUZfB38tJgk1 zOp$a8Hi7$JBxC5fUl*F6K>_S;w%(Y+szQ zTWI(4F~Xj~Flf4o9Wq1Ly8w$O1_pG!kBd41G5N0Qqw- z)o8Oz-s5;8$3Lw6I zd8#U((M8uNUzPXF#Aub6+g^r6I1;L6v^XBBUQ#8R_<qB$6}35-7ePHm4xQ6(q>|+MTp*@52As6X4D=!@-gHt_`g##ZzhO}m&~ z-==hm#q=GDsAW^%QVM2Y_ZtVtR_Q+p5zo~AUsC|nCi&Ak7Limyt=V5mepHaB9S}_p zmM&sQJH9dx&Fej|CLv0gmE4GqGE?$k;kga!MhDo~LCxWw{5Z%LojN|KpnKamJUHC4 zDi-~f7+D&E*$hp@7#p>(<0~iFr^ulEZd96SBHCe47HkmZ;KIOV47KPd$I6nisJ7M> ze2zxTu7Bp8aS;;)cUAE{B^pqCFA9|7dq$vRnmi!!ue{|hXxV_sL-=!ta46=Z*zA}r zhIR``OM13N|E{fgIPGfiIT|JuW)6fWlWI}Ne5Mdwg&?ct1X06PmmP-^i~cC8#lro~ z)%IsODM3`9ZAqz1U$bi|bseHQsN;3k{D8R*?&mN7kAdNPV$Nn$2DjD4Y*P16&w8pX zg`F6Dk@n}U8?uq$SsRA6ci7)v)z_H^v*p9iI^1bj&KmP3q}CvZopI%SKel1`R!U-B zMvS4q*sml0q%~~q$n{i*#f*w_NNgcX@wpxH%^7UwC~wy&uwua`oBOO2?Ps-I$hM3M z@&C4sRUT~)f*jiY9P|N;Oxg;4zOHmp~zG z&$yv3+AU(hd;ToqJ=$rpuyNxWutDSF;Z6QHKEqZ15fv92j^PRs$4Wx3HkP%Va0Y1r zr-|X7iOtLH|GNBR`!`v_!~}|E%O?(XiP-$XejrW;)qYG`Je_C8v<%lEF)ROLe=ze+ zzmDkXP5LC-$Hq_ki%zrT$v%jVXH33lSK1g6Tdu~Ljhr%%ny{BsitXk!Qbj+qGoQbx zHev(p;YclrH(tcEt}~ai3sW=5p7ofv!K3kd6zcqAu~0vHplGI@{)EP{f2T*u@7A&o zGh>{u)|aKYsDi!XkPj*e!@h(Z#iujdI2S~IRKb<4 zm>G##IyrNmX4pnF$&#lvVDmHL=}UGgW0C9Kx+3a4q}$yC*SESheq&QJCm?!!ocX2O zl?YktXgu;!>CsheTBZ;Cc2-Y0kFmcpo3I97oDptcR*-DJLhbOq+8?#wjHP8YrA)Rp zi_;VqH@hp&3_kli;bCOQ*mnxXoFQbL#JeZzjAvyDbD zIJ6x4Z#eXI+;MfD^uL`DOR?2^LFC)+xK#oFVJ*sN2woV)Meh)hlij?aQ0BYMxAm zc}{C5%jCsouWxO46=Q;1?+bQveN(&TR;CSe+~7k?^1?U#Otyb(aWSoPWe2|TvOQu0 zI@3z~I)F~L(t1G;R%wc3iQmqrqP)A`jwhOw*ZX@n!aXu-W2legQ#?*iTf{s_X!M82 ziIaQap&SJ+UA`0fQ8L@gEvnn`CTfz^}|-$$`<}ORDL;%z51~?Ay(XSKz^UhT()MDDR1f40vYGKfJ=a5fV{}OToMa!r-%KQZ%M-bkA!!-GZgc0vulAv{bv=O z7Ks24wsTj{uwVWn$r8F>{rM|?A}e9Y8svgyrLlV_;z|)5Y96!5-QKWLyjyR7(nEL& znip@`h}}Whd%5_zm2KPYk0fUCZXZfyk9YgYuivn9yWQ*^t;z{j<$TuB6hs;}&J;r1 z*b-B){Ngm*YpSKqM{i^Hz|(@OwU|9MHSq59m?UE{5#~yd@aPaE3ceLnR zJS3^~2@X$qnHGH&rrW!TRmW4SivuKkTe}XVHJlmhbcF+_{R3;e2gIk#HvTW5L5`wdi{ZQLcWn%AZ8)pyLyv+1e^@S}AU& zio=CCN7F3NX1_0W3;s)%vR;#Jwl5w%`*`}N$23k5iAw|~|3-IlAbk&HrZZ3|NOQ=y zpse(YRbjSOAyg==I*nzkIm0F%h^Fmq=Yf`0-Zr#Y%RNpij$YUv)r@Di3!1@I@GbQ16a-Ck#6{75I#z|Y zmf(F=KCNzpf`?HYDyV6mi6 zF{Eh6fxweSu!6#`UEh>KQS|_=Nx#gNPuP%ybv#c%j=8#;ZflWyNxF@q&^ zB}91q%2XqYqgAt?pdhQclpd7jXn7bH7lj~MUjrpEcv2|2s!Bsx<{^D8TOrQ3hC^;e zMvW^PjLESP19r#!p{e4V#9hWybsjNQ_Rf28$bp=1TtG)d%UWA>@QaTyrz6cm2HscO zpx7Ku50DRSV~v^)Akc#tq+5(vcsK?+YkM>7mm%*(=nw4|(}fMc32V3AQn zK_^gqBuOboCmMr}4L%O*|Dw5Y!8Jdg-oRjt3kW*+$-(qM=v0F=OY4E3(a^h=<7*ER z+HcN_k$^(RQ&76S_dFFYKgJW=*1Br&?Zw_PWGT4^gf#&{yec+gN->Jn;^Y^1E4 zwmF)w@50us<4Bg0;h%GcVC{FPX~@y80m48|ax`S!{1yCHR)e?n6WxSCv{T|b(H^ML z#Ph7%vAV*UKIU7y@gG=B#yGsViz~C}%dTS;78vRa`hu0t?dWOc7qjEXK8YKC4z1z7 z>|*$*7~NhWSiDV2IuuoK=#(0U;~vbHqSd50md@vQpkN8zaYHQ7ZFEQ+(&@}l6yiMv zRdtIC#A&?xr8t^%HMs(3g|=j076sE6?8l-y-oB`4Fs?R>>CIho19{f~`-jO{k zipKpLb-a7cIijyu#OlUNBLhzFXhUvXnIH@n{pTnYK4-K=Ka~A^ye&0g&yPpIFAF@; zlfGw@PmJ-*z>7^J0H**wtY$DO;#C8}$yE05i4f23*20AU6xKnZXVt7n24OqEeBgn4 z5M;5>P6lW2-$k!+!p{MLVZ9>QqP_MuQbEO*eI#V!Z7FidP50nlgx)x4qh(w5>N{N% z!?)%pj;hn@wGtcB6a$`pOY~IG;^xZH=ml@oj1dT{s6=qFcvdjCQTLc;4@9C}M695! z8)knwWzABJEPzGrE>ZQE4T+8PL2lH-UpeKbHJldq6Kn#Y>BPpLYLJn0Rqd-ClGu^P zBDJ%-VZxj)W(vY^^k6l5AUYdf-q{Gj8#QwT%F+Dur|91e{IvG(GAL{RZkAIY`hj=P zkl__!q#?&myifn6?@Qbn9g&ShfQbu09R5hk2Z)q>G>%$}e!Dv8zr0dcP7f>#<5_jx ztY`gCH~wUTTG~G(6}6)Wit5qb)qK9Sa$B`HPgIVwpqe$WWjtfi*Jr0rH};lMZaJ1^ zk*9B04d5jzOhgql(>%)aJ);mJ!N9X#@|#Pn#o5+)Gcf&ZM_S4JioMz0vrX|D+^_f> zs-1VRxUDSzb3V`Zw-Dh7*SY9LZefQoIBH^AmtgEU8N1@|$1LgcFjjDB0M%grmutBO zAN;RMSJwaXEd&FtuLMwTUhv2h8E^QFPX#-@?}4tmzkoLPSbwp}2@9 z6^o>c`A|dEnDa5sRc5~FSM{C=Dz7bRPG$)uS=x(v9=Ey>W#^^d?oCcJ#7e{_39#r_ z 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 PH7BL+N=zui@3#K~eqJf_ From 23bf187446fbde8b74106e44acd5a87edb9900ee Mon Sep 17 00:00:00 2001 From: G-Moris Date: Mon, 19 Aug 2024 15:13:49 +0300 Subject: [PATCH 21/39] Fast fix (Optimization Handling (part 2)) (#3658) --- Client/game_sa/CHandlingManagerSA.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/game_sa/CHandlingManagerSA.cpp b/Client/game_sa/CHandlingManagerSA.cpp index e7e3a43bd0..8bbfb348b1 100644 --- a/Client/game_sa/CHandlingManagerSA.cpp +++ b/Client/game_sa/CHandlingManagerSA.cpp @@ -9167,7 +9167,7 @@ void CHandlingManagerSA::CheckSuspensionChanges(CHandlingEntry* pEntry) noexcept // Get Handling ID const eHandlingTypes eHandling = static_cast(pEntry->GetVehicleID()); - if (eHandling > HT_MAX) + if (eHandling >= HT_MAX) return; const CHandlingEntrySA* pOriginal = m_pOriginalEntries[eHandling]; From fdaced046a9421a39de87b81eaf0f7de7c234c4b Mon Sep 17 00:00:00 2001 From: Tracer <43095317+TracerDS@users.noreply.github.com> Date: Mon, 19 Aug 2024 23:14:40 +0200 Subject: [PATCH 22/39] Refactor entity hierarchy checks (PR #3662) --- .../logic/CStaticFunctionDefinitions.cpp | 67 +++++++++---------- .../deathmatch/logic/rpc/CElementRPCs.cpp | 30 ++++----- 2 files changed, 46 insertions(+), 51 deletions(-) diff --git a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp index 4fae81c6c2..da92891265 100644 --- a/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp +++ b/Client/mods/deathmatch/logic/CStaticFunctionDefinitions.cpp @@ -1247,47 +1247,44 @@ bool CStaticFunctionDefinitions::SetElementAngularVelocity(CClientEntity& Entity bool CStaticFunctionDefinitions::SetElementParent(CClientEntity& Entity, CClientEntity& Parent, CLuaMain* pLuaMain) { - if (&Entity != &Parent && !Entity.IsMyChild(&Parent, true)) + if (&Entity == &Parent || Entity.IsMyChild(&Parent, true)) + return false; + + if (Entity.GetType() == CCLIENTCAMERA || Parent.GetType() == CCLIENTCAMERA) + return false; + + if (Entity.GetType() == CCLIENTGUI) { - if (Entity.GetType() == CCLIENTCAMERA || Parent.GetType() == CCLIENTCAMERA) - { + if (Parent.GetType() != CCLIENTGUI && &Parent != pLuaMain->GetResource()->GetResourceGUIEntity()) return false; - } - else if (Entity.GetType() == CCLIENTGUI) - { - if (Parent.GetType() == CCLIENTGUI || &Parent == pLuaMain->GetResource()->GetResourceGUIEntity()) - { - CClientGUIElement& GUIElement = static_cast(Entity); - GUIElement.SetParent(&Parent); - return true; - } - } - else - { - CClientEntity* pTemp = &Parent; - CClientEntity* pRoot = m_pRootEntity; - bool bValidParent = false; - while (pTemp != pRoot && pTemp != NULL) - { - const char* szTypeName = pTemp->GetTypeName(); - if (szTypeName && strcmp(szTypeName, "map") == 0) - { - bValidParent = true; // parents must be a map - break; - } + CClientGUIElement& GUIElement = static_cast(Entity); - pTemp = pTemp->GetParent(); - } + GUIElement.SetParent(&Parent); + return true; + } - // Make sure the entity we move is a client entity or we get a problem - if (bValidParent && Entity.IsLocalEntity()) - { - // Set the new parent - Entity.SetParent(&Parent); - return true; - } + CClientEntity* pTemp = &Parent; + CClientEntity* pRoot = m_pRootEntity; + bool bValidParent = false; + while (pTemp != pRoot && pTemp != NULL) + { + const char* szTypeName = pTemp->GetTypeName(); + if (szTypeName && strcmp(szTypeName, "map") == 0) + { + bValidParent = true; // parents must be a map + break; } + + pTemp = pTemp->GetParent(); + } + + // Make sure the entity we move is a client entity or we get a problem + if (bValidParent && Entity.IsLocalEntity()) + { + // Set the new parent + Entity.SetParent(&Parent); + return true; } return false; diff --git a/Client/mods/deathmatch/logic/rpc/CElementRPCs.cpp b/Client/mods/deathmatch/logic/rpc/CElementRPCs.cpp index 1b5da5c780..31fa52cae2 100644 --- a/Client/mods/deathmatch/logic/rpc/CElementRPCs.cpp +++ b/Client/mods/deathmatch/logic/rpc/CElementRPCs.cpp @@ -64,22 +64,20 @@ void CElementRPCs::SetElementParent(CClientEntity* pSource, NetBitStreamInterfac { // Read out the entity id and parent id ElementID ParentID; - if (bitStream.Read(ParentID)) - { - CClientEntity* pParent = CElementIDs::GetElement(ParentID); - if (pParent) - { - pSource->SetParent(pParent); - } - else - { - // TODO: raise an error - } - } - else - { - // TODO: raise an error - } + if (!bitStream.Read(ParentID)) + return; + + CClientEntity* pParent = CElementIDs::GetElement(ParentID); + if (!pParent) + return; + + if (pParent->IsMyChild(pSource, true)) + return; + + if (pSource->IsMyChild(pParent, true)) + return; + + pSource->SetParent(pParent); } void CElementRPCs::SetElementData(CClientEntity* pSource, NetBitStreamInterface& bitStream) From 99990443b26bc7d4f8d4dd28203368d3c6df277e Mon Sep 17 00:00:00 2001 From: Dutchman101 Date: Tue, 20 Aug 2024 00:52:20 +0200 Subject: [PATCH 23/39] Repeat the thing from bc622e2 (launchers), for version management purposes; we need one more build like that. --- Shared/data/launchers/CEFLauncher.exe | Bin 95112 -> 97664 bytes Shared/data/launchers/MTA Server ARM64.exe | Bin 369544 -> 372096 bytes Shared/data/launchers/MTA Server.exe | Bin 323976 -> 326528 bytes Shared/data/launchers/MTA Server64.exe | Bin 378248 -> 380800 bytes Shared/data/launchers/Multi Theft Auto.exe | Bin 416136 -> 418688 bytes Shared/data/launchers/wow64_helper.exe | Bin 259464 -> 262016 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Shared/data/launchers/CEFLauncher.exe b/Shared/data/launchers/CEFLauncher.exe index 62684b73d0559f7621adb23233750a71f3fa8caa..8c8babb2856edbc9abf36965796cdbdb21712d7a 100644 GIT binary patch delta 3931 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 delta 2949 zcmZveXH?Tk7sm4sy$Tw70-=Z^EeTb63!+jaNN)xRMVf>r2nGTo(xknFB2B7bfq+B= zmacSZOOuWWQdB@dmf{QSx}SE=x#yYRo#)>9c4xx&X`+{C5>){DBvoyK3CBl6F2C2X z-(kaC1BD&44RZxF<5Vl5RL4s9z2+aSgwmXH1r&L#_8Zku$f>Uy%5kh*e$_DaX}$u= zd8*f7e=FsbF>a2oCwGDVUMX|{J0t}Chx0!SngxLYCV*8eMFLQvB5eUF?tmsZTCD0N zfB`2V=!w)d)IjPv<=-XX<2u*lcrFcqp7Q{wU4EZ29~0yx5C90m`|la$0~as{ut zlB7N&X=gH}&ugvBL?>jBrodAQ)QUfxK41oXtf$jo7M2j>Mh@%G0%;@~>C z0Gx;S9ULAhA&w9`F;FoJ{ii_!ejOL!<^{ik_xANA*}DLOgnZ?i(FJ~mEJ)OvbiGkn zb^rDawDt{!BOfK79x|^O1&W&cO7NHYnd6zB1c*)+-;kql2`DjsXthdi3ed@_#(^!j|OWTNkLgVmxIC9*x;aH zc2SAyzHQWXuL^4ypVbd@1}rHH?;2LaL}Y!eXaNLkg)fr3v*dQA z&r(ti@#I+E{|S+8&lFD8r!9cSGm__1OIOy4-Kh%=>8VJr7QjBF(#`hl0Q<|>#}kiX zJnCYVY!hlcq(Dm`iV&Ia9wb%X1l#%y*RMyZ{95dGVmjAO4BX?da5R`)$U?1KV9$R6 z7pO>oFVE$h=gQU-9Jpy7zSgg%*Gx0-P&DG+WoezjTsFqkf7#5{mVH1Vq2{s#4Wlp^ zztjs;ZEzc4H7g3l;?E8+7KS)^>w4K1WOp-u za!M~JY>1|Y!8WCzn@t5YJ3!VGoy8*vfl91@8Se*YOegXyyOq$0EEW=6a6$tbldpr( znjYd(_Xr7fql5>fq#YN}%ahpqN(5o2B-9Pd7mv$RrG_lvwgxQ8<4VhvEmeTsrK5i`=*qT{~B)Pg&w|g$CT!LZE0DhQM0E7FRXni~Ml!|$p^D!Yy3gqjg}q_Oi;WSqMRfnf-u)#D zx$D#<6Hsn!6ITnSV=N6(p8!4JK7&G_PTpHNq@o-OL7{a9)FAY~k)$6C=p(GN+dr;r z=QNFK=DLinZc<&?hV`sl=-AzJV4NpEZJ$fR8`un}mw$%J_k_e86RgGs;;r>wHl~hZdD`{%oUsl&h_5F{9^x^cLMM{~;E| zUj>2nOFfuw4eoOvr^y#CY3|**-6S|vkQi1s@z)-`F-b!*h#GK->|N`$AjojHy=ZHx zi+5Gd8LiQ|Ed@_1`DAoH_)rC-4N_;bmm*9Y_DO+ z^|9{5f)w5jp81gNPwB3)t@5Rd0ygC8RMx<|0&6tnyeX?`&b;Bys%eoWYA@YOlEaGw z!L%w)npL?UvL5*TNP7Qud69tPcFCu`zRQLjh$&VNd^)SxdXEFdP3Gr!s+A6<+;y4K zj|iKOY`u)E&biz!|ARGK!6CZ})>e}Z<(d4;2LZ EKOwIw2mk;8 diff --git a/Shared/data/launchers/MTA Server ARM64.exe b/Shared/data/launchers/MTA Server ARM64.exe index 1dba234e53b9b81c0a8a234818365112ac27c8cb..fcc6ac81c00208c79ebb6a2925336659a9e7ee86 100644 GIT binary patch delta 47339 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≀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
ytFsBJ!)5*f-~ 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%0AXQUl(`jy4-%&pCWv{ zbYc09D~DViIzM*2acd(tzB_Nh4=<*jy*kCeY4>POCvToNS#O7X`400Q>Ra4yKWmJm z-T%V!&^*>e-ue_){ho{}n^QM)(t5OuF{@{b%%3PgCH(9lkGIc{;81 zz>s4JElHDW|9KR?Lr-6ctWR_Fob-Bb!qDMKuI3-(x15_$Rd7obXu5M|8sBy7&bp~@ zuDgAErK??My`AW-2XmaVjG(0 zu9Gz#PIDZ!zf|O-Dt}s+eroBm152#D`lr|zHTAm3{%&4zVJy}2L|x_nF=lppRnt{NU`7HbC0<5+VJh|u9z!^*+3I@N zY4zI>Z~0C3^^A*+>Gq{Jx74<~Aei$+*mXw2rBR*}{)yCP>^@pF`lrquo4{Thr$~HV z-tkX%)*ZYaX-psJJgzzMSpQ`U|LX1&5ZPzr>4^G$t}Q8>YezpB^ykV;{RXLGSB8XN zo<6kCs){pv_L^(#W277ZE?>LHUii}oMc=q??$fvr9rt8fd-dov>21dR9o`u(yOy%| r^3HbtZcM+e*fJvRR-Vg>@w47#?HKRB&}OD@UHk7db0=c=NdEo{6)LGG diff --git a/Shared/data/launchers/MTA Server.exe b/Shared/data/launchers/MTA Server.exe index f89f45b7ef4be166372bbb8c00b9fe6f37559893..be07ece63d15a66cc6779f5bff0bea8e3ede242e 100644 GIT binary patch delta 3958 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 F{sR^q&!7MR delta 2989 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 PB6Sd*uXU?g|84&PW_ine delta 3040 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 diff --git a/Shared/data/launchers/Multi Theft Auto.exe b/Shared/data/launchers/Multi Theft Auto.exe index 3093964d55db51e65aa08745d494446378c6b8b5..64ecb98eabf2976f16267d2126a5bbbb38de6712 100644 GIT binary patch delta 4149 zcmai1cT^MGyUnB_9SNOK73nacg(8Z8bm_s+1ZmO(As`SW5Q=m}gm|qK=}0m3a=`*9 zMT9GYQUpX4QB{ugfHLm3Ecui=duXcoWbn883d z#1`J<7p~&>=eZ%+f6X_G_jde`{$*cRceM5M^xa<^^1nXTCm|3E00Bwez2oz5YZd|p zSOE^1Ts7b*H0fO~5zvRmsnVN(@D~7qt}p?G0|#=Ir^Epsy7klu0C43>&KNVU{xhy?=}fQ`=kItKxW=awya1BdDCZxxULny$TU24%F8KFLx62(6X?gaGJf@ep7H3-C0r zmH{5xfIu^D9w4#-@aD%Wz|l036;&7nss@AbFiM6|CX716C=#QxnkAy3s3@I(w+?0O zKaf!qTrkMQw|xfr{a9>_dmcs^9)v**w}1DV39HZ`Bv-|k^XCr?eKKiPecs~y9Y<>Z z_zmhS^8YLz$_Mj9&^Co(&uFiNVd#s!Xc(j5&An*E_jk+$Jg~n$gg|=&N2bD5AzCyX z0;#os)0~4q66D0;MzAfU4@jkj~J=K%^~2YW-!4eQ98! ze$zuQM|mN?O!~_{A>qq6|GH#{C#d6n3#bB8AQf>6q{7q-U{C-GWjU+Um-B0BHIV)H z_W}q61f*bCL1rWj2S=iyI6DjqJh)E|pjb|y4fFL2K1U)1W4J($eUS;pWb5q}L?Hxw zVMIanzQls!J>};~B!m%sNa6+rVhDkFmgL8nA`43I_hBgUKl@(Z;tt+KKOaBOU!%lr z2?P=-%Fm9$fNB_Z6%eDYs^-McuJYehWuJnvf9%lO0wbAkjSQhs0m(m~gke?~72st2 zZU76E3ILEdI~R(HZ4bUY;kmdG09eii>oK(jNxM?EoE7O#eKu}YcT`HxUTg~HOdbWH zv~S~nrwawNT>ZVGdI87kqZl*Im{Itsxy*ZUHyx&;!Bb(AYc*DV4r5Mb`KjO6s(dNW z4<$QF4>L=5R0k6i&>->kY|+x_94TC|Q|=a-*B&lBZlHA+C(|=8)V|)mP@`$8IvA03 zTkGWLom;Ei88+Wy78EHP)o#mtx9b&0+6Hs<&s#`6xui*${4%(cB}#KVHs)@*h>-bY z8ig`%GnrK0CjO({ z6R}3&TOcdr;6ym#aE5b|L9u;u2rdBf#qoITut+#l41y27Vz##q*ci>gi4>x(tn5h)R0{gn8%mypAmxw%zkO9Xgh=oT_aucWQ+|8HfZ*l* z%NhHQP+|=F^Kcn9g;AjZf7;X`z;9)~6rJy!-ylFwQbIRaJ(dZT$HR<&fxV z^scs?;LP0sAsOSy;Okw>VdwDIqy;CIU33rN-92tP@(kaKpbx+Fs3jAtbc!7!3BUQVZ9czjv>0z=$MM80F*5UGc?)Nz1!Z=# zZnQ`9o)z^G*Y3rZtlp-&Z!z3u4GE`yh^G5HZ;yFJ9UFNQE42Ao)N%4uzq`xn*dqM- zkKYkTASz{>dnn7R69i`i3%ZKNf>g&#o!gqT97})4FFq0DgeqrhbElMN3D>`i$T=o3 zqrok+yXAw6aenS)Lb81*k=lIU3OR%j1F1+OkP27&PrPxdWR{wf#}uqavhEDDC*N$M zg<_F`6ctbtRK5I}A$x&QoT9kJpzmTFKL!ND2?4=minH7+zQM@MgqP(Vvd~ zPh4g1$5k35uHqrIn^mE2ub#iQ7cPxqh{_E#lHHkXi?gqL^u#qosqw;|IwhPig3UNR(ze_V8-}9BtFw zJTY9y`zd>{yUNx!rd^k6tiTr1G?x+1(}jGs_J&-Svk6^YniKos+%y<%^K5I3a5-5h z=Fs%>DQ8RdC6Z9Nr1+J!lJG>nR-v`FyXhqY=1r#(Hg|?ddt5=ozDm|UcK{FSbyTm_ zh)V4!`gvW9Pz3AR>7X%5OlskKK4IMFl8nPnkmz`ir{npVvht&sKo17hOpC^^ zLRUNZMUIM0za(KtOy=YPnl9#$``C?H4mw8&T}u3r0VIW zX9RS6x)<|tW}EWbvco%QypMDNPp@n7Zb9+M33 zI3e0IaW2`HDMitRvb`ok$kq@PyCz&WT6RD25}QXy%tU%pu~L77MygoL1+IvX-=<$E zoW_PgyH`&y3fwX$oXo>sYtPc|Ke2^+8frWFPl|=rkd<+Z`@$8+q|eO=uZJ};o#%Fk zr!Fp{xZGl@RHez2H+w_p9mwhvVGrCMKH~4`OzBp)8%J+V=uz^Gt6IsAxpdx6bPbjn z_jDE`qKc5ZpH70$iXK5pKsS) zlb{>3rSy~DOim9rGXq}KU60LJv@lv|x}z>U>t0?DN0KG0E7c4(H?`k?N9&!{b_MnB%T}ke>14@7&3^0QI$X3 zic?#b-3>pJMSiTkH+l7e(~aXS(&jy~TK2O4<2}bn1vnLm^JyVBFKfTti(U-JV_bTPp>ac0)DE&i}YdR0l zTHP}10e+V%IHj!c?|Q*ep(D{eFI%3PJER{u$(Q%n!kmH!FdK+s3&oT7xFZG--Gzf` z<4Ung;@CUQY-z`p(@5#5^Ykz8yS^oiJ5X27&nsBHlz4s$|NLU@n{t=z=PItBCXU-A zCikrO&sYWUM&Yi<#N!TNItU0AkUb9J!)icAryM zabHJYtnEhkQcQ0Y7H-9?;G5g=Wpsb9Pe``-6v6~c;qh!zhcC-7D~f0C=*M0 z%&|fIO94(5knwuKs$el{7%f%RW>$TqE)Vl>PP1`9nu8>f?<3;`#pRzbI%gwm=TcW4Yl?Byl^;+d!f&4bvDUkSHrPH?dAmzD_7c}1G14KU%DvP+a<5mf{z5 zigqdV4s=N&MQG15<-WVq0+QC+?;ApCx_AQ8F5)_50db{WicXZCcwHZtmd!3@{vovUvx5T;&P zCMdwmi|{TgPK&5*n^V9H-n))U`M_VHtmC{s`SDSfJtb%EqDsqFOj7dU!ODNsOkZcS zxvyidb!Lp*&RKnToONo&|3I&;iQsraJ9B7VX?>H#(WaWuN5n%1yML0O{IoLXapUEj zu$~?$|B`)#%K0Kw?}u|}!qU{y+}QI8=|A=!GwC0i({>pdiZQIY?Ne0ZAv+l1_%ktb zv_ZseMUJJ1l2%$gC%bTCMBMg?jqJQ&g@NMHzs;q-`DHy s=N;LZDIHNn(xDCGW&3r~l6u=vOM`&(xI;fBBk~!Usc(SZ!1(9(UsA6G0{{R3 delta 3171 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 Uyy_UQ5`(}X+#`Rrmmtu800%o&bpQYW diff --git a/Shared/data/launchers/wow64_helper.exe b/Shared/data/launchers/wow64_helper.exe index 38927395bb82cce700877469bdebcb12932a053e..c6fcaeefa150f6c753957346d179d4c00d82c771 100644 GIT binary patch delta 35681 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 z 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 PH7BL+N=zui@3#K~eqJf_ delta 34685 zcmbrncUV-%_Xm9EURLU|AS^|?EP@3^5XFLmf-Z^*3W^0wY}ipjjSUQ9#FeNSbu{)C zHO7j%c0on3V~ZL!0b3TaV2yp>&)fy|o8SAq|GYdooHA$5%$<79xfhdZRL!YSEy&F1 zcKzCWr+tUER73KG{hRH;CtolYFw*Y6i{K<2v*AC!VN$(DsaE_LIg1!3^)8bWgP(V;@s zPo+>>uoi9W3X4QRXhLLZ3XLR<#DZixo^%uE)TO7$cO)dQu2@Fek2xd=T3xX=M-j0> z5{&BJYeYett2{d&DC=ZE`I4i8aPFKo>v6zt0{KWN8IA@C!U8aVR4a|6ab{}bOoy69 zwYzW-26L5Dd07tri?9IL4K0drAq1^VT`!poKRv=Uq7v!1X>KsP1~wI^Ok1tK_bCs_s=Cxd!?&9FlUE>iW6L)10^X z%GX^0{_SB?f3!IX8ar)Hti~cXCyL%t1Q9Q4Tca8IhqkZLhHRpF5NFF_C(SvND_Li|kMf+JMsKkAIP!s29b7M6D zhTmy{Wlyq#x>|il7Sd@}EyT}z=zgp2WFWP%jv)E8vvn&{pU$=JLT=NW)@{i$>Tc74 z#M8kxF~pp1xAAB?GY>**tEdu`j1 zO#05&lcZA@m5;Kgl54Jf%QZLA_Nu<5CS9*;KniGys?g)!cJwVfUp4D4AGF*ge{I&i zQf*GVw-pwKBD&jdhhN29L5R_v!U7Gd?tTA$eNGq#z2O#ff5uE2tm$m~Xbki@`vGJQ z4Xo)`ywcGPLw>+9vd+)LumE%kn#rAYr($&H3_pO6)kSII zI_5gIjFGN&%C%`?7)`y^4H~BW2E+Ba;imtoR0n*gT*pSSx)WOI54nm1ouaO*d{TqA z9rA*=9Zq+u4-*?Y+R06<+)U>>)m7ab!W%1$(Or$fIy*~`J2iGK*o;=(cq{Y&r*tN@ zac-#Wq2LBrRC0sA(hkmNJcezm8kTeacjPGfRt&SeOxMfdp9fn++Gs6Y;44sor zDigeb#g%e6Nb<4=%U)~#Xncj)fy+yRqtT&%a2wUW1-DHoo00~0u{}GLThz54R>eo=By9$!&+M;;Wuv;M|31?m};=KpNSKtzTG`9EEfd1 z9c|7?Zw!&Ps9k^xH6rGWv@`6YW}1K+bD(1APlGihafPhXIFnm+pQfj{=@;I2yOIA^ z8$GAhS(XRTP`_>@kk0XIZGPsBTx4qOp5H7CN=ltjl0jG1@h1J~u{wQ7H|pj;LTt2@ zZVw2vf6aKui?q5}O{zBJoMAdG@mHH~eTCbMuND79vHmpb?%#-x4`@Lw=(d37H7_jr z-zq&Az2xs`KI((dj>7%-l zB!@Pr7ot3XQ@5yH6u+Cxx6x7ce6X^9suxKf(2{!2_KhJowu>sS3oNfG`nH}2E+MD- zVI-J#t*_BsdTumE>e_qfbijyq^41y)Ft{$-oKD`lc5&L4#S_0*dC}GNJCdICQT^6o zNm|_~%>X_{@?qJxf4>t3@5vZCL%+%|V~csy=JeILB=+cu8#Yy|Qv}ih4cy2jI<3Jk z

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 Date: Tue, 20 Aug 2024 00:58:04 +0200 Subject: [PATCH 24/39] Revert last commit (as planned) --- Shared/data/launchers/CEFLauncher.exe | Bin 97664 -> 95112 bytes Shared/data/launchers/MTA Server ARM64.exe | Bin 372096 -> 369544 bytes Shared/data/launchers/MTA Server.exe | Bin 326528 -> 323976 bytes Shared/data/launchers/MTA Server64.exe | Bin 380800 -> 378248 bytes Shared/data/launchers/Multi Theft Auto.exe | Bin 418688 -> 416136 bytes Shared/data/launchers/wow64_helper.exe | Bin 262016 -> 259464 bytes 6 files changed, 0 insertions(+), 0 deletions(-) diff --git a/Shared/data/launchers/CEFLauncher.exe b/Shared/data/launchers/CEFLauncher.exe index 8c8babb2856edbc9abf36965796cdbdb21712d7a..62684b73d0559f7621adb23233750a71f3fa8caa 100644 GIT binary patch delta 2949 zcmZveXH?Tk7sm4sy$Tw70-=Z^EeTb63!+jaNN)xRMVf>r2nGTo(xknFB2B7bfq+B= zmacSZOOuWWQdB@dmf{QSx}SE=x#yYRo#)>9c4xx&X`+{C5>){DBvoyK3CBl6F2C2X z-(kaC1BD&44RZxF<5Vl5RL4s9z2+aSgwmXH1r&L#_8Zku$f>Uy%5kh*e$_DaX}$u= zd8*f7e=FsbF>a2oCwGDVUMX|{J0t}Chx0!SngxLYCV*8eMFLQvB5eUF?tmsZTCD0N zfB`2V=!w)d)IjPv<=-XX<2u*lcrFcqp7Q{wU4EZ29~0yx5C90m`|la$0~as{ut zlB7N&X=gH}&ugvBL?>jBrodAQ)QUfxK41oXtf$jo7M2j>Mh@%G0%;@~>C z0Gx;S9ULAhA&w9`F;FoJ{ii_!ejOL!<^{ik_xANA*}DLOgnZ?i(FJ~mEJ)OvbiGkn zb^rDawDt{!BOfK79x|^O1&W&cO7NHYnd6zB1c*)+-;kql2`DjsXthdi3ed@_#(^!j|OWTNkLgVmxIC9*x;aH zc2SAyzHQWXuL^4ypVbd@1}rHH?;2LaL}Y!eXaNLkg)fr3v*dQA z&r(ti@#I+E{|S+8&lFD8r!9cSGm__1OIOy4-Kh%=>8VJr7QjBF(#`hl0Q<|>#}kiX zJnCYVY!hlcq(Dm`iV&Ia9wb%X1l#%y*RMyZ{95dGVmjAO4BX?da5R`)$U?1KV9$R6 z7pO>oFVE$h=gQU-9Jpy7zSgg%*Gx0-P&DG+WoezjTsFqkf7#5{mVH1Vq2{s#4Wlp^ zztjs;ZEzc4H7g3l;?E8+7KS)^>w4K1WOp-u za!M~JY>1|Y!8WCzn@t5YJ3!VGoy8*vfl91@8Se*YOegXyyOq$0EEW=6a6$tbldpr( znjYd(_Xr7fql5>fq#YN}%ahpqN(5o2B-9Pd7mv$RrG_lvwgxQ8<4VhvEmeTsrK5i`=*qT{~B)Pg&w|g$CT!LZE0DhQM0E7FRXni~Ml!|$p^D!Yy3gqjg}q_Oi;WSqMRfnf-u)#D zx$D#<6Hsn!6ITnSV=N6(p8!4JK7&G_PTpHNq@o-OL7{a9)FAY~k)$6C=p(GN+dr;r z=QNFK=DLinZc<&?hV`sl=-AzJV4NpEZJ$fR8`un}mw$%J_k_e86RgGs;;r>wHl~hZdD`{%oUsl&h_5F{9^x^cLMM{~;E| zUj>2nOFfuw4eoOvr^y#CY3|**-6S|vkQi1s@z)-`F-b!*h#GK->|N`$AjojHy=ZHx zi+5Gd8LiQ|Ed@_1`DAoH_)rC-4N_;bmm*9Y_DO+ z^|9{5f)w5jp81gNPwB3)t@5Rd0ygC8RMx<|0&6tnyeX?`&b;Bys%eoWYA@YOlEaGw z!L%w)npL?UvL5*TNP7Qud69tPcFCu`zRQLjh$&VNd^)SxdXEFdP3Gr!s+A6<+;y4K zj|iKOY`u)E&biz!|ARGK!6CZ})>e}Z<(d4;2LZ EKOwIw2mk;8 delta 3931 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 diff --git a/Shared/data/launchers/MTA Server ARM64.exe b/Shared/data/launchers/MTA Server ARM64.exe index fcc6ac81c00208c79ebb6a2925336659a9e7ee86..1dba234e53b9b81c0a8a234818365112ac27c8cb 100644 GIT binary patch delta 46179 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
ytFsBJ!)5*f-~ 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%0AXQUl(`jy4-%&pCWv{ zbYc09D~DViIzM*2acd(tzB_Nh4=<*jy*kCeY4>POCvToNS#O7X`400Q>Ra4yKWmJm z-T%V!&^*>e-ue_){ho{}n^QM)(t5OuF{@{b%%3PgCH(9lkGIc{;81 zz>s4JElHDW|9KR?Lr-6ctWR_Fob-Bb!qDMKuI3-(x15_$Rd7obXu5M|8sBy7&bp~@ zuDgAErK??My`AW-2XmaVjG(0 zu9Gz#PIDZ!zf|O-Dt}s+eroBm152#D`lr|zHTAm3{%&4zVJy}2L|x_nF=lppRnt{NU`7HbC0<5+VJh|u9z!^*+3I@N zY4zI>Z~0C3^^A*+>Gq{Jx74<~Aei$+*mXw2rBR*}{)yCP>^@pF`lrquo4{Thr$~HV z-tkX%)*ZYaX-psJJgzzMSpQ`U|LX1&5ZPzr>4^G$t}Q8>YezpB^ykV;{RXLGSB8XN zo<6kCs){pv_L^(#W277ZE?>LHUii}oMc=q??$fvr9rt8fd-dov>21dR9o`u(yOy%| r^3HbtZcM+e*fJvRR-Vg>@w47#?HKRB&}OD@UHk7db0=c=NdEo{6)LGG delta 47339 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≀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 F{sR^q&!7MR diff --git a/Shared/data/launchers/MTA Server64.exe b/Shared/data/launchers/MTA Server64.exe index daa94651681542d0efdc326f6029c2c0d7e8237d..0914af8aa5c123575023f97058953625d9cc0ad3 100644 GIT binary patch delta 3040 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 delta 4018 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 PB6Sd*uXU?g|84&PW_ine diff --git a/Shared/data/launchers/Multi Theft Auto.exe b/Shared/data/launchers/Multi Theft Auto.exe index 64ecb98eabf2976f16267d2126a5bbbb38de6712..3093964d55db51e65aa08745d494446378c6b8b5 100644 GIT binary patch delta 3171 zcmai0c{tQv8=l{6mNA+UvYU{78G|OvYhOl)h)|ZnSh9?n30X2I%9d?v$eLZU7b&v5 zZ_*}8wpVsZjTVKn^^Lyk?T_zzuj@P4b)Wm(&-0w~ob%6lp14QCms^B08_8ol(3Wzl>4>Nv-L?O#l9LjBh+vuD>r*#~(0?) zATWRccolLq0X^`s}jG-W)vG02d^!r&n>@`0drfBvVKYsh#$gALBI4Y6_8;L=nj1q|S`#z1Ol5MQ- zV1M!dlbj+534k$gib2Gf6QYp8OMPMxHlS^NVzA96E`~F(mmkDnK8C`RA$ZVXrXvil zy|-w~g2Bm(l9v_OZZH^xO;8Afb15bfk~WY42e>3b!Iy3FVoGA+_A=YiC*+BDlD|!H z^3y#Pjy?~yN-W4_WUp~J47HKF4qKNbAZyxojNqMcNo)fA9X0_vSONh9U@%I=b>^PP z#CR^B(&5>o!dXVlm%8vEx+eCBx`w)z7EVjc^#Bs5^;>GXV&l`*5m+ub#1RVL4>qz_ zM`3yQ1Sb!N37P6c_9CiFV#W6?96W+f0YO1Tj0Gu#L?s4cj7dR$RALBOT>>k%7r@OU zU>iyb!8nk^sNN)uDJh&3L=GiU)s>a73VQ(%9;tr~P{vr1!UIAu7F05g#`Lg(AEe*V zZ5^GLz~}QPvD7+j<8BYG*_oNx;dd!IlxNK%3T^WAJ>z#1vOYBu^*Xu~Qv z^_`QnKS3;b?0pmIaXhJ@ecjo0dX?@?aG9ipe?q%DS@?+bo%yhmSSn+IH{N=wp>+HWj{1ymtIl@Q}Mn z_&Z}$1hLmBXW7C#J3)WsG2OFMZL#b%%}m5x`MhNLENflpS+QwmMMp2ifVabVSN%&^ zr|4)*WDDx&!yEV+9{wN>Lg35QsjsdVRSZ4AgD7i8DM!Ci)B7QubFZ-3by>raN-fl# z+fOD}@XIP2GtCcm-m0p0rZ=aGT$O5e+gJXk%+JB zn*!YUhS2q?850@e!UhUWs0n>xW`qGeiGJ}$V5DkoxA@n$80!w4-p|FSK8XDf6C!>{ zG*`_Zx^7DDPJC83PT+ zH%w7#RX&FfMmbC``Q+BpzsNG;#8=gBIlT$*@#0^}^i{e*kI>=WJiZl`H{+w4o zZZ}*gv*Dj{3K>vxDGHLkH~UHWi$*0LS>17dK*;#CILoPDdv zyk$wo(d1gzEDyLQ!bKaHJ zCqFmR7*=lx@18jn*E*Jo?XPC3PaA&@M`2^K1;lcE) zEh$z@Cmyc#a*A;s)}=--1u{%H5Fqs>-xol z*_vkQ!<4O4(I}u(=7i+Ez=Eaa(-)^bXzN{XZx00uFmG;HDWfhK_3ggsp5I)PEw^3} zA~qLZ$~6k!5e`VVbSW)%FSztzqBB&{f-?;8HtuuZ)U=~-zVD9a*ZdBBE1OdF$%XRX zm^WCok(GVYE&X1yYk_kzEq%_$#b%fbVLL{^Qsto=5B%^m8Z&L-ZMyD_jN!r9&=0t? zXC3u3uh@s;PHb~PL`FMa#c7S;Dnqjr%Mpmwx!}7k%-RkeohQuWR`B!MnRq+s-!a4* z^2=ShWWlO^em4HvPt=e_AfiY0vVyfTn1j1I#$eoGM`#}oi`%QWTIxr%a2mKa4r}-y z{9L~^)5a5Sg*CO~XcdImKRu! zeexBBB_8*tG2dtl{s^}kxN~hocS4SI77+lr)&IbWA1Iewxpj#GnY>1ZDHZD3`EKmP z23po*{X!{kw8c%9rM3GDm+4;`3}5hTai8B5c9{RmVm=EJ{D_b>%<(u;n@CBPum5td z_7h8gD9wcaQdg|XkcuLfLtR<@)J|r68Yuc=Bk6 zo$c3&2n87-mG~-l|H{%hD7CQ0eW2PxTTfJff=}usIT{gUBIodc5*IikP7@nGo!QckiCafti@PFz zRyUniek7c;u+02$EBbKM*~+s8;y+Jhhbt9$KbRjH8>!Z{){V(?{9{Q#^}vo|)~^1i z_1jO8+^Xs$ktUa`G>@iStI`wMj(VXS?fb1XnG=2R*jc2V@_|<#!mH<=^x_TdV{aYa Uyy_UQ5`(}X+#`Rrmmtu800%o&bpQYW delta 4149 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 diff --git a/Shared/data/launchers/wow64_helper.exe b/Shared/data/launchers/wow64_helper.exe index c6fcaeefa150f6c753957346d179d4c00d82c771..38927395bb82cce700877469bdebcb12932a053e 100644 GIT binary patch delta 34685 zcmbrncUV-%_Xm9EURLU|AS^|?EP@3^5XFLmf-Z^*3W^0wY}ipjjSUQ9#FeNSbu{)C zHO7j%c0on3V~ZL!0b3TaV2yp>&)fy|o8SAq|GYdooHA$5%$<79xfhdZRL!YSEy&F1 zcKzCWr+tUER73KG{hRH;CtolYFw*Y6i{K<2v*AC!VN$(DsaE_LIg1!3^)8bWgP(V;@s zPo+>>uoi9W3X4QRXhLLZ3XLR<#DZixo^%uE)TO7$cO)dQu2@Fek2xd=T3xX=M-j0> z5{&BJYeYett2{d&DC=ZE`I4i8aPFKo>v6zt0{KWN8IA@C!U8aVR4a|6ab{}bOoy69 zwYzW-26L5Dd07tri?9IL4K0drAq1^VT`!poKRv=Uq7v!1X>KsP1~wI^Ok1tK_bCs_s=Cxd!?&9FlUE>iW6L)10^X z%GX^0{_SB?f3!IX8ar)Hti~cXCyL%t1Q9Q4Tca8IhqkZLhHRpF5NFF_C(SvND_Li|kMf+JMsKkAIP!s29b7M6D zhTmy{Wlyq#x>|il7Sd@}EyT}z=zgp2WFWP%jv)E8vvn&{pU$=JLT=NW)@{i$>Tc74 z#M8kxF~pp1xAAB?GY>**tEdu`j1 zO#05&lcZA@m5;Kgl54Jf%QZLA_Nu<5CS9*;KniGys?g)!cJwVfUp4D4AGF*ge{I&i zQf*GVw-pwKBD&jdhhN29L5R_v!U7Gd?tTA$eNGq#z2O#ff5uE2tm$m~Xbki@`vGJQ z4Xo)`ywcGPLw>+9vd+)LumE%kn#rAYr($&H3_pO6)kSII zI_5gIjFGN&%C%`?7)`y^4H~BW2E+Ba;imtoR0n*gT*pSSx)WOI54nm1ouaO*d{TqA z9rA*=9Zq+u4-*?Y+R06<+)U>>)m7ab!W%1$(Or$fIy*~`J2iGK*o;=(cq{Y&r*tN@ zac-#Wq2LBrRC0sA(hkmNJcezm8kTeacjPGfRt&SeOxMfdp9fn++Gs6Y;44sor zDigeb#g%e6Nb<4=%U)~#Xncj)fy+yRqtT&%a2wUW1-DHoo00~0u{}GLThz54R>eo=By9$!&+M;;Wuv;M|31?m};=KpNSKtzTG`9EEfd1 z9c|7?Zw!&Ps9k^xH6rGWv@`6YW}1K+bD(1APlGihafPhXIFnm+pQfj{=@;I2yOIA^ z8$GAhS(XRTP`_>@kk0XIZGPsBTx4qOp5H7CN=ltjl0jG1@h1J~u{wQ7H|pj;LTt2@ zZVw2vf6aKui?q5}O{zBJoMAdG@mHH~eTCbMuND79vHmpb?%#-x4`@Lw=(d37H7_jr z-zq&Az2xs`KI((dj>7%-l zB!@Pr7ot3XQ@5yH6u+Cxx6x7ce6X^9suxKf(2{!2_KhJowu>sS3oNfG`nH}2E+MD- zVI-J#t*_BsdTumE>e_qfbijyq^41y)Ft{$-oKD`lc5&L4#S_0*dC}GNJCdICQT^6o zNm|_~%>X_{@?qJxf4>t3@5vZCL%+%|V~csy=JeILB=+cu8#Yy|Qv}ih4cy2jI<3Jk z

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 z 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 PH7BL+N=zui@3#K~eqJf_ From e431474c676a253004a26d86fc9e1a6100d329d4 Mon Sep 17 00:00:00 2001 From: -ffs-PLASMA <33094646+ffsPLASMA@users.noreply.github.com> Date: Wed, 21 Aug 2024 21:14:34 +0200 Subject: [PATCH 25/39] Make frame graph scale accordingly to resolution (#3593) --- Client/core/CChat.cpp | 5 ++++ Client/core/CChat.h | 2 ++ Client/core/CGUI.cpp | 5 ++++ Client/core/CGUI.h | 1 + Client/core/CGraphStats.cpp | 48 +++++++++++++++++++++---------------- 5 files changed, 41 insertions(+), 20 deletions(-) diff --git a/Client/core/CChat.cpp b/Client/core/CChat.cpp index 4a66d2907b..438ea577fe 100644 --- a/Client/core/CChat.cpp +++ b/Client/core/CChat.cpp @@ -1117,6 +1117,11 @@ void CChat::SetCharacterLimit(int charLimit) m_iCharacterLimit = charLimit; } +float CChat::GetChatBottomPosition() const noexcept +{ + return m_vecBackgroundSize.fY; +} + CChatLine::CChatLine() { m_bActive = false; diff --git a/Client/core/CChat.h b/Client/core/CChat.h index 5316086170..e967127075 100644 --- a/Client/core/CChat.h +++ b/Client/core/CChat.h @@ -207,6 +207,8 @@ class CChat constexpr int GetDefaultCharacterLimit() const { return m_iDefaultCharacterLimit; } constexpr int GetMaxCharacterLimit() const { return m_iMaxCharacterLimit; } + float GetChatBottomPosition() const noexcept; + private: void LoadCVars(); diff --git a/Client/core/CGUI.cpp b/Client/core/CGUI.cpp index a64955ac79..c4a2729d7a 100644 --- a/Client/core/CGUI.cpp +++ b/Client/core/CGUI.cpp @@ -449,6 +449,11 @@ CChat* CLocalGUI::GetChat() return m_pChat; } +float CLocalGUI::GetChatBottomPosition() const noexcept +{ + return m_pChat->GetChatBottomPosition(); +} + CDebugView* CLocalGUI::GetDebugView() { return m_pDebugView; diff --git a/Client/core/CGUI.h b/Client/core/CGUI.h index 39d7921bba..f667082844 100644 --- a/Client/core/CGUI.h +++ b/Client/core/CGUI.h @@ -68,6 +68,7 @@ class CLocalGUI : public CSingleton bool IsMainMenuVisible(); CChat* GetChat(); + float GetChatBottomPosition() const noexcept; void SetChatBoxVisible(bool bVisible, bool bInputBlocked = true); bool IsChatBoxVisible(); bool IsChatBoxInputBlocked(); diff --git a/Client/core/CGraphStats.cpp b/Client/core/CGraphStats.cpp index eb6284ff15..3a5a25cc2e 100644 --- a/Client/core/CGraphStats.cpp +++ b/Client/core/CGraphStats.cpp @@ -12,8 +12,6 @@ namespace { - #define GRAPHSTAT_HISTORY_SIZE 256 - struct SGraphStatLine { TIMEUS prevData; @@ -113,6 +111,11 @@ void CGraphStats::AddTimingPoint(const char* szName) if (!IsEnabled()) return; + CGraphicsInterface* pGraphics = g_pCore->GetGraphics(); + + std::uint32_t viewportWidth = pGraphics->GetViewportWidth(); + std::uint32_t sizeX = viewportWidth / 4; // one quarter of screen width + // Start of next frame? if (szName[0] == 0) { @@ -133,7 +136,7 @@ void CGraphStats::AddTimingPoint(const char* szName) for (int i = 0; i < Dups; i++) { pLine->iDataPos++; - if (pLine->iDataPos > GRAPHSTAT_HISTORY_SIZE - 1) + if (pLine->iDataPos > sizeX - 1) pLine->iDataPos = 0; pLine->dataHistory[pLine->iDataPos] = Data; } @@ -153,7 +156,7 @@ void CGraphStats::AddTimingPoint(const char* szName) // Add new line MapSet(m_LineList, szName, SGraphStatLine()); pLine = MapFind(m_LineList, szName); - pLine->dataHistory.resize(GRAPHSTAT_HISTORY_SIZE); + pLine->dataHistory.resize(sizeX); memset(&pLine->dataHistory[0], 0, pLine->dataHistory.size()); pLine->iDataPos = 0; pLine->prevData = 0; @@ -179,7 +182,7 @@ void CGraphStats::AddTimingPoint(const char* szName) // Inc position pLine->iDataPos++; - if (pLine->iDataPos > GRAPHSTAT_HISTORY_SIZE - 1) + if (pLine->iDataPos > sizeX - 1) pLine->iDataPos = 0; // Insert data point @@ -199,29 +202,34 @@ void CGraphStats::Draw() return; CGraphicsInterface* pGraphics = g_pCore->GetGraphics(); + CLocalGUI* pLocalGUI = g_pCore->GetLocalGUI(); + + std::uint32_t viewportWidth = pGraphics->GetViewportWidth(); // get width of current resolution + std::uint32_t viewportHeight = pGraphics->GetViewportHeight(); // get height of current resolution + std::uint32_t originX = 10; // offset the graph by 10 pixels from left side of screen + std::uint32_t originY = pLocalGUI->GetChatBottomPosition(); // get chat bottom screen position + std::uint32_t sizeX = viewportWidth / 4; // set the width of graph to 1/4 of current resolution + std::uint32_t sizeY = viewportHeight / 4; // set the height of graph to 1/4 of current resolution + std::uint32_t rangeY = 100; // 100ms + + originY = originY + sizeY + 30; // add graph height plus a little gap to the overall Y position - uint uiViewportHeight = pGraphics->GetViewportHeight(); - uint uiOriginX = 10; - uint uiOriginY = std::min(500, uiViewportHeight - 10); - uint uiSizeX = GRAPHSTAT_HISTORY_SIZE; - uint uiSizeY = 150; - uint uiRangeY = 100; // 100ms - float fLineScale = 1 / 1000.f / uiRangeY * uiSizeY; + float fLineScale = 1 / 1000.f / rangeY * sizeY; float fLineHeight = pGraphics->GetDXFontHeight(); // Backgroung box - pGraphics->DrawRectQueued(uiOriginX, uiOriginY - uiSizeY, uiSizeX, uiSizeY, SColorRGBA(0, 0, 0, 128), true); + pGraphics->DrawRectQueued(originX, originY - sizeY, sizeX, sizeY, SColorRGBA(0, 0, 0, 128), true); // Draw data lines - float fLabelX = uiOriginX + uiSizeX + 22; - float fLabelY = uiOriginY - m_LineList.size() * fLineHeight; + float fLabelX = originX + sizeX + 22; + float fLabelY = originY - m_LineList.size() * fLineHeight; for (const auto& dataLine : m_LineList) { const SGraphStatLine& line = dataLine.second; int iDataPos = line.iDataPos; int iDataPosPrev = iDataPos; - for (int i = uiSizeX - 1; i > 0; i--) + for (int i = sizeX - 1; i > 0; i--) { float fY0 = line.dataHistory[iDataPos] * fLineScale; float fY1 = line.dataHistory[iDataPosPrev] * fLineScale; @@ -229,14 +237,14 @@ void CGraphStats::Draw() iDataPosPrev = iDataPos; iDataPos--; if (iDataPos == -1) - iDataPos = GRAPHSTAT_HISTORY_SIZE - 1; + iDataPos = sizeX - 1; - pGraphics->DrawLineQueued(uiOriginX + i - 1, uiOriginY - fY0, uiOriginX + i, uiOriginY - fY1, 1, line.color, true); + pGraphics->DrawLineQueued(originX + i - 1, originY - fY0, originX + i, originY - fY1, 1, line.color, true); - if (i == uiSizeX - 1) + if (i == sizeX - 1) { // Line from graph to label - pGraphics->DrawLineQueued(uiOriginX + i - 1, uiOriginY - fY0, fLabelX - 2, fLabelY + fLineHeight / 2, 1, line.color, true); + pGraphics->DrawLineQueued(originX + i - 1, originY - fY0, fLabelX - 2, fLabelY + fLineHeight / 2, 1, line.color, true); } } From cd7dd1aa9c8ee0bc39b1aef42caa9cd5d469e54a Mon Sep 17 00:00:00 2001 From: MTABot Date: Thu, 22 Aug 2024 07:20:49 +0000 Subject: [PATCH 26/39] Visual Studio Update Build Tools 2022: 17.11.35219.272 This is an automated commit to keep track of toolchain changes on the build server. It applies to every MTA build after this commit until further notice. [skip ci] From a41e5aae8b312383931d06a4f304c97d7cda86d0 Mon Sep 17 00:00:00 2001 From: Marek Kulik Date: Fri, 23 Aug 2024 22:20:26 +0200 Subject: [PATCH 27/39] Switch to libncursesw6 --- Dockerfile | 2 +- Dockerfile.arm64 | 2 +- Dockerfile.armhf | 2 +- Dockerfile.i386 | 2 +- README.md | 4 ++-- Server/core/premake5.lua | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Dockerfile b/Dockerfile index 56439d28be..c0a721081b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ ENV AS_BUILDAGENT=0 \ RUN apt-get update && \ apt-get install -y software-properties-common wget ca-certificates git build-essential \ gcc-10 g++-10 curl subversion ncftp \ - libncurses-dev libncursesw5 libmysqlclient-dev + libncurses-dev libncursesw6 libmysqlclient-dev # Set build directory VOLUME /build diff --git a/Dockerfile.arm64 b/Dockerfile.arm64 index f491aa5cf0..b2da73f581 100644 --- a/Dockerfile.arm64 +++ b/Dockerfile.arm64 @@ -21,7 +21,7 @@ RUN sed -i 's/deb http/deb \[arch=amd64,i386\] http/' /etc/apt/sources.list && \ apt-get update && \ apt-get install -y make git ncftp \ gcc-10-aarch64-linux-gnu g++-10-aarch64-linux-gnu \ - libncursesw5:arm64 libncursesw5-dev:arm64 libmysqlclient-dev:arm64 + libncurses-dev:arm64 libncursesw6:arm64 libmysqlclient-dev:arm64 # Set build directory VOLUME /build diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 0cdf11543c..3cc20df9c5 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -21,7 +21,7 @@ RUN sed -i 's/deb http/deb \[arch=amd64,i386\] http/' /etc/apt/sources.list && \ apt-get update && \ apt-get install -y make git ncftp \ gcc-10-arm-linux-gnueabihf g++-10-arm-linux-gnueabihf \ - libncursesw5:armhf libncursesw5-dev:armhf libmysqlclient-dev:armhf + libncurses-dev:armhf libncursesw6:armhf libmysqlclient-dev:armhf # Set build directory VOLUME /build diff --git a/Dockerfile.i386 b/Dockerfile.i386 index 787782bdbe..7706537c15 100644 --- a/Dockerfile.i386 +++ b/Dockerfile.i386 @@ -15,7 +15,7 @@ ENV AS_BUILDAGENT=0 \ RUN dpkg --add-architecture i386 && apt-get update && \ apt-get install -y software-properties-common wget ca-certificates git build-essential \ gcc-10-multilib g++-10-multilib curl subversion ncftp \ - libncurses-dev:i386 libncursesw5:i386 libmysqlclient-dev:i386 + libncurses-dev:i386 libncursesw6:i386 libmysqlclient-dev:i386 # Set build directory VOLUME /build diff --git a/README.md b/README.md index 27221cabf3..c10258f599 100644 --- a/README.md +++ b/README.md @@ -64,8 +64,8 @@ You can build the MTA:SA server on GNU/Linux distributions only for x86, x86_64, - git - make - GNU GCC compiler (version 10 or newer) -- libncursesw5 -- libncursesw5-dev +- libncursesw6 +- libncurses-dev - libmysqlclient-dev **Build instructions: Script** diff --git a/Server/core/premake5.lua b/Server/core/premake5.lua index 7e52214323..c7b5c552d9 100644 --- a/Server/core/premake5.lua +++ b/Server/core/premake5.lua @@ -44,7 +44,7 @@ project "Core" links { "breakpad", "rt" } buildoptions { "-pthread" } linkoptions { "-pthread" } - linkoptions { "-l:libncursesw.so.5" } + linkoptions { "-l:libncursesw.so.6" } filter "system:macosx" links { "ncurses", "breakpad", "CoreFoundation.framework" } From 09e8350a3130c0f8fdf0f51b9d8e0882b571d779 Mon Sep 17 00:00:00 2001 From: Marek Kulik Date: Fri, 23 Aug 2024 22:52:09 +0200 Subject: [PATCH 28/39] Remove Docker files for macOS --- .github/workflows/dockerimage.yaml | 6 ----- Dockerfile.osx-arm64 | 40 ------------------------------ Dockerfile.osx-x64 | 40 ------------------------------ utils/docker-entrypoint-osx.sh | 16 ------------ 4 files changed, 102 deletions(-) delete mode 100644 Dockerfile.osx-arm64 delete mode 100644 Dockerfile.osx-x64 delete mode 100644 utils/docker-entrypoint-osx.sh diff --git a/.github/workflows/dockerimage.yaml b/.github/workflows/dockerimage.yaml index 21fcd2da1f..fcc2b8e4c7 100644 --- a/.github/workflows/dockerimage.yaml +++ b/.github/workflows/dockerimage.yaml @@ -12,8 +12,6 @@ on: - 'Dockerfile.i386' - 'Dockerfile.armhf' - 'Dockerfile.arm64' - - 'Dockerfile.osx-x64' - - 'Dockerfile.osx-arm64' jobs: build: @@ -28,10 +26,6 @@ jobs: dockerfile: Dockerfile.armhf - tag: arm64 dockerfile: Dockerfile.arm64 - - tag: osx-x64 - dockerfile: Dockerfile.osx-x64 - - tag: osx-arm64 - dockerfile: Dockerfile.osx-arm64 runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 diff --git a/Dockerfile.osx-arm64 b/Dockerfile.osx-arm64 deleted file mode 100644 index 4846c0cdf2..0000000000 --- a/Dockerfile.osx-arm64 +++ /dev/null @@ -1,40 +0,0 @@ -FROM jetbrains/teamcity-minimal-agent:latest - -# This is important for using apt-get -USER root - -# Install cross-build dependencies -RUN apt-get update && \ - apt-get install -y --no-install-recommends ca-certificates subversion ncftp \ - git autoconf wget make patch cmake clang llvm-dev uuid-dev libssl-dev lzma-dev libxml2-dev python3 - -# Prepare cross-build environment -ENV MACOSX_DEPLOYMENT_TARGET=11.0 \ - PATH="${PATH}:/opt/osxcross/bin" \ - OSXCROSS_MP_INC=1 - -RUN mkdir -p /opt/osxcross && \ - git clone https://github.com/tpoechtrager/osxcross.git /opt/osxcross/setup_files && \ - cd /opt/osxcross/setup_files && \ - wget -P tarballs https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.3.sdk.tar.xz && \ - UNATTENDED=1 TARGET_DIR=/opt/osxcross ./build.sh && \ - UNATTENDED=1 ../bin/osxcross-macports install --arm64 mysql8 libidn2 - -# Default build configuration -ENV AS_BUILDAGENT=0 \ - BUILD_ARCHITECTURE=arm64 \ - BUILD_CONFIG=release \ - AR=arm64-apple-darwin20.4-ar \ - CC=arm64-apple-darwin20.4-clang \ - CXX=arm64-apple-darwin20.4-clang++ - -# Set build directory -VOLUME /build -WORKDIR /build - -# Copy entrypoint script -COPY utils/docker-entrypoint-osx.sh /docker-entrypoint.sh -RUN chmod +x /docker-entrypoint.sh - -# Set entrypoint -ENTRYPOINT /docker-entrypoint.sh diff --git a/Dockerfile.osx-x64 b/Dockerfile.osx-x64 deleted file mode 100644 index a694b06027..0000000000 --- a/Dockerfile.osx-x64 +++ /dev/null @@ -1,40 +0,0 @@ -FROM jetbrains/teamcity-minimal-agent:latest - -# This is important for using apt-get -USER root - -# Install cross-build dependencies -RUN apt-get update && \ - apt-get install -y --no-install-recommends ca-certificates subversion ncftp \ - git autoconf wget make patch cmake clang llvm-dev uuid-dev libssl-dev lzma-dev libxml2-dev python3 - -# Prepare cross-build environment -ENV MACOSX_DEPLOYMENT_TARGET=10.15 \ - PATH="${PATH}:/opt/osxcross/bin" \ - OSXCROSS_MP_INC=1 - -RUN mkdir -p /opt/osxcross && \ - git clone https://github.com/tpoechtrager/osxcross.git /opt/osxcross/setup_files && \ - cd /opt/osxcross/setup_files && \ - wget -P tarballs https://github.com/phracker/MacOSX-SDKs/releases/download/11.3/MacOSX11.3.sdk.tar.xz && \ - UNATTENDED=1 TARGET_DIR=/opt/osxcross ./build.sh && \ - UNATTENDED=1 ../bin/osxcross-macports install mysql8 libidn2 - -# Default build configuration -ENV AS_BUILDAGENT=0 \ - BUILD_ARCHITECTURE=x64 \ - BUILD_CONFIG=release \ - AR=x86_64-apple-darwin20.4-ar \ - CC=x86_64-apple-darwin20.4-clang \ - CXX=x86_64-apple-darwin20.4-clang++ - -# Set build directory -VOLUME /build -WORKDIR /build - -# Copy entrypoint script -COPY utils/docker-entrypoint-osx.sh /docker-entrypoint.sh -RUN chmod +x /docker-entrypoint.sh - -# Set entrypoint -ENTRYPOINT /docker-entrypoint.sh diff --git a/utils/docker-entrypoint-osx.sh b/utils/docker-entrypoint-osx.sh deleted file mode 100644 index 6b40c2a7c2..0000000000 --- a/utils/docker-entrypoint-osx.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -# If configurede as a build agent, start Teamcity agent -if [[ $AS_BUILDAGENT = "1" ]]; then - # https://github.com/JetBrains/teamcity-docker-minimal-agent/blob/master/Dockerfile#L17 - exec /run-services.sh -fi - -# Manually invoke build process -# So, first make a shallow clone of the repository if it not exists -umask 000 -if [ ! -f ./premake5.lua ]; then - git clone --depth=1 https://github.com/multitheftauto/mtasa-blue.git . -fi - -./linux-build.sh --os=macosx --arch=$BUILD_ARCHITECTURE --config=$BUILD_CONFIG From 1c6cab5a94c8c6ff5cf9b1fc0c9bc04808c922f8 Mon Sep 17 00:00:00 2001 From: justn <39979049+jvstns@users.noreply.github.com> Date: Sat, 24 Aug 2024 00:49:35 -0400 Subject: [PATCH 29/39] Fixes getTimerDetails negative remaining duration (#3663) * Fixes negative numbers Fixes negative remaining duration in current timer, remaining should always be 0 * Return in single statement Co-authored-by: Nico <122193236+Nico8340@users.noreply.github.com> * 0 > 0LL --------- Co-authored-by: Nico <122193236+Nico8340@users.noreply.github.com> Co-authored-by: TEDERIs --- Shared/mods/deathmatch/logic/lua/CLuaTimer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Shared/mods/deathmatch/logic/lua/CLuaTimer.cpp b/Shared/mods/deathmatch/logic/lua/CLuaTimer.cpp index 00f919704f..f632a1a237 100644 --- a/Shared/mods/deathmatch/logic/lua/CLuaTimer.cpp +++ b/Shared/mods/deathmatch/logic/lua/CLuaTimer.cpp @@ -68,5 +68,5 @@ CTickCount CLuaTimer::GetTimeLeft() { CTickCount llCurrentTime = CTickCount::Now(); CTickCount llTimeLeft = m_llStartTime + m_llDelay - llCurrentTime; - return llTimeLeft; + return llTimeLeft.ToLongLong() < 0LL ? CTickCount(0LL) : llTimeLeft; } From 5508c7e4058ad9d29cacc9964f8e84df2c60d14f Mon Sep 17 00:00:00 2001 From: Tracer <43095317+TracerDS@users.noreply.github.com> Date: Sat, 24 Aug 2024 19:52:42 +0200 Subject: [PATCH 30/39] Fix google-breakpad in newer GCC versions (PR #3674) --- .../src/client/linux/handler/minidump_descriptor.h | 1 + 1 file changed, 1 insertion(+) diff --git a/vendor/google-breakpad/src/client/linux/handler/minidump_descriptor.h b/vendor/google-breakpad/src/client/linux/handler/minidump_descriptor.h index 911beaef45..8c700861af 100644 --- a/vendor/google-breakpad/src/client/linux/handler/minidump_descriptor.h +++ b/vendor/google-breakpad/src/client/linux/handler/minidump_descriptor.h @@ -34,6 +34,7 @@ #include #include +#include #include "client/linux/handler/microdump_extra_info.h" #include "common/using_std_string.h" From 295844a8ca95af94450c9da6ff6cde547df29caa Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Mon, 26 Aug 2024 16:57:02 +0300 Subject: [PATCH 31/39] Fix engineRequestModel crash caused by CResourceModelStreamer (#3675) * Fix crash * Fix refs count * Use reference --------- Co-authored-by: TEDERIs --- Client/mods/deathmatch/logic/CResourceModelStreamer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Client/mods/deathmatch/logic/CResourceModelStreamer.cpp b/Client/mods/deathmatch/logic/CResourceModelStreamer.cpp index 9c58219d8b..c6c2eb30d1 100644 --- a/Client/mods/deathmatch/logic/CResourceModelStreamer.cpp +++ b/Client/mods/deathmatch/logic/CResourceModelStreamer.cpp @@ -106,7 +106,11 @@ void CResourceModelStreamer::ReleaseAll() void CResourceModelStreamer::FullyReleaseModel(std::uint16_t modelId) { - std::uint16_t &refsCount = m_requestedModels[modelId]; + auto refs = m_requestedModels.find(modelId); + if (refs == m_requestedModels.end()) + return; + + std::uint16_t& refsCount = refs->second; if (refsCount > 0) { From 4e7afa2586c6992a75ac5312378c1096d87148ae Mon Sep 17 00:00:00 2001 From: TEDERIs Date: Tue, 27 Aug 2024 14:59:45 +0700 Subject: [PATCH 32/39] setElementModel memory leak fix (#3671) * Memory leak fix * Misprint fix * Clean up * Use CEntitySAInterface::DeleteRwObject --- Client/core/CCore.cpp | 5 ---- Client/core/CCore.h | 1 - Client/core/CModelCacheManager.cpp | 28 +-------------------- Client/core/CModelCacheManager.h | 1 - Client/game_sa/CPedSA.cpp | 16 ++++-------- Client/game_sa/CPedSA.h | 1 - Client/mods/deathmatch/logic/CClientPed.cpp | 17 +------------ Client/sdk/core/CCoreInterface.h | 1 - Client/sdk/game/CPed.h | 1 - 9 files changed, 7 insertions(+), 64 deletions(-) diff --git a/Client/core/CCore.cpp b/Client/core/CCore.cpp index 849eee0afc..364836e111 100644 --- a/Client/core/CCore.cpp +++ b/Client/core/CCore.cpp @@ -2181,11 +2181,6 @@ CModelCacheManager* CCore::GetModelCacheManager() return m_pModelCacheManager; } -void CCore::AddModelToPersistentCache(ushort usModelId) -{ - return GetModelCacheManager()->AddModelToPersistentCache(usModelId); -} - void CCore::StaticIdleHandler() { g_pCore->IdleHandler(); diff --git a/Client/core/CCore.h b/Client/core/CCore.h index 55460a6f4f..3439a484de 100644 --- a/Client/core/CCore.h +++ b/Client/core/CCore.h @@ -253,7 +253,6 @@ class CCore : public CCoreInterface, public CSingleton EDiagnosticDebugType GetDiagnosticDebug(); void SetDiagnosticDebug(EDiagnosticDebugType value); CModelCacheManager* GetModelCacheManager(); - void AddModelToPersistentCache(ushort usModelId); static void StaticIdleHandler(); void IdleHandler(); diff --git a/Client/core/CModelCacheManager.cpp b/Client/core/CModelCacheManager.cpp index 00c762fa80..40fa7c8ff4 100644 --- a/Client/core/CModelCacheManager.cpp +++ b/Client/core/CModelCacheManager.cpp @@ -47,7 +47,6 @@ class CModelCacheManagerImpl : public CModelCacheManager virtual void OnClientClose(); virtual void UpdatePedModelCaching(const std::map& newNeedCacheList); virtual void UpdateVehicleModelCaching(const std::map& newNeedCacheList); - virtual void AddModelToPersistentCache(ushort usModelId); virtual void SetCustomLimits(std::optional numVehicles, std::optional numPeds); // CModelCacheManagerImpl methods @@ -72,7 +71,6 @@ class CModelCacheManagerImpl : public CModelCacheManager bool m_IsUsingCustomVehicleCacheLimit{}; //< If `true` the value is set by the scripter, otherwise is calculated in `DoPulse()` std::map m_PedModelCacheInfoMap{}; std::map m_VehicleModelCacheInfoMap{}; - std::set m_PermoLoadedModels{}; }; /////////////////////////////////////////////////////////////// @@ -266,22 +264,6 @@ void CModelCacheManagerImpl::DoPulse() } } -/////////////////////////////////////////////////////////////// -// -// CModelCacheManagerImpl::AddModelToPersistentCache -// -// Keep this model around 4 evar now -// -/////////////////////////////////////////////////////////////// -void CModelCacheManagerImpl::AddModelToPersistentCache(ushort usModelId) -{ - if (!MapContains(m_PermoLoadedModels, usModelId)) - { - AddModelRefCount(usModelId); - MapInsert(m_PermoLoadedModels, usModelId); - } -} - /////////////////////////////////////////////////////////////// // // CModelCacheManagerImpl::UpdatePedModelCaching @@ -542,13 +524,5 @@ void CModelCacheManagerImpl::OnRestreamModel(ushort usModelId) OutputDebugLine(SString("[Cache] End caching model %d (OnRestreamModel)", usModelId)); } } - } - - // Also check the permo list - if (MapContains(m_PermoLoadedModels, usModelId)) - { - SubModelRefCount(usModelId); - MapRemove(m_PermoLoadedModels, usModelId); - OutputDebugLine(SString("[Cache] End permo-caching model %d (OnRestreamModel)", usModelId)); - } + } } diff --git a/Client/core/CModelCacheManager.h b/Client/core/CModelCacheManager.h index ee54cbedfe..7d7952d0b5 100644 --- a/Client/core/CModelCacheManager.h +++ b/Client/core/CModelCacheManager.h @@ -24,7 +24,6 @@ class CModelCacheManager virtual void OnClientClose() = 0; virtual void UpdatePedModelCaching(const std::map& newNeedCacheList) = 0; virtual void UpdateVehicleModelCaching(const std::map& newNeedCacheList) = 0; - virtual void AddModelToPersistentCache(ushort usModelId) = 0; virtual void SetCustomLimits(std::optional numVehicles, std::optional numPeds) = 0; }; diff --git a/Client/game_sa/CPedSA.cpp b/Client/game_sa/CPedSA.cpp index 009e618e8c..1ae9f942f8 100644 --- a/Client/game_sa/CPedSA.cpp +++ b/Client/game_sa/CPedSA.cpp @@ -98,8 +98,12 @@ void CPedSA::Init() void CPedSA::SetModelIndex(DWORD dwModelIndex) { - DWORD dwFunction = FUNC_SetModelIndex; + // Delete any existing RwObject first + GetPedInterface()->DeleteRwObject(); + + // Set new model DWORD dwThis = (DWORD)GetInterface(); + DWORD dwFunction = FUNC_SetModelIndex; _asm { mov ecx, dwThis @@ -116,16 +120,6 @@ void CPedSA::SetModelIndex(DWORD dwModelIndex) } } -// Hacky thing done for the local player when changing model -void CPedSA::RemoveGeometryRef() -{ - RpClump* pClump = (RpClump*)GetInterface()->m_pRwObject; - RpAtomic* pAtomic = (RpAtomic*)((pClump->atomics.root.next) - 0x8); - RpGeometry* pGeometry = pAtomic->geometry; - if (pGeometry->refs > 1) - pGeometry->refs--; -} - bool CPedSA::IsInWater() { CTask* pTask = m_pPedIntelligence->GetTaskManager()->GetTask(TASK_PRIORITY_EVENT_RESPONSE_NONTEMP); diff --git a/Client/game_sa/CPedSA.h b/Client/game_sa/CPedSA.h index daae468472..fee84fd651 100644 --- a/Client/game_sa/CPedSA.h +++ b/Client/game_sa/CPedSA.h @@ -295,7 +295,6 @@ class CPedSA : public virtual CPed, public virtual CPhysicalSA CPedSAInterface* GetPedInterface() { return (CPedSAInterface*)GetInterface(); } void Init(); void SetModelIndex(DWORD dwModelIndex); - void RemoveGeometryRef(); void AttachPedToEntity(DWORD dwEntityInterface, CVector* vector, unsigned short sDirection, float fRotationLimit, eWeaponType weaponType, bool bChangeCamera); void DetachPedFromEntity(); diff --git a/Client/mods/deathmatch/logic/CClientPed.cpp b/Client/mods/deathmatch/logic/CClientPed.cpp index 81faab7efd..5716bea120 100644 --- a/Client/mods/deathmatch/logic/CClientPed.cpp +++ b/Client/mods/deathmatch/logic/CClientPed.cpp @@ -3927,22 +3927,7 @@ void CClientPed::_ChangeModel() // So make sure clothes geometry is built now... m_pClothes->AddAllToModel(); m_pPlayerPed->RebuildPlayer(); - - // ...and decrement the extra ref - #ifdef NO_CRASH_FIX_TEST2 - m_pPlayerPed->RemoveGeometryRef(); - #endif - } - else - { - // When the local player changes to another (non CJ) model, the geometry gets an extra ref from somewhere, causing a memory leak. - // So decrement the extra ref here - #ifdef NO_CRASH_FIX_TEST - m_pPlayerPed->RemoveGeometryRef(); - #endif - // As we will have problem removing the geometry later, we might as well keep the model cached until exit - g_pCore->AddModelToPersistentCache((ushort)m_ulModel); - } + } // Remove reference to the old model we used (Flag extra GTA reference to be removed as well) pLoadedModel->RemoveRef(true); diff --git a/Client/sdk/core/CCoreInterface.h b/Client/sdk/core/CCoreInterface.h index aea1ca9054..c591d546e5 100644 --- a/Client/sdk/core/CCoreInterface.h +++ b/Client/sdk/core/CCoreInterface.h @@ -160,7 +160,6 @@ class CCoreInterface virtual EDiagnosticDebugType GetDiagnosticDebug() = 0; virtual void SetDiagnosticDebug(EDiagnosticDebugType value) = 0; virtual CModelCacheManager* GetModelCacheManager() = 0; - virtual void AddModelToPersistentCache(ushort usModelId) = 0; virtual void UpdateDummyProgress(int iValue = -1, const char* szType = "") = 0; virtual void SetDummyProgressUpdateAlways(bool bAlways) = 0; diff --git a/Client/sdk/game/CPed.h b/Client/sdk/game/CPed.h index 29bbf60104..4e91cdb8b4 100644 --- a/Client/sdk/game/CPed.h +++ b/Client/sdk/game/CPed.h @@ -191,7 +191,6 @@ class CPed : public virtual CPhysical virtual void Respawn(CVector* position, bool bCameraCut) = 0; virtual void SetModelIndex(unsigned long ulModel) = 0; - virtual void RemoveGeometryRef() = 0; virtual float GetHealth() = 0; virtual void SetHealth(float fHealth) = 0; From 79a6c44b8fede2a251768d4b018fac35c32bfbe4 Mon Sep 17 00:00:00 2001 From: MTABot Date: Wed, 28 Aug 2024 07:21:10 +0000 Subject: [PATCH 33/39] Visual Studio Update Build Tools 2022: 17.11.35222.181 This is an automated commit to keep track of toolchain changes on the build server. It applies to every MTA build after this commit until further notice. [skip ci] From b766ed1e6c9543557fdceb5be298e6805c9a5881 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Wed, 28 Aug 2024 13:37:49 +0300 Subject: [PATCH 34/39] Fix building OOP API (#3614) * Fix building OOP API * style fixes --- Client/mods/deathmatch/logic/lua/CLuaMain.cpp | 1 + .../deathmatch/logic/luadefs/CLuaBuildingDefs.cpp | 11 +++++++---- .../mods/deathmatch/logic/luadefs/CLuaBuildingDefs.h | 2 +- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Client/mods/deathmatch/logic/lua/CLuaMain.cpp b/Client/mods/deathmatch/logic/lua/CLuaMain.cpp index 446fdc866e..6b794be016 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaMain.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaMain.cpp @@ -127,6 +127,7 @@ void CLuaMain::InitClasses(lua_State* luaVM) CLuaVehicleDefs::AddClass(luaVM); CLuaWaterDefs::AddClass(luaVM); CLuaWeaponDefs::AddClass(luaVM); + CLuaBuildingDefs::AddClass(luaVM); CLuaShared::AddClasses(luaVM); } diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.cpp index f45efbf09c..bcb765e712 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.cpp @@ -30,10 +30,10 @@ void CLuaBuildingDefs::AddClass(lua_State* luaVM) lua_classfunction(luaVM, "create", "createBuilding"); - lua_registerclass(luaVM, "Building"); + lua_registerclass(luaVM, "Building", "Element"); } -CClientBuilding* CLuaBuildingDefs::CreateBuilding(lua_State* const luaVM, uint16_t modelId, CVector pos, CVector rot, std::optional interior) +CClientBuilding* CLuaBuildingDefs::CreateBuilding(lua_State* const luaVM, std::uint16_t modelId, CVector pos, std::optional rot, std::optional interior) { CLuaMain* pLuaMain = m_pLuaManager->GetVirtualMachine(luaVM); @@ -48,11 +48,14 @@ CClientBuilding* CLuaBuildingDefs::CreateBuilding(lua_State* const luaVM, uint16 if (!CClientBuildingManager::IsValidPosition(pos)) throw std::invalid_argument("Position is outside of game world"); - ConvertDegreesToRadians(rot); + if (rot.has_value()) + ConvertDegreesToRadians(rot.value()); + else + rot.emplace(CVector(0, 0, 0)); m_pBuildingManager->ResizePoolIfNeeds(); - CClientBuilding* pBuilding = new CClientBuilding(m_pManager, INVALID_ELEMENT_ID, modelId, pos, rot, interior.value_or(0)); + CClientBuilding* pBuilding = new CClientBuilding(m_pManager, INVALID_ELEMENT_ID, modelId, pos, rot.value() , interior.value_or(0)); CClientEntity* pRoot = pResource->GetResourceDynamicEntity(); pBuilding->SetParent(pRoot); diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.h index 628d320844..a244c74bbb 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaBuildingDefs.h @@ -19,7 +19,7 @@ class CLuaBuildingDefs : public CLuaDefs static void AddClass(lua_State* luaVM); // Buiding create funcs - static CClientBuilding* CreateBuilding(lua_State* const luaVM, uint16_t modelId, CVector pos, CVector rot, std::optional interior); + static CClientBuilding* CreateBuilding(lua_State* const luaVM, std::uint16_t modelId, CVector pos, std::optional rot, std::optional interior); static void RemoveAllGameBuildings(); static void RestoreGameBuildings(); }; From 82000c34830b51ace2d14e39f3b487feb1aac1da Mon Sep 17 00:00:00 2001 From: FileEX Date: Wed, 28 Aug 2024 12:52:57 +0200 Subject: [PATCH 35/39] Deprecate setHelicopterRotorSpeed (#3643) Update CResourceChecker.Data.h --- Server/mods/deathmatch/logic/CResourceChecker.Data.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Server/mods/deathmatch/logic/CResourceChecker.Data.h b/Server/mods/deathmatch/logic/CResourceChecker.Data.h index a0234eb386..e6bdee9212 100644 --- a/Server/mods/deathmatch/logic/CResourceChecker.Data.h +++ b/Server/mods/deathmatch/logic/CResourceChecker.Data.h @@ -168,7 +168,9 @@ namespace // Base Encoding & Decoding {false, "base64Encode", "encodeString"}, - {false, "base64Decode", "decodeString"} + {false, "base64Decode", "decodeString"}, + + {false, "setHelicopterRotorSpeed", "setVehicleRotorSpeed"} }; SDeprecatedItem serverDeprecatedList[] = { From 69aa420f21fde3ac56e3d3bbc62ef0f060295c0a Mon Sep 17 00:00:00 2001 From: justns <39979049+jvstns@users.noreply.github.com> Date: Wed, 28 Aug 2024 07:41:37 -0400 Subject: [PATCH 36/39] Adds new timer functions (#3683) * Add SetPaused to timer class * Add pause variables to class * Add new functions "pauseTimer" and "isTimerPaused" * Add new timer function defs - pauseTimer - isTimerPaused * Add "PauseTimer" to CLuaTimerManager * Def "PauseTimer" in CLuaTimerManager * Adds pauseTimer() and isTimerPaused() * Add new timer function defs * Add "PauseTimer" to CLuaTimerManager * Def "PauseTimer" in CLuaTimerManager * fix typo * fix typo * A few minor adjustments * Minor adjustments #2 * Update to ArgumentParser * Update to ArgumentParser * minor adjustment * Minor adjustment to function name * Updated to ArgumentParser and changed function name * Update to ArgumentParser * Minor adjustment to function name * Minor adjustment to function name * Removed hungarian notation * Removed hungarian notation * Removed hungarian notation & useless luaState * Removed hungarian notation & useless luaState * Removed hungarian notations * Removed hungarian notation * Removed hungarian notation & useless luaState * Removed hungarian notation & useless luaState * Removed hungarian notations * Removed hungarian notations --------- Co-authored-by: TEDERIs --- .../deathmatch/logic/lua/CLuaTimerManager.cpp | 15 +++++++++++- .../deathmatch/logic/lua/CLuaTimerManager.h | 1 + .../logic/luadefs/CLuaTimerDefs.cpp | 24 ++++++++++++++++--- .../deathmatch/logic/luadefs/CLuaTimerDefs.h | 2 ++ .../deathmatch/logic/lua/CLuaTimerManager.cpp | 14 ++++++++++- .../deathmatch/logic/lua/CLuaTimerManager.h | 1 + .../logic/luadefs/CLuaTimerDefs.cpp | 23 +++++++++++++++--- .../deathmatch/logic/luadefs/CLuaTimerDefs.h | 4 +++- .../mods/deathmatch/logic/lua/CLuaTimer.cpp | 23 ++++++++++++++++++ Shared/mods/deathmatch/logic/lua/CLuaTimer.h | 6 ++++- 10 files changed, 103 insertions(+), 10 deletions(-) diff --git a/Client/mods/deathmatch/logic/lua/CLuaTimerManager.cpp b/Client/mods/deathmatch/logic/lua/CLuaTimerManager.cpp index 317de7f16d..4c70d03f04 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaTimerManager.cpp +++ b/Client/mods/deathmatch/logic/lua/CLuaTimerManager.cpp @@ -21,7 +21,10 @@ void CLuaTimerManager::DoPulse(CLuaMain* pLuaMain) // Use a separate queue to avoid trouble for (CFastList::const_iterator iter = m_TimerList.begin(); iter != m_TimerList.end(); iter++) - m_ProcessQueue.push_back(*iter); + { + if (!(*iter)->IsPaused()) + m_ProcessQueue.push_back(*iter); + } while (!m_ProcessQueue.empty()) { @@ -108,6 +111,16 @@ void CLuaTimerManager::RemoveAllTimers() m_pProcessingTimer = NULL; } +void CLuaTimerManager::SetTimerPaused(CLuaTimer* timer, bool paused) +{ + assert(timer); + + timer->SetPaused(paused); + if (paused) + ListRemove(m_ProcessQueue, timer); +} + + void CLuaTimerManager::ResetTimer(CLuaTimer* pLuaTimer) { assert(pLuaTimer); diff --git a/Client/mods/deathmatch/logic/lua/CLuaTimerManager.h b/Client/mods/deathmatch/logic/lua/CLuaTimerManager.h index 055b644fcb..c4f97d2626 100644 --- a/Client/mods/deathmatch/logic/lua/CLuaTimerManager.h +++ b/Client/mods/deathmatch/logic/lua/CLuaTimerManager.h @@ -36,6 +36,7 @@ class CLuaTimerManager void RemoveAllTimers(); unsigned long GetTimerCount() const { return m_TimerList.size(); } + void SetTimerPaused(CLuaTimer* timer, bool paused); void ResetTimer(CLuaTimer* pLuaTimer); CFastList::const_iterator IterBegin() { return m_TimerList.begin(); } diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaTimerDefs.cpp b/Client/mods/deathmatch/logic/luadefs/CLuaTimerDefs.cpp index 401abcfd96..e0c8a96ba0 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaTimerDefs.cpp +++ b/Client/mods/deathmatch/logic/luadefs/CLuaTimerDefs.cpp @@ -10,12 +10,14 @@ *****************************************************************************/ #include "StdInc.h" +#include void CLuaTimerDefs::LoadFunctions() { constexpr static const std::pair functions[]{ - {"setTimer", SetTimer}, {"killTimer", KillTimer}, {"resetTimer", ResetTimer}, - {"getTimers", GetTimers}, {"isTimer", IsTimer}, {"getTimerDetails", GetTimerDetails}, + {"setTimer", SetTimer}, {"killTimer", KillTimer}, {"resetTimer", ResetTimer}, + {"setTimerPaused", ArgumentParser},{"isTimerPaused", ArgumentParser}, + {"getTimers", GetTimers}, {"isTimer", IsTimer}, {"getTimerDetails", GetTimerDetails}, }; // Add functions @@ -31,10 +33,10 @@ void CLuaTimerDefs::AddClass(lua_State* luaVM) lua_classfunction(luaVM, "destroy", "killTimer"); lua_classfunction(luaVM, "reset", "resetTimer"); lua_classfunction(luaVM, "isValid", "isTimer"); - lua_classfunction(luaVM, "getDetails", "getTimerDetails"); lua_classvariable(luaVM, "valid", NULL, "isTimer"); + lua_classvariable(luaVM, "paused", "setTimerPaused", "isTimerPaused"); lua_registerclass(luaVM, "Timer"); } @@ -111,6 +113,22 @@ int CLuaTimerDefs::KillTimer(lua_State* luaVM) return 1; } +bool CLuaTimerDefs::IsTimerPaused(CLuaTimer* timer) noexcept +{ + return timer->IsPaused(); +} + +bool CLuaTimerDefs::SetTimerPaused(lua_State* luaVM, CLuaTimer* timer, bool paused) +{ + // bool setTimerPaused ( timer theTimer, bool paused ) + CLuaMain* luaMain = m_pLuaManager->GetVirtualMachine(luaVM); + if (!luaMain) + return false; + + luaMain->GetTimerManager()->SetTimerPaused(timer, paused); + return true; +} + int CLuaTimerDefs::ResetTimer(lua_State* luaVM) { // bool resetTimer ( timer theTimer ) diff --git a/Client/mods/deathmatch/logic/luadefs/CLuaTimerDefs.h b/Client/mods/deathmatch/logic/luadefs/CLuaTimerDefs.h index 671a329b28..db6cac48a9 100644 --- a/Client/mods/deathmatch/logic/luadefs/CLuaTimerDefs.h +++ b/Client/mods/deathmatch/logic/luadefs/CLuaTimerDefs.h @@ -24,4 +24,6 @@ class CLuaTimerDefs : public CLuaDefs LUA_DECLARE(GetTimers); LUA_DECLARE(IsTimer); LUA_DECLARE(GetTimerDetails); + static bool IsTimerPaused(CLuaTimer* timer) noexcept; + static bool SetTimerPaused(lua_State* luaVM, CLuaTimer* timer, bool paused); }; diff --git a/Server/mods/deathmatch/logic/lua/CLuaTimerManager.cpp b/Server/mods/deathmatch/logic/lua/CLuaTimerManager.cpp index fbd86eccaf..0af771b289 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaTimerManager.cpp +++ b/Server/mods/deathmatch/logic/lua/CLuaTimerManager.cpp @@ -26,7 +26,10 @@ void CLuaTimerManager::DoPulse(CLuaMain* pLuaMain) // Use a separate queue to avoid trouble // What kind of problems are we trying to avoid? Doing a copy each frame isn't quite efficient for (CFastList::const_iterator iter = m_TimerList.begin(); iter != m_TimerList.end(); ++iter) - m_ProcessQueue.push_back(*iter); + { + if (!(*iter)->IsPaused()) + m_ProcessQueue.push_back(*iter); + } while (!m_ProcessQueue.empty()) { @@ -113,6 +116,15 @@ void CLuaTimerManager::RemoveAllTimers() m_pProcessingTimer = NULL; } +void CLuaTimerManager::SetTimerPaused(CLuaTimer* timer, bool paused) +{ + assert(timer); + + timer->SetPaused(paused); + if (paused) + ListRemove(m_ProcessQueue, timer); +} + void CLuaTimerManager::ResetTimer(CLuaTimer* pLuaTimer) { assert(pLuaTimer); diff --git a/Server/mods/deathmatch/logic/lua/CLuaTimerManager.h b/Server/mods/deathmatch/logic/lua/CLuaTimerManager.h index d9d2fc41f2..d63e659147 100644 --- a/Server/mods/deathmatch/logic/lua/CLuaTimerManager.h +++ b/Server/mods/deathmatch/logic/lua/CLuaTimerManager.h @@ -36,6 +36,7 @@ class CLuaTimerManager void RemoveAllTimers(); unsigned long GetTimerCount() const { return m_TimerList.size(); } + void SetTimerPaused(CLuaTimer* timer, bool paused); void ResetTimer(CLuaTimer* pLuaTimer); CFastList::const_iterator IterBegin() { return m_TimerList.begin(); } diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaTimerDefs.cpp b/Server/mods/deathmatch/logic/luadefs/CLuaTimerDefs.cpp index 49c83bd576..c3e0478c8b 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaTimerDefs.cpp +++ b/Server/mods/deathmatch/logic/luadefs/CLuaTimerDefs.cpp @@ -16,8 +16,9 @@ void CLuaTimerDefs::LoadFunctions() { constexpr static const std::pair functions[]{ - {"setTimer", SetTimer}, {"killTimer", KillTimer}, {"resetTimer", ResetTimer}, - {"getTimers", GetTimers}, {"isTimer", IsTimer}, {"getTimerDetails", GetTimerDetails}, + {"setTimer", SetTimer}, {"killTimer", KillTimer}, {"resetTimer", ResetTimer}, + {"setTimerPaused", ArgumentParser},{"isTimerPaused", ArgumentParser}, + {"getTimers", GetTimers}, {"isTimer", IsTimer},{"getTimerDetails", GetTimerDetails}, }; // Add functions @@ -33,10 +34,10 @@ void CLuaTimerDefs::AddClass(lua_State* luaVM) lua_classfunction(luaVM, "destroy", "killTimer"); lua_classfunction(luaVM, "reset", "resetTimer"); lua_classfunction(luaVM, "isValid", "isTimer"); - lua_classfunction(luaVM, "getDetails", "getTimerDetails"); lua_classvariable(luaVM, "valid", NULL, "isTimer"); + lua_classvariable(luaVM, "paused", "setTimerPaused", "isTimerPaused"); lua_registerclass(luaVM, "Timer"); } @@ -114,6 +115,22 @@ int CLuaTimerDefs::KillTimer(lua_State* luaVM) return 1; } +bool CLuaTimerDefs::IsTimerPaused(CLuaTimer* timer) noexcept +{ + return timer->IsPaused(); +} + +bool CLuaTimerDefs::SetTimerPaused(lua_State* luaVM, CLuaTimer* timer, bool paused) +{ + // bool setTimerPaused ( timer theTimer, bool paused ) + CLuaMain* luaMain = m_pLuaManager->GetVirtualMachine(luaVM); + if (!luaMain) + return false; + + luaMain->GetTimerManager()->SetTimerPaused(timer, paused); + return true; +} + int CLuaTimerDefs::ResetTimer(lua_State* luaVM) { // bool resetTimer ( timer theTimer ) diff --git a/Server/mods/deathmatch/logic/luadefs/CLuaTimerDefs.h b/Server/mods/deathmatch/logic/luadefs/CLuaTimerDefs.h index fd37e2aaa4..abf1b725d6 100644 --- a/Server/mods/deathmatch/logic/luadefs/CLuaTimerDefs.h +++ b/Server/mods/deathmatch/logic/luadefs/CLuaTimerDefs.h @@ -24,4 +24,6 @@ class CLuaTimerDefs : public CLuaDefs LUA_DECLARE(GetTimers); LUA_DECLARE(IsTimer); LUA_DECLARE(GetTimerDetails); -}; \ No newline at end of file + static bool IsTimerPaused(CLuaTimer* timer) noexcept; + static bool SetTimerPaused(lua_State* luaVM, CLuaTimer* timer, bool paused); +}; diff --git a/Shared/mods/deathmatch/logic/lua/CLuaTimer.cpp b/Shared/mods/deathmatch/logic/lua/CLuaTimer.cpp index f632a1a237..bd0383222b 100644 --- a/Shared/mods/deathmatch/logic/lua/CLuaTimer.cpp +++ b/Shared/mods/deathmatch/logic/lua/CLuaTimer.cpp @@ -23,6 +23,7 @@ CLuaTimer::CLuaTimer(const CLuaFunctionRef& iLuaFunction, const CLuaArguments& A m_uiRepeats = 1; m_iLuaFunction = iLuaFunction; m_Arguments = Arguments; + m_paused = false; } CLuaTimer::~CLuaTimer() @@ -64,8 +65,30 @@ void CLuaTimer::ExecuteTimer(CLuaMain* pLuaMain) } } +void CLuaTimer::SetPaused(bool paused) +{ + if (paused == IsPaused()) + return; + + CTickCount llTimeRemaining = GetTimeLeft(); + if (paused) + { + m_pausedRemainingTime = llTimeRemaining.ToLongLong() == 0LL ? m_llDelay : llTimeRemaining; + } + else + { + CTickCount llCurrentTime = CTickCount::Now(); + CTickCount llNewStartTime = llCurrentTime - (m_llDelay - llTimeRemaining); + SetStartTime(llNewStartTime); + } + m_paused = paused; +} + CTickCount CLuaTimer::GetTimeLeft() { + if (IsPaused()) + return m_pausedRemainingTime; + CTickCount llCurrentTime = CTickCount::Now(); CTickCount llTimeLeft = m_llStartTime + m_llDelay - llCurrentTime; return llTimeLeft.ToLongLong() < 0LL ? CTickCount(0LL) : llTimeLeft; diff --git a/Shared/mods/deathmatch/logic/lua/CLuaTimer.h b/Shared/mods/deathmatch/logic/lua/CLuaTimer.h index 62bb3c97a5..9534c2c47f 100644 --- a/Shared/mods/deathmatch/logic/lua/CLuaTimer.h +++ b/Shared/mods/deathmatch/logic/lua/CLuaTimer.h @@ -17,7 +17,7 @@ class CLuaTimer; #include "lua/LuaCommon.h" #include "lua/CLuaArguments.h" -#define LUA_TIMER_MIN_INTERVAL 0 +#define LUA_TIMER_MIN_INTERVAL 0 class CLuaTimer { @@ -35,6 +35,8 @@ class CLuaTimer unsigned int GetRepeats() const { return m_uiRepeats; }; void SetRepeats(unsigned int uiRepeats) { m_uiRepeats = uiRepeats; } + bool IsPaused() const noexcept { return m_paused; }; + void SetPaused(bool paused); void ExecuteTimer(class CLuaMain* pLuaMain); @@ -45,10 +47,12 @@ class CLuaTimer void SetLuaDebugInfo(const SLuaDebugInfo& luaDebugInfo) { m_LuaDebugInfo = luaDebugInfo; } private: + bool m_paused; CLuaFunctionRef m_iLuaFunction; CLuaArguments m_Arguments; CTickCount m_llStartTime; CTickCount m_llDelay; + CTickCount m_pausedRemainingTime; unsigned int m_uiRepeats; uint m_uiScriptID; SLuaDebugInfo m_LuaDebugInfo; From 631afc43c2a6e42c583a6342f42eff561f47e798 Mon Sep 17 00:00:00 2001 From: Tracer <43095317+TracerDS@users.noreply.github.com> Date: Wed, 28 Aug 2024 13:43:11 +0200 Subject: [PATCH 37/39] Add definitions for CHeliSAInterface (#3686) * Update CHeliSA.h * Update CHeliSA.h --- Client/game_sa/CHeliSA.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/Client/game_sa/CHeliSA.h b/Client/game_sa/CHeliSA.h index 49fc0d866d..497fe46a70 100644 --- a/Client/game_sa/CHeliSA.h +++ b/Client/game_sa/CHeliSA.h @@ -15,10 +15,47 @@ class CHeliSAInterface : public CAutomobileSAInterface { +public: + std::uint8_t m_heliFlags; + + std::uint8_t _pad1[3]; + std::uint32_t m_leftRightSkid; + std::uint32_t m_steeringUpDown; + std::uint32_t m_steeringLeftRight; + std::uint32_t m_accelerationBreakStatus; + std::uint32_t field_99C; + std::uint32_t m_rotorZ; + std::uint32_t m_secondRotorZ; + std::uint32_t m_maxAltitude; + std::uint32_t field_9AC; + std::uint32_t m_minAltitude; + std::uint32_t field_9B4; + std::uint8_t field_9B8; + std::uint8_t m_numSwatOccupants; + std::uint8_t m_swatIDs[4]; + + std::uint8_t _pad2[2]; + std::uint32_t field_9C0[4]; + std::uint32_t field_9D0; + + std::uint32_t m_particlesList; + std::uint8_t field_9D8[24]; + std::uint32_t field_9F0; + CVector m_searchLightTarget; + std::uint32_t m_searchLightIntensity; + std::uint32_t field_A04; + std::uint32_t field_A08; + std::uint32_t m_gunflashFx; + std::uint8_t m_firingMultiplier; + std::uint8_t m_searchLightEnabled; + std::uint8_t _pad3[2]; + std::uint32_t field_A14; }; +static_assert(sizeof(CHeliSAInterface) == 0xA18, "Invalid size for CHeliSAInterface"); class CHeliSA final : public virtual CHeli, public virtual CAutomobileSA { public: CHeliSA(CHeliSAInterface* pInterface); + CHeliSAInterface* GetHeliInterface() noexcept { return reinterpret_cast(GetInterface()); } }; From 2a927c7033335f7e87564eb24b112323ea9f535b Mon Sep 17 00:00:00 2001 From: Marek Kulik Date: Fri, 30 Aug 2024 01:41:57 +0200 Subject: [PATCH 38/39] Add support for Apple Silicon (arm64) --- Server/dbconmy/premake5.lua | 1 + Shared/sdk/SharedUtil.File.hpp | 7 +++++++ Shared/sdk/SharedUtil.Misc.hpp | 7 +++++-- premake5.lua | 6 +++++- 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Server/dbconmy/premake5.lua b/Server/dbconmy/premake5.lua index 3bd8cf5eff..125047f906 100644 --- a/Server/dbconmy/premake5.lua +++ b/Server/dbconmy/premake5.lua @@ -41,6 +41,7 @@ project "Dbconmy" includedirs { os.findheader("mysql.h", { "/usr/local/opt/mysql/include/mysql", + "/opt/homebrew/include/mysql", "/opt/osxcross/macports/pkgs/opt/local/include/mysql8/mysql", }) } diff --git a/Shared/sdk/SharedUtil.File.hpp b/Shared/sdk/SharedUtil.File.hpp index 351afa63c3..0a1cf56c7c 100644 --- a/Shared/sdk/SharedUtil.File.hpp +++ b/Shared/sdk/SharedUtil.File.hpp @@ -156,11 +156,18 @@ bool SharedUtil::FileLoad(std::nothrow_t, const SString& filePath, SString& outB CloseHandle(handle); return true; +#else +#ifdef __APPLE__ + struct stat info; + + if (stat(filePath, &info) != 0) + return false; #else struct stat64 info; if (stat64(filePath, &info) != 0) return false; +#endif size_t fileSize = static_cast(info.st_size); diff --git a/Shared/sdk/SharedUtil.Misc.hpp b/Shared/sdk/SharedUtil.Misc.hpp index ed789460d1..1ebf46a599 100644 --- a/Shared/sdk/SharedUtil.Misc.hpp +++ b/Shared/sdk/SharedUtil.Misc.hpp @@ -36,8 +36,8 @@ #endif #endif -#ifdef __APPLE__ - #include "cpuid.h" +#if defined(__APPLE__) && !defined(__aarch64__) + #include #endif CCriticalSection CRefCountable::ms_CS; @@ -1834,6 +1834,8 @@ namespace SharedUtil return FnGetCurrentProcessorNumber(); return _GetCurrentProcessorNumberXP(); +#elif defined(__APPLE__) && defined(__aarch64__) + return -1; #elif defined(__APPLE__) // Hacked from https://stackoverflow.com/a/40398183/1517394 unsigned long cpu; @@ -1851,6 +1853,7 @@ namespace SharedUtil cpu = 0; return cpu; + #endif #else // This should work on Linux return sched_getcpu(); diff --git a/premake5.lua b/premake5.lua index 34dc2e37f4..c3375ad1e0 100644 --- a/premake5.lua +++ b/premake5.lua @@ -26,7 +26,7 @@ workspace "MTASA" configurations {"Debug", "Release", "Nightly"} if os.host() == "macosx" then - platforms { "x64" } + platforms { "x64", "arm64" } elseif os.host() == "windows" then platforms { "x86", "x64", "arm64" } else @@ -103,6 +103,10 @@ workspace "MTASA" defaultplatform "x86" end + filter { "system:macosx", "platforms:arm64" } + includedirs { "/opt/homebrew/include" } + libdirs { "/opt/homebrew/lib" } + filter {"system:windows", "configurations:Nightly", "kind:not StaticLib"} symbolspath "$(SolutionDir)Symbols\\$(Configuration)_$(Platform)\\$(ProjectName).pdb" From b404523247fe0395cdc64281586476651198afb6 Mon Sep 17 00:00:00 2001 From: Marek Kulik Date: Fri, 30 Aug 2024 02:26:58 +0200 Subject: [PATCH 39/39] Fix compile error --- Shared/sdk/SharedUtil.Misc.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Shared/sdk/SharedUtil.Misc.hpp b/Shared/sdk/SharedUtil.Misc.hpp index 1ebf46a599..5697da49f4 100644 --- a/Shared/sdk/SharedUtil.Misc.hpp +++ b/Shared/sdk/SharedUtil.Misc.hpp @@ -1853,7 +1853,6 @@ namespace SharedUtil cpu = 0; return cpu; - #endif #else // This should work on Linux return sched_getcpu();