Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/NewEditorAction.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/NewEditorAction.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/NewEditorAction.cs	(revision 2426)
@@ -6,15 +6,11 @@
 
 namespace HeuristicLab.MainForm.Test {
-  public class NewEditorAction : IAction{
-    #region IAction Members
-
+  public class NewEditorAction{
     public void Execute(IMainForm mainform) {
-      mainform.StatusStripText = "New Editor action called";
+      MessageBox.Show("New Editor action called");
       EditorView x = new EditorView();
       x.Caption = "Editor View";
       mainform.ShowView(x);
     }
-
-    #endregion
   }
 
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/NewFormAction.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/NewFormAction.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/NewFormAction.cs	(revision 2426)
@@ -6,15 +6,11 @@
 
 namespace HeuristicLab.MainForm.Test {
-  public class NewFormAction : IAction{
-    #region IAction Members
-
+  public class NewFormAction {
     public void Execute(IMainForm mainform) {
-      mainform.StatusStripText = "New form called";
+      MessageBox.Show("New form called");
       FormView x = new FormView();
       x.Caption = "FormView";
       mainform.ShowView(x);
     }
-
-    #endregion
   }
 
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/OpenAction.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/OpenAction.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/OpenAction.cs	(revision 2426)
@@ -6,12 +6,8 @@
 
 namespace HeuristicLab.MainForm.Test {
-  public class OpenAction : IAction {
-    #region IAction Members
-
+  public class OpenAction  {
     public void Execute(IMainForm mainform) {
-      mainform.StatusStripText = "Open action called";
+      MessageBox.Show("Open action called");
     }
-
-    #endregion
   }
 }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/SaveAction.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/SaveAction.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/Actions/SaveAction.cs	(revision 2426)
@@ -6,10 +6,8 @@
 
 namespace HeuristicLab.MainForm.Test {
-  public class SaveAction : IAction{
-    #region IAction Members
+  public class SaveAction {
     public void Execute(IMainForm mainform) {
-      mainform.StatusStripText = "Save action called";
+      MessageBox.Show("Save action called");
     }
-    #endregion
   }
 }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/NewEditorToolStripButtonItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/NewEditorToolStripButtonItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/NewEditorToolStripButtonItem.cs	(revision 2426)
@@ -3,7 +3,8 @@
 using System.Linq;
 using System.Text;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
-  public class NewEditorToolStripButtonItem : ToolStripButtonItemBase, ITestUserInterfaceItemProvider {
+  public class NewEditorToolStripButtonItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, ITestUserInterfaceItemProvider {
     public override int Position {
       get { return 12; }
@@ -14,10 +15,14 @@
     }
 
-    public override string Structure {
-      get { return "New"; }
+    public override IEnumerable<string> Structure {
+      get { return new string []{"New"}; }
     }
 
-    public override void Execute(IMainForm mainform) {
-      new NewEditorAction().Execute(mainform);
+    public override System.Windows.Forms.ToolStripItemDisplayStyle ToolStripItemDisplayStyle {
+      get { return System.Windows.Forms.ToolStripItemDisplayStyle.ImageAndText; }
+    }
+
+    public override void Execute() {
+      new NewEditorAction().Execute(MainFormManager.Instance);
     }
   }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/NewFormToolStripButtonItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/NewFormToolStripButtonItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/NewFormToolStripButtonItem.cs	(revision 2426)
@@ -3,7 +3,8 @@
 using System.Linq;
 using System.Text;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
-  public class NewFormToolStripButtonItem : ToolStripButtonItemBase, ITestUserInterfaceItemProvider {
+  public class NewFormToolStripButtonItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, ITestUserInterfaceItemProvider {
     public override int Position {
       get { return 11; }
@@ -14,10 +15,14 @@
     }
 
-    public override string Structure {
-      get { return "New"; }
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "New" }; }
     }
 
-    public override void Execute(IMainForm mainform) {
-      new NewFormAction().Execute(mainform);
+    public override System.Windows.Forms.ToolStripItemDisplayStyle ToolStripItemDisplayStyle {
+      get { return System.Windows.Forms.ToolStripItemDisplayStyle.ImageAndText; }
+    }
+
+    public override void Execute() {
+      new NewFormAction().Execute(MainFormManager.Instance);
     }
   }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/NewToolStripButtonItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/NewToolStripButtonItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/NewToolStripButtonItem.cs	(revision 2426)
@@ -3,7 +3,8 @@
 using System.Linq;
 using System.Text;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
-  public class NewToolStripButtonItem : ToolStripButtonItemBase, ITestUserInterfaceItemProvider {
+  public class NewToolStripButtonItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, ITestUserInterfaceItemProvider {
     public override int Position {
       get { return 10; }
@@ -22,5 +23,5 @@
     }
 
-    public override void Execute(IMainForm mainform) {
+    public override void Execute() {
     }
   }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/OpenToolStripButtonItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/OpenToolStripButtonItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/OpenToolStripButtonItem.cs	(revision 2426)
@@ -3,7 +3,8 @@
 using System.Linq;
 using System.Text;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
-  public class OpenToolStripButtonItem : ToolStripButtonItemBase, ITestUserInterfaceItemProvider {
+  public class OpenToolStripButtonItem : ToolBarItemBase, ITestUserInterfaceItemProvider {
     public override int Position {
       get { return 20; }
@@ -18,6 +19,6 @@
     }
 
-    public override void Execute(IMainForm mainform) {
-      new OpenAction().Execute(mainform);
+    public override void Execute() {
+      new OpenAction().Execute(MainFormManager.Instance);
     }
   }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/SaveToolStripButtonItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/SaveToolStripButtonItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/ButtonItems/SaveToolStripButtonItem.cs	(revision 2426)
@@ -3,7 +3,8 @@
 using System.Linq;
 using System.Text;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
-  public class SaveToolStripButtonItem : ToolStripButtonItemBase, ITestUserInterfaceItemProvider {
+  public class SaveToolStripButtonItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, ITestUserInterfaceItemProvider {
     public override int Position {
       get { return 30; }
@@ -18,10 +19,10 @@
     }
 
-    public override void Execute(IMainForm mainform) {
-      new SaveAction().Execute(mainform);
+    public override void Execute() {
+      new SaveAction().Execute(MainFormManager.Instance);
     }
 
     public override void ActiveViewChanged(object sender, EventArgs e) {
-      IMainForm mainform = (IMainForm)sender;
+      IMainForm mainform = MainFormManager.Instance;
       if (mainform.ActiveView == null)
         this.ToolStripItem.Enabled = false;
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/EditorView.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/EditorView.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/EditorView.cs	(revision 2426)
@@ -7,4 +7,5 @@
 using System.Text;
 using System.Windows.Forms;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
@@ -14,13 +15,9 @@
     }
 
-    public EditorView(IMainForm mainform)
-      : base(mainform) {
+    private void ChangeStateButton_Click(object sender, EventArgs e) {
+      this.OnChanged();
     }
 
-    private void ChangeStateButton_Click(object sender, EventArgs e) {
-      this.OnStateChanged();
-    }
-
-    public override void FormClosing(object sender, FormClosingEventArgs e) {
+    public override void OnClosing(object sender, CancelEventArgs e) {
       if (DialogResult.Yes != MessageBox.Show(
              "Recent changes have not been saved. Close the editor anyway?", "Close editor?",
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/FormView.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/FormView.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/FormView.cs	(revision 2426)
@@ -7,4 +7,5 @@
 using System.Text;
 using System.Windows.Forms;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
@@ -14,8 +15,4 @@
       InitializeComponent();
     }
-
-    public FormView(IMainForm mainform)
-      : base(mainform) {
-    }
   }
 }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLab.MainForm.Test-3.2.csproj
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLab.MainForm.Test-3.2.csproj	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLab.MainForm.Test-3.2.csproj	(revision 2426)
@@ -104,6 +104,4 @@
     <Compile Include="MenuItems\NewFormToolStripMenuItem.cs" />
     <Compile Include="MenuItems\NewEditorToolStripMenuItem.cs" />
-    <Compile Include="MenuItems\FileToolStripMenuItem.cs" />
-    <Compile Include="MenuItems\NewToolStripMenuItem.cs" />
     <Compile Include="Actions\NewFormAction.cs" />
     <Compile Include="Actions\OpenAction.cs" />
@@ -124,4 +122,8 @@
       <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
       <Name>HeuristicLab.Common.Resources-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.2\HeuristicLab.MainForm.WindowsForms.csproj">
+      <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
+      <Name>HeuristicLab.MainForm.WindowsForms</Name>
     </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.MainForm\3.2\HeuristicLab.MainForm-3.2.csproj">
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabDockingMainFormTestApplication.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabDockingMainFormTestApplication.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabDockingMainFormTestApplication.cs	(revision 2426)
@@ -25,5 +25,5 @@
 using System.Windows.Forms;
 using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMainFormTestPlugin.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMainFormTestPlugin.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMainFormTestPlugin.cs	(revision 2426)
@@ -25,8 +25,8 @@
 using HeuristicLab.PluginInfrastructure;
 
-namespace HeuristicLab.Modeling.Database {
+namespace HeuristicLab.MainForm.Test {
   [ClassInfo(Name = "HeuristicLab.MainForm.Test-3.2")]
-  [PluginFile(Filename = "HeuristicLab.MainForm.Test-3.2.dll", Filetype = PluginFileType.Assembly)]  
-  [Dependency(Dependency = "HeuristicLab.MainForm-3.2")]
+  [PluginFile(Filename = "HeuristicLab.MainForm.Test-3.2.dll", Filetype = PluginFileType.Assembly)]
+  [Dependency(Dependency = "HeuristicLab.MainForm.WindowsForms-3.2")]
   [Dependency(Dependency = "HeuristicLab.Common.Resources-3.2")]
   public class HeuristicLabMainFormTestPlugin : PluginBase {
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMultipleDocumentMainFormTestApplication.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMultipleDocumentMainFormTestApplication.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabMultipleDocumentMainFormTestApplication.cs	(revision 2426)
@@ -25,5 +25,5 @@
 using System.Windows.Forms;
 using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabSingleDocumentMainFormTestApplication.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabSingleDocumentMainFormTestApplication.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/HeuristicLabSingleDocumentMainFormTestApplication.cs	(revision 2426)
@@ -25,5 +25,5 @@
 using System.Windows.Forms;
 using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/ExitToolStripMenuItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/ExitToolStripMenuItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/ExitToolStripMenuItem.cs	(revision 2426)
@@ -5,15 +5,15 @@
 using System.Windows.Forms;
 
-using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Common.Resources;
 
 namespace HeuristicLab.MainForm.Test {
-  public class CloseToolStripMenuItem : ToolStripMenuItemBase, ITestUserInterfaceItemProvider {
+  public class CloseToolStripMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, ITestUserInterfaceItemProvider {
     public override string Name {
       get { return "Exit"; }
     }
 
-    public override string Structure {
-      get { return "File"; }
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "File" }; }
     }
 
@@ -22,6 +22,6 @@
     }
 
-    public override void Execute(IMainForm mainform) {
-      mainform.Close();
+    public override void Execute() {
+      MainFormManager.Instance.Close();
     }
   }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/FileToolStripMenuItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/FileToolStripMenuItem.cs	(revision 2424)
+++ 	(revision )
@@ -1,19 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace HeuristicLab.MainForm.Test.MenuItems {
-  public class FileToolStripMenuItem : ToolStripMenuItemBase, ITestUserInterfaceItemProvider{
-    public override int Position {
-      get { return 1000; }
-    }
-
-    public override string Name {
-      get { return "File"; }
-    }
-
-    public override void Execute(IMainForm mainform) {      
-    }
-  }
-}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/NewEditorToolStripMenuItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/NewEditorToolStripMenuItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/NewEditorToolStripMenuItem.cs	(revision 2426)
@@ -5,15 +5,15 @@
 using System.Windows.Forms;
 
-using HeuristicLab.MainForm;
 using HeuristicLab.Common.Resources;
+using HeuristicLab.MainForm.WindowsForms;
 
 namespace HeuristicLab.MainForm.Test {
-  public class NewEditorToolStripMenuItem : ToolStripMenuItemBase, ITestUserInterfaceItemProvider {
+  public class NewEditorToolStripMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, ITestUserInterfaceItemProvider {
     public override string Name {
       get { return "Editor"; }
     }
 
-    public override string Structure {
-      get { return "File/New"; }
+    public override IEnumerable<string> Structure {
+      get { return "File/New".Split('/'); }
     }
 
@@ -22,6 +22,6 @@
     }
 
-    public override void Execute(IMainForm mainform) {
-      new NewEditorAction().Execute(mainform);
+    public override void Execute() {
+      new NewEditorAction().Execute(MainFormManager.Instance);
     }
   }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/NewFormToolStripMenuItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/NewFormToolStripMenuItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/NewFormToolStripMenuItem.cs	(revision 2426)
@@ -5,23 +5,24 @@
 using System.Windows.Forms;
 
-using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Common.Resources;
 
 namespace HeuristicLab.MainForm.Test {
-  public class NewFormToolStripMenuItem : ToolStripMenuItemBase, ITestUserInterfaceItemProvider {
+  public class NewFormToolStripMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, ITestUserInterfaceItemProvider {
     public override string Name {
       get { return "Form"; }
     }
 
-    public override string Structure {
-      get { return "File/New"; }
+    public override IEnumerable<string> Structure {
+      get { return "File/New".Split('/'); }
     }
 
     public override int Position {
       get { return 1110; }
+    
     }
 
-    public override void Execute(IMainForm mainform) {
-      new NewFormAction().Execute(mainform);
+    public override void Execute() {
+      new NewFormAction().Execute(MainFormManager.Instance);
     }
   }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/NewToolStripMenuItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/NewToolStripMenuItem.cs	(revision 2424)
+++ 	(revision )
@@ -1,31 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-
-using HeuristicLab.MainForm;
-using HeuristicLab.Common.Resources;
-
-namespace HeuristicLab.MainForm.Test {
-  public class NewToolStripMenuItem : ToolStripMenuItemBase, ITestUserInterfaceItemProvider {
-    public override string Name {
-      get { return "New"; }
-    }
-
-    public override string Structure {
-      get { return "File"; }
-    }
-
-    public override int Position {
-      get { return 1100; }
-    }
-
-    public override System.Drawing.Image Image {
-      get { return Resources.NewIcon; }
-    }
-
-    public override void Execute(IMainForm mainform) {
-    }
-  }
-}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/OpenToolStripMenuItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/OpenToolStripMenuItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/OpenToolStripMenuItem.cs	(revision 2426)
@@ -4,15 +4,15 @@
 using System.Text;
 using System.Windows.Forms;
-using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Common.Resources;
 
 namespace HeuristicLab.MainForm.Test {
-  public class OpenToolStripMenuItem : ToolStripMenuItemBase, ITestUserInterfaceItemProvider {
+  public class OpenToolStripMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, ITestUserInterfaceItemProvider {
     public override string Name {
       get { return "Open"; }
-    }   
+    }
 
-    public override string Structure {
-      get { return "File"; }
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "File" }; }
     }
 
@@ -29,6 +29,6 @@
     }
 
-    public override void Execute(IMainForm mainform) {
-      new OpenAction().Execute(mainform);
+    public override void Execute() {
+      new OpenAction().Execute(MainFormManager.Instance);
     }
   }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/SaveToolStripMenuItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/SaveToolStripMenuItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.Test/3.2/MenuItems/SaveToolStripMenuItem.cs	(revision 2426)
@@ -5,15 +5,15 @@
 using System.Windows.Forms;
 
-using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Common.Resources;
 
 namespace HeuristicLab.MainForm.Test {
-  public class SaveToolStripMenuItem : ToolStripMenuItemBase, ITestUserInterfaceItemProvider {
+  public class SaveToolStripMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, ITestUserInterfaceItemProvider {
     public override string Name {
       get { return "Save"; }
     }
 
-    public override string Structure {
-      get { return "File"; }
+    public override IEnumerable<string> Structure {
+      get { return new string[]{"File"}; }
     }
 
@@ -30,6 +30,6 @@
     }
 
-    public override void Execute(IMainForm mainform) {
-      new SaveAction().Execute(mainform);
+    public override void Execute() {
+      new SaveAction().Execute(MainFormManager.Instance);
     }
   }
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockForm.Designer.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockForm.Designer.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockForm.Designer.cs	(revision 2426)
@@ -0,0 +1,82 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  partial class DockForm {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (View != null)
+        View.CaptionChanged -= new System.EventHandler(View_CaptionChanged);
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DockForm));
+      this.viewPanel = new System.Windows.Forms.Panel();
+      this.SuspendLayout();
+      // 
+      // viewPanel
+      // 
+      this.viewPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.viewPanel.Location = new System.Drawing.Point(12, 12);
+      this.viewPanel.Name = "viewPanel";
+      this.viewPanel.Size = new System.Drawing.Size(608, 422);
+      this.viewPanel.TabIndex = 0;
+      // 
+      // DockForm
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(632, 446);
+      this.Controls.Add(this.viewPanel);
+      this.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+      this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+      this.Name = "DockForm";
+      this.ShowIcon = false;
+      this.ShowInTaskbar = false;
+      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+      this.ResumeLayout(false);
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Panel viewPanel;
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockForm.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockForm.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockForm.cs	(revision 2426)
@@ -0,0 +1,89 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  /// <summary>
+  /// Displays the used view.
+  /// </summary>
+  public partial class DockForm : DockContent {
+    public DockForm(IView view) {
+      InitializeComponent();
+      this.view = view;
+      if (View != null) {
+        if (view is UserControl) {
+          switch (((UserControl)view).Dock) {
+            case DockStyle.Left:
+              this.ShowHint = DockState.DockLeft;
+              break;
+            case DockStyle.Right:
+              this.ShowHint = DockState.DockRight;
+              break;
+            case DockStyle.Top:
+              this.ShowHint = DockState.DockTop;
+              break;
+            case DockStyle.Bottom:
+              this.ShowHint = DockState.DockBottom;
+              break;
+          }
+          Control control = (Control)View;
+          control.Dock = DockStyle.Fill;
+          viewPanel.Controls.Add(control);
+          View.CaptionChanged += new EventHandler(View_CaptionChanged);
+          UpdateText();
+        }
+      } else {
+        Label errorLabel = new Label();
+        errorLabel.Name = "errorLabel";
+        errorLabel.Text = "No view available";
+        errorLabel.AutoSize = false;
+        errorLabel.Dock = DockStyle.Fill;
+        viewPanel.Controls.Add(errorLabel);
+      }
+    }
+
+    private IView view;
+    public IView View {
+      get { return view; }
+    }
+
+    private void UpdateText() {
+      if (InvokeRequired)
+        Invoke(new MethodInvoker(UpdateText));
+      else
+        this.Text = View.Caption;
+    }
+
+    #region View Events
+    private void View_CaptionChanged(object sender, EventArgs e) {
+      UpdateText();
+    }
+    #endregion
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockForm.resx
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockForm.resx	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockForm.resx	(revision 2426)
@@ -0,0 +1,434 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.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>
+        AAABAAgAEBAQAAAAAAAoAQAAhgAAABAQAAAAAAAAaAUAAK4BAAAgIBAAAAAAAOgCAAAWBwAAICAAAAAA
+        AACoCAAA/gkAADAwEAAAAAAAaAYAAKYSAAAwMAAAAAAAAKgOAAAOGQAAQEAQAAAAAABoCgAAticAAEBA
+        AAAAAAAAKBYAAB4yAAAoAAAAEAAAACAAAAABAAQAAAAAAIAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAA
+        gAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
+        AAAAAAAAD/////////APD///gAAA8A8H//9wj//wDwj///gP//APgH//9wf/8A/wj///AP/wD/gIiIiA
+        f/AP/wAAAACP8A//gHd3eAfwD/9wj///CPAP//gP//+A8A//9w////DwD///D///+PAP////////8AAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAACA
+        AAAAgIAAgAAAAIAAgACAgAAAwMDAAMDcwADwyqYABAQEAAgICAAMDAwAERERABYWFgAcHBwAIiIiACkp
+        KQBVVVUATU1NAEJCQgA5OTkAgHz/AFBQ/wCTANYA/+zMAMbW7wDW5+cAkKmtAAAAMwAAAGYAAACZAAAA
+        zAAAMwAAADMzAAAzZgAAM5kAADPMAAAz/wAAZgAAAGYzAABmZgAAZpkAAGbMAABm/wAAmQAAAJkzAACZ
+        ZgAAmZkAAJnMAACZ/wAAzAAAAMwzAADMZgAAzJkAAMzMAADM/wAA/2YAAP+ZAAD/zAAzAAAAMwAzADMA
+        ZgAzAJkAMwDMADMA/wAzMwAAMzMzADMzZgAzM5kAMzPMADMz/wAzZgAAM2YzADNmZgAzZpkAM2bMADNm
+        /wAzmQAAM5kzADOZZgAzmZkAM5nMADOZ/wAzzAAAM8wzADPMZgAzzJkAM8zMADPM/wAz/zMAM/9mADP/
+        mQAz/8wAM///AGYAAABmADMAZgBmAGYAmQBmAMwAZgD/AGYzAABmMzMAZjNmAGYzmQBmM8wAZjP/AGZm
+        AABmZjMAZmZmAGZmmQBmZswAZpkAAGaZMwBmmWYAZpmZAGaZzABmmf8AZswAAGbMMwBmzJkAZszMAGbM
+        /wBm/wAAZv8zAGb/mQBm/8wAzAD/AP8AzACZmQAAmTOZAJkAmQCZAMwAmQAAAJkzMwCZAGYAmTPMAJkA
+        /wCZZgAAmWYzAJkzZgCZZpkAmWbMAJkz/wCZmTMAmZlmAJmZmQCZmcwAmZn/AJnMAACZzDMAZsxmAJnM
+        mQCZzMwAmcz/AJn/AACZ/zMAmcxmAJn/mQCZ/8wAmf//AMwAAACZADMAzABmAMwAmQDMAMwAmTMAAMwz
+        MwDMM2YAzDOZAMwzzADMM/8AzGYAAMxmMwCZZmYAzGaZAMxmzACZZv8AzJkAAMyZMwDMmWYAzJmZAMyZ
+        zADMmf8AzMwAAMzMMwDMzGYAzMyZAMzMzADMzP8AzP8AAMz/MwCZ/2YAzP+ZAMz/zADM//8AzAAzAP8A
+        ZgD/AJkAzDMAAP8zMwD/M2YA/zOZAP8zzAD/M/8A/2YAAP9mMwDMZmYA/2aZAP9mzADMZv8A/5kAAP+Z
+        MwD/mWYA/5mZAP+ZzAD/mf8A/8wAAP/MMwD/zGYA/8yZAP/MzAD/zP8A//8zAMz/ZgD//5kA///MAGZm
+        /wBm/2YAZv//AP9mZgD/Zv8A//9mACEApQBfX18Ad3d3AIaGhgCWlpYAy8vLALKysgDX19cA3d3dAOPj
+        4wDq6uoA8fHxAPj4+ADw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8ACgoKCgoK
+        CgoKCgoKCgoKCgr//////////////////woK/xT//////20KFBQUFP8KCv8K8f/////xCpL/////Cgr/
+        EG3//////20U/////woK/5IK8f////8HCgf///8KCv//Duz//////xQU////Cgr//+wO7Ozs7OwSCvH/
+        /woK///zDgoKCgoKCgpt//8KCv///+sOBwcHBwfsCvH/Cgr////xCpL//////w7s/woK/////21D////
+        ///sDv8KCv////+8Cv//////8w7/Cgr//////xT///////9t/woK//////////////////8KCgoKCgoK
+        CgoKCgoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABAAQAAAAAAAACAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAA
+        gAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
+        AAAAAAAAAAAAAAAAAAAP///////////////////wB3f///////93d3d3d3d38AcAj///////AAAAAAAA
+        CPAPAA///////4AAAAAAAABwD4AI//////9wAAAAAAAAgA/wAP//////+AB///////AP+ACP//////cA
+        D//////wD/8AD///////AAf/////8A//gAf//////4AI//////AP/3AA///////wAH/////wD//4AH//
+        ////+ACP////8A//9wCP//////8AD/////AP//8AB///////gAj////wD///cAj///////AA////8A//
+        //AAAAAAAAAAAI////AP///4AAAAAAAAAAAP///wD////wAAAAAAAAAAB///8A////+AAIiIiIiIgAD/
+        //AP////8AD///////AAf//wD/////gAf//////4AI//8A/////3AA///////wAH//AP/////4AH////
+        //+ACP/wD/////9wCP//////8AD/8A//////8AB///////gAj/AP//////cAj///////AA/wD///////
+        AA///////4AI8A///////4AI//////9wAPAP///////wAP//////+ABwD///////94h///////eIcA//
+        //////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABAAgAAAAAAAAE
+        AAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwADA3MAA8MqmAAQE
+        BAAICAgADAwMABEREQAWFhYAHBwcACIiIgApKSkAVVVVAE1NTQBCQkIAOTk5AIB8/wBQUP8AkwDWAP/s
+        zADG1u8A1ufnAJCprQAAADMAAABmAAAAmQAAAMwAADMAAAAzMwAAM2YAADOZAAAzzAAAM/8AAGYAAABm
+        MwAAZmYAAGaZAABmzAAAZv8AAJkAAACZMwAAmWYAAJmZAACZzAAAmf8AAMwAAADMMwAAzGYAAMyZAADM
+        zAAAzP8AAP9mAAD/mQAA/8wAMwAAADMAMwAzAGYAMwCZADMAzAAzAP8AMzMAADMzMwAzM2YAMzOZADMz
+        zAAzM/8AM2YAADNmMwAzZmYAM2aZADNmzAAzZv8AM5kAADOZMwAzmWYAM5mZADOZzAAzmf8AM8wAADPM
+        MwAzzGYAM8yZADPMzAAzzP8AM/8zADP/ZgAz/5kAM//MADP//wBmAAAAZgAzAGYAZgBmAJkAZgDMAGYA
+        /wBmMwAAZjMzAGYzZgBmM5kAZjPMAGYz/wBmZgAAZmYzAGZmZgBmZpkAZmbMAGaZAABmmTMAZplmAGaZ
+        mQBmmcwAZpn/AGbMAABmzDMAZsyZAGbMzABmzP8AZv8AAGb/MwBm/5kAZv/MAMwA/wD/AMwAmZkAAJkz
+        mQCZAJkAmQDMAJkAAACZMzMAmQBmAJkzzACZAP8AmWYAAJlmMwCZM2YAmWaZAJlmzACZM/8AmZkzAJmZ
+        ZgCZmZkAmZnMAJmZ/wCZzAAAmcwzAGbMZgCZzJkAmczMAJnM/wCZ/wAAmf8zAJnMZgCZ/5kAmf/MAJn/
+        /wDMAAAAmQAzAMwAZgDMAJkAzADMAJkzAADMMzMAzDNmAMwzmQDMM8wAzDP/AMxmAADMZjMAmWZmAMxm
+        mQDMZswAmWb/AMyZAADMmTMAzJlmAMyZmQDMmcwAzJn/AMzMAADMzDMAzMxmAMzMmQDMzMwAzMz/AMz/
+        AADM/zMAmf9mAMz/mQDM/8wAzP//AMwAMwD/AGYA/wCZAMwzAAD/MzMA/zNmAP8zmQD/M8wA/zP/AP9m
+        AAD/ZjMAzGZmAP9mmQD/ZswAzGb/AP+ZAAD/mTMA/5lmAP+ZmQD/mcwA/5n/AP/MAAD/zDMA/8xmAP/M
+        mQD/zMwA/8z/AP//MwDM/2YA//+ZAP//zABmZv8AZv9mAGb//wD/ZmYA/2b/AP//ZgAhAKUAX19fAHd3
+        dwCGhoYAlpaWAMvLywCysrIA19fXAN3d3QDj4+MA6urqAPHx8QD4+PgA8Pv/AKSgoACAgIAAAAD/AAD/
+        AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////
+        /////////////////////////////////wAA8QcH8//////////////zBwcHBwcHBwcHBwcHB/H/AADv
+        Cgpt//////////////MKCgoKCgoKCgoKCgoKEv8AAP8QCg7z/////////////20KCgoKCgoKCgoKCgoK
+        8QAA/5IKCuz/////////////8QoKCgoKCgoKCgoKCgptAAD//w4KDv//////////////EgoKB///////
+        //////8AAP//7AoKkv////////////8HCgoU/////////////wAA///zDgoQ//////////////8UCgq8
+        ////////////AAD///9tCgrv/////////////5IKCm3///////////8AAP////EKChT/////////////
+        /xAKCvH//////////wAA/////20KCgf/////////////kgoK6///////////AAD/////BwoKbf//////
+        ///////zDgoO8/////////8AAP//////FAoK8f/////////////sCgrs/////////wAA///////vCgpt
+        //////////////MKChD/////////AAD///////8QCg4UFBQUFBQUFBQUFA4KCpL///////8AAP//////
+        /5IKCgoKCgoKCgoKCgoKCgoKEP///////wAA/////////w4KCgoKCgoKCgoKCgoKCgoKB///////AAD/
+        ////////7AoKFOzs7Ozs7Ozs7OzrCgoU//////8AAP/////////zDgoQ//////////////8UCgq8////
+        /wAA//////////9tCgrv/////////////5IKCm3/////AAD///////////EKChT//////////////xAK
+        CvH///8AAP///////////20KCgf/////////////kgoK6////wAA////////////BwoKbf//////////
+        ////DgoO8///AAD/////////////FAoK8f/////////////sCgrs//8AAP/////////////vCgpt////
+        //////////MOChD//wAA//////////////8QCg7z/////////////20KCpL/AAD//////////////5IK
+        Cuz/////////////8QoKEP8AAP///////////////w4KDvP/////////////bQoKBwAA////////////
+        ////7+zs8f////////////+87OzvAAD///////////////////////////////////////8AAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEABAAAAAAAgAQAAAAA
+        AAAAAAAAEAAAABAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD/
+        /wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////
+        ///////wD//////////////////////////////wD//////////////////////////////wDwAAj///
+        ///////4AAAAAAAAAAAAAP/wD3AAD///////////AAAAAAAAAAAAAI/wD/AACP//////////gAAAAAAA
+        AAAAAA/wD/gAAP//////////cAAAAAAAAAAAAAjwD/8AAI//////////+AAAAAAAAAAAAAjwD/+AAA//
+        ////////9wAAf//////////wD//wAAj//////////wAAD//////////wD//4AAD//////////3AAB///
+        ///////wD//3AAB///////////AACP/////////wD///gACP//////////gAAH/////////wD///cAAH
+        //////////8AAI/////////wD///8AAI//////////+AAA/////////wD///9wAA///////////wAAj/
+        ///////wD////wAAj//////////4AAD////////wD////4AAD//////////3AACP///////wD/////AA
+        CP//////////gAAP///////wD/////gAAP//////////cAAI///////wD/////8AAI//////////8AAA
+        ///////wD/////+AAA//////////9wAAf//////wD/////9wAAAAAAAAAAAAAAAAj//////wD//////4
+        AAAAAAAAAAAAAAAAB//////wD//////3AAAAAAAAAAAAAAAACP/////wD///////AAAAAAAAAAAAAAAA
+        AP/////wD///////cAAAAAAAAAAAAAAAAI/////wD///////8AAI//////////+AAA/////wD///////
+        +AAA//////////9wAAj////wD////////wAAj//////////4AAD////wD////////4AAD//////////3
+        AACP///wD/////////AACP//////////AAAP///wD/////////gAAP//////////cAAH///wD///////
+        //cAAH//////////8AAI///wD/////////+AAA//////////+AAAf//wD/////////9wAAf/////////
+        /wAAj//wD//////////wAAj//////////4AAD//wD//////////3AAB///////////AACP/wD///////
+        ////AACP//////////gAAP/wD///////////gAAP//////////cAAI/wD///////////8AAI////////
+        //+AAA/wD///////////+AAA//////////9wAAjwD////////////wAAj//////////wAADwD///////
+        ///////////////////////wD//////////////////////////////wD///////////////////////
+        ///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAA
+        AABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
+        AADAwMAAwNzAAPDKpgAEBAQACAgIAAwMDAAREREAFhYWABwcHAAiIiIAKSkpAFVVVQBNTU0AQkJCADk5
+        OQCAfP8AUFD/AJMA1gD/7MwAxtbvANbn5wCQqa0AAAAzAAAAZgAAAJkAAADMAAAzAAAAMzMAADNmAAAz
+        mQAAM8wAADP/AABmAAAAZjMAAGZmAABmmQAAZswAAGb/AACZAAAAmTMAAJlmAACZmQAAmcwAAJn/AADM
+        AAAAzDMAAMxmAADMmQAAzMwAAMz/AAD/ZgAA/5kAAP/MADMAAAAzADMAMwBmADMAmQAzAMwAMwD/ADMz
+        AAAzMzMAMzNmADMzmQAzM8wAMzP/ADNmAAAzZjMAM2ZmADNmmQAzZswAM2b/ADOZAAAzmTMAM5lmADOZ
+        mQAzmcwAM5n/ADPMAAAzzDMAM8xmADPMmQAzzMwAM8z/ADP/MwAz/2YAM/+ZADP/zAAz//8AZgAAAGYA
+        MwBmAGYAZgCZAGYAzABmAP8AZjMAAGYzMwBmM2YAZjOZAGYzzABmM/8AZmYAAGZmMwBmZmYAZmaZAGZm
+        zABmmQAAZpkzAGaZZgBmmZkAZpnMAGaZ/wBmzAAAZswzAGbMmQBmzMwAZsz/AGb/AABm/zMAZv+ZAGb/
+        zADMAP8A/wDMAJmZAACZM5kAmQCZAJkAzACZAAAAmTMzAJkAZgCZM8wAmQD/AJlmAACZZjMAmTNmAJlm
+        mQCZZswAmTP/AJmZMwCZmWYAmZmZAJmZzACZmf8AmcwAAJnMMwBmzGYAmcyZAJnMzACZzP8Amf8AAJn/
+        MwCZzGYAmf+ZAJn/zACZ//8AzAAAAJkAMwDMAGYAzACZAMwAzACZMwAAzDMzAMwzZgDMM5kAzDPMAMwz
+        /wDMZgAAzGYzAJlmZgDMZpkAzGbMAJlm/wDMmQAAzJkzAMyZZgDMmZkAzJnMAMyZ/wDMzAAAzMwzAMzM
+        ZgDMzJkAzMzMAMzM/wDM/wAAzP8zAJn/ZgDM/5kAzP/MAMz//wDMADMA/wBmAP8AmQDMMwAA/zMzAP8z
+        ZgD/M5kA/zPMAP8z/wD/ZgAA/2YzAMxmZgD/ZpkA/2bMAMxm/wD/mQAA/5kzAP+ZZgD/mZkA/5nMAP+Z
+        /wD/zAAA/8wzAP/MZgD/zJkA/8zMAP/M/wD//zMAzP9mAP//mQD//8wAZmb/AGb/ZgBm//8A/2ZmAP9m
+        /wD//2YAIQClAF9fXwB3d3cAhoaGAJaWlgDLy8sAsrKyANfX1wDd3d0A4+PjAOrq6gDx8fEA+Pj4APD7
+        /wCkoKAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////////
+        /////////////////wAA////////////////////////////////////////////////////////////
+        /wAA/////////////////////////////////////////////////////////////wAA/xQKCgpt////
+        /////////////////+wKCgoKCgoKCgoKCgoKCgoKCgoKDvP//wAA/wcKCgoK8///////////////////
+        //MOCgoKCgoKCgoKCgoKCgoKCgoKCuz//wAA//8QCgoK7P////////////////////9tCgoKCgoKCgoK
+        CgoKCgoKCgoKCg7//wAA//+SCgoKDvP////////////////////xCgoKCgoKCgoKCgoKCgoKCgoKCgqS
+        /wAA////EAoKCpL/////////////////////bQoKCgoUFBQUFBQUFBQUFBQUFBRt/wAA////7AoKChD/
+        ////////////////////BwoKCgrv/////////////////////wAA////8w4KCgqS////////////////
+        /////xQKCgoU/////////////////////wAA/////+sKCgoU/////////////////////+8KCgoKB///
+        /////////////////wAA//////EKCgoKB/////////////////////8QCgoKbf//////////////////
+        /wAA//////9tCgoKEv////////////////////+SCgoKCvH//////////////////wAA//////+8CgoK
+        CvH/////////////////////DgoKCm3//////////////////wAA////////FAoKCm3/////////////
+        ////////7AoKCgrz/////////////////wAA////////BwoKCgrz////////////////////8w4KCgrs
+        /////////////////wAA/////////xAKCgrs/////////////////////20KCgoO8///////////////
+        /wAA/////////5IKCgoO8/////////////////////EKCgoKkv///////////////wAA//////////8Q
+        CgoKkv////////////////////9tCgoKEP///////////////wAA///////////sCgoKEP//////////
+        //////////8HCgoKCpL//////////////wAA///////////zDgoKCpL/////////////////////FAoK
+        ChT//////////////wAA////////////6woKChT/////////////////////7woKCgoH////////////
+        /wAA////////////8QoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoS/////////////wAA////////////
+        /20KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK8f///////////wAA/////////////7wKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKbf///////////wAA//////////////8UCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        CgoKCvP//////////wAA//////////////8HCgoKCkMUFBQUFBQUFBQUFBQUFBQUDgoKCuz/////////
+        /wAA////////////////EAoKCuz/////////////////////bQoKCg7z/////////wAA////////////
+        ////kgoKCg7z////////////////////8QoKCgqS/////////wAA/////////////////xAKCgrs////
+        /////////////////20KCgoQ/////////wAA/////////////////+wKCgoQ////////////////////
+        /7wKCgoKkv///////wAA//////////////////MOCgoKkv////////////////////8UCgoKFP//////
+        /wAA///////////////////rCgoKQ/////////////////////8HCgoKCgf//////wAA////////////
+        ///////xCgoKCgf/////////////////////EAoKChL//////wAA////////////////////bQoKChT/
+        ////////////////////kgoKCgrx/////wAA////////////////////vAoKCgrx////////////////
+        /////xAKCgpt/////wAA/////////////////////xQKCgpt/////////////////////+wKCgoK8///
+        /wAA/////////////////////wcKCgoK8f////////////////////MOCgoK7P///wAA////////////
+        //////////9DCgoK7P/////////////////////rCgoKDvP//wAA//////////////////////+SCgoK
+        DvP////////////////////xCgoKCpL//wAA////////////////////////EAoKCuz/////////////
+        ////////bQoKChD//wAA////////////////////////7AoKChD/////////////////////vAoKCgqS
+        /wAA////////////////////////8w4KCgqS/////////////////////xQKCgoU/wAA////////////
+        /////////////////////////////////////////////////wAA////////////////////////////
+        /////////////////////////////////wAA////////////////////////////////////////////
+        /////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAQAAAAIAAAAABAAQAAAAAAAAIAAAAAAAAAAAAABAA
+        AAAQAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A
+        /wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////
+        //////////////////AP////////////////////////////////////////8A//////////////////
+        ///////////////////////wD/////////////////////////////////////////AP+IiIf///////
+        ///////4iIiIiIiIiIiIiIiIiH//8A/wAAAP//////////////gAAAAAAAAAAAAAAAAAD//wD/gAAAj/
+        /////////////wAAAAAAAAAAAAAAAAAI//AP/wAAAP//////////////gAAAAAAAAAAAAAAAAAD/8A//
+        gAAAj//////////////wAAAAAAAAAAAAAAAAAI/wD//wAAAP//////////////gAAAAAAAAAAAAAAAAA
+        D/AP//gAAAf/////////////9wAAAAAAAAAAAAAAAAAH8A//9wAACP//////////////gAAAf///////
+        ///////wD///gAAAf/////////////9wAAAP//////////////AP//9wAACP//////////////AAAAf/
+        ////////////8A////AAAA//////////////+AAACP/////////////wD///9wAACP//////////////
+        AAAAf/////////////AP////AAAA//////////////+AAACP////////////8A////+AAACP////////
+        //////AAAA/////////////wD/////AAAA//////////////+AAACP////////////AP////+AAACP//
+        ////////////AAAA////////////8A//////AAAA//////////////+AAACP///////////wD/////+A
+        AAB//////////////3AAAA////////////AP/////3AAAI//////////////+AAAB///////////8A//
+        ////+AAAB//////////////3AAAA///////////wD//////3AAAI//////////////8AAAB/////////
+        //AP//////8AAAD//////////////3AAAI//////////8A///////3AAAI//////////////8AAAB///
+        ///////wD///////8AAAD//////////////4AAAI//////////AP///////4AAAI//////////////8A
+        AAD/////////8A////////8AAAB3d3d3d3d3d3d3d4AAAI/////////wD////////4AAAAAAAAAAAAAA
+        AAAAAAAAD/////////AP////////8AAAAAAAAAAAAAAAAAAAAAAI////////8A/////////4AAAAAAAA
+        AAAAAAAAAAAAAAD////////wD/////////cAAAAAAAAAAAAAAAAAAAAAAI////////AP/////////4AA
+        AAAAAAAAAAAAAAAAAAAAD///////8A//////////cAAAAAAAAAAAAAAAAAAAAAAH///////wD///////
+        ///wAAAH//////////////cAAAj///////AP//////////cAAAj//////////////wAAAH//////8A//
+        /////////wAAAP//////////////gAAAj//////wD///////////gAAAj//////////////wAAAP////
+        //AP///////////wAAAP//////////////gAAAj/////8A////////////gAAAj//////////////wAA
+        AP/////wD////////////wAAAP//////////////gAAAj/////AP////////////gAAAf///////////
+        //9wAAAP////8A////////////9wAAAP//////////////gAAAj////wD/////////////gAAAf/////
+        ////////9wAAAP////AP////////////9wAACP//////////////AAAAf///8A//////////////AAAA
+        f/////////////9wAACP///wD/////////////9wAACP//////////////AAAAf///AP////////////
+        //AAAA//////////////+AAACP//8A//////////////+AAACP//////////////AAAA///wD///////
+        ////////AAAA//////////////+AAACP//AP//////////////+AAACP//////////////AAAA//8A//
+        //////////////AAAA//////////////+AAACP/wD///////////////+AAAB//////////////3AAAA
+        //AP///////////////3AAAA//////////////+AAACP8A////////////////+AAAB/////////////
+        /3AAAA/wD////////////////3AAAI//////////////8AAAB/AP////////////////////////////
+        ////////////8A/////////////////////////////////////////wD///////////////////////
+        //////////////////AP////////////////////////////////////////8AAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAQAAAAIAA
+        AAABAAgAAAAAAAAQAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDA
+        wADA3MAA8MqmAAQEBAAICAgADAwMABEREQAWFhYAHBwcACIiIgApKSkAVVVVAE1NTQBCQkIAOTk5AIB8
+        /wBQUP8AkwDWAP/szADG1u8A1ufnAJCprQAAADMAAABmAAAAmQAAAMwAADMAAAAzMwAAM2YAADOZAAAz
+        zAAAM/8AAGYAAABmMwAAZmYAAGaZAABmzAAAZv8AAJkAAACZMwAAmWYAAJmZAACZzAAAmf8AAMwAAADM
+        MwAAzGYAAMyZAADMzAAAzP8AAP9mAAD/mQAA/8wAMwAAADMAMwAzAGYAMwCZADMAzAAzAP8AMzMAADMz
+        MwAzM2YAMzOZADMzzAAzM/8AM2YAADNmMwAzZmYAM2aZADNmzAAzZv8AM5kAADOZMwAzmWYAM5mZADOZ
+        zAAzmf8AM8wAADPMMwAzzGYAM8yZADPMzAAzzP8AM/8zADP/ZgAz/5kAM//MADP//wBmAAAAZgAzAGYA
+        ZgBmAJkAZgDMAGYA/wBmMwAAZjMzAGYzZgBmM5kAZjPMAGYz/wBmZgAAZmYzAGZmZgBmZpkAZmbMAGaZ
+        AABmmTMAZplmAGaZmQBmmcwAZpn/AGbMAABmzDMAZsyZAGbMzABmzP8AZv8AAGb/MwBm/5kAZv/MAMwA
+        /wD/AMwAmZkAAJkzmQCZAJkAmQDMAJkAAACZMzMAmQBmAJkzzACZAP8AmWYAAJlmMwCZM2YAmWaZAJlm
+        zACZM/8AmZkzAJmZZgCZmZkAmZnMAJmZ/wCZzAAAmcwzAGbMZgCZzJkAmczMAJnM/wCZ/wAAmf8zAJnM
+        ZgCZ/5kAmf/MAJn//wDMAAAAmQAzAMwAZgDMAJkAzADMAJkzAADMMzMAzDNmAMwzmQDMM8wAzDP/AMxm
+        AADMZjMAmWZmAMxmmQDMZswAmWb/AMyZAADMmTMAzJlmAMyZmQDMmcwAzJn/AMzMAADMzDMAzMxmAMzM
+        mQDMzMwAzMz/AMz/AADM/zMAmf9mAMz/mQDM/8wAzP//AMwAMwD/AGYA/wCZAMwzAAD/MzMA/zNmAP8z
+        mQD/M8wA/zP/AP9mAAD/ZjMAzGZmAP9mmQD/ZswAzGb/AP+ZAAD/mTMA/5lmAP+ZmQD/mcwA/5n/AP/M
+        AAD/zDMA/8xmAP/MmQD/zMwA/8z/AP//MwDM/2YA//+ZAP//zABmZv8AZv9mAGb//wD/ZmYA/2b/AP//
+        ZgAhAKUAX19fAHd3dwCGhoYAlpaWAMvLywCysrIA19fXAN3d3QDj4+MA6urqAPHx8QD4+PgA8Pv/AKSg
+        oACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK////////////////////////////
+        //////////////////////////////////////////////////////8KCv//////////////////////
+        ////////////////////////////////////////////////////////////Cgr/////////////////
+        /////////////////////////////////////////////////////////////////woK////////////
+        //////////////////////////////////////////////////////////////////////8KCv/z7Ozs
+        7Ozv/////////////////////////////5Ls7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//////Cgr/
+        /xAKCgoKDvP///////////////////////////+SCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoO8///
+        /woK//+SCgoKCgqS////////////////////////////8w4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        Cuz///8KCv///xAKCgoKEP/////////////////////////////sCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        CgoKCgoQ////Cgr////sCgoKCgqS////////////////////////////8woKCgoKCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCpL//woK////8w4KCgoKFP////////////////////////////9tCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgpD//8KCv/////rCgoKCgoH////////////////////////////8QoKCgoKChQU
+        FBQUFBQUFBQUFBQUFBQUFBQUFPH/Cgr/////8QoKCgoKEv////////////////////////////8SCgoK
+        Cgrv/////////////////////////////woK//////9tCgoKCgrx////////////////////////////
+        BwoKCgoKFP////////////////////////////8KCv//////vAoKCgoKbf//////////////////////
+        //////8UCgoKCgoH////////////////////////////Cgr///////8UCgoKCgrz////////////////
+        ////////////kgoKCgoKbf///////////////////////////woK////////BwoKCgoK7P//////////
+        //////////////////8QCgoKCgrx//////////////////////////8KCv////////8QCgoKCg7z////
+        ////////////////////////kgoKCgoKbf//////////////////////////Cgr/////////kgoKCgoK
+        kv////////////////////////////MOCgoKCg7z/////////////////////////woK//////////8Q
+        CgoKChD/////////////////////////////7AoKCgoK7P////////////////////////8KCv//////
+        ////7AoKCgoKkv////////////////////////////MOCgoKCg7/////////////////////////Cgr/
+        //////////MOCgoKChT/////////////////////////////bQoKCgoKkv//////////////////////
+        /woK////////////6woKCgoKB/////////////////////////////EKCgoKChD/////////////////
+        //////8KCv////////////EKCgoKChL/////////////////////////////bQoKCgoK7///////////
+        ////////////Cgr/////////////bQoKCgoK8f///////////////////////////wcKCgoKChT/////
+        /////////////////woK/////////////7wKCgoKCm3/////////////////////////////FAoKCgoK
+        B/////////////////////8KCv//////////////FAoKCgoK8////////////////////////////+8K
+        CgoKCm3/////////////////////Cgr//////////////wcKCgoKCuz/////////////////////////
+        ////EAoKCgoK8f///////////////////woK////////////////EAoKCgoO8///////////////////
+        /////////5IKCgoKCm3///////////////////8KCv///////////////5IKCgoKCpL/////////////
+        ////////////////DgoKCgoK8///////////////////Cgr/////////////////EAoKCgoQBwcHBwcH
+        BwcHBwcHBwcHBwcHBwcHBxIKCgoKCuz//////////////////woK/////////////////+wKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoO8/////////////////8KCv/////////////////zDgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCpL/////////////////Cgr/////////////////
+        /+sKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoQ/////////////////woK////////////
+        ///////xCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCpL///////////////8KCv//////
+        /////////////20KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoU////////////////Cgr/
+        //////////////////+8CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgf/////////////
+        /woK/////////////////////xQKCgoKCvH////////////////////////////vCgoKCgoS////////
+        //////8KCv////////////////////8HCgoKCgrs/////////////////////////////xAKCgoKCvH/
+        ////////////Cgr//////////////////////xAKCgoKDvP///////////////////////////+SCgoK
+        Cgpt/////////////woK//////////////////////+SCgoKCgrs////////////////////////////
+        /w4KCgoKCvP///////////8KCv///////////////////////xAKCgoKEP//////////////////////
+        ///////sCgoKCgrs////////////Cgr////////////////////////sCgoKCgqS////////////////
+        ////////////8w4KCgoKDvP//////////woK////////////////////////8w4KCgoKQ///////////
+        //////////////////9tCgoKCgqS//////////8KCv/////////////////////////sCgoKCgoH////
+        ////////////////////////8QoKCgoKEP//////////Cgr/////////////////////////8QoKCgoK
+        FP////////////////////////////9tCgoKCgqS/////////woK//////////////////////////9t
+        CgoKCgrx////////////////////////////BwoKCgoKFP////////8KCv//////////////////////
+        ////8QoKCgoKbf////////////////////////////8UCgoKCgoH////////Cgr/////////////////
+        //////////8UCgoKCgrx////////////////////////////7woKCgoKEv///////woK////////////
+        ////////////////BwoKCgoK7P////////////////////////////8QCgoKCgrx//////8KCv//////
+        //////////////////////9DCgoKCg7z////////////////////////////kgoKCgoKbf//////Cgr/
+        ////////////////////////////kgoKCgoK7P////////////////////////////8OCgoKCgrz////
+        /woK//////////////////////////////8QCgoKChD/////////////////////////////7AoKCgoK
+        7P////8KCv//////////////////////////////7AoKCgoKkv////////////////////////////MO
+        CgoKCg7z////Cgr///////////////////////////////MOCgoKCkP/////////////////////////
+        ////bQoKCgoKkv///woK////////////////////////////////7AoKCgoKB///////////////////
+        //////////EKCgoKChD///8KCv////////////////////////////////EKCgoKChT/////////////
+        ////////////////bQoKCgoKkv//Cgr/////////////////////////////////bQoKCgoK8f//////
+        /////////////////////wcKCgoKChT//woK//////////////////////////////////EKCgoKCm3/
+        ////////////////////////////FAoKCgoKB/8KCv//////////////////////////////////////
+        ////////////////////////////////////////////Cgr/////////////////////////////////
+        /////////////////////////////////////////////////woK////////////////////////////
+        //////////////////////////////////////////////////////8KCv//////////////////////
+        ////////////////////////////////////////////////////////////CgoKCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+</value>
+  </data>
+</root>
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockingMainForm.Designer.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockingMainForm.Designer.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockingMainForm.Designer.cs	(revision 2426)
@@ -0,0 +1,116 @@
+﻿namespace HeuristicLab.MainForm.WindowsForms {
+  partial class DockingMainForm {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin1 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
+      WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin1 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
+      WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
+      WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient1 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+      WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
+      WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
+      WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient2 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+      WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
+      WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient3 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+      WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
+      WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient4 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+      WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient5 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+      WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient3 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
+      WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient6 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+      WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient7 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
+      this.dockPanel = new WeifenLuo.WinFormsUI.Docking.DockPanel();
+      this.SuspendLayout();
+      // 
+      // dockPanel
+      // 
+      this.dockPanel.ActiveAutoHideContent = null;
+      this.dockPanel.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.dockPanel.DockBackColor = System.Drawing.SystemColors.Control;
+      this.dockPanel.Location = new System.Drawing.Point(0, 49);
+      this.dockPanel.Name = "dockPanel";
+      this.dockPanel.Size = new System.Drawing.Size(624, 341);
+      dockPanelGradient1.EndColor = System.Drawing.SystemColors.ControlLight;
+      dockPanelGradient1.StartColor = System.Drawing.SystemColors.ControlLight;
+      autoHideStripSkin1.DockStripGradient = dockPanelGradient1;
+      tabGradient1.EndColor = System.Drawing.SystemColors.Control;
+      tabGradient1.StartColor = System.Drawing.SystemColors.Control;
+      tabGradient1.TextColor = System.Drawing.SystemColors.ControlDarkDark;
+      autoHideStripSkin1.TabGradient = tabGradient1;
+      dockPanelSkin1.AutoHideStripSkin = autoHideStripSkin1;
+      tabGradient2.EndColor = System.Drawing.SystemColors.ControlLightLight;
+      tabGradient2.StartColor = System.Drawing.SystemColors.ControlLightLight;
+      tabGradient2.TextColor = System.Drawing.SystemColors.ControlText;
+      dockPaneStripGradient1.ActiveTabGradient = tabGradient2;
+      dockPanelGradient2.EndColor = System.Drawing.SystemColors.Control;
+      dockPanelGradient2.StartColor = System.Drawing.SystemColors.Control;
+      dockPaneStripGradient1.DockStripGradient = dockPanelGradient2;
+      tabGradient3.EndColor = System.Drawing.SystemColors.ControlLight;
+      tabGradient3.StartColor = System.Drawing.SystemColors.ControlLight;
+      tabGradient3.TextColor = System.Drawing.SystemColors.ControlText;
+      dockPaneStripGradient1.InactiveTabGradient = tabGradient3;
+      dockPaneStripSkin1.DocumentGradient = dockPaneStripGradient1;
+      tabGradient4.EndColor = System.Drawing.SystemColors.ActiveCaption;
+      tabGradient4.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
+      tabGradient4.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
+      tabGradient4.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
+      dockPaneStripToolWindowGradient1.ActiveCaptionGradient = tabGradient4;
+      tabGradient5.EndColor = System.Drawing.SystemColors.Control;
+      tabGradient5.StartColor = System.Drawing.SystemColors.Control;
+      tabGradient5.TextColor = System.Drawing.SystemColors.ControlText;
+      dockPaneStripToolWindowGradient1.ActiveTabGradient = tabGradient5;
+      dockPanelGradient3.EndColor = System.Drawing.SystemColors.ControlLight;
+      dockPanelGradient3.StartColor = System.Drawing.SystemColors.ControlLight;
+      dockPaneStripToolWindowGradient1.DockStripGradient = dockPanelGradient3;
+      tabGradient6.EndColor = System.Drawing.SystemColors.GradientInactiveCaption;
+      tabGradient6.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
+      tabGradient6.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
+      tabGradient6.TextColor = System.Drawing.SystemColors.ControlText;
+      dockPaneStripToolWindowGradient1.InactiveCaptionGradient = tabGradient6;
+      tabGradient7.EndColor = System.Drawing.Color.Transparent;
+      tabGradient7.StartColor = System.Drawing.Color.Transparent;
+      tabGradient7.TextColor = System.Drawing.SystemColors.ControlDarkDark;
+      dockPaneStripToolWindowGradient1.InactiveTabGradient = tabGradient7;
+      dockPaneStripSkin1.ToolWindowGradient = dockPaneStripToolWindowGradient1;
+      dockPanelSkin1.DockPaneStripSkin = dockPaneStripSkin1;
+      this.dockPanel.Skin = dockPanelSkin1;
+      this.dockPanel.TabIndex = 3;
+      // 
+      // DockingMainForm
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(624, 412);
+      this.Controls.Add(this.dockPanel);
+      this.IsMdiContainer = true;
+      this.Name = "DockingMainForm";
+      this.Controls.SetChildIndex(this.dockPanel, 0);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private WeifenLuo.WinFormsUI.Docking.DockPanel dockPanel;
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockingMainForm.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockingMainForm.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockingMainForm.cs	(revision 2426)
@@ -0,0 +1,117 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  public partial class DockingMainForm : MainFormBase {
+    public DockingMainForm()
+      : base() {
+      InitializeComponent();
+    }
+
+    public DockingMainForm(Type userInterfaceItemType)
+      : base(userInterfaceItemType) {
+      InitializeComponent();
+    }
+
+    public override void ShowView(IView view) {
+      if (InvokeRequired) Invoke((Action<IView>)ShowView, view);
+      else {
+        if (views.Contains(view)) {
+          DockForm dockform = FindForm(view);
+          if (dockform != null)
+            dockform.Activate();
+        } else {
+          base.ShowView(view);
+          DockContent dockForm = new DockForm(view);
+          dockForm.Activated += new EventHandler(DockFormActivated);
+          dockForm.FormClosing += new FormClosingEventHandler(view.OnClosing);
+          dockForm.FormClosed += new FormClosedEventHandler(view.OnClosed);
+          dockForm.FormClosed += new FormClosedEventHandler(DockFormClosed);
+          foreach (IUserInterfaceItem item in UserInterfaceItems)
+            view.Changed += new EventHandler(item.ViewChanged);
+          dockForm.Show(dockPanel);
+        }
+      }
+    }
+
+    public override void CloseView(IView view) {
+      if (InvokeRequired) Invoke((Action<IView>)CloseView, view);
+      else {
+        DockForm dockform = FindForm(view);
+        if (dockform != null)
+          dockform.Close();
+      }
+    }
+
+    private void DockFormClosed(object sender, FormClosedEventArgs e) {
+      DockForm dockForm = (DockForm)sender;
+      ViewClosed(dockForm.View);
+      dockForm.Activated -= new EventHandler(DockFormActivated);
+      dockForm.FormClosing -= new FormClosingEventHandler(dockForm.View.OnClosing);
+      dockForm.FormClosed -= new FormClosedEventHandler(dockForm.View.OnClosed);
+      dockForm.FormClosed -= new FormClosedEventHandler(DockFormClosed);
+      foreach (IUserInterfaceItem item in UserInterfaceItems)
+        dockForm.View.Changed -= new EventHandler(item.ViewChanged);
+    }
+
+    private void DockFormActivated(object sender, EventArgs e) {
+      base.ActiveView = ((DockForm)sender).View;
+    }
+
+    protected DockForm FindForm(IView view) {
+      IEnumerable<DockForm> dockforms;
+
+      dockforms = from df in dockPanel.Documents
+                  where ((DockForm)df).View == view
+                  select (DockForm)df;
+      if (dockforms.Count() == 1)
+        return dockforms.Single();
+
+      dockforms = from fw in dockPanel.FloatWindows
+                  from np in fw.NestedPanes
+                  from dc in np.Contents
+                  where ((DockForm)dc).View == view
+                  select (DockForm)dc;
+      if (dockforms.Count() == 1)
+        return dockforms.Single();
+
+      dockforms = from dw in dockPanel.DockWindows
+                  from np in dw.NestedPanes
+                  from dc in np.Contents
+                  where ((DockForm)dc).View == view
+                  select (DockForm)dc;
+      if (dockforms.Count() == 1)
+        return dockforms.Single();
+
+      return null;
+    }
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockingMainForm.resx
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockingMainForm.resx	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DockingMainForm.resx	(revision 2426)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DocumentForm.Designer.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DocumentForm.Designer.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DocumentForm.Designer.cs	(revision 2426)
@@ -0,0 +1,82 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  partial class DocumentForm {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (View != null)
+        View.CaptionChanged -= new System.EventHandler(View_CaptionChanged);
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DocumentForm));
+      this.viewPanel = new System.Windows.Forms.Panel();
+      this.SuspendLayout();
+      // 
+      // viewPanel
+      // 
+      this.viewPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.viewPanel.Location = new System.Drawing.Point(12, 12);
+      this.viewPanel.Name = "viewPanel";
+      this.viewPanel.Size = new System.Drawing.Size(608, 422);
+      this.viewPanel.TabIndex = 0;
+      // 
+      // ViewForm
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(632, 446);
+      this.Controls.Add(this.viewPanel);
+      this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+      this.Name = "ViewForm";
+      this.ShowInTaskbar = false;
+      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+      this.Text = "View";
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Panel viewPanel;
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DocumentForm.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DocumentForm.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DocumentForm.cs	(revision 2426)
@@ -0,0 +1,72 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  public partial class DocumentForm : Form {
+    private IView myView;
+    public IView View {
+      get { return myView; }
+    }
+
+    public DocumentForm() {
+      InitializeComponent();
+    }
+    public DocumentForm(IView view)
+      : this() {
+      myView = view;
+      if (View != null) {
+        Control control = (Control)View;
+        control.Dock = DockStyle.Fill;
+        viewPanel.Controls.Add(control);
+        View.CaptionChanged += new EventHandler(View_CaptionChanged);
+        UpdateText();
+      } else {
+        Label errorLabel = new Label();
+        errorLabel.Name = "errorLabel";
+        errorLabel.Text = "No view available";
+        errorLabel.AutoSize = false;
+        errorLabel.Dock = DockStyle.Fill;
+        viewPanel.Controls.Add(errorLabel);
+      }
+    }
+
+    private void UpdateText() {
+      if (InvokeRequired)
+        Invoke(new MethodInvoker(UpdateText));
+      else
+        Text = View.Caption;
+    }
+
+    #region View Events
+    private void View_CaptionChanged(object sender, EventArgs e) {
+      UpdateText();
+    }
+    #endregion
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DocumentForm.resx
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DocumentForm.resx	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/DocumentForm.resx	(revision 2426)
@@ -0,0 +1,434 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.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>
+        AAABAAgAEBAQAAAAAAAoAQAAhgAAABAQAAAAAAAAaAUAAK4BAAAgIBAAAAAAAOgCAAAWBwAAICAAAAAA
+        AACoCAAA/gkAADAwEAAAAAAAaAYAAKYSAAAwMAAAAAAAAKgOAAAOGQAAQEAQAAAAAABoCgAAticAAEBA
+        AAAAAAAAKBYAAB4yAAAoAAAAEAAAACAAAAABAAQAAAAAAIAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAA
+        gAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
+        AAAAAAAAD/////////APD///gAAA8A8H//9wj//wDwj///gP//APgH//9wf/8A/wj///AP/wD/gIiIiA
+        f/AP/wAAAACP8A//gHd3eAfwD/9wj///CPAP//gP//+A8A//9w////DwD///D///+PAP////////8AAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAACA
+        AAAAgIAAgAAAAIAAgACAgAAAwMDAAMDcwADwyqYABAQEAAgICAAMDAwAERERABYWFgAcHBwAIiIiACkp
+        KQBVVVUATU1NAEJCQgA5OTkAgHz/AFBQ/wCTANYA/+zMAMbW7wDW5+cAkKmtAAAAMwAAAGYAAACZAAAA
+        zAAAMwAAADMzAAAzZgAAM5kAADPMAAAz/wAAZgAAAGYzAABmZgAAZpkAAGbMAABm/wAAmQAAAJkzAACZ
+        ZgAAmZkAAJnMAACZ/wAAzAAAAMwzAADMZgAAzJkAAMzMAADM/wAA/2YAAP+ZAAD/zAAzAAAAMwAzADMA
+        ZgAzAJkAMwDMADMA/wAzMwAAMzMzADMzZgAzM5kAMzPMADMz/wAzZgAAM2YzADNmZgAzZpkAM2bMADNm
+        /wAzmQAAM5kzADOZZgAzmZkAM5nMADOZ/wAzzAAAM8wzADPMZgAzzJkAM8zMADPM/wAz/zMAM/9mADP/
+        mQAz/8wAM///AGYAAABmADMAZgBmAGYAmQBmAMwAZgD/AGYzAABmMzMAZjNmAGYzmQBmM8wAZjP/AGZm
+        AABmZjMAZmZmAGZmmQBmZswAZpkAAGaZMwBmmWYAZpmZAGaZzABmmf8AZswAAGbMMwBmzJkAZszMAGbM
+        /wBm/wAAZv8zAGb/mQBm/8wAzAD/AP8AzACZmQAAmTOZAJkAmQCZAMwAmQAAAJkzMwCZAGYAmTPMAJkA
+        /wCZZgAAmWYzAJkzZgCZZpkAmWbMAJkz/wCZmTMAmZlmAJmZmQCZmcwAmZn/AJnMAACZzDMAZsxmAJnM
+        mQCZzMwAmcz/AJn/AACZ/zMAmcxmAJn/mQCZ/8wAmf//AMwAAACZADMAzABmAMwAmQDMAMwAmTMAAMwz
+        MwDMM2YAzDOZAMwzzADMM/8AzGYAAMxmMwCZZmYAzGaZAMxmzACZZv8AzJkAAMyZMwDMmWYAzJmZAMyZ
+        zADMmf8AzMwAAMzMMwDMzGYAzMyZAMzMzADMzP8AzP8AAMz/MwCZ/2YAzP+ZAMz/zADM//8AzAAzAP8A
+        ZgD/AJkAzDMAAP8zMwD/M2YA/zOZAP8zzAD/M/8A/2YAAP9mMwDMZmYA/2aZAP9mzADMZv8A/5kAAP+Z
+        MwD/mWYA/5mZAP+ZzAD/mf8A/8wAAP/MMwD/zGYA/8yZAP/MzAD/zP8A//8zAMz/ZgD//5kA///MAGZm
+        /wBm/2YAZv//AP9mZgD/Zv8A//9mACEApQBfX18Ad3d3AIaGhgCWlpYAy8vLALKysgDX19cA3d3dAOPj
+        4wDq6uoA8fHxAPj4+ADw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8ACgoKCgoK
+        CgoKCgoKCgoKCgr//////////////////woK/xT//////20KFBQUFP8KCv8K8f/////xCpL/////Cgr/
+        EG3//////20U/////woK/5IK8f////8HCgf///8KCv//Duz//////xQU////Cgr//+wO7Ozs7OwSCvH/
+        /woK///zDgoKCgoKCgpt//8KCv///+sOBwcHBwfsCvH/Cgr////xCpL//////w7s/woK/////21D////
+        ///sDv8KCv////+8Cv//////8w7/Cgr//////xT///////9t/woK//////////////////8KCgoKCgoK
+        CgoKCgoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABAAQAAAAAAAACAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAA
+        gAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
+        AAAAAAAAAAAAAAAAAAAP///////////////////wB3f///////93d3d3d3d38AcAj///////AAAAAAAA
+        CPAPAA///////4AAAAAAAABwD4AI//////9wAAAAAAAAgA/wAP//////+AB///////AP+ACP//////cA
+        D//////wD/8AD///////AAf/////8A//gAf//////4AI//////AP/3AA///////wAH/////wD//4AH//
+        ////+ACP////8A//9wCP//////8AD/////AP//8AB///////gAj////wD///cAj///////AA////8A//
+        //AAAAAAAAAAAI////AP///4AAAAAAAAAAAP///wD////wAAAAAAAAAAB///8A////+AAIiIiIiIgAD/
+        //AP////8AD///////AAf//wD/////gAf//////4AI//8A/////3AA///////wAH//AP/////4AH////
+        //+ACP/wD/////9wCP//////8AD/8A//////8AB///////gAj/AP//////cAj///////AA/wD///////
+        AA///////4AI8A///////4AI//////9wAPAP///////wAP//////+ABwD///////94h///////eIcA//
+        //////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABAAgAAAAAAAAE
+        AAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwADA3MAA8MqmAAQE
+        BAAICAgADAwMABEREQAWFhYAHBwcACIiIgApKSkAVVVVAE1NTQBCQkIAOTk5AIB8/wBQUP8AkwDWAP/s
+        zADG1u8A1ufnAJCprQAAADMAAABmAAAAmQAAAMwAADMAAAAzMwAAM2YAADOZAAAzzAAAM/8AAGYAAABm
+        MwAAZmYAAGaZAABmzAAAZv8AAJkAAACZMwAAmWYAAJmZAACZzAAAmf8AAMwAAADMMwAAzGYAAMyZAADM
+        zAAAzP8AAP9mAAD/mQAA/8wAMwAAADMAMwAzAGYAMwCZADMAzAAzAP8AMzMAADMzMwAzM2YAMzOZADMz
+        zAAzM/8AM2YAADNmMwAzZmYAM2aZADNmzAAzZv8AM5kAADOZMwAzmWYAM5mZADOZzAAzmf8AM8wAADPM
+        MwAzzGYAM8yZADPMzAAzzP8AM/8zADP/ZgAz/5kAM//MADP//wBmAAAAZgAzAGYAZgBmAJkAZgDMAGYA
+        /wBmMwAAZjMzAGYzZgBmM5kAZjPMAGYz/wBmZgAAZmYzAGZmZgBmZpkAZmbMAGaZAABmmTMAZplmAGaZ
+        mQBmmcwAZpn/AGbMAABmzDMAZsyZAGbMzABmzP8AZv8AAGb/MwBm/5kAZv/MAMwA/wD/AMwAmZkAAJkz
+        mQCZAJkAmQDMAJkAAACZMzMAmQBmAJkzzACZAP8AmWYAAJlmMwCZM2YAmWaZAJlmzACZM/8AmZkzAJmZ
+        ZgCZmZkAmZnMAJmZ/wCZzAAAmcwzAGbMZgCZzJkAmczMAJnM/wCZ/wAAmf8zAJnMZgCZ/5kAmf/MAJn/
+        /wDMAAAAmQAzAMwAZgDMAJkAzADMAJkzAADMMzMAzDNmAMwzmQDMM8wAzDP/AMxmAADMZjMAmWZmAMxm
+        mQDMZswAmWb/AMyZAADMmTMAzJlmAMyZmQDMmcwAzJn/AMzMAADMzDMAzMxmAMzMmQDMzMwAzMz/AMz/
+        AADM/zMAmf9mAMz/mQDM/8wAzP//AMwAMwD/AGYA/wCZAMwzAAD/MzMA/zNmAP8zmQD/M8wA/zP/AP9m
+        AAD/ZjMAzGZmAP9mmQD/ZswAzGb/AP+ZAAD/mTMA/5lmAP+ZmQD/mcwA/5n/AP/MAAD/zDMA/8xmAP/M
+        mQD/zMwA/8z/AP//MwDM/2YA//+ZAP//zABmZv8AZv9mAGb//wD/ZmYA/2b/AP//ZgAhAKUAX19fAHd3
+        dwCGhoYAlpaWAMvLywCysrIA19fXAN3d3QDj4+MA6urqAPHx8QD4+PgA8Pv/AKSgoACAgIAAAAD/AAD/
+        AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////
+        /////////////////////////////////wAA8QcH8//////////////zBwcHBwcHBwcHBwcHB/H/AADv
+        Cgpt//////////////MKCgoKCgoKCgoKCgoKEv8AAP8QCg7z/////////////20KCgoKCgoKCgoKCgoK
+        8QAA/5IKCuz/////////////8QoKCgoKCgoKCgoKCgptAAD//w4KDv//////////////EgoKB///////
+        //////8AAP//7AoKkv////////////8HCgoU/////////////wAA///zDgoQ//////////////8UCgq8
+        ////////////AAD///9tCgrv/////////////5IKCm3///////////8AAP////EKChT/////////////
+        /xAKCvH//////////wAA/////20KCgf/////////////kgoK6///////////AAD/////BwoKbf//////
+        ///////zDgoO8/////////8AAP//////FAoK8f/////////////sCgrs/////////wAA///////vCgpt
+        //////////////MKChD/////////AAD///////8QCg4UFBQUFBQUFBQUFA4KCpL///////8AAP//////
+        /5IKCgoKCgoKCgoKCgoKCgoKEP///////wAA/////////w4KCgoKCgoKCgoKCgoKCgoKB///////AAD/
+        ////////7AoKFOzs7Ozs7Ozs7OzrCgoU//////8AAP/////////zDgoQ//////////////8UCgq8////
+        /wAA//////////9tCgrv/////////////5IKCm3/////AAD///////////EKChT//////////////xAK
+        CvH///8AAP///////////20KCgf/////////////kgoK6////wAA////////////BwoKbf//////////
+        ////DgoO8///AAD/////////////FAoK8f/////////////sCgrs//8AAP/////////////vCgpt////
+        //////////MOChD//wAA//////////////8QCg7z/////////////20KCpL/AAD//////////////5IK
+        Cuz/////////////8QoKEP8AAP///////////////w4KDvP/////////////bQoKBwAA////////////
+        ////7+zs8f////////////+87OzvAAD///////////////////////////////////////8AAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEABAAAAAAAgAQAAAAA
+        AAAAAAAAEAAAABAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD/
+        /wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////
+        ///////wD//////////////////////////////wD//////////////////////////////wDwAAj///
+        ///////4AAAAAAAAAAAAAP/wD3AAD///////////AAAAAAAAAAAAAI/wD/AACP//////////gAAAAAAA
+        AAAAAA/wD/gAAP//////////cAAAAAAAAAAAAAjwD/8AAI//////////+AAAAAAAAAAAAAjwD/+AAA//
+        ////////9wAAf//////////wD//wAAj//////////wAAD//////////wD//4AAD//////////3AAB///
+        ///////wD//3AAB///////////AACP/////////wD///gACP//////////gAAH/////////wD///cAAH
+        //////////8AAI/////////wD///8AAI//////////+AAA/////////wD///9wAA///////////wAAj/
+        ///////wD////wAAj//////////4AAD////////wD////4AAD//////////3AACP///////wD/////AA
+        CP//////////gAAP///////wD/////gAAP//////////cAAI///////wD/////8AAI//////////8AAA
+        ///////wD/////+AAA//////////9wAAf//////wD/////9wAAAAAAAAAAAAAAAAj//////wD//////4
+        AAAAAAAAAAAAAAAAB//////wD//////3AAAAAAAAAAAAAAAACP/////wD///////AAAAAAAAAAAAAAAA
+        AP/////wD///////cAAAAAAAAAAAAAAAAI/////wD///////8AAI//////////+AAA/////wD///////
+        +AAA//////////9wAAj////wD////////wAAj//////////4AAD////wD////////4AAD//////////3
+        AACP///wD/////////AACP//////////AAAP///wD/////////gAAP//////////cAAH///wD///////
+        //cAAH//////////8AAI///wD/////////+AAA//////////+AAAf//wD/////////9wAAf/////////
+        /wAAj//wD//////////wAAj//////////4AAD//wD//////////3AAB///////////AACP/wD///////
+        ////AACP//////////gAAP/wD///////////gAAP//////////cAAI/wD///////////8AAI////////
+        //+AAA/wD///////////+AAA//////////9wAAjwD////////////wAAj//////////wAADwD///////
+        ///////////////////////wD//////////////////////////////wD///////////////////////
+        ///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAA
+        AABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
+        AADAwMAAwNzAAPDKpgAEBAQACAgIAAwMDAAREREAFhYWABwcHAAiIiIAKSkpAFVVVQBNTU0AQkJCADk5
+        OQCAfP8AUFD/AJMA1gD/7MwAxtbvANbn5wCQqa0AAAAzAAAAZgAAAJkAAADMAAAzAAAAMzMAADNmAAAz
+        mQAAM8wAADP/AABmAAAAZjMAAGZmAABmmQAAZswAAGb/AACZAAAAmTMAAJlmAACZmQAAmcwAAJn/AADM
+        AAAAzDMAAMxmAADMmQAAzMwAAMz/AAD/ZgAA/5kAAP/MADMAAAAzADMAMwBmADMAmQAzAMwAMwD/ADMz
+        AAAzMzMAMzNmADMzmQAzM8wAMzP/ADNmAAAzZjMAM2ZmADNmmQAzZswAM2b/ADOZAAAzmTMAM5lmADOZ
+        mQAzmcwAM5n/ADPMAAAzzDMAM8xmADPMmQAzzMwAM8z/ADP/MwAz/2YAM/+ZADP/zAAz//8AZgAAAGYA
+        MwBmAGYAZgCZAGYAzABmAP8AZjMAAGYzMwBmM2YAZjOZAGYzzABmM/8AZmYAAGZmMwBmZmYAZmaZAGZm
+        zABmmQAAZpkzAGaZZgBmmZkAZpnMAGaZ/wBmzAAAZswzAGbMmQBmzMwAZsz/AGb/AABm/zMAZv+ZAGb/
+        zADMAP8A/wDMAJmZAACZM5kAmQCZAJkAzACZAAAAmTMzAJkAZgCZM8wAmQD/AJlmAACZZjMAmTNmAJlm
+        mQCZZswAmTP/AJmZMwCZmWYAmZmZAJmZzACZmf8AmcwAAJnMMwBmzGYAmcyZAJnMzACZzP8Amf8AAJn/
+        MwCZzGYAmf+ZAJn/zACZ//8AzAAAAJkAMwDMAGYAzACZAMwAzACZMwAAzDMzAMwzZgDMM5kAzDPMAMwz
+        /wDMZgAAzGYzAJlmZgDMZpkAzGbMAJlm/wDMmQAAzJkzAMyZZgDMmZkAzJnMAMyZ/wDMzAAAzMwzAMzM
+        ZgDMzJkAzMzMAMzM/wDM/wAAzP8zAJn/ZgDM/5kAzP/MAMz//wDMADMA/wBmAP8AmQDMMwAA/zMzAP8z
+        ZgD/M5kA/zPMAP8z/wD/ZgAA/2YzAMxmZgD/ZpkA/2bMAMxm/wD/mQAA/5kzAP+ZZgD/mZkA/5nMAP+Z
+        /wD/zAAA/8wzAP/MZgD/zJkA/8zMAP/M/wD//zMAzP9mAP//mQD//8wAZmb/AGb/ZgBm//8A/2ZmAP9m
+        /wD//2YAIQClAF9fXwB3d3cAhoaGAJaWlgDLy8sAsrKyANfX1wDd3d0A4+PjAOrq6gDx8fEA+Pj4APD7
+        /wCkoKAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////////
+        /////////////////wAA////////////////////////////////////////////////////////////
+        /wAA/////////////////////////////////////////////////////////////wAA/xQKCgpt////
+        /////////////////+wKCgoKCgoKCgoKCgoKCgoKCgoKDvP//wAA/wcKCgoK8///////////////////
+        //MOCgoKCgoKCgoKCgoKCgoKCgoKCuz//wAA//8QCgoK7P////////////////////9tCgoKCgoKCgoK
+        CgoKCgoKCgoKCg7//wAA//+SCgoKDvP////////////////////xCgoKCgoKCgoKCgoKCgoKCgoKCgqS
+        /wAA////EAoKCpL/////////////////////bQoKCgoUFBQUFBQUFBQUFBQUFBRt/wAA////7AoKChD/
+        ////////////////////BwoKCgrv/////////////////////wAA////8w4KCgqS////////////////
+        /////xQKCgoU/////////////////////wAA/////+sKCgoU/////////////////////+8KCgoKB///
+        /////////////////wAA//////EKCgoKB/////////////////////8QCgoKbf//////////////////
+        /wAA//////9tCgoKEv////////////////////+SCgoKCvH//////////////////wAA//////+8CgoK
+        CvH/////////////////////DgoKCm3//////////////////wAA////////FAoKCm3/////////////
+        ////////7AoKCgrz/////////////////wAA////////BwoKCgrz////////////////////8w4KCgrs
+        /////////////////wAA/////////xAKCgrs/////////////////////20KCgoO8///////////////
+        /wAA/////////5IKCgoO8/////////////////////EKCgoKkv///////////////wAA//////////8Q
+        CgoKkv////////////////////9tCgoKEP///////////////wAA///////////sCgoKEP//////////
+        //////////8HCgoKCpL//////////////wAA///////////zDgoKCpL/////////////////////FAoK
+        ChT//////////////wAA////////////6woKChT/////////////////////7woKCgoH////////////
+        /wAA////////////8QoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoS/////////////wAA////////////
+        /20KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK8f///////////wAA/////////////7wKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKbf///////////wAA//////////////8UCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        CgoKCvP//////////wAA//////////////8HCgoKCkMUFBQUFBQUFBQUFBQUFBQUDgoKCuz/////////
+        /wAA////////////////EAoKCuz/////////////////////bQoKCg7z/////////wAA////////////
+        ////kgoKCg7z////////////////////8QoKCgqS/////////wAA/////////////////xAKCgrs////
+        /////////////////20KCgoQ/////////wAA/////////////////+wKCgoQ////////////////////
+        /7wKCgoKkv///////wAA//////////////////MOCgoKkv////////////////////8UCgoKFP//////
+        /wAA///////////////////rCgoKQ/////////////////////8HCgoKCgf//////wAA////////////
+        ///////xCgoKCgf/////////////////////EAoKChL//////wAA////////////////////bQoKChT/
+        ////////////////////kgoKCgrx/////wAA////////////////////vAoKCgrx////////////////
+        /////xAKCgpt/////wAA/////////////////////xQKCgpt/////////////////////+wKCgoK8///
+        /wAA/////////////////////wcKCgoK8f////////////////////MOCgoK7P///wAA////////////
+        //////////9DCgoK7P/////////////////////rCgoKDvP//wAA//////////////////////+SCgoK
+        DvP////////////////////xCgoKCpL//wAA////////////////////////EAoKCuz/////////////
+        ////////bQoKChD//wAA////////////////////////7AoKChD/////////////////////vAoKCgqS
+        /wAA////////////////////////8w4KCgqS/////////////////////xQKCgoU/wAA////////////
+        /////////////////////////////////////////////////wAA////////////////////////////
+        /////////////////////////////////wAA////////////////////////////////////////////
+        /////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAQAAAAIAAAAABAAQAAAAAAAAIAAAAAAAAAAAAABAA
+        AAAQAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A
+        /wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////
+        //////////////////AP////////////////////////////////////////8A//////////////////
+        ///////////////////////wD/////////////////////////////////////////AP+IiIf///////
+        ///////4iIiIiIiIiIiIiIiIiH//8A/wAAAP//////////////gAAAAAAAAAAAAAAAAAD//wD/gAAAj/
+        /////////////wAAAAAAAAAAAAAAAAAI//AP/wAAAP//////////////gAAAAAAAAAAAAAAAAAD/8A//
+        gAAAj//////////////wAAAAAAAAAAAAAAAAAI/wD//wAAAP//////////////gAAAAAAAAAAAAAAAAA
+        D/AP//gAAAf/////////////9wAAAAAAAAAAAAAAAAAH8A//9wAACP//////////////gAAAf///////
+        ///////wD///gAAAf/////////////9wAAAP//////////////AP//9wAACP//////////////AAAAf/
+        ////////////8A////AAAA//////////////+AAACP/////////////wD///9wAACP//////////////
+        AAAAf/////////////AP////AAAA//////////////+AAACP////////////8A////+AAACP////////
+        //////AAAA/////////////wD/////AAAA//////////////+AAACP////////////AP////+AAACP//
+        ////////////AAAA////////////8A//////AAAA//////////////+AAACP///////////wD/////+A
+        AAB//////////////3AAAA////////////AP/////3AAAI//////////////+AAAB///////////8A//
+        ////+AAAB//////////////3AAAA///////////wD//////3AAAI//////////////8AAAB/////////
+        //AP//////8AAAD//////////////3AAAI//////////8A///////3AAAI//////////////8AAAB///
+        ///////wD///////8AAAD//////////////4AAAI//////////AP///////4AAAI//////////////8A
+        AAD/////////8A////////8AAAB3d3d3d3d3d3d3d4AAAI/////////wD////////4AAAAAAAAAAAAAA
+        AAAAAAAAD/////////AP////////8AAAAAAAAAAAAAAAAAAAAAAI////////8A/////////4AAAAAAAA
+        AAAAAAAAAAAAAAD////////wD/////////cAAAAAAAAAAAAAAAAAAAAAAI////////AP/////////4AA
+        AAAAAAAAAAAAAAAAAAAAD///////8A//////////cAAAAAAAAAAAAAAAAAAAAAAH///////wD///////
+        ///wAAAH//////////////cAAAj///////AP//////////cAAAj//////////////wAAAH//////8A//
+        /////////wAAAP//////////////gAAAj//////wD///////////gAAAj//////////////wAAAP////
+        //AP///////////wAAAP//////////////gAAAj/////8A////////////gAAAj//////////////wAA
+        AP/////wD////////////wAAAP//////////////gAAAj/////AP////////////gAAAf///////////
+        //9wAAAP////8A////////////9wAAAP//////////////gAAAj////wD/////////////gAAAf/////
+        ////////9wAAAP////AP////////////9wAACP//////////////AAAAf///8A//////////////AAAA
+        f/////////////9wAACP///wD/////////////9wAACP//////////////AAAAf///AP////////////
+        //AAAA//////////////+AAACP//8A//////////////+AAACP//////////////AAAA///wD///////
+        ////////AAAA//////////////+AAACP//AP//////////////+AAACP//////////////AAAA//8A//
+        //////////////AAAA//////////////+AAACP/wD///////////////+AAAB//////////////3AAAA
+        //AP///////////////3AAAA//////////////+AAACP8A////////////////+AAAB/////////////
+        /3AAAA/wD////////////////3AAAI//////////////8AAAB/AP////////////////////////////
+        ////////////8A/////////////////////////////////////////wD///////////////////////
+        //////////////////AP////////////////////////////////////////8AAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAQAAAAIAA
+        AAABAAgAAAAAAAAQAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDA
+        wADA3MAA8MqmAAQEBAAICAgADAwMABEREQAWFhYAHBwcACIiIgApKSkAVVVVAE1NTQBCQkIAOTk5AIB8
+        /wBQUP8AkwDWAP/szADG1u8A1ufnAJCprQAAADMAAABmAAAAmQAAAMwAADMAAAAzMwAAM2YAADOZAAAz
+        zAAAM/8AAGYAAABmMwAAZmYAAGaZAABmzAAAZv8AAJkAAACZMwAAmWYAAJmZAACZzAAAmf8AAMwAAADM
+        MwAAzGYAAMyZAADMzAAAzP8AAP9mAAD/mQAA/8wAMwAAADMAMwAzAGYAMwCZADMAzAAzAP8AMzMAADMz
+        MwAzM2YAMzOZADMzzAAzM/8AM2YAADNmMwAzZmYAM2aZADNmzAAzZv8AM5kAADOZMwAzmWYAM5mZADOZ
+        zAAzmf8AM8wAADPMMwAzzGYAM8yZADPMzAAzzP8AM/8zADP/ZgAz/5kAM//MADP//wBmAAAAZgAzAGYA
+        ZgBmAJkAZgDMAGYA/wBmMwAAZjMzAGYzZgBmM5kAZjPMAGYz/wBmZgAAZmYzAGZmZgBmZpkAZmbMAGaZ
+        AABmmTMAZplmAGaZmQBmmcwAZpn/AGbMAABmzDMAZsyZAGbMzABmzP8AZv8AAGb/MwBm/5kAZv/MAMwA
+        /wD/AMwAmZkAAJkzmQCZAJkAmQDMAJkAAACZMzMAmQBmAJkzzACZAP8AmWYAAJlmMwCZM2YAmWaZAJlm
+        zACZM/8AmZkzAJmZZgCZmZkAmZnMAJmZ/wCZzAAAmcwzAGbMZgCZzJkAmczMAJnM/wCZ/wAAmf8zAJnM
+        ZgCZ/5kAmf/MAJn//wDMAAAAmQAzAMwAZgDMAJkAzADMAJkzAADMMzMAzDNmAMwzmQDMM8wAzDP/AMxm
+        AADMZjMAmWZmAMxmmQDMZswAmWb/AMyZAADMmTMAzJlmAMyZmQDMmcwAzJn/AMzMAADMzDMAzMxmAMzM
+        mQDMzMwAzMz/AMz/AADM/zMAmf9mAMz/mQDM/8wAzP//AMwAMwD/AGYA/wCZAMwzAAD/MzMA/zNmAP8z
+        mQD/M8wA/zP/AP9mAAD/ZjMAzGZmAP9mmQD/ZswAzGb/AP+ZAAD/mTMA/5lmAP+ZmQD/mcwA/5n/AP/M
+        AAD/zDMA/8xmAP/MmQD/zMwA/8z/AP//MwDM/2YA//+ZAP//zABmZv8AZv9mAGb//wD/ZmYA/2b/AP//
+        ZgAhAKUAX19fAHd3dwCGhoYAlpaWAMvLywCysrIA19fXAN3d3QDj4+MA6urqAPHx8QD4+PgA8Pv/AKSg
+        oACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK////////////////////////////
+        //////////////////////////////////////////////////////8KCv//////////////////////
+        ////////////////////////////////////////////////////////////Cgr/////////////////
+        /////////////////////////////////////////////////////////////////woK////////////
+        //////////////////////////////////////////////////////////////////////8KCv/z7Ozs
+        7Ozv/////////////////////////////5Ls7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//////Cgr/
+        /xAKCgoKDvP///////////////////////////+SCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoO8///
+        /woK//+SCgoKCgqS////////////////////////////8w4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        Cuz///8KCv///xAKCgoKEP/////////////////////////////sCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        CgoKCgoQ////Cgr////sCgoKCgqS////////////////////////////8woKCgoKCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCpL//woK////8w4KCgoKFP////////////////////////////9tCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgpD//8KCv/////rCgoKCgoH////////////////////////////8QoKCgoKChQU
+        FBQUFBQUFBQUFBQUFBQUFBQUFPH/Cgr/////8QoKCgoKEv////////////////////////////8SCgoK
+        Cgrv/////////////////////////////woK//////9tCgoKCgrx////////////////////////////
+        BwoKCgoKFP////////////////////////////8KCv//////vAoKCgoKbf//////////////////////
+        //////8UCgoKCgoH////////////////////////////Cgr///////8UCgoKCgrz////////////////
+        ////////////kgoKCgoKbf///////////////////////////woK////////BwoKCgoK7P//////////
+        //////////////////8QCgoKCgrx//////////////////////////8KCv////////8QCgoKCg7z////
+        ////////////////////////kgoKCgoKbf//////////////////////////Cgr/////////kgoKCgoK
+        kv////////////////////////////MOCgoKCg7z/////////////////////////woK//////////8Q
+        CgoKChD/////////////////////////////7AoKCgoK7P////////////////////////8KCv//////
+        ////7AoKCgoKkv////////////////////////////MOCgoKCg7/////////////////////////Cgr/
+        //////////MOCgoKChT/////////////////////////////bQoKCgoKkv//////////////////////
+        /woK////////////6woKCgoKB/////////////////////////////EKCgoKChD/////////////////
+        //////8KCv////////////EKCgoKChL/////////////////////////////bQoKCgoK7///////////
+        ////////////Cgr/////////////bQoKCgoK8f///////////////////////////wcKCgoKChT/////
+        /////////////////woK/////////////7wKCgoKCm3/////////////////////////////FAoKCgoK
+        B/////////////////////8KCv//////////////FAoKCgoK8////////////////////////////+8K
+        CgoKCm3/////////////////////Cgr//////////////wcKCgoKCuz/////////////////////////
+        ////EAoKCgoK8f///////////////////woK////////////////EAoKCgoO8///////////////////
+        /////////5IKCgoKCm3///////////////////8KCv///////////////5IKCgoKCpL/////////////
+        ////////////////DgoKCgoK8///////////////////Cgr/////////////////EAoKCgoQBwcHBwcH
+        BwcHBwcHBwcHBwcHBwcHBxIKCgoKCuz//////////////////woK/////////////////+wKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoO8/////////////////8KCv/////////////////zDgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCpL/////////////////Cgr/////////////////
+        /+sKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoQ/////////////////woK////////////
+        ///////xCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCpL///////////////8KCv//////
+        /////////////20KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoU////////////////Cgr/
+        //////////////////+8CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgf/////////////
+        /woK/////////////////////xQKCgoKCvH////////////////////////////vCgoKCgoS////////
+        //////8KCv////////////////////8HCgoKCgrs/////////////////////////////xAKCgoKCvH/
+        ////////////Cgr//////////////////////xAKCgoKDvP///////////////////////////+SCgoK
+        Cgpt/////////////woK//////////////////////+SCgoKCgrs////////////////////////////
+        /w4KCgoKCvP///////////8KCv///////////////////////xAKCgoKEP//////////////////////
+        ///////sCgoKCgrs////////////Cgr////////////////////////sCgoKCgqS////////////////
+        ////////////8w4KCgoKDvP//////////woK////////////////////////8w4KCgoKQ///////////
+        //////////////////9tCgoKCgqS//////////8KCv/////////////////////////sCgoKCgoH////
+        ////////////////////////8QoKCgoKEP//////////Cgr/////////////////////////8QoKCgoK
+        FP////////////////////////////9tCgoKCgqS/////////woK//////////////////////////9t
+        CgoKCgrx////////////////////////////BwoKCgoKFP////////8KCv//////////////////////
+        ////8QoKCgoKbf////////////////////////////8UCgoKCgoH////////Cgr/////////////////
+        //////////8UCgoKCgrx////////////////////////////7woKCgoKEv///////woK////////////
+        ////////////////BwoKCgoK7P////////////////////////////8QCgoKCgrx//////8KCv//////
+        //////////////////////9DCgoKCg7z////////////////////////////kgoKCgoKbf//////Cgr/
+        ////////////////////////////kgoKCgoK7P////////////////////////////8OCgoKCgrz////
+        /woK//////////////////////////////8QCgoKChD/////////////////////////////7AoKCgoK
+        7P////8KCv//////////////////////////////7AoKCgoKkv////////////////////////////MO
+        CgoKCg7z////Cgr///////////////////////////////MOCgoKCkP/////////////////////////
+        ////bQoKCgoKkv///woK////////////////////////////////7AoKCgoKB///////////////////
+        //////////EKCgoKChD///8KCv////////////////////////////////EKCgoKChT/////////////
+        ////////////////bQoKCgoKkv//Cgr/////////////////////////////////bQoKCgoK8f//////
+        /////////////////////wcKCgoKChT//woK//////////////////////////////////EKCgoKCm3/
+        ////////////////////////////FAoKCgoKB/8KCv//////////////////////////////////////
+        ////////////////////////////////////////////Cgr/////////////////////////////////
+        /////////////////////////////////////////////////woK////////////////////////////
+        //////////////////////////////////////////////////////8KCv//////////////////////
+        ////////////////////////////////////////////////////////////CgoKCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+</value>
+  </data>
+</root>
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/HeuristicLab.MainForm.WindowsForms.csproj
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/HeuristicLab.MainForm.WindowsForms.csproj	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/HeuristicLab.MainForm.WindowsForms.csproj	(revision 2426)
@@ -0,0 +1,187 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{AB687BBE-1BFE-476B-906D-44237135431D}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.MainForm.WindowsForms</RootNamespace>
+    <AssemblyName>HeuristicLab.MainForm.WindowsForms-3.2</AssemblyName>
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <SignAssembly>true</SignAssembly>
+    <AssemblyOriginatorKeyFile>HeuristicLab.snk</AssemblyOriginatorKeyFile>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x64\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>bin\x64\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>bin\x86\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>bin\x86\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Core">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Drawing" />
+    <Reference Include="System.Windows.Forms" />
+    <Reference Include="System.Xml.Linq">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data.DataSetExtensions">
+      <RequiredTargetFramework>3.5</RequiredTargetFramework>
+    </Reference>
+    <Reference Include="System.Data" />
+    <Reference Include="System.Xml" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="DockForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="DockForm.Designer.cs">
+      <DependentUpon>DockForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DockingMainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="DockingMainForm.Designer.cs">
+      <DependentUpon>DockingMainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="DocumentForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="DocumentForm.Designer.cs">
+      <DependentUpon>DocumentForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="HeuristicLabMainFormWindowsFormsPlugin.cs" />
+    <Compile Include="MainFormBase.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MainFormBase.Designer.cs">
+      <DependentUpon>MainFormBase.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MenuItemBase.cs" />
+    <Compile Include="MultipleDocumentMainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MultipleDocumentMainForm.Designer.cs">
+      <DependentUpon>MultipleDocumentMainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="SingleDocumentMainForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="SingleDocumentMainForm.Designer.cs">
+      <DependentUpon>SingleDocumentMainForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="ToolBarItemBase.cs" />
+    <Compile Include="ViewBase.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ViewBase.Designer.cs">
+      <DependentUpon>ViewBase.cs</DependentUpon>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="HeuristicLab.snk" />
+    <None Include="Properties\AssemblyInfo.frame" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.MainForm\3.2\HeuristicLab.MainForm-3.2.csproj">
+      <Project>{3BD61258-31DA-4B09-89C0-4F71FEF5F05A}</Project>
+      <Name>HeuristicLab.MainForm-3.2</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
+      <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
+      <Name>HeuristicLab.PluginInfrastructure</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\WinFormsUI\WinFormsUI.csproj">
+      <Project>{C75532C4-765B-418E-B09B-46D36B2ABDB1}</Project>
+      <Name>WinFormsUI</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="DockForm.resx">
+      <DependentUpon>DockForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="DockingMainForm.resx">
+      <DependentUpon>DockingMainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="DocumentForm.resx">
+      <DependentUpon>DocumentForm.cs</DependentUpon>
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
+    <EmbeddedResource Include="MainFormBase.resx">
+      <DependentUpon>MainFormBase.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="MultipleDocumentMainForm.resx">
+      <DependentUpon>MultipleDocumentMainForm.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="SingleDocumentMainForm.resx">
+      <DependentUpon>SingleDocumentMainForm.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
+       Other similar extension points exist, see Microsoft.Common.targets.
+  <Target Name="BeforeBuild">
+  </Target>
+  <Target Name="AfterBuild">
+  </Target>
+  -->
+  <PropertyGroup>
+    <PreBuildEvent>set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
+set ProjectDir=$(ProjectDir)
+set SolutionDir=$(SolutionDir)
+set Outdir=$(Outdir)
+
+call PreBuildEvent.cmd</PreBuildEvent>
+  </PropertyGroup>
+</Project>
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/HeuristicLabMainFormWindowsFormsPlugin.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/HeuristicLabMainFormWindowsFormsPlugin.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/HeuristicLabMainFormWindowsFormsPlugin.cs	(revision 2426)
@@ -0,0 +1,33 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  [ClassInfo(Name = "HeuristicLab.MainForm.WindowsForms-3.2")]
+  [PluginFile(Filename = "HeuristicLab.MainForm.WindowsForms-3.2.dll", Filetype = PluginFileType.Assembly)]  
+  [Dependency(Dependency = "HeuristicLab.MainForm-3.2")]
+  public class HeuristicLabMainFormTestPlugin : PluginBase {
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.Designer.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.Designer.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.Designer.cs	(revision 2426)
@@ -0,0 +1,80 @@
+﻿namespace HeuristicLab.MainForm.WindowsForms {
+  partial class MainFormBase {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainFormBase));
+      this.menuStrip = new System.Windows.Forms.MenuStrip();
+      this.toolStrip = new System.Windows.Forms.ToolStrip();
+      this.statusStrip = new System.Windows.Forms.StatusStrip();
+      this.statusStrip.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // menuStrip
+      // 
+      this.menuStrip.Location = new System.Drawing.Point(0, 0);
+      this.menuStrip.Name = "menuStrip";
+      this.menuStrip.Size = new System.Drawing.Size(624, 24);
+      this.menuStrip.TabIndex = 0;
+      this.menuStrip.Text = "menuStrip";
+      // 
+      // toolStrip
+      // 
+      this.toolStrip.Location = new System.Drawing.Point(0, 24);
+      this.toolStrip.Name = "toolStrip";
+      this.toolStrip.Size = new System.Drawing.Size(624, 25);
+      this.toolStrip.TabIndex = 1;
+      // 
+      // statusStrip
+      // 
+      this.statusStrip.Location = new System.Drawing.Point(0, 390);
+      this.statusStrip.Name = "statusStrip";
+      this.statusStrip.Size = new System.Drawing.Size(624, 22);
+      this.statusStrip.TabIndex = 2;
+      this.statusStrip.Text = "statusStrip";
+      // 
+      // MainFormBase
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(624, 412);
+      this.Controls.Add(this.statusStrip);
+      this.Controls.Add(this.toolStrip);
+      this.Controls.Add(this.menuStrip);
+      this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+      this.MainMenuStrip = this.menuStrip;
+      this.Name = "MainFormBase";
+      this.statusStrip.ResumeLayout(false);
+      this.statusStrip.PerformLayout();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.ToolStrip toolStrip;
+    protected System.Windows.Forms.StatusStrip statusStrip;
+    protected System.Windows.Forms.MenuStrip menuStrip;
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.cs	(revision 2426)
@@ -0,0 +1,224 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+using HeuristicLab.PluginInfrastructure;
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  public partial class MainFormBase : Form, IMainForm {
+    protected MainFormBase()
+      : base() {
+      InitializeComponent();
+      this.views = new List<IView>();
+      this.userInterfaceItems = new List<IUserInterfaceItem>();
+      MainFormManager.RegisterMainForm(this);
+    }
+
+    protected MainFormBase(Type userInterfaceItemType)
+      : this() {
+      this.userInterfaceItemType = userInterfaceItemType;
+      CreateGUI();
+      OnActiveViewChanged();
+      FireMainFormChanged();
+    }
+
+    #region IMainForm Members
+    public string Title {
+      get { return this.Text; }
+      set {
+        if (InvokeRequired) {
+          Action<string> action = delegate(string s) { this.Title = s; };
+          Invoke(action, value);
+        } else
+          this.Text = value;
+      }
+    }
+
+    public override Cursor Cursor {
+      get { return base.Cursor; }
+      set {
+        if (InvokeRequired) {
+          Action<Cursor> action = delegate(Cursor c) { this.Cursor = c; };
+          Invoke(action, value);
+        } else
+          base.Cursor = value;
+      }
+    }
+
+    private Type userInterfaceItemType;
+    public Type UserInterfaceItemType {
+      get { return this.userInterfaceItemType; }
+      protected set { this.userInterfaceItemType = value; }
+    }
+
+    protected List<IView> views;
+    public IEnumerable<IView> Views {
+      get { return views; }
+    }
+
+    private IView activeView;
+    public IView ActiveView {
+      get { return this.activeView; }
+      protected set {
+        if (this.activeView != value) {
+          if (InvokeRequired) {
+            Action<IView> action = delegate(IView activeView) { this.ActiveView = activeView; };
+            Invoke(action, value);
+          } else {
+            this.activeView = value;
+            OnActiveViewChanged();
+          }
+        }
+      }
+    }
+
+    private List<IUserInterfaceItem> userInterfaceItems;
+    protected IEnumerable<IUserInterfaceItem> UserInterfaceItems {
+      get { return this.userInterfaceItems; }
+    }
+
+    public event EventHandler ActiveViewChanged;
+    protected virtual void OnActiveViewChanged() {
+      if (InvokeRequired)
+        Invoke((MethodInvoker)OnActiveViewChanged);
+      else if (ActiveViewChanged != null)
+        ActiveViewChanged(this, new EventArgs());
+    }
+
+    public event EventHandler Changed;
+    public void FireMainFormChanged() {
+      OnMainFormChanged();
+    }
+    protected virtual void OnMainFormChanged() {
+      if (InvokeRequired)
+        Invoke((MethodInvoker)FireMainFormChanged);
+      else if (Changed != null)
+        Changed(this, new EventArgs());
+    }
+
+    public virtual void ShowView(IView view) {
+      if (!views.Contains(view)) {
+        views.Add(view);
+      }
+      this.ActiveView = view;
+    }
+
+    public virtual void CloseView(IView view) {
+    }
+
+    public virtual void CloseAllViews() {
+      foreach (IView view in views.ToArray())
+        CloseView(view);
+    }
+
+    protected virtual void ViewClosed(IView view) {
+      views.Remove(view);
+      if (ActiveView == view)
+        ActiveView = null;
+    }
+    #endregion
+
+    #region create menu and toolbar
+    protected virtual void CreateGUI() {
+      DiscoveryService ds = new DiscoveryService();
+
+      object[] items = ds.GetInstances(userInterfaceItemType);
+      IEnumerable<MenuItemBase> toolStripMenuItems =
+        from mi in items
+        where mi is MenuItemBase
+        orderby ((MenuItemBase)mi).Position
+        select (MenuItemBase)mi;
+      foreach (MenuItemBase menuItem in toolStripMenuItems)
+        AddToolStripMenuItem(menuItem);
+
+      items = ds.GetInstances(userInterfaceItemType);
+      IEnumerable<ToolBarItemBase> toolStripButtonItems =
+        from bi in items
+        where bi is ToolBarItemBase
+        orderby ((ToolBarItemBase)bi).Position
+        select (ToolBarItemBase)bi;
+      foreach (ToolBarItemBase toolStripButtonItem in toolStripButtonItems)
+        AddToolStripButtonItem(toolStripButtonItem);
+    }
+
+    private void AddToolStripMenuItem(MenuItemBase menuItem) {
+      ToolStripMenuItem item = new ToolStripMenuItem();
+      SetToolStripItemProperties(item, menuItem);
+      menuItem.ToolStripItem = item;
+      item.ShortcutKeys = menuItem.ShortCutKeys;
+      item.DisplayStyle = menuItem.ToolStripItemDisplayStyle;
+      this.InsertItem(menuItem.Structure, typeof(ToolStripMenuItem), item, menuStrip.Items);
+    }
+
+    private void AddToolStripButtonItem(ToolBarItemBase buttonItem) {
+      ToolStripItem item;
+      if (buttonItem.IsDropDownButton)
+        item = new ToolStripDropDownButton();
+      else
+        item = new ToolStripButton();
+
+      SetToolStripItemProperties(item, buttonItem);
+      item.DisplayStyle = buttonItem.ToolStripItemDisplayStyle;
+      buttonItem.ToolStripItem = item;
+      this.InsertItem(buttonItem.Structure, typeof(ToolStripDropDownButton), item, toolStrip.Items);
+    }
+
+    private void InsertItem(IEnumerable<string> structure, Type t,ToolStripItem item, ToolStripItemCollection parentItems) {
+      ToolStripDropDownItem parent = null;
+      foreach (string s in structure) {
+        if (parentItems.ContainsKey(s))
+          parent = (ToolStripDropDownItem)parentItems[s];
+        else {
+          parent = (ToolStripDropDownItem)Activator.CreateInstance(t, s,null,null,s); ;
+          parentItems.Add(parent);
+        }
+        parentItems = parent.DropDownItems;
+      }
+      parentItems.Add(item);
+    }
+
+    private void SetToolStripItemProperties(ToolStripItem toolStripItem, IUserInterfaceItem userInterfaceItem) {
+      toolStripItem.Name = userInterfaceItem.Name;
+      toolStripItem.Text = userInterfaceItem.Name;
+      toolStripItem.ToolTipText = userInterfaceItem.ToolTipText;
+      toolStripItem.Tag = userInterfaceItem;
+      toolStripItem.Image = userInterfaceItem.Image;
+      this.ActiveViewChanged += new EventHandler(userInterfaceItem.ActiveViewChanged);
+      this.Changed += new EventHandler(userInterfaceItem.MainFormChanged);
+      toolStripItem.Click += new EventHandler(ToolStripItemClicked);
+      this.userInterfaceItems.Add(userInterfaceItem);
+    }
+
+    private void ToolStripItemClicked(object sender, EventArgs e) {
+      System.Windows.Forms.ToolStripItem item = (System.Windows.Forms.ToolStripItem)sender;
+      ((IUserInterfaceItem)item.Tag).Execute();
+    }
+    #endregion
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.resx
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.resx	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.resx	(revision 2426)
@@ -0,0 +1,443 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="menuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="toolStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>132, 17</value>
+  </metadata>
+  <metadata name="statusStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>237, 17</value>
+  </metadata>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.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>
+        AAABAAgAEBAQAAAAAAAoAQAAhgAAABAQAAAAAAAAaAUAAK4BAAAgIBAAAAAAAOgCAAAWBwAAICAAAAAA
+        AACoCAAA/gkAADAwEAAAAAAAaAYAAKYSAAAwMAAAAAAAAKgOAAAOGQAAQEAQAAAAAABoCgAAticAAEBA
+        AAAAAAAAKBYAAB4yAAAoAAAAEAAAACAAAAABAAQAAAAAAIAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAA
+        gAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
+        AAAAAAAAD/////////APD///gAAA8A8H//9wj//wDwj///gP//APgH//9wf/8A/wj///AP/wD/gIiIiA
+        f/AP/wAAAACP8A//gHd3eAfwD/9wj///CPAP//gP//+A8A//9w////DwD///D///+PAP////////8AAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAACA
+        AAAAgIAAgAAAAIAAgACAgAAAwMDAAMDcwADwyqYABAQEAAgICAAMDAwAERERABYWFgAcHBwAIiIiACkp
+        KQBVVVUATU1NAEJCQgA5OTkAgHz/AFBQ/wCTANYA/+zMAMbW7wDW5+cAkKmtAAAAMwAAAGYAAACZAAAA
+        zAAAMwAAADMzAAAzZgAAM5kAADPMAAAz/wAAZgAAAGYzAABmZgAAZpkAAGbMAABm/wAAmQAAAJkzAACZ
+        ZgAAmZkAAJnMAACZ/wAAzAAAAMwzAADMZgAAzJkAAMzMAADM/wAA/2YAAP+ZAAD/zAAzAAAAMwAzADMA
+        ZgAzAJkAMwDMADMA/wAzMwAAMzMzADMzZgAzM5kAMzPMADMz/wAzZgAAM2YzADNmZgAzZpkAM2bMADNm
+        /wAzmQAAM5kzADOZZgAzmZkAM5nMADOZ/wAzzAAAM8wzADPMZgAzzJkAM8zMADPM/wAz/zMAM/9mADP/
+        mQAz/8wAM///AGYAAABmADMAZgBmAGYAmQBmAMwAZgD/AGYzAABmMzMAZjNmAGYzmQBmM8wAZjP/AGZm
+        AABmZjMAZmZmAGZmmQBmZswAZpkAAGaZMwBmmWYAZpmZAGaZzABmmf8AZswAAGbMMwBmzJkAZszMAGbM
+        /wBm/wAAZv8zAGb/mQBm/8wAzAD/AP8AzACZmQAAmTOZAJkAmQCZAMwAmQAAAJkzMwCZAGYAmTPMAJkA
+        /wCZZgAAmWYzAJkzZgCZZpkAmWbMAJkz/wCZmTMAmZlmAJmZmQCZmcwAmZn/AJnMAACZzDMAZsxmAJnM
+        mQCZzMwAmcz/AJn/AACZ/zMAmcxmAJn/mQCZ/8wAmf//AMwAAACZADMAzABmAMwAmQDMAMwAmTMAAMwz
+        MwDMM2YAzDOZAMwzzADMM/8AzGYAAMxmMwCZZmYAzGaZAMxmzACZZv8AzJkAAMyZMwDMmWYAzJmZAMyZ
+        zADMmf8AzMwAAMzMMwDMzGYAzMyZAMzMzADMzP8AzP8AAMz/MwCZ/2YAzP+ZAMz/zADM//8AzAAzAP8A
+        ZgD/AJkAzDMAAP8zMwD/M2YA/zOZAP8zzAD/M/8A/2YAAP9mMwDMZmYA/2aZAP9mzADMZv8A/5kAAP+Z
+        MwD/mWYA/5mZAP+ZzAD/mf8A/8wAAP/MMwD/zGYA/8yZAP/MzAD/zP8A//8zAMz/ZgD//5kA///MAGZm
+        /wBm/2YAZv//AP9mZgD/Zv8A//9mACEApQBfX18Ad3d3AIaGhgCWlpYAy8vLALKysgDX19cA3d3dAOPj
+        4wDq6uoA8fHxAPj4+ADw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8ACgoKCgoK
+        CgoKCgoKCgoKCgr//////////////////woK/xT//////20KFBQUFP8KCv8K8f/////xCpL/////Cgr/
+        EG3//////20U/////woK/5IK8f////8HCgf///8KCv//Duz//////xQU////Cgr//+wO7Ozs7OwSCvH/
+        /woK///zDgoKCgoKCgpt//8KCv///+sOBwcHBwfsCvH/Cgr////xCpL//////w7s/woK/////21D////
+        ///sDv8KCv////+8Cv//////8w7/Cgr//////xT///////9t/woK//////////////////8KCgoKCgoK
+        CgoKCgoKCgoKCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABAAQAAAAAAAACAAAAAAAAAAAAABAAAAAQAAAAAAAAAAAA
+        gAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAAA
+        AAAAAAAAAAAAAAAAAAAP///////////////////wB3f///////93d3d3d3d38AcAj///////AAAAAAAA
+        CPAPAA///////4AAAAAAAABwD4AI//////9wAAAAAAAAgA/wAP//////+AB///////AP+ACP//////cA
+        D//////wD/8AD///////AAf/////8A//gAf//////4AI//////AP/3AA///////wAH/////wD//4AH//
+        ////+ACP////8A//9wCP//////8AD/////AP//8AB///////gAj////wD///cAj///////AA////8A//
+        //AAAAAAAAAAAI////AP///4AAAAAAAAAAAP///wD////wAAAAAAAAAAB///8A////+AAIiIiIiIgAD/
+        //AP////8AD///////AAf//wD/////gAf//////4AI//8A/////3AA///////wAH//AP/////4AH////
+        //+ACP/wD/////9wCP//////8AD/8A//////8AB///////gAj/AP//////cAj///////AA/wD///////
+        AA///////4AI8A///////4AI//////9wAPAP///////wAP//////+ABwD///////94h///////eIcA//
+        //////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAIAAAAEAAAAABAAgAAAAAAAAE
+        AAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwADA3MAA8MqmAAQE
+        BAAICAgADAwMABEREQAWFhYAHBwcACIiIgApKSkAVVVVAE1NTQBCQkIAOTk5AIB8/wBQUP8AkwDWAP/s
+        zADG1u8A1ufnAJCprQAAADMAAABmAAAAmQAAAMwAADMAAAAzMwAAM2YAADOZAAAzzAAAM/8AAGYAAABm
+        MwAAZmYAAGaZAABmzAAAZv8AAJkAAACZMwAAmWYAAJmZAACZzAAAmf8AAMwAAADMMwAAzGYAAMyZAADM
+        zAAAzP8AAP9mAAD/mQAA/8wAMwAAADMAMwAzAGYAMwCZADMAzAAzAP8AMzMAADMzMwAzM2YAMzOZADMz
+        zAAzM/8AM2YAADNmMwAzZmYAM2aZADNmzAAzZv8AM5kAADOZMwAzmWYAM5mZADOZzAAzmf8AM8wAADPM
+        MwAzzGYAM8yZADPMzAAzzP8AM/8zADP/ZgAz/5kAM//MADP//wBmAAAAZgAzAGYAZgBmAJkAZgDMAGYA
+        /wBmMwAAZjMzAGYzZgBmM5kAZjPMAGYz/wBmZgAAZmYzAGZmZgBmZpkAZmbMAGaZAABmmTMAZplmAGaZ
+        mQBmmcwAZpn/AGbMAABmzDMAZsyZAGbMzABmzP8AZv8AAGb/MwBm/5kAZv/MAMwA/wD/AMwAmZkAAJkz
+        mQCZAJkAmQDMAJkAAACZMzMAmQBmAJkzzACZAP8AmWYAAJlmMwCZM2YAmWaZAJlmzACZM/8AmZkzAJmZ
+        ZgCZmZkAmZnMAJmZ/wCZzAAAmcwzAGbMZgCZzJkAmczMAJnM/wCZ/wAAmf8zAJnMZgCZ/5kAmf/MAJn/
+        /wDMAAAAmQAzAMwAZgDMAJkAzADMAJkzAADMMzMAzDNmAMwzmQDMM8wAzDP/AMxmAADMZjMAmWZmAMxm
+        mQDMZswAmWb/AMyZAADMmTMAzJlmAMyZmQDMmcwAzJn/AMzMAADMzDMAzMxmAMzMmQDMzMwAzMz/AMz/
+        AADM/zMAmf9mAMz/mQDM/8wAzP//AMwAMwD/AGYA/wCZAMwzAAD/MzMA/zNmAP8zmQD/M8wA/zP/AP9m
+        AAD/ZjMAzGZmAP9mmQD/ZswAzGb/AP+ZAAD/mTMA/5lmAP+ZmQD/mcwA/5n/AP/MAAD/zDMA/8xmAP/M
+        mQD/zMwA/8z/AP//MwDM/2YA//+ZAP//zABmZv8AZv9mAGb//wD/ZmYA/2b/AP//ZgAhAKUAX19fAHd3
+        dwCGhoYAlpaWAMvLywCysrIA19fXAN3d3QDj4+MA6urqAPHx8QD4+PgA8Pv/AKSgoACAgIAAAAD/AAD/
+        AAAA//8A/wAAAP8A/wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////
+        /////////////////////////////////wAA8QcH8//////////////zBwcHBwcHBwcHBwcHB/H/AADv
+        Cgpt//////////////MKCgoKCgoKCgoKCgoKEv8AAP8QCg7z/////////////20KCgoKCgoKCgoKCgoK
+        8QAA/5IKCuz/////////////8QoKCgoKCgoKCgoKCgptAAD//w4KDv//////////////EgoKB///////
+        //////8AAP//7AoKkv////////////8HCgoU/////////////wAA///zDgoQ//////////////8UCgq8
+        ////////////AAD///9tCgrv/////////////5IKCm3///////////8AAP////EKChT/////////////
+        /xAKCvH//////////wAA/////20KCgf/////////////kgoK6///////////AAD/////BwoKbf//////
+        ///////zDgoO8/////////8AAP//////FAoK8f/////////////sCgrs/////////wAA///////vCgpt
+        //////////////MKChD/////////AAD///////8QCg4UFBQUFBQUFBQUFA4KCpL///////8AAP//////
+        /5IKCgoKCgoKCgoKCgoKCgoKEP///////wAA/////////w4KCgoKCgoKCgoKCgoKCgoKB///////AAD/
+        ////////7AoKFOzs7Ozs7Ozs7OzrCgoU//////8AAP/////////zDgoQ//////////////8UCgq8////
+        /wAA//////////9tCgrv/////////////5IKCm3/////AAD///////////EKChT//////////////xAK
+        CvH///8AAP///////////20KCgf/////////////kgoK6////wAA////////////BwoKbf//////////
+        ////DgoO8///AAD/////////////FAoK8f/////////////sCgrs//8AAP/////////////vCgpt////
+        //////////MOChD//wAA//////////////8QCg7z/////////////20KCpL/AAD//////////////5IK
+        Cuz/////////////8QoKEP8AAP///////////////w4KDvP/////////////bQoKBwAA////////////
+        ////7+zs8f////////////+87OzvAAD///////////////////////////////////////8AAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAwAAAAYAAAAAEABAAAAAAAgAQAAAAA
+        AAAAAAAAEAAAABAAAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAICAgAAAAP8AAP8AAAD/
+        /wD/AAAA/wD/AP//AAD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////
+        ///////wD//////////////////////////////wD//////////////////////////////wDwAAj///
+        ///////4AAAAAAAAAAAAAP/wD3AAD///////////AAAAAAAAAAAAAI/wD/AACP//////////gAAAAAAA
+        AAAAAA/wD/gAAP//////////cAAAAAAAAAAAAAjwD/8AAI//////////+AAAAAAAAAAAAAjwD/+AAA//
+        ////////9wAAf//////////wD//wAAj//////////wAAD//////////wD//4AAD//////////3AAB///
+        ///////wD//3AAB///////////AACP/////////wD///gACP//////////gAAH/////////wD///cAAH
+        //////////8AAI/////////wD///8AAI//////////+AAA/////////wD///9wAA///////////wAAj/
+        ///////wD////wAAj//////////4AAD////////wD////4AAD//////////3AACP///////wD/////AA
+        CP//////////gAAP///////wD/////gAAP//////////cAAI///////wD/////8AAI//////////8AAA
+        ///////wD/////+AAA//////////9wAAf//////wD/////9wAAAAAAAAAAAAAAAAj//////wD//////4
+        AAAAAAAAAAAAAAAAB//////wD//////3AAAAAAAAAAAAAAAACP/////wD///////AAAAAAAAAAAAAAAA
+        AP/////wD///////cAAAAAAAAAAAAAAAAI/////wD///////8AAI//////////+AAA/////wD///////
+        +AAA//////////9wAAj////wD////////wAAj//////////4AAD////wD////////4AAD//////////3
+        AACP///wD/////////AACP//////////AAAP///wD/////////gAAP//////////cAAH///wD///////
+        //cAAH//////////8AAI///wD/////////+AAA//////////+AAAf//wD/////////9wAAf/////////
+        /wAAj//wD//////////wAAj//////////4AAD//wD//////////3AAB///////////AACP/wD///////
+        ////AACP//////////gAAP/wD///////////gAAP//////////cAAI/wD///////////8AAI////////
+        //+AAA/wD///////////+AAA//////////9wAAjwD////////////wAAj//////////wAADwD///////
+        ///////////////////////wD//////////////////////////////wD///////////////////////
+        ///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAADAA
+        AABgAAAAAQAIAAAAAAAACQAAAAAAAAAAAAAAAQAAAAEAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICA
+        AADAwMAAwNzAAPDKpgAEBAQACAgIAAwMDAAREREAFhYWABwcHAAiIiIAKSkpAFVVVQBNTU0AQkJCADk5
+        OQCAfP8AUFD/AJMA1gD/7MwAxtbvANbn5wCQqa0AAAAzAAAAZgAAAJkAAADMAAAzAAAAMzMAADNmAAAz
+        mQAAM8wAADP/AABmAAAAZjMAAGZmAABmmQAAZswAAGb/AACZAAAAmTMAAJlmAACZmQAAmcwAAJn/AADM
+        AAAAzDMAAMxmAADMmQAAzMwAAMz/AAD/ZgAA/5kAAP/MADMAAAAzADMAMwBmADMAmQAzAMwAMwD/ADMz
+        AAAzMzMAMzNmADMzmQAzM8wAMzP/ADNmAAAzZjMAM2ZmADNmmQAzZswAM2b/ADOZAAAzmTMAM5lmADOZ
+        mQAzmcwAM5n/ADPMAAAzzDMAM8xmADPMmQAzzMwAM8z/ADP/MwAz/2YAM/+ZADP/zAAz//8AZgAAAGYA
+        MwBmAGYAZgCZAGYAzABmAP8AZjMAAGYzMwBmM2YAZjOZAGYzzABmM/8AZmYAAGZmMwBmZmYAZmaZAGZm
+        zABmmQAAZpkzAGaZZgBmmZkAZpnMAGaZ/wBmzAAAZswzAGbMmQBmzMwAZsz/AGb/AABm/zMAZv+ZAGb/
+        zADMAP8A/wDMAJmZAACZM5kAmQCZAJkAzACZAAAAmTMzAJkAZgCZM8wAmQD/AJlmAACZZjMAmTNmAJlm
+        mQCZZswAmTP/AJmZMwCZmWYAmZmZAJmZzACZmf8AmcwAAJnMMwBmzGYAmcyZAJnMzACZzP8Amf8AAJn/
+        MwCZzGYAmf+ZAJn/zACZ//8AzAAAAJkAMwDMAGYAzACZAMwAzACZMwAAzDMzAMwzZgDMM5kAzDPMAMwz
+        /wDMZgAAzGYzAJlmZgDMZpkAzGbMAJlm/wDMmQAAzJkzAMyZZgDMmZkAzJnMAMyZ/wDMzAAAzMwzAMzM
+        ZgDMzJkAzMzMAMzM/wDM/wAAzP8zAJn/ZgDM/5kAzP/MAMz//wDMADMA/wBmAP8AmQDMMwAA/zMzAP8z
+        ZgD/M5kA/zPMAP8z/wD/ZgAA/2YzAMxmZgD/ZpkA/2bMAMxm/wD/mQAA/5kzAP+ZZgD/mZkA/5nMAP+Z
+        /wD/zAAA/8wzAP/MZgD/zJkA/8zMAP/M/wD//zMAzP9mAP//mQD//8wAZmb/AGb/ZgBm//8A/2ZmAP9m
+        /wD//2YAIQClAF9fXwB3d3cAhoaGAJaWlgDLy8sAsrKyANfX1wDd3d0A4+PjAOrq6gDx8fEA+Pj4APD7
+        /wCkoKAAgICAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////////////////////////////////////////
+        /////////////////wAA////////////////////////////////////////////////////////////
+        /wAA/////////////////////////////////////////////////////////////wAA/xQKCgpt////
+        /////////////////+wKCgoKCgoKCgoKCgoKCgoKCgoKDvP//wAA/wcKCgoK8///////////////////
+        //MOCgoKCgoKCgoKCgoKCgoKCgoKCuz//wAA//8QCgoK7P////////////////////9tCgoKCgoKCgoK
+        CgoKCgoKCgoKCg7//wAA//+SCgoKDvP////////////////////xCgoKCgoKCgoKCgoKCgoKCgoKCgqS
+        /wAA////EAoKCpL/////////////////////bQoKCgoUFBQUFBQUFBQUFBQUFBRt/wAA////7AoKChD/
+        ////////////////////BwoKCgrv/////////////////////wAA////8w4KCgqS////////////////
+        /////xQKCgoU/////////////////////wAA/////+sKCgoU/////////////////////+8KCgoKB///
+        /////////////////wAA//////EKCgoKB/////////////////////8QCgoKbf//////////////////
+        /wAA//////9tCgoKEv////////////////////+SCgoKCvH//////////////////wAA//////+8CgoK
+        CvH/////////////////////DgoKCm3//////////////////wAA////////FAoKCm3/////////////
+        ////////7AoKCgrz/////////////////wAA////////BwoKCgrz////////////////////8w4KCgrs
+        /////////////////wAA/////////xAKCgrs/////////////////////20KCgoO8///////////////
+        /wAA/////////5IKCgoO8/////////////////////EKCgoKkv///////////////wAA//////////8Q
+        CgoKkv////////////////////9tCgoKEP///////////////wAA///////////sCgoKEP//////////
+        //////////8HCgoKCpL//////////////wAA///////////zDgoKCpL/////////////////////FAoK
+        ChT//////////////wAA////////////6woKChT/////////////////////7woKCgoH////////////
+        /wAA////////////8QoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoS/////////////wAA////////////
+        /20KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK8f///////////wAA/////////////7wKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKbf///////////wAA//////////////8UCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        CgoKCvP//////////wAA//////////////8HCgoKCkMUFBQUFBQUFBQUFBQUFBQUDgoKCuz/////////
+        /wAA////////////////EAoKCuz/////////////////////bQoKCg7z/////////wAA////////////
+        ////kgoKCg7z////////////////////8QoKCgqS/////////wAA/////////////////xAKCgrs////
+        /////////////////20KCgoQ/////////wAA/////////////////+wKCgoQ////////////////////
+        /7wKCgoKkv///////wAA//////////////////MOCgoKkv////////////////////8UCgoKFP//////
+        /wAA///////////////////rCgoKQ/////////////////////8HCgoKCgf//////wAA////////////
+        ///////xCgoKCgf/////////////////////EAoKChL//////wAA////////////////////bQoKChT/
+        ////////////////////kgoKCgrx/////wAA////////////////////vAoKCgrx////////////////
+        /////xAKCgpt/////wAA/////////////////////xQKCgpt/////////////////////+wKCgoK8///
+        /wAA/////////////////////wcKCgoK8f////////////////////MOCgoK7P///wAA////////////
+        //////////9DCgoK7P/////////////////////rCgoKDvP//wAA//////////////////////+SCgoK
+        DvP////////////////////xCgoKCpL//wAA////////////////////////EAoKCuz/////////////
+        ////////bQoKChD//wAA////////////////////////7AoKChD/////////////////////vAoKCgqS
+        /wAA////////////////////////8w4KCgqS/////////////////////xQKCgoU/wAA////////////
+        /////////////////////////////////////////////////wAA////////////////////////////
+        /////////////////////////////////wAA////////////////////////////////////////////
+        /////////////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAQAAAAIAAAAABAAQAAAAAAAAIAAAAAAAAAAAAABAA
+        AAAQAAAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDAwACAgIAAAAD/AAD/AAAA//8A/wAAAP8A
+        /wD//wAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////
+        //////////////////AP////////////////////////////////////////8A//////////////////
+        ///////////////////////wD/////////////////////////////////////////AP+IiIf///////
+        ///////4iIiIiIiIiIiIiIiIiH//8A/wAAAP//////////////gAAAAAAAAAAAAAAAAAD//wD/gAAAj/
+        /////////////wAAAAAAAAAAAAAAAAAI//AP/wAAAP//////////////gAAAAAAAAAAAAAAAAAD/8A//
+        gAAAj//////////////wAAAAAAAAAAAAAAAAAI/wD//wAAAP//////////////gAAAAAAAAAAAAAAAAA
+        D/AP//gAAAf/////////////9wAAAAAAAAAAAAAAAAAH8A//9wAACP//////////////gAAAf///////
+        ///////wD///gAAAf/////////////9wAAAP//////////////AP//9wAACP//////////////AAAAf/
+        ////////////8A////AAAA//////////////+AAACP/////////////wD///9wAACP//////////////
+        AAAAf/////////////AP////AAAA//////////////+AAACP////////////8A////+AAACP////////
+        //////AAAA/////////////wD/////AAAA//////////////+AAACP////////////AP////+AAACP//
+        ////////////AAAA////////////8A//////AAAA//////////////+AAACP///////////wD/////+A
+        AAB//////////////3AAAA////////////AP/////3AAAI//////////////+AAAB///////////8A//
+        ////+AAAB//////////////3AAAA///////////wD//////3AAAI//////////////8AAAB/////////
+        //AP//////8AAAD//////////////3AAAI//////////8A///////3AAAI//////////////8AAAB///
+        ///////wD///////8AAAD//////////////4AAAI//////////AP///////4AAAI//////////////8A
+        AAD/////////8A////////8AAAB3d3d3d3d3d3d3d4AAAI/////////wD////////4AAAAAAAAAAAAAA
+        AAAAAAAAD/////////AP////////8AAAAAAAAAAAAAAAAAAAAAAI////////8A/////////4AAAAAAAA
+        AAAAAAAAAAAAAAD////////wD/////////cAAAAAAAAAAAAAAAAAAAAAAI////////AP/////////4AA
+        AAAAAAAAAAAAAAAAAAAAD///////8A//////////cAAAAAAAAAAAAAAAAAAAAAAH///////wD///////
+        ///wAAAH//////////////cAAAj///////AP//////////cAAAj//////////////wAAAH//////8A//
+        /////////wAAAP//////////////gAAAj//////wD///////////gAAAj//////////////wAAAP////
+        //AP///////////wAAAP//////////////gAAAj/////8A////////////gAAAj//////////////wAA
+        AP/////wD////////////wAAAP//////////////gAAAj/////AP////////////gAAAf///////////
+        //9wAAAP////8A////////////9wAAAP//////////////gAAAj////wD/////////////gAAAf/////
+        ////////9wAAAP////AP////////////9wAACP//////////////AAAAf///8A//////////////AAAA
+        f/////////////9wAACP///wD/////////////9wAACP//////////////AAAAf///AP////////////
+        //AAAA//////////////+AAACP//8A//////////////+AAACP//////////////AAAA///wD///////
+        ////////AAAA//////////////+AAACP//AP//////////////+AAACP//////////////AAAA//8A//
+        //////////////AAAA//////////////+AAACP/wD///////////////+AAAB//////////////3AAAA
+        //AP///////////////3AAAA//////////////+AAACP8A////////////////+AAAB/////////////
+        /3AAAA/wD////////////////3AAAI//////////////8AAAB/AP////////////////////////////
+        ////////////8A/////////////////////////////////////////wD///////////////////////
+        //////////////////AP////////////////////////////////////////8AAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAQAAAAIAA
+        AAABAAgAAAAAAAAQAAAAAAAAAAAAAAABAAAAAQAAAAAAAAAAgAAAgAAAAICAAIAAAACAAIAAgIAAAMDA
+        wADA3MAA8MqmAAQEBAAICAgADAwMABEREQAWFhYAHBwcACIiIgApKSkAVVVVAE1NTQBCQkIAOTk5AIB8
+        /wBQUP8AkwDWAP/szADG1u8A1ufnAJCprQAAADMAAABmAAAAmQAAAMwAADMAAAAzMwAAM2YAADOZAAAz
+        zAAAM/8AAGYAAABmMwAAZmYAAGaZAABmzAAAZv8AAJkAAACZMwAAmWYAAJmZAACZzAAAmf8AAMwAAADM
+        MwAAzGYAAMyZAADMzAAAzP8AAP9mAAD/mQAA/8wAMwAAADMAMwAzAGYAMwCZADMAzAAzAP8AMzMAADMz
+        MwAzM2YAMzOZADMzzAAzM/8AM2YAADNmMwAzZmYAM2aZADNmzAAzZv8AM5kAADOZMwAzmWYAM5mZADOZ
+        zAAzmf8AM8wAADPMMwAzzGYAM8yZADPMzAAzzP8AM/8zADP/ZgAz/5kAM//MADP//wBmAAAAZgAzAGYA
+        ZgBmAJkAZgDMAGYA/wBmMwAAZjMzAGYzZgBmM5kAZjPMAGYz/wBmZgAAZmYzAGZmZgBmZpkAZmbMAGaZ
+        AABmmTMAZplmAGaZmQBmmcwAZpn/AGbMAABmzDMAZsyZAGbMzABmzP8AZv8AAGb/MwBm/5kAZv/MAMwA
+        /wD/AMwAmZkAAJkzmQCZAJkAmQDMAJkAAACZMzMAmQBmAJkzzACZAP8AmWYAAJlmMwCZM2YAmWaZAJlm
+        zACZM/8AmZkzAJmZZgCZmZkAmZnMAJmZ/wCZzAAAmcwzAGbMZgCZzJkAmczMAJnM/wCZ/wAAmf8zAJnM
+        ZgCZ/5kAmf/MAJn//wDMAAAAmQAzAMwAZgDMAJkAzADMAJkzAADMMzMAzDNmAMwzmQDMM8wAzDP/AMxm
+        AADMZjMAmWZmAMxmmQDMZswAmWb/AMyZAADMmTMAzJlmAMyZmQDMmcwAzJn/AMzMAADMzDMAzMxmAMzM
+        mQDMzMwAzMz/AMz/AADM/zMAmf9mAMz/mQDM/8wAzP//AMwAMwD/AGYA/wCZAMwzAAD/MzMA/zNmAP8z
+        mQD/M8wA/zP/AP9mAAD/ZjMAzGZmAP9mmQD/ZswAzGb/AP+ZAAD/mTMA/5lmAP+ZmQD/mcwA/5n/AP/M
+        AAD/zDMA/8xmAP/MmQD/zMwA/8z/AP//MwDM/2YA//+ZAP//zABmZv8AZv9mAGb//wD/ZmYA/2b/AP//
+        ZgAhAKUAX19fAHd3dwCGhoYAlpaWAMvLywCysrIA19fXAN3d3QDj4+MA6urqAPHx8QD4+PgA8Pv/AKSg
+        oACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AAoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK////////////////////////////
+        //////////////////////////////////////////////////////8KCv//////////////////////
+        ////////////////////////////////////////////////////////////Cgr/////////////////
+        /////////////////////////////////////////////////////////////////woK////////////
+        //////////////////////////////////////////////////////////////////////8KCv/z7Ozs
+        7Ozv/////////////////////////////5Ls7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//////Cgr/
+        /xAKCgoKDvP///////////////////////////+SCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoO8///
+        /woK//+SCgoKCgqS////////////////////////////8w4KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        Cuz///8KCv///xAKCgoKEP/////////////////////////////sCgoKCgoKCgoKCgoKCgoKCgoKCgoK
+        CgoKCgoQ////Cgr////sCgoKCgqS////////////////////////////8woKCgoKCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCpL//woK////8w4KCgoKFP////////////////////////////9tCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgpD//8KCv/////rCgoKCgoH////////////////////////////8QoKCgoKChQU
+        FBQUFBQUFBQUFBQUFBQUFBQUFPH/Cgr/////8QoKCgoKEv////////////////////////////8SCgoK
+        Cgrv/////////////////////////////woK//////9tCgoKCgrx////////////////////////////
+        BwoKCgoKFP////////////////////////////8KCv//////vAoKCgoKbf//////////////////////
+        //////8UCgoKCgoH////////////////////////////Cgr///////8UCgoKCgrz////////////////
+        ////////////kgoKCgoKbf///////////////////////////woK////////BwoKCgoK7P//////////
+        //////////////////8QCgoKCgrx//////////////////////////8KCv////////8QCgoKCg7z////
+        ////////////////////////kgoKCgoKbf//////////////////////////Cgr/////////kgoKCgoK
+        kv////////////////////////////MOCgoKCg7z/////////////////////////woK//////////8Q
+        CgoKChD/////////////////////////////7AoKCgoK7P////////////////////////8KCv//////
+        ////7AoKCgoKkv////////////////////////////MOCgoKCg7/////////////////////////Cgr/
+        //////////MOCgoKChT/////////////////////////////bQoKCgoKkv//////////////////////
+        /woK////////////6woKCgoKB/////////////////////////////EKCgoKChD/////////////////
+        //////8KCv////////////EKCgoKChL/////////////////////////////bQoKCgoK7///////////
+        ////////////Cgr/////////////bQoKCgoK8f///////////////////////////wcKCgoKChT/////
+        /////////////////woK/////////////7wKCgoKCm3/////////////////////////////FAoKCgoK
+        B/////////////////////8KCv//////////////FAoKCgoK8////////////////////////////+8K
+        CgoKCm3/////////////////////Cgr//////////////wcKCgoKCuz/////////////////////////
+        ////EAoKCgoK8f///////////////////woK////////////////EAoKCgoO8///////////////////
+        /////////5IKCgoKCm3///////////////////8KCv///////////////5IKCgoKCpL/////////////
+        ////////////////DgoKCgoK8///////////////////Cgr/////////////////EAoKCgoQBwcHBwcH
+        BwcHBwcHBwcHBwcHBwcHBxIKCgoKCuz//////////////////woK/////////////////+wKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoO8/////////////////8KCv/////////////////zDgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCpL/////////////////Cgr/////////////////
+        /+sKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoQ/////////////////woK////////////
+        ///////xCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCpL///////////////8KCv//////
+        /////////////20KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoU////////////////Cgr/
+        //////////////////+8CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgf/////////////
+        /woK/////////////////////xQKCgoKCvH////////////////////////////vCgoKCgoS////////
+        //////8KCv////////////////////8HCgoKCgrs/////////////////////////////xAKCgoKCvH/
+        ////////////Cgr//////////////////////xAKCgoKDvP///////////////////////////+SCgoK
+        Cgpt/////////////woK//////////////////////+SCgoKCgrs////////////////////////////
+        /w4KCgoKCvP///////////8KCv///////////////////////xAKCgoKEP//////////////////////
+        ///////sCgoKCgrs////////////Cgr////////////////////////sCgoKCgqS////////////////
+        ////////////8w4KCgoKDvP//////////woK////////////////////////8w4KCgoKQ///////////
+        //////////////////9tCgoKCgqS//////////8KCv/////////////////////////sCgoKCgoH////
+        ////////////////////////8QoKCgoKEP//////////Cgr/////////////////////////8QoKCgoK
+        FP////////////////////////////9tCgoKCgqS/////////woK//////////////////////////9t
+        CgoKCgrx////////////////////////////BwoKCgoKFP////////8KCv//////////////////////
+        ////8QoKCgoKbf////////////////////////////8UCgoKCgoH////////Cgr/////////////////
+        //////////8UCgoKCgrx////////////////////////////7woKCgoKEv///////woK////////////
+        ////////////////BwoKCgoK7P////////////////////////////8QCgoKCgrx//////8KCv//////
+        //////////////////////9DCgoKCg7z////////////////////////////kgoKCgoKbf//////Cgr/
+        ////////////////////////////kgoKCgoK7P////////////////////////////8OCgoKCgrz////
+        /woK//////////////////////////////8QCgoKChD/////////////////////////////7AoKCgoK
+        7P////8KCv//////////////////////////////7AoKCgoKkv////////////////////////////MO
+        CgoKCg7z////Cgr///////////////////////////////MOCgoKCkP/////////////////////////
+        ////bQoKCgoKkv///woK////////////////////////////////7AoKCgoKB///////////////////
+        //////////EKCgoKChD///8KCv////////////////////////////////EKCgoKChT/////////////
+        ////////////////bQoKCgoKkv//Cgr/////////////////////////////////bQoKCgoK8f//////
+        /////////////////////wcKCgoKChT//woK//////////////////////////////////EKCgoKCm3/
+        ////////////////////////////FAoKCgoKB/8KCv//////////////////////////////////////
+        ////////////////////////////////////////////Cgr/////////////////////////////////
+        /////////////////////////////////////////////////woK////////////////////////////
+        //////////////////////////////////////////////////////8KCv//////////////////////
+        ////////////////////////////////////////////////////////////CgoKCgoKCgoKCgoKCgoK
+        CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+</value>
+  </data>
+</root>
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MenuItemBase.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MenuItemBase.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MenuItemBase.cs	(revision 2426)
@@ -0,0 +1,43 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  public abstract class MenuItemBase : HeuristicLab.MainForm.MenuItemBase{
+    public virtual Keys ShortCutKeys {
+      get { return Keys.None; }
+    }
+
+    private ToolStripItem toolStripItem;
+    public virtual ToolStripItem ToolStripItem {
+      get { return this.toolStripItem; }
+      internal set { this.toolStripItem = value; }
+    }
+
+    public virtual ToolStripItemDisplayStyle ToolStripItemDisplayStyle {
+      get { return ToolStripItemDisplayStyle.ImageAndText; }
+    }
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MultipleDocumentMainForm.Designer.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MultipleDocumentMainForm.Designer.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MultipleDocumentMainForm.Designer.cs	(revision 2426)
@@ -0,0 +1,41 @@
+﻿namespace HeuristicLab.MainForm.WindowsForms {
+  partial class MultipleDocumentMainForm {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      this.MdiChildActivate -= new System.EventHandler(MultipleDocumentFormActivated);
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.SuspendLayout();
+      // 
+      // MultipleDocumentMainForm
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(596, 407);
+      this.IsMdiContainer = true;
+      this.Name = "MultipleDocumentMainForm";
+      this.ResumeLayout(false);
+      this.PerformLayout();
+    }
+    #endregion
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MultipleDocumentMainForm.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MultipleDocumentMainForm.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MultipleDocumentMainForm.cs	(revision 2426)
@@ -0,0 +1,106 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  public partial class MultipleDocumentMainForm : MainFormBase {
+    public MultipleDocumentMainForm()
+      : base() {
+      InitializeComponent();
+    }
+
+    public MultipleDocumentMainForm(Type userInterfaceType)
+      : base(userInterfaceType) {
+      InitializeComponent();
+    }
+
+    protected override void CreateGUI() {
+      base.CreateGUI();
+      ToolStripMenuItem window = new ToolStripMenuItem("Windows");
+      base.menuStrip.MdiWindowListItem = window;
+      base.menuStrip.Items.Add(window);
+    }
+
+    public override void ShowView(IView view) {
+      if (InvokeRequired) Invoke((Action<IView>)ShowView, view);
+      else {
+        if (views.Contains(view)) {
+          DocumentForm documentForm = FindForm(view);
+          if (documentForm != null)
+            documentForm.Focus();
+        } else {
+          base.ShowView(view);
+          DocumentForm form = new DocumentForm(view);
+          form.Activated += new EventHandler(MultipleDocumentFormActivated);
+          form.FormClosing += new FormClosingEventHandler(view.OnClosing);
+          form.FormClosed += new FormClosedEventHandler(view.OnClosed);
+          form.FormClosed += new FormClosedEventHandler(MultipleDocumentFormClosed);
+          form.MdiParent = this;
+          foreach (IUserInterfaceItem item in UserInterfaceItems)
+            view.Changed += new EventHandler(item.ViewChanged);
+          form.Show();
+        }
+      }
+    }
+
+    public override void CloseView(IView view) {
+      if (InvokeRequired) Invoke((Action<IView>)CloseView, view);
+      else {
+        DocumentForm documentForm = FindForm(view);
+        if (documentForm != null)
+          documentForm.Close();
+      }
+    }
+
+    private void MultipleDocumentFormActivated(object sender, EventArgs e) {
+      base.ActiveView = ((DocumentForm)sender).View;
+    }
+
+    private void MultipleDocumentFormClosed(object sender, FormClosedEventArgs e) {
+      DocumentForm form = (DocumentForm)sender;
+      ViewClosed(form.View);
+      form.Activated -= new EventHandler(MultipleDocumentFormActivated);
+      form.FormClosing -= new FormClosingEventHandler(form.View.OnClosing);
+      form.FormClosed -= new FormClosedEventHandler(form.View.OnClosed);
+      form.FormClosed -= new FormClosedEventHandler(MultipleDocumentFormClosed);
+      foreach (IUserInterfaceItem item in UserInterfaceItems)
+        form.View.Changed -= new EventHandler(item.ViewChanged);
+    }
+
+    protected DocumentForm FindForm(IView view) {
+      IEnumerable<DocumentForm> forms =
+        from df in MdiChildren
+        where ((DocumentForm)df).View == view
+        select (DocumentForm)df;
+      if (forms.Count() == 1)
+        return forms.Single();
+      return null;
+    }
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MultipleDocumentMainForm.resx
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MultipleDocumentMainForm.resx	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/MultipleDocumentMainForm.resx	(revision 2426)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/Properties/AssemblyInfo.frame
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/Properties/AssemblyInfo.frame	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/Properties/AssemblyInfo.frame	(revision 2426)
@@ -0,0 +1,58 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using HeuristicLab.PluginInfrastructure;
+
+// General Information about an assembly is controlled through the following 
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("HeuristicLab.MainForm.WindowsForms")]
+[assembly: AssemblyDescription("Windows Forms specific classes for HeuristicLab Mainform")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2008 HEAL")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible 
+// to COM components.  If you need to access a type in this assembly from 
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("f9718239-4d37-4410-84d7-9c3468b01cbf")]
+
+// Version information for an assembly consists of the following four values:
+//
+//      Major Version
+//      Minor Version 
+//      Build Number
+//      Revision
+//
+// You can specify all the values or you can default the Revision and Build Numbers 
+// by using the '*' as shown below:
+[assembly: AssemblyVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.2.0.$WCREV$")]
+[assembly: AssemblyBuildDate("$WCNOW$")]
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/SingleDocumentMainForm.Designer.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/SingleDocumentMainForm.Designer.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/SingleDocumentMainForm.Designer.cs	(revision 2426)
@@ -0,0 +1,42 @@
+﻿namespace HeuristicLab.MainForm.WindowsForms {
+  partial class SingleDocumentMainForm {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.SuspendLayout();
+      // 
+      // SingleDocumentMainForm
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.ClientSize = new System.Drawing.Size(624, 412);
+      this.Name = "SingleDocumentMainForm";
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/SingleDocumentMainForm.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/SingleDocumentMainForm.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/SingleDocumentMainForm.cs	(revision 2426)
@@ -0,0 +1,100 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  public partial class SingleDocumentMainForm : MainFormBase {
+    public SingleDocumentMainForm()
+      : base() {
+      InitializeComponent();
+    }
+
+    public SingleDocumentMainForm(Type userInterfaceItemType)
+      : base(userInterfaceItemType) {
+      InitializeComponent();
+    }
+
+    public override void ShowView(IView view) {
+      if (InvokeRequired) Invoke((Action<IView>)ShowView, view);
+      else {
+        if (views.Contains(view)) {
+          DocumentForm documentForm = FindForm(view);
+          if (documentForm != null)
+            documentForm.Focus();
+        } else {
+          base.ShowView(view);
+          DocumentForm form = new DocumentForm(view);
+          form.ShowInTaskbar = true;
+          form.Activated += new EventHandler(DocumentFormActivated);
+          form.FormClosing += new FormClosingEventHandler(view.OnClosing);
+          form.FormClosed += new FormClosedEventHandler(view.OnClosed);
+          form.FormClosed += new FormClosedEventHandler(DocumentFormClosed);
+          foreach (IUserInterfaceItem item in UserInterfaceItems)
+            view.Changed += new EventHandler(item.ViewChanged);
+          form.Show(this);
+        }
+      }
+    }
+
+    public override void CloseView(IView view) {
+      if (InvokeRequired) Invoke((Action<IView>)CloseView, view);
+      else {
+        DocumentForm documentForm = FindForm(view);
+        if (documentForm != null)
+          documentForm.Close();
+      }
+    }
+
+    private void DocumentFormClosed(object sender, FormClosedEventArgs e) {
+      DocumentForm form = (DocumentForm)sender;
+      ViewClosed(form.View);
+      form.Activated -= new EventHandler(DocumentFormActivated);
+      form.FormClosing -= new FormClosingEventHandler(form.View.OnClosing);
+      form.FormClosed -= new FormClosedEventHandler(form.View.OnClosed);
+      form.FormClosed -= new FormClosedEventHandler(DocumentFormClosed);
+      foreach (IUserInterfaceItem item in UserInterfaceItems)
+        form.View.Changed -= new EventHandler(item.ViewChanged);
+    }
+
+    private void DocumentFormActivated(object sender, EventArgs e) {
+      base.ActiveView = ((DocumentForm)sender).View;
+    }
+
+    protected DocumentForm FindForm(IView view) {
+      IEnumerable<DocumentForm> forms =
+        from df in OwnedForms
+        where ((DocumentForm)df).View == view
+        select (DocumentForm)df;
+      if (forms.Count() == 1)
+        return forms.Single();
+      return null;
+    }
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/SingleDocumentMainForm.resx
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/SingleDocumentMainForm.resx	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/SingleDocumentMainForm.resx	(revision 2426)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/ToolBarItemBase.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/ToolBarItemBase.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/ToolBarItemBase.cs	(revision 2426)
@@ -0,0 +1,43 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+                                                            
+namespace HeuristicLab.MainForm.WindowsForms {
+  public abstract class ToolBarItemBase : HeuristicLab.MainForm.ToolBarItemBase {
+    private ToolStripItem toolStripItem;
+    public virtual ToolStripItem ToolStripItem {
+      get { return this.toolStripItem; }
+      internal set { this.toolStripItem = value; }
+    }
+
+    public virtual bool IsDropDownButton {
+      get { return false; }
+    }
+
+    public virtual ToolStripItemDisplayStyle ToolStripItemDisplayStyle {
+      get { return ToolStripItemDisplayStyle.Image; }
+    }
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/ViewBase.Designer.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/ViewBase.Designer.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/ViewBase.Designer.cs	(revision 2426)
@@ -0,0 +1,55 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  partial class ViewBase {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+    }
+
+    #endregion
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/ViewBase.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/ViewBase.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm.WindowsForms/3.2/ViewBase.cs	(revision 2426)
@@ -0,0 +1,66 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Xml;
+using System.Windows.Forms;
+
+namespace HeuristicLab.MainForm.WindowsForms {
+  public partial class ViewBase : UserControl,IView {
+    public ViewBase() {
+      InitializeComponent();
+    }
+
+    private string myCaption;
+    public string Caption {
+      get { return myCaption; }
+      set {
+        if (value != myCaption) {
+          myCaption = value;
+          OnCaptionChanged();
+        }
+      }
+    }
+
+    public event EventHandler CaptionChanged;
+    protected virtual void OnCaptionChanged() {
+      if (CaptionChanged != null)
+        CaptionChanged(this, new EventArgs());
+    }
+
+    public event EventHandler Changed;
+    protected virtual void OnChanged() {
+      if (Changed != null)
+        Changed(this, new EventArgs());
+    }
+
+    public virtual void OnClosing(object sender, CancelEventArgs e) {
+    }
+
+    public virtual void OnClosed(object sender, EventArgs e) {
+    }
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm/3.2/HeuristicLab.MainForm-3.2.csproj
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm/3.2/HeuristicLab.MainForm-3.2.csproj	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm/3.2/HeuristicLab.MainForm-3.2.csproj	(revision 2426)
@@ -71,5 +71,4 @@
     </Reference>
     <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Xml.Linq">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
@@ -82,59 +81,15 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="SingleDocumentMainForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="SingleDocumentMainForm.Designer.cs">
-      <DependentUpon>SingleDocumentMainForm.cs</DependentUpon>
-    </Compile>
+    <Compile Include="Interfaces\IMenuItem.cs" />
+    <Compile Include="Interfaces\IToolBarItem.cs" />
+    <Compile Include="MainFormManager.cs" />
+    <Compile Include="MenuItemBase.cs" />
+    <Compile Include="ToolBarItemBase.cs" />
+    <Compile Include="HeuristicLabMainFormPlugin.cs" />
+    <Compile Include="Interfaces\IMainForm.cs" />
     <Compile Include="Interfaces\IUserInterfaceItem.cs" />
-    <Compile Include="MultipleDocumentMainForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="MultipleDocumentMainForm.Designer.cs">
-      <DependentUpon>MultipleDocumentMainForm.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ToolStripMenuItemBase.cs" />
-    <Compile Include="ToolStripButtonItemBase.cs" />
-    <Compile Include="ToolStripItemBase.cs" />
-    <Compile Include="DockingMainForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="DockingMainForm.Designer.cs">
-      <DependentUpon>DockingMainForm.cs</DependentUpon>
-    </Compile>
-    <Compile Include="MainFormBase.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="MainFormBase.Designer.cs">
-      <DependentUpon>MainFormBase.cs</DependentUpon>
-    </Compile>
-    <Compile Include="HeuristicLabMainFormPlugin.cs" />
-    <Compile Include="Interfaces\IAction.cs" />
-    <Compile Include="Interfaces\IMainForm.cs" />
-    <Compile Include="Interfaces\IToolStripMenuItem.cs" />
-    <Compile Include="Interfaces\IToolStripButtonItem.cs" />
-    <Compile Include="Interfaces\IToolStripItem.cs" />
     <Compile Include="Interfaces\IView.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="UserInterfaceItemBase.cs" />
-    <Compile Include="ViewBase.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ViewBase.Designer.cs">
-      <DependentUpon>ViewBase.cs</DependentUpon>
-    </Compile>
-    <Compile Include="DockForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="DockForm.Designer.cs">
-      <DependentUpon>DockForm.cs</DependentUpon>
-    </Compile>
-    <Compile Include="DocumentForm.cs">
-      <SubType>Form</SubType>
-    </Compile>
-    <Compile Include="DocumentForm.Designer.cs">
-      <DependentUpon>DocumentForm.cs</DependentUpon>
-    </Compile>
   </ItemGroup>
   <ItemGroup>
@@ -143,34 +98,8 @@
       <Name>HeuristicLab.PluginInfrastructure</Name>
     </ProjectReference>
-    <ProjectReference Include="..\..\WinFormsUI\WinFormsUI.csproj">
-      <Project>{C75532C4-765B-418E-B09B-46D36B2ABDB1}</Project>
-      <Name>WinFormsUI</Name>
-    </ProjectReference>
   </ItemGroup>
   <ItemGroup>
     <None Include="HeuristicLab.snk" />
     <None Include="Properties\AssemblyInfo.frame" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="SingleDocumentMainForm.resx">
-      <DependentUpon>SingleDocumentMainForm.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="DockingMainForm.resx">
-      <DependentUpon>DockingMainForm.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MainFormBase.resx">
-      <DependentUpon>MainFormBase.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="DockForm.resx">
-      <DependentUpon>DockForm.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
-    <EmbeddedResource Include="MultipleDocumentMainForm.resx">
-      <DependentUpon>MultipleDocumentMainForm.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="DocumentForm.resx">
-      <DependentUpon>DocumentForm.cs</DependentUpon>
-      <SubType>Designer</SubType>
-    </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IMainForm.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IMainForm.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IMainForm.cs	(revision 2426)
@@ -25,17 +25,12 @@
 using System.Text;
 using System.Drawing;
-using System.Windows.Forms;
 
 namespace HeuristicLab.MainForm {
   public interface IMainForm {
     string Title { get; set; }
-    string StatusStripText { get; set; }
-    bool StatusStripProgressBarVisible { get; set; }
-
-    Cursor Cursor { get; set; }
 
     IView ActiveView { get; }
     event EventHandler ActiveViewChanged;
-    event EventHandler MainFormChanged;
+    event EventHandler Changed;
     IEnumerable<IView> Views { get; }
 
Index: branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IMenuItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IMenuItem.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IMenuItem.cs	(revision 2426)
@@ -0,0 +1,32 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Drawing;
+
+namespace HeuristicLab.MainForm {
+  public interface IMenuItem : IUserInterfaceItem {
+    IEnumerable<string> Structure { get; }
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IToolBarItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IToolBarItem.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IToolBarItem.cs	(revision 2426)
@@ -0,0 +1,31 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.MainForm {
+  public interface IToolBarItem : IUserInterfaceItem {
+    IEnumerable<string> Structure { get; }
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IUserInterfaceItem.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IUserInterfaceItem.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IUserInterfaceItem.cs	(revision 2426)
@@ -24,8 +24,18 @@
 using System.Linq;
 using System.Text;
+using System.Drawing;
 
 namespace HeuristicLab.MainForm {
-  public interface IUserInterfaceItem : IAction {
+  public interface IUserInterfaceItem {
     string Name { get; }
+    int Position { get; }
+    Image Image { get; }
+    string ToolTipText { get; set; }
+
+    void Execute();
+
+    void ActiveViewChanged(object sender, EventArgs e);
+    void ViewChanged(object sender, EventArgs e);
+    void MainFormChanged(object sender, EventArgs e);
   }
 }
Index: branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IView.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IView.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm/3.2/Interfaces/IView.cs	(revision 2426)
@@ -23,5 +23,5 @@
 using System.Collections.Generic;
 using System.Text;
-using System.Windows.Forms;
+using System.ComponentModel;
 
 namespace HeuristicLab.MainForm {
@@ -29,7 +29,7 @@
     string Caption { get; set; }
     event EventHandler CaptionChanged;
-    event EventHandler StateChanged;
-    IMainForm MainForm { get; set; }
-    void FormClosing(object sender, FormClosingEventArgs e);
+    event EventHandler Changed;
+    void OnClosing(object sender, CancelEventArgs e);
+    void OnClosed(object sender, EventArgs e);
   }
 }
Index: branches/Mainform refactoring/HeuristicLab.MainForm/3.2/MainFormManager.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm/3.2/MainFormManager.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm/3.2/MainFormManager.cs	(revision 2426)
@@ -0,0 +1,28 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.MainForm {
+  public class MainFormManager {
+    private MainFormManager() {
+      MainFormManager.mainform = null;
+    }
+
+    private static IMainForm mainform;
+    public static void RegisterMainForm(IMainForm mainform) {
+      if (MainFormManager.mainform == null)
+        MainFormManager.mainform = mainform;
+      else
+        throw new ArgumentException("A mainform was already associated with the mainform manager.");
+    }
+
+    public static IMainForm Instance {
+      get { return mainform; }
+    }
+
+    public static T GetInstance<T>() where T : IMainForm {
+      return (T)mainform;
+    }
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm/3.2/MenuItemBase.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm/3.2/MenuItemBase.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm/3.2/MenuItemBase.cs	(revision 2426)
@@ -0,0 +1,12 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.MainForm {
+  public abstract class MenuItemBase : UserInterfaceItemBase, IMenuItem{
+    public virtual IEnumerable<string> Structure {
+      get { return Enumerable.Empty<string>(); }
+    }   
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm/3.2/ToolBarItemBase.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm/3.2/ToolBarItemBase.cs	(revision 2426)
+++ branches/Mainform refactoring/HeuristicLab.MainForm/3.2/ToolBarItemBase.cs	(revision 2426)
@@ -0,0 +1,12 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.MainForm {
+  public abstract class ToolBarItemBase : UserInterfaceItemBase, IToolBarItem {
+    public virtual IEnumerable<string> Structure {
+      get { return Enumerable.Empty<string>(); }
+    }   
+  }
+}
Index: branches/Mainform refactoring/HeuristicLab.MainForm/3.2/UserInterfaceItemBase.cs
===================================================================
--- branches/Mainform refactoring/HeuristicLab.MainForm/3.2/UserInterfaceItemBase.cs	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.MainForm/3.2/UserInterfaceItemBase.cs	(revision 2426)
@@ -27,9 +27,31 @@
 namespace HeuristicLab.MainForm {
   public abstract class UserInterfaceItemBase : IUserInterfaceItem{
+    protected UserInterfaceItemBase() {
+      this.toolTipText = string.Empty;
+    }
+
     public abstract string Name { get; }
+    public abstract int Position { get; }
 
-    #region IAction Members
-    public abstract void Execute(IMainForm mainform);
-    #endregion
+    public virtual System.Drawing.Image Image {
+      get { return null; }
+    }
+
+    protected string toolTipText;
+    public virtual string ToolTipText { 
+      get { return toolTipText; }
+      set { this.toolTipText = value; }
+    }
+
+    public abstract void Execute();
+
+    public virtual void ActiveViewChanged(object sender, EventArgs e) {
+    }
+
+    public virtual void ViewChanged(object sender, EventArgs e) {
+    }
+
+    public virtual void MainFormChanged(object sender, EventArgs e) {
+    }
   }
 }
Index: branches/Mainform refactoring/HeuristicLab.sln
===================================================================
--- branches/Mainform refactoring/HeuristicLab.sln	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab.sln	(revision 2426)
@@ -253,4 +253,6 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.BackgroundProcessing-3.2", "HeuristicLab.BackgroundProcessing\3.2\HeuristicLab.BackgroundProcessing-3.2.csproj", "{589BECAE-69B0-4EB1-8C06-C073531762B7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.MainForm.WindowsForms", "HeuristicLab.MainForm.WindowsForms\3.2\HeuristicLab.MainForm.WindowsForms.csproj", "{AB687BBE-1BFE-476B-906D-44237135431D}"
 EndProject
 Global
@@ -4064,4 +4066,32 @@
 		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Visualization Debug|x86.ActiveCfg = Debug|x86
 		{589BECAE-69B0-4EB1-8C06-C073531762B7}.Visualization Debug|x86.Build.0 = Debug|x86
+		{AB687BBE-1BFE-476B-906D-44237135431D}.CEDMA Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.CEDMA Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.CEDMA Debug|x64.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.CEDMA Debug|x86.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|x64.ActiveCfg = Debug|x64
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|x64.Build.0 = Debug|x64
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|x86.ActiveCfg = Debug|x86
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Debug|x86.Build.0 = Debug|x86
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Modeling Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Modeling Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Modeling Debug|x64.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Modeling Debug|x86.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|x64.ActiveCfg = Release|x64
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|x64.Build.0 = Release|x64
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|x86.ActiveCfg = Release|x86
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Release|x86.Build.0 = Release|x86
+		{AB687BBE-1BFE-476B-906D-44237135431D}.v3.2 Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.v3.2 Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.v3.2 Debug|x64.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.v3.2 Debug|x86.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Visualization Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Visualization Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Visualization Debug|x64.ActiveCfg = Debug|Any CPU
+		{AB687BBE-1BFE-476B-906D-44237135431D}.Visualization Debug|x86.ActiveCfg = Debug|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
@@ -4159,4 +4189,5 @@
 		{3127719F-110E-4558-8845-98559DBB422D} = {410732DB-725A-4824-896B-C298978343C0}
 		{589BECAE-69B0-4EB1-8C06-C073531762B7} = {410732DB-725A-4824-896B-C298978343C0}
+		{AB687BBE-1BFE-476B-906D-44237135431D} = {410732DB-725A-4824-896B-C298978343C0}
 		{A9E282EA-180F-4233-B809-AEDF0787545C} = {78982D7C-D63D-4A3D-AE1F-F58AC007603B}
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71} = {78982D7C-D63D-4A3D-AE1F-F58AC007603B}
Index: branches/Mainform refactoring/HeuristicLab/CopyAssemblies.cmd
===================================================================
--- branches/Mainform refactoring/HeuristicLab/CopyAssemblies.cmd	(revision 2424)
+++ branches/Mainform refactoring/HeuristicLab/CopyAssemblies.cmd	(revision 2426)
@@ -76,4 +76,5 @@
 copy "%SolutionDir%\HeuristicLab.MainForm\3.2\%Outdir%\HeuristicLab.MainForm-3.2.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.MainForm.Test\3.2\%Outdir%\HeuristicLab.MainForm.Test-3.2.dll" .\plugins
+copy "%SolutionDir%\HeuristicLab.MainForm.WindowsForms\3.2\%Outdir%\HeuristicLab.MainForm.WindowsForms-3.2.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Modeling\3.2\%Outdir%\HeuristicLab.Modeling-3.2.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Modeling\3.3\%Outdir%\HeuristicLab.Modeling-3.3.dll" .\plugins
