From 623362e430d96f5ba63026a252282ca21068d0ab Mon Sep 17 00:00:00 2001 From: Rendo Date: Wed, 16 Jul 2025 02:18:17 +0500 Subject: [PATCH] Rework --- .vscode/settings.json | 2 +- NewLON.csproj.old | 8 ---- addons/pvzadventure/AdventureLevelResource.cs | 1 + addons/pvzadventure/FieldSpawn.cs | 8 ---- addons/pvzadventure/FieldSpawn.cs.uid | 1 - addons/pvzadventure/GroupSpawn.cs | 7 --- addons/pvzadventure/GroupSpawn.cs.uid | 1 - addons/pvzadventure/RowSpawn.cs | 7 --- addons/pvzadventure/RowSpawn.cs.uid | 2 +- addons/pvzadventure/SpawnInfo.cs | 7 --- addons/pvzadventure/SpawnInfo.cs.uid | 1 - addons/pvzadventure/WaveData.cs | 3 +- addons/pvzadventure/WaveEvent.cs | 5 ++ addons/pvzadventure/WaveEvent.cs.uid | 1 + .../pvzadventure/scenes/adventure_editor.tscn | 13 ++--- .../scenes/disordered_editor.tscn | 43 ----------------- addons/pvzadventure/scenes/dn_d_card.tscn | 45 ------------------ .../pvzadventure/scenes/dn_d_with_number.tscn | 23 --------- addons/pvzadventure/scenes/zombie_editor.tscn | 9 ++++ .../scripts/AdventureResourceInspector.cs | 35 +++++++------- .../pvzadventure/scripts/DisorderedEditor.cs | 7 --- .../scripts/DisorderedEditor.cs.uid | 1 - addons/pvzadventure/scripts/DnDCard.cs | 37 -------------- addons/pvzadventure/scripts/DnDCard.cs.uid | 1 - addons/pvzadventure/scripts/DnDWithNumber.cs | 26 ---------- .../pvzadventure/scripts/DnDWithNumber.cs.uid | 1 - resources/levels/testlvl.tres | 35 +++++++++++--- translations/gui.en.translation | Bin 1578 -> 1124 bytes translations/gui.ru.translation | Bin 2369 -> 1400 bytes translations/plants.en.translation | Bin 3102 -> 1208 bytes translations/plants.ru.translation | Bin 4225 -> 1523 bytes translations/zombies.en.translation | Bin 1842 -> 781 bytes translations/zombies.ru.translation | Bin 2753 -> 986 bytes 33 files changed, 69 insertions(+), 261 deletions(-) delete mode 100644 NewLON.csproj.old delete mode 100644 addons/pvzadventure/FieldSpawn.cs delete mode 100644 addons/pvzadventure/FieldSpawn.cs.uid delete mode 100644 addons/pvzadventure/GroupSpawn.cs delete mode 100644 addons/pvzadventure/GroupSpawn.cs.uid delete mode 100644 addons/pvzadventure/SpawnInfo.cs delete mode 100644 addons/pvzadventure/SpawnInfo.cs.uid create mode 100644 addons/pvzadventure/WaveEvent.cs create mode 100644 addons/pvzadventure/WaveEvent.cs.uid delete mode 100644 addons/pvzadventure/scenes/disordered_editor.tscn delete mode 100644 addons/pvzadventure/scenes/dn_d_card.tscn delete mode 100644 addons/pvzadventure/scenes/dn_d_with_number.tscn create mode 100644 addons/pvzadventure/scenes/zombie_editor.tscn delete mode 100644 addons/pvzadventure/scripts/DisorderedEditor.cs delete mode 100644 addons/pvzadventure/scripts/DisorderedEditor.cs.uid delete mode 100644 addons/pvzadventure/scripts/DnDCard.cs delete mode 100644 addons/pvzadventure/scripts/DnDCard.cs.uid delete mode 100644 addons/pvzadventure/scripts/DnDWithNumber.cs delete mode 100644 addons/pvzadventure/scripts/DnDWithNumber.cs.uid diff --git a/.vscode/settings.json b/.vscode/settings.json index f44eb88..e6f77e8 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,3 +1,3 @@ { - "godotTools.editorPath.godot4": "c:\\Users\\User\\Desktop\\Godot_v4.4.1-stable_mono_win64\\Godot_v4.4.1-stable_mono_win64.exe" + "godotTools.editorPath.godot4": "c:\\Program Files\\Godot\\Godot_v4.4.1-stable_mono_win64.exe" } \ No newline at end of file diff --git a/NewLON.csproj.old b/NewLON.csproj.old deleted file mode 100644 index 53cc1f1..0000000 --- a/NewLON.csproj.old +++ /dev/null @@ -1,8 +0,0 @@ - - - net6.0 - net7.0 - net8.0 - true - - \ No newline at end of file diff --git a/addons/pvzadventure/AdventureLevelResource.cs b/addons/pvzadventure/AdventureLevelResource.cs index 46e05a4..0595988 100644 --- a/addons/pvzadventure/AdventureLevelResource.cs +++ b/addons/pvzadventure/AdventureLevelResource.cs @@ -7,5 +7,6 @@ public partial class AdventureLevelResource : Resource { [Export] public float startSun; //[Export] public Array conditions; + [Export(PropertyHint.Range,"0,1,0.01")] public float wavePercentage; [Export] public Array waves; } diff --git a/addons/pvzadventure/FieldSpawn.cs b/addons/pvzadventure/FieldSpawn.cs deleted file mode 100644 index a14532c..0000000 --- a/addons/pvzadventure/FieldSpawn.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Godot; -using System; - -public partial class FieldSpawn : Resource -{ - [Export] public SpawnInfo info; - [Export] public Vector2 position; -} diff --git a/addons/pvzadventure/FieldSpawn.cs.uid b/addons/pvzadventure/FieldSpawn.cs.uid deleted file mode 100644 index 5e32553..0000000 --- a/addons/pvzadventure/FieldSpawn.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://gbeuv0b1mvd7 diff --git a/addons/pvzadventure/GroupSpawn.cs b/addons/pvzadventure/GroupSpawn.cs deleted file mode 100644 index 72498b8..0000000 --- a/addons/pvzadventure/GroupSpawn.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Godot; - -public partial class GroupSpawn : Resource -{ - [Export] public PackedScene packedScene; - [Export] public int amount; -} diff --git a/addons/pvzadventure/GroupSpawn.cs.uid b/addons/pvzadventure/GroupSpawn.cs.uid deleted file mode 100644 index f016205..0000000 --- a/addons/pvzadventure/GroupSpawn.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b604mrxpt0owi diff --git a/addons/pvzadventure/RowSpawn.cs b/addons/pvzadventure/RowSpawn.cs index 1dedd93..5985e40 100644 --- a/addons/pvzadventure/RowSpawn.cs +++ b/addons/pvzadventure/RowSpawn.cs @@ -1,12 +1,5 @@ using Godot; -[Tool] public partial class RowSpawn : Resource { - [Export] public SpawnInfo zombie1; - [Export] public SpawnInfo zombie2; - [Export] public SpawnInfo zombie3; - [Export] public SpawnInfo zombie4; - [Export] public SpawnInfo zombie5; - } diff --git a/addons/pvzadventure/RowSpawn.cs.uid b/addons/pvzadventure/RowSpawn.cs.uid index 8e41a18..7bba64b 100644 --- a/addons/pvzadventure/RowSpawn.cs.uid +++ b/addons/pvzadventure/RowSpawn.cs.uid @@ -1 +1 @@ -uid://comcftlx0eey2 +uid://dl12rj75tk2qi diff --git a/addons/pvzadventure/SpawnInfo.cs b/addons/pvzadventure/SpawnInfo.cs deleted file mode 100644 index ba2d5ba..0000000 --- a/addons/pvzadventure/SpawnInfo.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Godot; - -public partial class SpawnInfo : Resource -{ - [Export] - public PackedScene scene; -} diff --git a/addons/pvzadventure/SpawnInfo.cs.uid b/addons/pvzadventure/SpawnInfo.cs.uid deleted file mode 100644 index ac790ba..0000000 --- a/addons/pvzadventure/SpawnInfo.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://rnnlkqtm6nhy diff --git a/addons/pvzadventure/WaveData.cs b/addons/pvzadventure/WaveData.cs index 64ff8e2..5c52164 100644 --- a/addons/pvzadventure/WaveData.cs +++ b/addons/pvzadventure/WaveData.cs @@ -5,7 +5,6 @@ using Godot.Collections; [Tool] public partial class WaveData : Resource { - [Export] private Array zombiesDisordered; [Export] private Array zombiesOrdered; - [Export] private Array spawns; + [Export] private Array spawns; } diff --git a/addons/pvzadventure/WaveEvent.cs b/addons/pvzadventure/WaveEvent.cs new file mode 100644 index 0000000..fc628b9 --- /dev/null +++ b/addons/pvzadventure/WaveEvent.cs @@ -0,0 +1,5 @@ +using Godot; + +public partial class WaveEvent : Resource +{ +} diff --git a/addons/pvzadventure/WaveEvent.cs.uid b/addons/pvzadventure/WaveEvent.cs.uid new file mode 100644 index 0000000..037dba1 --- /dev/null +++ b/addons/pvzadventure/WaveEvent.cs.uid @@ -0,0 +1 @@ +uid://cw7yc3i2lgcja diff --git a/addons/pvzadventure/scenes/adventure_editor.tscn b/addons/pvzadventure/scenes/adventure_editor.tscn index 6802855..8f15747 100644 --- a/addons/pvzadventure/scenes/adventure_editor.tscn +++ b/addons/pvzadventure/scenes/adventure_editor.tscn @@ -1,8 +1,7 @@ -[gd_scene load_steps=5 format=3 uid="uid://dkq82o31vr3i2"] +[gd_scene load_steps=4 format=3 uid="uid://dkq82o31vr3i2"] [ext_resource type="Script" uid="uid://dkgxtig5fwdgi" path="res://addons/pvzadventure/scripts/AdventureEditor.cs" id="1_go5yu"] [ext_resource type="Script" uid="uid://binuuattefn7d" path="res://addons/pvzadventure/scripts/FileButton.cs" id="2_d5hwn"] -[ext_resource type="PackedScene" uid="uid://dbiv5n3asc848" path="res://addons/pvzadventure/scenes/disordered_editor.tscn" id="3_1ojhm"] [ext_resource type="Script" uid="uid://b0hl4ap18wbb2" path="res://addons/pvzadventure/scripts/AdventureResourceInspector.cs" id="3_d5hwn"] [node name="AdventureEditor" type="MarginContainer"] @@ -11,6 +10,8 @@ anchor_right = 1.0 anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 theme_override_constants/margin_left = 5 theme_override_constants/margin_top = 5 theme_override_constants/margin_right = 5 @@ -49,16 +50,9 @@ split_offset = 500 [node name="PanelContainer" type="PanelContainer" parent="VBoxContainer/WorkArea"] layout_mode = 2 -[node name="DisorderedEditor" parent="VBoxContainer/WorkArea/PanelContainer" instance=ExtResource("3_1ojhm")] -layout_mode = 2 - [node name="Inspector" type="VSplitContainer" parent="VBoxContainer/WorkArea"] layout_mode = 2 -[node name="Cellinspector" type="MarginContainer" parent="VBoxContainer/WorkArea/Inspector"] -layout_mode = 2 -size_flags_vertical = 3 - [node name="ResourceInspector" type="VBoxContainer" parent="VBoxContainer/WorkArea/Inspector"] layout_mode = 2 size_flags_vertical = 3 @@ -70,7 +64,6 @@ layout_mode = 2 size_flags_vertical = 3 hide_folding = true enable_recursive_folding = false -hide_root = true [node name="ControlButtons" type="HBoxContainer" parent="VBoxContainer/WorkArea/Inspector/ResourceInspector"] layout_mode = 2 diff --git a/addons/pvzadventure/scenes/disordered_editor.tscn b/addons/pvzadventure/scenes/disordered_editor.tscn deleted file mode 100644 index 409f6b8..0000000 --- a/addons/pvzadventure/scenes/disordered_editor.tscn +++ /dev/null @@ -1,43 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://dbiv5n3asc848"] - -[ext_resource type="Script" uid="uid://dvwbkbsccrnri" path="res://addons/pvzadventure/scripts/DisorderedEditor.cs" id="1_55p46"] - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_c8vty"] -content_margin_left = 20.0 -bg_color = Color(0.351173, 0.700939, 0, 1) -border_width_left = 5 -border_width_top = 5 -border_width_right = 5 -border_width_bottom = 5 -border_color = Color(0.216217, 0.607245, 9.62615e-07, 1) -corner_radius_top_left = 5 -corner_radius_top_right = 5 -corner_radius_bottom_right = 5 -corner_radius_bottom_left = 5 - -[node name="DisorderedEditor" type="ScrollContainer"] -anchors_preset = 15 -anchor_right = 1.0 -anchor_bottom = 1.0 -grow_horizontal = 2 -grow_vertical = 2 -vertical_scroll_mode = 0 -script = ExtResource("1_55p46") - -[node name="MarginContainer" type="MarginContainer" parent="."] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 -theme_override_constants/margin_left = 0 -theme_override_constants/margin_top = 0 -theme_override_constants/margin_right = 0 -theme_override_constants/margin_bottom = 200 - -[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer"] -layout_mode = 2 -size_flags_horizontal = 3 -size_flags_vertical = 3 - -[node name="AddButton" type="Button" parent="MarginContainer/HBoxContainer"] -layout_mode = 2 -theme_override_styles/normal = SubResource("StyleBoxFlat_c8vty") diff --git a/addons/pvzadventure/scenes/dn_d_card.tscn b/addons/pvzadventure/scenes/dn_d_card.tscn deleted file mode 100644 index 2dd6334..0000000 --- a/addons/pvzadventure/scenes/dn_d_card.tscn +++ /dev/null @@ -1,45 +0,0 @@ -[gd_scene load_steps=4 format=3 uid="uid://dcxxgs78o2apq"] - -[ext_resource type="Script" uid="uid://c2wsvwbqpay8p" path="res://addons/pvzadventure/scripts/DnDCard.cs" id="1_k1qq1"] - -[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_t7e3j"] -bg_color = Color(0.136826, 0.136826, 0.136826, 1) -border_width_left = 5 -border_width_top = 5 -border_width_right = 5 -border_width_bottom = 5 -border_color = Color(0.099986, 0.099986, 0.0999859, 1) -border_blend = true -corner_radius_top_left = 5 -corner_radius_top_right = 5 -corner_radius_bottom_right = 5 -corner_radius_bottom_left = 5 - -[sub_resource type="ViewportTexture" id="ViewportTexture_k1qq1"] -viewport_path = NodePath("SubViewport") - -[node name="DnDCard" type="PanelContainer"] -custom_minimum_size = Vector2(60, 80) -anchors_preset = -1 -anchor_right = 0.098 -anchor_bottom = 0.172 -offset_right = 1.2 -offset_bottom = 11.2 -theme_override_styles/panel = SubResource("StyleBoxFlat_t7e3j") -script = ExtResource("1_k1qq1") - -[node name="TextureRect" type="TextureRect" parent="."] -layout_mode = 2 -mouse_filter = 2 -texture = SubResource("ViewportTexture_k1qq1") -expand_mode = 4 -stretch_mode = 5 - -[node name="SubViewport" type="SubViewport" parent="."] -transparent_bg = true -canvas_item_default_texture_filter = 0 -size = Vector2i(50, 70) - -[node name="Camera2D" type="Camera2D" parent="SubViewport"] -position = Vector2(0, -40) -zoom = Vector2(0.6, 0.6) diff --git a/addons/pvzadventure/scenes/dn_d_with_number.tscn b/addons/pvzadventure/scenes/dn_d_with_number.tscn deleted file mode 100644 index c57a7e3..0000000 --- a/addons/pvzadventure/scenes/dn_d_with_number.tscn +++ /dev/null @@ -1,23 +0,0 @@ -[gd_scene load_steps=3 format=3 uid="uid://bcswnjdptjuuf"] - -[ext_resource type="PackedScene" uid="uid://dcxxgs78o2apq" path="res://addons/pvzadventure/scenes/dn_d_card.tscn" id="1_7k686"] -[ext_resource type="Script" uid="uid://da8tobx0q5ij3" path="res://addons/pvzadventure/scripts/DnDWithNumber.cs" id="1_dkrus"] - -[node name="DnDWithNumber" type="VBoxContainer"] -offset_right = 40.0 -offset_bottom = 40.0 -script = ExtResource("1_dkrus") - -[node name="DnDCard" parent="." instance=ExtResource("1_7k686")] -layout_mode = 2 -size_flags_vertical = 3 - -[node name="SpinBox" type="SpinBox" parent="."] -layout_mode = 2 -size_flags_vertical = 8 -min_value = 1.0 -value = 1.0 -allow_greater = true - -[connection signal="DnDDropped" from="DnDCard" to="." method="OnCardDropped"] -[connection signal="value_changed" from="SpinBox" to="." method="OnNumberSubmitted"] diff --git a/addons/pvzadventure/scenes/zombie_editor.tscn b/addons/pvzadventure/scenes/zombie_editor.tscn new file mode 100644 index 0000000..3dc491f --- /dev/null +++ b/addons/pvzadventure/scenes/zombie_editor.tscn @@ -0,0 +1,9 @@ +[gd_scene format=3 uid="uid://db5ah76l43ng2"] + +[node name="ZombieEditor" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 diff --git a/addons/pvzadventure/scripts/AdventureResourceInspector.cs b/addons/pvzadventure/scripts/AdventureResourceInspector.cs index 6e9a826..8e00e31 100644 --- a/addons/pvzadventure/scripts/AdventureResourceInspector.cs +++ b/addons/pvzadventure/scripts/AdventureResourceInspector.cs @@ -4,9 +4,8 @@ using System; [Tool] public partial class AdventureResourceInspector : Node { - const int DISORDERED = 0; - const int ORDERED = 1; - const int SPAWNS = 2; + const int ORDERED = 0; + const int EVENTS = 1; private Tree tree; private AdventureLevelResource heldResource; @@ -31,6 +30,7 @@ public partial class AdventureResourceInspector : Node tree.Clear(); root = tree.CreateItem(); root.DisableFolding = true; + root.SetText(0, "Level"); EmitSignal(SignalName.Refreshed); for (int i = 0; i < heldResource.waves.Count; i++) @@ -40,14 +40,11 @@ public partial class AdventureResourceInspector : Node item.SetText(0, string.Format("Wave {0}", i)); item.AddButton(0, deleteTexture, tooltipText: "Removes wave. (note that number will not visibly change)"); - var disorder = tree.CreateItem(item); - disorder.SetText(0, "Disordered zombies"); - var order = tree.CreateItem(item); - order.SetText(0, "Ordered zombies"); + order.SetText(0, "Zombies"); var spawns = tree.CreateItem(item); - spawns.SetText(0, "Field spawns"); + spawns.SetText(0, "Events"); } } @@ -61,20 +58,24 @@ public partial class AdventureResourceInspector : Node public void OnItemSelected() { var selected = tree.GetSelected(); - if (selected.GetParent() == root) return; - - var index = selected.GetIndex(); - if (index == DISORDERED) + if (selected == root) { + GD.Print("level pressed"); } - else if (index == ORDERED) - { - - } - else if (index == SPAWNS) + else { + if (selected.GetParent() == root) return; + var index = selected.GetIndex(); + if (index == ORDERED) + { + GD.Print("Zombies pressed"); + } + else if (index == EVENTS) + { + GD.Print("Events pressed"); + } } } diff --git a/addons/pvzadventure/scripts/DisorderedEditor.cs b/addons/pvzadventure/scripts/DisorderedEditor.cs deleted file mode 100644 index 40d6cb7..0000000 --- a/addons/pvzadventure/scripts/DisorderedEditor.cs +++ /dev/null @@ -1,7 +0,0 @@ -using Godot; - -[Tool] -public partial class DisorderedEditor : ScrollContainer -{ - public WaveData editedWave; -} diff --git a/addons/pvzadventure/scripts/DisorderedEditor.cs.uid b/addons/pvzadventure/scripts/DisorderedEditor.cs.uid deleted file mode 100644 index fc2e3dc..0000000 --- a/addons/pvzadventure/scripts/DisorderedEditor.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://dvwbkbsccrnri diff --git a/addons/pvzadventure/scripts/DnDCard.cs b/addons/pvzadventure/scripts/DnDCard.cs deleted file mode 100644 index e6c7070..0000000 --- a/addons/pvzadventure/scripts/DnDCard.cs +++ /dev/null @@ -1,37 +0,0 @@ -using Godot; -using Godot.Collections; - -[Tool] -public partial class DnDCard : PanelContainer -{ - private Variant tempData; - private PackedScene packedScene; - private Node instantiated; - - [Signal] public delegate void DnDDroppedEventHandler(PackedScene scene); - - public override void _Notification(int what) - { - if (what == NotificationDragBegin) - { - tempData = GetViewport().GuiGetDragData(); - } - else if (what == NotificationDragEnd && GetGlobalRect().HasPoint(GetGlobalMousePosition())) - { - var loaded = ResourceLoader.Load(tempData.AsGodotDictionary()["files"].AsStringArray()[0]); - if (loaded is PackedScene scene) - { - packedScene = scene; - EmitSignal(SignalName.DnDDropped, packedScene); - } - } - } - private void Refresh() - { - if (instantiated != null) instantiated.QueueFree(); - instantiated = packedScene.Instantiate(); - GetNode("SubViewport").AddChild(instantiated); - } - - -} diff --git a/addons/pvzadventure/scripts/DnDCard.cs.uid b/addons/pvzadventure/scripts/DnDCard.cs.uid deleted file mode 100644 index e102243..0000000 --- a/addons/pvzadventure/scripts/DnDCard.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c2wsvwbqpay8p diff --git a/addons/pvzadventure/scripts/DnDWithNumber.cs b/addons/pvzadventure/scripts/DnDWithNumber.cs deleted file mode 100644 index 8a16c90..0000000 --- a/addons/pvzadventure/scripts/DnDWithNumber.cs +++ /dev/null @@ -1,26 +0,0 @@ -using Godot; - -[Tool] -public partial class DnDWithNumber : VBoxContainer -{ - [Signal] public delegate void DnDChangedEventHandler(PackedScene scene, int number); - private PackedScene packedScene; - private int number; - - public void OnCardDropped(PackedScene scene) - { - packedScene = scene; - SendSignal(); - } - - public void OnNumberSubmitted(float value) - { - number = (int)value; - SendSignal(); - } - - public void SendSignal() - { - EmitSignal(SignalName.DnDChanged, packedScene, number); - } -} diff --git a/addons/pvzadventure/scripts/DnDWithNumber.cs.uid b/addons/pvzadventure/scripts/DnDWithNumber.cs.uid deleted file mode 100644 index 43e2f36..0000000 --- a/addons/pvzadventure/scripts/DnDWithNumber.cs.uid +++ /dev/null @@ -1 +0,0 @@ -uid://da8tobx0q5ij3 diff --git a/resources/levels/testlvl.tres b/resources/levels/testlvl.tres index 7520364..8dd9f07 100644 --- a/resources/levels/testlvl.tres +++ b/resources/levels/testlvl.tres @@ -1,17 +1,40 @@ -[gd_resource type="Resource" script_class="AdventureLevelResource" load_steps=4 format=3 uid="uid://bx1wnrgickeyd"] +[gd_resource type="Resource" script_class="AdventureLevelResource" load_steps=9 format=3 uid="uid://bx1wnrgickeyd"] [ext_resource type="Script" uid="uid://bximdujbkj2n4" path="res://addons/pvzadventure/AdventureLevelResource.cs" id="1_ed2ji"] [ext_resource type="Script" uid="uid://7rptlb5qr3b6" path="res://addons/pvzadventure/WaveData.cs" id="2_46l53"] [sub_resource type="Resource" id="Resource_46l53"] script = ExtResource("2_46l53") -zombiesDisordered = [null] -zombiesOrdered = [null] -spawns = [null] -metadata/_custom_type_script = "uid://7rptlb5qr3b6" +zombiesOrdered = null +spawns = null + +[sub_resource type="Resource" id="Resource_yo1i5"] +script = ExtResource("2_46l53") +zombiesOrdered = null +spawns = null + +[sub_resource type="Resource" id="Resource_xqi0a"] +script = ExtResource("2_46l53") +zombiesOrdered = null +spawns = null + +[sub_resource type="Resource" id="Resource_ak572"] +script = ExtResource("2_46l53") +zombiesOrdered = null +spawns = null + +[sub_resource type="Resource" id="Resource_vfl7c"] +script = ExtResource("2_46l53") +zombiesOrdered = null +spawns = null + +[sub_resource type="Resource" id="Resource_pdnxq"] +script = ExtResource("2_46l53") +zombiesOrdered = null +spawns = null [resource] script = ExtResource("1_ed2ji") startSun = 0.0 -waves = [SubResource("Resource_46l53")] +waves = [SubResource("Resource_46l53"), SubResource("Resource_yo1i5"), SubResource("Resource_xqi0a"), SubResource("Resource_ak572"), SubResource("Resource_vfl7c"), SubResource("Resource_pdnxq")] metadata/_custom_type_script = "uid://bximdujbkj2n4" diff --git a/translations/gui.en.translation b/translations/gui.en.translation index 851aaedf47a0cf34443ae371332dc33ca4b59e90..7e035f7e3666fc4c74ead6aca3bd9c03b0d45d72 100644 GIT binary patch literal 1124 zcmV-q1e^O(Q$s@n000005C8xv1^@s|1ONaiwJ-f(DFqcG07kprOpq2{26WAvTYM6l-7iQfbUEdzV@$UZ~gGETjp)h#oK7T)#KCl)I zVXkE1@;SIP=V$lcDY5|10NMaSBkS22S`k~1%I0juedAY$zk2)E6$$2w&blr5T9Lmx z{_pZ%L4(uGF^wEes-dAZH9WfiDwIiXTGC0g+ytee zF>@I``Y+&d^GFFzD$z=%|Fy^e1DuYNlr$YX|IZ#fmGjEuIbPDqCp6hqE}zY0yljd- z>A30t?Z507en~gXWeckR?B}NpRW|8a*YqM z&gpGfYn+nJo^5h^Ywhk3JhNb=TEo01;C(ulkDSlrY3QtMzCXM3UxrJ<5)L%0U`Pxd zKW0~>C}C=@s7zL@G8n1T;IIS%mX~9LlVge&43721h8D4a`n5$O$5>8Bc3iR5Q}srL z@U23dw-npeq~7PvXVbwvYE5H-y;ClYu9#I$25WkvJ>TrvW`BZcyUrOE;~a{ zoLa}0R<;W51rAU=VUPtkk2fQwHYq8*rz*(=$RZ!$4$uyBD5r>4OWSt7sYGccq*9(u zb6K{fw{21{#hBinu|?s1Eu*VecU)GOad9A;=$NXJV{RwMo7aP%2uWlyIM>ZFv;#k4 zk@#O#qLodi;*nxHs(inc>8S8T6pD}OXY=<>Yr@*Qu-|rL?=FHNW5ZAjB6)fsLUvqn z+^3>VUEZjdZE0mzE_`Qhs2OeCu%Ane2KT8wkRPt7;^wKGXt9=>ur{aC+)2p~o` z2*iD!J%ZPAN#Wf(X|oIz4yn^}!Mny{1nwWX#eR@#z3Obo;qf+2;jd=g;wFp~--Ho;I_X1RU_#O?hx6P&vQCoyXk1yZUT#-kA2Z qO&(n@c9wf|ULrnW(a;K2|Jxu;NU82Rd5=EOFow-5z>5S@Q$s^j5+m~f literal 1578 zcma)7UuauZ7(Y#7%)hm6Y7*P9Hd_d+EUu|*7n+-uG-hojX)Z}z+hj3K(`$R1n|rg~ z8|>66YkjZ`!7*3#!G}Wi#rh=ppevn1n8-k6r3C69C`#(8ObR{>^jyDl+pD2C@W79A zzVCeB?|kR?otwlH@etY{I+zLcfF}X5lEfC-mzjy=OpX`1oWu$|xc7z@rsW&?Lg!@Y zyz2WuvjKwafEh*<$}@Q;%L(}$mz9L9m}htfHP-L(xgvv%;3+bqn44ro^e7lg27}D7 zoXUw)St&QpG3XGOF4;BVgFa~+6z`hZQ<*?q8n1keT;0Fb%}cHD>A zCYbMnkE78bFjPLm(+coGEY0P3Nkl23IL^W& z!s$2Z7P%pl-VmPhP_ib_)xqPADW|Nt80do4lJTk|Y?rkGZzla6jkD{U8rc-+Je?U1 zM?$e^7|9LE7?O>V!M<=jm>i4^fhTqj$%lr*gZ%@2vFGFG2O|-PGtu!_GL{^r!_IU? zrGkSi8v;4M0(Ibw7bnM!xPTIARO|P+znFaG4;+8Su79Vu+BoaMPK1YVQk2tS`1wr# z$sK#@J}$UES-SPxt4^x@xqQm)UmL5!oyyjB9B?F>3Gt#82aag9lnM7#DpyQpi=FrT zE3#>{Yq;PW@P+$EGsJr|YpLOMWznh>LkKdw*NY>D3v+LsIEIHb2LF*%wfOt6&*oTk z(zn@J%k8M{!Hu42!K$bJ)Ly~^`fD}UwQuh~c9haL9sly1(nlZW3?pX~QH^J%mwT^y ze&wQbJ3&Z;wr3FrojZ9vf@9aiJ_B9Pj>W7o(8C zODtbz{%yJ11Rd#TFqPHej$H{d)V42#1qRW}M#glNZvR zaVjFuxALZcoZ?=+CcO=?t%07E(d)byK`Ce&v`hD%dg|6*Zo&5UYuCi>c4~h zbJU9to8qe53+ZrDG|s~Vc~}Gy0h9yj-d%-`X^GPG0&T0AmJv>YcCVeB`zd0+U~PSW v6w`VNhjbKz!%ZL%Cx{G6oEt&WvdHEUohysX1WJ@R_+?eTVe);&;a}o!ee>*g diff --git a/translations/gui.ru.translation b/translations/gui.ru.translation index 856368c4eb516fa2fbe1fa0c2fd9409ad23ee47e..da4e7afdc2c077dbaf2e8d53f42cb06782be899b 100644 GIT binary patch literal 1400 zcmV-;1&8`lQ$s@n000005C8x`2><|K1pojjwJ-f(KnS%e0IEV%4okpPaXLI|1lv4{ zjr`u%v3-i0{Rfgf+VIu&X{1HrsmRt-4_r55gCiy z{C4gXt%8gQK#ap98QK8T0LuU{S8{ZI5XjWj&~VUsnGzw_2f71vNt&`s&=I;}xKNSh zSOL%vx@9DIRTzvowaftqt1q}y?vAm*iole1Baq^t!WNjM?v_9zxS%D4O^D9|gzi?* z)YR0})ZGob`@+xw82W>u9|>!vQZWf6jv}Ka0nyUE52;=E)1C2`_QQhfD z#h&gi(73w=bc$PInqpUX6KL!b&6&m~9@Cvu-6_TKEO+pT!p;<<-R+>e2Xx9L7rsy+ zz(aS#w0V-MSf-|kwqW5Mq>EHvI^DgXyJcd!0~yILg`ix+{Vsidk6ioim;FVxzuo8; zHI#L~v)ul+KRSD+%ko{{eizF~C%Tsc!xR{%KngcGIXEv?E_7^Cpuo9NaZl)66*@RA zN~~^daB^WEGA952mRqr!nv8<*yzsZqUL;>A8<4lqQqYT^-W_D9#feUbN2X21LTS(fG6jovLo zqPr)+KoOB8M|z5h!omw7U`D-%IkG2+a4$%y_IF#FA}Qu+>y?(^EH^-F&5#~$}1 zB_JR90_}ERbwPP|`^9BR`k=6rr>8|?71zdjQOrZ;c%Ju#B??P{v}}7UueZmtEQc~| zZa$>=a05n-j8v=jvCwl&N!CkMdsHO~14C2PF{;qBJVy}sE0kq<>FjTpW%jYmG|N2l z#l7}fz9?G8ef`mIXaAEgE$jXx=YDIC{YVtGmTrLQR6b#F7=lV#%71u=x=wOnKhZ26?0d5$DT z!wwo$Ef)!1Y?3YW=Bg*_L=j?G$+J^ptfsc#Huv?nE4dZDh4L)3w5;^C=)G$pZzJ!p zgrz`FD91=?{sKGeJ5JDwFBBLNl(i$)VLX0tYb`oHhxn!zH zL5u2<{a6DQk&vHAfVfRc&KAd!{CO&JYSl#o3Uy{}!88`1-|{ad&^ICsV4%cSjWVQo zK|W9qpi5jRJ~BpH2qdPsH-OZzJ#pQnqkM~z_`hm%3ZO%=t2?RgW)mp7$Voo`YsI#^ zfOKSE?_C}L*9p$^1mgxI9$RxqZ6=D1c`mIMGJ%O&2?kPak}+;U7WsA$yzk6C*Nq6c z{_5W`h6DePGYBh)F4rJ$xc#&O2wYP}KxuOEQwO=T0IN;&9}va_&y2Kawx|mWAHW`v z9n3}8L?US|!kBVeN|G(E^c}Ei5rz^yjV*L7gmu;85>|cx61U~$7 zbr1ZVAOY`|_S|Ht0tyAl+MF}Pzr79`SPepO{87{ux!~h9W GQ$s^wNvq!g literal 2369 zcmbtWO>7%Q6kecEFrrmNDTP*I3KbGkvD2z)s|fRxDzuTJrgBT6SjKGZiL=Uj*X*uS zl@m!?wNeV96{1K$|D@hHxJjHkiQ{nQGy@WUhTzE0_l@lkB0xy2^mb<6?0oON z@4Yv6>S*eK)q2)pq}&I21Ts*HoTBr#%pVJEFLdq5@ja-U&pjCSt>1J!vv?zH>;B7l zKR((531sM(gPhE|e$IBYk)I87(v#MP)q9>@l-2{#6lECN1sPiFu`nm3^&qChb~v1k z>_Jyr4`Df2&W*^ZrJ$uS3LLM{JQn5xrxZbHS$9F6f*7RkMB?uv&F(Ah9oc6+!*B8Y zBO&)R6bD9*8LlC-2`SIxv zXB);j_(Y*=)c^G4majW7k~K=WyfwcA+1A*kEc}+*yb(^4MheeRUfBF?Y#a2CVNSWb zrT?yf?3QYIzrdl5m{Z!{EpEO2E0z{*Q|fy z-+W_f!yT++I78XsmVVd>f0+kL+rKY9zwy<&Rd{WEc=FEkU*dc_9(-aw0eKMySEwWMl#%2Jn9L)FzyRkPBl!bk?0^htYE3cFZJc6G)(#ZVyMN_JtA^F2@IBAHL_ z%A|*UFUp2!k>u_@8TEm>tS$iivQSqr{ZPHHKE`+v<8}2JmDt0S@{zhC`ulo%Q!gFs z8#pWmUKWRY`wkxJ8F(diysy8%cY8Xq0-i}H=nRIIZ!tj3=y#0IOL$j>9#hMVN!1WU zL#T!x7YGRP>8YIpb{XlcYG7Uym{#;TsOE)QFd!A~>dEaweWE7?kSkmYwW!}Co~r8! zp-%&R7R#zy&=Wfa=&Ps&q0eFhi_17wg9GpeU)5+>&10(yqR+$5pH>N$&iSq%By*>1 zFOx0@ZgMz^N+CKi?}Rx&$j1wX#EGs~NA@4u-`jH{LquT1Sy-86v{g)|`PLKZ1OP}5 zAv5tV^c81=c`LlL2hQ>KUQm zHKCGUEXd6*^9C{4SWvaN5b8R@uJdrU#XHtjuw5sOAl{T)P0gr9CSa98Rl!%x!VG;9 zYMQ|rAn0!DGkB9u;55?=9>{7F*g#eB5re7G7Xci))d0{WxKN)Gbd^0=Fto8$YN9i~ zJN_CRpogrdIfk#N=urjSBE=+|E|Bm!@G;(3Co6Q)ZT)78U+R*fP8}F~} zxzd-{$P`eR4>ZMeyU@c(N;f;`mSyIkpZ6ot>lGYNinLQKBzNu2;MWkv@8EKYhogmb z0_v5DMiMU=NMsi9%*#}_Fj+`RFYk+In<+pEkphrfXSe8a5IX~J=CNi8G4Of#1sY;U zUE3+1;>k5TIAVBYv!k5;1>%5xEbu)iH}bzwO!^Sv#b(*Flq#rD)GYh(h--UMC`M%v zmP7HnUmSE~h?~fKwS?+GRJcuA6^IiEXAvRKu@b})zjVMZi30vagmK>SxUWFoWHafP s&><6y(ZZ!S0h~z|{YoV@9Wb{lHdWP9*RWW`WpK{?3E}Td3V)vd08(pS!vFvP diff --git a/translations/plants.en.translation b/translations/plants.en.translation index d431b30050502477ceb40a06eb9acba004e1ec69..fdff9b215d127e43bd2cd30183904d1fbc568e46 100644 GIT binary patch literal 1208 zcmV;p1V{T)Q$s@n000005C8xm3;+P21ONaiwJ-f(APco50H(CYN`RbI2e2Z0Hk$P2 z%BW5GDXz|9mtp}eMuR!HSt-QYPI?}A>s4cG+9PSTjr%Y`%S6th{$Ut3sppCyTt5uH zdd#M8mG8{oZkYn00I&eP07z?E%wF@@L8|dK$wK`9@aX@G{@?fiy#N0Z@c*>w|F{3o z1_Ic0MFwlxcNTK@YDa#p8x;N z&)f-~XCC$cIM1VCx%OP<$oW+^-xx+Jr>?O-SH{18R_p(F zs{B8ce;JHG%!&ug_6XrJ_W#H6|1D3#YVtqE#w z=m60wHjzpBAvL2}_}4%GtF%TVN{E~PZ}YE%ycded(7AtI`&W%DhhI)L!03Fb{~G9D z8~B%Du}w&ViAhiRC}ZPcO3Gg_NNE4R|JO5D0z4lLXT{aqG1Fz* z;Z=*VS{xYZ(XvOWG3a&1Dl*Z4j6ibagq%LdP0Cp<6m6=Hn^cTRkvETfK-8 zZM(9z6W5E_5p-qkr?B&cX1m!=1WyIKbVExE%jwvnAu<^=VGV!O)0|>}_KWA(aWpmu zr-icHx)N5o?d`dN*OMmY&}rDAS^6FO#_ePwk`Odgy=r6DBg3O+V(h-12;UJH9KIcf zKj6@w{@k3#{uTO$*;e<Rbrpeuo<5AKnJy&=jn z^TEwfFGNLlhr?m3UNtcZyzG|B2R93uTuK>}kew8|%o}pPDWK9JG2mAeH%J84b5CF+ zIG5s3$)y4by<_mhQPF!83@Q2LxGgs6}n5&)wp401RQ35);h=3I#IREiB~o2nUZp zaZSmxtda+)oV9&HGz|}|_zT;KdH*Zk61IfXFhM06PhZBGl1EDr-#lrc1rMBW5XTp@ zL$22hz8e{xUQ-m&;ab(&5j~z$m?nh$v&MXjA|PZBZi}vXJEz>W`3}Dr2GICx4uxqL zVh9udA-7RVFpIT$uPR?UF)m}tBL_=|LR&M@o_begh1~lSU=T`bcfYS#1o(dO$OCHi zEYcOAT|=u!W%r1~k7_oe83#=h@PA8~1(KqE#BBFmjWM)qk2TlEfE~I^E8Ad$OAn3jfQv3?Su>lHx5;YW1O{k_^tY4PGEr`~>mZmVp WDD~|$->Gmbg{tqh;VJ=AQ$s_>x>Jq- literal 3102 zcmc&%e`s4(6n;s%EPaX1IyH$dwhhI(6*XzrWjNDnYSSreZAdDHZrST=`qsWRO=4bZ zQ!x`{Vu!AC4hD))n2do=MGG?U4`Ed2hT5W4|M15~ohT?eMG6&p^}8?cC9hqY*5Z!` zANSsK&$;)U@0@#Y5)1|JqvWp)ErA}m5$H&!`9c0MuD3JA#)TN0<`Z#d|=wN9+l%@H@<(!-1Qid?%oVjM&XpT{(t^BEAvy%>|QhVzL60c7W&* z9C_m&=2dk5M1Q?XzW3sD74z`34zjyda+7iR^oLkb*&kEVI`4-kUm^RDHL3u`kK@1X zm^5KbDum$U>7QS(Lm)4r|1zN1v%6a+PQysyMX|46S2=S%l#W981R(C2Ia3RJvKHY( zu|GLhc7qNMT!8EofSi_UU=m8cSb~G0cR>^JS@gyYVXIj@aN=I?;Q$>M_q^v7BlWr2 z`!kkry?V2b7I#8_$WpgJH@5hKyP2TBCF0rV^gx?PH4(K{@Gboh6|>sBjj>=;zrE>; zY8#z16C;av^L1Ty?sB})F~5wl+f~9Cu38bm_>}X4HRo!1VcSZB$)@aCGiTipu9S9$ z-_$NP72~5a8^LCS!>+S_dA!ST(6!HLbS`%AS~^srHNfB>;e&W31~T+Jmo|yAU!hs= zd5o>o&ps{rHm3RLX6;%swUqLusZyo4RHg!%Q)REs=M${5s?TN=q8D@5YH&R1FKQ7N zi)@u6;nHp0cbK&b3;sX67X1P1xv6%oce<*2M11f^n{^^qG5b=tHx*mF-LhSyxCJJYGB_>q#l_KKbuZ%qBAq1V>G#V%?6r#B?)am!PG0klc`6KS_w@SB@ z9GS#ik{{rPIj&dc&ZqmpE)K}&y~*#rIQM^Y*MjQFKF$m^7CR=cxOmsn8j?a9itmpl zhPjj+Qb4e69<|b!Z}}cowWesWYN^|Nm4)y?xziACx}1eO_9I7^DR6g*3q4fY*4?18 zUC>6h_-;SjZ}_^Fmdr+N;#MhmLXp_H(V?CG&ZOKUA=ORFS2~P`pIO_p_g@|vYC*GQ z=>xp2aMzAc@pg-zp~Ocvcbui=*z+f))ZOb*(Wp8p;={@ENrf<9*MzA{IweMO!;Oe7 n`h$n|N9k$1A-uvXq`Cy_-D`Ovi#_@zspR(#`K=SgKZCyjX!${T diff --git a/translations/plants.ru.translation b/translations/plants.ru.translation index dc540f9aafb0dec1177753bf8891460136b86fdb..228d4484fc91ea41082fab6d9abbe617031f6aaf 100644 GIT binary patch delta 1509 zcmVnubzlyEOgdm(7~8oDSFR3X@(+>8S3 zx8keNet1QVQ+X74;y=DYV&PZ74qS;)s7mOxzk+9m0R+2T_4s6@l zC_tDj5LzsMd0-oWXSA5@B`asIT8biaM(ikNLpou5f$ab@cET&|kgHa`MRl9odVXn( zFaCV-=5ZT5`l?&>N_&3zs$Akp$<`+-eEgiDPi5@XP&5nh?n zrHK#Ns-xzGZvwpe9#^eQ96RQdw$|d0phxSkrcn1VY18kxSsQfAwB~bL(@XulZqo~2 zGobf>o%po3!~Z^Y^F^pz_}re4x>rogTixom=61;EC&*PINQ6%iR!g_V`_fMVU;O#p zR-PT;dy8B1!ShqEy(RuUZlA7N4e1EwcDKUsw)PAaku}$g+N%gejV7bPgsO+$^7i-i zxJ?gy@D+XOrF2S*UdZdt_tQLAJvr!uzW-i-HCU*`_m+64O;N9Mpl)G9tL0nT--G6r zg7op{P`Oy z^f{Jk&l7JxSmaJ}(xeEB)$=QhW;7UCR-V?8SF-|t>CfHzjJ!^Lw@!N&ftPxEVQ$TT z|Gu?YKm;6*U&s|)0aY0RGX7wd5(!W6rYf%szz^91 zDJ($dk${`pvw&4LhWQb2lZ=d(q$bgS1^40U4uNT^h<_MRK9Odbbp9B38tX8KeuJSC zA)Vq4oYIaCb7NFXr_yYC3t{qJ)J=Nw(D>O4DX(_)|9|lTQ)10^2gK~OOBbdcBYN43 zMrt6NW>5>9qFEIGfrm*Hc*qf6kfQVbB@Eqc`oQNzh6Y5F{gV40p+1+FQdXINT3S&y zmp1zl1w!7`Bc7y_44k{9V1iw!TJ8}o6#{xMMiqXxose0iHA#5tj)(##2$y*`cB{W6 zzX5p0T|&!|lp6}sA zYjJC15#DtA*{(O-)5@?(&BPra43eTcl{{{~QN+`82{UC#70|0~tll~7QOI-@klF@+Bwa~oLk08*$ z(6zVFu+f0gkI=Nxy3n{ffzY+kz0kBS000L700031002@`QbPs+P7r}2#)$xU!c<|( L8oAUHQd2`iaMaV6 literal 4225 zcmd^DUuaup6u;^=wVRvM>13e0DB>#8rnT*GDB^5=S%;8K7<473>7@&6lbV}4^g-KZ zwMw)8o8VM*ZbJ$pTbd-NY2b^DDY6$q{hjaTyZ7dwEVU1Up{M!o zx!-rrcYfz@>pkRsSu1`v;G1a^=poRn!_nYS@NJ|2aKs-n2mR4tI0Ux!xeH&rF24Tg z&wp$hP`umuz6YBg0YwZmJQ4{QzQJ(7Kj@2weP+N28QNC&yO4j#(C!6i$S_U+fMIHP z<3XM&teLI{_ikGN#8_pd#-)`FwU3bcYb=qj#1#U1ACb`d3J+#LMhGC3KhgDd!gewEhZ@|#&yb4MvPK| z@{|VU#T2D=W{5E{E?HSI)6_tpWB)Q`b;?i*!bYh;Nf8$_`}CebcrYA!q2C`l?u!`x zy&bxU(Xxn%G2YYDEMNCR#5_)=DJN!hT7`ao$Ux7in1M*ht`ybMu0u+irQvR=I%M&= zRos*Bu!yr*!JH~8T0ON?d}?D<4u>+i^Cj;ApSP>CSB&XmoDIV7xR_S=tN^P?qXldl z;|tNUMrVsK^*e3z`4{dq#&=V6tSgGYSA+@s-UNYm-Obmk&rNCqlb4m&_0C9R`0*r}f4h~|o7rC_2iH@4|?L4~<(;#%UgwOu!j zKseNIy2O+^FzKLDiFk*{Q|3aK9H+23W>$)*ohs*mc$$`E@%_e8GojJB@&rM_gdfxJ z6HrCse*mAtug;-jcv(z$I@N{y|2BOZiUsODV4SzAunjn~&@-Kucj$0eSGR9}_iJ6f zt?f_R0l_I)fPbcC%S@o{qS_^76D#J6Y_3QjE2ZE=F;SXzcJ2S~dM#PfH$|*6;5|*x zmBpnCqO*V~CEN1~fQ|_SyKD`J=L`xHUdr*r-T{Y{loeTXi)F@g%sN1|mda9EiERrT z=nM?u$~y_)yQ(l}u)Er$R!*U8B+%)($McNkGP+tXX)QtCrLnw`)GfNTtwglbR`y_2 z;b97MqZ;1WM?8hNFWZO#hnqvz>Fio%4Rco|mIfIZ55yeh>~4>FAh!Cn=4vBrL{?UolR(8t^swM?C-i<;6cA{sx=}O6ULp diff --git a/translations/zombies.en.translation b/translations/zombies.en.translation index 88a36796965221e00126181332e6dad5e7e30ed7..e020dc19a5b97efcf0867e4e6719003300ff2ed4 100644 GIT binary patch literal 781 zcmV+o1M>V*Q$s@n000005C8x*2LJ%|0ssIgwJ-f(H3nT50G8v1OTZ90V`{xcKbNwj z^Z;N#6yIIc35FZ(L1DYQ1p1{g7G84reoIx~?Ot;vbhPb#%T$qS*-}dIR3Xbo?SDC= zs7T%qu_`b3f^|{@Z$gYl}%ez)hin0 z5z0p?Fl~u){uB7$>i7efK&#n*2i5-rzYEiyF#KQRKMO2iZb}sSafpA6X;7soV3r@h zesOdf`Y?PP<2aE62Ia@MACvs25p@H>DSp6mGDrTu{&Bzq9-#s=04U}AzVH8%{~-U# z?6fu0bWVeS>`_g(wHl1h!6H(MZt&}pFQuOaui*+DS$U&l9Dsllky;q_>Q_l(`l^~Hn%j?8Do2FnCQA_i`| zDh5)D_J^=S?6yIslE`RDICWh$E$wWR(gLZ(bDF0P<${!qneQ1Q9&C1kb0;QIt$@(j zTp-~0CulB9r~$1qkd%pJ0vg3_+E9WaR8{2x5+DN^PBR$E1V~_vVP+g-=BGzI_m>wLCQH?KZ0oiy`$;JGH?w`=2ZCBDD$cFW=$08csR literal 1842 zcmWFv4svFI0u~?*!fZe+3dH^eC7HRIRjDZsDg!4_BsaCVI59o7 zn1LP00qaO*;07`?5{on9OA?cEQWvd0LZ4|lA_GKbcnX%;qx(l#nbTU?}qg*@8&ohC4rO0&>CTgY091${DMFJNpvI76xjz z24W?vzo-8IX;6rPf)HdT2v5pbyOSBHi66)@0AiSU>y?~Yia`6e0|f+t@-TC+N92A0 z`Q;K2zX9U4EtQ7%fHWxhK^Wv$c_6+442XYDdd&>CCr5EG{bTT`X7i1Ma_8)0_!l)f zif!3Ru1dpy9u;DbZP@skx&B!({EIFX)B0yC;r}mNQQ|*ita)t(*T3kaAi-Fm((s6X z*>)G4uqZUh`)9=W!R%;!sV$OvN9GeUxO5oh{bw{YXZYuF8$-iVmbE{z*kKr_&jeTd zkHHC?x-wD|QyBh*SKO^;IFjkKrH40}jux^eIKb(gJFz7*jh`42=hKsDw0e zb;(G?+4{%88HSxdAhQr#sJ!`=$9xivQ)K11J@(cxV zR6%XnQ%u~Iq0CoUjhKD^?=!xKolv=@r#4!{qnP9scT~1+1Tv46EQ5?aR5{qQ} zfI$@L8%HeS$6~vHLE8f?f-9dWf+^bs45mI60)r~BB#u_&2=$d#s1aBSSt}6?Z8NZ~ z;TIeR*$0jn9kxMMtxn^I5>;P#Vgg}Ksnh6^!FB@M0s`0pIN$Khm$$rYiCfpTvD>=k zJ;}Sib=Rl29&7IAb8hsr=f0lj_IB7+|GKa{JI-wl6x$Nq!0tSVUSf1Ql1~c71qj6k z)k3CAVS_r{bXaOSKd?a?R>UabP+@l@SitBA0pNhWrG32(efrl87fdvm*zT+)Ij_DZN=3X6^EGSJm-qbZTGwsem>Y9N zT${G8>*lP9tEfOQTp=;f@>-sspY7b*j^5mQ=4Y-AhaPv_&A;w>^7h!ibKCj!0z(L? zy7CghL^Vnx!wezBC^8aBL^7kGtkPBk4~n3?ZO32&j08S6&q(ig(tf^i+^FHn%R5X? z%+m{p?ioC*jwhHL%RBO*1tIoeEO~H8pye^5hMjc;deX=Bu~Z#5D2gX56mVzk9M zJT8L433$#0RFG{6#J)3px(twjbg3VHygu$!Ub){1AX+@`mZmeWBXxXMQkvzqq-Q2S!%RES*Kd_?le(q7}NYT6}Nr({2JPz I4pLJ?LoX=k`2YX_ literal 2753 zcmd^B%S%*I7{9&W?Rpm-Y#~9+I2u+)tM&!vLNFP|@uHLSkbB3%C~$lh8ln+}kR+{z znQ=zPdASK%MDQI5`ZuISyQtrH?%e6-jDwXs&+u{Pe6RDp&uzWedRr^4z1SJ{15N<$ z_D2Juz+=6;&G3cIpf4JTgn_o!9&GjB>Yh&D$qm}Lt?UQEbQ)mjW@Nzd>)v3*?+bdP z5wGdj!@73dNelZzx^@VdkZzj39^KRq;GiUQ?Fjz%`pjN$)Ylc%wPQGT4fy-?XbHhL znNcGU?ybKp?K1OXZ5oh$AaXG5-55|o6hN^_ zyf~mo0Ve@JvCfzFy3)=#=VDa?a0S5EGo0#fdvFtk3;54q<2|eENgTDaCD>h}HPwIr z{0dATOHkMHx{Qq@19FoTODjD^#RBB`BlO0>vqBVT+qET@jR}q8tVcS)6GZ zlf!aK$Pq!WOS+1{#VGDNO!K%XOBuc<#WG+>$|*VBB0Bt$V8po9?KAoey}R?8pe2hz zKBEj3I^2rh2^|aSN{HGwjX_IFPO*s z47*;+afkSOFD|E5#?eijejE~@aDtMS3TL)z<`q>j zBxfk^6xg2r+d_IhO*ki?#mDO}a1mOh