From 6117ea4db694087637f02df5bce0fdf029e903e7 Mon Sep 17 00:00:00 2001
From: 1987kostya <ivaninvideorec@gmail.com>
Date: Sat, 12 Dec 2020 11:58:15 +0600
Subject: [PATCH 1/8] Removed inappropriate comments and string, AppMenu fixes,
 new project structure

---
 NetMFAPatcher/DotNetCTFDumper.csproj          | 120 +++++++++---------
 NetMFAPatcher/GUI/ChunkNode.cs                |   4 +-
 NetMFAPatcher/GUI/FrameViewer.cs              |  10 +-
 NetMFAPatcher/GUI/MainForm.cs                 |   6 +-
 NetMFAPatcher/GUI/ObjectBox.cs                |   2 +-
 NetMFAPatcher/GUI/PackDataForm.cs             |   2 +-
 .../MMFParser/{Data => EXE}/ChunkList.cs      |   7 +-
 .../MMFParser/{Data => EXE}/DataLoader.cs     |   4 +-
 NetMFAPatcher/MMFParser/{Data => EXE}/EXE.cs  |   2 +-
 .../MMFParser/{Data => EXE}/GameData.cs       |   6 +-
 .../EXE/Loaders}/AppHeader.cs                 |   4 +-
 .../EXE/Loaders}/AppMenu.cs                   |  16 ++-
 .../EXE/Loaders/Banks}/FontBank.cs            |   6 +-
 .../EXE/Loaders/Banks}/ImageBank.cs           |   5 +-
 .../EXE/Loaders/Banks}/MusicBank.cs           |   9 +-
 .../EXE/Loaders/Banks}/SoundBank.cs           |   5 +-
 .../EXE/Loaders}/ChunkLoader.cs               |   7 +-
 .../Loaders}/Events/Events.cs                 |  62 +++++++--
 .../Loaders}/Events/EventsParts.cs            |  46 ++++++-
 .../Loaders}/Events/Expressions/Expression.cs |   3 +-
 .../Events/Parameters/AlterableValue.cs       |   2 +-
 .../Loaders}/Events/Parameters/Colour.cs      |   2 +-
 .../Loaders}/Events/Parameters/Create.cs      |   2 +-
 .../Loaders}/Events/Parameters/Every.cs       |   2 +-
 .../Loaders}/Events/Parameters/Float.cs       |   2 +-
 .../Loaders}/Events/Parameters/GlobalValue.cs |   2 +-
 .../Loaders}/Events/Parameters/Int.cs         |   2 +-
 .../Loaders}/Events/Parameters/ParamObject.cs |   2 +-
 .../Events/Parameters/ParameterCommon.cs      |   3 +-
 .../Loaders}/Events/Parameters/Position.cs    |   2 +-
 .../Loaders}/Events/Parameters/Remark.cs      |   2 +-
 .../Loaders}/Events/Parameters/Sample.cs      |   2 +-
 .../Loaders}/Events/Parameters/Short.cs       |   2 +-
 .../Loaders}/Events/Parameters/Time.cs        |   2 +-
 .../{ChunkLoaders => EXE/Loaders}/ExtData.cs  |   4 +-
 .../EXE/Loaders}/Frame.cs                     |   7 +-
 .../EXE/Loaders}/FrameItems.cs                |   5 +-
 .../{ChunkLoaders => EXE/Loaders}/Globals.cs  |   4 +-
 .../EXE/Loaders}/ObjectInfo.cs                |  11 +-
 .../Loaders}/ObjectNames.cs                   |   4 +-
 .../Loaders}/Objects/Animations.cs            |   3 +-
 .../Loaders}/Objects/Backdrop.cs              |   5 +-
 .../Loaders}/Objects/Counters.cs              |   3 +-
 .../Loaders}/Objects/ObjectCommon.cs          |   3 +-
 .../Loaders}/Objects/Value.cs                 |   3 +-
 .../EXE/Loaders}/StringChunk.cs               |   4 +-
 .../EXE/Loaders}/yves.cs                      |   5 +-
 .../MMFParser/{Data => EXE}/PackData.cs       |   2 +-
 .../{ => MFA}/Decompiling/MFAGenerator.cs     |   6 +-
 .../{ => MFA}/Decompiling/PAME2MFA.cs         |   4 +-
 .../MFA/Loaders}/ChunkList.cs                 |  27 ++--
 .../MFA/Loaders}/Controls.cs                  |   4 +-
 .../{mfaloaders => MFA/Loaders}/Events.cs     |  24 ++--
 .../MFA/Loaders}/Frame.cs                     |  16 ++-
 .../Loaders}/FrameInstance.cs                 |   6 +-
 .../MFA/Loaders}/FrameItem.cs                 |  28 ++--
 .../MFA/Loaders}/ImageBank.cs                 |   8 +-
 .../{mfaloaders => MFA/Loaders}/ItemFolder.cs |   6 +-
 .../MFA/Loaders}/Layer.cs                     |   6 +-
 .../MFA/Loaders}/ValueList.cs                 |   4 +-
 .../MFA/Loaders}/mfachunks/Active.cs          |   4 +-
 .../MFA/Loaders}/mfachunks/AnimationObject.cs |   7 +-
 .../MFA/Loaders}/mfachunks/Behaviours.cs      |   6 +-
 .../MFA/Loaders}/mfachunks/Movements.cs       |   9 +-
 .../MFA/Loaders}/mfachunks/ObjectLoader.cs    |   8 +-
 NetMFAPatcher/MMFParser/{Data => MFA}/MFA.cs  |  45 +++++--
 NetMFAPatcher/Program.cs                      |   2 +-
 NetMFAPatcher/Utils/Backend.cs                |   4 +-
 NetMFAPatcher/Utils/ByteWriter.cs             |   2 +
 NetMFAPatcher/Utils/Helper.cs                 |   6 +-
 NetMFAPatcher/Utils/ImageDumper.cs            |   8 +-
 71 files changed, 382 insertions(+), 276 deletions(-)
 rename NetMFAPatcher/MMFParser/{Data => EXE}/ChunkList.cs (98%)
 rename NetMFAPatcher/MMFParser/{Data => EXE}/DataLoader.cs (85%)
 rename NetMFAPatcher/MMFParser/{Data => EXE}/EXE.cs (98%)
 rename NetMFAPatcher/MMFParser/{Data => EXE}/GameData.cs (97%)
 rename NetMFAPatcher/{mmfparser/chunkloaders => MMFParser/EXE/Loaders}/AppHeader.cs (98%)
 rename NetMFAPatcher/{mmfparser/chunkloaders => MMFParser/EXE/Loaders}/AppMenu.cs (94%)
 rename NetMFAPatcher/{mmfparser/chunkloaders/banks => MMFParser/EXE/Loaders/Banks}/FontBank.cs (81%)
 rename NetMFAPatcher/{mmfparser/chunkloaders/banks => MMFParser/EXE/Loaders/Banks}/ImageBank.cs (98%)
 rename NetMFAPatcher/{mmfparser/chunkloaders/banks => MMFParser/EXE/Loaders/Banks}/MusicBank.cs (93%)
 rename NetMFAPatcher/{mmfparser/chunkloaders/banks => MMFParser/EXE/Loaders/Banks}/SoundBank.cs (96%)
 rename NetMFAPatcher/{mmfparser/chunkloaders => MMFParser/EXE/Loaders}/ChunkLoader.cs (75%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Events.cs (74%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/EventsParts.cs (71%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Expressions/Expression.cs (84%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/AlterableValue.cs (85%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/Colour.cs (85%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/Create.cs (90%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/Every.cs (87%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/Float.cs (85%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/GlobalValue.cs (86%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/Int.cs (78%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/ParamObject.cs (89%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/ParameterCommon.cs (82%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/Position.cs (94%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/Remark.cs (78%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/Sample.cs (88%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/Short.cs (85%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Events/Parameters/Time.cs (87%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/ExtData.cs (82%)
 rename NetMFAPatcher/{mmfparser/chunkloaders => MMFParser/EXE/Loaders}/Frame.cs (97%)
 rename NetMFAPatcher/{mmfparser/chunkloaders => MMFParser/EXE/Loaders}/FrameItems.cs (92%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Globals.cs (95%)
 rename NetMFAPatcher/{mmfparser/chunkloaders => MMFParser/EXE/Loaders}/ObjectInfo.cs (94%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/ObjectNames.cs (88%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Objects/Animations.cs (97%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Objects/Backdrop.cs (90%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Objects/Counters.cs (96%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Objects/ObjectCommon.cs (98%)
 rename NetMFAPatcher/MMFParser/{ChunkLoaders => EXE/Loaders}/Objects/Value.cs (95%)
 rename NetMFAPatcher/{mmfparser/chunkloaders => MMFParser/EXE/Loaders}/StringChunk.cs (96%)
 rename NetMFAPatcher/{mmfparser/chunkloaders => MMFParser/EXE/Loaders}/yves.cs (94%)
 rename NetMFAPatcher/MMFParser/{Data => EXE}/PackData.cs (98%)
 rename NetMFAPatcher/MMFParser/{ => MFA}/Decompiling/MFAGenerator.cs (91%)
 rename NetMFAPatcher/MMFParser/{ => MFA}/Decompiling/PAME2MFA.cs (94%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/ChunkList.cs (59%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/Controls.cs (97%)
 rename NetMFAPatcher/MMFParser/{mfaloaders => MFA/Loaders}/Events.cs (94%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/Frame.cs (90%)
 rename NetMFAPatcher/MMFParser/{mfaloaders => MFA/Loaders}/FrameInstance.cs (89%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/FrameItem.cs (71%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/ImageBank.cs (91%)
 rename NetMFAPatcher/MMFParser/{mfaloaders => MFA/Loaders}/ItemFolder.cs (90%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/Layer.cs (86%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/ValueList.cs (96%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/mfachunks/Active.cs (74%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/mfachunks/AnimationObject.cs (93%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/mfachunks/Behaviours.cs (90%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/mfachunks/Movements.cs (91%)
 rename NetMFAPatcher/{mmfparser/mfaloaders => MMFParser/MFA/Loaders}/mfachunks/ObjectLoader.cs (91%)
 rename NetMFAPatcher/MMFParser/{Data => MFA}/MFA.cs (91%)

diff --git a/NetMFAPatcher/DotNetCTFDumper.csproj b/NetMFAPatcher/DotNetCTFDumper.csproj
index dff2630..24959ec 100644
--- a/NetMFAPatcher/DotNetCTFDumper.csproj
+++ b/NetMFAPatcher/DotNetCTFDumper.csproj
@@ -156,73 +156,73 @@
     <Compile Include="GUI\PackDataForm.Designer.cs">
       <DependentUpon>PackDataForm.cs</DependentUpon>
     </Compile>
-    <Compile Include="MMFParser\ChunkLoaders\AppMenu.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Events.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\EventsParts.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Expressions\Expression.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\Position.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\Int.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\GlobalValue.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\ParameterCommon.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\Float.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\Every.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\Sample.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\Remark.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\Colour.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\Short.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\AlterableValue.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\Create.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\Time.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Events\Parameters\ParamObject.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\ExtData.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Globals.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\ObjectInfo.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\FrameItems.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\ObjectNames.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Objects\Animations.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Objects\Backdrop.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Objects\Counters.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Objects\ObjectCommon.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Objects\Value.cs" />
-    <Compile Include="MMFParser\Data\DataLoader.cs" />
-    <Compile Include="MMFParser\Data\EXE.cs" />
-    <Compile Include="MMFParser\Decompiling\MFAGenerator.cs" />
-    <Compile Include="MMFParser\Decompiling\PAME2MFA.cs" />
-    <Compile Include="MMFParser\MFALoaders\ChunkList.cs" />
-    <Compile Include="MMFParser\MFALoaders\Events.cs" />
-    <Compile Include="MMFParser\MFALoaders\Frame.cs" />
-    <Compile Include="MMFParser\MFALoaders\FrameInstance.cs" />
-    <Compile Include="MMFParser\MFALoaders\FrameItem.cs" />
-    <Compile Include="MMFParser\MFALoaders\ItemFolder.cs" />
-    <Compile Include="MMFParser\MFALoaders\Layer.cs" />
-    <Compile Include="MMFParser\MFALoaders\mfachunks\Active.cs" />
-    <Compile Include="MMFParser\MFALoaders\mfachunks\AnimationObject.cs" />
-    <Compile Include="MMFParser\MFALoaders\mfachunks\Behaviours.cs" />
-    <Compile Include="MMFParser\MFALoaders\mfachunks\Movements.cs" />
-    <Compile Include="MMFParser\MFALoaders\mfachunks\ObjectLoader.cs" />
-    <Compile Include="MMFParser\MFALoaders\ValueList.cs" />
-    <Compile Include="MMFParser\MFALoaders\Controls.cs" />
-    <Compile Include="MMFParser\MFALoaders\ImageBank.cs" />
-    <Compile Include="MMFParser\Data\MFA.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\AppHeader.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\ChunkLoader.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Banks\FontBank.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Frame.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Banks\ImageBank.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Banks\MusicBank.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\Banks\SoundBank.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\StringChunk.cs" />
-    <Compile Include="MMFParser\ChunkLoaders\yves.cs" />
+    <Compile Include="MMFParser\EXE\ChunkList.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\AppHeader.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\AppMenu.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Banks\FontBank.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Banks\ImageBank.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Banks\MusicBank.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Banks\SoundBank.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\ChunkLoader.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Events.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\EventsParts.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Expressions\Expression.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\AlterableValue.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\Colour.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\Create.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\Every.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\Float.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\GlobalValue.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\Int.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\ParameterCommon.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\ParamObject.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\Position.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\Remark.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\Sample.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\Short.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Events\Parameters\Time.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\ExtData.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Frame.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\FrameItems.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Globals.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\ObjectInfo.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\ObjectNames.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Objects\Animations.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Objects\Backdrop.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Objects\Counters.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Objects\ObjectCommon.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Objects\Value.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\StringChunk.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\yves.cs" />
+    <Compile Include="MMFParser\EXE\DataLoader.cs" />
+    <Compile Include="MMFParser\EXE\EXE.cs" />
+    <Compile Include="MMFParser\EXE\GameData.cs" />
+    <Compile Include="MMFParser\EXE\PackData.cs" />
     <Compile Include="MMFParser\Constants.cs" />
+    <Compile Include="MMFParser\MFA\Decompiling\MFAGenerator.cs" />
+    <Compile Include="MMFParser\MFA\Decompiling\PAME2MFA.cs" />
+    <Compile Include="MMFParser\MFA\MFA.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\ChunkList.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\Controls.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\Events.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\Frame.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\FrameInstance.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\FrameItem.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\ImageBank.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\ItemFolder.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\Layer.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\mfachunks\Active.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\mfachunks\AnimationObject.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\mfachunks\Behaviours.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\mfachunks\Movements.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\mfachunks\ObjectLoader.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\ValueList.cs" />
     <Compile Include="Settings.cs" />
     <Compile Include="Utils\Backend.cs" />
     <Compile Include="Utils\BitDict.cs" />
     <Compile Include="Utils\ByteFlag.cs" />
     <Compile Include="Utils\ByteWriter.cs" />
     <Compile Include="Utils\Helper.cs" />
-    <Compile Include="MMFParser\Data\ChunkList.cs" />
-    <Compile Include="MMFParser\Data\GameData.cs" />
-    <Compile Include="MMFParser\Data\PackData.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Utils\ByteReader.cs" />
diff --git a/NetMFAPatcher/GUI/ChunkNode.cs b/NetMFAPatcher/GUI/ChunkNode.cs
index fb4ef2f..6d0c225 100644
--- a/NetMFAPatcher/GUI/ChunkNode.cs
+++ b/NetMFAPatcher/GUI/ChunkNode.cs
@@ -1,6 +1,6 @@
 using System.Windows.Forms;
-using DotNetCTFDumper.MMFParser.ChunkLoaders;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.EXE.Loaders;
 
 namespace DotNetCTFDumper.GUI
 {
diff --git a/NetMFAPatcher/GUI/FrameViewer.cs b/NetMFAPatcher/GUI/FrameViewer.cs
index 7681488..087bb75 100644
--- a/NetMFAPatcher/GUI/FrameViewer.cs
+++ b/NetMFAPatcher/GUI/FrameViewer.cs
@@ -3,12 +3,10 @@ using System.ComponentModel;
 using System.Drawing;
 using System.Linq;
 using System.Windows.Forms;
-using DotNetCTFDumper.MMFParser.ChunkLoaders;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Banks;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Objects;
-using DotNetCTFDumper.MMFParser.Data;
-using DotNetCTFDumper.MMFParser.MFALoaders;
-using Frame = DotNetCTFDumper.MMFParser.ChunkLoaders.Frame;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.EXE.Loaders;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
+using Frame = DotNetCTFDumper.MMFParser.EXE.Loaders.Frame;
 
 namespace DotNetCTFDumper.GUI
 {
diff --git a/NetMFAPatcher/GUI/MainForm.cs b/NetMFAPatcher/GUI/MainForm.cs
index 8379b9c..a5ca3d4 100644
--- a/NetMFAPatcher/GUI/MainForm.cs
+++ b/NetMFAPatcher/GUI/MainForm.cs
@@ -4,10 +4,10 @@ using System.Diagnostics;
 using System.Drawing;
 using System.Threading;
 using System.Windows.Forms;
-using DotNetCTFDumper.MMFParser.ChunkLoaders;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Banks;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.MMFParser.Decompiling;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.EXE.Loaders;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
 using DotNetCTFDumper.Utils;
 
 namespace DotNetCTFDumper.GUI
diff --git a/NetMFAPatcher/GUI/ObjectBox.cs b/NetMFAPatcher/GUI/ObjectBox.cs
index 9cd1603..05d6e10 100644
--- a/NetMFAPatcher/GUI/ObjectBox.cs
+++ b/NetMFAPatcher/GUI/ObjectBox.cs
@@ -1,5 +1,5 @@
 using System.Windows.Forms;
-using DotNetCTFDumper.MMFParser.ChunkLoaders;
+using DotNetCTFDumper.MMFParser.EXE.Loaders;
 
 namespace DotNetCTFDumper.GUI
 {
diff --git a/NetMFAPatcher/GUI/PackDataForm.cs b/NetMFAPatcher/GUI/PackDataForm.cs
index 0422e46..a12bf95 100644
--- a/NetMFAPatcher/GUI/PackDataForm.cs
+++ b/NetMFAPatcher/GUI/PackDataForm.cs
@@ -3,7 +3,7 @@ using System.ComponentModel;
 using System.Drawing;
 using System.IO;
 using System.Windows.Forms;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
 namespace DotNetCTFDumper.GUI
diff --git a/NetMFAPatcher/MMFParser/Data/ChunkList.cs b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
similarity index 98%
rename from NetMFAPatcher/MMFParser/Data/ChunkList.cs
rename to NetMFAPatcher/MMFParser/EXE/ChunkList.cs
index bd92c25..fa1af50 100644
--- a/NetMFAPatcher/MMFParser/Data/ChunkList.cs
+++ b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
@@ -1,12 +1,11 @@
 using System;
 using System.Collections.Generic;
 using System.IO;
-using System.Xml.Linq;
-using DotNetCTFDumper.MMFParser.ChunkLoaders;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Banks;
+using DotNetCTFDumper.MMFParser.EXE.Loaders;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.Data
+namespace DotNetCTFDumper.MMFParser.EXE
 {
     public class ChunkList
     {
diff --git a/NetMFAPatcher/MMFParser/Data/DataLoader.cs b/NetMFAPatcher/MMFParser/EXE/DataLoader.cs
similarity index 85%
rename from NetMFAPatcher/MMFParser/Data/DataLoader.cs
rename to NetMFAPatcher/MMFParser/EXE/DataLoader.cs
index 36dac3c..4bcd471 100644
--- a/NetMFAPatcher/MMFParser/Data/DataLoader.cs
+++ b/NetMFAPatcher/MMFParser/EXE/DataLoader.cs
@@ -1,7 +1,7 @@
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.Data
+namespace DotNetCTFDumper.MMFParser.EXE
 {
     public abstract class DataLoader
     {
diff --git a/NetMFAPatcher/MMFParser/Data/EXE.cs b/NetMFAPatcher/MMFParser/EXE/EXE.cs
similarity index 98%
rename from NetMFAPatcher/MMFParser/Data/EXE.cs
rename to NetMFAPatcher/MMFParser/EXE/EXE.cs
index 835d484..4cb0db4 100644
--- a/NetMFAPatcher/MMFParser/Data/EXE.cs
+++ b/NetMFAPatcher/MMFParser/EXE/EXE.cs
@@ -2,7 +2,7 @@
 using System.IO;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.Data
+namespace DotNetCTFDumper.MMFParser.EXE
 {
     public class Exe
     {
diff --git a/NetMFAPatcher/MMFParser/Data/GameData.cs b/NetMFAPatcher/MMFParser/EXE/GameData.cs
similarity index 97%
rename from NetMFAPatcher/MMFParser/Data/GameData.cs
rename to NetMFAPatcher/MMFParser/EXE/GameData.cs
index e5589dc..3f8f8e3 100644
--- a/NetMFAPatcher/MMFParser/Data/GameData.cs
+++ b/NetMFAPatcher/MMFParser/EXE/GameData.cs
@@ -1,10 +1,10 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.ChunkLoaders;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Banks;
+using DotNetCTFDumper.MMFParser.EXE.Loaders;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.Data
+namespace DotNetCTFDumper.MMFParser.EXE
 {
     public class GameData
     {
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/AppHeader.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/AppHeader.cs
similarity index 98%
rename from NetMFAPatcher/mmfparser/chunkloaders/AppHeader.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/AppHeader.cs
index 3d5261d..ec78558 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/AppHeader.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/AppHeader.cs
@@ -2,9 +2,9 @@
 using System.Collections.Generic;
 using System.Drawing;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     public class AppHeader : ChunkLoader
     {
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/AppMenu.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/AppMenu.cs
similarity index 94%
rename from NetMFAPatcher/mmfparser/chunkloaders/AppMenu.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/AppMenu.cs
index b868e9d..bd1f996 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/AppMenu.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/AppMenu.cs
@@ -1,11 +1,11 @@
 using System;
 using System.Collections.Generic;
+using System.Diagnostics.Eventing;
 using System.IO;
 using DotNetCTFDumper.Utils;
-using Ionic.Zip;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     public class AppMenu : ChunkLoader
     {
@@ -63,7 +63,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
         {
             writer.WriteInt32(20);
             writer.WriteInt32(20);
-            writer.WriteInt32(0);
+            //writer.WriteInt32(0);
 
             ByteWriter menuDataWriter = new ByteWriter(new MemoryStream());
 
@@ -72,20 +72,24 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
                 item.Write(menuDataWriter);
             }
 
-            writer.WriteUInt32((uint) menuDataWriter.BaseStream.Position);
+            
+            writer.WriteUInt32((uint) menuDataWriter.BaseStream.Position+4);
+            //
 
             writer.WriteUInt32((uint) (24 + menuDataWriter.BaseStream.Position));
             writer.WriteInt32(AccelKey.Count * 8);
             writer.WriteInt32(0);
             writer.WriteWriter(menuDataWriter);
+            
             for (Int32 i = 0; i < AccelKey.Count; i++)
             {
                 writer.WriteInt8(AccelShift[i]);
                 writer.WriteInt8(0);
                 writer.WriteInt16(AccelKey[i]);
                 writer.WriteInt16(AccelId[i]);
-                writer.WriteInt8(0);
+                writer.WriteInt16(0);
             }
+            
         }
 
         public void Load(ByteReader reader)
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/banks/FontBank.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/FontBank.cs
similarity index 81%
rename from NetMFAPatcher/mmfparser/chunkloaders/banks/FontBank.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Banks/FontBank.cs
index 8d186b1..5ddebc5 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/banks/FontBank.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/FontBank.cs
@@ -1,7 +1,7 @@
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
 {
     public class FontBank : ChunkLoader
     {
@@ -23,7 +23,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
         public void Write(ByteWriter writer)
         {
             writer.WriteInt32(NumberOfItems);
-            //i am testing with no fonts suck pinus haha
+            //i am testing with no fonts
 
         }
         public FontBank(ByteReader reader) : base(reader)
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/banks/ImageBank.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs
similarity index 98%
rename from NetMFAPatcher/mmfparser/chunkloaders/banks/ImageBank.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs
index 55c8b82..8fb4bdf 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/banks/ImageBank.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs
@@ -5,11 +5,10 @@ using System.Drawing.Imaging;
 using System.IO;
 using System.Runtime.InteropServices;
 using DotNetCTFDumper.GUI;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
 {
     public class ImageBank : ChunkLoader
     {
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/banks/MusicBank.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/MusicBank.cs
similarity index 93%
rename from NetMFAPatcher/mmfparser/chunkloaders/banks/MusicBank.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Banks/MusicBank.cs
index 4933ccf..3214010 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/banks/MusicBank.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/MusicBank.cs
@@ -1,13 +1,11 @@
 using System;
 using System.Collections.Generic;
 using System.IO;
-using System.Net;
-using System.Windows.Forms;
 using DotNetCTFDumper.GUI;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
 {
     public class MusicBank : ChunkLoader
     {
@@ -33,8 +31,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
         public event MainForm.SaveHandler OnMusicSaved;
         public override void Read()
         {
-            //Someone is using this lol?
-            //Actually,yes
+
             if (!Settings.DoMFA)Reader.Seek(0);//Reset the reader to avoid bugs when dumping more than once
             Items = new List<MusicFile>();
             NumOfItems = Reader.ReadInt32();
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/banks/SoundBank.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/SoundBank.cs
similarity index 96%
rename from NetMFAPatcher/mmfparser/chunkloaders/banks/SoundBank.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Banks/SoundBank.cs
index 72abf54..5af39cd 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/banks/SoundBank.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/SoundBank.cs
@@ -3,9 +3,9 @@ using System.Collections.Generic;
 using System.IO;
 using DotNetCTFDumper.GUI;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
 {
     public class SoundBank : ChunkLoader
     {
@@ -36,7 +36,6 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Banks
         public event MainForm.SaveHandler OnSoundSaved;
         public override void Read()
         {
-            //Implementing for standalone-only because of my lazyness
             if (!Settings.DoMFA)Reader.Seek(0);//Reset the reader to avoid bugs when dumping more than once
             
                 
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/ChunkLoader.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/ChunkLoader.cs
similarity index 75%
rename from NetMFAPatcher/mmfparser/chunkloaders/ChunkLoader.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/ChunkLoader.cs
index 0af2bd6..cd3f4cc 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/ChunkLoader.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/ChunkLoader.cs
@@ -1,8 +1,7 @@
-using DotNetCTFDumper.MMFParser.Data;
-using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using DotNetCTFDumper.Utils;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     public abstract class ChunkLoader
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Events.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs
similarity index 74%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Events.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs
index 51fee0e..bab1ff2 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Events.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs
@@ -1,10 +1,10 @@
 using System;
 using System.Collections.Generic;
-using System.Security.Cryptography.X509Certificates;
+using System.IO;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events
 {
     public class Events : ChunkLoader
     {
@@ -50,12 +50,12 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
                         NumberOfConditions.Add(Reader.ReadInt16());
                     }
 
-                    var qualifierCount = Reader.ReadInt16(); //should be 0, so i dont give a fuck
+                    var qualifierCount = Reader.ReadInt16(); //should be 0, so i dont care
                     Quailifers = new Quailifer[qualifierCount + 1];
                     for (int i = 0; i < qualifierCount; i++)
                     {
                         var newQualifier = new Quailifer(Reader);
-                        QualifiersList.Add(newQualifier); //fucking python types
+                        QualifiersList.Add(newQualifier); //i dont understand python types
                         //THIS IS NOT DONE
                     }
                 }
@@ -114,13 +114,16 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
 
     public class EventGroup : ChunkLoader
     {
-        public int Flags;
+        public ushort Flags;
         public int IsRestricted;
         public int RestrictCpt;
         public int Identifier;
         public int Undo;
         public List<Condition> Conditions = new List<Condition>();
         public List<Action> Actions = new List<Action>();
+        public int Size;
+        public byte NumberOfConditions;
+        public byte NumberOfActions;
 
         public EventGroup(Chunk chunk) : base(chunk)
         {
@@ -143,10 +146,10 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
         public override void Read()
         {
             var currentPosition = Reader.Tell();
-            var size = Reader.ReadInt16() * -1;
-            var numberOfConditions = Reader.ReadByte();
-            var numberOfActions = Reader.ReadByte();
-            var flags = Reader.ReadUInt16();
+            Size = Reader.ReadInt16() * -1;
+            NumberOfConditions = Reader.ReadByte();
+            NumberOfActions = Reader.ReadByte();
+            Flags = Reader.ReadUInt16();
             if (Settings.Build >= 284)
             {
                 var nop = Reader.ReadInt16();
@@ -161,21 +164,21 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
                 Undo = Reader.ReadInt16();
             }
 
-            for (int i = 0; i < numberOfConditions; i++)
+            for (int i = 0; i < NumberOfConditions; i++)
             {
                 var item = new Condition(Reader);
                 item.Read();
                 Conditions.Add(item);
             }
 
-            for (int i = 0; i < numberOfActions; i++)
+            for (int i = 0; i < NumberOfActions; i++)
             {
                 var item = new Action(Reader);
                 item.Read();
                 Actions.Add(item);
             }
 
-            Reader.Seek(currentPosition + size);
+            Reader.Seek(currentPosition + Size);
             Console.WriteLine("IF:");
             if (Conditions != null)
             {
@@ -197,6 +200,39 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
 
         public void Write(ByteWriter Writer)
         {
+            ByteWriter newWriter = new ByteWriter(new MemoryStream());
+            newWriter.WriteInt8((byte) Conditions.Count);
+            newWriter.WriteInt8((byte) Actions.Count);
+            newWriter.WriteUInt16(Flags);
+            if (Settings.Build >= 284)
+            {
+                newWriter.WriteInt16(0);
+                newWriter.WriteInt32(IsRestricted);
+                newWriter.WriteInt32(RestrictCpt);
+            }
+            else
+            {
+                newWriter.WriteInt16((short) IsRestricted);
+                newWriter.WriteInt16((short) RestrictCpt);
+                newWriter.WriteInt16((short) Identifier);
+                newWriter.WriteInt16((short) Undo);
+            }
+            foreach (Condition condition in Conditions)
+            {
+                condition.Write(newWriter);
+            }
+            foreach (Action action in Actions)
+            {
+                action.Write(newWriter);
+            }
+            Writer.WriteInt16((short) ((newWriter.Size()+2)*-1));
+            Writer.WriteWriter(newWriter);
+
+            
+
+            
+            
+            
         }
     }
 }
\ No newline at end of file
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/EventsParts.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/EventsParts.cs
similarity index 71%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/EventsParts.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/EventsParts.cs
index 7ac0cb8..85bf128 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/EventsParts.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/EventsParts.cs
@@ -1,9 +1,9 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
+using System.IO;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events
 {
     public class Condition : DataLoader
     {
@@ -17,10 +17,28 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
         public int Identifier;
         public int ObjectInfoList;
         public List<Parameter> Items = new List<Parameter>();
+
         public Condition(ByteReader reader) : base(reader) { }
         public override void Write(ByteWriter Writer)
         {
-            throw new NotImplementedException();
+            ByteWriter newWriter = new ByteWriter(new MemoryStream());
+            newWriter.WriteInt16((short) ObjectType);
+            newWriter.WriteInt16((short) Num);
+            newWriter.WriteUInt16((ushort) ObjectInfo);
+            newWriter.WriteInt16((short) ObjectInfoList);
+            newWriter.WriteUInt8((sbyte) Flags);
+            newWriter.WriteUInt8((sbyte) OtherFlags);
+            newWriter.WriteUInt8((sbyte) Items.Count);
+            newWriter.WriteInt8((byte) DefType);
+            newWriter.WriteInt16((short) Identifier);
+            foreach (Parameter parameter in Items)
+            {
+                parameter.Write(newWriter);
+            }
+            Writer.WriteInt16((short) (newWriter.BaseStream.Position+2));
+            Writer.WriteWriter(newWriter);
+
+
         }
 
         public override void Print()
@@ -54,7 +72,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
         }
         public override string ToString()
         {
-            return $"Condition {ObjectType}-{Num}-{(Items.Count > 0 ? Items[0].ToString() : "cock")}";
+            return $"Condition {ObjectType}-{Num}{(Items.Count > 0 ? "-"+Items[0].ToString() : " ")}";
 
         }
     }
@@ -72,7 +90,23 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
         public Action(ByteReader reader) : base(reader) { }
         public override void Write(ByteWriter Writer)
         {
-            throw new NotImplementedException();
+            ByteWriter newWriter = new ByteWriter(new MemoryStream());
+            newWriter.WriteInt16((short) ObjectType);
+            newWriter.WriteInt16((short) Num);
+            newWriter.WriteUInt16((ushort) ObjectInfo);
+            newWriter.WriteInt16((short) ObjectInfoList);
+            newWriter.WriteUInt8((sbyte) Flags);
+            newWriter.WriteUInt8((sbyte) OtherFlags);
+            newWriter.WriteUInt8((sbyte) Items.Count);
+            newWriter.WriteInt8((byte) DefType);
+
+            foreach (Parameter parameter in Items)
+            {
+                parameter.Write(newWriter);
+            }
+            Writer.WriteInt16((short) (newWriter.BaseStream.Position+2));
+            Writer.WriteWriter(newWriter);
+            
         }
 
         public override void Print( )
@@ -104,7 +138,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events
         public override string ToString()
         {
             
-            return $"Action {ObjectType}-{Num}-{(Items.Count>0?Items[0].ToString():"cock")}";
+            return $"Action {ObjectType}-{Num}{(Items.Count > 0 ? "-"+Items[0].ToString() : " ")}";
 
         }
     }
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Expressions/Expression.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Expressions/Expression.cs
similarity index 84%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Expressions/Expression.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Expressions/Expression.cs
index a675546..a7b43b3 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Expressions/Expression.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Expressions/Expression.cs
@@ -1,8 +1,7 @@
 using System;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Expressions
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Expressions
 {
     class Expression : DataLoader
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/AlterableValue.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/AlterableValue.cs
similarity index 85%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/AlterableValue.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/AlterableValue.cs
index dcde2a9..652822e 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/AlterableValue.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/AlterableValue.cs
@@ -1,7 +1,7 @@
 using System;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class AlterableValue : Short
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Colour.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Colour.cs
similarity index 85%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Colour.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Colour.cs
index 3a38408..f21dbd5 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Colour.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Colour.cs
@@ -1,7 +1,7 @@
 using System.Drawing;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class Colour : ParameterCommon
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Create.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Create.cs
similarity index 90%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Create.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Create.cs
index d01dcdb..6c60ed4 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Create.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Create.cs
@@ -1,6 +1,6 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class Create : ParameterCommon
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Every.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Every.cs
similarity index 87%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Every.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Every.cs
index d554d2b..72f7676 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Every.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Every.cs
@@ -1,6 +1,6 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class Every : ParameterCommon
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Float.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Float.cs
similarity index 85%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Float.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Float.cs
index db30f9d..4736a2e 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Float.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Float.cs
@@ -1,6 +1,6 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class Float : ParameterCommon
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/GlobalValue.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/GlobalValue.cs
similarity index 86%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/GlobalValue.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/GlobalValue.cs
index 5e6fb77..0c61aa2 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/GlobalValue.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/GlobalValue.cs
@@ -1,7 +1,7 @@
 using System;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class GlobalValue : Short
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Int.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Int.cs
similarity index 78%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Int.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Int.cs
index b5532ff..0a15f27 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Int.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Int.cs
@@ -1,6 +1,6 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class Int : Short
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/ParamObject.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/ParamObject.cs
similarity index 89%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/ParamObject.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/ParamObject.cs
index f966dc5..f0a02f5 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/ParamObject.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/ParamObject.cs
@@ -1,6 +1,6 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class ParamObject : ParameterCommon
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/ParameterCommon.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/ParameterCommon.cs
similarity index 82%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/ParameterCommon.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/ParameterCommon.cs
index 0e893c9..963217e 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/ParameterCommon.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/ParameterCommon.cs
@@ -1,8 +1,7 @@
 using System;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class ParameterCommon : DataLoader
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Position.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Position.cs
similarity index 94%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Position.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Position.cs
index eb63360..f0389f5 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Position.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Position.cs
@@ -1,6 +1,6 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class Position : ParameterCommon
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Remark.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Remark.cs
similarity index 78%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Remark.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Remark.cs
index f60f9d5..47e197b 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Remark.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Remark.cs
@@ -1,6 +1,6 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class Remark : ParameterCommon
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Sample.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Sample.cs
similarity index 88%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Sample.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Sample.cs
index 11c8318..afb0e89 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Sample.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Sample.cs
@@ -1,6 +1,6 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class Sample : ParameterCommon
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Short.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Short.cs
similarity index 85%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Short.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Short.cs
index dccc12d..c1b70de 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Short.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Short.cs
@@ -1,6 +1,6 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class Short : ParameterCommon
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Time.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Time.cs
similarity index 87%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Time.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Time.cs
index 69c3d30..bc5120c 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Events/Parameters/Time.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Parameters/Time.cs
@@ -1,6 +1,6 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters
 {
     class Time : ParameterCommon
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/ExtData.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/ExtData.cs
similarity index 82%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/ExtData.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/ExtData.cs
index 314ea57..1e121f3 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/ExtData.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/ExtData.cs
@@ -1,7 +1,7 @@
 using System;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     class ExtData : ChunkLoader
     {
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/Frame.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
similarity index 97%
rename from NetMFAPatcher/mmfparser/chunkloaders/Frame.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
index 7dc7032..2771409 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/Frame.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
@@ -1,11 +1,9 @@
 using System;
 using System.Collections.Generic;
 using System.Drawing;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.Utils;
-using ChunkList = DotNetCTFDumper.MMFParser.Data.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     class FrameName : StringChunk
     {
@@ -76,7 +74,6 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
 
             Chunks.Verbose = false;
             Chunks.Read(frameReader);
-            //return;
             var name = Chunks.GetChunk<FrameName>();
             if (name != null) //Just to be sure
             {
@@ -213,7 +210,7 @@ namespace DotNetCTFDumper.MMFParser.ChunkLoaders
         public override void Read()
         {
             
-            CountOfObjects = (int)Reader.ReadUInt32();
+            CountOfObjects = Reader.ReadInt32();
             for (int i = 0; i < CountOfObjects; i++)
             {
                 var item = new ObjectInstance(Reader);
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/FrameItems.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/FrameItems.cs
similarity index 92%
rename from NetMFAPatcher/mmfparser/chunkloaders/FrameItems.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/FrameItems.cs
index afecd59..d1d4279 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/FrameItems.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/FrameItems.cs
@@ -1,10 +1,9 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     public class FrameItems : ChunkLoader
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Globals.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Globals.cs
similarity index 95%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Globals.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Globals.cs
index da299f4..6c27acf 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Globals.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Globals.cs
@@ -1,9 +1,9 @@
 using System;
 using System.Collections.Generic;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     public class GlobalValues : ChunkLoader
     {
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/ObjectInfo.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
similarity index 94%
rename from NetMFAPatcher/mmfparser/chunkloaders/ObjectInfo.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
index b0483ee..2952510 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/ObjectInfo.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
@@ -1,14 +1,11 @@
 using System;
 using System.Collections.Generic;
-using System.Drawing;
-using System.Windows.Forms;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Banks;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Objects;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Objects;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     public class ObjectInfo : ChunkLoader
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/ObjectNames.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectNames.cs
similarity index 88%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/ObjectNames.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/ObjectNames.cs
index 355cd2f..b672ae7 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/ObjectNames.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectNames.cs
@@ -1,8 +1,8 @@
 using System;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     class ObjectNames : ChunkLoader//Fucking trash
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Animations.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Animations.cs
similarity index 97%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Animations.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Animations.cs
index 39f4d05..069f621 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Animations.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Animations.cs
@@ -1,9 +1,8 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Objects
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
 {
     public class Animations:ChunkLoader
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Backdrop.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Backdrop.cs
similarity index 90%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Backdrop.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Backdrop.cs
index e3988e5..8d05097 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Backdrop.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Backdrop.cs
@@ -1,7 +1,6 @@
-using DotNetCTFDumper.MMFParser.Data;
-using DotNetCTFDumper.Utils;
+using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Objects
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
 {
     public enum Obstacle
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Counters.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Counters.cs
similarity index 96%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Counters.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Counters.cs
index 8794280..878efe8 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Counters.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Counters.cs
@@ -1,9 +1,8 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Objects
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
 {
     public class Counter:ChunkLoader
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Objects/ObjectCommon.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs
similarity index 98%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Objects/ObjectCommon.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs
index 77b08e2..5cdb976 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Objects/ObjectCommon.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs
@@ -1,9 +1,8 @@
 using System;
 using System.Drawing;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Objects
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
 {
     public class ObjectCommon : ChunkLoader
     {
diff --git a/NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Value.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Value.cs
similarity index 95%
rename from NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Value.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Value.cs
index 852aec8..ed17b4a 100644
--- a/NetMFAPatcher/MMFParser/ChunkLoaders/Objects/Value.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Value.cs
@@ -1,9 +1,8 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders.Objects
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
 {
     public class AlterableValues:ChunkLoader
     {
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/StringChunk.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/StringChunk.cs
similarity index 96%
rename from NetMFAPatcher/mmfparser/chunkloaders/StringChunk.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/StringChunk.cs
index 086acc5..c3004dd 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/StringChunk.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/StringChunk.cs
@@ -1,8 +1,8 @@
 using System;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     public class StringChunk : ChunkLoader
     {
diff --git a/NetMFAPatcher/mmfparser/chunkloaders/yves.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/yves.cs
similarity index 94%
rename from NetMFAPatcher/mmfparser/chunkloaders/yves.cs
rename to NetMFAPatcher/MMFParser/EXE/Loaders/yves.cs
index 6e42b87..2f53e9d 100644
--- a/NetMFAPatcher/mmfparser/chunkloaders/yves.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/yves.cs
@@ -2,12 +2,11 @@
 using System.Collections.Generic;
 using System.Drawing;
 using System.Drawing.Imaging;
-using System.IO;
 using System.Runtime.InteropServices;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.ChunkLoaders
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 {
     public class AppIcon : ChunkLoader
     {
diff --git a/NetMFAPatcher/MMFParser/Data/PackData.cs b/NetMFAPatcher/MMFParser/EXE/PackData.cs
similarity index 98%
rename from NetMFAPatcher/MMFParser/Data/PackData.cs
rename to NetMFAPatcher/MMFParser/EXE/PackData.cs
index 069b17f..c971ac3 100644
--- a/NetMFAPatcher/MMFParser/Data/PackData.cs
+++ b/NetMFAPatcher/MMFParser/EXE/PackData.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
 using System.IO;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.Data
+namespace DotNetCTFDumper.MMFParser.EXE
 {
     public class PackData
     {
diff --git a/NetMFAPatcher/MMFParser/Decompiling/MFAGenerator.cs b/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
similarity index 91%
rename from NetMFAPatcher/MMFParser/Decompiling/MFAGenerator.cs
rename to NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
index 892436c..52dd6d8 100644
--- a/NetMFAPatcher/MMFParser/Decompiling/MFAGenerator.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
@@ -1,6 +1,6 @@
 using System;
 using System.IO;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
 namespace DotNetCTFDumper.MMFParser.Decompiling
@@ -14,7 +14,7 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
         {
             Settings.DoMFA = true;
             var mfaReader = new ByteReader(TemplatePath, FileMode.Open);
-            var template = new MFA(mfaReader);
+            var template = new MFA.MFA(mfaReader);
 
             template.Read(); //Loading template
 
@@ -32,7 +32,7 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
         public static void ReadTestMFA()
         {
             var mfaReader = new ByteReader(TemplatePath, FileMode.Open);
-            var template = new MFA(mfaReader);
+            var template = new MFA.MFA(mfaReader);
             Settings.DoMFA = true;
             template.Read();
             
diff --git a/NetMFAPatcher/MMFParser/Decompiling/PAME2MFA.cs b/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
similarity index 94%
rename from NetMFAPatcher/MMFParser/Decompiling/PAME2MFA.cs
rename to NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
index 97624e9..65558ba 100644
--- a/NetMFAPatcher/MMFParser/Decompiling/PAME2MFA.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
@@ -1,11 +1,11 @@
 
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 
 namespace DotNetCTFDumper.MMFParser.Decompiling
 {
     public static class Pame2Mfa
     {
-        public static void Translate(ref MFA mfa, GameData game)
+        public static void Translate(ref MFA.MFA mfa, GameData game)
         {
             
             //mfa.MfaBuild = 4;
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/ChunkList.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/ChunkList.cs
similarity index 59%
rename from NetMFAPatcher/mmfparser/mfaloaders/ChunkList.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/ChunkList.cs
index be7516b..c5a6d8f 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/ChunkList.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/ChunkList.cs
@@ -1,17 +1,25 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 {
-    class ChunkList : DataLoader//This is used for MFA reading/writing
+    public class ChunkList : DataLoader//This is used for MFA reading/writing
     {
         List<DataLoader> _items = new List<DataLoader>();
-        
+        public byte[] Saved;
+
         public override void Write(ByteWriter Writer)
         {
-            throw new NotImplementedException();
+            if (Saved != null)
+            {
+                Writer.WriteBytes(Saved);
+            }
+            else
+            {
+                Writer.WriteInt8(0);
+            }
         }
 
         public override void Print()
@@ -28,14 +36,13 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
                 if(id==0) break;
                 var data = new ByteReader(Reader.ReadBytes((int) Reader.ReadUInt32()));
                 
-
-
-
-
             }
 
+            var size = Reader.Tell() - start;
+            Reader.Seek(start);
+            Saved = Reader.ReadBytes((int) size);
+
 
-           
         }
         public ChunkList(ByteReader reader) : base(reader) { }
     }
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/Controls.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Controls.cs
similarity index 97%
rename from NetMFAPatcher/mmfparser/mfaloaders/Controls.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/Controls.cs
index 1303f37..d632981 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/Controls.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Controls.cs
@@ -1,9 +1,9 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 {
     public class Controls : DataLoader
     {
diff --git a/NetMFAPatcher/MMFParser/mfaloaders/Events.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
similarity index 94%
rename from NetMFAPatcher/MMFParser/mfaloaders/Events.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
index 53bc5cb..bf0480c 100644
--- a/NetMFAPatcher/MMFParser/mfaloaders/Events.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
@@ -1,13 +1,13 @@
 using System;
 using System.Collections.Generic;
-using System.Data;
 using System.IO;
 using System.Runtime.InteropServices;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Events;
-using DotNetCTFDumper.MMFParser.Data;
+using System.Text;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Events;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 {
     public class Events:DataLoader
     {
@@ -40,17 +40,20 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
         public uint LineItemType;
         public uint EventLine;
         public uint EventLineY;
+        public byte[] Saved;
 
         public Events(ByteReader reader) : base(reader)
         {
         }
 
-        public Events(Data.ChunkList.Chunk chunk) : base(chunk)
+        public Events(EXE.ChunkList.Chunk chunk) : base(chunk)
         {
         }
 
         public override void Read()
         {
+            Saved = Reader.ReadBytes(92);
+            return;
             Version = Reader.ReadUInt16();
             FrameType = Reader.ReadUInt16();
             Items = new List<EventGroup>();
@@ -59,6 +62,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
             {
                 
                 string name = Reader.ReadAscii(4);
+                Console.WriteLine("Group: "+name+" "+Encoding.ASCII.GetBytes(name).GetHex()+", Position: "+Reader.Tell());
                 if (name == EventData)
                 {
                     uint size = Reader.ReadUInt32();
@@ -174,11 +178,15 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
 
         public override void Write(ByteWriter Writer)
         {
+            Writer.WriteBytes(Saved);
+            return;
             Writer.WriteUInt16(Version);
             Writer.WriteInt16((short) FrameType);
+            Writer.WriteBytes(new byte[]{0x04,0x04,0x00,0x00});
             if (Items != null)
             {
                 Writer.WriteAscii(EventData);
+                
                 ByteWriter newWriter = new ByteWriter(new MemoryStream());
                 foreach (EventGroup eventGroup in Items)
                 {
@@ -186,7 +194,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
                 }
                 Writer.WriteWriter(newWriter);
             }
-
+            
             if (Comments != null)
             {
                 Writer.WriteAscii(CommentData);
@@ -275,7 +283,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
         {
         }
 
-        public Comment(Data.ChunkList.Chunk chunk) : base(chunk)
+        public Comment(EXE.ChunkList.Chunk chunk) : base(chunk)
         {
         }
 
@@ -315,7 +323,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
         {
         }
 
-        public EventObject(Data.ChunkList.Chunk chunk) : base(chunk)
+        public EventObject(EXE.ChunkList.Chunk chunk) : base(chunk)
         {
         }
 
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/Frame.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
similarity index 90%
rename from NetMFAPatcher/mmfparser/mfaloaders/Frame.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
index 0cc9566..7d48227 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/Frame.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
@@ -1,10 +1,10 @@
 using System;
 using System.Collections.Generic;
 using System.Drawing;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 {
     public class Frame : DataLoader
     {
@@ -26,6 +26,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
         public int ActiveLayer;
         public List<Layer> Layers;
         public Events Events;
+        public ChunkList Chunks;
 
         public Frame(ByteReader reader) : base(reader)
         {
@@ -50,6 +51,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
             {
                 Writer.WriteColor(item);
             }
+            
             Writer.WriteInt32(StampHandle);
             Writer.WriteInt32(ActiveLayer);
             Writer.WriteInt32(Layers.Count);
@@ -57,6 +59,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
             {
                 layer.Write(Writer);
             }
+            
             //TODO: Do transitions
             Writer.WriteInt8(0);
             Writer.WriteInt8(0);
@@ -76,7 +79,10 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
             {
                 item.Write(Writer);
             }
+            Console.WriteLine("BeforeEventsPos: "+Writer.Tell());
             Events.Write(Writer);
+            Console.WriteLine("AfterEventsPos: "+Writer.Tell());
+            Chunks.Write(Writer);
 
 
 
@@ -112,9 +118,9 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
             }
             StampHandle = Reader.ReadInt32();
             ActiveLayer = Reader.ReadInt32();
-            var layersCunt = Reader.ReadInt32();
+            var layersCount = Reader.ReadInt32();
             Layers = new List<Layer>();
-            for (int i = 0; i < layersCunt; i++)
+            for (int i = 0; i < layersCount; i++)
             {
                 var layer = new Layer(Reader);
                 layer.Read();
@@ -154,6 +160,8 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
             }
             Events = new Events(Reader);
             Events.Read();
+            Chunks = new ChunkList(Reader);
+            Chunks.Read();
             
 
 
diff --git a/NetMFAPatcher/MMFParser/mfaloaders/FrameInstance.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/FrameInstance.cs
similarity index 89%
rename from NetMFAPatcher/MMFParser/mfaloaders/FrameInstance.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/FrameInstance.cs
index 86b0971..1f92c53 100644
--- a/NetMFAPatcher/MMFParser/mfaloaders/FrameInstance.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/FrameInstance.cs
@@ -1,7 +1,7 @@
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 {
     public class FrameInstance:DataLoader
     {
@@ -18,7 +18,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
         {
         }
 
-        public FrameInstance(Data.ChunkList.Chunk chunk) : base(chunk)
+        public FrameInstance(EXE.ChunkList.Chunk chunk) : base(chunk)
         {
         }
 
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/FrameItem.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/FrameItem.cs
similarity index 71%
rename from NetMFAPatcher/mmfparser/mfaloaders/FrameItem.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/FrameItem.cs
index 6872ed4..2f2b5c0 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/FrameItem.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/FrameItem.cs
@@ -1,9 +1,9 @@
 using System;
-using DotNetCTFDumper.MMFParser.Data;
-using DotNetCTFDumper.MMFParser.MFALoaders.mfachunks;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 {
     public class FrameItem : DataLoader
     {
@@ -16,6 +16,9 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
         public int AntiAliasing;
         public int Flags;
         public int IconType;
+        public int IconHandle;
+        public ChunkList Chunks;
+        public Active Loader;
 
         public override void Write(ByteWriter Writer)
         {
@@ -25,6 +28,12 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
             Writer.WriteInt32(Transparent);
             Writer.WriteInt32(InkEffect);
             Writer.WriteInt32(InkEffectParameter);
+            Writer.WriteInt32(AntiAliasing);
+            Writer.WriteInt32(Flags);
+            Writer.WriteInt32(1);
+            Writer.WriteInt32(IconHandle);
+            Chunks.Write(Writer);
+            Loader.Write(Writer);
             
             
         }
@@ -46,26 +55,27 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
             AntiAliasing = Reader.ReadInt32();
 
             Flags = Reader.ReadInt32();
+            
             IconType = Reader.ReadInt32();
             if(IconType==1)
             {
-                var iconHandle = Reader.ReadInt32();
+                IconHandle = Reader.ReadInt32();
             }
             else
             {
                 throw new NotImplementedException("invalid icon");
             }
-            var chunks = new ChunkList(Reader);
-            chunks.Read();
+            Chunks = new ChunkList(Reader);
+            Chunks.Read();
             if(ObjectType>=32)//extension base
             {
                //TODO: Nonactives
 
             }
-            else
+            else if(ObjectType==2)
             {
-                var loader = new Active(Reader);
-                loader.Read();
+                Loader = new Active(Reader);
+                Loader.Read();
             }
            
             
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/ImageBank.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs
similarity index 91%
rename from NetMFAPatcher/mmfparser/mfaloaders/ImageBank.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs
index a8a1d75..c7ce198 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/ImageBank.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs
@@ -1,12 +1,12 @@
 using System;
 using System.Collections.Generic;
 using System.Drawing;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Banks;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
 using DotNetCTFDumper.Utils;
-using static DotNetCTFDumper.MMFParser.Data.ChunkList;
+using static DotNetCTFDumper.MMFParser.EXE.ChunkList;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 {
     public class AgmiBank : DataLoader
     {
diff --git a/NetMFAPatcher/MMFParser/mfaloaders/ItemFolder.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/ItemFolder.cs
similarity index 90%
rename from NetMFAPatcher/MMFParser/mfaloaders/ItemFolder.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/ItemFolder.cs
index 859a787..a78034f 100644
--- a/NetMFAPatcher/MMFParser/mfaloaders/ItemFolder.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/ItemFolder.cs
@@ -1,8 +1,8 @@
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 {
     public class ItemFolder:DataLoader
     {
@@ -13,7 +13,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
         {
         }
 
-        public ItemFolder(Data.ChunkList.Chunk chunk) : base(chunk)
+        public ItemFolder(EXE.ChunkList.Chunk chunk) : base(chunk)
         {
         }
 
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/Layer.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs
similarity index 86%
rename from NetMFAPatcher/mmfparser/mfaloaders/Layer.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs
index cc6bee3..73f6acb 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/Layer.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs
@@ -1,8 +1,8 @@
 using System;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 {
     public class Layer : DataLoader
     {
@@ -14,7 +14,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders
 
         public override void Write(ByteWriter Writer)
         {
-            Helper.AutoWriteUnicode(Writer,Name);
+            Writer.AutoWriteUnicode(Name);
             Writer.WriteInt32(Flags);
             Writer.WriteSingle(XCoefficient);
             Writer.WriteSingle(YCoefficient);
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/ValueList.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/ValueList.cs
similarity index 96%
rename from NetMFAPatcher/mmfparser/mfaloaders/ValueList.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/ValueList.cs
index 497c40f..6fc7258 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/ValueList.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/ValueList.cs
@@ -1,9 +1,9 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 {
     public class ValueList : DataLoader
     {
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Active.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Active.cs
similarity index 74%
rename from NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Active.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Active.cs
index e9c59bf..b71ea53 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Active.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Active.cs
@@ -1,8 +1,8 @@
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
 {
-    class Active : AnimationObject
+    public class Active : AnimationObject
     {
         public override void Print()
         {
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/AnimationObject.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs
similarity index 93%
rename from NetMFAPatcher/mmfparser/mfaloaders/mfachunks/AnimationObject.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs
index d8b47d8..4bcca20 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/AnimationObject.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs
@@ -1,11 +1,11 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
 {
-    class AnimationObject:ObjectLoader
+    public class AnimationObject:ObjectLoader
     {
         List<Animation> _items = new List<Animation>();
         public override void Read()
@@ -23,6 +23,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
             }
 
         }
+        
 
         public AnimationObject(ByteReader reader) : base(reader) { }
     }
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Behaviours.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Behaviours.cs
similarity index 90%
rename from NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Behaviours.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Behaviours.cs
index 65a19b2..b3f2950 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Behaviours.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Behaviours.cs
@@ -1,11 +1,11 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
 {
-    class Behaviours : DataLoader
+    public class Behaviours : DataLoader
     {
         List<Behaviour> _items = new List<Behaviour>();
         public override void Write(ByteWriter Writer)
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Movements.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Movements.cs
similarity index 91%
rename from NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Movements.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Movements.cs
index 8fcf5e9..d5236b2 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/Movements.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Movements.cs
@@ -1,11 +1,11 @@
 using System;
 using System.Collections.Generic;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
 {
-    class Movements : DataLoader
+    public class Movements : DataLoader
     {
         public List<Movement> Items = new List<Movement>();
         public override void Write(ByteWriter Writer)
@@ -33,7 +33,8 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
         }
         public Movements(ByteReader reader) : base(reader) { }
     }
-    class Movement : DataLoader
+
+    public class Movement : DataLoader
     {
         public string Name="ERROR";
 
diff --git a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs
similarity index 91%
rename from NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs
rename to NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs
index 8960aca..013fa8c 100644
--- a/NetMFAPatcher/mmfparser/mfaloaders/mfachunks/ObjectLoader.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs
@@ -1,11 +1,11 @@
 using System.Collections.Generic;
 using System.Drawing;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
 {
-    class ObjectLoader : DataLoader
+    public class ObjectLoader : DataLoader
     {
         public int ObjectFlags;
         public int NewObjectFlags;
@@ -18,7 +18,7 @@ namespace DotNetCTFDumper.MMFParser.MFALoaders.mfachunks
 
         public override void Write(ByteWriter Writer)
         {
-            throw new System.NotImplementedException();
+            
         }
 
         public override void Print()
diff --git a/NetMFAPatcher/MMFParser/Data/MFA.cs b/NetMFAPatcher/MMFParser/MFA/MFA.cs
similarity index 91%
rename from NetMFAPatcher/MMFParser/Data/MFA.cs
rename to NetMFAPatcher/MMFParser/MFA/MFA.cs
index a523b4a..5a35a9d 100644
--- a/NetMFAPatcher/MMFParser/Data/MFA.cs
+++ b/NetMFAPatcher/MMFParser/MFA/MFA.cs
@@ -2,15 +2,16 @@
 using System.Collections.Generic;
 using System.Drawing;
 using System.IO;
-using System.Numerics;
-using DotNetCTFDumper.MMFParser.ChunkLoaders;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Banks;
-using DotNetCTFDumper.MMFParser.MFALoaders;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.EXE.Loaders;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
+using DotNetCTFDumper.MMFParser.MFA.Loaders;
 using DotNetCTFDumper.Utils;
-using Controls = DotNetCTFDumper.MMFParser.MFALoaders.Controls;
-using Frame = DotNetCTFDumper.MMFParser.MFALoaders.Frame;
+using ChunkList = DotNetCTFDumper.MMFParser.MFA.Loaders.ChunkList;
+using Controls = DotNetCTFDumper.MMFParser.MFA.Loaders.Controls;
+using Frame = DotNetCTFDumper.MMFParser.MFA.Loaders.Frame;
 
-namespace DotNetCTFDumper.MMFParser.Data
+namespace DotNetCTFDumper.MMFParser.MFA
 {
     public class MFA : DataLoader
     {
@@ -112,6 +113,7 @@ namespace DotNetCTFDumper.MMFParser.Data
         public List<Tuple<int, string, string, int, byte[]>> Extensions;
         public List<Tuple<string, int>> CustomQuals;
         public List<Frame> Frames;
+        public ChunkList Chunks;
 
 
         public override void Print()
@@ -184,7 +186,7 @@ namespace DotNetCTFDumper.MMFParser.Data
 
             Controls.Write(Writer);
             
-
+            
             if (Menu != null)
             {
                 using (ByteWriter menuWriter = new ByteWriter(new MemoryStream()))
@@ -200,6 +202,7 @@ namespace DotNetCTFDumper.MMFParser.Data
                 Writer.WriteInt32(0);
             }
             
+            
             Writer.WriteInt32(windowMenuIndex);
             Writer.WriteInt32(menuImages.Count);
             foreach (KeyValuePair<int, int> valuePair in menuImages)
@@ -217,10 +220,26 @@ namespace DotNetCTFDumper.MMFParser.Data
             {
                 Writer.WriteInt32(iconImage);
             }
-            Writer.WriteInt32(0);//custom qualifiers
-            Writer.WriteInt32(0); //extensions
+            Writer.WriteInt32(CustomQuals.Count);
+            foreach (Tuple<string,int> customQual in CustomQuals)
+            {
+                Writer.AutoWriteUnicode(customQual.Item1);
+                Writer.WriteInt32(customQual.Item2);
+            }
+            Writer.WriteInt32(Extensions.Count);
+            foreach(var extension in Extensions)
+            {
+                Writer.WriteInt32(extension.Item1);
+                Writer.WriteUnicode(extension.Item2);
+                Writer.WriteUnicode(extension.Item3);
+                Writer.WriteInt32(extension.Item4);
+                Writer.WriteBytes(extension.Item5);
+
+            }
+            
             Writer.WriteInt32(Frames.Count); //frame
             var startPos = Reader.Tell() + 4 * Frames.Count + 4;
+            
             ByteWriter newWriter = new ByteWriter(new MemoryStream());
             foreach (Frame frame in Frames)
             {
@@ -229,7 +248,7 @@ namespace DotNetCTFDumper.MMFParser.Data
             }
             Writer.WriteUInt32((uint) (startPos+newWriter.Tell()+4));
             Writer.WriteWriter(newWriter);
-
+            Chunks.Write(Writer);
 
 
 
@@ -378,8 +397,8 @@ namespace DotNetCTFDumper.MMFParser.Data
             }
 
             Reader.Seek(nextOffset);
-            var chunks = new MFALoaders.ChunkList(Reader);
-            chunks.Read();
+            Chunks = new ChunkList(Reader);
+            Chunks.Read();
             return;
         }
 
diff --git a/NetMFAPatcher/Program.cs b/NetMFAPatcher/Program.cs
index 8d96db7..791063b 100644
--- a/NetMFAPatcher/Program.cs
+++ b/NetMFAPatcher/Program.cs
@@ -3,8 +3,8 @@ using System.IO;
 using System.Runtime.InteropServices;
 using System.Windows.Forms;
 using DotNetCTFDumper.GUI;
-using DotNetCTFDumper.MMFParser.Data;
 using DotNetCTFDumper.MMFParser.Decompiling;
+using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 using Joveler.Compression.ZLib;
 
diff --git a/NetMFAPatcher/Utils/Backend.cs b/NetMFAPatcher/Utils/Backend.cs
index 66bdbc4..8eb5987 100644
--- a/NetMFAPatcher/Utils/Backend.cs
+++ b/NetMFAPatcher/Utils/Backend.cs
@@ -1,7 +1,7 @@
 using System.ComponentModel;
 using DotNetCTFDumper.GUI;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Banks;
-using static DotNetCTFDumper.MMFParser.Data.Exe;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
+using static DotNetCTFDumper.MMFParser.EXE.Exe;
 
 namespace DotNetCTFDumper.Utils
 {
diff --git a/NetMFAPatcher/Utils/ByteWriter.cs b/NetMFAPatcher/Utils/ByteWriter.cs
index 69f385c..3f94043 100644
--- a/NetMFAPatcher/Utils/ByteWriter.cs
+++ b/NetMFAPatcher/Utils/ByteWriter.cs
@@ -59,6 +59,8 @@ namespace DotNetCTFDumper.Utils
         }
 
         public void WriteInt8(byte value) => Write(value);
+        public void WriteUInt8(sbyte value) => Write(value);
+
         public void WriteInt16(short value) => Write(value);
         public void WriteInt32(int value) => Write(value);
         public void WriteInt64(long value) => Write(value);
diff --git a/NetMFAPatcher/Utils/Helper.cs b/NetMFAPatcher/Utils/Helper.cs
index 9e2927b..a572988 100644
--- a/NetMFAPatcher/Utils/Helper.cs
+++ b/NetMFAPatcher/Utils/Helper.cs
@@ -7,9 +7,9 @@ using System.Runtime.InteropServices;
 using System.Text.RegularExpressions;
 using DotNetCTFDumper.GUI;
 using DotNetCTFDumper.MMFParser;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Events.Parameters;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Objects;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Events.Parameters;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Objects;
 
 namespace DotNetCTFDumper.Utils
 {
diff --git a/NetMFAPatcher/Utils/ImageDumper.cs b/NetMFAPatcher/Utils/ImageDumper.cs
index a4373c2..7c4276b 100644
--- a/NetMFAPatcher/Utils/ImageDumper.cs
+++ b/NetMFAPatcher/Utils/ImageDumper.cs
@@ -2,10 +2,10 @@
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
-using DotNetCTFDumper.MMFParser.ChunkLoaders;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Banks;
-using DotNetCTFDumper.MMFParser.ChunkLoaders.Objects;
-using DotNetCTFDumper.MMFParser.Data;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.EXE.Loaders;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
+using DotNetCTFDumper.MMFParser.EXE.Loaders.Objects;
 
 namespace DotNetCTFDumper.Utils
 {

From 7b1572ea2970599f4ee51c9f7b636de41887aa6c Mon Sep 17 00:00:00 2001
From: 1987kostya <ivaninvideorec@gmail.com>
Date: Sun, 13 Dec 2020 11:15:28 +0600
Subject: [PATCH 2/8] Pame2Mfa updates, MFA writing fixes

---
 NetMFAPatcher/DotNetCTFDumper.csproj          |   2 +
 NetMFAPatcher/MMFParser/EXE/ChunkList.cs      |   6 +
 .../MMFParser/EXE/Loaders/Events/Events.cs    |   4 +-
 NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs  | 109 +++++++++-
 .../MMFParser/MFA/Decompiling/MFAGenerator.cs |   1 +
 .../MMFParser/MFA/Decompiling/PAME2MFA.cs     |  57 +++++-
 NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs | 192 +++++++++++-------
 NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs  |  33 +--
 .../MMFParser/MFA/Loaders/ImageBank.cs        |   2 +-
 NetMFAPatcher/MMFParser/MFA/MFA.cs            |   5 +-
 NetMFAPatcher/PluginAPI/IPlugin.cs            |   8 +
 NetMFAPatcher/PluginAPI/PluginAPI.cs          |  46 +++++
 NetMFAPatcher/Program.cs                      |   4 +-
 NetMFAPatcher/Utils/BitDict.cs                |   1 +
 NetMFAPatcher/Utils/ByteReader.cs             |   4 +-
 NetMFAPatcher/Utils/ByteWriter.cs             |   2 +-
 16 files changed, 369 insertions(+), 107 deletions(-)
 create mode 100644 NetMFAPatcher/PluginAPI/IPlugin.cs
 create mode 100644 NetMFAPatcher/PluginAPI/PluginAPI.cs

diff --git a/NetMFAPatcher/DotNetCTFDumper.csproj b/NetMFAPatcher/DotNetCTFDumper.csproj
index 24959ec..79be9d8 100644
--- a/NetMFAPatcher/DotNetCTFDumper.csproj
+++ b/NetMFAPatcher/DotNetCTFDumper.csproj
@@ -217,6 +217,8 @@
     <Compile Include="MMFParser\MFA\Loaders\mfachunks\Movements.cs" />
     <Compile Include="MMFParser\MFA\Loaders\mfachunks\ObjectLoader.cs" />
     <Compile Include="MMFParser\MFA\Loaders\ValueList.cs" />
+    <Compile Include="PluginAPI\IPlugin.cs" />
+    <Compile Include="PluginAPI\PluginAPI.cs" />
     <Compile Include="Settings.cs" />
     <Compile Include="Utils\Backend.cs" />
     <Compile Include="Utils\BitDict.cs" />
diff --git a/NetMFAPatcher/MMFParser/EXE/ChunkList.cs b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
index fa1af50..283210f 100644
--- a/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
+++ b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
@@ -226,9 +226,15 @@ namespace DotNetCTFDumper.MMFParser.EXE
                 case 13108:
                     loader = new FrameHeader(chunk);
                     break;
+                case 13111:
+                    loader = new FramePalette(chunk);
+                    break;
                 case 13112:
                     loader = new ObjectInstances(chunk);
                     break;
+                case 13121:
+                    loader = new Layers(chunk);
+                    break;
                 case 26214:
                     loader = new ImageBank(chunk);
                     break;
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs
index bab1ff2..500967b 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Events/Events.cs
@@ -201,8 +201,8 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Events
         public void Write(ByteWriter Writer)
         {
             ByteWriter newWriter = new ByteWriter(new MemoryStream());
-            newWriter.WriteInt8((byte) Conditions.Count);
-            newWriter.WriteInt8((byte) Actions.Count);
+            newWriter.WriteUInt8( (sbyte) Conditions.Count);
+            newWriter.WriteUInt8((sbyte) Actions.Count);
             newWriter.WriteUInt16(Flags);
             if (Settings.Build >= 284)
             {
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
index 2771409..8cfe83a 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Drawing;
+using System.Drawing.Imaging;
 using DotNetCTFDumper.Utils;
 
 namespace DotNetCTFDumper.MMFParser.EXE.Loaders
@@ -43,6 +44,9 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
         public ChunkList Chunks;
         public FrameHeader Header;
         public ObjectInstances Objects;
+        public Layers Layers;
+        public Events.Events Events;
+        public FramePalette Palette;
 
 
         public override void Print(bool ext)
@@ -85,8 +89,22 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
             {
                 this.Password = password.Value;
             }
-            
-            
+
+            var layers = Chunks.GetChunk<Layers>();
+            if (layers != null)
+            {
+                Layers = layers;
+            }
+            var events = Chunks.GetChunk<Events.Events>();
+            if (events != null)
+            {
+                Events = events;
+            }
+            var palette = Chunks.GetChunk<FramePalette>();
+            if (palette != null)
+            {
+                Palette = palette;
+            }
             Header = Chunks.GetChunk<FrameHeader>();
             Width = Header.Width;
             Height = Header.Height;
@@ -98,6 +116,8 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
                 CountOfObjs = Objects.CountOfObjects;              
             }
             
+            
+            
 
 
 
@@ -283,8 +303,51 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
         }
     }
 
-    class Layer : ChunkLoader
+    public class Layers : ChunkLoader
     {
+        public List<Layer> Items;
+
+        public Layers(ByteReader reader) : base(reader)
+        {
+        }
+
+        public Layers(ChunkList.Chunk chunk) : base(chunk)
+        {
+        }
+
+        public override void Read()
+        {
+            Items = new List<Layer>();
+            var count = Reader.ReadUInt32();
+            for (int i = 0; i < count; i++)
+            {
+                Layer item = new Layer(Reader);
+                item.Read();
+                Items.Add(item);
+            }
+
+        }
+
+        public override void Print(bool ext)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override string[] GetReadableData()
+        {
+            throw new NotImplementedException();
+        }
+    }
+
+    public class Layer : ChunkLoader
+    {
+        public string Name;
+        public uint Flags;
+        public float XCoeff;
+        public float YCoeff;
+        public int NumberOfBackgrounds;
+        public int BackgroudIndex;
+
         public Layer(ByteReader reader) : base(reader)
         {
         }
@@ -295,7 +358,45 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 
         public override void Read()
         {
-            
+            Flags = Reader.ReadUInt32();
+            XCoeff = Reader.ReadSingle();
+            YCoeff = Reader.ReadSingle();
+            NumberOfBackgrounds = Reader.ReadInt32();
+            BackgroudIndex = Reader.ReadInt32();
+            Name = Reader.ReadWideString();
+            Console.WriteLine(Name);
+        }
+
+        public override void Print(bool ext)
+        {
+            throw new NotImplementedException();
+        }
+
+        public override string[] GetReadableData()
+        {
+            throw new NotImplementedException();
+        }
+    }
+
+    public class FramePalette : ChunkLoader
+    {
+        public List<Color> Items;
+
+        public FramePalette(ByteReader reader) : base(reader)
+        {
+        }
+
+        public FramePalette(ChunkList.Chunk chunk) : base(chunk)
+        {
+        }
+
+        public override void Read()
+        {
+            Items = new List<Color>();
+            for (int i = 0; i < 256; i++)
+            {
+                Items.Add(Reader.ReadColor());
+            }
         }
 
         public override void Print(bool ext)
diff --git a/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs b/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
index 52dd6d8..e6a3a16 100644
--- a/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
@@ -38,6 +38,7 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
             
             //Add modifications
             
+
             var mfaWriter = new ByteWriter("outTest.mfa", FileMode.Create);
             template.Write(mfaWriter);
         }
diff --git a/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs b/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
index 65558ba..b412d87 100644
--- a/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
@@ -1,5 +1,12 @@
 
+using System;
+using System.Collections.Generic;
+using System.Linq;
 using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.MFA.Loaders;
+using DotNetCTFDumper.Utils;
+using Frame = DotNetCTFDumper.MMFParser.EXE.Loaders.Frame;
+using Layer = DotNetCTFDumper.MMFParser.MFA.Loaders.Layer;
 
 namespace DotNetCTFDumper.MMFParser.Decompiling
 {
@@ -10,13 +17,14 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
             
             //mfa.MfaBuild = 4;
             //mfa.Product = (int) game.ProductVersion;
-            mfa.BuildVersion = 283;
+            //mfa.BuildVersion = 283;
             mfa.Name = game.Name;
+            mfa.LangId = 0;
             mfa.Description = $"Decompiled with {Settings.DumperVersion}";
             mfa.Path = game.EditorFilename;
-            return;
+            
             //mfa.Stamp = wtf;
-            if (game.Fonts != null) mfa.Fonts = game.Fonts;
+            /*if (game.Fonts != null) mfa.Fonts = game.Fonts;
             
             mfa.Sounds = game.Sounds;
             foreach (var item in mfa.Sounds.Items)
@@ -29,8 +37,8 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
             {
                 mfa.Images.Items[key].Debug = true;
             }
-
-            mfa.Author = game.Author;
+            */
+            mfa.Author = game.Author!=null? game.Author:"Kostya";
             mfa.Copyright = game.Copyright;
             mfa.Company = "CTFAN Team";
             mfa.Version = "";
@@ -54,7 +62,44 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
             mfa.Aboutbox = game.AboutText?.Length > 0
                 ? game?.AboutText
                 : "This game was decompiled with " + Settings.DumperVersion;
-            
+            mfa.Frames.Clear();
+            foreach (Frame gameFrame in game.Frames)
+            {
+                MFA.Loaders.Frame mfaFrame = new MFA.Loaders.Frame(null);
+                mfaFrame.Handle = game.Frames.IndexOf(gameFrame);
+                mfaFrame.Name = gameFrame.Name;
+                mfaFrame.SizeX = gameFrame.Width;
+                mfaFrame.SizeY = gameFrame.Height;
+                mfaFrame.Background = gameFrame.Background;
+                //TODO: Transitions
+                //TODO: Flags
+                mfaFrame.MaxObjects = gameFrame.Events?.MaxObjects ?? 1337;
+                mfaFrame.Password = gameFrame?.Password ?? "";
+                mfaFrame.LastViewedX = 320;
+                mfaFrame.LastViewedY = 240;
+                mfaFrame.Palette = gameFrame.Palette.Items;
+                mfaFrame.StampHandle = 12;
+                mfaFrame.ActiveLayer = 0;
+                mfaFrame.Layers = new List<Layer>();
+                mfaFrame.Layers.Add(new Layer(null){Name = "New Layer"});
+                
+                /*foreach (EXE.Loaders.Layer gameLayer in gameFrame.Layers.Items)
+                {
+                    Layer mfaLayer = new Layer(null);
+                    mfaLayer.Name = gameLayer.Name;
+                    mfaLayer.Flags = (int) gameLayer.Flags;
+                    //TODO: Flags
+                    mfaLayer.XCoefficient = gameLayer.XCoeff;
+                    mfaLayer.YCoefficient = gameLayer.YCoeff;
+                    mfaFrame.Layers.Add(mfaLayer);
+                }*/
+                mfaFrame.Events = MFA.MFA.emptyEvents;
+                mfaFrame.Chunks = MFA.MFA.emptyFrameChunks;
+   
+                mfa.Frames.Add(mfaFrame);
+               
+            }
+
 
         }
     }
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
index bf0480c..bb37b44 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
@@ -2,6 +2,7 @@
 using System.Collections.Generic;
 using System.IO;
 using System.Runtime.InteropServices;
+using System.Security.AccessControl;
 using System.Text;
 using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.MMFParser.EXE.Loaders.Events;
@@ -41,6 +42,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
         public uint EventLine;
         public uint EventLineY;
         public byte[] Saved;
+        public int EditorDataUnk;
 
         public Events(ByteReader reader) : base(reader)
         {
@@ -52,8 +54,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 
         public override void Read()
         {
-            Saved = Reader.ReadBytes(92);
-            return;
+            
             Version = Reader.ReadUInt16();
             FrameType = Reader.ReadUInt16();
             Items = new List<EventGroup>();
@@ -109,7 +110,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
                 }
                 else if (name == EventEditorData)
                 {
-                    Reader.Skip(4);
+                    EditorDataUnk = Reader.ReadInt32();
                     ConditionWidth = Reader.ReadUInt16();
                     ObjectHeight = Reader.ReadUInt16();
                     Reader.Skip(12);
@@ -178,91 +179,130 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 
         public override void Write(ByteWriter Writer)
         {
-            Writer.WriteBytes(Saved);
-            return;
-            Writer.WriteUInt16(Version);
-            Writer.WriteInt16((short) FrameType);
-            Writer.WriteBytes(new byte[]{0x04,0x04,0x00,0x00});
-            if (Items != null)
-            {
-                Writer.WriteAscii(EventData);
-                
-                ByteWriter newWriter = new ByteWriter(new MemoryStream());
-                foreach (EventGroup eventGroup in Items)
-                {
-                    eventGroup.Write(newWriter);
-                }
-                Writer.WriteWriter(newWriter);
-            }
-            
-            if (Comments != null)
+            //Writer.WriteBytes(Saved);
+            //return;
+            using (ByteWriter debug = new ByteWriter(new MemoryStream()))
             {
-                Writer.WriteAscii(CommentData);
-                foreach (Comment comment in Comments)
-                {
-                    comment.Write(Writer);
-                }
-            }
 
-            if (Objects != null)
-            {
-                Writer.WriteAscii(ObjectData);
-                Writer.WriteUInt32((uint) Objects.Count);
-                foreach (EventObject eventObject in Objects)
+                //Writer = new ByteWriter(new MemoryStream());
+                Writer.WriteUInt16(Version);
+                Writer.WriteInt16((short) FrameType);
+               
+                //Writer.WriteBytes(new byte[] {0x04, 0x04, 0x00, 0x00});
+                // if (Items != null)
+                //     {
+                //         Console.WriteLine("Writing EventData");
+                //         Writer.WriteAscii(EventData);
+                //      
+                //         ByteWriter newWriter = new ByteWriter(new MemoryStream());
+                //         foreach (EventGroup eventGroup in Items)
+                //         {
+                //         eventGroup.Write(newWriter);
+                //         }
+                //     
+                //         Writer.WriteWriter(newWriter);
+                //     }
+                // if (Objects != null)
+                // {
+                //     Console.WriteLine("Writing EventObjects");
+                //     Writer.WriteAscii(ObjectData);
+                //     Writer.WriteUInt32((uint) Objects.Count);
+                //     foreach (EventObject eventObject in Objects)
+                //     {
+                //         eventObject.Write(Writer);
+                //     }
+                // }
+                if (ObjectTypes != null)
                 {
-                    eventObject.Write(Writer);
-                }
-            }
-            Writer.WriteAscii(EventEditorData);
-            Writer.Skip(4+2*2+4*3);
-            if (ObjectTypes != null)
-            {
-                Writer.WriteAscii(ObjectListData);
-                Writer.WriteInt16(-1);
-                Writer.WriteInt16((short) ObjectTypes.Count);
-                foreach (ushort objectType in ObjectTypes)
-                {
-                    Writer.WriteUInt16(objectType);
-                }
-                foreach (ushort objectHandle in ObjectHandles)
-                {
-                    Writer.WriteUInt16(objectHandle);
+                    Console.WriteLine("Writing ObjectTypes");
+                    Writer.WriteAscii(ObjectListData);
+                    Writer.WriteInt16(-1);
+                    Writer.WriteInt16((short) ObjectTypes.Count);
+                    foreach (ushort objectType in ObjectTypes)
+                    {
+                        Writer.WriteUInt16(objectType);
+                    }
+
+                    foreach (ushort objectHandle in ObjectHandles)
+                    {
+                        Writer.WriteUInt16(objectHandle);
+                    }
+
+                    foreach (ushort objectFlag in ObjectFlags)
+                    {
+                        Writer.WriteUInt16(objectFlag);
+                    }
+
+                    Writer.WriteUInt16((ushort) Folders.Count);
+                    foreach (string folder in Folders)
+                    {
+                        Writer.AutoWriteUnicode(folder);
+                    }
                 }
-                foreach (ushort objectFlag in ObjectFlags)
+                if (X != 0)
                 {
-                    Writer.WriteUInt16(objectFlag);
+                    Console.WriteLine("Writing X");
+                    Writer.WriteAscii(EditorPositionData);
+                    Writer.WriteInt16(1);
+                    Writer.WriteInt32((int) X);
+                    Writer.WriteInt32((int) Y);
+                    Writer.WriteUInt32(CaretType);
+                    Writer.WriteUInt32(CaretX);
+                    Writer.WriteUInt32(CaretY);
                 }
-                Writer.WriteUInt16((ushort) Folders.Count);
-                foreach (string folder in Folders)
+                if (LineY != 0)
                 {
-                    Writer.AutoWriteUnicode(folder);
+                    Console.WriteLine("Writing LineY");
+                    Writer.WriteAscii(EditorLineData);
+                    Writer.WriteInt16(1);
+                    Writer.WriteUInt32(LineY);
+                    Writer.WriteUInt32(LineItemType);
+                    Writer.WriteUInt32(EventLine);
+                    Writer.WriteUInt32(EventLineY);
                 }
+                Console.WriteLine("Writing EventEditorData");
+                Writer.WriteAscii(EventEditorData);
+                Writer.WriteInt32(EditorDataUnk);
+                Writer.WriteInt16((short) ConditionWidth);
+                Writer.WriteInt16((short) ObjectHeight);
+                Writer.Skip(12);
                 
-            }
+                
+                //Writer.Skip((4 + 2 * 2 + 4 * 3)-4);
+                
+                Writer.WriteAscii(EventEnd);
+                
+                
+                //TODO: Fix commented part
+                // 
+                
+                //
+                // if (Comments != null)
+                // {
+                //     Console.WriteLine("Writing Comments");
+                //     Writer.WriteAscii(CommentData);
+                //     foreach (Comment comment in Comments)
+                //     {
+                //         comment.Write(Writer);
+                //     }
+                // }
 
-            if (X != 0)
-            {
-                Writer.WriteAscii(EditorPositionData);
-                Writer.WriteInt16(1);
-                Writer.WriteInt32((int) X);
-                Writer.WriteInt32((int) Y);
-                Writer.WriteUInt32(CaretType);
-                Writer.WriteUInt32(CaretX);
-                Writer.WriteUInt32(CaretY);
-            }
+                
 
-            if (LineY != 0)
-            {
-                Writer.WriteAscii(EditorLineData);
-                Writer.WriteInt16(1);
-                Writer.WriteUInt32(LineY);
-                Writer.WriteUInt32(LineItemType);
-                Writer.WriteUInt32(EventLine);
-                Writer.WriteUInt32(EventLineY);
+                
+                
+
+                
+
+                
+
+                
+                var data = ((MemoryStream) Writer.BaseStream).GetBuffer();
+                Array.Resize(ref data,(int) Writer.Size());
+                File.WriteAllBytes("MyEvents.bin",data);
             }
-            Writer.WriteAscii(EventEnd);
-            
-            
+
+
 
 
 
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
index 7d48227..57fa654 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
@@ -13,12 +13,12 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
         public int SizeY;
         public Color Background;
         public int MaxObjects;
-        public List<FrameItem> Items;
+        public List<FrameItem> Items=new List<FrameItem>();
         public int Handle;
         public int LastViewedX;
         public int LastViewedY;
-        public List<ItemFolder> Folders;
-        public List<FrameInstance> Instances;
+        public List<ItemFolder> Folders=new List<ItemFolder>();
+        public List<FrameInstance> Instances=new List<FrameInstance>();
         public uint Flags;
         public string Password;
         public List<Color> Palette;
@@ -32,6 +32,8 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
         {
         }
 
+        
+
 
         public override void Write(ByteWriter Writer)
         {
@@ -74,14 +76,17 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
             {
                 item.Write(Writer);
             }
-            Writer.WriteInt32(Instances.Count);
-            foreach (var item in Instances)
+
+            if (Instances != null)
             {
-                item.Write(Writer);
+                Writer.WriteInt32(Instances.Count);
+                foreach (var item in Instances)
+                {
+                    item.Write(Writer);
+                }
             }
-            Console.WriteLine("BeforeEventsPos: "+Writer.Tell());
+
             Events.Write(Writer);
-            Console.WriteLine("AfterEventsPos: "+Writer.Tell());
             Chunks.Write(Writer);
 
 
@@ -151,21 +156,25 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
             }
             
             Instances = new List<FrameInstance>();
-            var instancesCount = 0;//Reader.ReadInt32();
+            var instancesCount = Reader.ReadInt32();
             for (int i = 0; i < instancesCount; i++)
             {
                 var inst = new FrameInstance(Reader);
-                //inst.Read();
+                inst.Read();
                 Instances.Add(inst);
             }
             Events = new Events(Reader);
+            Console.WriteLine("BeforeEventsPos: "+Reader.Tell());
             Events.Read();
+            Console.WriteLine("AfterEventsPos: "+Reader.Tell());
             Chunks = new ChunkList(Reader);
             Chunks.Read();
-            
+            MFA.emptyEvents = Events;
+            MFA.emptyFrameChunks = Chunks;
+
+
 
 
-            
 
 
         }
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs
index c7ce198..31c2b7c 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/ImageBank.cs
@@ -14,7 +14,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
         private int PaletteVersion;
         private int PaletteEntries;
         public Dictionary<int, ImageItem> Items = new Dictionary<int, ImageItem>();
-        private List<Color> Palette;
+        public List<Color> Palette;
 
         public override void Print()
         {
diff --git a/NetMFAPatcher/MMFParser/MFA/MFA.cs b/NetMFAPatcher/MMFParser/MFA/MFA.cs
index 5a35a9d..87bfdd6 100644
--- a/NetMFAPatcher/MMFParser/MFA/MFA.cs
+++ b/NetMFAPatcher/MMFParser/MFA/MFA.cs
@@ -115,6 +115,9 @@ namespace DotNetCTFDumper.MMFParser.MFA
         public List<Frame> Frames;
         public ChunkList Chunks;
 
+        public static Events emptyEvents;
+        public static ChunkList emptyFrameChunks;
+
 
         public override void Print()
         {
@@ -162,7 +165,7 @@ namespace DotNetCTFDumper.MMFParser.MFA
             Writer.AutoWriteUnicode(Version);
             Writer.WriteInt32(WindowX);
             Writer.WriteInt32(WindowY);
-            Writer.WriteColor(Color.White);
+            Writer.WriteColor(Color.FromArgb(0,255,255,255));
             Writer.WriteInt32((int) DisplayFlags.flag);
             Writer.WriteInt32((int) GraphicFlags.flag);
             Writer.AutoWriteUnicode(HelpFile);
diff --git a/NetMFAPatcher/PluginAPI/IPlugin.cs b/NetMFAPatcher/PluginAPI/IPlugin.cs
new file mode 100644
index 0000000..788089b
--- /dev/null
+++ b/NetMFAPatcher/PluginAPI/IPlugin.cs
@@ -0,0 +1,8 @@
+namespace DotNetCTFDumper.PluginAPI
+{
+    public interface IPlugin
+    {
+        
+        
+    }
+}
\ No newline at end of file
diff --git a/NetMFAPatcher/PluginAPI/PluginAPI.cs b/NetMFAPatcher/PluginAPI/PluginAPI.cs
new file mode 100644
index 0000000..36baa70
--- /dev/null
+++ b/NetMFAPatcher/PluginAPI/PluginAPI.cs
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Linq;
+using DotNetCTFDumper.MMFParser.EXE.Loaders;
+using DotNetCTFDumper.MMFParser.MFA;
+using DotNetCTFDumper.MMFParser.MFA.Loaders;
+using Frame = DotNetCTFDumper.MMFParser.MFA.Loaders.Frame;
+using Layer = DotNetCTFDumper.MMFParser.MFA.Loaders.Layer;
+
+namespace DotNetCTFDumper.PluginAPI
+{
+    public class PluginAPI
+    {
+        public static Frame GetEmptyFrame(List<Color> palette,int handle=0,int x=640,int y=480,string name="New Frame")
+        {
+            var frame = new Frame(null)
+            {
+                Handle = 0,
+                Name = name,
+                Password = "",
+                SizeX = x,
+                SizeY = y,
+                Background = Color.Green,
+                Flags = 260,
+                Palette = palette,
+                Layers = new List<Layer>(),
+                Folders = new List<ItemFolder>(),
+                Items = new List<FrameItem>(),
+                Events = MFA.emptyEvents,
+                Chunks = MFA.emptyFrameChunks
+                
+            };
+            //frame.Instances = template.Frames[0].Instances;
+            var testLayer = new Layer(null) {Name = "New Super Layer"};
+            frame.Layers.Add(testLayer);
+            
+
+            
+            
+            return frame;
+
+        }
+        
+    }
+}
\ No newline at end of file
diff --git a/NetMFAPatcher/Program.cs b/NetMFAPatcher/Program.cs
index 791063b..b1b7608 100644
--- a/NetMFAPatcher/Program.cs
+++ b/NetMFAPatcher/Program.cs
@@ -24,8 +24,8 @@ namespace DotNetCTFDumper
             var handle = Helper.GetConsoleWindow();
             Helper.ShowWindow(handle, Helper.SW_HIDE);
             InitNativeLibrary();
-            MFAGenerator.ReadTestMFA();
-            Environment.Exit(0);
+            //MFAGenerator.ReadTestMFA();
+            //Environment.Exit(0);
 
             var path = "";
             var verbose = false;
diff --git a/NetMFAPatcher/Utils/BitDict.cs b/NetMFAPatcher/Utils/BitDict.cs
index a458e91..fc091ff 100644
--- a/NetMFAPatcher/Utils/BitDict.cs
+++ b/NetMFAPatcher/Utils/BitDict.cs
@@ -30,6 +30,7 @@ namespace DotNetCTFDumper.Utils
 
             return false;
         }
+       
 
         public static string ToDebugString<TKey, TValue>(IDictionary<TKey, TValue> dictionary)
         {
diff --git a/NetMFAPatcher/Utils/ByteReader.cs b/NetMFAPatcher/Utils/ByteReader.cs
index 02d4e78..dd9724e 100644
--- a/NetMFAPatcher/Utils/ByteReader.cs
+++ b/NetMFAPatcher/Utils/ByteReader.cs
@@ -129,9 +129,9 @@ namespace DotNetCTFDumper.Utils
             var r = ReadByte();
             var g = ReadByte();
             var b = ReadByte();
-            Skip(1);
+            var a = ReadByte();
 
-            return Color.FromArgb(r, g, b);
+            return Color.FromArgb(a,r, g, b);
 
         }
 
diff --git a/NetMFAPatcher/Utils/ByteWriter.cs b/NetMFAPatcher/Utils/ByteWriter.cs
index 3f94043..27d4d08 100644
--- a/NetMFAPatcher/Utils/ByteWriter.cs
+++ b/NetMFAPatcher/Utils/ByteWriter.cs
@@ -98,7 +98,7 @@ namespace DotNetCTFDumper.Utils
             WriteInt8(color.R);
             WriteInt8(color.G);
             WriteInt8(color.B);
-            WriteInt8(0);
+            WriteInt8(color.A);
         }
 
         public void WriteWriter(ByteWriter toWrite)

From ae79efd09d87b8e4ed11149acc161fa8bc312dbd Mon Sep 17 00:00:00 2001
From: 1987kostya <ivaninvideorec@gmail.com>
Date: Mon, 14 Dec 2020 11:05:58 +0600
Subject: [PATCH 3/8] Fixes in translation method, Updates in MFA
 reading/writing

---
 NetMFAPatcher/DotNetCTFDumper.csproj          |  15 +-
 NetMFAPatcher/GUI/MFABuilderForm.cs           |  37 +++++
 NetMFAPatcher/GUI/MainForm.cs                 |   5 +-
 NetMFAPatcher/MMFParser/EXE/ChunkList.cs      |  24 +++
 NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs  |   9 +-
 .../MMFParser/EXE/Loaders/Transition.cs       |  56 +++++++
 .../MMFParser/MFA/Decompiling/PAME2MFA.cs     | 106 --------------
 NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs |   2 +-
 NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs  |  32 +++-
 NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs  |  19 ++-
 .../MMFParser/MFA/Loaders/Transition.cs       |  62 ++++++++
 .../MMFParser/MFA/Loaders/mfachunks/Active.cs |   6 +
 .../MFA/Loaders/mfachunks/AnimationObject.cs  |  39 +++--
 .../MFA/Loaders/mfachunks/Behaviours.cs       |  11 +-
 .../MFA/Loaders/mfachunks/Movements.cs        |  57 ++++++--
 .../MFA/Loaders/mfachunks/ObjectLoader.cs     |  31 +++-
 .../MFAGenerator.cs                           |   8 +-
 .../MMFParser/Translation/PAME2MFA.cs         | 138 ++++++++++++++++++
 NetMFAPatcher/Program.cs                      |  12 +-
 NetMFAPatcher/Settings.cs                     |   6 +-
 NetMFAPatcher/Utils/BitDict.cs                |  12 +-
 21 files changed, 523 insertions(+), 164 deletions(-)
 create mode 100644 NetMFAPatcher/GUI/MFABuilderForm.cs
 create mode 100644 NetMFAPatcher/MMFParser/EXE/Loaders/Transition.cs
 delete mode 100644 NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
 create mode 100644 NetMFAPatcher/MMFParser/MFA/Loaders/Transition.cs
 rename NetMFAPatcher/MMFParser/{MFA/Decompiling => Translation}/MFAGenerator.cs (85%)
 create mode 100644 NetMFAPatcher/MMFParser/Translation/PAME2MFA.cs

diff --git a/NetMFAPatcher/DotNetCTFDumper.csproj b/NetMFAPatcher/DotNetCTFDumper.csproj
index 79be9d8..e3c5677 100644
--- a/NetMFAPatcher/DotNetCTFDumper.csproj
+++ b/NetMFAPatcher/DotNetCTFDumper.csproj
@@ -149,6 +149,12 @@
     <Compile Include="GUI\MainForm.Designer.cs">
       <DependentUpon>MainForm.cs</DependentUpon>
     </Compile>
+    <Compile Include="GUI\MFABuilderForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="GUI\MFABuilderForm.Designer.cs">
+      <DependentUpon>MFABuilderForm.cs</DependentUpon>
+    </Compile>
     <Compile Include="GUI\ObjectBox.cs" />
     <Compile Include="GUI\PackDataForm.cs">
       <SubType>Form</SubType>
@@ -156,6 +162,8 @@
     <Compile Include="GUI\PackDataForm.Designer.cs">
       <DependentUpon>PackDataForm.cs</DependentUpon>
     </Compile>
+    <Compile Include="MMFParser\Translation\MFAGenerator.cs" />
+    <Compile Include="MMFParser\Translation\PAME2MFA.cs" />
     <Compile Include="MMFParser\EXE\ChunkList.cs" />
     <Compile Include="MMFParser\EXE\Loaders\AppHeader.cs" />
     <Compile Include="MMFParser\EXE\Loaders\AppMenu.cs" />
@@ -193,14 +201,14 @@
     <Compile Include="MMFParser\EXE\Loaders\Objects\ObjectCommon.cs" />
     <Compile Include="MMFParser\EXE\Loaders\Objects\Value.cs" />
     <Compile Include="MMFParser\EXE\Loaders\StringChunk.cs" />
+    <Compile Include="MMFParser\EXE\Loaders\Transition.cs" />
     <Compile Include="MMFParser\EXE\Loaders\yves.cs" />
     <Compile Include="MMFParser\EXE\DataLoader.cs" />
     <Compile Include="MMFParser\EXE\EXE.cs" />
     <Compile Include="MMFParser\EXE\GameData.cs" />
     <Compile Include="MMFParser\EXE\PackData.cs" />
     <Compile Include="MMFParser\Constants.cs" />
-    <Compile Include="MMFParser\MFA\Decompiling\MFAGenerator.cs" />
-    <Compile Include="MMFParser\MFA\Decompiling\PAME2MFA.cs" />
+    <Compile Include="MMFParser\MFA\Loaders\Transition.cs" />
     <Compile Include="MMFParser\MFA\MFA.cs" />
     <Compile Include="MMFParser\MFA\Loaders\ChunkList.cs" />
     <Compile Include="MMFParser\MFA\Loaders\Controls.cs" />
@@ -263,6 +271,9 @@
     <EmbeddedResource Include="GUI\MainForm.resx">
       <DependentUpon>MainForm.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="GUI\MFABuilderForm.resx">
+      <DependentUpon>MFABuilderForm.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="GUI\PackDataForm.resx">
       <DependentUpon>PackDataForm.cs</DependentUpon>
     </EmbeddedResource>
diff --git a/NetMFAPatcher/GUI/MFABuilderForm.cs b/NetMFAPatcher/GUI/MFABuilderForm.cs
new file mode 100644
index 0000000..794fcc7
--- /dev/null
+++ b/NetMFAPatcher/GUI/MFABuilderForm.cs
@@ -0,0 +1,37 @@
+using System;
+using System.Drawing;
+using System.Linq;
+using System.Windows.Forms;
+using DotNetCTFDumper.MMFParser.Translation;
+
+namespace DotNetCTFDumper.GUI
+{
+    public partial class MFABuilderForm : Form
+    {
+        public MFABuilderForm(Color color)
+        {
+            InitializeComponent();
+            foreach (Control control in Controls)
+            {
+                control.BackColor=Color.Black;
+                control.ForeColor = color;
+                if (control is Button)
+                {
+                    control.BackColor=Color.FromArgb(30,30,30);
+                }
+            }
+            Pame2Mfa.TranslatingFrame += OnFrameTranslation;
+
+        }
+
+        public void OnFrameTranslation(object name)
+        {
+            logBox.AppendText($"Translating Frame: {name}\r\n");
+        }
+
+        private void DumpButton_Click(object sender, EventArgs e)
+        {
+            MFAGenerator.BuildMFA();
+        }
+    }
+}
\ No newline at end of file
diff --git a/NetMFAPatcher/GUI/MainForm.cs b/NetMFAPatcher/GUI/MainForm.cs
index a5ca3d4..b3dab37 100644
--- a/NetMFAPatcher/GUI/MainForm.cs
+++ b/NetMFAPatcher/GUI/MainForm.cs
@@ -4,7 +4,6 @@ using System.Diagnostics;
 using System.Drawing;
 using System.Threading;
 using System.Windows.Forms;
-using DotNetCTFDumper.MMFParser.Decompiling;
 using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.MMFParser.EXE.Loaders;
 using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
@@ -291,7 +290,9 @@ namespace DotNetCTFDumper.GUI
 
         private void MFABtn_Click(object sender, EventArgs e)
         {
-            MFAGenerator.BuildMFA();
+            var mfaForm = new MFABuilderForm(ColorTheme);
+            mfaForm.Show();
+            
         }
 
         private void soundsButton_Click(object sender, EventArgs e)
diff --git a/NetMFAPatcher/MMFParser/EXE/ChunkList.cs b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
index 283210f..658f7fc 100644
--- a/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
+++ b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
@@ -232,6 +232,12 @@ namespace DotNetCTFDumper.MMFParser.EXE
                 case 13112:
                     loader = new ObjectInstances(chunk);
                     break;
+                case 13115:
+                    loader = new Transition(chunk);
+                    break;
+                case 13116:
+                    loader = new Transition(chunk);
+                    break;
                 case 13121:
                     loader = new Layers(chunk);
                     break;
@@ -295,6 +301,24 @@ namespace DotNetCTFDumper.MMFParser.EXE
             //Logger.Log($"ChunkLoader {typeof(T).Name} not found", true, ConsoleColor.Red);
             return null;  
         }
+        public T PopChunk<T>() where T : ChunkLoader
+        {
+            for(int i=0;i<Chunks.Count;i++)
+            {
+                var chunk = Chunks[i];
+                if (chunk.Loader != null)
+                {
+                    if (chunk.Loader.GetType().Name == typeof(T).Name)
+                    {
+                        return (T) chunk.Loader;
+                    }
+
+                    Chunks.Remove(chunk);
+                }
+            }
+            //Logger.Log($"ChunkLoader {typeof(T).Name} not found", true, ConsoleColor.Red);
+            return null;  
+        }
         
     }
 }
\ No newline at end of file
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
index 8cfe83a..49aea1f 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
@@ -47,6 +47,8 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
         public Layers Layers;
         public Events.Events Events;
         public FramePalette Palette;
+        public Transition FadeIn;
+        public Transition FadeOut;
 
 
         public override void Print(bool ext)
@@ -115,9 +117,10 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
             {
                 CountOfObjs = Objects.CountOfObjects;              
             }
-            
-            
-            
+
+            FadeIn = Chunks.PopChunk<Transition>();
+            FadeOut = Chunks.PopChunk<Transition>();
+
 
 
 
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Transition.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Transition.cs
new file mode 100644
index 0000000..59d41bb
--- /dev/null
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Transition.cs
@@ -0,0 +1,56 @@
+using System;
+using System.Drawing;
+using DotNetCTFDumper.Utils;
+
+namespace DotNetCTFDumper.MMFParser.EXE.Loaders
+{
+    public class Transition:ChunkLoader
+    {
+        public string Module;
+        public string Name;
+        public int Duration;
+        public int Flags;
+        public Color Color;
+        public string ModuleFile;
+        public byte[] ParameterData;
+
+        public Transition(ByteReader reader) : base(reader)
+        {
+        }
+
+        public Transition(ChunkList.Chunk chunk) : base(chunk)
+        {
+        }
+
+        public override void Read()
+        {
+            var currentPos = Reader.Tell();
+            Module = Reader.ReadAscii(4);
+            Console.WriteLine("TransitionModule: "+Module);
+            Name = Reader.ReadAscii(4);
+            Console.WriteLine("TransitionModule: "+Name);
+            Duration = Reader.ReadInt32();
+            Flags = Reader.ReadInt32();
+            Color = Reader.ReadColor();
+            var nameOffset = Reader.ReadInt32();
+            var parameterOffset = Reader.ReadInt32();
+            var parameterSize = Reader.ReadInt32();
+            Reader.Seek(currentPos+nameOffset);
+            ModuleFile = Reader.ReadAscii();
+            Reader.Seek(currentPos+parameterOffset);
+            ParameterData = Reader.ReadBytes(parameterSize);
+
+
+        }
+
+        public override void Print(bool ext)
+        {
+            throw new System.NotImplementedException();
+        }
+
+        public override string[] GetReadableData()
+        {
+            throw new System.NotImplementedException();
+        }
+    }
+}
\ No newline at end of file
diff --git a/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs b/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
deleted file mode 100644
index b412d87..0000000
--- a/NetMFAPatcher/MMFParser/MFA/Decompiling/PAME2MFA.cs
+++ /dev/null
@@ -1,106 +0,0 @@
-
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using DotNetCTFDumper.MMFParser.EXE;
-using DotNetCTFDumper.MMFParser.MFA.Loaders;
-using DotNetCTFDumper.Utils;
-using Frame = DotNetCTFDumper.MMFParser.EXE.Loaders.Frame;
-using Layer = DotNetCTFDumper.MMFParser.MFA.Loaders.Layer;
-
-namespace DotNetCTFDumper.MMFParser.Decompiling
-{
-    public static class Pame2Mfa
-    {
-        public static void Translate(ref MFA.MFA mfa, GameData game)
-        {
-            
-            //mfa.MfaBuild = 4;
-            //mfa.Product = (int) game.ProductVersion;
-            //mfa.BuildVersion = 283;
-            mfa.Name = game.Name;
-            mfa.LangId = 0;
-            mfa.Description = $"Decompiled with {Settings.DumperVersion}";
-            mfa.Path = game.EditorFilename;
-            
-            //mfa.Stamp = wtf;
-            /*if (game.Fonts != null) mfa.Fonts = game.Fonts;
-            
-            mfa.Sounds = game.Sounds;
-            foreach (var item in mfa.Sounds.Items)
-            {
-                item.IsCompressed = false;
-            }
-            mfa.Music = game.Music;
-            mfa.Images.Items = game.Images.Images;
-            foreach (var key in mfa.Images.Items.Keys)
-            {
-                mfa.Images.Items[key].Debug = true;
-            }
-            */
-            mfa.Author = game.Author!=null? game.Author:"Kostya";
-            mfa.Copyright = game.Copyright;
-            mfa.Company = "CTFAN Team";
-            mfa.Version = "";
-            //TODO:Binary Files
-            var displaySettings = mfa.DisplayFlags;
-            var graphicSettings = mfa.GraphicFlags;
-            var flags = game.Header.Flags;
-            var newFlags = game.Header.NewFlags;
-            //TODO:Flags, no setter
-            mfa.WindowX = game.Header.WindowWidth;
-            mfa.WindowY = game.Header.WindowHeight;
-            mfa.BorderColor = game.Header.BorderColor;
-            mfa.HelpFile = "";
-            mfa.VitalizePreview = new byte[]{0x0};
-            mfa.InitialScore = game.Header.InitialScore;
-            mfa.InitialLifes = game.Header.InitialLives;
-            mfa.FrameRate = game.Header.FrameRate;
-            mfa.BuildType = 0;
-            mfa.BuildPath = game.TargetFilename;
-            mfa.CommandLine = "";
-            mfa.Aboutbox = game.AboutText?.Length > 0
-                ? game?.AboutText
-                : "This game was decompiled with " + Settings.DumperVersion;
-            mfa.Frames.Clear();
-            foreach (Frame gameFrame in game.Frames)
-            {
-                MFA.Loaders.Frame mfaFrame = new MFA.Loaders.Frame(null);
-                mfaFrame.Handle = game.Frames.IndexOf(gameFrame);
-                mfaFrame.Name = gameFrame.Name;
-                mfaFrame.SizeX = gameFrame.Width;
-                mfaFrame.SizeY = gameFrame.Height;
-                mfaFrame.Background = gameFrame.Background;
-                //TODO: Transitions
-                //TODO: Flags
-                mfaFrame.MaxObjects = gameFrame.Events?.MaxObjects ?? 1337;
-                mfaFrame.Password = gameFrame?.Password ?? "";
-                mfaFrame.LastViewedX = 320;
-                mfaFrame.LastViewedY = 240;
-                mfaFrame.Palette = gameFrame.Palette.Items;
-                mfaFrame.StampHandle = 12;
-                mfaFrame.ActiveLayer = 0;
-                mfaFrame.Layers = new List<Layer>();
-                mfaFrame.Layers.Add(new Layer(null){Name = "New Layer"});
-                
-                /*foreach (EXE.Loaders.Layer gameLayer in gameFrame.Layers.Items)
-                {
-                    Layer mfaLayer = new Layer(null);
-                    mfaLayer.Name = gameLayer.Name;
-                    mfaLayer.Flags = (int) gameLayer.Flags;
-                    //TODO: Flags
-                    mfaLayer.XCoefficient = gameLayer.XCoeff;
-                    mfaLayer.YCoefficient = gameLayer.YCoeff;
-                    mfaFrame.Layers.Add(mfaLayer);
-                }*/
-                mfaFrame.Events = MFA.MFA.emptyEvents;
-                mfaFrame.Chunks = MFA.MFA.emptyFrameChunks;
-   
-                mfa.Frames.Add(mfaFrame);
-               
-            }
-
-
-        }
-    }
-}
\ No newline at end of file
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
index bb37b44..84a6ed3 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Events.cs
@@ -188,7 +188,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
                 Writer.WriteUInt16(Version);
                 Writer.WriteInt16((short) FrameType);
                
-                //Writer.WriteBytes(new byte[] {0x04, 0x04, 0x00, 0x00});
+                // Writer.WriteBytes(new byte[] {0x04, 0x04, 0x00, 0x00});
                 // if (Items != null)
                 //     {
                 //         Console.WriteLine("Writing EventData");
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
index 57fa654..323aba8 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Frame.cs
@@ -27,6 +27,8 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
         public List<Layer> Layers;
         public Events Events;
         public ChunkList Chunks;
+        public Transition FadeIn;
+        public Transition FadeOut;
 
         public Frame(ByteReader reader) : base(reader)
         {
@@ -63,8 +65,20 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
             }
             
             //TODO: Do transitions
-            Writer.WriteInt8(0);
-            Writer.WriteInt8(0);
+            if (FadeIn != null)
+            {
+                Writer.WriteInt8(1);
+                FadeIn.Write(Writer);
+            }
+            else Writer.Skip(1);
+            if (FadeOut != null)
+            {
+                Writer.WriteInt8(1);
+                FadeOut.Write(Writer);
+            }
+            else Writer.Skip(1);
+            //Writer.Skip(2);
+            
 
             Writer.WriteInt32(Items.Count);
             foreach (var item in Items)
@@ -132,10 +146,18 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
                 Layers.Add(layer);
 
             }
-            //fadein
 
-            //fadeout
-            Reader.Skip(2);
+            if (Reader.ReadByte() == 1)
+            {
+                FadeIn = new Transition(Reader);
+                FadeIn.Read();
+            }
+            
+            if (Reader.ReadByte() == 1)
+            {
+                FadeOut = new Transition(Reader);
+                FadeOut.Read();
+            }
             Items = new List<FrameItem>();
             var frameitemsCount = Reader.ReadInt32();
             for (int i = 0; i < frameitemsCount; i++)
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs
index 73f6acb..d32a58f 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs
@@ -9,13 +9,25 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
         public string Name="ERROR";
         public float XCoefficient;
         public float YCoefficient;
-        public int Flags;
+
+        public BitDict Flags = new BitDict(new string[]
+            {
+                "Visible",
+                "Locked",
+                "Obsolete",
+                "HideAtStart",
+                "NoBackground",
+                "WrapHorizontally",
+                "WrapVertically",
+                "PreviousEffect"
+            }
+        );
 
 
         public override void Write(ByteWriter Writer)
         {
             Writer.AutoWriteUnicode(Name);
-            Writer.WriteInt32(Flags);
+            Writer.WriteInt32((int) Flags.flag);
             Writer.WriteSingle(XCoefficient);
             Writer.WriteSingle(YCoefficient);
         }
@@ -28,9 +40,10 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
         public override void Read()
         {
             Name = Helper.AutoReadUnicode(Reader);
-            Flags = Reader.ReadInt32();
+            Flags.flag = (uint) Reader.ReadInt32();
             XCoefficient = Reader.ReadSingle();
             YCoefficient = Reader.ReadSingle();
+            Console.WriteLine("LayerAss: "+Flags["Visible"]);
 
 
 
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/Transition.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Transition.cs
new file mode 100644
index 0000000..086aa42
--- /dev/null
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Transition.cs
@@ -0,0 +1,62 @@
+using System;
+using System.Drawing;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.Utils;
+
+namespace DotNetCTFDumper.MMFParser.MFA.Loaders
+{
+    public class Transition:DataLoader
+    {
+        public string Module;
+        public string Name;
+        public string Id;
+        public string TransitionId;
+        public int Duration;
+        public int Flags;
+        public Color Color;
+        public byte[] ParameterData;
+
+        public Transition(ByteReader reader) : base(reader)
+        {
+        }
+
+        public Transition(EXE.ChunkList.Chunk chunk) : base(chunk)
+        {
+        }
+
+        public override void Read()
+        {
+            Module = Reader.AutoReadUnicode();
+            Console.WriteLine(Module);
+            Name = Reader.AutoReadUnicode();
+            Console.WriteLine(Name);
+            Id = Reader.ReadAscii(4);
+            Console.WriteLine(Id);
+            TransitionId = Reader.ReadAscii(4);
+            Console.WriteLine(TransitionId);
+            Duration = Reader.ReadInt32();
+            Flags = Reader.ReadInt32();
+            Color = Reader.ReadColor();
+            ParameterData = Reader.ReadBytes(Reader.ReadInt32());
+
+        }
+
+        public override void Write(ByteWriter Writer)
+        {
+            Writer.AutoWriteUnicode(Module);
+            Writer.AutoWriteUnicode(Name);
+            Writer.WriteAscii(Id);
+            Writer.WriteAscii(TransitionId);
+            Writer.WriteInt32(Duration);
+            Writer.WriteInt32(Flags);
+            Writer.WriteColor(Color);
+            Writer.WriteInt32(ParameterData.Length);
+            Writer.WriteBytes(ParameterData);
+        }
+
+        public override void Print()
+        {
+            throw new System.NotImplementedException();
+        }
+    }
+}
\ No newline at end of file
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Active.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Active.cs
index b71ea53..abd3157 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Active.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Active.cs
@@ -14,6 +14,12 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
         {
             base.Read();
         }
+
+        public override void Write(ByteWriter Writer)
+        {
+            base.Write(Writer);
+        }
+
         public Active(ByteReader reader) : base(reader) { }
     }
 }
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs
index 4bcca20..a6546e2 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/AnimationObject.cs
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Diagnostics;
 using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
@@ -13,7 +14,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
             base.Read();
             if(Reader.ReadByte()!=0)
             {
-                var animationCount = Reader.ReadInt32();
+                var animationCount = Reader.ReadUInt32();
                 for (int i = 0; i < animationCount; i++)
                 {
                     var item = new Animation(Reader);
@@ -42,7 +43,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
 
         public override void Read()
         {
-            Name = Reader.ReadAscii(Reader.ReadInt32());
+            Name = Reader.AutoReadUnicode();
             var directionCount = Reader.ReadInt32();
             var directions = new List<AnimationDirection>();
             for (int i = 0; i < directionCount; i++)
@@ -60,9 +61,25 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
     class AnimationDirection : DataLoader
     {
         public string Name = "Animation-UNKNOWN";
+        public int Index;
+        public int MinSpeed;
+        public int MaxSpeed;
+        public int Repeat;
+        public int BackTo;
+        public List<int> Frames= new List<int>();
+
         public override void Write(ByteWriter Writer)
         {
-            throw new NotImplementedException();
+            Writer.WriteInt32(Index);
+            Writer.WriteInt32(MinSpeed);
+            Writer.WriteInt32(MaxSpeed);
+            Writer.WriteInt32(Repeat);
+            Writer.WriteInt32(BackTo);
+            foreach (int frame in Frames)
+            {
+                Writer.WriteInt32(frame);
+            }
+            
         }
 
         public override void Print()
@@ -72,12 +89,16 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
 
         public override void Read()
         {
-            var index = Reader.ReadInt32();
-            var minSpeed = Reader.ReadInt32();
-            var maxSpeed= Reader.ReadInt32();
-            var repeat= Reader.ReadInt32();
-            var backTo= Reader.ReadInt32();
-            var frames = new List<int>();
+            Index = Reader.ReadInt32();
+            MinSpeed = Reader.ReadInt32();
+            MaxSpeed = Reader.ReadInt32();
+            Repeat = Reader.ReadInt32();
+            BackTo = Reader.ReadInt32();
+            var animCount = Reader.ReadInt32();
+            for (int i = 0; i < animCount; i++)
+            {
+                Frames.Add(Reader.ReadInt32()); 
+            }
 
         }
         public AnimationDirection(ByteReader reader) : base(reader) { }
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Behaviours.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Behaviours.cs
index b3f2950..71a7206 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Behaviours.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Behaviours.cs
@@ -10,7 +10,10 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
         List<Behaviour> _items = new List<Behaviour>();
         public override void Write(ByteWriter Writer)
         {
-            throw new NotImplementedException();
+            foreach (Behaviour behaviour in _items)
+            {
+                behaviour.Write(Writer);
+            }
         }
 
         public override void Print()
@@ -36,7 +39,8 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
         public ByteReader Data;
         public override void Write(ByteWriter Writer)
         {
-            throw new NotImplementedException();
+            Writer.AutoWriteUnicode(Name);
+            Writer.WriteBytes(Data.ReadBytes((int) Data.Size()));
         }
 
         public override void Print()
@@ -46,7 +50,8 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
 
         public override void Read()
         {
-            Name = Reader.ReadAscii(Reader.ReadInt32());
+            Name = Reader.AutoReadUnicode();
+
             Data = new ByteReader(Reader.ReadBytes(Reader.ReadInt32()));
             
         }
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Movements.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Movements.cs
index d5236b2..bd10dd6 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Movements.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/Movements.cs
@@ -1,5 +1,7 @@
 using System;
 using System.Collections.Generic;
+using System.IO;
+using System.Net.NetworkInformation;
 using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
@@ -10,7 +12,11 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
         public List<Movement> Items = new List<Movement>();
         public override void Write(ByteWriter Writer)
         {
-            throw new NotImplementedException();
+            Writer.WriteInt32(Items.Count);
+            foreach (Movement movement in Items)
+            {
+                movement.Write(Writer);
+            }
         }
 
         public override void Print()
@@ -20,7 +26,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
 
         public override void Read()
         {
-            var count = Reader.ReadInt32();
+            var count = Reader.ReadUInt32();
             for (int i = 0; i < count; i++)
             {
                 var item = new Movement(Reader);
@@ -37,10 +43,34 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
     public class Movement : DataLoader
     {
         public string Name="ERROR";
+        public string Extension;
+        public int Identifier;
+        public short Player;
+        public short Type;
+        public byte MovingAtStart;
+        public int DirectionAtStart;
+        public int DataSize;
 
         public override void Write(ByteWriter Writer)
         {
-            throw new NotImplementedException();
+            Writer.WriteUnicode(Name);
+            Writer.WriteUnicode(Extension);
+            Writer.WriteUInt32((uint) Identifier);
+            Writer.WriteInt32(DataSize);
+            var newWriter = new ByteWriter(new MemoryStream());
+            if (Extension == null)
+            {
+                
+                newWriter.WriteInt16(Player);
+                newWriter.WriteInt16(Type);
+                newWriter.WriteInt8(MovingAtStart);
+                newWriter.Skip(3);
+                newWriter.WriteInt32(DirectionAtStart);
+            }
+            //Loader.write(newWriter)
+            Writer.WriteWriter(newWriter);
+            
+            
         }
 
         public override void Print()
@@ -51,22 +81,25 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
         public override void Read()
         {
             Name = Helper.AutoReadUnicode(Reader);
-            var extension = Helper.AutoReadUnicode(Reader);
-            var identifier = Reader.ReadInt32();
-            var dataSize = Reader.ReadInt32();
-            if(extension.Length>0)
+            Extension = Helper.AutoReadUnicode(Reader);
+            Identifier = (int) Reader.ReadUInt32();
+            DataSize = (int) Reader.ReadUInt32();
+            if(Extension.Length>0)
             {
-                var newReader = new ByteReader(Reader.ReadBytes(dataSize));
+                var newReader = new ByteReader(Reader.ReadBytes(DataSize));
 
 
             }
             else
             {
-                var player = Reader.ReadInt16();
-                var type = Reader.ReadInt16();
-                var movingAtStart = Reader.ReadByte();
+                Player = Reader.ReadInt16();
+                Type = Reader.ReadInt16();
+                MovingAtStart = Reader.ReadByte();
                 Reader.Skip(3);
-                var directionAtStart = Reader.ReadInt32();
+                DirectionAtStart = Reader.ReadInt32();
+                var newReader = new ByteReader(Reader.ReadBytes(DataSize - 12));
+                //ONLY STATIC MOVEMENT IS SUPPORTED RN
+                //TODO:Movement Types
                 //implement types, but i am tired, fuck this shit
             }
 
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs
index 013fa8c..fb3eb26 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/mfachunks/ObjectLoader.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
 using System.Drawing;
 using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
@@ -18,6 +19,28 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
 
         public override void Write(ByteWriter Writer)
         {
+            Writer.WriteInt32(ObjectFlags);
+            Writer.WriteInt32(NewObjectFlags);
+            Writer.WriteColor(BackgroundColor);
+            for (int i = 0; i < 9; i++)
+            {
+                try
+                {
+                    var value = _qualifiers[i];
+                    Writer.WriteInt16(value);
+                }
+                catch
+                {
+                    Writer.WriteInt16(-1);
+                }
+            }
+            Values.Write(Writer);
+            Strings.Write(Writer);
+            Movements.Write(Writer);
+            Behaviours.Write(Writer);
+            Writer.WriteInt8(0);//FadeIn
+            Writer.WriteInt8(0);//FadeOut
+
             
         }
 
@@ -47,8 +70,8 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
             ObjectFlags = Reader.ReadInt32();
             NewObjectFlags = Reader.ReadInt32();
             BackgroundColor = Reader.ReadColor();
-            var end = Reader.Tell() + 2 * 9;
-            for (int i = 0; i < 9; i++)
+            var end = Reader.Tell() + 2 * (8+1);
+            for (int i = 0; i < 8+1; i++)
             {
                 var value = Reader.ReadInt16();
                 if(value==-1)
@@ -67,7 +90,7 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders.mfachunks
             Movements.Read();
             Behaviours = new Behaviours(Reader);
             Behaviours.Read();
-            Reader.Skip(56);
+            //Reader.Skip(50);//TODO: Help
             Print();
 
 
diff --git a/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs b/NetMFAPatcher/MMFParser/Translation/MFAGenerator.cs
similarity index 85%
rename from NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
rename to NetMFAPatcher/MMFParser/Translation/MFAGenerator.cs
index e6a3a16..79ac3f4 100644
--- a/NetMFAPatcher/MMFParser/MFA/Decompiling/MFAGenerator.cs
+++ b/NetMFAPatcher/MMFParser/Translation/MFAGenerator.cs
@@ -3,14 +3,14 @@ using System.IO;
 using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.Utils;
 
-namespace DotNetCTFDumper.MMFParser.Decompiling
+namespace DotNetCTFDumper.MMFParser.Translation
 {
     public static class MFAGenerator
     {
         //public static readonly string TemplatePath = @"C:\Users\MED45\Downloads\testNoFrames.mfa";
         public static readonly string TemplatePath = @"C:\Users\ivani\Desktop\CTFResearch\testNoFrames.mfa";
 
-        public static void BuildMFA()
+        public static MFA.MFA BuildMFA()
         {
             Settings.DoMFA = true;
             var mfaReader = new ByteReader(TemplatePath, FileMode.Open);
@@ -26,12 +26,14 @@ namespace DotNetCTFDumper.MMFParser.Decompiling
                     FileMode.Create); //New writer for new MFA
             template.Write(mfaWriter); //Writing new MFA
             mfaWriter.Dispose();
+            return template;
+            
             Logger.Log("MFA Done",true,ConsoleColor.Yellow);
         }
 
         public static void ReadTestMFA()
         {
-            var mfaReader = new ByteReader(TemplatePath, FileMode.Open);
+            var mfaReader = new ByteReader(@"C:\Users\ivani\Desktop\CTFResearch\ObjTEST.mfa", FileMode.Open);
             var template = new MFA.MFA(mfaReader);
             Settings.DoMFA = true;
             template.Read();
diff --git a/NetMFAPatcher/MMFParser/Translation/PAME2MFA.cs b/NetMFAPatcher/MMFParser/Translation/PAME2MFA.cs
new file mode 100644
index 0000000..5ddd49c
--- /dev/null
+++ b/NetMFAPatcher/MMFParser/Translation/PAME2MFA.cs
@@ -0,0 +1,138 @@
+using System.Collections.Generic;
+using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.Utils;
+using Frame = DotNetCTFDumper.MMFParser.EXE.Loaders.Frame;
+using Layer = DotNetCTFDumper.MMFParser.MFA.Loaders.Layer;
+
+namespace DotNetCTFDumper.MMFParser.Translation
+{
+    public static class Pame2Mfa
+    {
+        public static event Program.DumperEvent TranslatingFrame;
+        
+        public static void Translate(ref MFA.MFA mfa, GameData game)
+        {
+            
+            //mfa.MfaBuild = 4;
+            //mfa.Product = (int) game.ProductVersion;
+            //mfa.BuildVersion = 283;
+            mfa.Name = game.Name;
+            mfa.LangId = 0;
+            mfa.Description = $"Decompiled with {Settings.DumperVersion}";
+            mfa.Path = game.EditorFilename;
+            
+            //mfa.Stamp = wtf;
+            /*if (game.Fonts != null) mfa.Fonts = game.Fonts;
+            
+            mfa.Sounds = game.Sounds;
+            foreach (var item in mfa.Sounds.Items)
+            {
+                item.IsCompressed = false;
+            }
+            mfa.Music = game.Music;
+            mfa.Images.Items = game.Images.Images;
+            foreach (var key in mfa.Images.Items.Keys)
+            {
+                mfa.Images.Items[key].Debug = true;
+            }
+            */
+            mfa.Author = game.Author!=null? game.Author:"Kostya";
+            mfa.Copyright = game.Copyright;
+            mfa.Company = "CTFAN Team";
+            mfa.Version = "";
+            //TODO:Binary Files
+            var displaySettings = mfa.DisplayFlags;
+            var graphicSettings = mfa.GraphicFlags;
+            var flags = game.Header.Flags;
+            var newFlags = game.Header.NewFlags;
+            //TODO:Flags, no setter
+            mfa.WindowX = game.Header.WindowWidth;
+            mfa.WindowY = game.Header.WindowHeight;
+            mfa.BorderColor = game.Header.BorderColor;
+            mfa.HelpFile = "";
+            mfa.VitalizePreview = new byte[]{0x0};
+            mfa.InitialScore = game.Header.InitialScore;
+            mfa.InitialLifes = game.Header.InitialLives;
+            mfa.FrameRate = game.Header.FrameRate;
+            mfa.BuildType = 0;
+            mfa.BuildPath = game.TargetFilename;
+            mfa.CommandLine = "";
+            mfa.Aboutbox = game.AboutText?.Length > 0
+                ? game?.AboutText
+                : "This game was decompiled with " + Settings.DumperVersion;
+            mfa.Frames.Clear();
+            foreach (Frame gameFrame in game.Frames)
+            {
+                var mfaFrame = ConvertFrame(gameFrame);
+                mfaFrame.Handle = game.Frames.IndexOf(gameFrame);
+                mfa.Frames.Add(mfaFrame);
+               
+            }
+        }
+
+        public static MFA.Loaders.Transition ConvertTransition(EXE.Loaders.Transition gameTrans)
+        {
+            var mfaTrans = new MFA.Loaders.Transition((ByteReader) null);
+            mfaTrans.Module = gameTrans.ModuleFile;
+            mfaTrans.Name = "Transition";
+            mfaTrans.Id = gameTrans.Module;
+            mfaTrans.TransitionId = gameTrans.Name;
+            mfaTrans.Flags = gameTrans.Flags;
+            mfaTrans.Color = gameTrans.Color;
+            mfaTrans.ParameterData = gameTrans.ParameterData;
+            mfaTrans.Duration = gameTrans.Duration;
+            return mfaTrans;
+
+        }
+
+        public static MFA.Loaders.Frame ConvertFrame(EXE.Loaders.Frame gameFrame)
+        {
+            MFA.Loaders.Frame mfaFrame = new MFA.Loaders.Frame(null);
+            TranslatingFrame.Invoke(gameFrame.Name);
+            //mfaFrame.Handle = game.Frames.IndexOf(gameFrame);
+            mfaFrame.Name = gameFrame.Name;
+            mfaFrame.SizeX = gameFrame.Width;
+            mfaFrame.SizeY = gameFrame.Height;
+            mfaFrame.Background = gameFrame.Background;
+            if (gameFrame.FadeIn != null)mfaFrame.FadeIn = ConvertTransition(gameFrame.FadeIn);
+            if (gameFrame.FadeOut != null)mfaFrame.FadeOut = ConvertTransition(gameFrame.FadeOut);
+                
+                
+
+            //TODO: Flags
+            mfaFrame.MaxObjects = gameFrame.Events?.MaxObjects ?? 1337;
+            mfaFrame.Password = gameFrame?.Password ?? "";
+            mfaFrame.LastViewedX = 320;
+            mfaFrame.LastViewedY = 240;
+            mfaFrame.Palette = gameFrame.Palette.Items;
+            mfaFrame.StampHandle = 12;
+            mfaFrame.ActiveLayer = 0;
+            mfaFrame.Layers = new List<Layer>();
+            var layer = new Layer(null)
+            {
+                Name = "New Layer",
+                    
+                    
+            };
+            layer.Flags["Visible"] = true;
+            mfaFrame.Layers.Add(layer);
+                
+                
+            /*foreach (EXE.Loaders.Layer gameLayer in gameFrame.Layers.Items)
+            {
+                Layer mfaLayer = new Layer(null);
+                mfaLayer.Name = gameLayer.Name;
+                mfaLayer.Flags = (int) gameLayer.Flags;
+                //TODO: Flags
+                mfaLayer.XCoefficient = gameLayer.XCoeff;
+                mfaLayer.YCoefficient = gameLayer.YCoeff;
+                mfaFrame.Layers.Add(mfaLayer);
+            }*/
+            mfaFrame.Events = MFA.MFA.emptyEvents;
+            mfaFrame.Chunks = MFA.MFA.emptyFrameChunks;
+            return mfaFrame;
+        }
+    }
+
+    
+}
\ No newline at end of file
diff --git a/NetMFAPatcher/Program.cs b/NetMFAPatcher/Program.cs
index b1b7608..5da8cd6 100644
--- a/NetMFAPatcher/Program.cs
+++ b/NetMFAPatcher/Program.cs
@@ -3,19 +3,17 @@ using System.IO;
 using System.Runtime.InteropServices;
 using System.Windows.Forms;
 using DotNetCTFDumper.GUI;
-using DotNetCTFDumper.MMFParser.Decompiling;
 using DotNetCTFDumper.MMFParser.EXE;
+using DotNetCTFDumper.MMFParser.Translation;
 using DotNetCTFDumper.Utils;
 using Joveler.Compression.ZLib;
 
 namespace DotNetCTFDumper
 {
-    internal class Program
+    public class Program
     {
-        //public static string path = @"H:\fnaf-world.exe";//test
-        //public static string path = @"D:\SteamLibrary\steamapps\common\Five Nights at Freddy's Sister Location\SisterLocation.exe";
-        //public static string Path = ""; //TODO: Make Selectable
         public static MainForm MyForm;
+        public delegate void DumperEvent(object obj);
 
 
         [STAThread]
@@ -24,8 +22,8 @@ namespace DotNetCTFDumper
             var handle = Helper.GetConsoleWindow();
             Helper.ShowWindow(handle, Helper.SW_HIDE);
             InitNativeLibrary();
-            //MFAGenerator.ReadTestMFA();
-            //Environment.Exit(0);
+            // MFAGenerator.ReadTestMFA();
+            // Environment.Exit(0);
 
             var path = "";
             var verbose = false;
diff --git a/NetMFAPatcher/Settings.cs b/NetMFAPatcher/Settings.cs
index f95e3bf..7a0d685 100644
--- a/NetMFAPatcher/Settings.cs
+++ b/NetMFAPatcher/Settings.cs
@@ -14,9 +14,9 @@ namespace DotNetCTFDumper
         public static string GamePath;
         public static string GameName => Path.GetFileNameWithoutExtension(GamePath);
         public static string DumpPath => $"DUMP\\{GameName}";
-        public static string ImagePath=>$"{DumpPath}\\ImageBank";
-        public static string SoundPath=>$"{DumpPath}\\SoundBank";
-        public static string MusicPath=>$"{DumpPath}\\MusicBank";
+        public static string ImagePath=>$"{DumpPath}\\Images";
+        public static string SoundPath=>$"{DumpPath}\\Sounds";
+        public static string MusicPath=>$"{DumpPath}\\Musics";
 
         public static string ChunkPath=>$"{DumpPath}\\Chunks";
         public static string ExtensionPath=>$"{DumpPath}\\Extensions";
diff --git a/NetMFAPatcher/Utils/BitDict.cs b/NetMFAPatcher/Utils/BitDict.cs
index fc091ff..a765651 100644
--- a/NetMFAPatcher/Utils/BitDict.cs
+++ b/NetMFAPatcher/Utils/BitDict.cs
@@ -17,7 +17,7 @@ namespace DotNetCTFDumper.Utils
         public bool this[String key]
         {
             get => GetFlag(key);
-            // set => SetFlag(key,value);
+            set => SetFlag(key,value);
         }
 
         public bool GetFlag(String key)
@@ -30,6 +30,14 @@ namespace DotNetCTFDumper.Utils
 
             return false;
         }
+
+        public void SetFlag(String key, bool value)
+        {
+            if (value)
+            {
+                flag |= (uint) Math.Pow(2,Array.IndexOf(Keys,key));
+            }
+        }
        
 
         public static string ToDebugString<TKey, TValue>(IDictionary<TKey, TValue> dictionary)
@@ -47,5 +55,7 @@ namespace DotNetCTFDumper.Utils
 
             return ToDebugString(actualKeys);
         }
+
+        
     }
 }
\ No newline at end of file

From 8617712de74d7d5467de7cf988420352f1803227 Mon Sep 17 00:00:00 2001
From: 1987kostya <ivaninvideorec@gmail.com>
Date: Mon, 14 Dec 2020 12:59:37 +0600
Subject: [PATCH 4/8] More null-checks, support for 2.5+(no images and
 frameitems)

---
 NetMFAPatcher/GUI/MainForm.cs                 |  6 +--
 NetMFAPatcher/GUI/PackDataForm.Designer.cs    |  6 +--
 NetMFAPatcher/MMFParser/EXE/ChunkList.cs      |  3 +-
 NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs  | 25 +++++++--
 .../MMFParser/EXE/Loaders/Transition.cs       |  2 -
 NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs  |  4 +-
 NetMFAPatcher/MMFParser/MFA/MFA.cs            |  4 +-
 .../MMFParser/Translation/PAME2MFA.cs         | 53 +++++++++----------
 NetMFAPatcher/Utils/Helper.cs                 |  9 ++++
 9 files changed, 69 insertions(+), 43 deletions(-)

diff --git a/NetMFAPatcher/GUI/MainForm.cs b/NetMFAPatcher/GUI/MainForm.cs
index b3dab37..390838d 100644
--- a/NetMFAPatcher/GUI/MainForm.cs
+++ b/NetMFAPatcher/GUI/MainForm.cs
@@ -244,9 +244,9 @@ namespace DotNetCTFDumper.GUI
             toLog += $"Product Version: {Exe.Instance.GameData.ProductVersion}\n";
             toLog += $"Build: {Exe.Instance.GameData.Build}\n";
             toLog += $"Runtime Version: {Exe.Instance.GameData.RuntimeVersion}\n";
-            toLog += $"Number Of Images: {Exe.Instance.GameData.Images.NumberOfItems}\n";
-            toLog += $"Number Of Sounds: {(Exe.Instance.GameData.Sounds!= null ?  Exe.Instance.GameData.Sounds.NumOfItems: 0)}\n";
-            toLog += $"Unique FrameItems: {Exe.Instance.GameData.Frameitems.NumberOfItems}\n";
+            toLog += $"Number Of Images: {Exe.Instance.GameData.Images?.NumberOfItems}\n";
+            toLog += $"Number Of Sounds: {Exe.Instance.GameData.Sounds?.NumOfItems}\n";
+            toLog += $"Unique FrameItems: {Exe.Instance.GameData.Frameitems?.NumberOfItems}\n";
             toLog += $"Frame Count: {Exe.Instance.GameData.Frames.Count}\n";
             toLog += $"Chunks Count: {Exe.Instance.GameData.GameChunks.Chunks.Count}\n";
             if (Exe.Instance.GameData.GameChunks.GetChunk<ImageBank>() != null)
diff --git a/NetMFAPatcher/GUI/PackDataForm.Designer.cs b/NetMFAPatcher/GUI/PackDataForm.Designer.cs
index af1d778..95ab9b3 100644
--- a/NetMFAPatcher/GUI/PackDataForm.Designer.cs
+++ b/NetMFAPatcher/GUI/PackDataForm.Designer.cs
@@ -58,7 +58,7 @@ namespace DotNetCTFDumper.GUI
             // 
             this.dumpButton.BackColor = System.Drawing.Color.FromArgb(((int) (((byte) (64)))), ((int) (((byte) (64)))), ((int) (((byte) (64)))));
             this.dumpButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
-            this.dumpButton.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (204)));
+            this.dumpButton.Font = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte) (204)));
             this.dumpButton.ForeColor = System.Drawing.Color.FromArgb(((int) (((byte) (255)))), ((int) (((byte) (128)))), ((int) (((byte) (0)))));
             this.dumpButton.Location = new System.Drawing.Point(204, 105);
             this.dumpButton.Name = "dumpButton";
@@ -72,7 +72,7 @@ namespace DotNetCTFDumper.GUI
             // 
             this.dumpAllButton.BackColor = System.Drawing.Color.FromArgb(((int) (((byte) (64)))), ((int) (((byte) (64)))), ((int) (((byte) (64)))));
             this.dumpAllButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
-            this.dumpAllButton.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (204)));
+            this.dumpAllButton.Font = new System.Drawing.Font("Courier New", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte) (204)));
             this.dumpAllButton.ForeColor = System.Drawing.Color.FromArgb(((int) (((byte) (255)))), ((int) (((byte) (128)))), ((int) (((byte) (0)))));
             this.dumpAllButton.Location = new System.Drawing.Point(204, 148);
             this.dumpAllButton.Name = "dumpAllButton";
@@ -88,7 +88,7 @@ namespace DotNetCTFDumper.GUI
             this.infoLabel.ForeColor = System.Drawing.Color.FromArgb(((int) (((byte) (255)))), ((int) (((byte) (128)))), ((int) (((byte) (0)))));
             this.infoLabel.Location = new System.Drawing.Point(204, 14);
             this.infoLabel.Name = "infoLabel";
-            this.infoLabel.Size = new System.Drawing.Size(142, 91);
+            this.infoLabel.Size = new System.Drawing.Size(255, 91);
             this.infoLabel.TabIndex = 3;
             this.infoLabel.Text = "Name: PackFile1.mvx\r\nSize: 5 MB\r\n";
             // 
diff --git a/NetMFAPatcher/MMFParser/EXE/ChunkList.cs b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
index 658f7fc..dc7c0cf 100644
--- a/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
+++ b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
@@ -310,10 +310,11 @@ namespace DotNetCTFDumper.MMFParser.EXE
                 {
                     if (chunk.Loader.GetType().Name == typeof(T).Name)
                     {
+                        Chunks.Remove(chunk);
                         return (T) chunk.Loader;
                     }
 
-                    Chunks.Remove(chunk);
+                    
                 }
             }
             //Logger.Log($"ChunkLoader {typeof(T).Name} not found", true, ConsoleColor.Red);
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
index 49aea1f..83fb0eb 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Frame.cs
@@ -284,9 +284,10 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
         {
             get
             {
+                if (Exe.Instance.GameData.GameChunks.GetChunk<FrameItems>() == null) return null;
                 return Exe.Instance.GameData.GameChunks.GetChunk<FrameItems>().FromHandle(ObjectInfo);
             }
-        }
+        } 
 
         public override void Print(bool ext)
         {
@@ -345,11 +346,28 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
     public class Layer : ChunkLoader
     {
         public string Name;
-        public uint Flags;
+        public BitDict Flags = new BitDict(new string[]
+        {
+            "XCoefficient",
+            "YCoefficient",
+            "DoNotSaveBackground",
+            "",
+            "Visible",
+            "WrapHorizontally",
+            "WrapVertically",
+            "", "", "", "",
+            "", "", "", "", "",
+            "Redraw",
+            "ToHide",
+            "ToShow"
+        }
+
+        );
         public float XCoeff;
         public float YCoeff;
         public int NumberOfBackgrounds;
         public int BackgroudIndex;
+        
 
         public Layer(ByteReader reader) : base(reader)
         {
@@ -361,13 +379,12 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 
         public override void Read()
         {
-            Flags = Reader.ReadUInt32();
+            Flags.flag = Reader.ReadUInt32();
             XCoeff = Reader.ReadSingle();
             YCoeff = Reader.ReadSingle();
             NumberOfBackgrounds = Reader.ReadInt32();
             BackgroudIndex = Reader.ReadInt32();
             Name = Reader.ReadWideString();
-            Console.WriteLine(Name);
         }
 
         public override void Print(bool ext)
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Transition.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Transition.cs
index 59d41bb..a24654f 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Transition.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Transition.cs
@@ -26,9 +26,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
         {
             var currentPos = Reader.Tell();
             Module = Reader.ReadAscii(4);
-            Console.WriteLine("TransitionModule: "+Module);
             Name = Reader.ReadAscii(4);
-            Console.WriteLine("TransitionModule: "+Name);
             Duration = Reader.ReadInt32();
             Flags = Reader.ReadInt32();
             Color = Reader.ReadColor();
diff --git a/NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs b/NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs
index d32a58f..3c05d8f 100644
--- a/NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs
+++ b/NetMFAPatcher/MMFParser/MFA/Loaders/Layer.cs
@@ -39,11 +39,11 @@ namespace DotNetCTFDumper.MMFParser.MFA.Loaders
 
         public override void Read()
         {
-            Name = Helper.AutoReadUnicode(Reader);
+            Name = Reader.AutoReadUnicode();
             Flags.flag = (uint) Reader.ReadInt32();
             XCoefficient = Reader.ReadSingle();
             YCoefficient = Reader.ReadSingle();
-            Console.WriteLine("LayerAss: "+Flags["Visible"]);
+  
 
 
 
diff --git a/NetMFAPatcher/MMFParser/MFA/MFA.cs b/NetMFAPatcher/MMFParser/MFA/MFA.cs
index 87bfdd6..54c5e69 100644
--- a/NetMFAPatcher/MMFParser/MFA/MFA.cs
+++ b/NetMFAPatcher/MMFParser/MFA/MFA.cs
@@ -241,7 +241,7 @@ namespace DotNetCTFDumper.MMFParser.MFA
             }
             
             Writer.WriteInt32(Frames.Count); //frame
-            var startPos = Reader.Tell() + 4 * Frames.Count + 4;
+            var startPos = Writer.Tell() + 4 * Frames.Count + 4;
             
             ByteWriter newWriter = new ByteWriter(new MemoryStream());
             foreach (Frame frame in Frames)
@@ -259,6 +259,7 @@ namespace DotNetCTFDumper.MMFParser.MFA
 
         public override void Read()
         {
+            
             Logger.Log($"MFA HEADER:{Reader.ReadAscii(4)}\n");
             MfaBuild = Reader.ReadInt32();
             Product = Reader.ReadInt32();
@@ -402,6 +403,7 @@ namespace DotNetCTFDumper.MMFParser.MFA
             Reader.Seek(nextOffset);
             Chunks = new ChunkList(Reader);
             Chunks.Read();
+            Reader.Dispose();
             return;
         }
 
diff --git a/NetMFAPatcher/MMFParser/Translation/PAME2MFA.cs b/NetMFAPatcher/MMFParser/Translation/PAME2MFA.cs
index 5ddd49c..e9a181d 100644
--- a/NetMFAPatcher/MMFParser/Translation/PAME2MFA.cs
+++ b/NetMFAPatcher/MMFParser/Translation/PAME2MFA.cs
@@ -36,8 +36,8 @@ namespace DotNetCTFDumper.MMFParser.Translation
                 mfa.Images.Items[key].Debug = true;
             }
             */
-            mfa.Author = game.Author!=null? game.Author:"Kostya";
-            mfa.Copyright = game.Copyright;
+            mfa.Author = game.Author ?? "Kostya";
+            mfa.Copyright = game.Copyright ??"CTFAN Team";
             mfa.Company = "CTFAN Team";
             mfa.Version = "";
             //TODO:Binary Files
@@ -74,7 +74,7 @@ namespace DotNetCTFDumper.MMFParser.Translation
         {
             var mfaTrans = new MFA.Loaders.Transition((ByteReader) null);
             mfaTrans.Module = gameTrans.ModuleFile;
-            mfaTrans.Name = "Transition";
+            mfaTrans.Name = gameTrans.Name.FirstCharToUpper();
             mfaTrans.Id = gameTrans.Module;
             mfaTrans.TransitionId = gameTrans.Name;
             mfaTrans.Flags = gameTrans.Flags;
@@ -88,19 +88,16 @@ namespace DotNetCTFDumper.MMFParser.Translation
         public static MFA.Loaders.Frame ConvertFrame(EXE.Loaders.Frame gameFrame)
         {
             MFA.Loaders.Frame mfaFrame = new MFA.Loaders.Frame(null);
-            TranslatingFrame.Invoke(gameFrame.Name);
-            //mfaFrame.Handle = game.Frames.IndexOf(gameFrame);
+            TranslatingFrame?.Invoke(gameFrame.Name);
             mfaFrame.Name = gameFrame.Name;
             mfaFrame.SizeX = gameFrame.Width;
             mfaFrame.SizeY = gameFrame.Height;
             mfaFrame.Background = gameFrame.Background;
             if (gameFrame.FadeIn != null)mfaFrame.FadeIn = ConvertTransition(gameFrame.FadeIn);
             if (gameFrame.FadeOut != null)mfaFrame.FadeOut = ConvertTransition(gameFrame.FadeOut);
-                
-                
-
-            //TODO: Flags
-            mfaFrame.MaxObjects = gameFrame.Events?.MaxObjects ?? 1337;
+            
+            //TODO:Flags
+            mfaFrame.MaxObjects = gameFrame.Events?.MaxObjects ?? 10000;
             mfaFrame.Password = gameFrame?.Password ?? "";
             mfaFrame.LastViewedX = 320;
             mfaFrame.LastViewedY = 240;
@@ -108,26 +105,28 @@ namespace DotNetCTFDumper.MMFParser.Translation
             mfaFrame.StampHandle = 12;
             mfaFrame.ActiveLayer = 0;
             mfaFrame.Layers = new List<Layer>();
-            var layer = new Layer(null)
+
+            foreach (EXE.Loaders.Layer gameLayer in gameFrame.Layers.Items)
             {
-                Name = "New Layer",
-                    
-                    
-            };
-            layer.Flags["Visible"] = true;
-            mfaFrame.Layers.Add(layer);
-                
+                Layer mfaLayer = new Layer(null)
+                {
+                    Name = gameLayer.Name,
+                    Flags =
+                    {
+                        ["HideAtStart"] = gameLayer.Flags["ToHide"],
+                        ["Visible"] = true,
+                        ["NoBackground"] = gameLayer.Flags["DoNotSaveBackground"],
+                        ["WrapHorizontally"] = gameLayer.Flags["WrapHorizontally"],
+                        ["WrapVertically"] = gameLayer.Flags["WrapVertically"]
                 
-            /*foreach (EXE.Loaders.Layer gameLayer in gameFrame.Layers.Items)
-            {
-                Layer mfaLayer = new Layer(null);
-                mfaLayer.Name = gameLayer.Name;
-                mfaLayer.Flags = (int) gameLayer.Flags;
-                //TODO: Flags
-                mfaLayer.XCoefficient = gameLayer.XCoeff;
-                mfaLayer.YCoefficient = gameLayer.YCoeff;
+                    },
+                    XCoefficient = gameLayer.XCoeff,
+                    YCoefficient = gameLayer.YCoeff
+                };
                 mfaFrame.Layers.Add(mfaLayer);
-            }*/
+                break;
+                //TODO: Fix layers
+            }
             mfaFrame.Events = MFA.MFA.emptyEvents;
             mfaFrame.Chunks = MFA.MFA.emptyFrameChunks;
             return mfaFrame;
diff --git a/NetMFAPatcher/Utils/Helper.cs b/NetMFAPatcher/Utils/Helper.cs
index a572988..ee10c85 100644
--- a/NetMFAPatcher/Utils/Helper.cs
+++ b/NetMFAPatcher/Utils/Helper.cs
@@ -52,6 +52,15 @@ namespace DotNetCTFDumper.Utils
 
             return temp;
         }
+        public static string FirstCharToUpper(this string input)
+        {
+            switch (input)
+            {
+                case null: throw new ArgumentNullException(nameof(input));
+                case "": throw new ArgumentException($"{nameof(input)} cannot be empty", nameof(input));
+                default: return input.First().ToString().ToUpper() + input.Substring(1);
+            }
+        }
 
         public static string AutoReadUnicode(this ByteReader reader)
         {

From d91d1c2f28dffa487ab5e3e5b8b05221f262de24 Mon Sep 17 00:00:00 2001
From: 1987kostya <ivaninvideorec@gmail.com>
Date: Mon, 14 Dec 2020 22:31:45 +0600
Subject: [PATCH 5/8] New object name system in MainForm

---
 NetMFAPatcher/GUI/MainForm.Designer.cs        | 11 +--
 NetMFAPatcher/GUI/MainForm.cs                 | 26 ++++--
 NetMFAPatcher/MMFParser/EXE/ChunkList.cs      | 84 ++++++++++++++++++-
 NetMFAPatcher/MMFParser/EXE/EXE.cs            | 14 +++-
 .../MMFParser/EXE/Loaders/Banks/ImageBank.cs  |  4 +-
 .../MMFParser/EXE/Loaders/ObjectInfo.cs       |  7 +-
 NetMFAPatcher/Program.cs                      |  2 +-
 NetMFAPatcher/Settings.cs                     |  1 +
 NetMFAPatcher/Utils/BitDict.cs                |  4 +
 NetMFAPatcher/Utils/Decompressor.cs           |  1 +
 NetMFAPatcher/Utils/Helper.cs                 |  1 +
 11 files changed, 132 insertions(+), 23 deletions(-)

diff --git a/NetMFAPatcher/GUI/MainForm.Designer.cs b/NetMFAPatcher/GUI/MainForm.Designer.cs
index 9458590..6495dcf 100644
--- a/NetMFAPatcher/GUI/MainForm.Designer.cs
+++ b/NetMFAPatcher/GUI/MainForm.Designer.cs
@@ -100,7 +100,7 @@
             // 
             // listBox1
             // 
-            this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Right)));
+            this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
             this.listBox1.BackColor = System.Drawing.Color.Black;
             this.listBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
             this.listBox1.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (204)));
@@ -108,12 +108,13 @@
             this.listBox1.FormattingEnabled = true;
             this.listBox1.IntegralHeight = false;
             this.listBox1.ItemHeight = 14;
-            this.listBox1.Location = new System.Drawing.Point(459, 12);
+            this.listBox1.Location = new System.Drawing.Point(342, 9);
             this.listBox1.Margin = new System.Windows.Forms.Padding(0);
-            this.listBox1.MaximumSize = new System.Drawing.Size(180, 50000);
+            this.listBox1.MaximumSize = new System.Drawing.Size(300, 50000);
             this.listBox1.MinimumSize = new System.Drawing.Size(180, 234);
             this.listBox1.Name = "listBox1";
-            this.listBox1.Size = new System.Drawing.Size(180, 281);
+            this.listBox1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
+            this.listBox1.Size = new System.Drawing.Size(300, 277);
             this.listBox1.TabIndex = 5;
             // 
             // GameInfo
@@ -268,7 +269,7 @@
             this.loadingLabel.ForeColor = System.Drawing.Color.FromArgb(((int) (((byte) (255)))), ((int) (((byte) (128)))), ((int) (((byte) (0)))));
             this.loadingLabel.Location = new System.Drawing.Point(119, 12);
             this.loadingLabel.Name = "loadingLabel";
-            this.loadingLabel.Size = new System.Drawing.Size(335, 91);
+            this.loadingLabel.Size = new System.Drawing.Size(197, 91);
             this.loadingLabel.TabIndex = 16;
             this.loadingLabel.Text = "Loading...";
             // 
diff --git a/NetMFAPatcher/GUI/MainForm.cs b/NetMFAPatcher/GUI/MainForm.cs
index 390838d..6faeb3c 100644
--- a/NetMFAPatcher/GUI/MainForm.cs
+++ b/NetMFAPatcher/GUI/MainForm.cs
@@ -4,6 +4,7 @@ using System.Diagnostics;
 using System.Drawing;
 using System.Threading;
 using System.Windows.Forms;
+using DotNetCTFDumper.MMFParser;
 using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.MMFParser.EXE.Loaders;
 using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
@@ -196,16 +197,13 @@ namespace DotNetCTFDumper.GUI
             foreach (var item in gameData.GameChunks.Chunks)
             {
                 string ActualName = item.Name;
-                if (item.Loader is Frame frm) ActualName = ActualName + " "+frm.Name;
-                ChunkNode newNode = Helper.GetChunkNode(item,ActualName);
+                if (item.Loader is Frame frm) ActualName = ActualName + " " + frm.Name;
+                ChunkNode newNode = Helper.GetChunkNode(item, ActualName);
                 //if (item.Loader != null) newNode = new ChunkNode(ActualName, item.Loader);
                 //else newNode = new ChunkNode(ActualName, item);
-                
-                    
-                
-                
                 treeView1.Nodes.Add(newNode);
                 if (item.Loader is Frame frame)
+                {
                     foreach (var frmChunk in frame.Chunks.Chunks)
                     {
                         var frameNode = Helper.GetChunkNode(frmChunk);
@@ -223,8 +221,18 @@ namespace DotNetCTFDumper.GUI
                             }
                         }
                     }
-            }
+                }
+                else if (item.Loader is FrameItems items)
+                {
+                    foreach (var key in items.ItemDict.Keys)
+                    {
+                        var frameItem = items.ItemDict[key];
+                        var objNode = new ChunkNode($"{(Constants.ObjectType)frameItem.ObjectType} - {frameItem.Name}", frameItem);
+                        newNode.Nodes.Add(objNode);
 
+                    }
+                }
+            }
             
             MFABtn.Visible = true;
             FolderBTN.Visible = true;
@@ -239,8 +247,8 @@ namespace DotNetCTFDumper.GUI
             loadingLabel.Visible = false;
             var toLog = "";
             toLog += $"Title:{Exe.Instance.GameData.Name}\n";
-            toLog += $"Copyright:{Exe.Instance.GameData.Copyright}\n";
-            toLog += $"Editor Filename: {Exe.Instance.GameData.EditorFilename}\n";
+            toLog += $"Copyright:{Exe.Instance.GameData.Copyright}\n"; 
+            //toLog += $"Editor Filename: {Exe.Instance.GameData.EditorFilename}\n";
             toLog += $"Product Version: {Exe.Instance.GameData.ProductVersion}\n";
             toLog += $"Build: {Exe.Instance.GameData.Build}\n";
             toLog += $"Runtime Version: {Exe.Instance.GameData.RuntimeVersion}\n";
diff --git a/NetMFAPatcher/MMFParser/EXE/ChunkList.cs b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
index dc7c0cf..8460ab9 100644
--- a/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
+++ b/NetMFAPatcher/MMFParser/EXE/ChunkList.cs
@@ -62,7 +62,7 @@ namespace DotNetCTFDumper.MMFParser.EXE
             {
                 
                 Id = exeReader.ReadInt16();
-                Name = this.ActualName();
+                Name = _chunkList.GetNameByID(Id);
 
                 Flag = (ChunkFlags) exeReader.ReadInt16();
                 Size = exeReader.ReadInt32();
@@ -317,9 +317,89 @@ namespace DotNetCTFDumper.MMFParser.EXE
                     
                 }
             }
-            //Logger.Log($"ChunkLoader {typeof(T).Name} not found", true, ConsoleColor.Red);
             return null;  
         }
+
+        public string GetNameByID(int id)
+        {
+            switch (id)
+            {
+                case 4386: return "PREVIEW";
+                case 8738: return "Mini Header";
+                case 8739: return "Header";
+                case 8740: return "Title";
+                case 8741: return "Author";
+                case 8742: return "Menu";
+                case 8743: return "Extra Path";
+                case 8744: return "Extensions";
+                case 8745: return "Object Bank";
+                case 8746: return "Global Events";
+                case 8747: return "Frame Handles";
+                case 8748: return "Extra Data";
+                case 8749: return "Additional Extensions";
+                case 8750: return "Project Path";
+                case 8751: return "Output Path";
+                case 8752: return "App Doc";
+                case 8753: return "Other Extensions";
+                case 8754: return "Global Values";
+                case 8755: return "Global Strings";
+                case 8756: return "Extensions List";
+                case 8757: return "Icon";
+                case 8758: return "Demo Version";
+                case 8759: return "Security Number";
+                case 8760: return "Binary Files";
+                case 8761: return "Menu Images";
+                case 8762: return "About";
+                case 8763: return "Copyright";
+                case 8764: return "Global Value Names";
+                case 8765: return "Global String Names";
+                case 8766: return "Movement Extensions";
+                case 8767: return "Object Bank 2";
+                case 8768: return "EXE Only";
+                case 8770: return "Protection";
+                case 8771: return "Shaders";
+                case 8773: return "Extended Header";
+                case 13107:return "Frame";
+                case 13108:return "Frame Header";
+                case 13109:return "Frame Name";
+                case 13110:return "Frame Password";
+                case 13111:return "Frame Palette";
+                case 13112:return "Frame Objects";
+                case 13113:return "Frame Fade In Frame";
+                case 13114:return "Frame Fade Out Frame";
+                case 13115:return "Frame Fade In";
+                case 13116:return "Frame Fade Out";
+                case 13117:return "Frame Events";
+                case 13118:return "Frame Play Header";
+                case 13119:return "Additional Frame Item";
+                case 13120:return "Additional Object Instance";
+                case 13121:return "Frame Layers";
+                case 13122:return "Frame Virtual Rect";
+                case 13123:return "Demo File Path";
+                case 13124:return "Random Seed";
+                case 13125:return "Frame Layer Effects";
+                case 13126:return "Bluray Options";
+                case 13127:return "MVTimer Base";
+                case 13128:return "Mosaic Image Table";
+                case 13129:return "Frame Effects";
+                case 13130:return "Frame Iphone Options";
+                case 17476:return "Object Header";
+                case 17477:return "Object Name";
+                case 17478:return "Object Common";
+                case 17479:return "Object Unknown";
+                case 17480:return "Object Effects";
+                case 21845:return "Image Offsets";
+                case 21846:return "Font Offsets";
+                case 21847:return "Sound Offsets";
+                case 21848:return "Music Offsets";
+                case 26214:return "Image Bank";
+                case 26215:return "Font Bank";
+                case 26216:return "Sound Bank";
+                case 26217:return "Music Bank";
+                case 32639:return "Last";
+                default: return $"Unknown-{id}";
+            }
+        }
         
     }
 }
\ No newline at end of file
diff --git a/NetMFAPatcher/MMFParser/EXE/EXE.cs b/NetMFAPatcher/MMFParser/EXE/EXE.cs
index 4cb0db4..18c257b 100644
--- a/NetMFAPatcher/MMFParser/EXE/EXE.cs
+++ b/NetMFAPatcher/MMFParser/EXE/EXE.cs
@@ -1,4 +1,5 @@
 using System;
+using System.Data.OleDb;
 using System.IO;
 using DotNetCTFDumper.Utils;
 
@@ -66,18 +67,25 @@ namespace DotNetCTFDumper.MMFParser.EXE
             exeReader.Seek((int)possition);
             UInt16 firstShort = exeReader.PeekUInt16();
             Logger.Log("First Short: " + firstShort.ToString("X2"), true, ConsoleColor.Yellow);
-
-            if (firstShort == 0x7777)
+            if (firstShort == 0x7777) Settings.Old = false;
+            else Settings.Old = true;
+            if (!Settings.Old)
             {
-                Logger.Log("Found PackData header!\nReading PackData header.", true, ConsoleColor.Blue);
                 PackData = new PackData();
                 PackData.Read(exeReader);
                 GameData = new GameData();
                 GameData.Read(exeReader);
                 Console.ForegroundColor = ConsoleColor.DarkGreen;
+                Logger.Log("Found PackData header!\nReading PackData header.", true, ConsoleColor.Blue);
+                
             }
             else
             {
+                var oldData = new ChunkList();
+                oldData.Read(exeReader);
+                GameData = new GameData();
+                GameData.Read(exeReader);
+                Console.ForegroundColor = ConsoleColor.DarkGreen;
                 Logger.Log("Failed to find PackData header!\n", true, ConsoleColor.Red);
             }
             
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs
index 8fb4bdf..4a7b673 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs
@@ -149,9 +149,9 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
             _bitmap = null;
             Reader.Seek(Position);
             ByteReader imageReader;
-
+             
+            // imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a);
             imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a);
-
             long start = imageReader.Tell();
 
             _checksum = imageReader.ReadInt32();
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
index 2952510..fbc02a5 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
@@ -37,7 +37,12 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 
         public override string[] GetReadableData()
         {
-            throw new NotImplementedException();
+            return new string[]
+            {
+                $"Name: {this.Name}",
+                $"Type: {(Constants.ObjectType)this.ObjectType}"
+                
+            };
         }
 
         public override void Read()
diff --git a/NetMFAPatcher/Program.cs b/NetMFAPatcher/Program.cs
index 5da8cd6..3793a62 100644
--- a/NetMFAPatcher/Program.cs
+++ b/NetMFAPatcher/Program.cs
@@ -27,7 +27,7 @@ namespace DotNetCTFDumper
 
             var path = "";
             var verbose = false;
-            var dumpImages = false;
+            var dumpImages = true;
             var dumpSounds = true;
             
             if (args.Length == 0)
diff --git a/NetMFAPatcher/Settings.cs b/NetMFAPatcher/Settings.cs
index 7a0d685..d8dc35b 100644
--- a/NetMFAPatcher/Settings.cs
+++ b/NetMFAPatcher/Settings.cs
@@ -10,6 +10,7 @@ namespace DotNetCTFDumper
         public static bool DumpMusic;
         public static bool SaveChunks;
         public static bool Verbose;
+        public static bool Old;
         
         public static string GamePath;
         public static string GameName => Path.GetFileNameWithoutExtension(GamePath);
diff --git a/NetMFAPatcher/Utils/BitDict.cs b/NetMFAPatcher/Utils/BitDict.cs
index a765651..45a56b1 100644
--- a/NetMFAPatcher/Utils/BitDict.cs
+++ b/NetMFAPatcher/Utils/BitDict.cs
@@ -37,6 +37,10 @@ namespace DotNetCTFDumper.Utils
             {
                 flag |= (uint) Math.Pow(2,Array.IndexOf(Keys,key));
             }
+            else
+            {
+                flag &= (uint) Math.Pow(~2,Array.IndexOf(Keys,key));
+            }
         }
        
 
diff --git a/NetMFAPatcher/Utils/Decompressor.cs b/NetMFAPatcher/Utils/Decompressor.cs
index 2387c20..d36416d 100644
--- a/NetMFAPatcher/Utils/Decompressor.cs
+++ b/NetMFAPatcher/Utils/Decompressor.cs
@@ -40,6 +40,7 @@ namespace DotNetCTFDumper.Utils
             Array.Resize<byte>(ref decompressedData, decompSize);
             return decompressedData;
         }
+        
 
         public static byte[] compress_block(byte[] data)
         {
diff --git a/NetMFAPatcher/Utils/Helper.cs b/NetMFAPatcher/Utils/Helper.cs
index ee10c85..594ed8e 100644
--- a/NetMFAPatcher/Utils/Helper.cs
+++ b/NetMFAPatcher/Utils/Helper.cs
@@ -217,6 +217,7 @@ namespace DotNetCTFDumper.Utils
 
         public static string ActualName(this ChunkList.Chunk chunk)
         {
+            return "Placeholder";
             var constName = ((Constants.ChunkNames) chunk.Id).ToString();
             int tempId = 0;
             int.TryParse(constName, out tempId);

From aa549a64e24fe18b91a65670d3bb1638d0ebc36d Mon Sep 17 00:00:00 2001
From: 1987kostya <ivaninvideorec@gmail.com>
Date: Tue, 15 Dec 2020 11:04:11 +0600
Subject: [PATCH 6/8] Sorted dumping fixes

---
 NetMFAPatcher/GUI/MainForm.Designer.cs        | 14 ++++++-
 NetMFAPatcher/GUI/MainForm.cs                 | 24 +++++++++++-
 .../MMFParser/EXE/Loaders/ObjectInfo.cs       |  2 +-
 NetMFAPatcher/Utils/ImageDumper.cs            | 38 +++++++++++++++++--
 4 files changed, 70 insertions(+), 8 deletions(-)

diff --git a/NetMFAPatcher/GUI/MainForm.Designer.cs b/NetMFAPatcher/GUI/MainForm.Designer.cs
index 6495dcf..bb13be1 100644
--- a/NetMFAPatcher/GUI/MainForm.Designer.cs
+++ b/NetMFAPatcher/GUI/MainForm.Designer.cs
@@ -56,6 +56,7 @@
             this.musicsButton = new System.Windows.Forms.Button();
             this.musicBar = new System.Windows.Forms.ProgressBar();
             this.musicLabel = new System.Windows.Forms.Label();
+            this.SortedProgressBar = new System.Windows.Forms.ProgressBar();
             this.ChunkCombo.SuspendLayout();
             this.SuspendLayout();
             // 
@@ -113,7 +114,6 @@
             this.listBox1.MaximumSize = new System.Drawing.Size(300, 50000);
             this.listBox1.MinimumSize = new System.Drawing.Size(180, 234);
             this.listBox1.Name = "listBox1";
-            this.listBox1.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
             this.listBox1.Size = new System.Drawing.Size(300, 277);
             this.listBox1.TabIndex = 5;
             // 
@@ -404,12 +404,22 @@
             this.musicLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
             this.musicLabel.Visible = false;
             // 
+            // SortedProgressBar
+            // 
+            this.SortedProgressBar.Location = new System.Drawing.Point(190, 310);
+            this.SortedProgressBar.Name = "SortedProgressBar";
+            this.SortedProgressBar.Size = new System.Drawing.Size(209, 41);
+            this.SortedProgressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
+            this.SortedProgressBar.TabIndex = 24;
+            this.SortedProgressBar.Visible = false;
+            // 
             // MainForm
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.BackColor = System.Drawing.Color.Black;
             this.ClientSize = new System.Drawing.Size(943, 507);
+            this.Controls.Add(this.SortedProgressBar);
             this.Controls.Add(this.musicLabel);
             this.Controls.Add(this.musicBar);
             this.Controls.Add(this.musicsButton);
@@ -441,6 +451,8 @@
             this.PerformLayout();
         }
 
+        private System.Windows.Forms.ProgressBar SortedProgressBar;
+
         private System.Windows.Forms.Button button1;
         private System.Windows.Forms.ContextMenuStrip ChunkCombo;
         private System.Windows.Forms.Button cryptKeyBtn;
diff --git a/NetMFAPatcher/GUI/MainForm.cs b/NetMFAPatcher/GUI/MainForm.cs
index 6faeb3c..cb4f2d2 100644
--- a/NetMFAPatcher/GUI/MainForm.cs
+++ b/NetMFAPatcher/GUI/MainForm.cs
@@ -1,4 +1,5 @@
 using System;
+using System.CodeDom;
 using System.ComponentModel;
 using System.Diagnostics;
 using System.Drawing;
@@ -25,6 +26,11 @@ namespace DotNetCTFDumper.GUI
         public PackDataForm PackForm;
         
         public delegate void SaveHandler(int index, int all);
+
+        public delegate void IncrementSortedProgressBar(int all);
+        
+
+        
         public MainForm()
         {
             //Buttons
@@ -89,11 +95,11 @@ namespace DotNetCTFDumper.GUI
         private void StartReading()
         {
             var path = openFileDialog1.FileName;
+            loadingLabel.Visible = true;
             Program.ReadFile(path, Settings.Verbose, Settings.DumpImages, Settings.DumpSounds);
             imageBar.Value = 0;
-            soundBar.Value = 0;
+            soundBar.Value = 0; 
             GameInfo.Text = "";
-            loadingLabel.Visible = true;
             imageLabel.Text = "Using nonGUI mode";
             soundLabel.Text = "Using nonGUI mode";
 
@@ -196,6 +202,7 @@ namespace DotNetCTFDumper.GUI
             treeView1.Nodes.Clear();
             foreach (var item in gameData.GameChunks.Chunks)
             {
+  
                 string ActualName = item.Name;
                 if (item.Loader is Frame frm) ActualName = ActualName + " " + frm.Name;
                 ChunkNode newNode = Helper.GetChunkNode(item, ActualName);
@@ -263,6 +270,8 @@ namespace DotNetCTFDumper.GUI
                 Exe.Instance.GameData.GameChunks.GetChunk<SoundBank>().OnSoundSaved += UpdateSoundBar;
             if (Exe.Instance.GameData.GameChunks.GetChunk<MusicBank>() != null)
                 Exe.Instance.GameData.GameChunks.GetChunk<MusicBank>().OnMusicSaved += UpdateMusicBar;
+            ImageDumper.SortedImageSaved += IncrementSortedBar;
+            
             
             GameInfo.Text = toLog;
         }
@@ -290,6 +299,17 @@ namespace DotNetCTFDumper.GUI
             musicLabel.Text = $"{index}/{all}";
         }
 
+        public void IncrementSortedBar(int all)
+        {
+            SortedProgressBar.Visible = true;
+            SortedProgressBar.Maximum = all;
+            SortedProgressBar.Value += 1;
+            if (SortedProgressBar.Value >= SortedProgressBar.Maximum)
+            {
+                SortedProgressBar.Visible = false;
+            }
+        }
+
 
         private void FolderBTN_Click(object sender, EventArgs e)
         {
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
index fbc02a5..cadec03 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
@@ -53,7 +53,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 
             foreach (var infoChunk in infoChunks.Chunks)
             {
-                
+
                 infoChunk.Verbose = false;
                 var loader = infoChunk.Loader;
                 if (loader != null)
diff --git a/NetMFAPatcher/Utils/ImageDumper.cs b/NetMFAPatcher/Utils/ImageDumper.cs
index 7c4276b..7d64688 100644
--- a/NetMFAPatcher/Utils/ImageDumper.cs
+++ b/NetMFAPatcher/Utils/ImageDumper.cs
@@ -1,7 +1,9 @@
 using System;
 using System.Collections.Generic;
+using System.ComponentModel;
 using System.IO;
 using System.Linq;
+using DotNetCTFDumper.GUI;
 using DotNetCTFDumper.MMFParser.EXE;
 using DotNetCTFDumper.MMFParser.EXE.Loaders;
 using DotNetCTFDumper.MMFParser.EXE.Loaders.Banks;
@@ -13,14 +15,26 @@ namespace DotNetCTFDumper.Utils
     {
         public static void DumpImages()
         {
-            Dump();
+            using (var worker = new BackgroundWorker())
+            {
+                
+                worker.DoWork += (senderA, eA) => { Dump(); };
+                worker.RunWorkerCompleted += (senderA, eA) =>
+                {
+                    
+                };
+                worker.RunWorkerAsync();
+            }
             
         }
 
+        public static MainForm.IncrementSortedProgressBar SortedImageSaved;
+
         public static void Dump()
         {
-            var rootFolder = $"{Settings.DumpPath}\\ImageBank\\Sorted";
+            var rootFolder = $"{Settings.ImagePath}\\Sorted";
             var Bank = Exe.Instance.GameData.GameChunks.GetChunk<ImageBank>();
+            var NumberOfImgFrames = CalculateFrameCount();
             foreach (var frame in Exe.Instance.GameData.Frames)
             {
                 if (frame.Objects != null)
@@ -31,7 +45,7 @@ namespace DotNetCTFDumper.Utils
                     {
                         
                         var currentObjPath = currentFramePath + "\\" + Helper.CleanInput(item.Name);
-                        Directory.CreateDirectory(currentObjPath);
+                        //Directory.CreateDirectory(currentObjPath);
                         var frames = item.FrameItem.GetFrames();
                         foreach (var key in frames.Keys)
                         {
@@ -43,9 +57,12 @@ namespace DotNetCTFDumper.Utils
                                  var path =
                                      $"{Settings.ImagePath}\\Sorted\\{frame.Name}\\{Helper.CleanInput(item.Name)}\\{name}";
                                  Directory.CreateDirectory(Path.GetDirectoryName(path));
-                                 Logger.Log("Saving Image: "+path);
+                                 //Logger.Log("Saving Image: "+path);
                                  actualFrame.Save(path);
                                  
+                                 SortedImageSaved.Invoke(NumberOfImgFrames);
+                                 
+                                 
                              }
                              catch (Exception e)
                              {
@@ -60,6 +77,19 @@ namespace DotNetCTFDumper.Utils
             }
             Logger.Log("Sorted Images Done",true,ConsoleColor.Yellow);
         }
+
+        public static int CalculateFrameCount()
+        {
+            int count = 0;
+            foreach (var frame in Exe.Instance.GameData.Frames)
+            {
+                foreach (ObjectInstance objectInstance in frame.Objects.Items)
+                {
+                    count += objectInstance.FrameItem.GetFrames().Count;
+                }
+            }
+            return count;
+        }
         
 
 

From c949a638438b09ff3c31d7f72711646d32819bb9 Mon Sep 17 00:00:00 2001
From: 1987kostya <ivaninvideorec@gmail.com>
Date: Tue, 15 Dec 2020 11:57:11 +0600
Subject: [PATCH 7/8] Fixes in ImageBank and FrameViewer

---
 NetMFAPatcher/GUI/FrameViewer.cs              |  2 +-
 NetMFAPatcher/GUI/HexViewForm.cs              |  6 +-
 .../MMFParser/EXE/Loaders/Banks/ImageBank.cs  | 57 ++++++++++++++++---
 .../MMFParser/EXE/Loaders/ObjectInfo.cs       |  9 ++-
 NetMFAPatcher/Utils/Backend.cs                |  6 +-
 5 files changed, 66 insertions(+), 14 deletions(-)

diff --git a/NetMFAPatcher/GUI/FrameViewer.cs b/NetMFAPatcher/GUI/FrameViewer.cs
index 087bb75..1ecef8e 100644
--- a/NetMFAPatcher/GUI/FrameViewer.cs
+++ b/NetMFAPatcher/GUI/FrameViewer.cs
@@ -25,7 +25,7 @@ namespace DotNetCTFDumper.GUI
             InitializeComponent();
             this.Width = frame.Width;
             this.Height = frame.Height;
-            this.BackColor = frame.Background;
+            this.BackColor = Color.Black;
             this.Text = "Frame Viewer: "+frame.Name;
             images = imgs;
             contextMenuStrip1.ItemClicked+= new ToolStripItemClickedEventHandler(MenuItemSelected);
diff --git a/NetMFAPatcher/GUI/HexViewForm.cs b/NetMFAPatcher/GUI/HexViewForm.cs
index eae2daf..3609dc3 100644
--- a/NetMFAPatcher/GUI/HexViewForm.cs
+++ b/NetMFAPatcher/GUI/HexViewForm.cs
@@ -11,9 +11,7 @@ namespace DotNetCTFDumper.GUI
     {
         public byte[] parsedData;
         public byte[] rawData;
-        private ByteViewer _viewer;
-
-
+        
         public HexViewForm(byte[] parsedData, byte[] rawData,Color color)
         {
             InitializeComponent();
@@ -74,7 +72,7 @@ namespace DotNetCTFDumper.GUI
 
         private void hexBox1_Click(object sender, EventArgs e)
         {
-            Console.WriteLine("Semen");
+            
         }
     }
 
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs
index 4a7b673..074d725 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Banks/ImageBank.cs
@@ -12,9 +12,10 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
 {
     public class ImageBank : ChunkLoader
     {
-        public bool SaveImages = true;
+        public bool SaveImages = false;
         public Dictionary<int, ImageItem> Images = new Dictionary<int, ImageItem>();
         public uint NumberOfItems;
+        public bool PreloadOnly=true;
 
         public ImageBank(ByteReader reader) : base(reader)
         {
@@ -45,6 +46,16 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
             Settings.DumpImages = cache;
         }
 
+        public void Preload()
+        {
+            
+        }
+
+        public void LoadByHandle(int handle)
+        {
+            Images[handle].Load();
+        }
+
         
         
         public event MainForm.SaveHandler OnImageSaved;
@@ -55,25 +66,26 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
         public override void Read()
         {
             if (!Settings.DoMFA) Reader.Seek(0); //Reset the reader to avoid bugs when dumping more than once
-            Images = new Dictionary<int, ImageItem>();
+            var tempImages = new Dictionary<int, ImageItem>();
 
 
             NumberOfItems = Reader.ReadUInt32();
 
             Console.WriteLine($"Found {NumberOfItems} images");
+            
 
-            if (!Settings.DumpImages) return;
+            //if (!Settings.DumpImages) return;
             for (int i = 0; i < NumberOfItems; i++)
             {
                 if (MainForm.BreakImages)
                 {
-                    MainForm.BreakImages = false;
+                    
                     break;
                 }
 
                 var item = new ImageItem(Reader);
-                item.Read();
-                Images.Add(item.Handle, item);
+                item.Read(!PreloadOnly);
+                tempImages.Add(item.Handle, item);
 
                 if (SaveImages) item.Save($"{Settings.ImagePath}\\" + item.Handle.ToString() + ".png");
                 OnImageSaved?.Invoke(i,(int) NumberOfItems);
@@ -85,6 +97,10 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
 
                 //images[item.handle] = item;
             }
+
+            if (!MainForm.BreakImages) Images = tempImages;
+            MainForm.BreakImages = false;
+            Console.WriteLine("Len:"+Images.Keys.Count);
         }
     }
 
@@ -128,11 +144,19 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
         public int Debug2 = 1;
         private Bitmap _bitmap;
 
+        public void Read(bool load)
+        {
+            Handle = Reader.ReadInt32() - 1;
+            Position = (int) Reader.Tell();
+            if (load) Load();
+            else Preload();
+
+        }
         public override void Read()
         {
             Handle = Reader.ReadInt32() - 1;
             Position = (int) Reader.Tell();
-            Load();
+            Preload();
         }
 
         public override void Print(bool ext)
@@ -144,6 +168,24 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
             throw new NotImplementedException();
         }
 
+        public void Preload()
+        {
+            _bitmap = null;
+            Reader.Seek(Position);
+            ByteReader imageReader;
+             
+            // imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a);
+            imageReader = Debug ? Reader : Decompressor.DecompressAsReader(Reader, out var a);
+            long start = imageReader.Tell();
+
+            _checksum = imageReader.ReadInt32();
+            _references = imageReader.ReadInt32();
+            Size = (int) imageReader.ReadUInt32();
+            imageReader.Seek(start+Size);
+            
+        }
+        
+
         public void Load()
         {
             _bitmap = null;
@@ -255,6 +297,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks
         {
             get
             {
+                if (_colorArray==null) Load();
                 if (_bitmap == null)
                 {
                     _bitmap = new Bitmap(_width, _height, PixelFormat.Format32bppArgb);
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
index cadec03..b82d39c 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
@@ -105,7 +105,14 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
                     anims.AnimationDict.TryGetValue(0,
                         out Animation anim);
                     anim.DirectionDict.TryGetValue(0, out AnimationDirection direction);
-                    var firstFrameHandle = direction.Frames[0];
+                    
+                        var firstFrameHandle = direction.Frames[0];
+
+                        if (images.Images[firstFrameHandle].Bitmap == null)
+                        {
+                            Console.WriteLine("Preloading "+firstFrameHandle);
+                            images.LoadByHandle(firstFrameHandle);
+                        }
 
                     bmp = images.Images[firstFrameHandle];
                 }
diff --git a/NetMFAPatcher/Utils/Backend.cs b/NetMFAPatcher/Utils/Backend.cs
index 8eb5987..78d2040 100644
--- a/NetMFAPatcher/Utils/Backend.cs
+++ b/NetMFAPatcher/Utils/Backend.cs
@@ -28,7 +28,11 @@ namespace DotNetCTFDumper.Utils
             {
                 if (Instance.GameData.GameChunks.GetChunk<ImageBank>() == null) return;
                 form.SetImageElements(true);
-                worker.DoWork += (senderA, eA) => { Instance.GameData.GameChunks.GetChunk<ImageBank>().Read(load,save); };
+                worker.DoWork += (senderA, eA) =>
+                {
+                    Instance.GameData.GameChunks.GetChunk<ImageBank>().PreloadOnly = false;
+                    Instance.GameData.GameChunks.GetChunk<ImageBank>().Read(load,save);
+                };
                 worker.RunWorkerCompleted += (senderA, eA) =>
                 {
                     form.SetImageElements(false);

From 117c9cb94a7161dd6eeb8bdaa480ec6e9f7cdbe0 Mon Sep 17 00:00:00 2001
From: 1987kostya <ivaninvideorec@gmail.com>
Date: Tue, 15 Dec 2020 20:25:40 +0600
Subject: [PATCH 8/8] Visual updates

---
 NetMFAPatcher/GUI/FrameViewer.Designer.cs     |   16 +-
 NetMFAPatcher/GUI/FrameViewer.cs              |    6 +-
 NetMFAPatcher/GUI/FrameViewer.resx            | 2288 +++++++++++++++++
 NetMFAPatcher/GUI/MainForm.Designer.cs        |    4 +-
 .../MMFParser/EXE/Loaders/AppHeader.cs        |    4 +-
 .../MMFParser/EXE/Loaders/FrameItems.cs       |    2 +-
 .../MMFParser/EXE/Loaders/ObjectInfo.cs       |    6 +-
 .../EXE/Loaders/Objects/Animations.cs         |    2 +-
 .../EXE/Loaders/Objects/ObjectCommon.cs       |   12 +-
 9 files changed, 2307 insertions(+), 33 deletions(-)

diff --git a/NetMFAPatcher/GUI/FrameViewer.Designer.cs b/NetMFAPatcher/GUI/FrameViewer.Designer.cs
index d20095d..7283b79 100644
--- a/NetMFAPatcher/GUI/FrameViewer.Designer.cs
+++ b/NetMFAPatcher/GUI/FrameViewer.Designer.cs
@@ -33,12 +33,12 @@ namespace DotNetCTFDumper.GUI
         private void InitializeComponent()
         {
             this.components = new System.ComponentModel.Container();
+            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrameViewer));
             this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
             this.infoMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.nameMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.positionMenuItem = new System.Windows.Forms.ToolStripMenuItem();
             this.deleteObjBtn = new System.Windows.Forms.ToolStripMenuItem();
-            this.scrollableControl1 = new System.Windows.Forms.ScrollableControl();
             this.contextMenuStrip1.SuspendLayout();
             this.SuspendLayout();
             // 
@@ -74,22 +74,13 @@ namespace DotNetCTFDumper.GUI
             this.deleteObjBtn.Size = new System.Drawing.Size(107, 22);
             this.deleteObjBtn.Text = "Delete";
             // 
-            // scrollableControl1
-            // 
-            this.scrollableControl1.AutoScroll = true;
-            this.scrollableControl1.Dock = System.Windows.Forms.DockStyle.Fill;
-            this.scrollableControl1.Location = new System.Drawing.Point(0, 0);
-            this.scrollableControl1.Name = "scrollableControl1";
-            this.scrollableControl1.Size = new System.Drawing.Size(1008, 733);
-            this.scrollableControl1.TabIndex = 1;
-            this.scrollableControl1.Text = "scrollableControl1";
-            // 
             // FrameViewer
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+            this.AutoScroll = true;
             this.ClientSize = new System.Drawing.Size(1008, 733);
-            this.Controls.Add(this.scrollableControl1);
+            this.Icon = ((System.Drawing.Icon) (resources.GetObject("$this.Icon")));
             this.Name = "FrameViewer";
             this.Text = "FrameViewer";
             this.contextMenuStrip1.ResumeLayout(false);
@@ -101,7 +92,6 @@ namespace DotNetCTFDumper.GUI
         private System.Windows.Forms.ToolStripMenuItem infoMenuItem;
         private System.Windows.Forms.ToolStripMenuItem nameMenuItem;
         private System.Windows.Forms.ToolStripMenuItem positionMenuItem;
-        private System.Windows.Forms.ScrollableControl scrollableControl1;
 
         #endregion
     }
diff --git a/NetMFAPatcher/GUI/FrameViewer.cs b/NetMFAPatcher/GUI/FrameViewer.cs
index 1ecef8e..a31d532 100644
--- a/NetMFAPatcher/GUI/FrameViewer.cs
+++ b/NetMFAPatcher/GUI/FrameViewer.cs
@@ -25,7 +25,7 @@ namespace DotNetCTFDumper.GUI
             InitializeComponent();
             this.Width = frame.Width;
             this.Height = frame.Height;
-            this.BackColor = Color.Black;
+            this.BackColor = Color.FromArgb(255,frame.Background.R,frame.Background.G,frame.Background.B);
             this.Text = "Frame Viewer: "+frame.Name;
             images = imgs;
             contextMenuStrip1.ItemClicked+= new ToolStripItemClickedEventHandler(MenuItemSelected);
@@ -44,7 +44,7 @@ namespace DotNetCTFDumper.GUI
                 pictureBox1.ClientSize = new Size(img.Bitmap.Width, img.Bitmap.Height);
                 pictureBox1.Image = img.Bitmap;
                 pictureBox1.MouseClick += new MouseEventHandler(OnObjectSelected);
-                scrollableControl1.Controls.Add(pictureBox1);
+                Controls.Add(pictureBox1);
             }
         }
 
@@ -68,7 +68,7 @@ namespace DotNetCTFDumper.GUI
         private void LoadObjects(Frame frame)
         {
             var size = new Size(Exe.Instance.GameData.Header.WindowWidth,Exe.Instance.GameData.Header.WindowHeight);
-            scrollableControl1.Size = new Size(frame.Width,frame.Height);;
+            //scrollableControl1.Size = new Size(frame.Width,frame.Height);;
             ClientSize = size;
             var list = frame.Objects.Items.OrderBy(x=>x.Handle);
             foreach (var obj in list)
diff --git a/NetMFAPatcher/GUI/FrameViewer.resx b/NetMFAPatcher/GUI/FrameViewer.resx
index ad53752..f7dc06b 100644
--- a/NetMFAPatcher/GUI/FrameViewer.resx
+++ b/NetMFAPatcher/GUI/FrameViewer.resx
@@ -120,4 +120,2292 @@
   <metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>17, 17</value>
   </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAd3d3
+        DHV1dUFQUFB7Ojo6syoqKugfHx//DAwM/wUFBf8CAgL/AgIC/wEBAf8CAgL/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wICAv8DAwP/BgYG/wsLC/8eHh7/Nzc3/zk5ObVOTk57dnZ2
+        QXNzcwwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAJCQkApaWlokPz8/eSsrK7kiIiL6CAgI/wICAv8BAQH/AQEB/wEBAf8CAgL/AgIC
+        /wEBAf8BAQH/AgIC/wEBAf8AAAD/AQEB/wEBAf8AAAD/AQEB/wEBAf8BAQH/AAAA/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8GBgb/ISEh+ikpKbk9PT15WlpaJI2NjQoAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCgC3BwcD9HR0eUKysr3xAQEP8DAwP/AQEB
+        /wEBAf8BAQH/AQEB/wAAAP8AAAD/AQEB/wICAv8CAgL/AQEB/wICAv8DAwP/AgIC/wICAv8CAgL/AgIC
+        /wMDA/8DAwP/AgIC/wICAv8BAQH/AQEB/wEBAf8CAgL/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AAAA
+        /wEBAf8BAQH/AQEB/wICAv8PDw//Kysr30NDQ5Rubm4/nJycCwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfX19
+        G1ZWVnk1NTXeERER/wMDA/8CAgL/AQEB/wEBAf8BAQH/AQEB/wEBAf8CAgL/AQEB/wEBAf8EBwP/CxUK
+        /xQtEv8XTBL/ImMc/yp2I/8kkxr/Jqga/yqxHf8sth//LLcf/yu3H/8sth//KrEe/yWoGv8klBr/KnUj
+        /yJjHP8WSxL/FC0R/wsVCv8ECAT/AQEB/wEBAf8CAgL/AAAA/wAAAP8AAAD/AQEB/wICAv8CAgL/AwMD
+        /xAQEP80NDTeU1NTeX9/fxsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAfX19QTY2NpcaGhrwBQUF/wEBAf8BAQH/AgIC/wICAv8BAQH/AQEB
+        /wICAv8BAQH/CRQI/xNADv8fbhj/I6QX/yfNF/8n6BX/KPgV/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8o+BX/J+kW/yfOGP8jpRf/H28Y
+        /xNBD/8LFQr/AQEB/wAAAP8BAQH/AgIC/wICAv8BAQH/AQEB/wEBAf8DAwP/Ghoa8DIyMpd4eHhBAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAa2prQTQ0NLQVFRX+AwMD
+        /wEBAf8BAQH/AgIC/wEBAf8CAgL/AgIC/wYKBv8VLhL/HW4W/ye3Gv8n5hb/Jf0R/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//Jf4S/yr4F/8q9Rj/KvMX/ynyF/8p8hf/KvIX/yr1F/8q+Bf/Jf0S
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//Jf0R/yfnFv8ouBr/Hm8X/xQuEv8HCwf/AwMD
+        /wICAv8BAQH/AQEB/wEBAf8BAQH/AgIC/xUVFf4zMzO0ampqQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAfHx8QDs7O7YTExP8AwMD/wICAv8BAQH/AQEB/wICAv8CAgL/BQgF/xIvD/8gfxj/KM0Z
+        /yf2FP8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8o8Bb/Jc0W/yexGv8jhRr/Imsb/xpYFP8YQhT/FisU
+        /xAiDv8MHQr/CxsK/wsbCv8MHAr/ECMP/xYqFP8ZRBX/GlgV/yJrHP8jhRr/J7Aa/yXMFv8p7xf/JP4Q
+        /yP/D/8j/w//I/8P/yP/D/8j/w//J/cU/ynQGv8ighn/EjAP/wUHBP8CAgL/AQEB/wEBAf8CAgL/AwMD
+        /wMDA/8SEhL8OTk5tnp6ekAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbW1tHTMzM5EVFRX7AwMD/wICAv8CAgL/AQEB
+        /wEBAf8CAgL/CBIH/xpiE/8mvhf/JfUS/yP/D/8j/w//I/8P/yP/D/8m+xP/KNwX/yirHP8gcBn/DzoL
+        /wkZB/8DBQP/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wEBAf8AAAD/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8BAQH/AgQC/woXCP8NNAr/IG8Z/yepG/8n3Bf/JvoT/yP/D/8j/w//I/8P
+        /yP/D/8l9RL/JsEY/xtkFP8IEwf/AQEB/wICAv8DAwP/AgIC/wICAv8DAwP/FRUV+y8vL5FjY2MdAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZ
+        CFRUVHQiIiLzBQUF/wEBAf8BAQH/AgIC/wEBAf8BAQH/DxwO/yKAGf8n4xb/JP4Q/yP/D/8j/w//I/8P
+        /yf5FP8pyxr/IX4Z/xQzEv8IDgf/BQUF/wMDA/8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8BAQH/AwMD/wYMBv8UMxH/IH0Y/ynKGv8p9xb/I/8P/yP/D/8j/w//JP4Q/yjkFv8hgBj/EB0O
+        /wMDA/8CAgL/AgIC/wICAv8CAgL/AwMD/yAgIPNUVFR0k5OTCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRkZCcsLCzCCQkJ/wICAv8CAgL/AgIC/wICAv8CAgL/DiMM
+        /yCTFv8p7Bj/I/8P/yP/D/8j/w//JP4Q/ybYFv8efhX/ESwO/wUIBf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/BQgE
+        /xImEf8eexb/J9IX/yT+EP8j/w//I/8P/yP/D/8p7Rf/IZYX/w8kDf8CAgL/AgIC/wICAv8CAgL/AwMD
+        /woKCv8pKSnCY2NjJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJKSkgRJSUl1GRkZ
+        +AICAv8CAgL/AgIC/wICAv8CAgL/ChUJ/x6PFP8m8BT/I/8P/yP/D/8j/w//JvgT/yasGf8XQxP/BAkE
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8DBwP/FkIS/yWqGf8m9xP/I/8P
+        /yP/D/8j/w//JvEU/x+PFP8JFQj/AQEB/wEBAf8BAQH/AQEB/wICAv8YGBj4RUVFdY2NjQQAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAACUlJQgODg4xgcHB/8DAwP/AgIC/wICAv8DAwP/BQcF/xxrFf8o5hb/I/8P
+        /yP/D/8j/w//KfQW/yeRHf8RJw//AwQD/wMDA/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8CAgL/AgMC/xAmDv8mkBz/KPMW/yP/D/8j/w//I/8P/yfnFv8daxX/BgcG
+        /wICAv8BAQH/AgIC/wQEBP8HBwf/ODg4xouLiyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZWVlPR0dHeQCAgL/AgIC
+        /wICAv8CAgL/AgIC/xIvD/8owhv/JP4Q/yP/D/8j/w//JvcT/yGaFv8PHQ7/AwMD/wEBAf8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wMDA/8NGwz/IJgW/yb3E/8j/w//I/8P/yT+EP8pwxv/FDIR/wMDA/8CAgL/AgIC/wICAv8EBAT/Ghoa
+        5GFhYT0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAnZ2dBDExMVsWFhb9AgIC/wICAv8CAgL/AgIC/wcLBv8dehX/JvQT/yP/D/8j/w//JfsR
+        /yWtGf8QLA3/BAQE/wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8FBQX/ECwN/yatGf8l+hH/I/8P
+        /yP/D/8m9RP/HYIU/wYOBf8CAgL/AgIC/wICAv8CAgL/FBQU/S8vL1uTk5MEAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNzcwVNTU2mCwsL/wMDA/8DAwP/AgIC
+        /wMDA/8QKw3/Jr8Y/yT/EP8j/w//I/8P/ynVGf8aURX/BAQE/wICAv8CAgL/AAAA/wEBAf8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AwMD/xhPE/8o1Bn/I/8P/yP/D/8j/w//JsUY/xAtDv8CAwL/AgIC
+        /wEBAf8BAQH/CwsL/0lJSaZtbW0FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAA+Pj4GLCwspQcHB/8DAwP/AwMD/wMDA/8EBQT/GlYV/yfpFf8j/w//I/8P/yX3Ev8hlRb/CBAH
+        /wQEBP8CAgL/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wAAAP8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AgIC
+        /wkQCP8iixj/JfYS/yP/D/8j/w//J+sW/xtYFf8DBAP/AQEB/wICAv8CAgL/BgYG/ykpKaU6OjoGAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAioqKIjg4OMoFBQX/AwMD/wMDA/8DAwP/BgsF
+        /yCBGP8k+hH/I/8P/yP/D/8n2Rb/FEkP/wECAf8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AgIC/wICAv8BAQH/AAAA/wEBAf8BAQH/AQEB/wEBAf8AAAD/AQEB/wICAv8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8SRA7/JtgW/yP/D/8j/w//JfsR
+        /yCCF/8FCgX/AgIC/wICAv8CAgL/BQUF/zQ0NMqEhIQiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AIeHhyM6OjrbBAQE/wMDA/8CAgL/AgIC/wkSCP8kshf/JP4Q/yP/D/8k/RD/JaoZ/w0bC/8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AAAA/wEBAf8CAgL/AgIC/wEBAf8FBgX/DRwM
+        /xc0FP8YVRL/HF8W/x1iF/8aWhT/FjcT/wkQCP8DAwP/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8LGQr/JKkY/yT9EP8j/w//JP4Q/yW1GP8JEgj/AgIC/wICAv8CAgL/AwMD
+        /zU1NduJiYkjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNjY0jOzs72wUFBf8CAgL/AgIC/wICAv8NHQv/JsAY
+        /yP/D/8j/w//JfcS/x53Fv8GCQX/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wAAAP8BAQH/AQEB
+        /wEBAf8AAAD/AwQD/w4cDf8XTRP/IZcW/yvJHP8o7hb/KPoV/yP/D/8j/w//I/8P/yP/D/8n+hT/KN4X
+        /yCJFv8MGwr/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8GCgb/H3YX
+        /yX2Ev8j/w//I/8P/yfBGf8LHQr/AQEB/wEBAf8CAgL/BAQE/zg4ONuHh4cjAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARERE
+        Bzw7PMsEBAT/AgIC/wICAv8CAgL/ECoN/yTYE/8j/w//I/8P/yfqFf8WVxD/AwMD/wEBAf8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AQEB/wEBAf8BAQH/AgIC/wICAv8CAgL/CxYK/xhYEv8ktBf/JusU/yT+EP8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yfSF/8OIwv/AgIC/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8DAwP/F00S/yjpFv8j/w//I/8P/yTZE/8QLw3/AgIC
+        /wMDA/8CAgL/BAQE/zc3N8s/Pz8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGtrawYrKyulBQUF/wICAv8CAgL/AgIC/xI1D/8m3xX/I/8P
+        /yP/D/8n4hb/FDcR/wICAv8CAgL/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wICAv8EBAP/FDYR
+        /yaTHP8o5Rb/JP4Q/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yfGGf8FCgX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wICAv8CAgL/FDUR/yfhFv8j/w//I/8P/yXhFP8SNg//AwMD/wICAv8CAgL/BAQE/ycnJ6Vra2sGAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACdnZ0FSUlJ
+        pgcHB/8DAwP/AgIC/wICAv8NLAv/JeAU/yP/D/8j/w//Jd0U/wwoCv8CAgL/AQEB/wICAv8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8GCAX/GVAU/ye6Gf8m9xP/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JP4Q/xxQF/8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8CAgL/DCcK/yXcFP8j/w//I/8P
+        /yXhFP8PLgz/AgIC/wICAv8CAgL/BgYG/0ZGRqaUlJQFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADIyMl0MDAz/AgIC/wICAv8DAwP/DBkK/ybTFv8j/w//I/8P
+        /yXaFf8OJgz/AgIC/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wAAAP8BAQH/AQEB/wEBAf8EBgT/GVYU/ybMF/8k/BD/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//KJ0d/wEBAf8AAAD/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/DCQK/yXYFP8j/w//I/8P/yTZE/8MHQr/AgIC/wICAv8CAgL/CwsL
+        /y8vL10AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABtbW1BFxcX
+        /AMDA/8CAgL/AgIC/wgSCP8mvxn/I/8P/yP/D/8l3RX/DSUL/wMDA/8CAgL/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8BAQH/AgIC
+        /wICAv8GBwb/GlIV/ynQGv8k/RD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8txh//AgMC
+        /wAAAP8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8CAgL/DCQK
+        /ybdFf8j/w//I/8P/ybBGP8JEwj/AgIC/wICAv8DAwP/FBQU/HZ2dloAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAiYmJIR4eHuQCAgL/AgIC/wEBAf8FCgX/JLIX/yP/D/8j/w//J+MV
+        /wwpCv8CAgL/AgIC/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wEBAf8EBQT/FEMP/yjGGf8k/hD/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yrdGv8DBQP/AQEB/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/DCgJ/ybiFf8j/w//I/8P/ySzF/8GCwb/AgIC
+        /wICAv8DAwP/Gxsb5YGBgSEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQM8PDzKAwMD
+        /wEBAf8BAQH/AwQD/x+AFv8k/hD/I/8P/yjrFv8TNRD/AgIC/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8CAgL/DysN
+        /ySrGP8k/RD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//KdEa
+        /wIDAv8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wAAAP8CAgL/FDQR/yjqFv8j/w//JP8Q/yCEF/8DBAP/AwMD/wICAv8CAgL/Nzc3yoyMjAMAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAATExMeAgICP8BAQH/AQEB/wQEBP8aWBX/JPsR/yP/D/8l+BL/F1cR
+        /wEBAf8CAgL/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8CAgL/CRQI/yODGv8n8xT/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8tqyL/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wMDA/8DAwP/GE4T/yX3Ev8j/w//JfwR
+        /xtbFf8DAwP/AgIC/wMDA/8HBwf/R0dHeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGdnZycYGBj7AgIC
+        /wEBAf8BAQH/DywN/yfpFf8j/w//JP0Q/xx0FP8EBAT/AgIC/wICAv8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8BAQH/AwUD/xdREv8o1hj/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yOFGv8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wICAv8BAQH/HXMW/yT9EP8j/w//J+sV/xAuDf8BAQH/AgIC/wICAv8XFxf7XV1d
+        JwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAACVlZUIKioqxQICAv8BAQH/AQEB/wYLBv8mwRj/I/8P/yP/D/8lrBn/BgkF
+        /wICAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB
+        /wEBAf8CAgL/AgIC/wwnCv8kqhj/JPwR/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//HUsZ/wICAv8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GCQX/JKgY
+        /yP/D/8j/w//J8cZ/wYPBv8BAQH/AgIC/wMDA/85OTngj4+PCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFJSUngHBwf/AQEB
+        /wEBAf8DBAP/H38X/yT+EP8j/w//J9kX/wwaC/8DAwP/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8CAgL/BAQE/wYKBf8fZRj/J+sV/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yfvFf8MGgv/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wMDA/8MGQv/JtcW/yP/D/8j/w//H4QV/wMDA/8BAQH/AgIC
+        /wcHB/9NTU14AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAABxcXEfIiIi9QICAv8BAQH/AQEB/xEwD/8l9BP/I/8P/yX2Ev8URg//AgIC
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AgIC
+        /wICAv8OKQz/JroZ/yT+Ef8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I68X/wQFBP8CAgL/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC
+        /wICAv8SRA3/JfYS/yP/D/8m9RP/EjkP/wICAv8CAgL/AgIC/x8fH/VqamofAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQ0NJUEBAT/AgIC
+        /wICAv8HCQb/KMMa/yP/D/8j/xD/I4sZ/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wICAv8EBQT/GWgS/ybrE/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8YWBP/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8hhxf/I/4Q/yP/D/8oxxn/BwoH
+        /wICAv8BAQH/AgIC/zAwMJUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAB8fHxDFhYW/AICAv8CAgL/AgIC/xxtFf8k/hD/I/8P/ynTGv8KEQn/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AAAA/wAAAP8BAQH/DiAN
+        /yWsGf8k/BH/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8k/hD/K/MZ/yjoF/8n5hb/KesY/yj5Ff8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//J+MW/wgUB/8AAAD/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/woRCf8o0Bn/I/8P/yT+EP8ecRb/AQEB/wEBAf8CAgL/FBQU/Hh4eEMAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADg4OLsCAgL/AgIC
+        /wICAv8KEwn/KeoX/yP/D/8k+xD/GFET/wMDA/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/AQIB/xVQEP8n4Rb/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//KOsW/yi8G/8ciBL/GlYV/w0xCv8JFwj/BxEG/wcQBv8HEgf/CiEI
+        /xlWE/8krxf/JfgS/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8ggxf/AQIB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xhME/8l+RH/I/8P
+        /yjqF/8JEwj/AgIC/wICAv8CAgL/NjY2uwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAABwcHBEExMT/AICAv8CAgL/BAQE/x+KFf8j/w//I/8P/yOtF/8EBgT/AwMD
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wcPBv8hjhf/JfgR
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yT+EP8q4hn/IpYY/xdIE/8LGAn/AwQD
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wMFA/8URw//JeIU/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//KewX/w4fDP8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/BAQE/ySmGP8j/w//I/8P/yCNFv8CAgL/AQEB/wEBAf8RERH8ZmZm
+        RAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADU1NbkCAgL/AgIC
+        /wMDA/8OIwz/JvMT/yP/D/8m9RP/ES0O/wICAv8CAgL/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AgIC/wEBAf8PKgz/J8MZ/yP+D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yjxFv8ipRb/GEcU/woQCf8CAwL/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8WOhL/JvYT/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8osxv/BAQE/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8CAgL/DyoM
+        /yb0E/8j/w//JvQT/xAlDv8CAgL/AgIC/wICAv8yMjK5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAABbW1srFRUV/gICAv8CAgL/AQEB/yGYFv8j/w//I/8P/yCcFP8DAwP/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8CAwL/GUoV/yjnF/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yjPGP8fZxn/DBkK/wABAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIDAv8koBn/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yX6Ev8ZYhP/AgIC/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8CAgL/H5QV/yP/D/8j/w//IpkX/wEBAf8BAQH/AQEB
+        /xUVFf52dnZFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYmJn8EBAT/AgIC
+        /wICAv8PHA7/Ke4X/yP/D/8p8hb/DR4L/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AgIC
+        /wICAv8CAgL/AgMC/wICAv8CAgL/AgIC/wEBAf8CAgL/AgIC/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8CAgL/BQkE/yCBF/8l+xL/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JvoS/ym0HP8XQRP/BAYE
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xxFGP8k/RH/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yX2Ev8UPxD/AgIC/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8NGgz/KfEW/yP/D/8p8Bf/ER4P/wEBAf8BAQH/AwMD/yQkJIAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBgAICAv8CAgL/AQEB/yKDGf8j/w//I/8P/yaPHP8DAwP/AAAA
+        /wAAAP8BAQH/AQEB/wEBAf8BAQH/AQEB/wYLBv8dTxj/KJwe/y3FIP8q3Br/L8ch/y2oIf8jgxr/HUoZ
+        /wsXCv8DBAP/AgIC/wEBAf8BAQH/AQEB/wEBAf8BAQH/AgIC/wsUCv8othv/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//JfcS/ySpF/8RMQ//AwMD/wAAAP8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/EigQ
+        /yT5Ef8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//J/UV/yT8Ef8j/w//I/8P/yfiFv8NHwv/AwMD
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8kihv/I/8P/yP/D/8jhRn/AQEB
+        /wEBAf8CAgL/AgICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQGAAQEB
+        /wICAv8IEQf/J+UW/yP/D/8m+RP/EiYQ/wICAv8BAQH/AAAA/wEBAf8BAQH/AQEB/wEBAf8OIwz/J8cY
+        /yT+EP8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//KO8W/ySuGP8XVBL/BxEG/wEBAf8BAQH/AQEB
+        /wAAAP8RMA7/JtgW/yP/D/8j/w//I/8P/yP/D/8j/w//JfQS/yGgFv8QLg3/AgIC/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8MHQr/I/gQ/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yX8Ef8bXxX/JMIV/yP/D/8j/w//I/8P/yi8G/8GDAX/AQEB/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AQEB/w8iDv8m9hP/I/8P/yjoFv8KFgn/AQEB/wEBAf8BAQGAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAYABAQH/AgIC/xtlFP8k/hD/I/8P/yWrGf8CAgL/AQEB
+        /wEBAf8BAQH/AQEB/wICAv8CAgL/CBcH/ybRFv8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8o4xf/IIAX/wwbC/8FBgX/GFkS/ybtFP8j/w//I/8P/yP/D/8j/w//JfYT
+        /ySmGP8TMxD/AgIB/wAAAP8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /xAlDv8k+RH/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//J68b/wYHBv8UQBD/JfgS/yP/D/8j/w//I/8P
+        /yKRGP8CAgL/AgIC/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/yWnGf8j/w//I/4Q
+        /xxpFf8AAAD/AQEB/wEBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEB
+        gAEBAf8FBQX/J8AZ/yP/D/8k/hD/FUcR/wICAv8CAgL/AAAA/wAAAP8AAAD/AQEB/wEBAf8fiBX/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//KesY
+        /yevG/8l+RL/I/8P/yP/D/8j/w//JPoR/yWxGP8UORH/AgMC/wICAv8AAAD/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/GTYW/yX7Ef8j/w//I/8P/yP/D/8j/w//I/8P
+        /yfrFf8RLQ7/AgIC/wMEA/8lrBn/I/8P/yP/D/8j/w//Jf0R/xpaFP8BAQH/AQEB/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/Fj4S/yT+EP8j/w//JsUY/wMGA/8BAQH/AQEBgAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAgIC/xIuD/8l9RL/I/8P/ybWFv8EBwT/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8BAQH/CRIJ/yjeGP8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JP0Q/yXHF/8VTBD/AwQD
+        /wICAv8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wEBAf8eYhf/JP4Q/yP/D/8j/w//I/8P/yP/D/8k/RD/HHEU/wICAv8BAQH/AQEB/xEwD/8n8RX/I/8P
+        /yP/D/8j/w//KOoW/xIvD/8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wAAAP8DBgP/JNMV
+        /yP/D/8l9xL/FDQR/wICAv8CAgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAIADAwP/IYMY/yP/D/8j/w//Hn0W/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8XORT/J/kU
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8n9xT/H2IZ/wcLBv8CAgL/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8BAQH/AQEB/yedHP8j/w//I/8P/yP/D/8j/w//I/8P
+        /ya7GP8GCgX/AAAA/wAAAP8BAQH/AgIC/yaTHP8j/w//I/8P/yP/D/8j/w//KMga/wgRB/8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8deBT/I/8P/yP/D/8ihxn/AwMD/wMDA4AAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAcKBv8o0Rn/I/8P/yf5FP8RKg//AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xlaE/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8k/BH/JbUY
+        /xItEP8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB
+        /wEBAf8HDAb/KuAZ/yP/D/8j/w//I/8P/yP/D/8n6xX/ECwO/wICAv8AAAD/AAAA/wEBAf8BAQH/ESMP
+        /yfuFf8j/w//I/8P/yP/D/8j/w//IpUY/wIDAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /xEhEP8p9xf/I/8P/ynVGv8IDAj/AgICgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAABAQGAEy4R/yf3FP8j/w//Kckb/wYIBf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/HGEV
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//J+sV/xt1E/8FCwT/AgIC/wEBAf8BAQH/AgIC
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/xZEEv8l/BH/I/8P/yP/D/8j/w//JfwR
+        /xxkFv8CAgL/AQEB/wAAAP8AAAD/AAAA/wAAAP8CAgL/H5MV/yP/D/8j/w//I/8P/yP/D/8l+hH/GFgS
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BQYF/y2/H/8j/w//J/gU/xQwEv8DAwOAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBIAfcxf/I/8P/yP/D/8ifBr/AgIC
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8bXxX/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/4Q/ye9Gf8QLA7/AgIC/wICAv8CAgL/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB
+        /wEBAf8BAQH/I5oY/yP/D/8j/w//I/8P/yP/D/8kohn/BAUE/wICAv8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8PIQ7/KPEV/yP/D/8j/w//I/8P/yP/D/8n5Rb/ECQO/wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8CAgL/IHgY/yP/D/8j/w//H3QX/wICAoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAwMDgCi8Gv8j/w//Jf0R/xQ3Ef8CAgL/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /xlUFP8j/xD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yfqFf8dYhb/BAQE
+        /wICAv8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/woZCP8m6xT/I/8P/yP/D/8j/w//J9YX
+        /wsSCv8BAQH/AgIC/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8llRv/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8muRn/BQoF/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8TLhD/J/oU/yP/D/8ovRv/AwMD
+        gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASJxCAJ+cV/yP/D/8o3Bj/BwwG
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/GjQX/yn6Fv8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yX7Ef8koRn/ChAJ/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wEBAf8BAQH/HXIV/yP/D/8j/w//I/8P/yfyFP8SLg//AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/xIqEP8m+BP/I/8P/yP/D/8j/w//I/8P/yT9EP8cdBT/AQEB/wEBAf8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wYLBf8o2hj/I/8P/yjqF/8VLhOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAACJzG4Am/BL/I/8P/yinHP8EBAT/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8LGgr/J+8U/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8n1Rf/FjMT/wMDA/8CAgL/AQEB/wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AwMD/wgPCP8o2Rf/I/8P/yP/D/8l/RL/G14V
+        /wMDA/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AwMD/yatGv8j/w//I/8P
+        /yP/D/8j/w//I/8P/ybvFP8QLQ3/AgIC/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMD/yelG/8j/w//JvwS
+        /yZ8H4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANdAngCP/D/8j/w//HHIU
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wUHBf8qyRv/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8n8xX/HV8X/wMEA/8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/HWgW/yT+EP8j/w//I/8P/yCUFf8EBAP/AgIC/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wICAv8CAgL/FjoT/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yfAGf8IDQf/AgIC
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/H2kY/yP/D/8j/w//N9oogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAj/w+AI/8P/yP/D/8QOAz/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AQEB/yKbF/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8k/RD/JPoR/yP4EP8k+RD/JfwR/yT+EP8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8k/hH/IZYW/wUJBP8BAQH/AQEB/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wgRB/8o2hj/I/8P/yP/D/8ntBr/BAgE
+        /wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wICAv8DBQP/JsYX
+        /yP/D/8j/w//I/8P/yP/D/8j/w//JP4Q/x92F/8DAwP/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8MMQn/I/8P
+        /yP/D/8j/w+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP/D4Aj/w//KPAW
+        /wgWB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/F08S/yT+EP8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8m9hP/JaQa
+        /xpQFf8SKhD/DR8L/xAlDv8ZOBb/HmMX/yedHP8q4Bn/JfwR/yP/D/8j/w//I/8P/yP/D/8j/w//J7Ya
+        /w0eC/8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/H3MX/yT/EP8j/w//JtUW/wwdCv8CAgL/AAAA/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8bYBX/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//J+8V
+        /xExDv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wgVB/8p7hf/I/8P/yP/D4AAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAI/8PgCP/D/8i0BP/AwYD/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8OHAz/Je0T/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//J+IW/xc7FP8CAgL/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AgIC
+        /wgNB/8YRxP/I5sY/ybrFP8j/w//I/8P/yP/D/8j/w//J9cX/xEvD/8CAgL/AAAA/wEBAf8BAQH/AAAA
+        /wAAAP8BAQH/AQEB/wICAv8CAgL/AQEB/wEBAf8BAQH/AAAA/wUJBf8myhj/I/8P/ybmFf8QLA7/AgIC
+        /wEBAf8AAAD/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /woUCf8o7Rb/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JboX/wQIA/8AAAD/AAAA/wAAAP8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgQC
+        /yTHFv8j/w//I/8PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj/w+AI/8P
+        /yeuG/8CAgL/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIDAv8isxX/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yX5Ev8URQ//AgIC
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AgIC/wEBAf8CAgL/ChoI/x1yFf8o2hj/JP4Q
+        /yP/D/8j/w//JeoT/xZQEP8CAgL/AQEB/wEBAf8CAgL/AgMC/wkZB/8YUBP/IGga/yBpGv8YURP/CRoI
+        /wIDAv8CAgL/AgIC/wsiCf8oqhz/F04R/wICAv8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/yOZGP8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8k/RH/GFsS/wIDAv8BAQH/AAAA/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/Jqsa/yP/D/8j/w+AAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP/D4Aj/w//I4Ia/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xhbEv8k/hD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I7AW/wQGBP8CAgL/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wkPCP8daBb/KNsY/yT/EP8j/w//K74d/wUFBf8CAgL/AwMD
+        /xQxEf8lpBn/KPEW/yP/D/8j/w//I/8P/yP/D/8o8Rb/JaUa/xMwEP8DAwP/AgIC/wQEBP8CAgL/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/F0MU/yT+EP8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8n4hb/DBsL/wMDA/8AAAD/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8ifxn/I/8P/yP/D4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/8P
+        gCP/D/8iahz/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CBMH
+        /yfmFf8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8YXRL/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AgIC
+        /wICAv8KEgn/HXAV/yfSGP8SMg//AwMD/wMEA/8bYxX/Ju8U/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//JvAU/xtlFf8DAwP/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8HDAf/Kd4Z/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8jkhn/AgMC/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/yFmG/8j/w//I/8PgAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj/w+AI/8P/xpUFP8BAQH/AQEB/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/JZQa/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//JvwT/wsnCP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/BgoF/wICAv8DAwP/GmAT
+        /yX3Ev8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JfgS/xtmFf8CAgL/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wECAf8ikRf/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yb3E/8RMg7/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/GlMV/yP/D/8j/w+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        ACP/D4Ak/xD/F0cT/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8UNhH/JvcT/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8r7Rn/BxIG
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/AgIC/xIvD/8m7hT/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//JvAU/xMxEP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xU/Ev8k/xD/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/ye0Gv8GCAb/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8XPRT/Jv0S/yP/D4AAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/8PgCr5GP8YLBb/AAAA/wEBAf8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/wQEBP8oshv/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/ynnF/8GDwX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8CAwL/JKEZ
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JKQY
+        /wMDA/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/ChIJ/yjmF/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JP4Q
+        /xdMEv8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/xQmE/8r9xj/I/8PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAj/w+AK/UZ/xIiEP8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8DAwP/AgIC/xdNEv8k/BD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//KusZ
+        /wcRBv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wgYB/8o7xb/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8o8Rb/CRoH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8CAwL/J7ca
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//Kc8a/wQGBP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DRwM/yv0Gf8j/w+AAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP/D4Ar8xn/DhwM/wEBAf8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/BQcF/ybLF/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8s9Br/CBUH/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/F00S
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8YUBP/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8chRL/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//HFsW/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8LGQn/KvEY/yP/D4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAI/8PgCrxGP8KGAn/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/GVcT/yP+D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yT+EP8PMQv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8fZxj/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yBpGf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /xpRFf8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8q1xr/BAYE/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/woXCf8q8Bj/I/8P
+        gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj/w+AKvEY/wsZCf8BAQH/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8EBQT/KtEb
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/xxXFv8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /yBoGv8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//IGka/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/DCcK/yf8E/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP+D/8bXhX/AgIC/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/ChgJ/yrwGP8j/w+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAACP/D4Ar8xn/Dh0N/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8YURP/I/4Q/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//H4wV/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/F0sS/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8YURP/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8JFQf/LPIa/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yfSF/8HCQb/AgIC
+        /wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8KGAn/KvEY
+        /yP/D4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/8PgCv1Gf8SIhD/AQEB
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wUHBf8oyBr/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8ovBv/AwQD/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8JGQj/J+4V/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//KPAW/wkaB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcQBv8p5xf/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//JP0Q/xpXFf8CAgL/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w0dDP8r9Bn/I/8PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAj/w+AK/kY/xcqFf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xRFD/8k/RD/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yjrFv8MGAv/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8loRn/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8loxn/AgIC/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/Bg4F/yjkF/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//J8QY
+        /wQHBP8CAgL/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/FCYS
+        /yv4GP8j/w+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP/D4Al/hL/GUEV
+        /wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8CAgL/BAYE/ySqF/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/xdHE/8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AQEB/xAsDv8m7hT/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//Ju8U/xMwEP8DAwP/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HEQb/KuoY/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8l+hH/Fz8T/wICAv8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8aNhf/KPwV/yP/D4AAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAI/8PgCP/D/8aVRX/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/DisL/yfyFP8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I5cY/wMDA/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AgIC/xpgFP8l9hL/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yX3Ev8bYxT/AwMD/wICAv8HDAb/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wshCf8p+hX/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8kpBn/AgIC/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /xlSFP8j/w//I/8PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj/w+AI/8P
+        /yJpG/8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8CAgL/IYIZ/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8r4hr/CA0H
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8CAgL/AwQD/xteFP8n6Rb/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8m7xT/G2MU/wMEA/8CAgL/DSQK/yfQGP8gixb/ChkJ/wEBAf8CAgL/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/GF4S/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yfqFv8LGgr/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/IWYb/yP/D/8j/w+AAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACP/D4Aj/w//H4oW/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8JFQj/KNcY
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yT+EP8aSRX/AAAA/wAAAP8BAQH/AQEB/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wYGBv8CAgL/AgIC
+        /xApDv8loRn/Ke4X/yT+EP8j/w//I/8P/yP/D/8o7xb/JKEZ/xMwEP8CAgL/AQEB/wMDA/8oqhz/I/8P
+        /yP/D/8o4Rf/InUa/wwUDP8CAgL/AQEB/wAAAP8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wMFA/8kshf/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/xhlEv8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8igBr/I/8P/yP/D4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/8P
+        gCP/D/8nrhv/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8XUhL/JPwR/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yOmF/8DBAP/AAAA/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8USA//Kr8d/xAwDv8CAgL/AwMD/wIDAv8KFwj/GEkU/yBmGf8gZhn/F00S
+        /woZCf8CAgL/AQEB/wEBAf8BAQH/AQEB/xM+D/8m3hb/I/8P/yP/D/8j/xD/KeAY/x+FFv8OIw3/AQEB
+        /wEBAf8BAQH/AQEB/wAAAP8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8CAgL/FUsQ/yX5Ev8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JbsY/wQFBP8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/yarGv8j/w//I/8PgAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAj/w+AI/8P/yLQE/8DBgL/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wIEAv8kqxj/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//KPIW/wsXCv8BAQH/AQEB/wEBAf8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/DigM/ybiFf8j/w//KdcZ
+        /wkOCP8AAAD/AAAA/wAAAP8BAQH/AQEB/wICAv8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wwlCv8mzhf/I/8P/yP/D/8j/w//I/8P/ybwFP8krRj/F1YR/woRCv8BAQH/AQEB/wICAv8CAgL/AwMD
+        /wEBAf8BAQH/AwMD/xdOEv8k6xL/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8m7xP/DyIO/wMDA/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8DBgL/Is8S/yP/D/8j/w+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        ACP/D4Aj/w//KPAW/wgWB/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wwhC/8n6Rb/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//HG8V/wICAv8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AgIC/wsbCf8l0xb/I/8P/yP/EP8hgxf/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/wwUC/8kqRj/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8k/RD/KugZ/yiyG/8gdxj/HEAY/xYxE/8SKhD/GDUW/xxXFv8nqhv/JfkS/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8YWRL/AgIC
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wgTB/8q7hj/I/8P/yP/D4AAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI/8PgCP/D/8j/w//ETkN/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AwMD/x9kGP8k/RH/I/8P/yP/D/8j/w//I/8P/yP/D/8ozxj/BAUE/wAAAP8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wAAAP8ECAT/Ja0Z/yP/D/8j/w//KeAY
+        /wsVCv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8BAQH/AQEB/wMGA/8ghBb/JvsS/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8l/BH/JPsR
+        /yT6Ef8l+xH/JP4Q/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yOfF/8CAgL/AQEB/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB
+        /wEBAf8BAQH/DjEL/yT+EP8j/w//I/8PgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAA0zyaAI/8P/yP/D/8bchT/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/BQcF/yezGv8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8aRBb/AgIC/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB
+        /wEBAf8BAQH/BAUE/yCHF/8j/w//I/8P/yT+EP8hcBr/BAQE/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wMDA/8XThL/KekY
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//K84c
+        /wYHBv8BAQH/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wICAv8gahn/I/8P/yP/D/833SiAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACNzHIAm/BL/I/8P/ymoHf8CAgL/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/DSkL/ybqFP8j/w//I/8P/yP/D/8j/w//I/8P/yi0HP8DAwP/AgIC
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wEBAf8bVhX/JfwS/yP/D/8j/w//JuIV
+        /wkUCP8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/AgIC/wEBAf8PJwz/JswX/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8n8BX/DR4M/wEBAf8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wEBAf8CAgL/AwMD/yimHP8j/w//JvwS/yh9IYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAFSoTgCfnFf8j/w//KN0Y/wcNBv8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8CAgL/GV8T
+        /yT8Ef8j/w//I/8P/yP/D/8j/w//JvoS/xIyD/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wEBAf8BAQH/ESwP/ynrGP8j/w//I/8P/yP/D/8fhBb/AQEB/wICAv8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB
+        /wICAv8GDAb/I44Z/yX6Ev8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yb8Ev8YQxT/AQEB/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wICAv8HDAb/KNoY/yP/D/8o6hb/Fi8T
+        gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQGAJ7gZ/yP/D/8l/RH/EzYQ
+        /wICAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GBwb/JasZ/yP/D/8j/w//I/8P/yP/D/8j/w//JKoY
+        /wICAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wcNBv8m0Bf/I/8P/yP/D/8j/w//Ju8T
+        /wwfC/8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wICAv8EBAT/GlMU/yjhF/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/xpdFP8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8BAQH/AgIC/xMuEf8n+hT/I/8P/yi9G/8CAgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAEBAYAdcBb/I/8P/yP/D/8jfhr/AgIC/wEBAf8BAQH/AQEB/wEBAf8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wMDA/8NHgv/JuAV/yP/D/8j/w//I/8P/yP/D/8l9xL/Dy0M/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB
+        /wICAv8EBAP/IZsW/yP/D/8j/w//I/8P/yP/D/8jqhf/AAAA/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AQEB/wEBAf8BAQH/DR8M/yStGP8k/BD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//HWQW/wEBAf8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8CAgL/IHkY/yP/D/8j/w//H3QX
+        /wEBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMDgBMuEf8n9xT/I/8P
+        /yrLG/8FBwX/AQEB/wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wAAAP8VTg//JPgR/yP/D/8j/w//I/8P
+        /yP/D/8hnxX/AwQD/wEBAf8AAAD/AQEB/wEBAf8BAQH/AwMD/xpWFP8l+hL/I/8P/yP/D/8j/w//Jf0R
+        /xlNFf8AAAD/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wEBAf8BAQH/BQgE
+        /xplE/8n5Bb/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8dZhb/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AQEB/wUHBf8pxxr/I/8P/yf4FP8UMBL/AwMDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAACAgKABgoG/yjQGP8j/w//KfgX/xEiEP8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8hhBf/I/4Q/yP/D/8j/w//I/8P/yX0E/8SMg//AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8PIg3/KOMX/yP/D/8j/w//I/8P/yP/D/8q5hn/ChEK/wAAAP8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AgIC/w4fDP8loxr/JvgT/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/xpeFP8BAQH/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/ESoP/yf5FP8j/w//KNMZ
+        /wYKBv8CAgKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAYACAgL/IIEX
+        /yP/D/8j/w//HXwV/wEBAf8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wYMBv8nvRn/I/8P
+        /yP/D/8j/w//I/8P/yWoGf8CAwL/AQEB/wEBAf8BAQH/AwcD/yWyGP8j/w//I/8P/yP/D/8j/w//I/8P
+        /yavGv8DAwP/AAAA/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wUFBP8aTBX/KPEV/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8n+hT/FjgT/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8ddRT/I/8P/yP/D/8ihxn/AgIC/wICAoAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBgAEBAf8RLQ//JfQT/yP/D/8n2Rf/BAcE/wEBAf8BAQH/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/w0hC/8o5hf/I/8P/yP/D/8j/w//JvcT/xQ7Ef8BAQH/AQEB
+        /wEBAf8aaRP/JP0Q/yP/D/8j/w//I/8P/yP/D/8j/w//HnIX/wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8DBAP/FkUS/yTGFv8k/BH/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yjdGP8JEQj/AQEB/wAAAP8AAAD/AAAA/wAAAP8BAQH/BAYE/yfRGP8j/w//JfcS
+        /xQzEf8BAQH/AQEBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAgKAAQEB
+        /wMDA/8mvRn/I/8P/yT+EP8WSRH/AQEB/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB
+        /xhIFP8l/BL/I/8P/yP/D/8j/w//J7Qa/wMEA/8CAgL/DiAN/yfnFf8j/w//I/8P/yP/D/8j/w//I/8P
+        /yX8Ef8bPhj/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8DAwP/EzcP/yWvGP8l+BL/I/8P/yP/D/8j/w//JfoS/yauGv8o5Bf/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//HoMV/wICAv8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wICAv8XPxP/JP4Q/yP/D/8mwxf/BAcE/wEBAf8BAQGAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAICAoABAQH/AgIC/xpjE/8k/hD/I/8P/yWsGP8CAgL/AQEB
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AgIC/yCBF/8j/w//I/8P/yP/D/8k+hH/FUwP
+        /wQFBP8mpxr/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JfoR/xcyFP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AQEB/wEBAf8CAgL/Dy0N/yabHP8l9RP/I/8P/yP/D/8j/w//I/8P
+        /yb0E/8ZYBL/AgMC/wkWCP8bdBP/JtkW/yT+EP8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/ybOF/8KFAn/AgIC/wEBAf8BAQH/AQEB/wEBAf8BAQH/AgIC/yaqGv8j/w//I/4Q
+        /xtmFP8BAQH/AQEB/wEBAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgIC
+        gAICAv8CAgL/BxAG/yfkFv8j/w//JvkT/xMmEf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8BAQH/BAgD/yazGf8j/w//I/8P/yP/D/8nyxj/G1sV/yX7Ef8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8k+RH/EikQ/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8CAgL/EC0N
+        /yGdFf8l8xL/I/8P/yP/D/8j/w//I/8P/yP/D/8l3RX/EzYQ/wICAv8BAQH/AgIC/wICAv8GDAb/F0QT
+        /yCeFf8p5Rj/JP8Q/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yT+EP8ntxr/DSAL/wICAv8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8QIw7/JvcT/yP/D/8n5xb/CBMH/wICAv8CAgL/AgICgAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBQWAAQEB/wICAv8BAQH/IYIZ/yP/D/8j/w//J5Ad
+        /wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8CAgL/ChQJ/yfXF/8j/w//I/8P
+        /yT9Ef8n9RX/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yX7Ef8YNBX/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8BAQH/AQEB/wICAv8DAwP/EjEP/yKnFv8l9xL/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//KLgb
+        /w0dC/8DAwP/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AgMC/wsQCv8aQBf/I28c/yqhH/8xsCX/NLUo
+        /zCuJP8klBr/GkcW/wYIBf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AgIC/yWLG/8j/w//I/8P
+        /yOEGv8CAgL/AgIC/wICAv8DAwOAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        ACkpKX8DAwP/AgIC/wICAv8PGw3/Ke0X/yP/D/8m9hP/ECQO/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AgIC/wICAv8CAgL/EC4N/yfrFf8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//JP4Q/xxXF/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wICAv8EBgT/Fj8T/yeyG/8m+hL/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//JfwR/yOGGv8GCwb/AgIC/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wICAv8CAgL/AgIC/wICAv8CAgL/AgIC/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AAAA/wEBAf8OGwz/KPEW/yP/D/8p8Bf/EB0P/wEBAf8CAgL/AwMD/yQkJIAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYWFhKxYWFv4CAgL/AQEB/wEBAf8hlRb/I/8P
+        /yP/D/8hmRb/AgIC/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AgIC/wICAv8CAgL/GFoS
+        /yX4Ev8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//KK0c/wECAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wECAf8KFgj/HWUW/yjNGf8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yjoF/8YVhP/AQIB
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/BAQE/yOOGv8j/w//I/8P
+        /yGXF/8BAQH/AQEB/wICAv8WFhb+d3Z3RQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAANzc3uQICAv8BAQH/AQEB/w4iDP8m8BT/I/8P/yb2E/8RLg7/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wICAv8DAwP/JaoZ/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8m+RL/Fk8R/wMEA/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8CAgL/AQIB/wYMBf8YRhP/JZ8a/ynvF/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP+D/8nxBn/DysM/wICAv8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wICAv8PKw3/JvUT/yP/D/8m8xP/ECUO/wEBAf8CAgL/AgIC/zQ0NLkAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABvb29EExMT/AEBAf8BAQH/AgIC
+        /yCBGP8j/w//I/8P/yWvGP8EBwT/AQEB/wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB
+        /woZCf8p5xj/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8l7hP/GlUU
+        /wUHBf8DAwP/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8CAwL/DBkK/xdHEv8kmBn/KuEZ
+        /yT+EP8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8l+RH/IpAY/wkRCP8CAgL/AQEB
+        /wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AwMD/ySpGP8j/w//I/8P
+        /x6RFP8DAwP/AQEB/wICAv8SEhL8aGhoRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAA8PDy7AQEB/wAAAP8BAQH/CREI/yjoF/8j/w//JPsQ/xlTE/8CAgL/AAAA
+        /wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8CAgL/G3gT/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8l+hL/JroZ/xljE/8LKgn/CRUI/wgSB/8JEwj/CRcH
+        /w80DP8dWxf/HowU/yi8G/8o6xb/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//J+MW/xZSEf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wICAv8ZThT/JfoR/yP/D/8o6Rb/CBQH/wEBAf8BAQH/AgIC/zk5ObsAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1tbTEQEBDzAgIC
+        /wEBAf8CAgL/HWAW/yT+EP8j/w//J9oX/wsXCf8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB
+        /wYNBv8m2xb/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yb8Ev8q7xn/KOgX/ynrGP8r9Bn/JP4Q/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JPwR/yauGv8NIAv/AgIC/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/CRYI/yfYF/8j/w//JP4Q
+        /xxtFP8DAwP/AgIC/wMDA/8WFhb8fHx8QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADU1NZUDAwP/AQEB/wEBAf8GCQb/KMAa/yP/D/8j/xD/IJQW
+        /wECAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8CAgL/FUwQ/yT+EP8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /ybuFP8bbhP/BAUE/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wECAf8hiRj/I/8Q/yP/D/8pxBv/BQgF/wICAv8CAgL/BAQE/zQ0NJUAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHR0
+        HyQkJPUCAgL/AQEB/wEBAf8RLw//JvEU/yP/D/8l9xL/FUoQ/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB
+        /wIDAv8ipxb/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yT+EP8mvRj/ECwN/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8CAgL/E0YP/yX2Ev8j/w//JfMT
+        /xQ0Ef8CAgL/AgIC/wEBAf8hISH1a2trHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFhYeAkJCf8BAQH/AgIC/wMDA/8fdxf/JP4Q
+        /yP/D/8n2xf/DRwM/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8AAAD/ChEJ/ynmGP8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8n7RX/IGka
+        /wcMBv8CAgL/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wwZC/8n2Rb/I/8P/yT/EP8efhX/AgIC/wICAv8BAQH/BwcH/1NTU3gAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAACdnZ0IMTExxQMDA/8CAgL/AgIC/wYLBv8mvxj/I/8P/yP/D/8mrxr/BgwF/wICAv8BAQH/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wICAv8aQhb/JP8Q/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8k/RH/JLYX/w4qC/8BAQH/AgIC/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8FCQX/JaoZ/yP/D/8j/w//J8MZ
+        /wYLBf8CAgL/AwMD/wICAv87OzvglJSUCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwcHAnHR0d+wMDA/8CAgL/AgIC
+        /w4qC/8n6RX/I/8P/yP+D/8eiBT/BAUE/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AgIC/yNyHP8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//KdkZ/xlWFP8DBgL/AAAA
+        /wAAAP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8BAQH/AgMC/x11Ff8k/RD/I/8P/yfpFf8PLA3/AQEB/wEBAf8CAgL/FxcX+2RkZCcAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAABOTk54CAgI/wICAv8CAgL/AgMC/xpWFP8k+RH/I/8P/yX4Ev8YWRL/AgIC
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8CAgL/KaMe/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//J/MU/ySIG/8LFgr/AwMD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8WVRH/JfcS/yP/D/8k+hH/G1gW
+        /wICAv8BAQH/AQEB/wYGBv9MTEx4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQM9PT3KAgIC
+        /wEBAf8CAgL/AwQC/x9/Fv8k/hD/I/8P/yjsFv8WORP/AgIC/wEBAf8AAAD/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wICAv8xsiX/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JP0Q/ySuGP8QLQ7/BAQD/wICAv8CAgL/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8CAgL/EzUQ/yfrFf8j/w//JP4Q/x+AFv8FBgX/AgIC/wEBAf8DAwP/OTk5ypqamgMAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAI6OjiEhISHkAwMD/wICAv8CAgL/BwkH/ySpGP8j/w//I/8P
+        /yfjFf8OKwv/AwMD/wMDA/8CAgL/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AgIC/zS4KP8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JP4Q
+        /ynJGv8WRxH/BAUE/wEBAf8BAQH/AgIC/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wEBAf8BAQH/AwMD/w0pCv8n4hb/I/8P/yP/D/8ksxf/BQoF
+        /wMDA/8DAwP/AwMD/x4eHuWJiYkhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AG5ubkEYGBj8AgIC/wEBAf8CAgL/CBIH/ye9Gf8j/w//I/8P/ybfFf8OKAz/AwMD/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8DAwP/MLAk/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//JP4Q/yrRGv8aVBX/BQYF/wQEBP8BAQH/AAAA/wEBAf8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB
+        /wICAv8MJQr/Jt4V/yP/D/8j/w//Jr4Y/wkTCP8CAgL/AgIC/wMDA/8WFhb8fX19WgAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADU1NV0LCwv/AQEB/wICAv8CAgL/ChcJ
+        /yfLGP8j/w//I/8P/yXaFP8OKAz/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8mjh3/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//JPwQ/yXMFv8YVxP/BgcG
+        /wEBAf8CAgL/AgIC/wICAv8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8CAgL/DSUL/yXbFf8j/w//I/8P/yXTFf8MGQv/AwMD
+        /wICAv8CAgL/DAwM/zExMV0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAqKioBVFRUaYICAj/AQEB/wICAv8CAgL/Dx4O/ybYFv8j/w//I/8P/yXfFP8OKwz/AwMD
+        /wICAv8DAwP/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/xpCFv8k/hD/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//JvcT/ye7Gf8ZUBT/BAYE/wICAv8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8CAgL/AgIC
+        /w4qDP8l3RT/I/8P/yP/D/8l3hT/DykN/wMDA/8DAwP/AwMD/wcHB/9KSkqmnp6eBQAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfX19Bi8vL6UFBQX/AQEB
+        /wEBAf8CAgL/EC8N/ynSGv8j/w//I/8P/yfjFv8XOhP/AgIC/wICAv8AAAD/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/BgkG/ye0Gv8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/hD/J+cW/yOcGP8VNhL/BQUF/wICAv8CAgL/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AQEB/wEBAf8CAgL/AgIC/wMDA/8VNxH/J+IW/yP/D/8j/w//JeAU/xEzDv8EBAT/AgIC
+        /wICAv8FBQX/KSkppXBwcAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAR0dHBysrK7AEBAT/AgIC/wICAv8CAgL/Dh0N/ybJF/8j/w//I/8P
+        /yfsFf8XWRH/AwMD/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8CAgL/Cx4J
+        /yXIFv8j/xD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yT+EP8m6xT/I7MW
+        /xhgEv8KFwn/AgIC/wICAv8CAgL/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AAAA/wEBAf8DAwP/F1gR
+        /yfrFf8j/w//I/8P/yTSFf8OLQv/AgIC/wICAv8CAgL/BAQE/zo6OstCQkIHAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAlZWV
+        I0BAQNsEBAT/AgIC/wICAv8CAgL/ChcJ/ya9GP8j/w//I/8P/yX4Ev8gexf/BQoF/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wAAAP8BAQH/BxAG/x91F/8o2hj/KfcW/yP/D/8j/w//I/8P
+        /yP/EP8p+Rb/J+0V/yrIHP8hmBb/F00S/w0bDP8CAwL/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8CAgL/BgwG/x5/Ff8l9xL/I/8P/yP/D/8mvhj/DBkK/wICAv8CAgL/AgIC
+        /wQEBP87OzvbioqKIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmZmZI0JCQtsEBAT/AgIC/wICAv8CAgL/CRII
+        /yOvF/8k/hD/I/8P/yT9EP8mrhr/Dh0M/wICAv8BAQH/AAAA/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AwMD/wkQCP8XLhX/GFIT/xtdFf8bXBX/GVAU/xkxF/8MGgv/BgcG/wQEBP8CAgL/AgIC
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AgIC/w0cDP8mrBn/I/4P
+        /yP/D/8k/hD/Jqwa/wgRB/8CAgL/AgIC/wICAv8EBAT/Ozs7246OjiMAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAl5eXIjs7O8oEBAT/AwMD/wICAv8BAQH/BgoF/x9+Fv8k+hH/I/8P/yP/D/8n2xb/FEoP
+        /wIDAv8AAAD/AQEB/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB
+        /wEBAf8BAQH/AAAA/wICAf8VSRD/JtkW/yP/D/8j/w//JPoR/yCBF/8FBwX/AQEB/wICAv8CAgL/BAQE
+        /zg4OMqQkJAiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASEhIBi8vL6UHBwf/AgIC
+        /wICAv8BAQH/AwQD/xlTE/8m6BX/I/8P/yP/D/8l+BL/IZgW/wwZC/8BAQH/AgIC/wEBAf8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8CAgL/AgIC/wICAv8IFQf/IZYW/yX3Ev8j/w//I/8P
+        /yboFf8ZVRT/AwQD/wICAv8CAgL/AwMD/wcHB/8qKiqlQEBABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAcnJyBVRUVKYLCwv/AwMD/wICAv8CAgL/AwMD/w8qDP8nvhn/JP8Q
+        /yP/D/8j/w//KNwX/xpWFP8EBgT/AgIC/wICAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8AAAD/AQEB/wEBAf8AAAD/AQEB
+        /wMDA/8FCAX/GVMT/yfaF/8j/w//I/8P/yT/EP8mvxj/DioM/wICAv8CAgL/AgIC/wICAv8KCgr/TU1N
+        pnZ2dgUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApaWl
+        BDMzM1sZGRn9AwMD/wICAv8CAgL/AgIC/wYKBv8edBb/JvAU/yP/D/8j/w//JPwQ/ySxF/8RMA//AwMD
+        /wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wAAAP8DAwP/ES8P/yWxGP8k/BD/I/8P/yP/D/8m8xP/HHkU
+        /wUJBf8CAgL/AgIC/wICAv8CAgL/GBgY/TAwMFuenp4EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1tbT0hISHkAQEB/wICAv8DAwP/AgIC
+        /wMDA/8RLQ//KL8a/yT+EP8j/w//I/8P/yb4E/8hoRX/DyIO/wICAv8CAgL/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AgIC/wICAv8CAgL/EB4P
+        /yGaFv8m+BP/I/8P/yP/D/8k/hD/KMAa/xIuD/8DBAP/AgIC/wICAv8CAgL/AwMD/x8fH+RoaGg9AAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAJSUlCA9PT3GCQkJ/wICAv8BAQH/AgIC/wICAv8FBgT/HV4X/yjlF/8j/w//I/8P
+        /yP/D/8o9Rb/J5Md/xMrEf8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wICAv8EBQT/EyoR/yeTHf8o9Bb/I/8P/yP/D/8j/w//KOYX/xxpFf8FBwX/AgIC
+        /wEBAf8CAgL/AgIC/woKCv89PT3GlZWVIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKWlpQRRUVF1Gxsb
+        +AICAv8DAwP/AgIC/wICAv8CAgL/CREI/x99Fv8m7hT/I/8P/yP/D/8j/w//JvkT/yawGf8WTRH/BQoE
+        /wICAv8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8AAAD/AAAA/wABAP8GCgX/FUsQ/yWvGf8m+BP/I/8P
+        /yP/D/8j/w//JvAU/x+GFf8JEQj/AgIC/wICAv8CAgL/AgIC/wICAv8bGxv4Tk5OdZubmwQAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABqamonMTExwgwMDP8DAwP/AgIC/wICAv8CAgL/AgIC
+        /w4dDP8hjBf/KeoX/yP/D/8j/w//I/8P/yT+EP8n3Bf/H4IW/xIvEP8FCAT/AgIC/wEBAf8BAQH/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wEBAf8BAQH/AgIC
+        /wUJBf8TMBD/H4EW/yfcF/8k/hD/I/8P/yP/D/8j/w//KesY/yGTFv8OIg3/AgIC/wICAv8CAgL/AgIC
+        /wICAv8ICAj/Li4uwmlpaScAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAClpaUIWlpadCUlJfMFBQX/AgIC/wICAv8CAgL/AgIC/wMDA/8PGw7/In8Z/yfhFv8k/hD/I/8P
+        /yP/D/8j/w//JvoT/ynOGv8igRr/FT0R/wgPB/8DAwP/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wICAv8EBAT/CRAI/xQ8EP8ifxr/Ks0b/yb6E/8j/w//I/8P/yP/D/8k/hD/J+IW
+        /yF/Gf8PGw7/BQUF/wEBAf8BAQH/AgIC/wICAv8EBAT/IyMj81hYWHSbm5sIAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdHR0HTc3N5ERERHxAgIC
+        /wICAv8CAgL/AQEB/wEBAf8BAQH/BxAG/xphFP8muRj/JfIT/yP/D/8j/w//I/8P/yP/D/8l/RH/KN8X
+        /yitG/8ddxX/ED0M/wsbCf8FCgX/AQEB/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AwcD/wkZCP8PPAv/InMb/yisG/8o3hf/Jf0R
+        /yP/D/8j/w//I/8P/yP/D/8l9BL/Jb4X/xphE/8JEgj/AgIC/wICAv8DAwP/AgIC/wICAv8CAgL/ERER
+        8TU1NZFubm4dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG5ubi8/Pz+2FhYW/AMDA/8CAgL/AQEB/wEBAf8BAQH/AwMD
+        /wQEBP8QKg7/H3wW/yjMGf8n9hX/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//KPEV/yHXEP8mtRn/IJAW
+        /yNwHP8aWRT/F0wS/xcuFf8SJhD/DiAN/w0dC/8NHQv/DiAM/xImEP8YLhb/GUQV/xpZFP8jbhz/IJAW
+        /yi0G/8i1BL/KPEW/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yf1FP8ozRn/H30X/xArDf8DBgP/AQEB
+        /wICAv8CAgL/AgIC/wICAv8CAgL/FBQU/D09PbZvb28vAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAABvb29BOjo6tBkZGf4DAwP/AQEB/wICAv8CAgL/AQEB/wEBAf8DAwP/BgoG/xMqEP8dbBb/JrMZ
+        /ybkFf8m+xP/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/xD/KvoX/yr3GP8q9Bf/KvMX
+        /yrzF/8q9Bf/KvcY/yr6F/8l/hH/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8m+xP/J+UW
+        /yayGf8dbBb/EysR/wYKBv8CAgL/AQEB/wEBAf8BAQH/AgIC/wICAv8CAgL/FxcX/jY2NrRwcHBBAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYmJiJjk5OZcdHR3wBAQE
+        /wICAv8CAgL/AQEB/wICAv8CAgL/AgIC/wEBAf8BAQH/ChMJ/xI3D/8dZxb/IKAV/ybKF/8m5hX/KPcV
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8o9xX/JuYV/ybMF/8hoRX/HmkX/xI3D/8KFAr/AAAA/wAAAP8BAQH/AQEB/wICAv8CAgL/AQEB
+        /wEBAf8EBAT/Gxsb8Dg4OJeBgYFBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH5+fhdJSUljLi4uzBISEv8CAgL/AgIC/wICAv8CAgL/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8CAgL/BAcD/wsUCv8TKxD/FUkR/yBeGv8pcyL/I5IZ/yOkGP8nrBv/KrIe
+        /yu0Hv8rtB7/KrId/yesG/8joxj/I5IZ/ylzIv8gXxv/FUkR/xIrEP8KFAn/BgkG/wMDA/8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wICAv8TExP/Li4uzEVFRWN6enoXAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAACHh4cDdnZ2P0tLS5QuLi7fERER/wMDA/8BAQH/AQEB/wEBAf8AAAD/AAAA/wEBAf8BAQH/AQEB
+        /wEBAf8AAAD/AQEB/wICAv8CAgL/AAAA/wEBAf8CAgL/AgIC/wMDA/8CAgL/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8CAgL/AQEB/wEBAf8BAQH/AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/BAQE/xISEv8vLy/fS0tL
+        lHd3dz+FhYUDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQpkZGQkSkpK
+        eS0tLbklJSX6CwsL/wICAv8BAQH/AQEB/wEBAf8BAQH/AQEB/wAAAP8BAQH/AgIC/wEBAf8BAQH/AQEB
+        /wEBAf8AAAD/AAAA/wEBAf8BAQH/AAAA/wEBAf8BAQH/AgIC/wICAv8CAgL/AgIC/wEBAf8BAQH/AQEB
+        /wEBAf8JCQn/JSUl+isrK7lISEh5ZGRkJJubmwoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH5+fgyAgIBBV1dXez8/P7MwMDDoISEh
+        /wsLC/8GBgb/AgIC/wICAv8CAgL/AgIC/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8CAgL/AwMD/wcHB/8NDQ3/IiIi/zExMeg9PT2zVVVVe4GBgUF/f38MAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJmZmQWNjY0NkpKSWWtra1laWlqBWlparDk5OaweHh6sGBgY
+        rENDQ/lDQ0P/QUFB/0FBQf9CQkL/RUVF/ygoKMEfHx+sOTk5rFpaWqxbW1uBa2trWZGRkVmIiIgNmZmZ
+        BQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD////////wAAAH////////////////AAAAAP//////
+        ////////8AAAAAAP/////////////4AAAAAAAf////////////4AAAAAAAB////////////4AAAAAAAA
+        H///////////4AAAAAAAAAf//////////4AAAAAAAAAB//////////4AAAAAAAAAAH/////////4AAAA
+        AAAAAAAf////////8AAAAAAAAAAAD////////8AAAAAAAAAAAAP///////+AAAAAAAAAAAAB////////
+        AAAAAAAAAAAAAP///////AAAAAAAAAAAAAA///////gAAAAAAAAAAAAAH//////wAAAAAAAAAAAAAA//
+        ////4AAAAAAAAAAAAAAH/////8AAAAAAAAAAAAAAA/////+AAAAAAAAAAAAAAAH/////AAAAAAAAAAAA
+        AAAA/////gAAAAAAAAAAAAAAAH////wAAAAAAAAAAAAAAAA////8AAAAAAAAAAAAAAAAP///+AAAAAAA
+        AAAAAAAAAB////AAAAAAAAAAAAAAAAAP///gAAAAAAAAAAAAAAAAB///4AAAAAAAAAAAAAAAAAf//8AA
+        AAAAAAAAAAAAAAAD//+AAAAAAAAAAAAAAAAAAf//gAAAAAAAAAAAAAAAAAH//wAAAAAAAAAAAAAAAAAA
+        //8AAAAAAAAAAAAAAAAAAP/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAA
+        AAAAAD/8AAAAAAAAAAAAAAAAAAA/+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAA
+        AAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAA
+        AAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAA
+        H/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAA
+        AAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAA
+        AAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAA
+        AAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAA
+        H/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAA
+        AAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAA
+        AAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAA
+        AAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAA
+        H/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAA
+        AAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAA
+        AAAAAAAAAAAf+AAAAAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf+AAA
+        AAAAAAAAAAAAAAAAH/gAAAAAAAAAAAAAAAAAAB/4AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAAAAAAAAA
+        P/wAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAAAAAAAAB//gAAAAAAAAAAAAAAAAAAf/8AAAAAAAAAAAAA
+        AAAAAP//AAAAAAAAAAAAAAAAAAD//4AAAAAAAAAAAAAAAAAB//+AAAAAAAAAAAAAAAAAAf//wAAAAAAA
+        AAAAAAAAAAP//+AAAAAAAAAAAAAAAAAH///gAAAAAAAAAAAAAAAAB///8AAAAAAAAAAAAAAAAA////gA
+        AAAAAAAAAAAAAAAf///8AAAAAAAAAAAAAAAAP////AAAAAAAAAAAAAAAAD////4AAAAAAAAAAAAAAAB/
+        ////AAAAAAAAAAAAAAAA/////4AAAAAAAAAAAAAAAf/////AAAAAAAAAAAAAAAP/////4AAAAAAAAAAA
+        AAAH//////AAAAAAAAAAAAAAD//////4AAAAAAAAAAAAAB///////AAAAAAAAAAAAAA///////8AAAAA
+        AAAAAAAA////////gAAAAAAAAAAAAf///////8AAAAAAAAAAAAP////////wAAAAAAAAAAAP////////
+        +AAAAAAAAAAAH/////////4AAAAAAAAAAH//////////gAAAAAAAAAH//////////+AAAAAAAAAH////
+        ///////4AAAAAAAAH////////////gAAAAAAAH////////////+AAAAAAAH/////////////8AAAAAAP
+        //////////////8AAAAA////////////////8AAAD////////ygAAABAAAAAgAAAAAEAIAAAAAAAAEAA
+        AMMOAADDDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1dXUTQ0ND
+        SygoKH4lJSWsJSUl0REREdYaGhrvHh4e/x4eHv8aGhrvEBAQ1iUlJdElJSWsLi4uhEFBQUx2dnYTAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgoKADU1NT
+        NSMjI4MUFBTMCwsL/gEBAf8BAQH/AgIC/wEBAf8CAgL/AQEB/wEBAf8CAgL/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8BAQH/CgoK/hMTE8wiIiKDUFBQNZycnAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AH19fRAqKipoHBwc1QYGBv8BAQH/AQEB/wMGA/8NLAr/FF4N/xyIEv8gqxP/JcIX/yXWFf8n2xf/J9sX
+        /yXWFf8lwhf/IKsT/xyJEv8UXw3/DS0L/wMGA/8BAQH/AgIC/wUFBf8bGxvVKSkpaHh4eBAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAfHx8EC0tLX0RERHsAgIC/wICAv8GDgb/FFYO/x+kE/8l5xT/I/8P/yT7Ef8l3xT/I7wV
+        /x6mEv8ejxT/G4cR/xqHEf8fjxT/H6YT/yO8Ff8k3xT/JfsR/yP/D/8l5xT/H6UT/xVYD/8HDwb/AQEB
+        /wICAv8RERHsLCwsfXp6ehAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAACZmZkCNzc3YRAQEOMCAgL/AgIC/w0oCv8blRD/JOwS/yT+EP8k0hT/GoYR
+        /xRID/8GFQX/AgIC/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wYTBf8TRw7/GoUQ
+        /yTRFP8l/RH/JO0S/xyWEP8NKAr/AwMD/wICAv8PDw/jNTU1YZOTkwIAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLS0seGhoauAMDA/8CAgL/CyoI/x6pEf8l+hH/JOkT
+        /xmJD/8MKwn/AQIB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8CAgH/DCgK/xmHD/8k6BL/JfoR/x6qEv8LKgj/AgIC/wQEBP8ZGRm4R0dH
+        HgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2NjZQDw8P8QICAv8GDQX/G40R
+        /yT5Ef8j5BL/GGkR/wYLBf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/BQsE/xhoEP8j4xL/JPkR
+        /xyNEf8GDgb/AgIC/w8PD/EzMzNQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHNzcwEoKCiBBwcH
+        /wICAv8QPgv/ItsS/yX0Ev8afxH/Bg0F/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wEBAf8BAQH/Bg0F/xl+EP8k9BL/It0R/xBAC/8CAgL/BgYG/yYmJoFtbW0BAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AIqKigkgICCdBAQE/wQFA/8ZdRD/JPkR/yHGEv8LKgj/AgIC/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AAAA
+        /wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/CycJ/yDEEf8k+hH/GHYQ/wMEA/8DAwP/Hh4e
+        nYSEhAkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAI2NjQkrKyu2AwMD/wUJBf8doRL/JP0Q/xuKEf8ECAT/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB
+        /wEBAf8FCQX/DzoL/xl2Ef8eoBP/ILAT/x+iE/8VXg7/BAgD/wAAAP8AAAD/AAAA/wAAAP8EBwP/G4kR
+        /yT9EP8eohL/BAkE/wICAv8pKSm2h4eHCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGtrawEhISGdAwMD/wYPBf8fuBH/JPgR/xVeDv8CAgL/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8BAQH/AgIC/w8zDP8clBH/JOcS/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yCuEv8CAwL/AAAA
+        /wAAAP8AAAD/AAAA/wECAf8VWw//JPgR/x+6Ef8HEAb/AwMD/x4eHp1ra2sBAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKCiCAwMD/wUIBP8ftxH/JPYQ
+        /xBLC/8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AAAA/wEBAf8CAgL/EUoM/yLBE/8k/RD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//ETwO/wAAAP8BAQH/AAAA/wAAAP8AAAD/AQEB/xBKCv8j9RD/H7oR/wUJBP8DAwP/JiYm
+        ggAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ODhRCAgI
+        /gMEAv8doRH/JPgR/xBMC/8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wICAv8RRQz/IscT/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/xdrD/8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8BAQH/EEoK
+        /yT4Ef8eohL/AwQD/wcHB/48PDxYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAABOTk4fEBAQ8gICAv8YdhD/JP0Q/xVeDv8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wwnCf8fshL/I/4P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8XYBD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wICAv8WXA//JP0Q/xl4EP8CAgL/Dw8P8klJSR8AAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAACVlZUCGRkZuQEBAf8PPgv/JPkR/xuKEf8CAgL/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/BAoD/xl/D/8k9RH/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//ETUO
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xuIEf8k+hH/EEEL/wICAv8eHh7Aj4+P
+        AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANzc3YwMDA/8GDQX/I9wS/yHFEv8FCAT/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8CAgL/DzwL
+        /yPTE/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//JOcS/wUIBP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8FCAT/IMQR
+        /yPeEf8GEAX/AwMD/zMzM2MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfHx8ERAQEOQCAgL/HI4R
+        /yX0Ev8MKAn/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8FCQT/GoUQ/yT6EP8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8l/BL/JfMT/yb5E/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/xuUEP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wsmCP8k8xL/HJAS/wEBAf8PDw/keHh4EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AC0tLX8CAgL/DCkJ/yT6Ef8ZgA//AgIC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8LKAj/IcoS/yP/D/8j/w//I/8P/yP/D/8l9xL/ILcS/xdxD/8OOAr/BRIE
+        /wMIA/8FDQT/EEMM/yDIEf8j/w//I/8P/yP/D/8j/w//I/8P/yT6Ef8MKQn/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/GXwQ/yT6Ef8LKQn/AgIC/ysqK38AAAAAAAAA
+        AAAAAAAAAAAAAAAAAFtbWwsRERHtAgIC/x6rEf8j5BH/BQ0F/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8UVw7/JPAR/yP/D/8j/w//I/8P/yPNFP8WbA7/CRYH
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GDwb/JOUS/yP/D/8j/w//I/8P/yP/D/8l6xP/CBoG
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wUMBP8j4hL/H6wS
+        /wICAv8QEBDtdnZ2EQAAAAAAAAAAAAAAAAAAAAAUFBRAAgIC/w0pC/8k+xH/F2gQ/wAAAP8BAQH/AQEB
+        /wIDAv8SPA7/F2oP/xhdEf8RNA7/BAgE/wEBAf8BAQH/AQEB/wQGBP8ckBH/JP4Q/yP/D/8k/RD/H7US
+        /xE+Df8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/x6ZEv8j/w//I/8P
+        /yP/D/8k/RD/I/4P/yHGEv8FCQT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/F2YQ/yX7Ef8NKQv/AgIC/xMTE0AAAAAAAAAAAAAAAAAAAAAAAQEBQAICAv8blhD/JOgS
+        /wYLBf8BAQH/AQEB/wMHA/8frhL/I/8P/yP/D/8j/w//I/8P/yXnE/8akhD/CycJ/wgYBv8gvRL/I/8P
+        /yT9EP8gsxP/DTQJ/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8ZjQ7/I/8P/yP/D/8j/w//G4QS/yC+Ef8j/w//HZYS/wECAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUJBP8k5xP/HJkR/wEBAf8BAQFAAAAAAAAAAAAAAAAAAAAA
+        AAAAAEAGDgb/JO0S/xmJD/8CAgL/AAAA/wEBAf8UXg7/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yX6Ef8l6RP/I/8P/yDDEv8QPAz/AQEB/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/IKQU/yP/D/8j/w//ItYS/wUMBf8POAv/JPsQ/yP+EP8VXQ//AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/GIUO/yTuEv8GDwb/AgIC
+        QAAAAAAAAAAAAAAAAAAAAAAAAABAFVgO/yT9EP8MKgn/AAAA/wAAAP8AAAD/HqMS/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yT9EP8chxL/BgwF/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AwQC/ybfFf8j/w//JPoR/w89C/8AAAD/AQEB
+        /yCpFP8j/w//JPES/wsqCP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wwnCf8l/RH/FlsP/wICAkAAAAAAAAAAAAAAAAAAAAAAAwMDQB+mE/8k0RX/AgMC/wAAAP8AAAD/AAAA
+        /x+vEv8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yLXEf8PPQv/AgIC
+        /wICAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/w84C/8j/hD/I/8P
+        /xqCEf8CAgL/AAAA/wAAAP8MLgn/JPsR/yP/D/8izRL/BQoE/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8CAgL/Jc0V/x+nE/8DAwNAAAAAAAAAAAAAAAAAAAAAAAoVCUAl6BP/GocQ
+        /wEBAf8AAAD/AAAA/wAAAP8goBT/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//JPoQ/xqBEf8EBQP/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8cnRD/I/8P/yG9Ev8DBQP/AQEB/wAAAP8AAAD/AQEB/yCtE/8j/w//I/8P/xuNEf8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xqDEP8m6RT/DBgLQAAAAAAAAAAAAAAA
+        AAAAAAAsoiFAJP4Q/xJHDf8AAAD/AAAA/wAAAP8AAAD/GHYQ/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//Ir4T/wkaCP8BAQH/AQEB/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8KHwn/JPUR/yPkEf8JGgj/AQEB/wAAAP8AAAD/AAAA/wEBAf8QOwz/I/8P
+        /yP/D/8k+xD/ED8M/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8SRA7/JP4Q
+        /y6rI0AAAAAAAAAAAAAAAAAAAAAAI/8PQCT7Ef8GEwX/AAAA/wAAAP8AAAD/AQEB/w87C/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yTmE/8dnBL/GY0O/yClFP8m3xX/I/4P/yP/D/8j5RH/DjgL
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/HZcS/yT0Ef8ONwr/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQIB/yLJEv8j/w//I/8P/yPZE/8FDQT/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/BRIE/yT7Ef8j/w9AAAAAAAAAAAAAAAAAAAAAACP/D0Ak3xP/AgIC/wAAAP8AAAD/AAAA
+        /wAAAP8ECAT/I+cS/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yHIEv8HEAb/AQEB/wEBAf8BAQH/AwQD
+        /xA5DP8cnRD/JPUR/yT1Ef8TWw3/AQEB/wEBAf8DBwP/Dy8M/w8vDP8DCAP/AgMC/x+lE/8UWA3/AQEB
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8VZw7/I/8P/yP/D/8j/w//GYcP/wEBAf8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8k3BP/I/8PQAAAAAAAAAAAAAAAAAAAAAAj/w9AI7oV
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/xuUD/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8QRQv/AQEB
+        /wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wofCf8dlxL/IrAV/wMDA/8WYg//JeUT/yP/D/8j/w//JeUT
+        /xZiD/8CAgL/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CBQH/yX2Ev8j/w//I/8P
+        /yT4Ef8NLQr/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/IrkV/yP/D0AAAAAAAAAA
+        AAAAAAAAAAAAI/8PQB6mEf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8PMwv/JP0Q/yP/D/8j/w//I/8P
+        /yP/D/8m+hL/BQ4E/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wMEA/8VYA7/JP0Q
+        /yP/D/8j/w//I/8P/yP/D/8k/RD/FmIP/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8fsxL/I/8P/yP/D/8j/w//ILcT/wIDAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /x6jEv8j/w9AAAAAAAAAAAAAAAAAAAAAACP/D0AgjxX/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwMD
+        /yG/E/8j/w//I/8P/yP/D/8j/w//JvQT/wMIA/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8DBwP/JOQT/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yXlE/8DBwL/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/F2wP/yP/D/8j/w//I/8P/yP/D/8RSAz/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8eixT/I/8PQAAAAAAAAAAAAAAAAAAAAAAj/w9AG4YR/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8RSgz/I/8P/yP/D/8j/w//I/8P/yX8Ev8GEgX/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/Di4L/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//Di8L
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w42Cv8j/w//I/8P/yP/D/8j/w//I8wU
+        /wECAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/GoQR/yP/D0AAAAAAAAAAAAAAAAAAAAAAI/8P
+        QBuGEv8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/yLIE/8j/w//I/8P/yP/D/8j/w//DzoL
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/w4uC/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/w8vDP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8FDwX/JvsT
+        /yP/D/8j/w//I/8P/yP/D/8STw3/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/xqEEP8j/w9AAAAA
+        AAAAAAAAAAAAAAAAACP/D0AgjxX/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8RRQz/I/4P
+        /yP/D/8j/w//I/8P/xhxEP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8DBwP/JOMT
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yXkE/8DBwL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AwcD/ybyE/8j/w//I/8P/yP/D/8j/w//IsYT/wIDAv8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8ejBT/I/8PQAAAAAAAAAAAAAAAAAAAAAAj/w9AH6UT/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AgIC/x+yEf8j/w//I/8P/yP/D/8gtxL/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/xVfDv8k/RD/I/8P/yP/D/8j/w//I/8P/yT9EP8WYQ//AwQD/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wUNBP8m+BP/I/8P/yP/D/8j/w//I/8P/yP+EP8QOgz/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/IKEU/yP/D0AAAAAAAAAAAAAAAAAAAAAAI/8PQCK8FP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8LJwn/JPUR/yP/D/8j/w//JfgS/wgWB/8AAAD/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8DAwP/FV0P/yXjFP8j/w//I/8P/yXjE/8VYQ7/AgIC
+        /yCnE/8doRH/DCMK/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8QRQv/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//HJoQ/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/yK5Ff8j/w9AAAAAAAAAAAAAAAAAAAAA
+        ACP/D0Ak3xP/AQIB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xh/D/8j/w//I/8P
+        /yP/D/8WbQ7/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8SVQz/IrEV/wMFA/8DBgP/DiwM
+        /w8uDP8DBwP/AQEB/wEBAf8SUAz/JPMR/yX3Ef8ephH/D0EL/wMFA/8BAQH/AgIC/wEBAf8HFQb/IMwR
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yTqEv8GCwX/AAAA/wAAAP8AAAD/AAAA/wECAf8j3hP/I/8P
+        QAAAAAAAAAAAAAAAAAAAAAAj/w9AJPsR/wYUBf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8ECQT/I9IU/yP/D/8j/w//I88T/wECAf8BAQH/AAAA/wAAAP8AAAD/AQEB/wAAAP8NNAr/JPQR
+        /x6eEv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/w0xCv8j3xL/I/8P/yP/D/8m5hX/Ia0U
+        /xyUEf8foRP/JegT/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//ED8L/wAAAP8AAAD/AAAA
+        /wAAAP8GEQX/JfsS/yP/D0AAAAAAAAAAAAAAAAAAAAAALKEhQCT+EP8SRw3/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/w85C/8k+hD/I/8P/yP/D/8SPw7/AQEB/wAAAP8AAAD/AAAA
+        /wEBAf8IFwf/I+AS/yT3Ef8MIwr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/BxUG
+        /yC3Ev8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /xl5Ef8AAAD/AAAA/wEBAf8BAQH/E0UP/yT+EP8wrSRAAAAAAAAAAAAAAAAAAAAAAAsWCkAl5xP/GocQ
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/GoMQ/yP/D/8j/w//ILUS
+        /wEBAf8AAAD/AAAA/wAAAP8DBAL/IbkT/yP/D/8dpBH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8DBAL/GXgR/yT3Ef8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8fpxL/AAAA/wAAAP8BAQH/AQEB/xqDEf8m6RT/DBgLQAAAAAAAAAAAAAAA
+        AAAAAAACAgJAHqUS/yXSFf8CAwL/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wQIBP8hyRH/I/8P/yT9EP8NNAn/AAAA/wEBAf8CAgL/GXwQ/yP/D/8j/g//Dz4L/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8ONQr/ItES/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//ILIT/wAAAP8AAAD/AQEB/wIDAv8kzxT/H6cT
+        /wICAkAAAAAAAAAAAAAAAAAAAAAAAgICQBRXDv8l/RH/DCgK/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/CiQI/yTuEv8j/w//ILMS/wEBAf8BAQH/DjcK/yT4Ef8j/w//JuUU
+        /wMFA/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/AQEB
+        /wQJBP8aexL/JPwR/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/x+kE/8AAAD/AAAA
+        /wEBAf8MKAn/JP0Q/xVaDv8CAgJAAAAAAAAAAAAAAAAAAAAAAAEBAUAGDQX/JOwS/xmKD/8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8UVA7/JP4Q/yT9EP8QPQz/BQkE
+        /yLTEv8j/w//I/8P/yCrFP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        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
+        /wICAv8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xAuDv8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8l9RL/GYQP/wQLA/8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/G4kR
+        /yT5Ef8PPwv/AgIC/x4eHsCUlJQCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUFBQ
+        HxAQEPICAgL/GHUP/yT9EP8WYA//AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8YVhL/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP+D/8gsxL/DSkL
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /wEBAf8BAQH/FV4O/yT9EP8ZdhD/AgIC/w8PD/JNTU0fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAA7OztRCAgI/gMDA/8dnhL/JPgR/xFNC/8CAgL/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/GlsU/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yPJFP8SRg3/AgIC/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8BAQH/EEwL/yT4Ef8doRL/AwQD/wcHB/5BQUFYAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACoqKoIDAwP/BAcE/yCwE/8j9hD/EU0M
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AQEB/xE1Df8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8k/RD/IsET/xFLDP8CAwL/AQEB/wEBAf8BAQH/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8CAgL/EUwL/yT2EP8fthH/BQkF/wMDA/8oKCiCAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB9fX0BHBwc
+        lwICAv8FDQX/IK4T/yT4Ef8WYA//AgIC/wEBAf8BAQH/AQEB/wEBAf8CAwL/HqYS/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yTnEv8blxD/DzUL/wMDAv8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8CAgL/Fl8P/yT4Ef8fuBH/Bg8F
+        /wICAv8gICCdcHBwAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAJWVlQkwMDC2AgIC/wQHBP8dnxL/JP0Q/xyMEv8FCAT/AAAA/wEBAf8BAQH/AQEB
+        /wIFAv8VWA//H54T/x+uEv8gnhT/GXUQ/xA7DP8FCAT/AQEB/wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8FCAT/G40R
+        /yT9EP8enhL/BQgE/wICAv8sLCy2ioqKCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAl5eXCSIiIp0DAwP/AwQD/xh0D/8k+RD/IccR
+        /wwtCf8BAQH/AQEB/wAAAP8AAAD/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB/wEBAf8BAQH/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        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
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoKChKBgYG+Q4+Cf8j7RH/EVkL/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/EEgL/x+6Ef8k+hD/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8k+xD/CiMI/wAAAP8AAAD/AAAA/wEBAf8RWAv/I+0R/w5ACf8FBQX5Jycn
+        SgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4+PigLCwvuCisH/yPmEv8RWQv/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQIB/w5BCf8hxRL/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//EVAL/wEBAf8AAAD/AAAA/wAAAP8BAQH/EVgL
+        /yPmEv8KLAf/DAwM8T09PSkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVFRUBhISEsYFDwT/IdQR
+        /xZ2Df8BAgH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8HHQX/HacQ
+        /yP8EP8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//EDkM/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AgIC/xZ0Df8h1RH/BhAF/xEREcZpaWkIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIyMj
+        dQICAv8bmA//Ha4Q/wIEAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AwQC
+        /xVoDf8j7hD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8k8RH/BQsF
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIEAv8drRD/G5sP/wIDAv8jIyN3AAAAAAAAAAAAAAAAAAAA
+        AAAAAABUVFQZCgoK8A9CCv8k5hL/BxcF/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8IHgb/HrgQ/yP/D/8j/w//I/8P/yP9EP8j6hH/IMcR/x++Ef8i4hH/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8boQ//AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8GFgX/JOYS/w9DCv8JCQnwUlFS
+        GQAAAAAAAAAAAAAAAAAAAAAeHh6PAwYD/yDJEf8UaQz/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AQEB/xBPC/8i6BD/I/8P/yP+D/8i2BH/GH8O/wwxCP8DBgL/AAAA/wAAAP8DBgL/GIUO
+        /yP/D/8j/w//I/8P/yP/D/8PPwv/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/FGcM
+        /yDJEP8DBgP/HBwcjwAAAAAAAAAAAAAAAAAAAAAICAjnEU0M/yLXEv8DCAL/AQEB/wEBAf8LIwn/EU8M
+        /xA4DP8FCwX/AQEB/wEBAf8CBAL/GIUP/yT7EP8j/g//H7gR/w9FCv8DBQL/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/BQ0E/yTvEv8j/w//I/8P/yT9EP8euhD/AwUD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AwcC/yLVEv8RTgz/CgoK6wAAAAAAAAAAAAAAAAAAAAACAgLvH70Q/xRpDf8BAQH/AQEB
+        /xNlDP8k+xD/I/8P/yP/D/8k8RH/G58P/w89C/8etBD/I/0P/x63Ef8MNwj/AQEB/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AwUC/yPmEf8j/w//I+8R/xZfD/8j/BD/GYoP/wECAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xRmDP8fvxH/AQEB7wAAAAAAAAAAAAAAAAAAAAALJgnvJOwS
+        /wUSBP8AAAD/AgUC/yTfE/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8k/hD/FmQP/wICAv8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/CBgG/yX4Ef8j/w//FWoN/wECAf8fsRH/I/sQ
+        /xFRC/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wURA/8k6xL/DCgJ7wAAAAAAAAAAAAAA
+        AAAAAAAYew/vHqgR/wEBAf8AAAD/BAwD/yX3Ev8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I+8R
+        /xRrDP8CBAL/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/E14M/yP/D/8fthH/AgQC
+        /wAAAP8MMgj/JP0Q/yPqEP8IHwb/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ephL/GHwP
+        7wAAAAAAAAAAAAAAAAAAAAAhxhLvE10M/wAAAP8AAAD/AwgD/yXrE/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8ftRH/BxgG/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8CAgL/H8MR
+        /yLgEf8HGAb/AQEB/wAAAP8BAQH/H7MR/yP/D/8fvRD/AgQC/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8TWgz/IcgS7wAAAAAAAAAAAAAAAAAAAAAl+BLvCCEG/wAAAP8AAAD/AQEB/yDCEf8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8k8BH/I+cR/yX4Ef8j/w//IuER/w08Cf8BAQH/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8PQQr/JPMR/w07Cf8BAQH/AAAA/wAAAP8AAAD/D0MK/yP+D/8j/w//Fm0O/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8IHgb/JfkS7wAAAAAAAAAAAAAAAAAAAAAk6hLvAgMC/wAAAP8AAAD/AAAA
+        /xZ9Df8j/w//I/8P/yP/D/8j/w//I/8P/xmFD/8FDgT/AwYD/wgZB/8TXwz/IMQR/yT0Ef8TXwz/AQEB
+        /wECAf8JHQj/CR0I/wECAf8Zgw//E14M/wEBAf8AAAD/AAAA/wAAAP8AAAD/AgQC/yHVEf8j/w//I/AQ
+        /wggBv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAgH/JOgS7wAAAAAAAAAAAAAAAAAAAAAixRPvAQEB
+        /wAAAP8AAAD/AAAA/wkoB/8k+hD/I/8P/yP/D/8j/w//IuQQ/wMHA/8BAQH/AQEB/wEBAf8BAQH/AgIC
+        /w9BCv8aiRD/CR4H/yDBEv8k/hD/JP4Q/yDCEv8IHwb/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /xd9Dv8j/w//I/8P/x2tEP8CAgL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/IsQT7wAAAAAAAAAAAAAA
+        AAAAAAAgrxPvAQEB/wAAAP8AAAD/AAAA/wECAf8fuRH/I/8P/yP/D/8j/w//H78R/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8CAgL/IMAR/yP/D/8j/w//I/8P/yP/D/8gwhH/AQIB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wsuCP8j/RD/I/8P/yP9EP8PRAr/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/H6sT
+        7wAAAAAAAAAAAAAAAAAAAAAdnxLvAQEB/wAAAP8AAAD/AAAA/wEBAf8PSAr/I/8P/yP/D/8j/w//IMcR
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JHQf/JP4Q/yP/D/8j/w//I/8P/yP/D/8j/hD/CR0H
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIGAv8j6BH/I/8P/yP/D/8hyBL/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/HJ4R7wAAAAAAAAAAAAAAAAAAAAAdoBLvAQEB/wAAAP8AAAD/AAAA/wAAAP8BAQH/IMUR
+        /yP/D/8j/w//JOoS/wMHA/8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8JHQj/I/4Q/yP/D/8j/w//I/8P
+        /yP/D/8j/hD/CR0H/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8gxRH/I/8P/yP/D/8j/w//EEsL
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/HJ0Q7wAAAAAAAAAAAAAAAAAAAAAgrRPvAQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/DkEJ/yP8EP8j/w//I/0Q/wwxCf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAgH/IMAR
+        /yP/D/8j/w//I/8P/yP/D/8gwRL/AQIB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8fvRH/I/8P
+        /yP/D/8j/w//IL8R/wICAv8AAAD/AAAA/wAAAP8AAAD/IKoU7wAAAAAAAAAAAAAAAAAAAAAhxhLvAQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/x2nEP8j/w//I/8P/xh/D/8AAAD/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/CR4H/yC+Ev8k/hD/JP4Q/yDBEv8IHgb/GoYQ/xBGC/8CAgL/AQEB/wEBAf8BAQH/AQEB
+        /wMHA/8i4xH/I/8P/yP/D/8j/w//I/sQ/wosB/8AAAD/AAAA/wAAAP8AAAD/IsQT7wAAAAAAAAAAAAAA
+        AAAAAAAk6hLvAQMB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wcdBf8j7RH/I/8P/yLZEf8DBgL/AQEB
+        /wAAAP8AAAD/AAAA/wEBAf8SXAv/G4wR/wECAf8JGwf/CRwH/wECAf8BAQH/ElgL/yTyEf8hyRH/E2UM
+        /wkdB/8ECAT/BhAF/xmLDv8j/w//I/8P/yP/D/8j/w//I/8P/xeBDv8BAQH/AAAA/wAAAP8BAgH/JOkS
+        7wAAAAAAAAAAAAAAAAAAAAAl+BHvCSEG/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8VZg3/I/8P
+        /yP+D/8PRgr/AQEB/wAAAP8AAAD/AQEB/w04Cf8j8xH/EEUM/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB
+        /ww3CP8i3BH/I/8P/yT6Ef8k6hL/JfIS/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yDEEv8BAQH/AAAA
+        /wEBAf8JHwf/JfkS7wAAAAAAAAAAAAAAAAAAAAAhxhLvE10M/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8CAwL/HrcR/yP/D/8fuBH/AQEB/wAAAP8AAAD/BhcF/yLeEf8gyBH/AgIC/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8GFgX/Hq8R/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P
+        /yXuE/8DCQP/AAAA/wEBAf8TWw3/IscS7wAAAAAAAAAAAAAAAAAAAAAYew/vHqgR/wEBAf8BAQH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/Bx0F/yLnEP8j/g//DDcJ/wEBAf8CAwL/HrIQ/yP/D/8TYwz/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AgMC/xRkDP8j7BH/I/8P/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yb4Ev8EDQP/AAAA/wEBAf8dqBH/GHwP7wAAAAAAAAAAAAAAAAAAAAAKJQjvJOsS
+        /wUSBP8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/xBLC/8j+hD/H7gR/wICAf8UZgz/I/8P
+        /yT6Ef8JHAf/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/AQEB/wICAv8VXQ//JP0Q
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yPfEv8CBQL/AAAA/wURBP8k7BL/CycJ7wAAAAAAAAAAAAAA
+        AAAAAAACAgLvH7wQ/xRpDf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8YhA7/I/0Q
+        /xVhD/8j7BH/I/8P/yTpEv8DBwP/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/wEBAf8BAQH/DDcI
+        /x61Ef8j/RD/HrgQ/w47Cv8amg//I+4R/yP/D/8j/w//JPoQ/xRiDP8BAQH/AQEB/xRnDf8fvhD/AgIC
+        7wAAAAAAAAAAAAAAAAAAAAAICAjnEUwM/yLXEv8DCQP/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8DBAP/HrQQ/yT9EP8j/w//I/8P/yXyEv8GDwX/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgUC
+        /w9FCv8etxD/I/4P/yP7EP8Zhw//AwUD/wEBAf8BAQH/BAgE/w8zDP8UQw//CiEI/wEBAf8BAQH/AwgD
+        /yLVEv8RTQz/CgoK6wAAAAAAAAAAAAAAAAAAAAAfHx+PAgUC/yDHEf8Uagz/AQEB/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/DjsK/yP/D/8j/w//I/8P/yP/D/8ZjQ//BAgD/wAAAP8AAAD/AwYD
+        /wwxCf8Xfg7/ItcS/yP+D/8j/w//IukQ/xFQC/8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/FGcN/yDKEP8DBgP/Hh4ejwAAAAAAAAAAAAAAAAAAAABOTk4XCAgI7g5ACv8k5xL/BxkF
+        /wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/GpwO/yP/D/8j/w//I/8P/yP/D/8j/w//IuUR
+        /yDAEf8gyBH/JOsS/yP9EP8j/w//I/8P/yP/D/8fuRD/CB4F/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8HFwX/JOcS/w9CCv8KCgrwVFRUGQAAAAAAAAAAAAAAAAAAAAAAAAAAJiYm
+        dQICAv8blhD/Hq8Q/wIEAv8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8ECQT/JO8R/yP/D/8j/w//I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I+8Q/xVpDf8CBAL/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wIDAv8drhD/G5gP/wIDAv8lJSV3AAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAX19fBhQUFMYFDwT/IdMR/xd6Df8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8QNAz/I/8P
+        /yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP8EP8eqRH/CB8G/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AQEB/xZ1Df8i1BH/BQ8E/xEREcZubm4IAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8/PygLCwvuCykI/yPmEv8SWwz/AgIC/wAAAP8AAAD/AAAA
+        /wAAAP8URA//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//IcUS/w9CCv8CAgL/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8BAQH/ElkL/yPmEv8LKwj/DAwM
+        8UFBQSkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKytKBgYG+Q46Cv8j6xH/ElsM
+        /wICAv8AAAD/AAAA/wAAAP8KHwn/JPoQ/yP/D/8j/w//I/8P/yP/D/8j/w//I/sQ/yC7Ef8PSAr/AQIB
+        /wEBAf8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wICAv8SWQv/I+0R
+        /w4+Cv8GBgb5KSkpSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSkp
+        YwcHB/0NOQr/I+YS/xd4Dv8CBAL/AQEB/wEBAf8BAQH/El8M/yTcE/8l9hL/JeoT/yDCEf8XfQ3/CioH
+        /wICAv8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgQC
+        /xZ4Df8j5hL/DT4J/wcHB/0rKytnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAmZmZAS4uLmcGBgb5CioI/yHTEf8dsBD/BxoF/wEBAf8AAAD/AQEB/wMFAv8EDAP/AwcD
+        /wICAf8BAQH/AQEB/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wEBAf8GGQX/Ha8Q/yHTEf8LKgj/BgYG+SoqKmeOjo4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArKytJCwsL7gYPBf8blQ//JOgS/xVrDf8DCQP/AQEB
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8BAQH/AwgD/xVrDf8j5xL/GpYP/wUPBP8LCwvuKCgoSQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        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
+        hgcPB/gUcwz/H70R/xV/DP8MNAj/AgYC/wEBAf8BAQH/AAAA/wAAAP8CBQH/CzMI/xZ+DP8fvBH/FXQM
+        /wcPBvgUFBSGR0dHCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKSkp
+        IQwMDNAPSgn/IL4R/xFXCv8CAwL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wIDAv8QVgr/H74R/w9LCf8MDAzQJycnIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        ADQ0NDIJCgnmF4YN/xmUDv8DCwL/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8AAAD/BREE
+        /w5GCf8QVQr/BxoF/wAAAP8DCgL/GZQO/xeGDf8ICQjmMTExMgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAoKCghCQkI5xqdDv8SaQv/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8BAQH/DkQJ
+        /xyxD/8j+RD/I/8P/yP/D/8i6xD/BRAE/wAAAP8AAQD/EmcL/xqeDv8ICQjnJycnIQAAAAAAAAAAAAAA
+        AAAAAAAAAAAATk5OCA0NDdAXhg3/E2kL/wEBAf8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/CzcI
+        /x7CD/8j/w//I/8P/yP/D/8j/w//I/8P/yP/D/8MMwj/AAAA/wAAAP8AAAD/E2gL/xeHDf8NDQ3SSUlJ
+        CAAAAAAAAAAAAAAAAAAAAAAUFBSHDkoJ/xmUDv8BAQH/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/BRAE
+        /xmXDf8j/BD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/kQ/wUPBf8AAAD/AAAA/wAAAP8AAAD/GZMO
+        /w9MCf8WFhaJAAAAAAAAAAAAAAAANjY2JAgPB/gfvxH/AwoD/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /ww/B/8h3xD/I/8P/yPrEP8bqg7/FYIL/xeSDP8i8RD/I/8P/yP/D/8crQ7/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8DCgL/H74R/wcPBvg0NDQkAAAAAAAAAAAMDAyOFHQM/xBWCv8BAQH/BRAE/wwyCP8FDwT/AAAA
+        /wECAf8Vegz/I/sQ/x68D/8PTwn/AgYC/wAAAP8AAAD/AAAA/xJjC/8j/w//I/4P/xyyD/8BAgH/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8QVQn/FXUM/w0NDY8AAAAAAAAAAAMGA58fvRH/AgMC/wYaBP8i6xD/I/8P
+        /yP5EP8brQ7/HK8P/x6/D/8MOgf/AQEB/wAAAP8AAAD/AAAA/wAAAP8AAAD/Dk0J/yP/D/8amQ7/HbwP
+        /xZ9DP8BAQH/AAAA/wAAAP8AAAD/AAAA/wEDAf8fvRH/AwcDnwAAAAAAAAAAFWYOnxZ/DP8AAAD/EFUJ
+        /yP/D/8j/w//I/8P/yP/D/8j/g//GpsO/wQQA/8AAAD/AAAA/wAAAP8AAAD/AAAA/wEBAf8Xhgz/Id4Q
+        /wQQA/8LNgj/JPsQ/w1ACP8BAQH/AAAA/wAAAP8AAAD/AAAA/xZ9DP8WaA6fAAAAAAAAAAAj1RKfCzQI
+        /wAAAP8ORgn/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//Id4Q/ww4CP8AAAD/AAAA/wAAAP8AAAD/AwgD
+        /yHdEP8LNwf/AAAA/wAAAP8eug//IeIQ/wUQBP8AAAD/AAAA/wAAAP8AAAD/CzII/yPXE58AAAAAAAAA
+        ACTxEZ8CBgL/AAAA/wURBP8j+RD/I/8P/yP/D/8i8RD/EmUL/w9NCf8Xhw3/It4Q/xJiCv8BAQH/BA4E
+        /wUOBP8QUAr/EmEL/wAAAP8AAAD/AAAA/w5MCP8j/w//GZsN/wAAAP8AAAD/AAAA/wAAAP8BBQH/JO8S
+        nwAAAAAAAAAAIcASnwEBAf8AAAD/AAAA/xyxDv8j/w//I/8P/xeTDP8BAQH/AAAA/wAAAP8DCAP/EFMK
+        /xRxDP8j+BD/I/kQ/xRxDP8BAQH/AAAA/wAAAP8AAAD/AgUC/yPqEP8j/Q//DDoI/wAAAP8AAAD/AAAA
+        /wAAAP8hvhOfAAAAAAAAAAAfohOfAQEB/wAAAP8AAAD/DkMJ/yP/D/8j/w//FYIL/wAAAP8AAAD/AAAA
+        /wAAAP8EDQT/I/gQ/yP/D/8j/w//I/gQ/wQNA/8AAAD/AAAA/wAAAP8AAAD/G6gO/yP/D/8fxBD/AAAA
+        /wAAAP8AAAD/AAAA/x2gEp8AAAAAAAAAAB+iE58BAQH/AAAA/wAAAP8AAQD/HsMP/yP/D/8bqg7/AAAA
+        /wAAAP8AAAD/AAAA/wQNBP8j+BD/I/8P/yP/D/8j+BD/BA0D/wAAAP8AAAD/AAAA/wAAAP8VgQv/I/8P
+        /yP/D/8ORgn/AAAA/wAAAP8AAAD/HaASnwAAAAAAAAAAIcASnwAAAP8AAAD/AAAA/wAAAP8LNwf/I/wQ
+        /yPrEf8DBgL/AAAA/wAAAP8AAAD/AQEB/xRvDP8k+BD/I/gQ/xRwDP8QUwr/AwkD/wEBAf8BAQH/AQEB
+        /xiSDP8j/w//I/8P/xy0D/8AAAD/AAAA/wAAAP8hvROfAAAAAAAAAAAk8RGfAgUB/wAAAP8AAAD/AAAA
+        /wAAAP8Zlg3/I/8P/w9QCf8AAAD/AAAA/wAAAP8RXwr/EVUL/wQNBP8EDQT/AAAA/xFdCv8i3xH/F4sM
+        /xBRCv8TaAv/IvIP/yP/D/8j/w//I/oQ/wYTBP8AAAD/AgUB/yTwEZ8AAAAAAAAAACLUEp8LNAf/AAAA
+        /wAAAP8AAAD/AAAA/wQPA/8h3xD/Hr0P/wAAAP8AAAD/CzUH/yLfEf8DCQP/AAAA/wAAAP8AAAD/AAAA
+        /ws0B/8h2xD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//DkgJ/wAAAP8MMwj/I9cTnwAAAAAAAAAAFGUN
+        nxZ+DP8BAQH/AAAA/wAAAP8AAAD/AAAA/ww+B/8j+hD/DDoH/wQPA/8h3BD/F4oM/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wQOA/8ZlQ7/I/4P/yP/D/8j/w//I/8P/yP/D/8QVgr/AAAA/xV+DP8VZw6fAAAA
+        AAAAAAADBgOfH70R/wIDAv8AAAD/AAAA/wAAAP8AAAD/AAAA/xV4DP8evw//GZcO/yP/D/8PUAr/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8BAQH/DDkH/x6+D/8csQ7/G6kO/yP3EP8j/w//IukQ/wYZBf8CAwL/H70R
+        /wMHA58AAAAAAAAAAA0NDY4Ucwv/EFcK/wAAAP8AAAD/AAAA/wAAAP8AAAD/AgIC/xyvDv8j/g//I/8P
+        /xNoC/8AAAD/AAAA/wAAAP8CBgL/D04J/x28D/8j+xD/FXsM/wIDAf8BAQH/BQwE/wwsCv8FDwT/AQEB
+        /xBVCv8UdAz/Dg4OjwAAAAAAAAAANDQ0IwcNBvgfvhH/AwwD/wAAAP8AAAD/AAAA/wAAAP8BAQH/G6oO
+        /yP/D/8j/w//I/MQ/xiVDf8Vgwv/G6oO/yPrEf8j/w//IeAQ/ww/B/8AAAD/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8DCgL/H74R/wcQB/g1NTUkAAAAAAAAAAAAAAAAFxcXhw9KCf8Zlg7/AQEB/wAAAP8AAAD/AAAA
+        /wUNBf8j+BD/I/8P/yP/D/8j/w//I/8P/yP/D/8j/w//I/0Q/xmZDf8EEAP/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/xmUDv8PSwn/FhYWiQAAAAAAAAAAAAAAAAAAAABQUFAIDQ0N0BeFDf8Tagv/AQEB
+        /wAAAP8AAAD/DS0K/yP/D/8j/w//I/8P/yP/D/8j/w//I/8P/x/DEP8MOAj/AAAA/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wEBAf8TaQv/F4YN/w4ODtJNTU0IAAAAAAAAAAAAAAAAAAAAAAAAAAArKyshBwgH
+        5RqYD/8Tagv/AQEB/wEBAf8FDgT/IukQ/yP/D/8j/w//I/kQ/xyyD/8NRAn/AQEB/wAAAP8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8BAQH/E2kL/xqdDv8JCQjnKSkpIQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAA5OTkyCAkI5heFDf8ZlQ7/BAwD/wEBAf8GGAT/EFMK/w5FCf8FEQT/AQEB/wEBAf8AAAD/AAAA
+        /wAAAP8AAAD/AAAA/wAAAP8AAAD/AwsC/xmVDv8XhQ3/CAkI5jQ0NDIAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAArKyshDg4O0A5JCf8fvhH/EVgK/wIDAv8AAAD/AAAA/wAAAP8AAAD/AAAA
+        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
+        AAAAAAAAAAAAgAEAAIABAADAAwAA8A8AAA==
+</value>
+  </data>
 </root>
\ No newline at end of file
diff --git a/NetMFAPatcher/GUI/MainForm.Designer.cs b/NetMFAPatcher/GUI/MainForm.Designer.cs
index bb13be1..01fb2e2 100644
--- a/NetMFAPatcher/GUI/MainForm.Designer.cs
+++ b/NetMFAPatcher/GUI/MainForm.Designer.cs
@@ -104,11 +104,11 @@
             this.listBox1.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
             this.listBox1.BackColor = System.Drawing.Color.Black;
             this.listBox1.BorderStyle = System.Windows.Forms.BorderStyle.None;
-            this.listBox1.Font = new System.Drawing.Font("Courier New", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (204)));
+            this.listBox1.Font = new System.Drawing.Font("Courier New", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte) (204)));
             this.listBox1.ForeColor = System.Drawing.Color.FromArgb(((int) (((byte) (255)))), ((int) (((byte) (128)))), ((int) (((byte) (0)))));
             this.listBox1.FormattingEnabled = true;
             this.listBox1.IntegralHeight = false;
-            this.listBox1.ItemHeight = 14;
+            this.listBox1.ItemHeight = 17;
             this.listBox1.Location = new System.Drawing.Point(342, 9);
             this.listBox1.Margin = new System.Windows.Forms.Padding(0);
             this.listBox1.MaximumSize = new System.Drawing.Size(300, 50000);
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/AppHeader.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/AppHeader.cs
index ec78558..b53eed6 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/AppHeader.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/AppHeader.cs
@@ -59,13 +59,12 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 
         public override void Read()
         {
-            Reader = new ByteReader(Chunk.ChunkData);
             Size = Reader.ReadInt32();
             Flags.flag=(uint) Reader.ReadInt16();
 
             NewFlags.flag = (uint) Reader.ReadInt16();
             var graphicsMode = Reader.ReadInt16();
-            var otherflags = Reader.ReadInt16();// I am an asshole
+            var otherflags = Reader.ReadInt16();
             //TODO: Add OtherFlags
             
             WindowWidth = Reader.ReadInt16();
@@ -99,6 +98,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
                             $"Screen Resolution: {WindowWidth}x{WindowHeight}",
                             $"Initial Score: {InitialScore}",
                             $"Initial Lives: {InitialLives}",
+                            "",
                             $"Flags:;{Flags.ToString()}"
                         };
         }
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/FrameItems.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/FrameItems.cs
index d1d4279..0555b51 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/FrameItems.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/FrameItems.cs
@@ -35,7 +35,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
                 item.Read();
                 ItemDict.Add(item.Handle, item);
                 Names.Add(item.Name);
-                Logger.Log($"Found FrameItem: '{item.Name}' with handle ({item.Handle})", true, ConsoleColor.Magenta);
+                // Logger.Log($"Found FrameItem: '{item.Name}' with handle ({item.Handle})", true, ConsoleColor.Magenta);
             }
             GameData.TestItems = this;
 
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
index b82d39c..a87b2d0 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/ObjectInfo.cs
@@ -56,10 +56,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
 
                 infoChunk.Verbose = false;
                 var loader = infoChunk.Loader;
-                if (loader != null)
-                {
-                    Console.WriteLine($"Reading {loader.GetType().Name}");
-                }
+                
                 
                 if (loader is ObjectName)
                 {
@@ -155,7 +152,6 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders
         {
             
             //TODO: Fix shit
-            Console.WriteLine("Reading properties of "+parent.Name);
             if (ObjectType == 1)//Backdrop
             {
                 Loader = new Backdrop(Reader);
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Animations.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Animations.cs
index 069f621..8ae33e8 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Animations.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/Animations.cs
@@ -129,7 +129,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
             {
                 var handle = Reader.ReadInt16();
                 Frames.Add(handle);
-                Console.WriteLine("Frame Found: "+handle);
+                
                 
             }
             
diff --git a/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs
index 5cdb976..56552ab 100644
--- a/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs
+++ b/NetMFAPatcher/MMFParser/EXE/Loaders/Objects/ObjectCommon.cs
@@ -141,7 +141,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
                 //Reader.Seek(currentPosition+_movementsOffset);
                 //var movements = new Movements(Reader);
                 //movements.Read();
-                Console.WriteLine("Movements done");
+                // Console.WriteLine("Movements done");
             }
             
             
@@ -150,7 +150,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
                 Reader.Seek(currentPosition + _valuesOffset);
                 AlterableValues values = new AlterableValues(Reader);
                 values.Read();
-                Console.WriteLine("Values done");
+                // Console.WriteLine("Values done");
             }
             
             
@@ -159,7 +159,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
                 Reader.Seek(currentPosition + _stringsOffset);
                 AlterableStrings strings = new AlterableStrings(Reader);
                 strings.Read();
-                Console.WriteLine("Strings done");
+                // Console.WriteLine("Strings done");
             }
             
             
@@ -168,7 +168,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
                 Reader.Seek(currentPosition + _animationsOffset);
                 Animations = new Animations(Reader);
                 Animations.Read();
-                Console.WriteLine("Animations done");
+                // Console.WriteLine("Animations done");
             }
 
             /*if (_counterOffset != 0)
@@ -211,8 +211,8 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Objects
             }
             
             
-            Console.WriteLine("SysObjOff: " + _systemObjectOffset);
-            Console.WriteLine("ExtOff: " + _extensionOffset);
+            // Console.WriteLine("SysObjOff: " + _systemObjectOffset);
+            // Console.WriteLine("ExtOff: " + _extensionOffset);
         }
 
         public override void Print(bool ext)