Date: Thu, 28 May 2015 14:55:45 +0300
Subject: [PATCH 09/63] All's working for now.
---
documentation/README_PL.md | 2 --
1 file changed, 2 deletions(-)
diff --git a/documentation/README_PL.md b/documentation/README_PL.md
index 6cd080f497..950816743d 100644
--- a/documentation/README_PL.md
+++ b/documentation/README_PL.md
@@ -4,12 +4,10 @@
- v3.0.1
- 40.9 Mb
From 489751f5aa138e4fb02c9d721a99ea11f0c1148f Mon Sep 17 00:00:00 2001
From: Macusercom
Date: Thu, 28 May 2015 16:21:53 +0200
Subject: [PATCH 10/63] More German string fixed
As recommended...
---
addons/advanced_ballistics/stringtable.xml | 10 +++++-----
addons/captives/stringtable.xml | 4 ++--
addons/explosives/stringtable.xml | 6 +++---
addons/interaction/stringtable.xml | 6 +++---
addons/map/stringtable.xml | 2 +-
5 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml
index c1ccbe3d3e..c7fdde12f8 100644
--- a/addons/advanced_ballistics/stringtable.xml
+++ b/addons/advanced_ballistics/stringtable.xml
@@ -42,7 +42,7 @@
Enabled For Snipers
- Für Sniper aktiviert
+ Für Scharfschützen aktiviert
Enables advanced ballistics for non local snipers (when using high power optics)
@@ -87,7 +87,7 @@
Enable Ammo Temperature Simulation
Symulacja temp. amunicji
- Munitionstemperatur-Simulation aktivieren
+ Simulation der Munitionstemperatur aktivieren
Muzzle velocity varies with ammo temperature
@@ -97,12 +97,12 @@
Enable Barrel Length Simulation
Symulacja długości lufy
- Lauflängen-Simulation aktivieren
+ Simulation der Lauflänge aktivieren
Muzzle velocity varies with barrel length
Prędkość wylotowa pocisku jest zależna od długości lufy
- Länge des Laufs verändert Mündungsgeschwindigkeit
+ Lauflänge beeinflusst Mündungsgeschwindigkeit
Enable Bullet Trace Effect
@@ -117,7 +117,7 @@
Simulation Interval
Interwał symulacji
- Simulationsinterval
+ Simulationsintervall
Defines the interval between every calculation step
diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml
index 9c164e28fe..2fd6b6ad3f 100644
--- a/addons/captives/stringtable.xml
+++ b/addons/captives/stringtable.xml
@@ -196,12 +196,12 @@
Make Unit Surrender
Poddaj się!
- Einheit aufgeben lassen
+ Einheit kapitulieren lassen
Sync a unit to make them surrender.<br />Source: ace_captives
Zsynchronizuj z jednostką aby sprawić by się poddała<br />Źródło: ace_captives
- Einheit synchronisieren, um sie aufgeben zu lassen.<br />Quelle: ace_captives
+ Einheit synchronisieren, um sie kapitulieren zu lassen.<br />Quelle: ace_captives
\ No newline at end of file
diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml
index e88d7f0a4b..9e2c540d6f 100644
--- a/addons/explosives/stringtable.xml
+++ b/addons/explosives/stringtable.xml
@@ -513,7 +513,7 @@
Require specialists?
Wymagaj specjalistów?
- Benötigt Experten?
+ Benötigt Sprengstoffexperten?
Require explosive specialists to disable explosives? Default: No
@@ -523,12 +523,12 @@
Punish non-specialists?
Karaj nie-specjalistów?
- Bestrafe Nicht-Experten?
+ Bestrafe Nicht-Sprengstoffexperten?
Increase the time it takes to complete actions for non-specialists? Default: Yes
Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak
- Entschärfungszeit für Nicht-Experten erhöhen? Standard: Ja
+ Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja
diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml
index aa39762f6c..9c1fc6641f 100644
--- a/addons/interaction/stringtable.xml
+++ b/addons/interaction/stringtable.xml
@@ -507,7 +507,7 @@
Team Management
- Teamverwaltung
+ Gruppenverwaltung
Gestión de equipo
Gestion d'équipe
Zarządzanie oddziałem
@@ -801,12 +801,12 @@
Enable Team Management
Wł. zarządzanie drużyną
- Aktiviere Teamverwaltung
+ Aktiviere Gruppenverwaltung
Should players be allowed to use the Team Management Menu? Default: Yes
Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak
- Sollen Spieler das Teamverwaltungsmenü verwenden dürfen? Standard: Ja
+ Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja
diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml
index d6546b2b4c..1959297909 100644
--- a/addons/map/stringtable.xml
+++ b/addons/map/stringtable.xml
@@ -57,7 +57,7 @@
Interval
Interwał
- Interval
+ Intervall
How often the markers should be refreshed (in seconds)
From d457d9ffeac7dd1a8fc4a2c95013ef69e65b8c9b Mon Sep 17 00:00:00 2001
From: PabstMirror
Date: Fri, 29 May 2015 15:37:53 -0500
Subject: [PATCH 11/63] NightVision adjustment - use CSE's gamma
---
addons/nightvision/functions/fnc_changeNVGBrightness.sqf | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf
index e1894aba00..29c6b976cf 100644
--- a/addons/nightvision/functions/fnc_changeNVGBrightness.sqf
+++ b/addons/nightvision/functions/fnc_changeNVGBrightness.sqf
@@ -22,12 +22,12 @@ PARAMS_2(_player,_changeInBrightness);
_brightness = _player getVariable [QGVAR(NVGBrightness), 0];
-_brightness = ((round (10 * _brightness + _changeInBrightness) / 10) min 1) max -1;
+_brightness = ((round (10 * _brightness + _changeInBrightness) / 10) min 0.5) max -0.5;
_player setVariable [QGVAR(NVGBrightness), _brightness, false];
-GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, 1, _brightness / 4, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]];
+GVAR(ppEffectNVGBrightness) ppEffectAdjust [1, (_brightness + 1), 0, [0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 0, 1]];
GVAR(ppEffectNVGBrightness) ppEffectCommit 0;
-[format [(localize "STR_ACE_NightVision_NVGBrightness"), (_brightness * 100)]] call EFUNC(common,displayTextStructured);
+[format [(localize "STR_ACE_NightVision_NVGBrightness"), (_brightness * 10)]] call EFUNC(common,displayTextStructured);
playSound "ACE_Sound_Click";
From 333cb80171940d878143e1378a4b1d3dbc42aa5d Mon Sep 17 00:00:00 2001
From: esteldunedain
Date: Sat, 30 May 2015 01:18:23 -0300
Subject: [PATCH 12/63] Delay initialization of ACE_Modules until settings are
properly setup
---
addons/common/XEH_postInit.sqf | 3 ++
addons/modules/XEH_postInit.sqf | 72 +++++++++++++++++----------------
2 files changed, 40 insertions(+), 35 deletions(-)
diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index 07ffe970cb..98702cc554 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -264,6 +264,9 @@ GVAR(commonPostInited) = true;
diag_log text format["[ACE] Settings received from server"];
+ // Event so that ACE_Modules have their settings loaded:
+ ["InitSettingsFromModules", []] call FUNC(localEvent);
+
// Load user settings from profile
if (hasInterface) then {
call FUNC(loadSettingsFromProfile);
diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf
index b6aecf5f90..2e115d020b 100644
--- a/addons/modules/XEH_postInit.sqf
+++ b/addons/modules/XEH_postInit.sqf
@@ -1,44 +1,46 @@
#include "script_component.hpp"
-// TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it.
-// We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution.
-{
- [_x] call {
- private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"];
- _logic = _this select 0;
- _logicType = typeof _logic;
- _logic hideobject true;
+["InitSettingsFromModules", {
+ // TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it.
+ // We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution.
+ {
+ [_x] call {
+ private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"];
+ _logic = _this select 0;
+ _logicType = typeof _logic;
+ _logic hideobject true;
- if (_logic getvariable [QGVAR(initalized), false]) exitwith {};
- _config = (configFile >> "CfgVehicles" >> _logicType);
- if !(isClass _config) exitwith {};
+ if (_logic getvariable [QGVAR(initalized), false]) exitwith {};
+ _config = (configFile >> "CfgVehicles" >> _logicType);
+ if !(isClass _config) exitwith {};
- // isGlobal = 1;
- _isGlobal = getNumber (_config >> "isGlobal") > 0;
- _isDisposable = getNumber (_config >> "isDisposable") > 0;
- _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1;
- _function = getText (_config >> "function");
- if (isnil _function) then {
- _function = compile _function;
- } else {
- _function = missionNamespace getvariable _function;
- };
+ // isGlobal = 1;
+ _isGlobal = getNumber (_config >> "isGlobal") > 0;
+ _isDisposable = getNumber (_config >> "isDisposable") > 0;
+ _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1;
+ _function = getText (_config >> "function");
+ if (isnil _function) then {
+ _function = compile _function;
+ } else {
+ _function = missionNamespace getvariable _function;
+ };
- if (_isGlobal) then {
- [_logic, [], true] call _function;
- } else {
- if (isServer) then {
+ if (_isGlobal) then {
[_logic, [], true] call _function;
+ } else {
+ if (isServer) then {
+ [_logic, [], true] call _function;
+ };
+ };
+
+ if !(_isPersistent) then {
+ _logic setvariable [QGVAR(initalized), true];
+ };
+
+ if (_isDisposable) then {
+ deleteVehicle _logic;
};
};
-
- if !(_isPersistent) then {
- _logic setvariable [QGVAR(initalized), true];
- };
-
- if (_isDisposable) then {
- deleteVehicle _logic;
- };
- };
-}foreach GVAR(moduleInitCollection);
+ }foreach GVAR(moduleInitCollection);
+}] call FUNC(addEventhandler);
From 9d29aa210725482ec1d136f4690b7294d1e275be Mon Sep 17 00:00:00 2001
From: esteldunedain
Date: Sat, 30 May 2015 01:37:41 -0300
Subject: [PATCH 13/63] - Change all modules on ACE using settings to type
ACE_Module, so we can guarantee that they wait for settings before initing. -
Make ace_common require ace_modules, so all ACE pbos are guaranteed to have
it
---
addons/common/CfgVehicles.hpp | 13 +++++--------
addons/common/config.cpp | 2 +-
addons/explosives/CfgModule.hpp | 7 ++-----
addons/hearing/CfgVehicles.hpp | 4 ++--
addons/interaction/CfgVehicles.hpp | 4 ++--
addons/map/CfgVehicles.hpp | 6 ++++--
addons/microdagr/CfgVehicles.hpp | 10 +++-------
addons/mk6mortar/CfgVehicles.hpp | 9 +++------
addons/nametags/CfgVehicles.hpp | 9 +++------
addons/respawn/CfgVehicles.hpp | 17 +++++++----------
addons/switchunits/CfgVehicles.hpp | 4 ++--
addons/vehiclelock/CfgVehicles.hpp | 13 +++++--------
12 files changed, 39 insertions(+), 59 deletions(-)
diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp
index 1adf622494..01e9bc7431 100644
--- a/addons/common/CfgVehicles.hpp
+++ b/addons/common/CfgVehicles.hpp
@@ -25,11 +25,8 @@ class CfgVehicles {
// += needs a non inherited entry in that class, otherwise it simply overwrites
//#include
- class Logic;
- class Module_F: Logic {
- class ModuleDescription {};
- };
- class ACE_ModuleCheckPBOs: Module_F {
+ class ACE_Module;
+ class ACE_ModuleCheckPBOs: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_Common_CheckPBO_DisplayName";
@@ -72,12 +69,12 @@ class CfgVehicles {
};
};
};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_Common_CheckPBO_Description";
};
};
- class ACE_ModuleLSDVehicles: Module_F {
+ class ACE_ModuleLSDVehicles: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_Common_LSDVehicles_DisplayName";
@@ -87,7 +84,7 @@ class CfgVehicles {
isGlobal = 1;
class Arguments {
};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_Common_LSDVehicles_Description";
sync[] = {"AnyVehicle"};
};
diff --git a/addons/common/config.cpp b/addons/common/config.cpp
index 3f1e5a6308..dd13d10ec0 100644
--- a/addons/common/config.cpp
+++ b/addons/common/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
units[] = {"ACE_Box_Misc", "ACE_bananaItem"};
weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_main"};
+ requiredAddons[] = {"ace_main","ace_modules"};
author[] = {"KoffeinFlummi"};
authorUrl = "https://github.com/KoffeinFlummi/";
VERSION_CONFIG;
diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp
index 52f70ea3af..a091d927ac 100644
--- a/addons/explosives/CfgModule.hpp
+++ b/addons/explosives/CfgModule.hpp
@@ -1,8 +1,5 @@
-class Logic;
-class Module_F: Logic {
- class ModuleDescription {};
-};
-class ACE_ModuleExplosive: Module_F {
+class ACE_Module;
+class ACE_ModuleExplosive: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_Explosive_Module_DisplayName";
diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp
index 16bb47014a..eaa765d814 100644
--- a/addons/hearing/CfgVehicles.hpp
+++ b/addons/hearing/CfgVehicles.hpp
@@ -94,8 +94,8 @@ class CfgVehicles {
};
- class Module_F;
- class ACE_ModuleHearing: Module_F {
+ class ACE_Module;
+ class ACE_ModuleHearing: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_Hearing_Module_DisplayName";
diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp
index 804aba1100..0f07accdee 100644
--- a/addons/interaction/CfgVehicles.hpp
+++ b/addons/interaction/CfgVehicles.hpp
@@ -1,7 +1,7 @@
class CfgVehicles {
- class Module_F;
- class ACE_ModuleInteraction: Module_F {
+ class ACE_Module;
+ class ACE_ModuleInteraction: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_InteractionSystem_Module_DisplayName";
diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp
index a5194e015e..43db54628b 100644
--- a/addons/map/CfgVehicles.hpp
+++ b/addons/map/CfgVehicles.hpp
@@ -1,6 +1,7 @@
class CfgVehicles {
- class Module_F;
- class ACE_ModuleMap: Module_F {
+
+ class ACE_Module;
+ class ACE_ModuleMap: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_Map_Module_DisplayName";
@@ -39,6 +40,7 @@ class CfgVehicles {
};
};
+ class Module_F;
class ACE_ModuleBlueForceTracking: Module_F {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp
index 949860742d..bd3164ac72 100644
--- a/addons/microdagr/CfgVehicles.hpp
+++ b/addons/microdagr/CfgVehicles.hpp
@@ -36,12 +36,8 @@ class CfgVehicles {
};
};
- class Logic;
- class Module_F: Logic {
- class ArgumentsBaseUnits {};
- class ModuleDescription {};
- };
- class GVAR(dagrModule): Module_F {
+ class ACE_Module;
+ class GVAR(dagrModule): ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_Dagr_Module_DisplayName";
@@ -62,7 +58,7 @@ class CfgVehicles {
};
};
};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_Dagr_Module_Description";
};
};
diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp
index e4a9d0f2a5..5708f3c670 100644
--- a/addons/mk6mortar/CfgVehicles.hpp
+++ b/addons/mk6mortar/CfgVehicles.hpp
@@ -43,11 +43,8 @@ class CfgVehicles {
};
};
- class Logic;
- class Module_F: Logic {
- class ModuleDescription {};
- };
- class GVAR(module): Module_F {
+ class ACE_Module;
+ class GVAR(module): ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_mk6mortar_Module_DisplayName";
@@ -76,7 +73,7 @@ class CfgVehicles {
defaultValue = 1;
};
};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_mk6mortar_Module_Description";
};
};
diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp
index fabd3b09cb..50439218aa 100644
--- a/addons/nametags/CfgVehicles.hpp
+++ b/addons/nametags/CfgVehicles.hpp
@@ -1,9 +1,6 @@
class CfgVehicles {
- class Logic;
- class Module_F: Logic {
- class ModuleDescription {};
- };
- class ACE_ModuleNameTags : Module_F {
+ class ACE_Module;
+ class ACE_ModuleNameTags: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_NameTags_Module_DisplayName";
@@ -65,7 +62,7 @@ class CfgVehicles {
defaultValue = 0;
};
};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_NameTags_Module_Description";
};
};
diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp
index e90f4ba08e..6fd60e6321 100644
--- a/addons/respawn/CfgVehicles.hpp
+++ b/addons/respawn/CfgVehicles.hpp
@@ -1,9 +1,6 @@
class CfgVehicles {
- class Logic;
- class Module_F: Logic {
- class ModuleDescription {};
- };
- class ACE_ModuleRespawn: Module_F {
+ class ACE_Module;
+ class ACE_ModuleRespawn: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_Respawn_Module_DisplayName";
@@ -27,12 +24,12 @@ class CfgVehicles {
defaultValue = 1;
};
};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_Respawn_Module_Description";
};
};
- class ACE_ModuleFriendlyFire: Module_F {
+ class ACE_ModuleFriendlyFire: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_FriendlyFire_Module_DisplayName";
@@ -42,12 +39,12 @@ class CfgVehicles {
icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa));
class Arguments {};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_FriendlyFire_Module_Description";
};
};
- class ACE_ModuleRallypoint: Module_F {
+ class ACE_ModuleRallypoint: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_Rallypoint_Module_DisplayName";
@@ -57,7 +54,7 @@ class CfgVehicles {
icon = QUOTE(PATHTOF(UI\Icon_Module_Rallypoint_ca.paa));
class Arguments {};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_Rallypoint_Module_Description";
};
};
diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp
index 0f76c78568..d2548448b1 100644
--- a/addons/switchunits/CfgVehicles.hpp
+++ b/addons/switchunits/CfgVehicles.hpp
@@ -1,6 +1,6 @@
class CfgVehicles {
- class Module_F;
- class ACE_ModuleSwitchUnits: Module_F {
+ class ACE_Module;
+ class ACE_ModuleSwitchUnits: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_SwitchUnits_Module_DisplayName";
diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp
index 60cb67d4c4..1230fd5221 100644
--- a/addons/vehiclelock/CfgVehicles.hpp
+++ b/addons/vehiclelock/CfgVehicles.hpp
@@ -62,11 +62,8 @@ class CfgVehicles {
MACRO_LOCK_ACTIONS
};
- class Logic;
- class Module_F: Logic {
- class ModuleDescription {};
- };
- class ACE_VehicleLock_ModuleSetup: Module_F {
+ class ACE_Module;
+ class ACE_VehicleLock_ModuleSetup: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_VehicleLock_Module_DisplayName";
@@ -99,12 +96,12 @@ class CfgVehicles {
defaultValue = "10";
};
};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_VehicleLock_Module_Description";
};
};
- class ACE_VehicleLock_ModuleSyncedAssign: Module_F {
+ class ACE_VehicleLock_ModuleSyncedAssign: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
displayName = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_DisplayName";
@@ -114,7 +111,7 @@ class CfgVehicles {
icon = QUOTE(PATHTOF(UI\Icon_Module_VehicleKey_ca.paa));
functionPriority = 0;
class Arguments {};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_Description";
sync[] = {"AnyPlayer", "AnyVehicle"};
};
From 84d940e69d91627ca9c51ed36b7e94d328b038d2 Mon Sep 17 00:00:00 2001
From: PabstMirror
Date: Sat, 30 May 2015 00:31:07 -0500
Subject: [PATCH 14/63] Fix circular dependency - ModuleDescription
---
addons/advanced_ballistics/config.cpp | 2 +-
addons/common/CfgVehicles.hpp | 11 +++++++----
addons/explosives/CfgModule.hpp | 2 +-
addons/medical/config.cpp | 2 +-
addons/modules/config.cpp | 2 +-
addons/vehiclelock/CfgVehicles.hpp | 8 ++++++--
addons/weather/config.cpp | 2 +-
addons/zeus/config.cpp | 2 +-
8 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp
index 1a2187783b..3f974b18df 100644
--- a/addons/advanced_ballistics/config.cpp
+++ b/addons/advanced_ballistics/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_ballistics", "ace_weather", "ace_modules"};
+ requiredAddons[] = {"ace_ballistics", "ace_weather"};
author[] = {"Ruthberg"};
authorUrl = "https://github.com/ulteq";
VERSION_CONFIG;
diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp
index 01e9bc7431..87d131934b 100644
--- a/addons/common/CfgVehicles.hpp
+++ b/addons/common/CfgVehicles.hpp
@@ -24,8 +24,11 @@ class CfgVehicles {
// += needs a non inherited entry in that class, otherwise it simply overwrites
//#include
-
- class ACE_Module;
+ class Logic;
+ class Module_F: Logic {
+ class ModuleDescription;
+ };
+ class ACE_Module: Module_F {};
class ACE_ModuleCheckPBOs: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
@@ -69,7 +72,7 @@ class CfgVehicles {
};
};
};
- class ModuleDescription {
+ class ModuleDescription: ModuleDescription {
description = "$STR_ACE_Common_CheckPBO_Description";
};
};
@@ -84,7 +87,7 @@ class CfgVehicles {
isGlobal = 1;
class Arguments {
};
- class ModuleDescription {
+ class ModuleDescription: ModuleDescription {
description = "$STR_ACE_Common_LSDVehicles_Description";
sync[] = {"AnyVehicle"};
};
diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp
index a091d927ac..2bb8e18f96 100644
--- a/addons/explosives/CfgModule.hpp
+++ b/addons/explosives/CfgModule.hpp
@@ -21,7 +21,7 @@ class ACE_ModuleExplosive: ACE_Module {
defaultValue = 1;
};
};
- class ModuleDescription: ModuleDescription {
+ class ModuleDescription {
description = "$STR_ACE_Explosive_Module_Description";
};
};
\ No newline at end of file
diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp
index f86f5d166e..463ed95406 100644
--- a/addons/medical/config.cpp
+++ b/addons/medical/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
units[] = {"ACE_medicalSupplyCrate", "ACE_medicalSupplyCrate_advanced", "ACE_fieldDressingItem", "ACE_packingBandageItem", "ACE_elasticBandageItem", "ACE_tourniquetItem", "ACE_morphineItem", "ACE_atropineItem", "ACE_epinephrineItem", "ACE_plasmaIVItem", "ACE_bloodIVItem", "ACE_salineIVItem", "ACE_quikclotItem", "ACE_personalAidKitItem", "ACE_surgicalKitItem", "ACE_bodyBagItem", "ACE_bodyBagObject"};
weapons[] = {"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_tourniquet", "ACE_morphine", "ACE_atropine", "ACE_epinephrine", "ACE_plasmaIV", "ACE_plasmaIV_500", "ACE_plasmaIV_250", "ACE_bloodIV", "ACE_bloodIV_500", "ACE_bloodIV_250", "ACE_salineIV", "ACE_salineIV_500", "ACE_salineIV_250", "ACE_quikclot", "ACE_personalAidKit", "ACE_surgicalKit", "ACE_bodyBag"};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_interaction","ace_modules", "ace_apl"};
+ requiredAddons[] = {"ace_interaction", "ace_apl"};
author[] = {"Glowbal", "KoffeinFlummi"};
authorUrl = "";
VERSION_CONFIG;
diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp
index c5880e7bb1..ee96c5251f 100644
--- a/addons/modules/config.cpp
+++ b/addons/modules/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_common"};
+ requiredAddons[] = {};
author[] = {"Glowbal"};
authorUrl = "";
VERSION_CONFIG;
diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp
index 1230fd5221..6e07148262 100644
--- a/addons/vehiclelock/CfgVehicles.hpp
+++ b/addons/vehiclelock/CfgVehicles.hpp
@@ -62,7 +62,11 @@ class CfgVehicles {
MACRO_LOCK_ACTIONS
};
- class ACE_Module;
+ class Logic;
+ class Module_F: Logic {
+ class ModuleDescription;
+ };
+ class ACE_Module: Module_F {};
class ACE_VehicleLock_ModuleSetup: ACE_Module {
author = "$STR_ACE_Common_ACETeam";
category = "ACE";
@@ -111,7 +115,7 @@ class CfgVehicles {
icon = QUOTE(PATHTOF(UI\Icon_Module_VehicleKey_ca.paa));
functionPriority = 0;
class Arguments {};
- class ModuleDescription {
+ class ModuleDescription: ModuleDescription {
description = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_Description";
sync[] = {"AnyPlayer", "AnyVehicle"};
};
diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp
index 18059fe9e8..50e2f8ace0 100644
--- a/addons/weather/config.cpp
+++ b/addons/weather/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_common", "ace_modules"};
+ requiredAddons[] = {"ace_common"};
author[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"};
VERSION_CONFIG;
};
diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp
index 4bdc1cd5e1..5ea4212dbb 100644
--- a/addons/zeus/config.cpp
+++ b/addons/zeus/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
units[] = {};
weapons[] = {};
requiredVersion = REQUIRED_VERSION;
- requiredAddons[] = {"ace_common","ace_modules"};
+ requiredAddons[] = {"ace_common"};
author[] = {"SilentSpike"};
authorUrl = "https://github.com/SilentSpike";
VERSION_CONFIG;
From 5746128a0fd304c9bb92892b3531286dfd8084e8 Mon Sep 17 00:00:00 2001
From: ulteq
Date: Sat, 30 May 2015 20:06:55 +0200
Subject: [PATCH 15/63] Further improved error handling when AB is enabled with
incomplete configs: * Calculates correct solutions when parts of the ammo
config are missing * Calculates correct solutions when parts of the weapon
config are missing * Performance improvement when AB is enabled
---
.../functions/fnc_calculateSolution.sqf | 20 ++++--
.../functions/fnc_updateRangeCard.sqf | 62 ++++++++++---------
2 files changed, 49 insertions(+), 33 deletions(-)
diff --git a/addons/rangecard/functions/fnc_calculateSolution.sqf b/addons/rangecard/functions/fnc_calculateSolution.sqf
index d8f0fe0cac..ea86d9986e 100644
--- a/addons/rangecard/functions/fnc_calculateSolution.sqf
+++ b/addons/rangecard/functions/fnc_calculateSolution.sqf
@@ -24,7 +24,9 @@
* 18: Stability factor
* 19: Twist Direction
* 20: Latitude
- * 21: Range Card Slot
+ * 21: Direction of Fire
+ * 22: Range Card Slot
+ * 23: Use advanced ballistics config?
*
* Return Value:
* 0: Elevation (MOA)
@@ -44,7 +46,7 @@
*/
#include "script_component.hpp"
-private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot"];
+private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire", "_rangeCardSlot", "_useABConfig"];
_scopeBaseAngle = _this select 0;
_bulletMass = _this select 1;
_boreHeight = _this select 2;
@@ -69,6 +71,7 @@ _twistDirection = _this select 19;
_latitude = _this select 20;
_directionOfFire = _this select 21;
_rangeCardSlot = _this select 22;
+_useABConfig = _this select 23;
if (_storeRangeCardData) then {
GVAR(rangeCardDataMVs) set [_rangeCardSlot, format[" %1", round(_muzzleVelocity)]];
@@ -109,10 +112,17 @@ private ["_wind1", "_wind2", "_windDrift"];
_wind1 = [cos(270 - _windDirection * 30) * _windSpeed1, sin(270 - _windDirection * 30) * _windSpeed1, 0];
_wind2 = [cos(270 - _windDirection * 30) * _windSpeed2, sin(270 - _windDirection * 30) * _windSpeed2, 0];
_windDrift = 0;
-if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
+if (_useABConfig) then {
_bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection);
};
+private ["_airFrictionCoef", "_airDensity"];
+_airFrictionCoef = 1;
+if (!_useABConfig && (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) then {
+ _airDensity = [_temperature, _barometricPressure, _relativeHumidity] call EFUNC(weather,calculateAirDensity);
+ _airFrictionCoef = _airDensity / 1.22498;
+};
+
private ["_speedTotal", "_stepsTotal", "_speedAverage"];
_speedTotal = 0;
_stepsTotal = 0;
@@ -139,7 +149,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do {
_trueVelocity = _bulletVelocity vectorDiff _wind1;
_trueSpeed = vectorMagnitude _trueVelocity;
- if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
+ if (_useABConfig) then {
_drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
} else {
@@ -147,7 +157,7 @@ while {_TOF < 6 && (_bulletPos select 1) < _targetRange} do {
};
_bulletAccel = (vectorNormalized _trueVelocity) vectorMultiply (-1 * _drag);
} else {
- _bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction);
+ _bulletAccel = _trueVelocity vectorMultiply (_trueSpeed * _airFriction * _airFrictionCoef);
};
_bulletAccel = _bulletAccel vectorAdd _gravity;
diff --git a/addons/rangecard/functions/fnc_updateRangeCard.sqf b/addons/rangecard/functions/fnc_updateRangeCard.sqf
index d58e7ff6bb..4c3a1626ee 100644
--- a/addons/rangecard/functions/fnc_updateRangeCard.sqf
+++ b/addons/rangecard/functions/fnc_updateRangeCard.sqf
@@ -20,7 +20,8 @@
disableSerialization;
#define __dsp (uiNamespace getVariable "RangleCard_Display")
-private ["_airFriction", "_ammoConfig", "_atmosphereModel", "_barometricPressure", "_barrelLength", "_barrelTwist", "_bc", "_boreHeight", "_cacheEntry", "_column", "_control", "_dragModel", "_i", "_muzzleVelocity", "_mv", "_mvShift", "_offset", "_relativeHumidity", "_result", "_row", "_scopeBaseAngle", "_weaponConfig", "_zeroRange", "_initSpeed", "_initSpeedCoef"];
+private ["_airFriction", "_ammoConfig", "_atmosphereModel", "_barometricPressure", "_barrelLength", "_barrelTwist", "_bc", "_bulletMass", "_boreHeight", "_cacheEntry", "_column", "_control", "_dragModel", "_i", "_muzzleVelocity", "_mv", "_mvShift", "_offset", "_relativeHumidity", "_result", "_row", "_scopeBaseAngle", "_weaponConfig", "_zeroRange", "_initSpeed", "_initSpeedCoef", "_useABConfig"];
+_useABConfig = (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]);
PARAMS_3(_ammoClass,_magazineClass,_weaponClass);
@@ -80,14 +81,6 @@ lnbClear 770200;
lnbClear 770300;
lnbClear 770400;
-lnbAddRow [770100, ["4mps Wind(MRADs)", "1mps LEAD(MRADs)"]];
-if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
- lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]];
-
- lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]];
- lnbAddRow [770300, ["-15°C", " 10°C", " 35°C", "-15°C", " 10°C", " 35°C"]];
-};
-
GVAR(rangeCardDataElevation) = [[], [], [], [], [], [], [], [], []];
GVAR(rangeCardDataWindage) = [[], [], [], [], [], [], [], [], []];
GVAR(rangeCardDataLead) = [[], [], [], [], [], [], [], [], []];
@@ -105,7 +98,22 @@ _airFriction = _ammoConfig select 0;
_barrelTwist = _weaponConfig select 0;
_barrelLength = _weaponConfig select 2;
_muzzleVelocity = 0;
-if (_barrelLength > 0 && missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
+
+_bc = 0;
+if (count (_ammoConfig select 6) > 0) then {
+ _bc = (_ammoConfig select 6) select 0;
+};
+_dragModel = _ammoConfig select 5;
+_atmosphereModel = _ammoConfig select 8;
+_bulletMass = 5;
+_boreHeight = 3.81;
+_zeroRange = 100;
+
+if (_bc == 0) then {
+ _useABConfig = false;
+};
+
+if (_barrelLength > 0 && _useABConfig) then {
_muzzleVelocity = [_barrelLength, _ammoConfig select 10, _ammoConfig select 11, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift);
} else {
_initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "initSpeed");
@@ -119,7 +127,7 @@ if (_barrelLength > 0 && missionNamespace getVariable [QEGVAR(advanced_ballistic
_muzzleVelocity = _initSpeed;
};
-if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
+if (_useABConfig) then {
ctrlSetText [770000, format["%1'' - %2 gr (%3)", round((_ammoConfig select 1) * 39.3700787) / 1000, round((_ammoConfig select 3) * 15.4323584), _ammoClass]];
if (_barrelLength > 0 && _barrelTwist > 0) then {
ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(_barrelLength * 0.0393700787), round(_barrelTwist * 0.0393700787)]];
@@ -128,14 +136,16 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t
};
} else {
ctrlSetText [770000, getText (configFile >> "CfgMagazines" >> _magazineClass >> "displayNameShort")];
- ctrlSetText [770002, ""];
+ ctrlSetText [770002, getText (configFile >> "CfgWeapons" >> _weaponClass >> "displayName")];
};
-_bc = (_ammoConfig select 6) select 0;
-_dragModel = _ammoConfig select 5;
-_atmosphereModel = _ammoConfig select 8;
-_boreHeight = 3.81;
-_zeroRange = 100;
+lnbAddRow [770100, ["4mps Wind(MRADs)", "1mps LEAD(MRADs)"]];
+if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
+ lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]];
+
+ lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]];
+ lnbAddRow [770300, ["-15°C", " 10°C", " 35°C", "-15°C", " 10°C", " 35°C"]];
+};
_barometricPressure = 1013.25;
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
@@ -147,27 +157,23 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t
ctrlSetText [770001, format["Drop Tables for B.P.: %1mb; Corrected for MVV at Air/Ammo Temperatures -15-35 °C", round(_barometricPressure * 100) / 100]];
ctrlSetText [77004 , format["B.P.: %1mb", round(_barometricPressure * 100) / 100]];
} else {
- ctrlSetText [770001, getText (configFile >> "CfgWeapons" >> _weaponClass >> "displayName")];
+ ctrlSetText [770001, ""];
ctrlSetText [77004 , ""];
};
_cacheEntry = missionNamespace getVariable format[QGVAR(%1_%2_%3), _ammoClass, _weaponClass, missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]];
if (isNil {_cacheEntry}) then {
+ _result = [0, 0, _boreHeight, _airFriction, _muzzleVelocity, 15, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0, 0, _useABConfig] call FUNC(calculateSolution);
+ _scopeBaseAngle = (_result select 0) / 60;
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
{
_mvShift = [_ammoConfig select 9, _x] call EFUNC(advanced_ballistics,calculateAmmoTemperatureVelocityShift);
_mv = _muzzleVelocity + _mvShift;
- _result = [0, 0, _boreHeight, _airFriction, _mv, _x, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculateSolution);
- _scopeBaseAngle = (_result select 0) / 60;
-
- [_scopeBaseAngle,27,_boreHeight,_airFriction,_mv,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,_forEachIndex] call FUNC(calculateSolution);
+ [_scopeBaseAngle,_bulletMass,_boreHeight,_airFriction,_mv,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,_forEachIndex,_useABConfig] call FUNC(calculateSolution);
} forEach [-15, -5, 5, 10, 15, 20, 25, 30, 35];
- } else {
- _result = [0, 0, _boreHeight, _airFriction, _muzzleVelocity, _x, 1013.25, 0.5, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculateSolution);
- _scopeBaseAngle = (_result select 0) / 60;
-
- [_scopeBaseAngle,27,_boreHeight,_airFriction,_muzzleVelocity,_x,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,3] call FUNC(calculateSolution);
+ } else {
+ [_scopeBaseAngle,_bulletMass,_boreHeight,_airFriction,_muzzleVelocity,15,_barometricPressure,_relativeHumidity,1000,[4,0],3,0,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,true,1.5,1,46,23,3,_useABConfig] call FUNC(calculateSolution);
};
for "_i" from 0 to 9 do {
@@ -234,7 +240,7 @@ for "_column" from 0 to 8 do {
};
} forEach [0, 3, 8];
-if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
+if (_useABConfig) then {
ctrlSetText [770020, "For best results keep ammunition at ambient air temperature. Tables calculated for the above listed barrel"];
ctrlSetText [770021, "and load with optic mounted 1.5'' above line of bore."];
} else {
From 6f1c6ae8c1df4c2a8829b5468200c84e05418de1 Mon Sep 17 00:00:00 2001
From: ulteq
Date: Sat, 30 May 2015 20:33:32 +0200
Subject: [PATCH 16/63] Added missing ammo class
---
optionals/compat_cup/CfgAmmo.hpp | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp
index 58f61aedce..5c391f4f18 100644
--- a/optionals/compat_cup/CfgAmmo.hpp
+++ b/optionals/compat_cup/CfgAmmo.hpp
@@ -94,6 +94,19 @@ class CfgAmmo
ACE_muzzleVelocities[]={650, 716, 750};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
+ class B_762x39mm_KLT: BulletBase
+ {
+ ACE_caliber=7.823;
+ ACE_bulletLength=28.956;
+ ACE_bulletMass=7.5816;
+ ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+ ACE_ballisticCoefficients[]={0.275};
+ ACE_velocityBoundaries[]={};
+ ACE_standardAtmosphere="ICAO";
+ ACE_dragModel=1;
+ ACE_muzzleVelocities[]={650, 716, 750};
+ ACE_barrelLengths[]={254.0, 414.02, 508.0};
+ };
class CUP_B_9x18_Ball: BulletBase
{
ACE_caliber=9.271;
From 872501dad2fd14e7511c7a1142809cd4f9ee1a9b Mon Sep 17 00:00:00 2001
From: ulteq
Date: Sat, 30 May 2015 21:20:17 +0200
Subject: [PATCH 17/63] Removed newline brackets
---
optionals/compat_cup/CfgAmmo.hpp | 99 +++++++++++---------------------
1 file changed, 33 insertions(+), 66 deletions(-)
diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp
index 5c391f4f18..7c37be48f8 100644
--- a/optionals/compat_cup/CfgAmmo.hpp
+++ b/optionals/compat_cup/CfgAmmo.hpp
@@ -3,8 +3,7 @@ class CfgAmmo
class BulletBase;
class B_762x51_Ball;
class B_127x99_Ball;
- class CUP_B_545x39_Ball: BulletBase
- {
+ class CUP_B_545x39_Ball: BulletBase {
ACE_caliber=5.588;
ACE_bulletLength=21.59;
ACE_bulletMass=3.42792;
@@ -16,8 +15,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={780, 880, 920};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
- class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball
- {
+ class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball {
ACE_caliber=5.588;
ACE_bulletLength=21.59;
ACE_bulletMass=3.22704;
@@ -29,8 +27,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
- class CUP_B_545x39_Ball_Tracer_Red: BulletBase
- {
+ class CUP_B_545x39_Ball_Tracer_Red: BulletBase {
ACE_caliber=5.588;
ACE_bulletLength=21.59;
ACE_bulletMass=3.22704;
@@ -42,8 +39,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
- class CUP_B_545x39_Ball_Tracer_White: BulletBase
- {
+ class CUP_B_545x39_Ball_Tracer_White: BulletBase {
ACE_caliber=5.588;
ACE_bulletLength=21.59;
ACE_bulletMass=3.22704;
@@ -55,8 +51,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
- class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase
- {
+ class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase {
ACE_caliber=5.588;
ACE_bulletLength=21.59;
ACE_bulletMass=3.22704;
@@ -68,8 +63,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
- class CUP_B_762x39_Ball: BulletBase
- {
+ class CUP_B_762x39_Ball: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=7.9704;
@@ -81,8 +75,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={650, 716, 750};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
- class CUP_B_762x39_Ball_Tracer_Green: BulletBase
- {
+ class CUP_B_762x39_Ball_Tracer_Green: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=7.5816;
@@ -94,8 +87,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={650, 716, 750};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
- class B_762x39mm_KLT: BulletBase
- {
+ class B_762x39mm_KLT: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=7.5816;
@@ -107,8 +99,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={650, 716, 750};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
- class CUP_B_9x18_Ball: BulletBase
- {
+ class CUP_B_9x18_Ball: BulletBase {
ACE_caliber=9.271;
ACE_bulletLength=15.494;
ACE_bulletMass=6.00048;
@@ -120,8 +111,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={298, 330, 350};
ACE_barrelLengths[]={96.52, 127.0, 228.6};
};
- class CUP_B_9x18_Ball_Tracer_Green: BulletBase
- {
+ class CUP_B_9x18_Ball_Tracer_Green: BulletBase {
ACE_caliber=9.271;
ACE_bulletLength=15.494;
ACE_bulletMass=6.00048;
@@ -133,8 +123,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={298, 330, 350};
ACE_barrelLengths[]={96.52, 127.0, 228.6};
};
- class CUP_B_9x18_Ball_Tracer_Red: BulletBase
- {
+ class CUP_B_9x18_Ball_Tracer_Red: BulletBase {
ACE_caliber=9.271;
ACE_bulletLength=15.494;
ACE_bulletMass=6.00048;
@@ -146,8 +135,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={298, 330, 350};
ACE_barrelLengths[]={96.52, 127.0, 228.6};
};
- class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase
- {
+ class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase {
ACE_caliber=9.271;
ACE_bulletLength=15.494;
ACE_bulletMass=6.00048;
@@ -159,8 +147,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={298, 330, 350};
ACE_barrelLengths[]={96.52, 127.0, 228.6};
};
- class CUP_B_9x18_Ball_White_Tracer: BulletBase
- {
+ class CUP_B_9x18_Ball_White_Tracer: BulletBase {
ACE_caliber=9.271;
ACE_bulletLength=15.494;
ACE_bulletMass=6.00048;
@@ -172,8 +159,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={298, 330, 350};
ACE_barrelLengths[]={96.52, 127.0, 228.6};
};
- class CUP_B_9x19_Ball: BulletBase
- {
+ class CUP_B_9x19_Ball: BulletBase {
ACE_caliber=9.017;
ACE_bulletLength=15.494;
ACE_bulletMass=8.0352;
@@ -185,8 +171,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={340, 370, 400};
ACE_barrelLengths[]={101.6, 127.0, 228.6};
};
- class CUP_B_762x51_noTracer: B_762x51_Ball
- {
+ class CUP_B_762x51_noTracer: B_762x51_Ball {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=9.4608;
@@ -198,8 +183,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
- class CUP_B_303_Ball: BulletBase
- {
+ class CUP_B_303_Ball: BulletBase {
ACE_caliber=7.899;
ACE_bulletLength=31.166;
ACE_bulletMass=11.2752;
@@ -211,8 +195,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={748, 761, 765};
ACE_barrelLengths[]={508.0, 609.6, 660.4};
};
- class CUP_B_127x107_Ball_Green_Tracer: BulletBase
- {
+ class CUP_B_127x107_Ball_Green_Tracer: BulletBase {
ACE_caliber=12.979;
ACE_bulletLength=64.008;
ACE_bulletMass=48.276;
@@ -224,8 +207,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={820};
ACE_barrelLengths[]={728.98};
};
- class CUP_B_127x108_Ball_Green_Tracer: BulletBase
- {
+ class CUP_B_127x108_Ball_Green_Tracer: BulletBase {
ACE_caliber=12.979;
ACE_bulletLength=64.008;
ACE_bulletMass=48.276;
@@ -237,8 +219,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={820};
ACE_barrelLengths[]={728.98};
};
- class CUP_B_762x54_Ball_White_Tracer: BulletBase
- {
+ class CUP_B_762x54_Ball_White_Tracer: BulletBase {
ACE_caliber=7.925;
ACE_bulletLength=28.956;
ACE_bulletMass=9.6552;
@@ -250,8 +231,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={680, 750, 798, 800};
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
};
- class CUP_B_762x54_Ball_Red_Tracer: BulletBase
- {
+ class CUP_B_762x54_Ball_Red_Tracer: BulletBase {
ACE_caliber=7.925;
ACE_bulletLength=28.956;
ACE_bulletMass=9.6552;
@@ -263,8 +243,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={680, 750, 798, 800};
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
};
- class CUP_B_762x54_Ball_Green_Tracer: BulletBase
- {
+ class CUP_B_762x54_Ball_Green_Tracer: BulletBase {
ACE_caliber=7.925;
ACE_bulletLength=28.956;
ACE_bulletMass=9.6552;
@@ -276,8 +255,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={680, 750, 798, 800};
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
};
- class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase
- {
+ class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase {
ACE_caliber=7.925;
ACE_bulletLength=28.956;
ACE_bulletMass=9.6552;
@@ -289,8 +267,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={680, 750, 798, 800};
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
};
- class CUP_B_9x39_SP5: BulletBase
- {
+ class CUP_B_9x39_SP5: BulletBase {
ACE_caliber=9.246;
ACE_bulletLength=31.496;
ACE_bulletMass=16.2;
@@ -302,8 +279,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={280, 300, 320};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
};
- class CUP_B_762x51_Tracer_Green: BulletBase
- {
+ class CUP_B_762x51_Tracer_Green: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=9.4608;
@@ -315,8 +291,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
- class CUP_B_762x51_Tracer_Red: BulletBase
- {
+ class CUP_B_762x51_Tracer_Red: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=9.4608;
@@ -328,8 +303,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
- class CUP_B_762x51_Tracer_Yellow: BulletBase
- {
+ class CUP_B_762x51_Tracer_Yellow: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=9.4608;
@@ -341,8 +315,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
- class CUP_B_762x51_Tracer_White: BulletBase
- {
+ class CUP_B_762x51_Tracer_White: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=9.4608;
@@ -354,8 +327,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
- class B_127x107_Ball: BulletBase
- {
+ class B_127x107_Ball: BulletBase {
ACE_caliber=12.979;
ACE_bulletLength=64.008;
ACE_bulletMass=48.276;
@@ -367,8 +339,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={820};
ACE_barrelLengths[]={728.98};
};
- class CUP_B_9x18_SD: BulletBase
- {
+ class CUP_B_9x18_SD: BulletBase {
ACE_caliber=9.271;
ACE_bulletLength=15.494;
ACE_bulletMass=6.00048;
@@ -380,8 +351,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={298, 330, 340};
ACE_barrelLengths[]={96.52, 127.0, 228.6};
};
- class CUP_B_765x17_Ball: BulletBase
- {
+ class CUP_B_765x17_Ball: BulletBase {
ACE_caliber=7.938;
ACE_bulletLength=15.494;
ACE_bulletMass=4.212;
@@ -393,8 +363,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={282, 300, 320};
ACE_barrelLengths[]={101.6, 127.0, 228.6};
};
- class CUP_B_145x115_AP_Green_Tracer: BulletBase
- {
+ class CUP_B_145x115_AP_Green_Tracer: BulletBase {
ACE_caliber=14.884;
ACE_bulletLength=50.8;
ACE_bulletMass=65.448;
@@ -406,8 +375,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={1000};
ACE_barrelLengths[]={1346.2};
};
- class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball
- {
+ class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball {
ACE_caliber=12.954;
ACE_bulletLength=58.674;
ACE_bulletMass=41.9256;
@@ -419,8 +387,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={853};
ACE_barrelLengths[]={736.6};
};
- class CUP_B_86x70_Ball_noTracer: BulletBase
- {
+ class CUP_B_86x70_Ball_noTracer: BulletBase {
ACE_caliber=8.585;
ACE_bulletLength=43.18;
ACE_bulletMass=19.44;
From 9936af3e4c3beaba2a5f4d037a78c0bcc6c08b0c Mon Sep 17 00:00:00 2001
From: ulteq
Date: Sat, 30 May 2015 21:20:40 +0200
Subject: [PATCH 18/63] Added config entries for all cup weapon classes
---
optionals/compat_cup/CfgWeapons.hpp | 335 ++++++++++++++++++++++++++++
optionals/compat_cup/config.cpp | 1 +
2 files changed, 336 insertions(+)
create mode 100644 optionals/compat_cup/CfgWeapons.hpp
diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp
new file mode 100644
index 0000000000..a55e721e90
--- /dev/null
+++ b/optionals/compat_cup/CfgWeapons.hpp
@@ -0,0 +1,335 @@
+class CfgWeapons
+{
+ class Pistol_Base_F;
+ class Rifle_Base_F;
+ class Rifle_Long_Base_F;
+ class CUP_hgun_Colt1911 : Pistol_Base_F {
+ ACE_barrelTwist=406.4;
+ ACE_barrelLength=127.0;
+ };
+ class CUP_sgun_AA12 : Rifle_Base_F {
+ ACE_barrelTwist=0.0;
+ ACE_twistDirection=0;
+ ACE_barrelLength=457.2;
+ };
+ class CUP_arifle_AK_Base : Rifle_Base_F {
+ ACE_barrelTwist=240.03;
+ ACE_barrelLength=414.02;
+ };
+ class CUP_arifle_AK107_Base : CUP_arifle_AK_Base {
+ ACE_barrelTwist=199.898;
+ ACE_barrelLength=414.02;
+ };
+ class CUP_arifle_AKS_Base : CUP_arifle_AK_Base {
+ ACE_barrelTwist=199.898;
+ ACE_barrelLength=414.02;
+ };
+ class CUP_arifle_AKS74U : CUP_arifle_AK_Base {
+ ACE_barrelTwist=160.02;
+ ACE_barrelLength=210.82;
+ };
+ class CUP_arifle_AK74;
+ class CUP_arifle_RPK74 : CUP_arifle_AK74 {
+ ACE_barrelTwist=195.072;
+ ACE_barrelLength=589.28;
+ };
+ class CUP_srifle_AS50 : Rifle_Long_Base_F {
+ ACE_barrelTwist=381.0;
+ ACE_barrelLength=736.6;
+ };
+ class CUP_srifle_AWM_Base : Rifle_Long_Base_F {
+ ACE_barrelTwist=279.4;
+ ACE_barrelLength=685.8;
+ };
+ class CUP_smg_bizon : Rifle_Base_F {
+ ACE_barrelTwist=240.03;
+ ACE_barrelLength=231.14;
+ };
+ class CUP_hgun_Compact : Pistol_Base_F {
+ ACE_barrelTwist=248.92;
+ ACE_barrelLength=94.996;
+ };
+ class CUP_srifle_CZ750 : Rifle_Long_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=660.4;
+ };
+ class CUP_arifle_CZ805_Base : Rifle_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=355.6;
+ };
+ class CUP_arifle_CZ805_A1 : CUP_arifle_CZ805_Base {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=355.6;
+ };
+ class CUP_arifle_CZ805_A2 : CUP_arifle_CZ805_Base {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=276.86;
+ };
+ class CUP_srifle_DMR : Rifle_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=558.8;
+ };
+ class CUP_hgun_Duty : Pistol_Base_F {
+ ACE_barrelTwist=248.92;
+ ACE_barrelLength=94.996;
+ };
+ class CUP_arifle_FNFAL : Rifle_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=533.4;
+ };
+ class CUP_arifle_G36_Base;
+ class CUP_arifle_G36A : CUP_arifle_G36_Base {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=480;
+ };
+ class CUP_arifle_G36K : CUP_arifle_G36A {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=318;
+ };
+ class CUP_arifle_G36C : Rifle_Base_F {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=228;
+ };
+ class CUP_arifle_MG36 : CUP_arifle_G36C {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=480;
+ };
+ class CUP_hgun_Glock17 : Pistol_Base_F {
+ ACE_barrelTwist=248.92;
+ ACE_barrelLength=114.046;
+ };
+ class CUP_srifle_CZ550 : Rifle_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=599.999;
+ };
+ class CUP_srifle_ksvk : Rifle_Base_F {
+ ACE_barrelTwist=457.2;
+ ACE_barrelLength=999.998;
+ };
+ class CUP_lmg_L7A2 : Rifle_Long_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=629.92;
+ };
+ class CUP_arifle_L85A2_Base : Rifle_Base_F {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=518.16;
+ };
+ class CUP_arifle_L86A2_Base: Rifle_Base_F {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=646;
+ };
+ class CUP_lmg_L110A1 : Rifle_Long_Base_F {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=347.98;
+ };
+ class CUP_srifle_LeeEnfield : Rifle_Base_F {
+ ACE_barrelTwist=254.0;
+ ACE_barrelLength=640.08;
+ };
+ class CUP_hgun_M9 : Pistol_Base_F {
+ ACE_barrelTwist=248.92;
+ ACE_barrelLength=124.46;
+ };
+ class CUP_srifle_M14 : Rifle_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=558.8;
+ };
+ class CUP_arifle_M16_Base : Rifle_Base_F {
+ ACE_barrelTwist=355.6;
+ ACE_barrelLength=508.0;
+ };
+ class CUP_arifle_M16A4_Base;
+ class CUP_arifle_M4_Base : CUP_arifle_M16A4_Base {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=368.3;
+ };
+ class CUP_arifle_M4A1;
+ class CUP_srifle_Mk12SPR : CUP_arifle_M4A1 {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=457.2;
+ };
+ class CUP_srifle_M24_des : Rifle_Base_F {
+ ACE_barrelTwist=285.75;
+ ACE_barrelLength=609.6;
+ };
+ class CUP_lmg_M60A4 : Rifle_Long_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=431.8;
+ };
+ class CUP_srifle_M107_Base : Rifle_Long_Base_F {
+ ACE_barrelTwist=381.0;
+ ACE_barrelLength=736.6;
+ };
+ class CUP_srifle_M110 : Rifle_Base_F {
+ ACE_barrelTwist=279.4;
+ ACE_barrelLength=508.0;
+ };
+ class CUP_lmg_M240 : Rifle_Long_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=629.92;
+ };
+ class CUP_lmg_M249_para : Rifle_Long_Base_F {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=414.02;
+ };
+ class CUP_lmg_M249 : Rifle_Long_Base_F {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=457.2;
+ };
+ class CUP_sgun_M1014 : Rifle_Base_F {
+ ACE_twistDirection=0;
+ ACE_barrelTwist=0.0;
+ ACE_barrelLength=469.9;
+ };
+ class CUP_hgun_Makarov : Pistol_Base_F {
+ ACE_barrelTwist=240.03;
+ ACE_barrelLength=93.472;
+ };
+ class CUP_hgun_MicroUzi : Pistol_Base_F {
+ ACE_barrelTwist=248.92;
+ ACE_barrelLength=127.0;
+ };
+ class CUP_lmg_Mk48_Base : Rifle_Long_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=501.65;
+ };
+ class CUP_smg_MP5SD6 : Rifle_Base_F {
+ ACE_barrelTwist=254.0;
+ ACE_barrelLength=144.78;
+ };
+ class CUP_smg_MP5A5 : CUP_smg_MP5SD6 {
+ ACE_barrelTwist=254.0;
+ ACE_barrelLength=226.06;
+ };
+ class CUP_hgun_PB6P9 : Pistol_Base_F {
+ ACE_barrelTwist=240.03;
+ ACE_barrelLength=104.14;
+ };
+ class CUP_hgun_Phantom : Pistol_Base_F {
+ ACE_barrelTwist=246.38;
+ ACE_barrelLength=119.38;
+ };
+ class CUP_lmg_PKM : Rifle_Long_Base_F {
+ ACE_barrelTwist=240.03;
+ ACE_barrelLength=645.16;
+ };
+ class CUP_lmg_Pecheneg : CUP_lmg_PKM {
+ ACE_barrelTwist=240.03;
+ ACE_barrelLength=657.86;
+ };
+ class CUP_hgun_TaurusTracker455 : Pistol_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=101.6;
+ };
+ class CUP_arifle_Sa58_base;
+ class CUP_arifle_Sa58P : CUP_arifle_Sa58_base {
+ ACE_barrelTwist=240.03;
+ ACE_barrelLength=391.16;
+ };
+ class CUP_arifle_Sa58V : CUP_arifle_Sa58P {
+ ACE_barrelTwist=240.03;
+ ACE_barrelLength=391.16;
+ };
+ class CUP_hgun_SA61 : Pistol_Base_F {
+ ACE_barrelTwist=406.4;
+ ACE_barrelLength=114.3;
+ };
+ class CUP_sgun_Saiga12K: Rifle_Base_F {
+ ACE_barrelTwist=0.0;
+ ACE_twistDirection=0;
+ ACE_barrelLength=429.26;
+ };
+ class CUP_arifle_SCAR_L_Base;
+ class CUP_arifle_Mk16_CQC : CUP_arifle_SCAR_L_Base {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=254.0;
+ };
+ class CUP_arifle_Mk16_STD : CUP_arifle_SCAR_L_Base {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=355.6;
+ };
+ class CUP_arifle_Mk16_SV : CUP_arifle_SCAR_L_Base {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=457.2;
+ };
+ class CUP_arifle_Mk17_Base;
+ class CUP_arifle_Mk17_CQC : CUP_arifle_Mk17_Base {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=330.2;
+ };
+ class CUP_arifle_Mk17_STD : CUP_arifle_Mk17_Base {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=406.4;
+ };
+ class CUP_arifle_Mk20 : CUP_arifle_Mk17_Base {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=508.0;
+ };
+ class CUP_srifle_SVD : Rifle_Base_F {
+ ACE_barrelTwist=238.76;
+ ACE_barrelLength=619.76;
+ };
+ class CUP_lmg_UK59 : Rifle_Long_Base_F {
+ ACE_barrelTwist=381.0;
+ ACE_barrelLength=551.18;
+ };
+ class MGun;
+ class CUP_DSHKM_W : MGun {
+ ACE_barrelTwist=381.0;
+ ACE_barrelLength=1069.34;
+ };
+ class CUP_KPVT_W : MGun {
+ ACE_barrelTwist=454.914;
+ ACE_barrelLength=1346.2;
+ };
+ class CUP_M242_W;
+ class CUP_KPVB_W : CUP_M242_W {
+ ACE_barrelTwist=454.914;
+ ACE_barrelLength=1346.2;
+ };
+ class MGunCore;
+ class CUP_M134 : MGunCore {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=558.8;
+ };
+ class CUP_M240_veh_W : Rifle_Long_Base_F {
+ ACE_barrelTwist=304.8;
+ ACE_barrelLength=629.92;
+ };
+ class CUP_PKT_W : MGun {
+ ACE_barrelTwist=240.03;
+ ACE_barrelLength=722.122;
+ };
+ class CUP_srifle_VSSVintorez : Rifle_Base_F {
+ ACE_barrelTwist=210.82;
+ ACE_barrelLength=200.66;
+ };
+ class CUP_arifle_XM8_Base : Rifle_Base_F {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=317.5;
+ };
+ class CUP_arifle_XM8_Carbine : CUP_arifle_XM8_Base {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=317.5;
+ };
+ class CUP_arifle_xm8_sharpshooter : CUP_arifle_XM8_Base {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=508.0;
+ };
+ class CUP_arifle_xm8_SAW : CUP_arifle_XM8_Base {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=508.0;
+ };
+ class CUP_arifle_XM8_Compact : CUP_arifle_XM8_Base {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=228.6;
+ };
+ class CUP_arifle_XM8_Railed_Base : Rifle_Base_F {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=317.5;
+ };
+ class CUP_arifle_XM8_Carbine_FG : CUP_arifle_XM8_Base {
+ ACE_barrelTwist=177.8;
+ ACE_barrelLength=317.5;
+ };
+};
\ No newline at end of file
diff --git a/optionals/compat_cup/config.cpp b/optionals/compat_cup/config.cpp
index e4f26f8051..66a0a9f967 100644
--- a/optionals/compat_cup/config.cpp
+++ b/optionals/compat_cup/config.cpp
@@ -12,3 +12,4 @@ class CfgPatches {
};
#include "CfgAmmo.hpp"
+#include "CfgWeapons.hpp"
From e41c51966b17206ac691e22254b6293099b84aa4 Mon Sep 17 00:00:00 2001
From: ulteq
Date: Sat, 30 May 2015 21:51:24 +0200
Subject: [PATCH 19/63] Added cup scopes config entries
---
optionals/compat_cup/CfgWeapons.hpp | 164 ++++++++++++++++++++++++++++
1 file changed, 164 insertions(+)
diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp
index a55e721e90..4c62c0638a 100644
--- a/optionals/compat_cup/CfgWeapons.hpp
+++ b/optionals/compat_cup/CfgWeapons.hpp
@@ -332,4 +332,168 @@ class CfgWeapons
ACE_barrelTwist=177.8;
ACE_barrelLength=317.5;
};
+
+ class ItemCore;
+ class InventoryOpticsItem_Base_F;
+
+ class CUP_optic_SB_3_12x50_PMII : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { -4, 30 };
+ ACE_ScopeAdjust_Horizontal[] = { -6, 6 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.1;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.1;
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class LRR {
+ discreteDistance[] = { 100 };
+ discreteDistanceInitIndex = 0;
+ };
+ };
+ };
+ };
+ class CUP_optic_LeupoldMk4 : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { -4, 30 };
+ ACE_ScopeAdjust_Horizontal[] = { -6, 6 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.1;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.1;
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class LRR {
+ discreteDistance[] = { 100 };
+ discreteDistanceInitIndex = 0;
+ };
+ };
+ };
+ };
+ class CUP_optic_Leupold_VX3 : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { -4, 30 };
+ ACE_ScopeAdjust_Horizontal[] = { -6, 6 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.1;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.1;
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class StepScope {
+ discreteDistance[] = { 100 };
+ discreteDistanceInitIndex = 0;
+ };
+ };
+ };
+ };
+ class CUP_optic_AN_PVS_10 : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { -4, 30 };
+ ACE_ScopeAdjust_Horizontal[] = { -6, 6 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.1;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.1;
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class NVScope {
+ discreteDistance[] = { 100 };
+ discreteDistanceInitIndex = 0;
+ };
+ };
+ };
+ };
+ class CUP_optic_LeupoldM3LR : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { -4, 30 };
+ ACE_ScopeAdjust_Horizontal[] = { -6, 6 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.1;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.1;
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class LRR {
+ discreteDistance[] = { 100 };
+ discreteDistanceInitIndex = 0;
+ };
+ };
+ };
+ };
+ class CUP_optic_LeupoldMk4_10x40_LRT_Desert : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { -4, 30 };
+ ACE_ScopeAdjust_Horizontal[] = { -6, 6 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.1;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.1;
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class LRR {
+ discreteDistance[] = { 100 };
+ discreteDistanceInitIndex = 0;
+ };
+ };
+ };
+ };
+ class CUP_optic_LeupoldMk4_MRT_tan : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { -4, 30 };
+ ACE_ScopeAdjust_Horizontal[] = { -6, 6 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.1;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.1;
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class MRT {
+ discreteDistance[] = { 100 };
+ discreteDistanceInitIndex = 0;
+ };
+ };
+ };
+ };
+ class CUP_optic_SB_11_4x20_PM : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { -0.1, 10.1 };
+ ACE_ScopeAdjust_Horizontal[] = { -5.1, 5.1 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.1;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.1;
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class ShortDot {
+ discreteDistance[] = { 100 };
+ discreteDistanceInitIndex = 0;
+ };
+ };
+ };
+ };
+
+ /*
+ // This would require MOA turrets
+ class CUP_optic_AN_PVS_4 : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { -12, 50 };
+ ACE_ScopeAdjust_Horizontal[] = { -20, 20 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.25;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.25;
+ ACE_ScopeAdjust_Unit = "MOA";
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class ANPVS4 {
+ discreteDistance[] = { 100 };
+ discreteDistanceInitIndex = 0;
+ };
+ };
+ };
+ };
+ */
+
+ class CUP_optic_PSO_1 : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { 0, 0 };
+ ACE_ScopeAdjust_Horizontal[] = { -10, 10 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.0;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.5;
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class PSO {
+ discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000};
+ discreteDistanceInitIndex=3;
+ };
+ };
+ };
+ };
+ class CUP_optic_PSO_3 : ItemCore {
+ ACE_ScopeAdjust_Vertical[] = { 0, 0 };
+ ACE_ScopeAdjust_Horizontal[] = { -10, 10 };
+ ACE_ScopeAdjust_VerticalIncrement = 0.0;
+ ACE_ScopeAdjust_HorizontalIncrement = 0.5;
+ class ItemInfo : InventoryOpticsItem_Base_F {
+ class OpticsModes {
+ class PSO {
+ discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000};
+ discreteDistanceInitIndex=3;
+ };
+ };
+ };
+ };
};
\ No newline at end of file
From 75518af90f021b1bdb0dd9c821103adc4450ac1f Mon Sep 17 00:00:00 2001
From: ulteq
Date: Sat, 30 May 2015 21:52:57 +0200
Subject: [PATCH 20/63] Tabs -> Spaces
---
optionals/compat_cup/CfgWeapons.hpp | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/optionals/compat_cup/CfgWeapons.hpp b/optionals/compat_cup/CfgWeapons.hpp
index 4c62c0638a..ca8ca24827 100644
--- a/optionals/compat_cup/CfgWeapons.hpp
+++ b/optionals/compat_cup/CfgWeapons.hpp
@@ -476,8 +476,8 @@ class CfgWeapons
class ItemInfo : InventoryOpticsItem_Base_F {
class OpticsModes {
class PSO {
- discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000};
- discreteDistanceInitIndex=3;
+ discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000};
+ discreteDistanceInitIndex=3;
};
};
};
@@ -490,8 +490,8 @@ class CfgWeapons
class ItemInfo : InventoryOpticsItem_Base_F {
class OpticsModes {
class PSO {
- discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000};
- discreteDistanceInitIndex=3;
+ discreteDistance[]={100, 200, 300, 400, 450, 500, 550, 600, 650, 700, 750, 800, 850, 900, 950, 1000};
+ discreteDistanceInitIndex=3;
};
};
};
From cb12146f4159f856f29cd263618e01a6cdf0897a Mon Sep 17 00:00:00 2001
From: ulteq
Date: Sat, 30 May 2015 21:53:28 +0200
Subject: [PATCH 21/63] Tabs -> Spaces
---
optionals/compat_cup/CfgAmmo.hpp | 74 ++++++++++++++++----------------
1 file changed, 37 insertions(+), 37 deletions(-)
diff --git a/optionals/compat_cup/CfgAmmo.hpp b/optionals/compat_cup/CfgAmmo.hpp
index 7c37be48f8..a3cafcfbb0 100644
--- a/optionals/compat_cup/CfgAmmo.hpp
+++ b/optionals/compat_cup/CfgAmmo.hpp
@@ -1,9 +1,9 @@
class CfgAmmo
{
- class BulletBase;
- class B_762x51_Ball;
- class B_127x99_Ball;
- class CUP_B_545x39_Ball: BulletBase {
+ class BulletBase;
+ class B_762x51_Ball;
+ class B_127x99_Ball;
+ class CUP_B_545x39_Ball: BulletBase {
ACE_caliber=5.588;
ACE_bulletLength=21.59;
ACE_bulletMass=3.42792;
@@ -14,8 +14,8 @@ class CfgAmmo
ACE_dragModel=7;
ACE_muzzleVelocities[]={780, 880, 920};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
- };
- class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball {
+ };
+ class CUP_B_545x39_Ball_Tracer_Green: CUP_B_545x39_Ball {
ACE_caliber=5.588;
ACE_bulletLength=21.59;
ACE_bulletMass=3.22704;
@@ -26,8 +26,8 @@ class CfgAmmo
ACE_dragModel=7;
ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
- };
- class CUP_B_545x39_Ball_Tracer_Red: BulletBase {
+ };
+ class CUP_B_545x39_Ball_Tracer_Red: BulletBase {
ACE_caliber=5.588;
ACE_bulletLength=21.59;
ACE_bulletMass=3.22704;
@@ -38,8 +38,8 @@ class CfgAmmo
ACE_dragModel=7;
ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
- };
- class CUP_B_545x39_Ball_Tracer_White: BulletBase {
+ };
+ class CUP_B_545x39_Ball_Tracer_White: BulletBase {
ACE_caliber=5.588;
ACE_bulletLength=21.59;
ACE_bulletMass=3.22704;
@@ -50,8 +50,8 @@ class CfgAmmo
ACE_dragModel=7;
ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
- };
- class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase {
+ };
+ class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase {
ACE_caliber=5.588;
ACE_bulletLength=21.59;
ACE_bulletMass=3.22704;
@@ -62,8 +62,8 @@ class CfgAmmo
ACE_dragModel=7;
ACE_muzzleVelocities[]={785, 883, 925};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
- };
- class CUP_B_762x39_Ball: BulletBase {
+ };
+ class CUP_B_762x39_Ball: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=7.9704;
@@ -74,8 +74,8 @@ class CfgAmmo
ACE_dragModel=1;
ACE_muzzleVelocities[]={650, 716, 750};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
- };
- class CUP_B_762x39_Ball_Tracer_Green: BulletBase {
+ };
+ class CUP_B_762x39_Ball_Tracer_Green: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=7.5816;
@@ -86,7 +86,7 @@ class CfgAmmo
ACE_dragModel=1;
ACE_muzzleVelocities[]={650, 716, 750};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
- };
+ };
class B_762x39mm_KLT: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
@@ -159,7 +159,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={298, 330, 350};
ACE_barrelLengths[]={96.52, 127.0, 228.6};
};
- class CUP_B_9x19_Ball: BulletBase {
+ class CUP_B_9x19_Ball: BulletBase {
ACE_caliber=9.017;
ACE_bulletLength=15.494;
ACE_bulletMass=8.0352;
@@ -170,8 +170,8 @@ class CfgAmmo
ACE_dragModel=1;
ACE_muzzleVelocities[]={340, 370, 400};
ACE_barrelLengths[]={101.6, 127.0, 228.6};
- };
- class CUP_B_762x51_noTracer: B_762x51_Ball {
+ };
+ class CUP_B_762x51_noTracer: B_762x51_Ball {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
ACE_bulletMass=9.4608;
@@ -182,8 +182,8 @@ class CfgAmmo
ACE_dragModel=7;
ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
- };
- class CUP_B_303_Ball: BulletBase {
+ };
+ class CUP_B_303_Ball: BulletBase {
ACE_caliber=7.899;
ACE_bulletLength=31.166;
ACE_bulletMass=11.2752;
@@ -194,7 +194,7 @@ class CfgAmmo
ACE_dragModel=1;
ACE_muzzleVelocities[]={748, 761, 765};
ACE_barrelLengths[]={508.0, 609.6, 660.4};
- };
+ };
class CUP_B_127x107_Ball_Green_Tracer: BulletBase {
ACE_caliber=12.979;
ACE_bulletLength=64.008;
@@ -267,7 +267,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={680, 750, 798, 800};
ACE_barrelLengths[]={406.4, 508.0, 609.6, 660.4};
};
- class CUP_B_9x39_SP5: BulletBase {
+ class CUP_B_9x39_SP5: BulletBase {
ACE_caliber=9.246;
ACE_bulletLength=31.496;
ACE_bulletMass=16.2;
@@ -278,7 +278,7 @@ class CfgAmmo
ACE_dragModel=1;
ACE_muzzleVelocities[]={280, 300, 320};
ACE_barrelLengths[]={254.0, 414.02, 508.0};
- };
+ };
class CUP_B_762x51_Tracer_Green: BulletBase {
ACE_caliber=7.823;
ACE_bulletLength=28.956;
@@ -327,7 +327,7 @@ class CfgAmmo
ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
ACE_barrelLengths[]={254.0, 406.4, 508.0, 609.6, 660.4};
};
- class B_127x107_Ball: BulletBase {
+ class B_127x107_Ball: BulletBase {
ACE_caliber=12.979;
ACE_bulletLength=64.008;
ACE_bulletMass=48.276;
@@ -338,8 +338,8 @@ class CfgAmmo
ACE_dragModel=1;
ACE_muzzleVelocities[]={820};
ACE_barrelLengths[]={728.98};
- };
- class CUP_B_9x18_SD: BulletBase {
+ };
+ class CUP_B_9x18_SD: BulletBase {
ACE_caliber=9.271;
ACE_bulletLength=15.494;
ACE_bulletMass=6.00048;
@@ -350,8 +350,8 @@ class CfgAmmo
ACE_dragModel=1;
ACE_muzzleVelocities[]={298, 330, 340};
ACE_barrelLengths[]={96.52, 127.0, 228.6};
- };
- class CUP_B_765x17_Ball: BulletBase {
+ };
+ class CUP_B_765x17_Ball: BulletBase {
ACE_caliber=7.938;
ACE_bulletLength=15.494;
ACE_bulletMass=4.212;
@@ -362,8 +362,8 @@ class CfgAmmo
ACE_dragModel=1;
ACE_muzzleVelocities[]={282, 300, 320};
ACE_barrelLengths[]={101.6, 127.0, 228.6};
- };
- class CUP_B_145x115_AP_Green_Tracer: BulletBase {
+ };
+ class CUP_B_145x115_AP_Green_Tracer: BulletBase {
ACE_caliber=14.884;
ACE_bulletLength=50.8;
ACE_bulletMass=65.448;
@@ -374,8 +374,8 @@ class CfgAmmo
ACE_dragModel=1;
ACE_muzzleVelocities[]={1000};
ACE_barrelLengths[]={1346.2};
- };
- class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball {
+ };
+ class CUP_B_127x99_Ball_White_Tracer: B_127x99_Ball {
ACE_caliber=12.954;
ACE_bulletLength=58.674;
ACE_bulletMass=41.9256;
@@ -386,8 +386,8 @@ class CfgAmmo
ACE_dragModel=1;
ACE_muzzleVelocities[]={853};
ACE_barrelLengths[]={736.6};
- };
- class CUP_B_86x70_Ball_noTracer: BulletBase {
+ };
+ class CUP_B_86x70_Ball_noTracer: BulletBase {
ACE_caliber=8.585;
ACE_bulletLength=43.18;
ACE_bulletMass=19.44;
@@ -398,5 +398,5 @@ class CfgAmmo
ACE_dragModel=7;
ACE_muzzleVelocities[]={820, 826, 830};
ACE_barrelLengths[]={609.6, 673.1, 711.2};
- };
+ };
};
\ No newline at end of file
From 038880cb017a82a85d495193d05f47b22e92e95d Mon Sep 17 00:00:00 2001
From: Macusercom
Date: Sat, 30 May 2015 23:33:51 +0200
Subject: [PATCH 22/63] Additional Translations for German + some corrections
---
addons/common/stringtable.xml | 1 +
addons/explosives/stringtable.xml | 1 +
addons/frag/stringtable.xml | 14 ++++++++++++--
addons/hearing/stringtable.xml | 1 +
addons/interaction/stringtable.xml | 1 +
addons/map/stringtable.xml | 3 +++
addons/missionmodules/stringtable.xml | 19 ++++++++++++++++++-
addons/mk6mortar/stringtable.xml | 1 +
addons/nametags/stringtable.xml | 1 +
addons/optionsmenu/stringtable.xml | 1 +
addons/respawn/stringtable.xml | 1 +
11 files changed, 41 insertions(+), 3 deletions(-)
diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml
index 6a1ff475a1..375bee12a7 100644
--- a/addons/common/stringtable.xml
+++ b/addons/common/stringtable.xml
@@ -478,6 +478,7 @@
Sprawdzaj spójność addonów z serwerem
+ Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat.
Action
diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml
index 9e2c540d6f..4b01e29d7b 100644
--- a/addons/explosives/stringtable.xml
+++ b/addons/explosives/stringtable.xml
@@ -533,6 +533,7 @@
Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem.
+ Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern.
\ No newline at end of file
diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml
index a3a91b92d9..4ea2b2c0a9 100644
--- a/addons/frag/stringtable.xml
+++ b/addons/frag/stringtable.xml
@@ -3,33 +3,43 @@
Fragmentation Simulation
+ Splittersimulation
Enable the ACE Fragmentation Simulation
+ Aktiviere die ACE-Splittersimulation
Spalling Simulation
+ Explosionssimulation
Enable the ACE Spalling Simulation
+ Aktiviere ACE-Explosionssimulation
Maximum Projectiles Tracked
+ Maximalzahl der verfolgten Projektile
- This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once)
+ This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( >200 rounds in the air at once)
+ Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (>200 Objekte gleichzeitig in der Luft)
Maximum Projectiles Per Frame
+ Maximale Anzahl an Projektilen pro Frame
The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further.
+ Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden.
(SP Only) Frag/Spall Debug Tracing
+ (nur SP) Splitter-/Explosions-Debugging
(SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only.
+ (nur SP) Benötigt einen Neustart der Mission/des Editors. Aktiviert das sichtbare Verfolgen der Splitter- und Explosionsteile im SP.
-
+
\ No newline at end of file
diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml
index e8bf6c4ab1..63c7ef7732 100644
--- a/addons/hearing/stringtable.xml
+++ b/addons/hearing/stringtable.xml
@@ -127,6 +127,7 @@
Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu.
+ Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet.
\ No newline at end of file
diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml
index 9c1fc6641f..34f7404342 100644
--- a/addons/interaction/stringtable.xml
+++ b/addons/interaction/stringtable.xml
@@ -811,6 +811,7 @@
Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn.
+ Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe.
\ No newline at end of file
diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml
index 1959297909..84d0a869a5 100644
--- a/addons/map/stringtable.xml
+++ b/addons/map/stringtable.xml
@@ -14,6 +14,7 @@
Calculate dynamic map illumination based on light conditions?
Oblicza dynamiczne oświetlenie mapy bazujące na warunkach oświetleniowych
+ Berechne die Kartenauslichtung anhand des Umgebungslichts?
Map shake?
@@ -48,6 +49,7 @@
Moduł ten pozwala dostosować opcje widoku ekranu mapy.
+ Dieses Modul erweitert die Kartenfunktionen.
Blue Force Tracking
@@ -77,6 +79,7 @@
Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT.
+ Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen.
\ No newline at end of file
diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml
index 1532827378..021daf2547 100644
--- a/addons/missionmodules/stringtable.xml
+++ b/addons/missionmodules/stringtable.xml
@@ -1,73 +1,90 @@
-
+
ACE Mission Modules
ACE Moduły misji
+ ACE-Missionsmodule
Ambiance Sounds [ACE]
Dźwięki [ACE]
+ Umgebungsgeräusche [ACE]
Sounds
Dźwięki
+ Sounds
Class names of the ambiance sounds to be played. Seperated by ','
Class name-y dźwięków do odtwarzania. Oddzielone przy użyciu ','
+ Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch ","
Minimal Distance
Minimalny dystans
+ Mindestabstand
Used for calculating a random position and sets the minimal distance between the players and the played sound file(s)
Używany do obliczania losowej pozycji a także ustawia minimalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi
+ Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest
Maximum Distance
Maksymalny dystans
+ Maximalabstand
Used for calculating a random position and sets the maximum distance between the players and the played sound file(s)
Używany do obliczania losowej pozycji a także ustawia maksymalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi
+ Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest
Minimal Delay
Minimalne opóźnienie
+ Minimale Verzögerung
Minimal delay between sounds played
Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami
+ Minimale Verzögerung zwischen abzuspielenden Sounds
Maximum Delay
Maksymalne opóźnienie
+ Maximale Verzögerung
Maximum delay between sounds played
Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami
+ Maximale Verzögerung zwischen abzuspielenden Sounds
Follow Players
Podążaj za graczami
+ Spielern folgen
Follow players. If set to false, loop will play sounds only nearby logic position.
Podążaj za graczami. Jeżeli ustawione na 'Nie', pętla będzie odtwarzana tylko w pobliżu pozycji logiki.
+ Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt.
Volume
Głośność
+ Lautstärke
The volume of the sounds played
Głośność odtwarzanych dźwięków
+ Lautstärke der abzuspielenden Sounds
Ambiance sounds loop (synced across MP)
Pętla odtwarzania dzwięków (synchronizowana na MP)
+ Umgebungsgeräusch-Schleife (im MP synchronisiert)
\ No newline at end of file
diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml
index e83153c57a..92f5f1e6f5 100644
--- a/addons/mk6mortar/stringtable.xml
+++ b/addons/mk6mortar/stringtable.xml
@@ -87,6 +87,7 @@
Moduł ten pozwala dostosować ustawienia moździerza MK6.
+ Dieses Modul erlaubt das Einstellen des MK6-Mörsers.
\ No newline at end of file
diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml
index 64dcd4c32b..3d23afa1b9 100644
--- a/addons/nametags/stringtable.xml
+++ b/addons/nametags/stringtable.xml
@@ -172,6 +172,7 @@
Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion.
+ Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern.
Disabled
diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml
index 4eb18dc46a..838d84abf7 100644
--- a/addons/optionsmenu/stringtable.xml
+++ b/addons/optionsmenu/stringtable.xml
@@ -259,6 +259,7 @@
When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard.
Jeżeli ustawione na zezwól, wtedy będziesz mieć dostęp do ekranu modyfikacji wszystich ustawień i zmiennych ACE, a także będziesz mieć możliwość eksportu tychże ustawień do formatu rozpoznawalnego przez userconfig serwera. Kliknięcie opcji Eksportuj skopiuje wszystkie ustawienia do schowka. Działa tylko w trybie SP.
+ Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren"geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert.
Hide
diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml
index 28e9da73a1..6296f80574 100644
--- a/addons/respawn/stringtable.xml
+++ b/addons/respawn/stringtable.xml
@@ -173,6 +173,7 @@
Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu).
+ Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen.
Friendly Fire Messages
From 5d1f2eafaace015045038f93a1ec5630c5a2bd27 Mon Sep 17 00:00:00 2001
From: Macusercom
Date: Sat, 30 May 2015 23:34:19 +0200
Subject: [PATCH 23/63] Fix German Translation
---
addons/medical/stringtable.xml | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 7384fea5ae..0926a89cf4 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -123,7 +123,7 @@
Apply Tourniquet
- Druckverband anwenden
+ Tourniquet anwenden
Aplicar torniquete
Aplikovat škrtidlo
Załóż stazę
@@ -747,7 +747,7 @@
Tourniquet [CAT]
- Druckverband [CAT]
+ Tourniquet [CAT]
Жгут
Torniquete [CAT]
Tourniquet [CAT]
@@ -2704,6 +2704,7 @@
ACE Medical
ACE Opcje medyczne
+ ACE-Medicsystem
Medical Settings [ACE]
@@ -2718,6 +2719,7 @@
What is the medical simulation level?
Jaki jest poziom symulacji medycznej?
+ Wie hoch soll das medizinische Simulationslevel sein?
Basic
@@ -2746,19 +2748,22 @@
Enable Litter
Aktywuj odpadki
- Abfall aktivieren
+ Abfälle aktivieren
Enable litter being created upon treatment
Twórz odpadki medyczne podczas leczenia
+ Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde
Life time of litter objects
Długość życia odpadków
+ Dauer des angezeigten Abfalls
How long should litter objects stay? In seconds. -1 is forever.
Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności.
+ Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer.
Enable Screams
@@ -2778,6 +2783,7 @@
What is the damage a player can take before being killed?
Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity?
+ Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird?
AI Damage
@@ -2787,6 +2793,7 @@
What is the damage an AI can take before being killed?
Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite?
+ Wie viel Schaden kann eine KI erleiden, bis sie getötet wird?
AI Unconsciousness
@@ -2936,6 +2943,7 @@
Locations PAK
Ogr. apteczek osobistych
+ Orte für Erstehilfekasten
Where can the personal aid kit be used?
@@ -2990,6 +2998,7 @@
Locations Surgical kit (Adv)
Ogr. zestawu chirurg.
+ Orte für Operationskästen (erweitert)
Where can the Surgical kit be used?
@@ -3064,6 +3073,7 @@
+ Dieses Modul legt fest welche Einheit ein Sanitäter ist.
None
From a44546af837c7ca63da5039f20ae58a8831f75de Mon Sep 17 00:00:00 2001
From: Macusercom
Date: Sat, 30 May 2015 23:38:08 +0200
Subject: [PATCH 24/63] Added my name to AUTHORS.txt
---
AUTHORS.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/AUTHORS.txt b/AUTHORS.txt
index e40b4c8ee6..1d902b8d56 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -62,6 +62,7 @@ Jonpas
Kllrt
Legolasindar "Viper"
licht-im-Norden87
+Macusercom
MarcBook
meat
Michail Nikolaev
From 0b8896239c790701016bd3c66f6e22d9e3bc8bf8 Mon Sep 17 00:00:00 2001
From: Glowbal
Date: Sun, 31 May 2015 09:23:36 +0200
Subject: [PATCH 25/63] Progress bar stops on death - fix for #1449
---
addons/common/functions/fnc_progressBar.sqf | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf
index d6518a9f10..adc1b8d4c3 100644
--- a/addons/common/functions/fnc_progressBar.sqf
+++ b/addons/common/functions/fnc_progressBar.sqf
@@ -60,7 +60,7 @@ _perFrameFunction = {
if (isNull (uiNamespace getVariable [QGVAR(ctrlProgressBar), controlNull])) then {
_errorCode = 1;
} else {
- if (ACE_player != _player) then {
+ if (ACE_player != _player || !alive _player) then {
_errorCode = 2;
} else {
if (!([_args, _elapsedTime, _totalTime, _errorCode] call _condition)) then {
From b8b980bd928e97eb94754f8077680675f19c7304 Mon Sep 17 00:00:00 2001
From: Glowbal
Date: Sun, 31 May 2015 14:21:25 +0200
Subject: [PATCH 26/63] Changed speed of sound to double
---
extensions/advanced_ballistics/AdvancedBallistics.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/extensions/advanced_ballistics/AdvancedBallistics.cpp b/extensions/advanced_ballistics/AdvancedBallistics.cpp
index 573ff186a4..8d990ec0d2 100644
--- a/extensions/advanced_ballistics/AdvancedBallistics.cpp
+++ b/extensions/advanced_ballistics/AdvancedBallistics.cpp
@@ -577,7 +577,7 @@ void __stdcall RVExtension(char *output, int outputSize, const char *function)
positionOffset[0] += sin(bulletDir + M_PI / 2) * spinDriftPartial;
positionOffset[1] += cos(bulletDir + M_PI / 2) * spinDriftPartial;
- float speedOfSound = 331.3 + (0.6 * temperature);
+ double speedOfSound = 331.3 + (0.6 * temperature);
if (bulletSpeed < (speedOfSound + 5) && bulletSpeedAvg > speedOfSound && bulletSpeed > (speedOfSound - 5)) {
std::uniform_real_distribution distribution(0.0, 1.0);
double coef = 1.0f - bulletDatabase[index].transonicStabilityCoef;
From 43a2fed7c20f7961371a8b6ed2df729ed595d4d6 Mon Sep 17 00:00:00 2001
From: Glowbal
Date: Sun, 31 May 2015 14:22:00 +0200
Subject: [PATCH 27/63] New dll build for ab
---
ace_advanced_ballistics.dll | Bin 623104 -> 207360 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/ace_advanced_ballistics.dll b/ace_advanced_ballistics.dll
index 0a14d846b55c43bf8051149a15484c5834464b7a..9d3708959ce7a8f0fb478fdcfab01c4284395771 100644
GIT binary patch
delta 77355
zcmbTf4M0>?`agc}ojWipFr$K^qM#0n;tPr|D4L)Ql8O$Z1CxSO>az64Dx+?xgN>xq
zby|&fuf5~ii*4;@-*ywLEf51tQ+qQlEqdAQ(6EK}hDFZr^PGEU7;AU`|L@nDd(S=R
zInQ~X=RD^*=RD_y>g}Vd--+5iON`$$d!GAz_4dtsKmKB3@HcMDkcl<;9=B!CL_dGW
zPuzj`gv0F<6#o8l!cPAFYQkN3+lCFF_%PmkKlV?25AXW=uO{5j-(TqOxQX<=_v0=6
zU0=_5{L)|FSdKEqiF<~}r`v6Uut+otCEXRv1^r)}APw&$#t6a@Q4p%}!@s2)@UY<5
zCe~((!)8|-1VN?*K`;nefI%81hu+%fL9;<9rC5tWm_^BUgHSH-8Q$MmW)Lz4srzh^
zBjU;=prFLyzcx{j)!`kcA@@qA>Gw2h*f}+NkwL&DK`5KBZuRw5*CS>c;E3bFsKv;<83k2
zMj9@w2W^pAwPWtE_8!?+uoSTO?iGaEqB};odjZ6A)UrxxE-h(Vu5<)kv5L(Ua9IMb
zs6b^xpfaAF1gz(1Y)!*fllf3Xv>-%Qb5MukG6gmy1UAI8F9~FAJbnp+)2U%nY*FcN
zIbJFLOtjQAR9TeMN~dpuc(*indxPt8>YGZw$v0Q5P1#SU9@>x
zZSCfpqPu@32!S)Dt5%d8u?n?gw#*s?Ku?FIZb*c|qAZV6UMC8+wU-+WwZ1JkUVGCX
zqBEgX`A13934j*(Y=Ohyj5Ap5>>dcPeD`V5(qg0t@GP_#yF#IEJ;XMyBoyk!Q(|mw
z<<e$mkZ|~nz0{EUy3*yjEUxceUiS~t!cvL_VJ=7QG!gn=HG7
zJ(Py8{BKr!p#g&6Tve*%cc#C=7Op_FF7b*$`RX2t73lH`7uDAqJM1flRy#Byd=UIc#DqG@=d~!8Tk+buNdo#@RUm6>@7jBp{QWT?71j{T`;67Go@)ypoL;
zju!Q7q!fXTNCft*H-UYSj-4c=G#-(K6FvX9-kTgn%4O6_%luf5Yd&YBIZ|M^5b}y~
zzK!t}f`ipBj7SA7cZGD
z5tqz;ZC&gMn3M~-CdlN1t?PXIxz|fSJoaIudht0!tQ$E19)%pNF9=1G&NZQR4^{GG
zd32Q0*OzZD@a3Dl%S{DPBIQaTK(^&bEGHWIp(NW*hBYfop`+**n&Ms4sTcDn2tn!8
z6`=O3y{Xc@S85aPPjLRQjMp1!5$o6_1Z6@kA4NP7UPSzVD8idhhDXP(t#Q3wtJV&$TeXUWWGimlB&_hQX=Rm(kJ%Io?neKLEyES@IWb3{hO`ma1!
zx~rz#-DhTR*J#g`pQ^^(y-=LFKy(fEjJtBBD&g*h(#!>tE824-ev3uUbKlBI+a0X{}=+8G(&*5sT@*_ph;Tmnq9T
z&!imp7Rkz7*=qraZgd@Nb9W#>T`jsa3(OB$>r?g~)g{I~9r0+2#g!8j4e$jFv!OHIX77et7T{4f`!s?-kFkdEfQA1`Iwcll(lzlf7E#^f$f-Q&u3pMXw!6O|_+w_bq4}@thwp>1z&dzsOZ~O0+K}y%
zdF7EyW~U8Ei)|>WFFh>u>1^cIgC5NDm1wRh2?PSA7i^v9U2IjbgHV>k+_h}mj*^fX
z@cq{0Es$R!7R-sYAH6yzrbL%G1c4f@{iZQ1@)`&8#Gw*1kBl7EaSJgUWoY)!mz9=P
zBu7~&UrlmsSqwRH#W6iEH?5Jz4|j1`ZhS&!7XUC0-95&kKr=qI8O`(J_Mmorx#L2e
z&606!Yj^GL=E41L;3uI*gUr@+(@LcAH=IvjDIVD#vQm)DDa#<9^D(^hEtTdIbfbI~^^|I2c
z^iMsNda3cUq4A2r>*~%tiSjq5rnY$6y6i$Jq{b))fUPR^$*o?rzosCT
zd8X7Oja`P!){XNNTelM9o7JMUq&5u%&3Nn_{97%~M30rQ>?40&OC
zd^S^&9cnNL6$5jZnJc@7`fPo?Te>lD>V}c#<30>G?d;4q&@EvV25cDQs$X3z#>Fd_
z$y~3GQ*tey2C-_0-BHBaR-^EkcPG31C=shln+1UcxC+*s*G{Mgcm-Z068@c{)u4}G
zHMxOj*+z{uapRC8*4jr9yb)e-8sU?>yt$@>;wlcJHNuIQll9=Ai^jHy{TgxTK48KV
zG3G~q6@iL8?Ki-}driJPx#n1v#3ZoIp0Mm(!)gznNie|h)Sfys&`kztt@*l!
zug#^c=81ha?Xt7)z6t~~zju9(`Gr2-3la{wz(!Q}3}jJLG=MN*_+P8Mw<38hCQVAKe++61
zU8~mygTJQJPR4;PM3UFW>c1Ra+vn`q!Sip{Y|zzR?xY0N&yus($!`xq;Lm4=nbu&c
za{>}j4=Q4;TRF!SLzx$A2&B%7YV49STh{mGl`v=HHATLKQS1iT1m5>Vd7&fdg6CnF
z+---hMse<-OBk%1R+V}eCit=g-g)u5#%lHS>$zOe8mD#PoW>S9jC?p&d($Vyy|`ul
zA{$hm_#{PcjYOd96Kh5tWQW#(5n6>%sLvJC*$;@tbO8xUzQxdjRG+*J0CqGWe6aVw
zs$KT!2zf1LrM0(zniM@30X};3p^el&`RQn>^sCy_pN^D{eOdeMr;DZbFKca|-9$r9
zNT0^2ml@4+mFdb^rASUa4e{MHU2K(U&(g;tN=q;0fws!XyOHY{fh#iPYvNx
z=K4hH^xzkR61$AB|6ngTGprDb3NfDWmaxEdmin*Sx4%f2{_t(B$v;ls1Wsx*{28gU
z5a6rjp(*9q4&(>OjTCP`#DPsplGh)FhZ2
zlHf^pc>v0t-Z3${83A5yUzA(BzvDvf!GGD;XqE)}R-|k-DJ_aaCMzptHm=W19Z>iZ
z+U1@8VMQf2{$RMeD8qj%%KzifimJ{GH$tR+%DMVIn<`q-
zC^4?SLmrm;{r6uQ&Y3n&uT>1GT`&f0T5
zbrZOqRU(bsW>wKN{``GLINJDxKZq1qR~%9BvKKEpBM2Y^862VE}G6RpW?gK+tn$|;2qm(-=
znU~FXG6BAn)XOurSj=;`STetM&G*UX8Mzkoo##-qUUc3x=^CUAD5wyWlg+Xuu&Ed%
z>vM%D45@k&62cQafh*=6j{?Vxt+DH^fejYrWD$G+Yc%NmD9nLw^4!5Eb3;6lR6wdS
zpfwp;@w;14sPe9VlT(Mgz~(R3(&t$Cuc9wNYODBrSS
z1LBsO%qg$qZS4GlqMgz1(>zcdm&P-dzRnD9(0t2jY~TqRN?SZ;T&)zFg&7^?v-5W`
z;w(1I4p$m0`LxVwWIS6b5>Vy^o28`b7a)0BQ5?jr!Srx|l6p8u3g;kxLj`eQ`56bl
zU|`;fs~I4Swxs{Sz%`r$uyi#C{y3ugs^}oqiY?{vYIs+P!FYAja52RlbHP{-d7O8}
zpU*dyG+i(r4Exd>Bq|6dlCZ|+ks$4mlcy`vyyFU-A(#dStTmn40tS{7jdqA~!(f0$
z=Y6h~6H6Zl+eJ(JgMcQOtPo7`=k73|Is)3L1Eqz4D#H=&CYVAUCM5(@9S*aJU?%D?
z@gbPq;V|U{)2BCV3Q=SV0UZbjvJ=qf7>^Q+5Q3=>hshwACLN}$Bgp;faF`T=c~pn#
z48e2(#!XehMPwnMJ9Hox0y1%B)nU5u(O#s(oDIPU;V>Lex(;(X1k?5lg3JWt24@W+
zpoVZD&Y2%QC2?OLf~gCKDJG&@beIDnm`&j@I|*jL4pSF`DdRA1owEZ3gYd%-%XLXp$5KKxKj60fJG(`u>2mz&q
z0ckM5(qX8J)T+!94#TbIJRK%J1Y-(^sizi{sKFdD-?hL9`$y)vGn}*21oR^Y%EbM_
zkP;<@8<{pTMDOV^c_EmC;f19Up67L#9))cP*RwV^)yMC2pwl6$Gr|cfBbb|Xn4KY*
z^6aK9L#OQe4+ys!oW3ShQC-1k_$_;BtSasPo1Qx@X>
zbT}S?h(4slq=aCEaG0H6K>ylnb)e1=)ve(oI!lOd(_s#VU@F5AB@xU*9j1r-jBxHN
ziLucd47gv45USoCeKs7?SpqWXh>}7*UU4}0b;SKgk|v?H5NBoKFnbB+B^_o{2&Ofh
zpd>2Gt?ED-A)xYbg3^ey^*T(CgieP`sFh%r=rBF{(Hf4YlL|}KV8FctAyWJ#cQ{3R
z2`ExWlo#UO9*!uB3i}kEG13o92qq((`&Q!qRUKw;h%pvkRwuzcC}K`Sh{{7id&7aU
zh@g!+qNET^d^kayh@e6p=4?nm&W1~y5gJ8)&ivZe)A6`UKIIWdrfBZuLab&{+BA_iiwH5ez(nKW1
z6@wLgo!&5dTqw8dVq#g;Uk`?92I_xIBT%S*EaiyuQ{`W?bt
z`T1)E%d>L?%hy?g1*2+DhkIpcOGLLh#aN9pfaMtn!n?Kb%S8y+A&jLgB%Q$5K`rGx
zf~U10O`vFmUTQRfQ6l8A3-})^U87I&Dx-mZ(gnT?!XU9;3yt$7uY?Va?BOO(FQM
zle98MiMGeEC}!x|bO*fhSb-~yPl<9A*DrKMOv0;va0!1wH=65R@UO^GPS#nD@%sLRxsM>&~kwo7{zH0mR
zN0`p@iSxS2N<_Bja$w_1xV|mu|JDsUkm#~2dEJ?<>#xN+Mwh&9uBU6{#@R}vo!yYa
zeJ}rhb+?FCce4P2br3jclpizWUH6o(;7fHZeJ#y#Y37t~frRAr1~7xQJFJ&_+U0cv
z*P0V^kWY{Wcv-3$)>gd?Z+322T?>PZ~?3HI|Y!mPQgwBZ;MLqd7}_wV-+pJTG^w
zfe~UGDEJ$C+>A$1z}noF7UJ_wn)hl_$a^*TyT(M9
zj&LvURu;sMJms4L&jhM_L6qU-jBG4V%@AFEX>D6X6uomM$$kqh@@LC_6A~k_0YD_O
zT_)cG8GDDGMt1HnqGdCa0IAW6D0kw*J+^Ku?dHNVT;`FDBfX0?uM-?N39FiAa>8JN
zN%P>)Cxx->mZR<-ASUL&J}=yXvtk``1$|Xorl13dzBK>TpRGaJ>PwhWv;il=Yl~8c
z4HO5(O*xO&Hb1yW;*=du_`W}>iw25ACmldmQdZh66t&80;)D?v`1hl*mngJVEV$w1
z&>ivO3Q_v*2lebAv6%0kQTU1*tP%{;Bqb*E6c#Wq!yTTPYjX9f5aIlO;UCo8$z3}Z
z9x}P!D|&KeEFO}}wg+l=2ufBW!$CB?;ZIG@w8F>Bv#p=b3!Fp+8hTJQhfra`5Vlyx
za(-XYmu*^wg}$E^`@lcckB5qb)Q?{f`_mS=eoK4!*4NV2jA7z6(p~>hHw_b06Py}y
zFLngw(>5M-x&l~>C}Ow0qrN&!96kwDD%qw~5eA0r^bss|VGSL==4k98Drvu^Ef65q
zwUw(iN$}@RIvf$FewHXsokj^%0iMsg>JMO-06RER5VTI|sCT>dF+{;=Sq|R}zY&*1
zvv;#~899%}&a6UQ`wpzdIoJXC0ey?Cu`M~)c+e*ll$RmVj!zT^thq?XE=ezvU)=eb
zsJ4w1=c?}w7o*(-SHM2O5)oFQ>}<>fJb-;sIaW)BVCQ(SL8&nauu~-f6D40*X-x_P
zc_aw31|X<~94mEc!7U&TcBP#b-J*~yMN35`$z!bLD~UBGVxJf7<1AHnajw%(FzX0t
zE81I>@ZxUJylaFw&uxJC3s88hMp*&tDA6f@{trEbJ!CxquES_+4nq0DpjKMb!a(*1
zK`O2S$qEChE`hD)Vww*aP!S)L515+5ZU6?(*%a(H#eT~qFbEhPwVH=941idc@i2Mx
zwp-zGL>}5A^VsJko&<Y6u&h$?TiR1vprnH(91$FlbagLj2)fK%-H1XbD
z*1bThO9)>i47{GvUfZ?TPVKdeUW=?%_-(>(Gh5BKkU|xn<~1Gl3ssmG1nB+y9wAsn
zXbYsUj3x8rST!wK98&fSh+N8k!WK)24J+u^XdN$P%Ifb6)>o2mmvuMDAbqm4EVLc1
zf+;gp@6}*#S1aNzL6Ng35wDI<7KgdDQrtnfs;PuOD-8c4Yo&(#IM&LcSoF$#wiH
zCzU$_=Pu4%O3MzP?V^loxA*Y*Kqky9&|CAW)o!2zWAn
zhUe)Z$ht5*4_WIWt`J3I1y&OTTLdtm=uymvtSyq)t?2TarR71b%;cjX5?UAS
zgXXO}3Ff3s6B<_Kt`?dU%;`E_L8a-95p~6!I@`~N5E0vXAzB6Ynlsplc7?$_WUUTo
zNnno#F|EA{inKNi*>8hTSyw?Fyc()72sM~Pxr5d#B@9zq5axTn3p)ss6b2F<1bGJ_
z=V9KIXxf4ec`37LS9a~Nz
z7%iDKpF;o1QEMx(gj}7OBBr^i6i;K4;Uvp@lVIo@@~`wXjT!VF+OJT4>CXz#cR#CLg9GC*XDmV@W?Vf9j1w_29GNb#uaVnipL`>QEr(=fv0g3
zmHxu%K!DpftWuO3Q!o?a`S^zN^6hBLfhy}tTENJ_tPeQ0M^I%FjG8qD!*C*;+e9>6
zDtLPYS+QW*+qoX|=(@1z9P1PwN5lp}bFAZd9BF|b2V|}I!Y0F>h|^akpM_S2K~n?k
z0c{9=wQP@QLzw=tU!!k^Rik#ow!DGrgOy=b6wu5WD@QoIKf85s$ao**#`|t@rnEE1
zYF5x-U25k@aq_f^ejzg+?BS+5^ft8_YNvET?g=3qIEbgkt1DB*p?b6aYPk;n!aWoq
zMUK6&%$j!LA!`H3CVkco>uW*CT~|S70g{9j2KitR@&-TxVYqqujAU^;090qHn4}Y7
z4`vt`hWa7v*{jix4MJV?^^p3Iwe4ysIS6$eP(LfYn+pGQ8Rd@k*+u1b_4-sXUMJ!(
zk4H~deHD7@YQlJ{4MJUa6%^@S7}PC6s3{>R3*=O%L(wP-=5M|R<+ih!FtDrbpEZcd
zkFK|8Bo%Ip#2`p3KwxOnxF!M?&EqjE>FuurwER!z#`AJy8zKaAO&_?4VdO0j7*ArL2NQ$eR8#-LFXkbLm`#T
zGt`A;_-5eM8F-Ba{uqJPNr@&O7|+U(721=gsUNMh
zo1e{wE@_A`9wM$dvZ)%jLSRGhmKD-EsBMa&)w~n!4M&OyF(&k>5>3Qf*WaN=O%^9w
ziBeYi2qd!tT47FUt(Q2-`Zn`r(NJ}D)nswk@rT%(_+wTQx#^aVQ^T0t0FYc|FnGv9Swy)j+PQ0vmgWc5TE
zCb#dWivwjEai|y5#o>d0gjR%dTJGb6ZB9j!I&O-%&Onohx+&s(cd`cfn3d`UIfhzz
zStmfkab(zT-KoWEjRovN5iGl=lMKu$Z)#A*?{L&<*kEtW;zDu0jW9t*AJ7;+jj)l}
z0EQ!Mx5oN?(+^M=3{bT+
z$C-`hn!7|!^nJV$n2Y`e7_HAUr@R5Fz8}P=ESsK$te$oeIfFwQCyoWA(8GBa_`xmm
zQZGmu!4L*i9E+B!woMgBM-^`x36jQPi}u>xYTs#MqPSC?G))|vvf2vH&{9lzLK&Lg
z3C`>SRnup&zrM?L<1y<)s%M%wvTr5I0(xi(g)o{^4^0z?i^b}>X=2i^i`%aQTl`Q(
zxcuulX($6FAx|DkTFuLYAZ)AuQ)W2nj1Lum0fc}wR{g^{-6>oLd)VJ@
zP10gCRBoN#LXOU|XgaFAG`d{tX`{3F@(Py<%H;TnUiKQE_`>)SB#?YC-$ZDaJ{sq(
zFuGdfh$jJ{jLmtN=UO(s46t!|yt(y9k;qyceSm*D;~LQU+%r=g`JV(+#>Vl&b-`$w
z29wK)C}X#w>1$#^#L(TmdBea^FN9KpNjTb75MkcCVZVX-*pK{vF6eMVd*1m-pP^%X?;`3rsPDH8+n)8V&}D+!&;x!
zdtN;!ngOIjV&Z_8%x$T$Cn-1uxn1*8+gamQLKYQrRD`=l
zmIr|z3ISu_D4~Z`m-#y}^d3pQ&*sL1#yw@`n
z7*{%N1hVy~dxtrY=m!)Nakb*4b2j8mKitk3Ttn`7j?tZ6XkHEM_JX}A7GmJDTT
ziLibNEyFU18{Tfu^*9XG=(*k`V6ku<5?Vw`rlmBjsrYi`mIxW&o+QCjhArN-T+txg
zSyLL$Y&-SCaDXkqq7T;dE_!WUI50woqkWEG))9i|23c5&WAnjGqzJOG+>J6cx_$=+
zS|S$dbWvI;sqQ}~IeAjnzsq$EPb&U*NlQXWZk>K#w%j5Tmv&|+5`WIToy|b>cQ%vg
ztcrB7$05Wp)^VK2m;Vj>8)~flonCal97n6%R;&tv2`!Q8C>6z)=k(UoS5Z10bm#$C
zNdVPBfH?$!v#;2TZ>*03ZA6qmkuWtrf$|ZLX6g!uAHI`S%S?Z2CkBy9|>NzVjdtN3!vV^#2RM>~=)4Vfe%c
z2xsms9IGqdvn5J&^}`__9PzdjxwTO^O0pcsy%Peic(#~$bCxu*e2t2z@n@Y=pXYruJ`#~*+ERm!hLAPeFSiikxgfK~kp
zBU@!b@h2)whG!(pn#9iW}!W)r_cRYdic
zD1iiPV!Qsr59hG7@!-HoJOYlBtAI2j)$=ha(%Y?YB}0Gy_$Sm_AC2oPPa_X_9MbUp
z>5(?}iMW9(rVegR$I_`T3rf5KsO
zcKoxBKBEsCdQ#ONmSO%||D~uVF2`hhHv-wq5pxiMwaZ0Y|4L*5rsPd{!^Dq2jf7X0
zi;aC=MT9Hm-1s&`-0cvDPPrb+apA1zXj0S9iMEU#qZ`w~->q
zw1_0I2aweXHI7VgXm3L{_B2)icG^CDUffyoxo1tc;F+Dnbs(}Ll068XTa5HgRlyo>
z0POaLsx|Ce6V6eXwg?uMh%-X$aeTJO)&rXn5knFGqeZ0QQjqc_Jb0^ilARgDR%=L-
z$`dHnM5!ifdQM)F`uKHXqI(1KE1jNegsNc<_NYd3Re$QDB=D|W@gmBQX7D%*Em5xEioenZio%AVWZG@@D9jG#T0tQ!}hVzD=
zVymWVQ8PJ#ek%@+Dq=w(t$g-+0s4ji`K20fd`ENL_$FlyOaBgR=yFk-*{f)a)VLkW
z)X$*1Akc^^@pH?3QqPU`U8*oF*+*#x7N*V2=&Om{bRpO1Yl}PlQ
z61}r2fNMGEtvDbE?YsoRnLPgp>@NmvCArNibDS=5I^Y
zSkFn520}(p138dX)!%b6NsA_9q(x(V+`tbFr#H+nTJqrSMF$JswslyMx6n~BP-euDCmVUvBrHU32J7eGwLli+OUw-VtWQWHD)o8ipIG6n-eZ$&*ZBp(&6o
zquB?Cr1UPYd`K8-Ssj>);smUjSiCn|Ek68G+w}WU)JZprGijF!njkL?4N)tsyq7FA
z1mfaRE{adUi}y4d#}xzFyNjs)s*Dwq^Nlh4H%&n28C^xsxJr5sy_ud<%jr3LHJ)pC
z#qH*==G-NK7u~pW~O|_0aE(JMmI%!v4+tE$^?!8^`AN@1k!mqZVT;
zxE3+v-A9T0x8tkDxCu`pyv4Ygr;?@JsfQ}$;+qdn6rB3T+ACr$9r^Z?4OX{
zkYS6WRu4PPX3?14{%djIf>Y?117}zgka1H@{pdyJ#_?**;h;VL&UlVPJf?7XHdSPl
z*HM`d{1{N}6=LGJ7A#UZonG5%CO{}k7Dl8e*tf7HN>;4b*2=y>(7VaPJ|Xk+V1+n5
zIU4JqSj+QjU2gks=x4yy!9IeCadKiGBG8X3#GB;|47k;Tn?&o_dTbeK!u>h4Pt5j?
zcV2hEb()>-k1VV`35DgK@a9?AhX|^V-XvzZnFGH!p#WwIJ@|V|o{{B}t$YpH=AF
zk}%Dnv;S-ix?#^z48O(+Bk=7q6!{GS*Ep67hOxuT8kmOJ2rlL+V!cpN>Q6U|NdxwQ
zBG1urr64u3$j(mn#U@0|9|~>}Gx{l@BK=slH!n%Sgq!xas(-#k+%}|Z7!ivx-gXZf
zH*3eIQi*1dw|ecZVs5(10TP6&Y_^LMvl4Je6x)Viz}4pPlqCqP5~jdO13(NR+SnC?
zdgNB|CiyNiP)xc_yj@<1p@#bGZDN7=nJQMIXTw-ZO{)|q3_nWsL^&6+zbByhdU`yM
zhZi(FjkoFsSjlw)2_uR91~FW+kGA=q95=HXWlUh&He>fjtHVRzLoYI4HpY)JjRbXOl^&vQc+1g_?UO^J9dj
z4p=9SmMeiu&0Z%a%hqUwD%OcNN&oyoeQ%vOTz>vh#LQhU7Rk5M(Cp#$;_TFch@%kz
z`Wh%&`gb#?Z%tM{#LaZ&C*UqoattzeRII~5K^<2m4vH*x?vSm4HuXavdl8?apcy?P@%1VTTqs;Lb&Y;e-
zc#9bP2&AZ(Itf_q)V}!w$gwpcO%N`r{U}RXA%LSpFF<{jjjd;TKk=4Ptu2
z1k^J+a*sP!cCDg;^mV@ZD0mvHxe`zdHi${lH^88RGzV*kGO1fPh_j7fViB`RO};}M
zZjZ&B!c!J6v>$#5)f_=zxZq){iT#Mx&_G^1X(b5TM0`7t4R=;;+ayN)K2SHn4GW7`bt!f-X)GSWVOTU-zBC@&w$ozZ43K{Ie5J0
zN63dznULN{J*ce{d!6AdP;9Xn&UL(Uub{5pAr8--1FMF+Zfs1uC{k(E2M(T&jKXbO
zOe4|QUH$6!>=EEwiSmjNRQn64T+fiL!6|GkID9`Jn3qNY_6|lR4&kKkZ)qQ
z3a&oHBCeac9c_>L7wtc~9jBZm&OShozF83m|6!LnBDMiHDj_e%+EmN7E~+8*j9a|s
z|D>Hq|DbCp0;HYq;I*3`=ka6sbpzmP?W|M*QjG^T23z*x_l(N5^Lk0Gs}-jXpoxsQ
zzSq}(!hl^?erQ5#pm~tLR&;R{zwtg%RbTwQILiI$Mu@f3i7Dxzz;s-yaKMXiNb4j_
z6y}nq<}4W=-dVNjW^@O2|7hm1XNe`R#~Vr!Gi50FwZEV8JCYyoxMrk
zxefH#gLx1-DDFr67)=-9NLFtY^5IBiE74xbn^=GZ`28?If;)t6+l5z)%3zBDz`bJq
z*jYrgYG4CMHZXI?7lSLAFsL1W5EBQy_ZEy^u1Q%OWjK`{g*BLx_M>kF)ZwZ)nl58f
z7pmf5c{D0j{k1CQ$bSbG^*L3HpPhi=lu(sgPH*;yu_DYgT|hM$vq{7#Co4o6Q>=i#
z2hJ$2POLIu^Eo8K_7aMSz2byvG+=co$6tgN1=u=7V=COm{)kV4wtb`bxaAt$d*~$c
zDR0GIaY$h|h9LUPOP4HdKF4)my!GY4rl6MK?8g-T*jleSv)N@1#AQ)5qSktIHeLa%
zlyh6hB6J+w3RK=N4s<^PVyMTNodoKP8?GxV7m`STuhMrByLLTKhWluaujU<$e#%#a
zT|1i%SF^9?8${TBHJ{Oo-N2*%O5qBbnn?L?jf7$@N0G8hJILh0o?Z0;E6IyP_a7cUN9w?2
z0FmiI9}AUQD?c-MoB6(jKiiAJ5YBV(*pp3CIx{O)rq!hQsiQRAP
zUQ&IhgZ%}VsTn~-xSN9rY4Xe_6akkZy`c%J!4)7dmEx2xHjJa9*4zh4i@=4_?4Mha
zQX#U}h>K2m`o62`=g=~+F}xtCj}Gm&qzC+=oLADnbFib^K?_})*i?SuQJAA^(G>Sn
zX-@JgQ+qBaR_*LVByc}sBr}3u|3AEA&Y>o8U>V%w=8
zzVAIQVC+Der#ar!67RVZzwU#BqF*C#asxPmn~2gOk))fNEj~m^jG29j(PtF2It|9cyu$babxKnxc5Rid@kSM<@k%!F~rN
z?1lA=9q>E*`zp;lB0){0BM?`~wTCX!=GLe@qZ3ZyDfFNa%rAy?aF3!Pf!u*~yXnb*
zJLE7dJVVXGZ>X4DtQjRo`69}jM-K`?B{AR)AsCE_7!U-S`tVugRD>`j`9PPsg52L!kQ1wZy_S36S*L#KFFD%6&MkSyBXQsLGjd6
zu7mWTP(=h=_{*%HU{e$LLe|yD8q9fuG99G{h2SXf+mn<0!+N=ohccIkW$xcb8PC##
zLU2#L)2+@qfNo=r1`iB`BoMb!%f*{OQAH9hh>@COIV`;)*bXXsIlq2-6)6nwuSYvx
zfofW4mV*Z_*TsaJD;5R`Xaw7?5CT^l7`dupaeRIF^4fkYAez)APl*G}Sx*Q-Mf5^2Gqb);&?;W_W^a{pTs#M>AZM)L;45l$I{6O~_GHAuKJw1iU!DnIx)v{v;+2)Do8S?k(j>^0S-RKNCfD#|SCeaHb`oK0891
zY)(Up?iJ<4bdHc*qbL$JpQst5rRY?09b;sakCVZ%>2H)Wn~s~B_Ea*Qyn&}r
zMGmyjHsEDq+#-n6e^h{Es)#XP~fL0NektF4nf=xlcag_
z9Ee)Yo-C!yc@(#4vXm$%Q|Q6TQoj7?R-|@JM&2g|BW`B8GC%nr>1ome!wAf3hEA6@8J>jmaPM?!+O(7LB32bTl#@!%!%<2}_sAyi
z@~-r^*b9hP&|~Fy8akDxzRSC?aGdjZ+=IY%yQLBZy@vy+rkVhLocooGA@)
z%)dP($097no%>Sr`b
z7RtILS0DB*B&-h4loHK)Gb+O%iE8-JoLN$TQM&b_VDVQ`Uv$lA2D$+u4$TVA`-qiZ#@K6i^Rc
zBmG@k^q#t5j#M(?{tvkp_(zqWfL@|OqH3u@ir9h-?O^5*SgSmHMURm_qmOTIIQ
zre;ZFB}4T2fa=VXMi00VJAw%MH|s;t+t8vPohvOdbc>RDajrB`s(V`m^Zo^|<=!0%@x>=eXM6CDr^NnfS|lIuipipJOi6$J58uCpVxzx?s{E$xwalhAL8h
zlwk}(627%OMD^Bx2Gl$AQ6C+xht_VC(j>#$lW^bt7WMJ++Zr_8=&aY?`=18XGryG<
zavrU>OFN{;UsIzCq+Qa$*VN2Aq+S1!m6xIE|4y|U5RaWhZwAz|rBE$)JfLn|DqSme
zHmOIJN_EoWCUte8v_$&p$f3U#N{b}J3Up<%1LQr2qfNxjtE)ofow^WEvmH8lzjL4p
zetcCuSe_@wrP{JhB4a4ya|f
zo`*@!@7{K_4UH=uw_vPbjSp&8S{<`nx-Vwp*$@VDz5KXaN)8%=Dd3QI$Y1T1Qe$=&
zk*K%@-}`PrO}SrMEU!VFdi(v-E_oWY#_EkuhrvL%BVrw24oSOCyK+dg2}iEbjeiHsCUE
zT*QI316AB%?61bXB_;NmrBjlHLgu^$N-RAYlYp%9Ey)@4)RIuahu;XO@4Y1rkGZ`k
z?ry|Iye%ck^rwx~v2RNY6MtG9$`K9qU$F`WlWzeRmhU1_-S@Us6&p)xf;}HA%=a~}
zQW`mc+Hp>b@3Tx}eP=PKGQTekS3A#1v3+v%*hPqa^?hmBHM|p{3mx)J&GVz^rUCc}
zaUU~w=J^NgtHY28glhf+oZLBRuej;w2BW)PmXpnS`OVt2H^lXyFtugS@
z(?o!c2dqCT_;rAf(U7HQM$ZRP>TQFJ#z>x_^bNJaVu(|d`x%A~-#tG>RvpHN>4EkL
z3~6y6xXG8_#_q?O){XrPBjp-^sdx7?sD_0Yd0G1#4#r%ug>uFmg?9Eg*yN`Xr>4dl
zma9wtYKTyuNHz4cF2m|C%p_*0xAPHUEa{6rOxO;O2e%G;<{1XZbmxRHMl}W053>zu
zsNV(DE7=B@IS+=!=cBbPb`iPMCl(lrCbes^VW?a+4;cn6F^tdnX%_9*=%yvm!Q@x={f_dn3S>f~dS3J%qKtO-
zAmE&LH{l{{&<)3tI%A6=YZykwbO*>QJWpT9oJO36X1`=0-;7#WV;F4sCnPoePD8Pp
zcDEtHa2vk%`3x!Y(;tF_H@$}0(Y)yb~F&0%0?_w0of#vqh2~8y)C%)M~v%nW_MWPE=;ss7;-~~?R
zqM5+@1ecCeABTep_=(ez0M{udflfv8Mkvjm5%3oiua3tJMc4B}@5W#H%5Ix=-A1$d
zl}7UmJ7HI_q0vl#y#}5l^9$Qs%MjDZaD_Fld7-%!jp@y=MA+F2kh!O8jXx^a`~p5N
zXVav`>AJ`h@23ihe9ACh-S$6*k%n161k}do4AZ7?!hQGTQJs8*t&Z?e8{rlyZNiSD
z8Ko9;%}c~=`kau)%=>#ly?EG=n)p1%e%{;!PnW6cMO+cP@ip`gzyBAOXHK#YkVk#w
zCBxwH)d=}VBWf7DWBy^@(iH!2d|?BVfJ<;rvfC&SiNGo7gIaRPFhqU$MfmD1Kr{%y
z3HVLNFAF~#ev9!d!cV>Jgkg3n8w~WIxIg=Dc8I`;mjeO#=U`#L8zzSr8J3#`HSnfk
zfazuom&v82-tw+tf;Z9)(;!-MmvRA)E+5Hmztp-$0^=~JQt?KQ|PJw^&r+~WW
ztYI*0Cp0_{l&fv;8{%WWh34v=t?{M6p(SmG5u!Tjis4%MK{)KxhE79D^bcr2{b>ZKIKmlO=9s~k_P^&K+J~5Pb1=KIU
zF$|RNA=K4B7)Dx#Vqk^Q16_s9{z`zezBLRPb_sh45ldX~#qJ;+fKix@3r)q)r$p_comQ
zHlSLD%ERMchMKnIW`Inri_F4&?4Y=!Ni7{JJ7ZqKIudFv3foQ|#4O?Tcsbp$hNcV2
z^2mWhzr~meDboRD#|AE3Jbma|aFsPd9%6VLUX9^Na-!h}n5*vL^1OkXfe36EXMQ1f
z5|*`Pw6lr8HGHZ(+Wf1p2}f=Qa12KctItlC=UF({xG?M@GO=9L=_9k{&gi=U>c=19
zI>{ojX#QNTJYH)WMV{PP8GnvO+0@O%1=ON2LB191g?f!|eV(gJ4k2ThP408ZS!zSE
zJb367w2!6=vBJ`lonnF%TC&HXec>K=idU~Ml_#!x6s`?a65RfSYd&yAw&YGZ3aR05
z4NQT^MCQ*#{m1GlBu`3Ve}NToI&s@j1~hp^6K;uz{;!@AqNwVBg8Hv2o8{4J*=Bi&
zX3#tx+8XJ>GD;ED{4Mf`LD*u4?hxCzv1#v(6|8OpABvHIO5GtZ
zF>HG>Q?&cge{W9J$_{P@GyKd^P95^%>{Cr9$3
z|J<<;KRF+r2N3^)bB$ZaosVuq%DLm`qcae9uJL>{!}o{n1bIF>4RP)dkDQNAq6~x2
zN1xS!%kZs%6jSKPhmC&nfktsA+Q7uQHfN|yyWf5Pp0#XB~9mz+8e1?jV)g6
zBr*O3*=nJiNy<}p%ZtZUgIb)gj5{b}u75ZEfhw~n15X@ei>pK2`d?A#fGnv`@0N#*
zwj*k-+38e-|VD%av
zfy1&Z-^Hmm9AGaVT8+e8Cr89PHvt;QrB1Ik$G(MJ@@thEwDq-32&~1$?BE~2lyi9F
zmool;A(K(+@9vdN11eF5tJhj{KiL`-Pd&>2^S$z*wY$L)hQ2r78hE{SemqCsb
znr=^^~U3OLuA9mX=GXc1>{&i3FUG@t}4@xx2pt#;JP_8TqH
zyeu5h?iUx&!{c!@x)|K`8=A(yR}!ajNg5oujXk#Qh-E_p9b9Phd@_gF7m(;Po<@0%
zpBN2CAQj+Pi5u~q(HYT_`sjV~2t!+xq+UNgVy?L}ikFxK{h4|ik#WD5Zy8ml6$LU<
z8k^wGT5Ben`~Qq)wf=tjy1@Vi*w8lZoxEFnPpv~q;~tO`ddKke`pSNiI(AOPWOe%k
z@`RaMJpKQ#bp#{=@sy|qH(P^g-p6)|vH
z6eLUHk4MI)7a8@=OGt)9m8LuWqAf^!5e-T3PeD?&5F@G2J}57izpT+$Lr{W3dZ!ocbQJYrl81q=-!ZA#7V!IHZBVL4+^IiOJ+
zAFVa7e{a-U^J^_=y33M*L;d(+xxc$^1m|sB4FxD~@syf_qX?fP83iC~aVIk1+`Q#&
zpm-Z<^;#29^fPLRSALA}>`Fi;2QX&AAHGVy0)8Q`aWxGSIBxv8S_BC5Yw(XEu@fwdTrWIRKn(2jHS7h%b@DJn8osvI$p>N)0G{=4qPl*-G2ebecOxZhpFIAm
z3fZ(zc3u^+CpTgwM{+1PV)%cos+oV3vkXZZJX0fAu%}>o%|W8!0HR_RMZ~MsPs;t`_X0a)Z>+<+eGBH4#1KBzKRqe?1|7}{*L_Qq?=dTy
z3Z^7#+SBr)8--$?8LhNmoQa2f3{w*S)(n$HgVPO@aJ6CTEF#0yfbxG~m{N*$!*sex
zH%x5+2DwROm>Lkd{2BSzGqZr6Dq?7wR?b=I9)8ZD8I%yRR2#CxnK3o_t`*esKg*w_
zKRKN`(tbHs)KEMSky#t@Ghij)nH`JW)z}96GLkTZl*f-#5b_H!*D&=^*|leA|C29&&%K>`{A6p0Tgp*{Ea;F@0PNx>og{Kk?9TC#dzcTTiVR`(N5K<
z^0UNO%U?ky{$%TSu6}HgNRwG@t+D`NCl>eKy+&uYdUn+$oT$dtOZS6R$m#IS;CP1!
zb^$72!xTItvy`EHz42|&Cw!~M>wHDINr|omY-Vd!T>3e_D5t#s_HpI7PWjvAJCW+|
zO-H%v$`?^g9v*BHj{x~Nnp%adL=VQp0X7;$
zA$lBn&c+gfSX>hVY3vdoEz5i}@p)th^I$WB*lc1lq@h(1WrKs1&YNKgelu1yPgDrT
zKwNB_s9Njg*={b=g0PCBvln#Ur~DzOL>oBcs*wpgHPTW3SHxgHTG%!d?D!2+y;9GX
zE`j6@5Wf9`yXO}dht(ct$@@u&s5y~V$lWYb8}@7DB8tudvP;@pEY|g@cCcw_6JA1<
zwrPpQ%*FKYVh)&w`oqm~D&QaMU}?lAW;Fb}pZzdp*}okR_As2R=~&NUu_R>&i>4Rf
zl%%NFyo@>A9}uDb_GNjjyPQO+ZF5S4Ypct_CXsK8_5-=H;b+6ifi&zGha--yLjozQ
zp{sh1;Cjm6w~&ni2`Hu*DL6&=0fPAyge#8!2~O<(#x63fRR{J2mx{G*T=*lE5k<-s
ze^j!aB_M|ne}puWc?Dc+3Fz*H{K$?&8jOj+4z
z%I9oq{}xroi{v)y-|lfjV-=#2Wm%bSge3MPO~Sbm+7bnMo7e+rg=*z%^04BSfNDZ}
zB%>o~v-OZp^QOk`L(%$aV<(Oq^U`sGD9lJ|o8(L|ChZrf@$k)5^P1)27=5z=)R)IS
z)hsXU^=a=Q$WP63vT4mSO>xy*TI9iV$RGr{>e;Zu|12r~A}POETqhukwpPL0z>CGw
zyyh`}w?)p6NzWz)A?^987x+wTmE&S8p}6-cuCP@e*&E@FeJ9W~(11WExOn39H!oe=>LTM}#i-HdJI#4>;7)Z1o1tU;)sCqtm`C8c`Ixd
zv%*$DN7>D2OWF=$_FR-Eh#sIjH6UJzq=}u>@aSATk3nm}!Ay0?ae0hda9kcXgsO<|
zxxrs~P4dl)$EJh8dK3FS)J(nmxIA+3Z!qOS5-!-Fc;39Q#gf)9)RyD2bxI+8jGm)b
zKMs%#LJ$=Z2#^eCLXsEe#pB)#y-7cB=X$7o3cufj|BtnIfs3kI!^Zb8vu6e!WK>W@
z&_PjAK~Ygb#2FP36?GH@@d^rth=?$w=B2^#hDcdy+sX{nQ`WKMbUaCBg<*YU&AeZN1t=2_Qw-S6*u_lFvjW)OTx?|i87)pRCZ?T4D)
znjaIOyZ51H(5!^PYU7>L;`+qK1TYt0`teGSYxQIftrN+qak#tfx?YNHulsEEb)tp*
za+KD5q?xSQf_j!tf27$teGi?!6yNy$PPNh2`A(eCWb2q?k{#Uk7WfhGEX3r@njR}V
z;_4^44fnChA*C(3ssxC4rf=PuB&wE9vGMnB~+#I;!Cmfa=
z-rEe;%B2@IW2e%oepy_-RsIZ}k&pIxmOPt=wz|0Hg^fM4scxM15P2nhQtOCEG^`BF}|y
zFd{ORVU!e-kXE9_RSyeE87OY8UlWcQxqE!0kGvd{G?opf6uAyh5ouNGi(3R2)m=n2
zwaRv>(Mwi??pXo-QDCE}oQQoHyz6ti$@`#9yCY@?;km3W2;5r@<;+dY(Sds_N0p6}
zRtuOhJ3mb0jsdz8O}J?azNG0t{R31bPe4q20`&JKfXBatdS83|c=VM{1$}20swz&8
zwbqm{lwr^{jZb_d`ZVMjC~Gq`Hhh*L$>{_mF?hb{(6W
zZ3K2UUu%3EGz8joGvx$~!uOM;aBU=iqo72xoJhvCk$lQU5*HRk6tSECoVt1Lq+WHA
zvVfGge0QcRgVW(4&8ye+?%LJe|5D~(`lMcC(#uFCwRAEC(VER=FzJ7DH;oEF$8hTs
zC_%h<%$Zn{;0Ntl)ZBq-aLveK6
z4b~Xi+o-Zu%7mC;wZ?j5I%X_vJ8;6zI~E9+>cRDm$ZQ>E%H!coaXItH$|JennIA3>
za%m&v-lTP)w(}!pAD4BA?CH{m%B{G`1r2AuMgGO5jisv!o?@i6#R`Vqi6{(~1#Y2{
zABIKo>F~D1vySpmqF@Vgu1=J#7L-DKVp_C_>Dghl`NYs%ZSyK#3pp)Vuzg4idem=8
zd?I^MYL&;54K0k(C+HU;8EH%;<9@>3`#m2_L)2(DtVz>I+Elqpr6(_
z*p-eEe@aI_(vc)DbS1;?sYKoA(v)6fi}32~dm-3uH4Vor1f?MOqoPGz5(vU{Y0L_nRHd0!nW}>E^bmfhj
zNXNhlpzLC9K)W=QYFRrp+PWj<2lBB3*s_WGDIQy`#YlYLXwN*;s_id4I|nPC<&QB4
z_Y*(@d!ILm5yr9&LZTqT2qVyPxo@J=`8GB9sFBp3Y=h9*SM*2m(@>eh+L*kCrhv4A
ztn)FApLv1(KJacrGv
zS)!NWlZFm_Hc5Ygl0rNz#q}Dc9w9OWJf>8j@>fSuS_|}>?$KM4!l}ernj{BFL%NC&
zXpZ9QTKc`S=&$aLi%|bA;uy`Tcv#KpA}*ZHVnxFE`>%z^*i=OlG=8mBVu52eQKj^3
zMs;HdjazJ=0AbVSt91
zjylP)xJ>6v6#?erBmI-G5#N*_we<>m9@CTMV|f2rrne;A8|^)
zequ<+Lac$1Fd5%TkrMpG>5lD)qO=AqKE^0}i~Ttaj+kzrFVQ#dcfA%_XD`9`m%ZuB
z$ElEI)9?VN@GE%Oa{ACpM30yna!~_qiBlf(Qu@xa^x@lJyxK^RN=j;Rv$$ac)*7W>
z9DmOwc2;#@jx!Iy_4vR(;wvg?Vz8Jiy&o+0l5Pbf+nL}nDx1_XD$cmZM-Io1C8y7#
zl1O>H%_$A;Cq@R8(lWgn3vr}Ux4l=xVwiKXuxi0dUUKvkuknYji~Ebonpuy-?nHla
zl6v%FFjWo^2WkF|H>1+<0pb*mfgFnlh`lu5lO1$EojMeB#gRsbq?vLJ*_|FB4v}69
z5rZ{-s1yD>L>#XPMEjO{4-|u@d!kw6Stw_2X4yi6rg!VcEzXCC6C9#timN=M;tXrL
z%LjgTmEmjoC_a2un|d-TEtuN>%ZHrOv4LWL4~<5;GEhwHa46Hmh!^35!E!r%keH#K
zY6b7@AhEBedL^2a_h95?G_~QF!D7UCGny0TThykA?{zhH!$WIyCfvJXhi*(^@5vbd
zW!u<+bRt$7-|Yc%>+??O^TA@QYK-I`D*CH>OCv+YD8sjC->Es_DRRIqO@{
zG-B!A5OL7J&oC}AFG{FWi&7tB%k1y^>!@|Yj?!Tj?8i%s?@U+R|
zAvWKWa>GS`$HRR+X#lp9R2{WEZ$_5&-BKj3DGM3^3+{zNknDo+2VTh@|y5c&7P|9YUx0P
zXmV5{ko_nzbRttJa_)3Y3IWrwiMYdpIwQ1l6plWbA+1!SEv_=*QO6t%TG*8pw;JrV
z&XFwjA(X6sEa@&jGqeKk-3sqYMYh=`GrRtf+Cvj=6{KlKc~y+Z%(1)5H4i0}#Z@9Q
zBSvHIG2$@&IZ8;?M75MKMhxp!4g#p$pwhFYA0uC>Ymtu4Oiw0U7b^~3`_(2!!I#Sv{WBwi0@;(G6VQV1p6A_@I9dW00
zD^fy9#zRas2o=9TW=zxU4HgE>g1QPdv4brgD^_$kg5FbVcaW#v1PsVnORH=dy3MC7p4nsUUEHp8sEt`8t+sG*gDD|F`GUJ#Kr?@
zokdL2%tH|A6N?xxHH{auJAR3~lDgWM5^OEnY3
zUPeEYAdD5}rp*B#QV^;~x-&r>Vf-8|kK6W?*AVTfiDHu9Ht6VXTbOsQy6A6_SZuZy
z$7mAN(xHjsR-Pt1E#CFh6sxet%)a6|ZdQ8$-`-DL~{z0K7YY
z@NH3iuhw4iO3(6;ietrDnhz-IOR-{v=D9@ZI>(8z!;~2T3q995uQ=xPL{vjcstreH
zez-Yv`W~W&(%dM%b1h3H4Tu-b>cqJo(z19l#C7R{k!wpD#$tH_xcGSqH%x}PWZIRp
zarN+RY|y|6eFF52&vSdyH{3)9Ft$=Y;7liH4VR!Vmc4B=i)ByS#9~?Hy+y@C$HEz1
zru1XnOdya(GENeE_Ec_u8s2Ru)wqEZlj0|d6CAmWDw-%PZKVH@>vxj=6xS2!29l%-
zx@dfq828xfXhU4L;Cda7bgtAbxLK#Q;!%+6eu+9kNBK6M&hS&Cy13hQIQ-(L=U(0W
z@j1o)67XR}L6?z(JKJYB^uP$SOSvDk4QJL4yV&p^stF?K>U@IbE@)!17nRFtLv>kl
zutt6h&1=>(m&OL$MlIbmHrU}|(_RYOz8S4XzVr)gNOT|71Yak-5w6Uu3PW4N4=~Hi
z@YC4;B|N?m>^~Q82!?3SMx}upUxMEv+dG%W)HlA#9tyURdf|Rj@^eViT!q8B?QZkF
zY`p;=f5_GnWGf5SO16HcK5$>Qo`nt1*5p5A%Sp|DU0_>!&co-4E-Y&oC~N0nz8tn=
zvxlUcD)yb&^stBV{tP^He*k$6GUUpDi&6ZqGZHoPPZ=4DjC|Xkk#|vp_h)1UYo
zo2qQblgK4C*S2CY-A_;Mfn3kUWtVaZz72krb~m?SZt|b2m>FUuj!>a{aE3VAFJ&RMd}CT&hQ3Z!eA-4UrFe3!nIXoj
zi=On5I$Oo=j<3P;bE&@JGI9RYUXmL=CG#o9VtlE7^EvM=&!T_V)l$K=6>h^Z*kO!q
zslD_Mftr}T`xUPyq`LJK*^xdeRoB(J-V?NyCN+2PDR{q%d;Zc`>FyJnAnMO0
zNbX-W{E?Ik-k-n58TOr>hos0IVHTE4IySYX-Yu{}K{WWbb|HZd+99$qporj^WF^
zjFdP51mUg8VGrf4w;yl4y&BKUSs>Ba=l*f1ACa_G+*d_y)L%dVH{$YhAU?MmLO0La
zaP~qid_+}GzFZ>NL2t9W56ognh#ZAeU8ycf42*u!M-URyAS=RSO($$1J>dX`P6&Kk
z0;ppwo=Mnz)SiNHemywIatt~8MzidN+LHoji#;@_K|mTaTl61n$T7;Vy-(}Z0DddR
zmnCj-2Tw1+KU|C~^04G@rXKUI?A2!Nlz*bmDkN
zc2?~N2K6``>oJKFn_43=lQN+bB#fFmW*U<_!4keaPVXlY6)ZDdi&O}tpy0R_Py|v`
zz#V694qEg&y%=eCffRot#8;`u>NQ;)Pr-%n7{N21gX1HdUs)3H0pEifB)ZM0Kd5&z76o9$
zJQ&b!Q(R@RVx?<yG;{`F9gmZ1K^wq
zXMQnxIvjVC>}s+rvxwp6@>u9zKu(lo9i)RUMc?EUu+oi4L;u~m(StTi+c|9JP{cr4
zt=AIV+M8Ndk+-5!6p(XmRuJ_ggoUwQq5A3y$;RZnp=3
zNUoxdErLyY!614|#<`-OdfP-CXUr9Qsp%{|ajrPf^`6m$RW{o)KTF;!uxqHCE3VLF
zQrjFjPYl$o!SEzanTIop8Kf(iCmxQyjT3jb&AmZx{DiioEpi8>mzM5pumq<2Ns>P{
zIUyRKXD0c}NjL$>Hlf1g7`()*o-g)EUW5R|PZ9l#Jy4$c87;c#HD&29sdDvs&~Sa9
zxta+k7v=pIsm-;ZVW3L31=#-4>7>fOAKMBff}Qn=
zauH6AiBMXaZ40Z+gY?v{VKrJ_QH+U7-`)kcioeT0U?NFNJ0p@Ey`dw{1ZwhT6Snks
zNVHuwYQMA@96xjj`Y0WO+B!$ANwgVC*CgPIE88I#ApJP-UruM!CH5BBBV07Q$hP4Y
z41y|as9kC8-kVx^n@W*i#}mFZma>vb38l<00yR0ct`0@Rabr2LJcx1{QLYB>Ra0-`
zgy84ACS~~_f$B(Nf|Bw6>KL7t*QSBzpi_$MkHdg82myZuMUTxj7T{+~rd^NPYaOJP
z(ie#%!VaTZ(X9M3;$o+mPG7VOX0;hs+0>uP;{71JGS2LjsuqdK9#7wux}}SKMpKiu
zbxdKx!5jVo&&XrLk^2L^FpdU0!}7T6;Sf?;R+Nr-SEh@>>O^RsOc#gwf5%QFG$mW9
zbC<%;bVH7|Y*#Yeze*Q<{XU|MgL?rDj9r>e=*pX;BrO(4D;!JgGT|7KjmrclN*m%H
zj?mDPnwnZ#n>zUFC->k3V;>z-qNuQUjj+nIFb*?m3$_3{xWPU&H7Nzie8G#h^co}>
zd5pN6D*sReVvQc9*Fc-Z*;IlKyFv(U>lh0fkny&+V{{qYGpByUr*nS26CGzP^p*$X
z0j)Jp?3U!2jG-I5GLI2X@1snr_aNAy!cb#2-{{uD&Vzp~(?sKX)GA*X%Svw%IEGwT
zs~9nm7f1zKi_$MubB2}w7l}a8vB=Y3O9bM>1!78t41|qmgq#mM#*TFouCJN&6w8hTxhcsw7TFp*n+6b+lh7x|3Z?WEpKH
zX-Aa1{ZF!)?PP!R{_lw`BC3oulft8wtA3Y;t`ikTFP6aUc1q<6CFSkneWkgbC^2$O
zB9D*!07h$<_#t1q8&X8Kw`CsJ0dyn4W%MXTFiweK0PePF=(#V7T@(e2hjh587k`(2
zcZh@3C{5|dH8^#oyDoIBlkG`hjcl9@$Nuk-bzDW-*3O4Uc5AP5M^dt%k
zsw<5g{5TjGNMHR!GmKxoEce=#28Q}lvDX83Sfg~bm%f}hgb
zk_8uCJa>=NDrH29EP@7o%>k3$o>N=Sfi?Kuv#u40{AnD{%s&C`;petb`v&L##aS1G
z&F8?%q?Qlfa!Rl6#BCnkHGHsB9NlsEEs%nXtLuoI;V
zKFmJL#ob^!FsRkbz4oG9W|oP*#9;Vm)wUZx
zwx@1sHht&B(sR=-dLy$C+%YAQ82Y7UPl!XMgHMPHyYj|Tx3T5&*WT}7#Yem)C-#V;
zQOp6ivDkj!Ii<37xEwYIYp}};TAsOcN^hf+Rc?bby=P#!a|$dTm%}m#Lx}H_Vjn+F
z_Zbj&kv(8SDO5{uK8brfeLuA%O5(`2RRpdQG2NGL-HxzIHOUu#DDcfHTGqKS;6tccuGSQvHR3oIq3snZayr>7+@w;sr^KnOATys5M^3_+R75@V7YxBPCdq5xL8k6s
zIqOQ-B%*Ci#C83k22i5weJ8u}FPoHTWt`hjJ}vtB-93SzSo><^Nb*K&-;Y7ITAKE>
z*w@_B0z2H&-b$4(Qs;MIp>O|slaq1G{5w^iN1KwyPl)YRY3?{0z}!I>qR$uLDf2Vp
zfZnWm6yM|ml^Opgtt3f$ge=d8r_c9`;p`S&{~S)=zoml&%X4Bk_3}5IQr=E&k1(`rgKo^_G%$Xyqg5sK&qGHiS
zievsvVptoA0niZ%Or`90`8=3-7_*59Wj4ZDA}u~7_8Q-Z`PY{={rW{;NS^P?0ySYv
zRDUT8M~pmz0VU{
zDOQhjE1zg_w_;PoZTzCey^2j9w+Vxs54WELUu%aGPN8*C;lT+$J(wtW<3J
zbDOcz;z@^M<-@Hk(PEWi+M{KENt3XBvEK@)@Sd
zh7<{>6kREXrtbi$cs!U$iv|m{RN=
zF-S;vuZn%yuw=R>Mg*NoLCd|e<+Ar?d;v!|t3H1orv`!1pY*Kid&(+L1kacKnmD8n
zAC9~?gLN4Xo0=6~1xTo6EI{%wFoV2z4SYoZ`5ydH^?
z!YQTHi=mEH-xKGWEs%&s#hL75tk#rN?4*PFCYrs-8Imgd|B7ZX;!cv>nKY$m%Cc_K
z^uZnkEd|3Ubw)0~zp*M+z6p+pG>G-!qYH*l4989K$ZQm@Jp^YvM4k)#moBdnJAz5?
zC`LE%>_`U;qEAm24gz6PwtQ;uCZGNn&Se;%^XDU+Qr%Z#KlS5a0299!mj`{+l?~ir
z8lc@Z-6XNFn{MuM9g{uxJD6hDfB{B2^Sc6Hnv(zm7EH3Vp*X
zPH9G~_;~+AJMoIE2F?vhNO1NA(oH5^E$PgptH*t`&M7*&zYca6+(MANgJ&d4i(XEe
zg(#kNil;PJam)3u#o8GvkE5NXCEtR}tkRCsbi&Qh@!=lYT$RVW-p9+;+CD1v
z`#qh<-_vM=R37WRq`eJjADjH0(%TJUv`2R@X{uJ6*pZ7ZjCl3|2m=heB?b)q2>1SF
znt!1^2v#tyHa3dmJ!W;3
z9%~Z29q+H#sy)=-7@g9UAH=@hVsKoD=}?}E!(V=>D$nchl(IT#Ellp+;SSpO|D2Xz
zeEv_;GR@m572HBv=INy4x5Pajr?t}bCZuJP_V`x@ZGeZ`+u)Qcenv8ub>_)fbFeKL
z+k$Xf=&g-q$q4^N-0U%5EoqI~-966W=m{NDkv&(oB@_dIRlbt!l>TYdp6(&wg5t2s
zzO1-Lb&&KUst$%@71_8zn%O80@_0cdo$Ra)Q^QWW*;zY89RW>X7wv;R-bc~?nQr|o
zi2v-Ob&LuDw<2~eydy|o^Nv6d;rKs!Um#Wo&XJHPXNH;#l>{Yu8Pz?!`aS1r*rNiG
z+ZV%L~;hgmAlQM
zr4qjOQBEtkMK@dd+fcpy8n#qyl?E0dOytpwna4JV^W!0ya^(kkY}o
zGuRP;k!rlAY?YxjioQfUxVc1f^w#$1*cD@JnpN%WkJr8wZ%<`f5WRMoJMLOtv%PDQk#+NoD)#2k0#8bf!gW;@j&HjV9k)v~EO0U5{-qawJ;r7Xnz;3txYs@q
zJ(3kVE;346LDqE2sa;-+a%btg6RQqU*HD6cFUFugS%U7w
z8G6%!0e#ir1oL3P>id(vKf!0IXWwatjz6WynRWC?&?k)g+K6+}XBN_zHP!h1)p2o<
zcD+if57iD-_kw^>Lzp&`X$r%%uc+10+i@X+eUUzKM}ir2HVuOlnWgFs+Z;
z3htOq!?Zn9FSvQBa?@A1>C4^pyWI3eZu)#TeY#szM#*ou*5I2!31?D*EYLyVLYN6D
z_^(oeBH_rS1ck%*|DBYe|BJF1=?DRNyU1iWP@(2iDg*1pwZJQ0^vhRMbsCc9bA^j|
zXm?~5$P1Gl6wV4jksag<9tk~U2Pvd9?^)qm&EnbR;xGbJi8L`n8|8t#J`|zdsUdDR
zsnba9+|2dR&8?Pk*AKW98ax-0C5|99?tFmzU?zT$N)3D!p1tCA5*Cf`)QN}w;BmLh
zBXQQP-hajG7JizH(DKZqoP9R!VVkwlD`B9aIM
zA(E({^w#rQPw8i~w!gXwRy{4+0Ue8Yq`pW5i7E0Q;s+x4i6?@GHt|Goa~Dtah=;Vt
zqMfd8eG#kagWB*8#QE9yLRn@o9&C@*P8j;>ZLI#|vGMANleFPKfH}qHap!Z?{8x=f
z8$O3)!}9;Qc$bLZ>A+a+kO1QT!dPWbs=joy(c{t&m(IcP>ZPBm8`j^J8pmq;2f`~J
zbgAq=V32FLRNwe*U2Q`cr~y8|Ee(m$`kToM9|Eh-Y{|!frfK-~7q_U4+*VBy9VNaT
z3Q&z^{MF^K{Yc5S80{4GYtUSb(MI{d1f~-_)~;KsuhW82i{6)s4Nag|Egc`P4egl!
zF;!I;-=dEd=}YyX28+-wq*0_VH9gIwFZoId6SRGM)F8;8MKFO77r`VPWOW(3g*1u?
zCgY1lG^HP6LD2suf{7F6BA70~=buF|nT|5rK3hn`L@m`1?dKS3~=<@QIKdDv1f&2RqjCC`IE152++U
zo4|rVmQsM!lz^GF9{yq{BYQ-$aI$uh`slMbHl3`^9-WSme-xucb||_3Sz1htQWeNS
zj8d5N?i4M=^}>WAds51qs(n_iM^Ye9X^>wtsF5fo;R1HnSvUhg8IeJRNqTTHU2Pr(@R*#ykR%fe13YnfB$qn3v{%
zH;@>Y4pUq>PAgn?T9LNQxR&_hN~^Ob68~6&S9DpR_zQmE~O;HOl=Ql6Eag9
z(AA1_F$#A{E{*f6^JCxq+%rlWyCl7qWrYcL%4YiZk-UhR`ADA6{r$CICo3GwL=#Hm
zPb2yET4f{;hlWXD<*`?3Y^V7Bu6*JQb0gjMD)2CH39-k~&{7(!*UmJNa!Lt#gSFNcO~8P_cv7
zojCNN$E$Ro>h!&U<*~BJ#N!z~oq}P1E3da
zJizSHzT06BjsuZGc^C#=EE3lmW3JPr?pdmNuL{MYe9U!bt~P+*ETzcONvxRh#X_xo
z0Xl5r+Sko9XOfT|_QsKp5=Y5D!3RXH%FEuuM2a`hBre%mib2^B9oLM@?|4l#?qTR^
z4ia!I?njA=v>u{`kA+d1fn3x*ru~5;+>poW4c82y&e`0_ohUxck
zUF>3jy@C0TZjX^3&d^>4oBzfzEgAE)-Tf8b;Un-^=5+ym;6zUlXn5&{QyMl+>^ldm
zdd~6>?bw)
z<)~7LQ%X)*kMAYqYlGEbE0VJF5koCB+w!%en5GI&5wxG&9@}FGf2(9HO7siUIO8>q
zU|+DH#X(;6v=(}=N0MQ`tmG#^(&km#L9?DiA*U^kuC|91$7?)_?{%>I=6KCZlDE0+
zjiBR<*B77lh~C&z@IgDtHa0rm7in{f$KUusK+ghgj|@uDo!Ib@B3o~HR3TcHC9$}Y
zj>EwYr))xtHiQop>>3DcX2Qi4Tc<7D&*@vw`U%(_-0n~+jX2DZ@8QuhEA^jjT3^r7
z1=!Nkaf5WBK%2`7#9XNDANr?U`yyD|Z49Rr@Lwq1DAcZZQ3@Kitv$zXg*f1KcXED|
zupzK=C5$%*FS~XttF9>1r{Xec`;#b5b`&5zx?1Z$gNj@^bWz!srO1E#0{sz!s!BFqr@mUM
zd6s;XPOE1-bBu}O+DOVK9!sP06gEYkgsa1K+CC#5AR^WBb*%g-6}N!Oae?zk45Kwp
z`TW~-qQsBU!&w1rTcaJ|cnm&+BIRdU05*Jbx(`a3%o-sS#VuR
zT?szRJzL%}-#D=7o`+2=x~H;-l%D$a0?tJP<#9?PCb!c}1I-2!xQ6d}--$Jbm~7rT
z9(1nhl_Gx%Ys@Pt5EUSeS*z_mDCI8eWTj0FbZLz%OMJSWzT1OuP@(e~8*kv0tQ1nW
z(3*RvPc#=?UH$tae1Ggri`JdBca|&i@IA2&+Q6>YdHR%3Z{oX#a2UE#8|0w&
zP?R|=
z41^CY`Gn45{5R3*r-&O5klRxAAQPD8=vw?xfMD}-t`3lAJ%E^&29T(0
z>~tB@)o7k7Z7Q*k{iDFaafpTl4mxqCTuA|lNjHHKa220NW#@x9oC5pP@=u-8BSqSP
za4JE5&=r&_cl!)MaI7cu@(z?gNBM#APZ@*dOL&00{snD7x0gZ9ogb>}rxX_xdg6#h
z>e>b>Rc?B(^)OI%vco@gnjDqz&8|oUKawb&Ix-`rZppDPXJC(M9R?
z2F6jtuHB{ApVD5CD#mG}`iB3;_9ng-j)CPI`&l`TO#hAT&U<#Wv@(yC;decxpATpk
zMK^IDY8Ms1Y_WlPI0i@X{|(hxo39
z+oNNpB5_doHBy5%+t^9AJfJk9&Y-3=A|?lD9nn)7(cHgmM80y>QZ}5(9{`ocl=T15
zm^Sjp)Kkt^=&f&~Czs-DbNyYdiWL;SMc1dwc9vg!fmH+1Pty<3D0}6wHZUU|_BkqW
zkHnA%Tt(YzQsrT!M^|d%UFmh+hf14L<*mfdjyKHTu{X?LhL;-HY5JMi&LQ-5KSPTA
zd=`ArU;x<#?6V*-FKgqa`q#7>lj#OIM~(m4C{Iha)q@uPw-Luds>^DnMj=uL)e7zm
z9zPxp^lO11XTP!RSHQ2dvQq2Ej($I?)DD!!y`i0DLeI%*&EAfh&d%S5PahpX90GkH
z4xB4&UaWdUYYN-|OWej`6OfGN5eAddN~tl*vv7m+`y1LN(ykNQdTH02T8mWwrq(1G
zPijp;oTPIkdu*Sn}^oYW5O;DL|+{oHW!DE5RepVZ!%IkPM=SUUpl?sk8=v$h>c})wygnu%#nN&O0O6Mk6ywdGU4Hp8o6|stG=aM}pw1k%qmk
zea;iEsmyr%!F$@#Dv|5O-?f8P4txgQiuuhdCqWVr4oIs@@ocYbf}wOu{fHWQcX_L`
zvceNDBsRatqm&!jsO$1n3r{P_QwVulq!*j5h(gNK#&{fv!5$dzkEX8jG
zfCZ}INrZSKm~>a%!!|n*$T#38_cRRVyp|Dwh
za;NaK$vs;K_qe}wcZ?(tx5-04mj}5N6Hc|fg?`&2qk{G%zx&AVZ`HguSV5yDRRr}o)PAU!p-w|x
zh58XnKqk6C1w%zZS)isv&4tQ=+5oi+>JZd1sCS_f5YE~;p6C9;vjQud^e%$2zN=uY
z@PUG!6%Br3%_`%VSt{ez3ViBb`CApHGB%x284VVd@v)#D4$Gq!{nzcz0?Ylnh`lWrf0uLLB5|Em@hD3H`D>yDh6w$X;nLfVGgB@gRYaG`|0v?ilaDoxS#kdCD2LZ$i?-FzuARTm)T
zr|J@QAd(a}DMk7+RTn5Vr|L4L+&Q}Z;C^6f2Un0VdE$8R|KI{BtDum`ju;X?WLQ{a
zROZsmNXeL{3-QUzS|fnTK`30d!k(L9%Oc-WVw$cB6|#(N`^9!n%$7BJS0m?-j<6`)2z49p-&FbKK1rcXs|V
zX8pMGCxYJHAg>>{H2M8QOOiK@Q_may<)N{=#?|Lf{i^Sc7sgGhEbXvzRpq#q&qSPk
zv+2WeS5n`tc&hB$xcKvZ*ZV#4^|;gh-@4oH`NnZ#VlPMN$eZKVMRqECEWz>1xEn1I
z*NWHuXI#zEk4lDQc$g0tU5#rl^e~Ujnz3qwR%c$dVNvxDAsx+Q{&}JFrKugwtIn*M
z^Vm9rxo1eitJyz!nM2P`&-!>_Cv)0Hj}A3WUCie`JG^>qKv(mJLkE5^`Dj;j!Hh}y
zUkvp#XIj^NxPP6W`FPC}zCB+I;Qkx|ea*jCuh}|hL0|K0?|=BO6-fikM`f>TPYxbv
z?wj8GSnvG<&70;2rQbO|#2o!bT8}52hnokSJ#;kZ>=^Us>zgz`ZW?QDdFiK5r!BUa
zGv1tj>x~6*=2pi#O+}w6=9gO1t&faKG|xX#^>zGDGtAE>zalggTFrl7^!CBDPg2d^
z38MtZQ>W&bqvG;Ae?NVm+1mAmsPB$vn9mO$RiEa$*nDtH!H(mG#b#C5sF4=~mzXn#
z&ki5-(h{?&^|i^jrsSCCHeR{yT$*DZJMQN
z%e~F>f{(h3T!s
z&ziUOOb+V?MMD~#&J&xcuxt?V($FN&pWLd1d6v{lzD>idkprm>}-D`l61^
zC^1imH`f<&4By1D>S2z;
zW{yn?)^FkF{B0c5w{x_Xa17bO&>_@wjgYXDJ8UoGcvwN<5pFJ0uw23PN4fpW3Tk$7
z^DYI2$GACM!8r=%D_F$Pfo`l=G%IL*oCn;jpz#TXkb)Ho3cI=e1_gI2XxXFqf0ARf
zf>jbX-`vYFu9zaNMfk_G)exn#Qxn)5B6Fp!+QCvWk%Xg-r}-
z{Cd=&_PIbAsw;bKX`ETP-#l>sqwoGF