diff --git a/Crypter/Crypter.csproj b/Crypter/Crypter.csproj
index e9bbd8b..a0a4e13 100644
--- a/Crypter/Crypter.csproj
+++ b/Crypter/Crypter.csproj
@@ -59,6 +59,9 @@
False
True
+
+ ..\packages\FCTB.2.16.24\lib\FastColoredTextBox.dll
+
@@ -78,6 +81,12 @@
Form1.cs
+
+ Form
+
+
+ FormCompiler.cs
+
Form
@@ -99,6 +108,10 @@
FormAbout.cs
+
+ FormCompiler.cs
+ Designer
+
FormDoc.cs
diff --git a/Crypter/Form1.Designer.cs b/Crypter/Form1.Designer.cs
index bdc9cef..860f7cb 100644
--- a/Crypter/Form1.Designer.cs
+++ b/Crypter/Form1.Designer.cs
@@ -70,6 +70,7 @@
this.button18 = new System.Windows.Forms.Button();
this.button17 = new System.Windows.Forms.Button();
this.button19 = new System.Windows.Forms.Button();
+ this.打开编译器ToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.contextMenuStrip1.SuspendLayout();
this.menuStrip1.SuspendLayout();
this.groupBox1.SuspendLayout();
@@ -247,6 +248,7 @@
//
this.文件ToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.打开文件ToolStripMenuItem,
+ this.打开编译器ToolStripMenuItem,
this.退出ToolStripMenuItem});
this.文件ToolStripMenuItem.Name = "文件ToolStripMenuItem";
this.文件ToolStripMenuItem.Size = new System.Drawing.Size(44, 21);
@@ -255,14 +257,14 @@
// 打开文件ToolStripMenuItem
//
this.打开文件ToolStripMenuItem.Name = "打开文件ToolStripMenuItem";
- this.打开文件ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);
+ this.打开文件ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.打开文件ToolStripMenuItem.Text = "打开文件";
this.打开文件ToolStripMenuItem.Click += new System.EventHandler(this.打开文件ToolStripMenuItem_Click);
//
// 退出ToolStripMenuItem
//
this.退出ToolStripMenuItem.Name = "退出ToolStripMenuItem";
- this.退出ToolStripMenuItem.Size = new System.Drawing.Size(124, 22);
+ this.退出ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.退出ToolStripMenuItem.Text = "退出";
this.退出ToolStripMenuItem.Click += new System.EventHandler(this.退出ToolStripMenuItem_Click);
//
@@ -278,14 +280,14 @@
// 文档ToolStripMenuItem
//
this.文档ToolStripMenuItem.Name = "文档ToolStripMenuItem";
- this.文档ToolStripMenuItem.Size = new System.Drawing.Size(100, 22);
+ this.文档ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.文档ToolStripMenuItem.Text = "文档";
this.文档ToolStripMenuItem.Click += new System.EventHandler(this.文档ToolStripMenuItem_Click);
//
// 关于ToolStripMenuItem
//
this.关于ToolStripMenuItem.Name = "关于ToolStripMenuItem";
- this.关于ToolStripMenuItem.Size = new System.Drawing.Size(100, 22);
+ this.关于ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.关于ToolStripMenuItem.Text = "关于";
this.关于ToolStripMenuItem.Click += new System.EventHandler(this.关于ToolStripMenuItem_Click);
//
@@ -448,6 +450,13 @@
this.button19.UseVisualStyleBackColor = true;
this.button19.Click += new System.EventHandler(this.button19_Click);
//
+ // 打开编译器ToolStripMenuItem
+ //
+ this.打开编译器ToolStripMenuItem.Name = "打开编译器ToolStripMenuItem";
+ this.打开编译器ToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.打开编译器ToolStripMenuItem.Text = "打开编译器";
+ this.打开编译器ToolStripMenuItem.Click += new System.EventHandler(this.打开编译器ToolStripMenuItem_Click);
+ //
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
@@ -540,6 +549,7 @@
private System.Windows.Forms.Button button18;
private System.Windows.Forms.Button button17;
private System.Windows.Forms.Button button19;
+ private System.Windows.Forms.ToolStripMenuItem 打开编译器ToolStripMenuItem;
}
}
diff --git a/Crypter/Form1.cs b/Crypter/Form1.cs
index 03eb390..2c3c663 100644
--- a/Crypter/Form1.cs
+++ b/Crypter/Form1.cs
@@ -14,6 +14,7 @@ using System.Drawing;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Collections.Generic;
+using Compiler;
namespace CrypterExample
{
@@ -650,5 +651,13 @@ namespace CrypterExample
}
+
+ private void 打开编译器ToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ using (FormCompiler formCompiler = new FormCompiler())
+ {
+ formCompiler.ShowDialog();
+ }
+ }
}
}
diff --git a/Crypter/FormCompiler.Designer.cs b/Crypter/FormCompiler.Designer.cs
new file mode 100644
index 0000000..266da95
--- /dev/null
+++ b/Crypter/FormCompiler.Designer.cs
@@ -0,0 +1,365 @@
+namespace Compiler
+{
+ partial class FormCompiler
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.components = new System.ComponentModel.Container();
+ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormCompiler));
+ this.panel2 = new System.Windows.Forms.Panel();
+ this.txtBox = new FastColoredTextBoxNS.FastColoredTextBox();
+ this.menuStrip1 = new System.Windows.Forms.MenuStrip();
+ this.optionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.runToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.wordWraoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.label4 = new System.Windows.Forms.Label();
+ this.comboFrame = new System.Windows.Forms.ComboBox();
+ this.label3 = new System.Windows.Forms.Label();
+ this.comboType = new System.Windows.Forms.ComboBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.listBoxReferences = new System.Windows.Forms.ListBox();
+ this.menuReferences = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.addToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this.label1 = new System.Windows.Forms.Label();
+ this.comboLang = new System.Windows.Forms.ComboBox();
+ this.panel2.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.txtBox)).BeginInit();
+ this.menuStrip1.SuspendLayout();
+ this.panel1.SuspendLayout();
+ this.menuReferences.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // panel2
+ //
+ this.panel2.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.panel2.Controls.Add(this.txtBox);
+ this.panel2.Location = new System.Drawing.Point(8, 22);
+ this.panel2.Margin = new System.Windows.Forms.Padding(2);
+ this.panel2.Name = "panel2";
+ this.panel2.Size = new System.Drawing.Size(579, 319);
+ this.panel2.TabIndex = 1;
+ //
+ // txtBox
+ //
+ this.txtBox.AutoCompleteBracketsList = new char[] {
+ '(',
+ ')',
+ '{',
+ '}',
+ '[',
+ ']',
+ '\"',
+ '\"',
+ '\'',
+ '\''};
+ this.txtBox.AutoIndentCharsPatterns = "\r\n^\\s*[\\w\\.]+(\\s\\w+)?\\s*(?=)\\s*(?[^;]+);\r\n^\\s*(case|default)\\s*[^:]" +
+ "*(?:)\\s*(?[^;]+);\r\n";
+ this.txtBox.AutoScrollMinSize = new System.Drawing.Size(27, 14);
+ this.txtBox.BackBrush = null;
+ this.txtBox.BracketsHighlightStrategy = FastColoredTextBoxNS.BracketsHighlightStrategy.Strategy2;
+ this.txtBox.CharHeight = 14;
+ this.txtBox.CharWidth = 8;
+ this.txtBox.Cursor = System.Windows.Forms.Cursors.IBeam;
+ this.txtBox.DisabledColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))), ((int)(((byte)(180)))));
+ this.txtBox.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.txtBox.Font = new System.Drawing.Font("Courier New", 9.75F);
+ this.txtBox.IsReplaceMode = false;
+ this.txtBox.Language = FastColoredTextBoxNS.Language.CSharp;
+ this.txtBox.LeftBracket = '(';
+ this.txtBox.LeftBracket2 = '{';
+ this.txtBox.Location = new System.Drawing.Point(0, 0);
+ this.txtBox.Margin = new System.Windows.Forms.Padding(2);
+ this.txtBox.Name = "txtBox";
+ this.txtBox.Paddings = new System.Windows.Forms.Padding(0);
+ this.txtBox.RightBracket = ')';
+ this.txtBox.RightBracket2 = '}';
+ this.txtBox.SelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(255)))));
+ this.txtBox.Size = new System.Drawing.Size(579, 319);
+ this.txtBox.TabIndex = 3;
+ this.txtBox.Zoom = 100;
+ //
+ // menuStrip1
+ //
+ this.menuStrip1.ImageScalingSize = new System.Drawing.Size(24, 24);
+ this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.optionsToolStripMenuItem,
+ this.editToolStripMenuItem});
+ this.menuStrip1.Location = new System.Drawing.Point(0, 0);
+ this.menuStrip1.Name = "menuStrip1";
+ this.menuStrip1.Padding = new System.Windows.Forms.Padding(4, 1, 0, 1);
+ this.menuStrip1.Size = new System.Drawing.Size(741, 24);
+ this.menuStrip1.TabIndex = 2;
+ this.menuStrip1.Text = "menuStrip1";
+ //
+ // optionsToolStripMenuItem
+ //
+ this.optionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.runToolStripMenuItem});
+ this.optionsToolStripMenuItem.Name = "optionsToolStripMenuItem";
+ this.optionsToolStripMenuItem.Size = new System.Drawing.Size(66, 22);
+ this.optionsToolStripMenuItem.Text = "Options";
+ //
+ // runToolStripMenuItem
+ //
+ this.runToolStripMenuItem.Name = "runToolStripMenuItem";
+ this.runToolStripMenuItem.ShortcutKeys = System.Windows.Forms.Keys.F5;
+ this.runToolStripMenuItem.Size = new System.Drawing.Size(145, 22);
+ this.runToolStripMenuItem.Text = "Compile";
+ this.runToolStripMenuItem.Click += new System.EventHandler(this.RunToolStripMenuItem_Click);
+ //
+ // editToolStripMenuItem
+ //
+ this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.wordWraoToolStripMenuItem});
+ this.editToolStripMenuItem.Name = "editToolStripMenuItem";
+ this.editToolStripMenuItem.Size = new System.Drawing.Size(42, 22);
+ this.editToolStripMenuItem.Text = "Edit";
+ //
+ // wordWraoToolStripMenuItem
+ //
+ this.wordWraoToolStripMenuItem.Name = "wordWraoToolStripMenuItem";
+ this.wordWraoToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
+ this.wordWraoToolStripMenuItem.Text = "Word Wrap";
+ this.wordWraoToolStripMenuItem.Click += new System.EventHandler(this.WordWraoToolStripMenuItem_Click);
+ //
+ // panel1
+ //
+ this.panel1.Controls.Add(this.label4);
+ this.panel1.Controls.Add(this.comboFrame);
+ this.panel1.Controls.Add(this.label3);
+ this.panel1.Controls.Add(this.comboType);
+ this.panel1.Controls.Add(this.label2);
+ this.panel1.Controls.Add(this.listBoxReferences);
+ this.panel1.Controls.Add(this.label1);
+ this.panel1.Controls.Add(this.comboLang);
+ this.panel1.Dock = System.Windows.Forms.DockStyle.Right;
+ this.panel1.Location = new System.Drawing.Point(591, 24);
+ this.panel1.Margin = new System.Windows.Forms.Padding(2);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(150, 324);
+ this.panel1.TabIndex = 3;
+ //
+ // label4
+ //
+ this.label4.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.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(3, 136);
+ this.label4.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(59, 12);
+ this.label4.TabIndex = 7;
+ this.label4.Text = "Framework";
+ //
+ // comboFrame
+ //
+ this.comboFrame.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.comboFrame.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboFrame.FormattingEnabled = true;
+ this.comboFrame.Items.AddRange(new object[] {
+ "v2.0",
+ "v4.0"});
+ this.comboFrame.Location = new System.Drawing.Point(5, 157);
+ this.comboFrame.Margin = new System.Windows.Forms.Padding(2);
+ this.comboFrame.Name = "comboFrame";
+ this.comboFrame.Size = new System.Drawing.Size(138, 20);
+ this.comboFrame.TabIndex = 6;
+ //
+ // label3
+ //
+ this.label3.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.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(3, 77);
+ this.label3.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(35, 12);
+ this.label3.TabIndex = 5;
+ this.label3.Text = "Type:";
+ //
+ // comboType
+ //
+ this.comboType.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.comboType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboType.FormattingEnabled = true;
+ this.comboType.Items.AddRange(new object[] {
+ "winexe",
+ "library"});
+ this.comboType.Location = new System.Drawing.Point(5, 98);
+ this.comboType.Margin = new System.Windows.Forms.Padding(2);
+ this.comboType.Name = "comboType";
+ this.comboType.Size = new System.Drawing.Size(138, 20);
+ this.comboType.TabIndex = 4;
+ //
+ // label2
+ //
+ this.label2.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.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(3, 201);
+ this.label2.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(71, 12);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "References:";
+ //
+ // listBoxReferences
+ //
+ this.listBoxReferences.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.listBoxReferences.ContextMenuStrip = this.menuReferences;
+ this.listBoxReferences.FormattingEnabled = true;
+ this.listBoxReferences.ItemHeight = 12;
+ this.listBoxReferences.Items.AddRange(new object[] {
+ "System.dll",
+ "System.Windows.Forms.dll",
+ "Microsoft.VisualBasic.dll",
+ "System.Management.dll",
+ "System.Drawing.dll"});
+ this.listBoxReferences.Location = new System.Drawing.Point(5, 223);
+ this.listBoxReferences.Margin = new System.Windows.Forms.Padding(2);
+ this.listBoxReferences.Name = "listBoxReferences";
+ this.listBoxReferences.Size = new System.Drawing.Size(138, 88);
+ this.listBoxReferences.TabIndex = 2;
+ //
+ // menuReferences
+ //
+ this.menuReferences.ImageScalingSize = new System.Drawing.Size(24, 24);
+ this.menuReferences.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.addToolStripMenuItem,
+ this.removeToolStripMenuItem});
+ this.menuReferences.Name = "menuReferences";
+ this.menuReferences.ShowImageMargin = false;
+ this.menuReferences.Size = new System.Drawing.Size(99, 48);
+ //
+ // addToolStripMenuItem
+ //
+ this.addToolStripMenuItem.Name = "addToolStripMenuItem";
+ this.addToolStripMenuItem.Size = new System.Drawing.Size(98, 22);
+ this.addToolStripMenuItem.Text = "Add";
+ this.addToolStripMenuItem.Click += new System.EventHandler(this.AddToolStripMenuItem_Click);
+ //
+ // removeToolStripMenuItem
+ //
+ this.removeToolStripMenuItem.Name = "removeToolStripMenuItem";
+ this.removeToolStripMenuItem.Size = new System.Drawing.Size(98, 22);
+ this.removeToolStripMenuItem.Text = "Remove";
+ this.removeToolStripMenuItem.Click += new System.EventHandler(this.RemoveToolStripMenuItem_Click);
+ //
+ // label1
+ //
+ this.label1.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.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(3, 7);
+ this.label1.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(59, 12);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "Language:";
+ //
+ // comboLang
+ //
+ this.comboLang.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.comboLang.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboLang.FormattingEnabled = true;
+ this.comboLang.Items.AddRange(new object[] {
+ "C#",
+ "VB.NET"});
+ this.comboLang.Location = new System.Drawing.Point(5, 28);
+ this.comboLang.Margin = new System.Windows.Forms.Padding(2);
+ this.comboLang.Name = "comboLang";
+ this.comboLang.Size = new System.Drawing.Size(138, 20);
+ this.comboLang.TabIndex = 0;
+ this.comboLang.SelectedIndexChanged += new System.EventHandler(this.ComboLang_SelectedIndexChanged);
+ //
+ // Form1
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(741, 348);
+ this.Controls.Add(this.panel1);
+ this.Controls.Add(this.menuStrip1);
+ this.Controls.Add(this.panel2);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MainMenuStrip = this.menuStrip1;
+ this.Margin = new System.Windows.Forms.Padding(2);
+ this.Name = "Form1";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
+ this.Text = "Compiler";
+ this.Load += new System.EventHandler(this.Form1_Load);
+ this.panel2.ResumeLayout(false);
+ ((System.ComponentModel.ISupportInitialize)(this.txtBox)).EndInit();
+ this.menuStrip1.ResumeLayout(false);
+ this.menuStrip1.PerformLayout();
+ this.panel1.ResumeLayout(false);
+ this.panel1.PerformLayout();
+ this.menuReferences.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.Panel panel2;
+ private System.Windows.Forms.MenuStrip menuStrip1;
+ private System.Windows.Forms.ToolStripMenuItem optionsToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem runToolStripMenuItem;
+ private FastColoredTextBoxNS.FastColoredTextBox txtBox;
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.ListBox listBoxReferences;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.ComboBox comboLang;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.ComboBox comboType;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.ComboBox comboFrame;
+ private System.Windows.Forms.ContextMenuStrip menuReferences;
+ private System.Windows.Forms.ToolStripMenuItem addToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem removeToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem editToolStripMenuItem;
+ private System.Windows.Forms.ToolStripMenuItem wordWraoToolStripMenuItem;
+ }
+}
+
diff --git a/Crypter/FormCompiler.cs b/Crypter/FormCompiler.cs
new file mode 100644
index 0000000..130f24d
--- /dev/null
+++ b/Crypter/FormCompiler.cs
@@ -0,0 +1,216 @@
+using FastColoredTextBoxNS;
+using Microsoft.CSharp;
+using Microsoft.VisualBasic;
+using System;
+using System.CodeDom.Compiler;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace Compiler
+{
+ public partial class FormCompiler : Form
+ {
+ public FormCompiler()
+ {
+ InitializeComponent();
+ comboLang.SelectedIndex = 0;
+ comboType.SelectedIndex = 0;
+ comboFrame.SelectedIndex = 0;
+ }
+
+ private void Form1_Load(object sender, EventArgs e)
+ {
+
+ }
+
+ private void RunToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (listBoxReferences.Items.Count == 0)
+ {
+ MessageBox.Show("No references!", "Compiler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
+ return;
+ }
+
+ if (string.IsNullOrWhiteSpace(txtBox.Text))
+ {
+ MessageBox.Show("Empty code!", "Compiler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
+ return;
+ }
+
+ using (SaveFileDialog saveFile = new SaveFileDialog())
+ {
+ if (comboType.SelectedIndex == 0)
+ saveFile.Filter = "Executable (*.exe)|*.exe";
+ else
+ saveFile.Filter = "Library (*.dll)|*.dll";
+
+ if (saveFile.ShowDialog() == DialogResult.OK)
+ {
+ switch (comboLang.Text)
+ {
+ case "C#":
+ {
+ Compiler(new CSharpCodeProvider(new Dictionary() { { "CompilerVersion", comboFrame.Text } }),
+ txtBox.Text, GetReference(),
+ saveFile.FileName);
+ break;
+ }
+
+ case "VB.NET":
+ {
+ Compiler(new VBCodeProvider(new Dictionary() { { "CompilerVersion", comboFrame.Text } }),
+ txtBox.Text, GetReference(),
+ saveFile.FileName);
+ break;
+ }
+ }
+ }
+ }
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, "Compiler", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
+ return;
+ }
+ finally
+ {
+ GC.Collect();
+ GC.WaitForPendingFinalizers();
+ GC.Collect();
+ }
+ }
+
+ private string[] GetReference()
+ {
+ List reference = new List();
+ foreach (string r in listBoxReferences.Items)
+ {
+ reference.Add(r);
+ }
+ return reference.ToArray();
+ }
+
+ private void Compiler(CodeDomProvider codeDomProvider, string source, string[] referencedAssemblies, string output)
+ {
+ try
+ {
+ var compilerOptions = $"/target:{comboType.Text} /platform:anycpu /optimize+";
+
+ var compilerParameters = new CompilerParameters(referencedAssemblies)
+ {
+ GenerateExecutable = true,
+ GenerateInMemory = false,
+ CompilerOptions = compilerOptions,
+ TreatWarningsAsErrors = false,
+ IncludeDebugInformation = false,
+ OutputAssembly = output,
+ };
+ var compilerResults = codeDomProvider.CompileAssemblyFromSource(compilerParameters, source);
+
+ if (compilerResults.Errors.Count > 0)
+ {
+ foreach (CompilerError compilerError in compilerResults.Errors)
+ {
+ throw new Exception(string.Format("{0}\nLine: {1}", compilerError.ErrorText, compilerError.Line));
+ }
+ }
+ else
+ {
+ MessageBox.Show("Done!", "Compiler", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ }
+ }
+ catch (Exception ex)
+ {
+ throw new Exception(ex.Message);
+ }
+ }
+
+ private void AddToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ string reference = Interaction.InputBox("Add Reference", "References", "");
+ if (string.IsNullOrEmpty(reference))
+ return;
+ else
+ {
+ foreach (string item in listBoxReferences.Items)
+ {
+ if (item == reference)
+ {
+ return;
+ }
+ }
+ listBoxReferences.Items.Add(reference);
+ }
+ }
+
+ private void RemoveToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ if (listBoxReferences.SelectedItems.Count == 1)
+ {
+ listBoxReferences.Items.Remove(listBoxReferences.SelectedItem);
+ }
+ }
+
+ private void ComboLang_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ if (comboLang.SelectedIndex == 0)
+ {
+ txtBox.Language = Language.CSharp;
+ txtBox.Text = txtBox.Text = @"// c#
+
+using System;
+using System.Windows.Forms;
+
+namespace Compiler
+{
+ public class Program
+ {
+ public static void Main()
+ {
+ try
+ {
+ MessageBox.Show(""Hello World"");
+ }
+ catch { }
+ }
+ }
+}";
+ }
+ else
+ {
+ txtBox.Language = Language.VB;
+ txtBox.Text = @"' VB
+
+Imports System
+Imports System.Windows.Forms
+
+ Public Class Program
+ Public Shared Sub Main()
+ Try
+ MessageBox.Show(""Hello World"")
+ Catch
+ End Try
+ End Sub
+ End Class
+
+";
+ }
+ }
+
+ private void WordWraoToolStripMenuItem_Click(object sender, EventArgs e)
+ {
+ if (txtBox.WordWrap)
+ {
+ txtBox.WordWrap = false;
+ wordWraoToolStripMenuItem.Checked = false;
+ }
+ else
+ {
+ txtBox.WordWrap = true;
+ wordWraoToolStripMenuItem.Checked = true;
+ }
+ }
+ }
+}
diff --git a/Crypter/FormCompiler.resx b/Crypter/FormCompiler.resx
new file mode 100644
index 0000000..6f812d4
--- /dev/null
+++ b/Crypter/FormCompiler.resx
@@ -0,0 +1,1260 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+
+ 17, 17
+
+
+ 214, 17
+
+
+
+
+ AAABAAEAgIAAAAEAIAAoCAEAFgAAACgAAACAAAAAAAEAAAEAIAAAAAAAAAABABMLAAATCwAAAAAAAAAA
+ AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8Auev2ALnr9gC56/YAuev2ALnr
+ 9gC56/YAuev2ALnr9gC56/YAv/H8AJnK1ghbipgcZ5SgpWiUoJ8xYG6ON2VyHBdHVSIuX2kAQ3mBAAco
+ MQAXNj8AK05YACA/TAAkRFMAHD5NAFB8iQBxpLAAbJ6qAGyeqgBsnqoAbJ6qAGyeqgBsnqoAbp+rAFp5
+ gwAyW2gAKlNgABxDUQAYQk8AJFZgACNVXwAjVV8AI1VfACNVXwAeUFoAUH+IADNXYgAlSFQADi87ABgw
+ PgAuRlQACC88AA8/TgAJOEoSHFBin1+KmNg/ZXjYPWBx2mCBkdpOc4LBSHWDMNb//wDA8/sAvvH5AL7x
+ +QC+8fkAvvH5AL7x+QC+8fkAvvH5AL7x+QC+8fkAvvH5AL7x+QC+8fkAvvH5AL7x+QD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wCEs8AAhLPAAISzwACEs8AAhLPAAISzwACEs8AAhLPAAISzwACIuMQAXoyah3uf
+ qrzc9/v70u7z/2WJlduFrrbfaZeg7CJUX4Q9dH0JBicwABc2PwArTlgAID9MACREUwAcPk0AUHyJAHGk
+ sABsnqoAbJ6qAGyeqgBsnqoAbJ6qAGyeqgBun6sAWnmDADJbaAAqU2AAHENRABhCTwAkVmAAI1VfACNV
+ XwAjVV8AI1VfAB5QWgBQf4gAM1diACVIVAAOLzsAGDA+AC9GVAAEKzgAADBALU14hM2Ns7+65Pz//6a6
+ yP+qvMP/8P7//9jr9ddqkZzeVX+LOLfq8gDH+v8AxPf/AMT3/wDE9/8AxPf/AMT3/wDE9/8AxPf/AMT3
+ /wDE9/8AxPf/AMT3/wDE9/8AxPf/AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ACxYZQAsWGUALFhlACxY
+ ZQAsWGUALFhlACxYZQAsWGUALFhlAC5caCZKb3zyrsPI/+Ty9v/V4+j/2Ont/9ry9P/V9PX/tNfa/1qE
+ jKIAISoUFDM8ACtOWAAgP0wAJERTABw+TQBQfIkAcaSwAGyeqgBsnqoAbJ6qAGyeqgBsnqoAbJ6qAG6f
+ qwBaeYMAMltoACpTYAAcQ1EAGEJPACRWYAAjVV8AI1VfACNVXwAjVV8AHlBaAFB/iAAzV2IAJUhUAA4v
+ OwAZMT8AKEBOAA82Q058oauC1O3z/+Tz+v/e6PL/wcvV/8rU3P/q9Pn/3+30/7fS1v8bQU7ykMHLQqfZ
+ 4gCj1d8Ao9XfAKPV3wCj1d8Ao9XfAKPV3wCj1d8Ao9XfAKPV3wCj1d8Ao9XfAKPV3wCj1d8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8AN2l1ADdpdQA3aXUAN2l1ADdpdQA3aXUAN2l1ADdpdQA1Z3QASniErczq
+ 7v/T4uX/5uns/+/w8f/n6+z/2+fn/9vr7P/j8vP/5/b434KcodEVN0BIJEhSACA/TAAkRFMAHD5NAFB8
+ iQBxpLAAbJ6qAGyeqgBsnqoAbJ6qAGyeqgBsnqoAbp+rAFp5gwAyW2gAKlNgABxDUQAYQk8AJFZgACNV
+ XwAjVV8AI1VfACNVXwAeUFoAUH+IADNXYgAlSFQADy87AA8oNgA3Tl0sq8LM1ePx+f/l6vH/7u31/+vq
+ 8f/u8fX/6PH0/9ro6//b6+//0+nt/8Tk6/83Y3HQJVJgAClWZAApVmQAKVZkAClWZAApVmQAKVZkAClW
+ ZAApVmQAKVZkAClWZAApVmQAKVZkAClWZAD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wA/doQAP3aEAD92
+ hAA/doQAP3aEAD92hAA/doQAP3aEADdwfkN/r7n11O7y/+Ts7//s6ev/7+zt/+np6//r8vP/2+jq/+Lr
+ 7f/f5+n/8P///562vMEwUlwYGjlGBSREUwAcPk0AUHyJAHGksABsnqoAbJ6qAGyeqgBsnqoAbJ6qAGye
+ qgBun6sAWnmDADJbaAAqU2AAHENRABhCTwAkVmAAI1VfACNVXwAjVV8AI1VfAB5QWgBQf4gAM1diACZI
+ VAAIKjYHITlITLnFz+Dt8/z/4eXs/+/v9f/n5u3/7ezy/+ru8//i7O//3ezu/9zs8P/Z6ez/3vP2/ypR
+ XMgAJjMABS05AAUtOQAFLTkABS05AAUtOQAFLTkABS05AAUtOQAFLTkABS05AAUtOQAFLTkABS05AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AEF6jABBeowAQXqMAEJ6jABBeowAQHmKAEB5igBAeYoAOXOFNn6u
+ vOzQ6u//5Ozu//Lv8P/y7e7/7e7w/+bu8v/g7vX/4O3x/+Tu7//a6On/6/n9/7vQ17xLZ3M8Gz1MAx0/
+ TgBQfIkAcaSwAGyeqgBsnqoAbJ6qAGyeqgBsnqoAbJ6qAG6fqwBaeYMAMltoACpTYAAcQ1EAGEJPACRW
+ YAAjVV8AI1VfACNVXwAjVV8AHlBaAFB/iAA0WGMAIUVRAREyPzehtb7W7vb8/+Hq8P/l7PL/5u3z/+Xs
+ 8v/j6vD/5Ozy/+Xt8//j7fL/4+zx/97o6P/e8vH/NV1n0GKVngBjlZ4AY5WeAGOVngBjlZ4AY5WeAGOV
+ ngBjlZ4AY5WeAGOVngBjlZ4AY5WeAGOVngBjlZ4A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ATImbAEyJ
+ mwBMiZsATImaAE+LnQBWkqQAVZCiAFmVpwBWlKcBdae2R8/r8fXc6On/6+zs//Du7//q7vD/5O7y/9/u
+ 9P/f7PH/5O/w/9zp6//Y5uv/5PT6/83j6cA5WmgYETBBAE98iABxpLAAbJ6qAGyeqgBsnqoAbJ6qAGye
+ qgBsnqoAbp+rAFp5gwAyW2gAKlNgABxDUQAYQk8AJFZgACNVXwAjVV8AI1VfACNVXwAeUFoAUH+IAC5S
+ XQAWOUUAXXuFYuP1+uzf5+7/4uvx/+Tt8//l7fP/4+vx/+Lq8P/k7PL/5e3z/+Pr8f/h6u//4O3s/8zm
+ 5fBaipKkx///AMT//wDE//8Aw///AMb//wDJ//8Ayf//AMn//wDJ//8Ayf//AMn//wDJ//8Ayf//AMn/
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wAnaHgAJ2h4ACdoeAAkZXQAOHeGAE6LmgBPkqAANW9/ACpg
+ cQApXGuu0fP2/9rs7f/k6+v/6u7u/+jv8P/i7/P/3+/0/+Tw9f/j7u//4+/z/9zp7//U5Ov/4fX4/6O/
+ xbUEIDA+SnaEAHWotABsnqoAbJ6qAG6grABvoa0Ab6GtAG2grABuoKwAWnmDADJbaAAqU2AAHENRABhC
+ TwAkV2EAI1VfACNVXwAjVV8AI1VfAB5QWgBRgIkACi45AFN0fWLe9/r62+zx/+Hp7//j6/H/5e3z/+Xt
+ 8//k7PL/5Ozy/+Xt8//l7fP/4+vx/97p7v/l9vf/iamt5WqephHB/v8Au/f+ALn1/AC8+f8Apd3mAJLF
+ zwCUydMAlMnTAJTJ0wCUydMAlMnTAJTJ0wCUydMAlMnTAP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AClp
+ eQApaXkAKWl5ACZmdgA7eogAQ4GNAEePmgAscXwAMWdyADRodXikzdGd2fDx/97q6v/m7e3/5u7x/+Hv
+ 8//h8PX/5PH1/97p7P/d6e7/5vP4/+Dv9f/U6fD/2/T7/4KirLwaQU8SXo6aAnCfqgBunqkAZZaiAF+Q
+ nQBgkZ4AaZejAG6PmQBadX8AMlxpACpTYAAcQ1EAF0BNACNVXwAjVl8AIlVfACJVXgAhVF4AHlFbA0Fw
+ eQY+Ymuqy+ft/9jt8v/Y5uv/5e3z/+Xt8//l7fP/5Ozy/+Pr8f/l7fP/5e3z/+Ts8v/h6vD/4Ovx/9rx
+ 9N1chY20OGZyJU18hQBHdH8AaJupAH2zwAB2o7AAbpqnAG+bqABvm6gAb5uoAG+bqABvm6gAb5uoAG+b
+ qABvm6gA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8AKWl5AClpeQApaXkAJmZ2ADt6iABEgo8AR46aADZ+
+ iQA6eYMAOW55AFR+hvDb9vj/3O3t/+Hu7v/j7/H/4fDz/+Hw9f/h7/P/6PP3/+Pv8//d6u//3+3y/9nq
+ 7//Z7fL/1/H24ENnczwdQk0AfKGpAHugpwBGb30AIlFhACdUZABacXwAcISNAFp2gAAyXGkAKlNgAB1F
+ UwAROUcAFj5LACZWYQAnVmEAKVhjAC9daAApV2IACjNANajJz/3f9vn/2unv/9/s8f/l7vP/5u70/+bu
+ 9P/k7PL/4+vx/+bu9P/m7vT/5Ozy/+Hq8P/k8PX/s8/U8BlBTjccRVIAGkJOAE19iwBsobIAa56tAHOg
+ rQB0oa4AdKGuAHShrgB0oa4AdKGuAHShrgB0oa4AdKGuAHShrgD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wApaXkAKWl5AClpeQAmZnYAO3qIAEKAjQFGjJhYOH6Jzzl4gtFJfojLOmNs+qS+wf/j9vb/4u/w/9zq
+ 7P/e7u//2+rv/+Hw9P/m8fX/5+/z/+Ls8f/h7fL/3Orv/9rr8P/X7vX/uNXb6jVYYnJlipMBZoqTAEBp
+ dwAmVWUAKldnAFtzfgBwhY4AWnaAADJcaQAqU2AAHUVTABI6SAAQNEMAKFRgACtXYwAtWWUAPGZxACNM
+ WApQc31/2/X6+tDj6P/l8vb/4evw/+Ps8f/k7PL/5e3z/+bu9P/j7PL/6fD3/+Xt8//l7fP/4uvx/+Tw
+ 9f+PrrdjPWh0AGqXoQA4Ym0AX5KjAG6ktABuobAAdKGuAHShrgB0oa4AdKGuAHShrgB0oa4AdKGuAHSh
+ rgB0oa4AdKGuAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////ACdndwAnZ3cAJ2d3ACRkdAE5eYgRSYWRKEJ9
+ iP87dH7/NWpz/zRgav89X2j/WXR7/+Dw8v/W5Ob/3uvs/+Lv8P/f7e//5fH0/+Xv8//m7vL/5e7y/+Pt
+ 8v/f7PD/3Orw/9Xo7v/h+P3/hqOq2g8vOxAfQU4AJ1NiACtZaQAqV2cAW3N+AHCFjgBadoAAMlxpACpT
+ YAAdRVMAEjpIABE1RAAoVGAAKFZiADhjbwA9ZG8AKU9bIaXDysTZ7vL/4e/0/+Hr8P/h6u//4+vx/+Ts
+ 8v/l7fP/5u70/+Xu9P/q8ff/5Ozy/+Xt9P/f5u3/5fD1/3GNmBhkj5oAfq63AERvegBekqIAcqm5AXGl
+ tAB1oq8AdKGuAHimswB2pLEAdqOwAHajsAB2o7AAdqOwAHajsAB2o7AA////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8AM3GBADNxgQAzcYEAMnKBADNvfhY9b3y5HUVQ/ld7hP+BqLD/Z4eQ/563vv9OW2T/t8PI/+r1
+ 9//i7u//5PDx/+Ht7v/j7vD/5e/0/+bu8v/l7vL/5O3x/+Xu8v/f6e//5PH2/9bo7f/N5OfYRGJsLB1E
+ UgArW2sBKlhoACZUZABacn0AcIWOAFp2gAAyXGkAKlNgAB1FUwASOkgAETVEAClUYAAoV2MBQ296BUNk
+ cQJXdoFP6v///9fm7P/o8vb/4+rv/+Xs8f/j6/H/5Ozy/+Xt8//m7vT/5+/1/+jw9v/k7PL/5Ozy/9zj
+ 6v/n8vj/LkNQPUBibgCbv8cAT3aAACFOXABfkKAAYpCeAHKfrAN5qLUBYYyZAGqVogBsl6QAa5ekAGuX
+ pABrl6QAa5ekAGuXpAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wBjm6gAY5uoAGObqABmnqsAT4OROnWc
+ pv+QsLb/1/Dz/9Xq7//e8PX/3u3y/9nm7P+AjJT/7vb6/93n6//i6+3/5e/w/+Tv8v/l7/T/5u3z/+fu
+ 8v/l7PD/7PL1/+Tq7//m7/T/2ujq/+f5+f+XsreUFD1MESVTYwEqV2cASGx5AGJ4ggBvhI0AWnaAADJc
+ aQAqU2AAHUVTABI6SAASNkQAJ0pZABU+TAA0W2gATGx5ALrP18Lc7PD/4e3y/+Do7P/s8fT/6e/0/+Lq
+ 8P/k7PL/5e3z/+bu9P/n7/X/5u70/+Xt8//i6vD/4Ojv/9Xg5/86SVSldYyWAJKxuh19oakrXoCIAAMf
+ KiYjPEkFP11qADdSXgAFJzEANlpkAEJncwBAZXEAQGVxAEBlcQBAZXEAQGVxAP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AGKToQBik6EAYpOhAGCRoAZolaMrvdzjttnu8v/c6ev/4ezw/+Lr7//c5ev/4Obt/5Wd
+ qP/W3uT/6fDz/+Xr7v/f6en/5O/y/+Xv9P/m7fP/5+7y/+br8P/n7fH/6O7y/9/p6v/j8fH/2+vr/9Tr
+ 7fo2XGk1FTtKACxTYwBog40AaX6HAG+EjQBZdoAALlpnACVPXAAVPk0ABzE/AQIoNwYnSVcAK01bDyVF
+ U2xqhpGM3/H3/Nvp7v/h6+//5Oru/+rv8f/k6/D/5Ozy/+Xt8//l7fP/5u70/+bu9P/j6/H/6PD2/9zk
+ 6//q8vj/v8rR+lljbYzk9vnVyOLn5sbj5urt///WaoGJ6puutdt+jpiLEx4qjRA0PQY0WWQARGl1AEJn
+ cwBCZ3MAQmdzAEJncwBCZ3MA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AQG+CAEBvggBAb4IAPGt+Dk17
+ jmK11+PA4vT8/9nj5v/l7e//4uvu/+rx9P/j7O7/q7S7/6u2u//s9Pb/6/P0/+Pt7v/p8/X/5e/z/+Xt
+ 8v/p8fX/5+/z/+Dp7f/m7vL/5e/x/+Dr7v/V4uX/5fX4/6fAyOZSbnqPa4iTXHCJkgBkeoMAaoCJAFt1
+ fwBFZnFLSGp0h1BxfJdZeYOpZ4ONtJeutojS5euIlq22/rTGzP/m8/j/7fn9/+jw9f/l7fD/4Ojs/+Lr
+ 8P/c5ez/3OXt/+jw9v/o8Pb/3ubs/+Hp7//l7/P/4Ont/+31+f+1v8f/sba//+Lp7//Y7O3/1Ozr/9z1
+ 8v+80ND/ydfY//H7+/+XqbDrVnB4iz9jb2hCZ3MAQmdzAEJncwBCZ3MAQmdzAEJncwD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wA/coYAP3KGAD9yhgBAcoYAOGh+LJfC1PXc8/z/3ejq/+Dr7P/f6er/2eXm/+z2
+ 9/+7x8r/pbK1/+bx8v/l8PH/4uzu/+fw8//i7PD/6PH1/+Ps8P/e6Oz/6vP2/+Dq7v/h6/D/7PX5/+z2
+ +v/j7vL/usXI/5Geo/+ir7P/jJqh1mx8gtZicnjVX2511GFudflqd37/e4qQ/4GOlf+BjpX/eoeP/3uI
+ j/9QXGb/Ym52/4eTnP+fq7L/vcfM/83V2P/f6u3/7fb8//H4///j6/T/2+Pq/+Lq8P/j6/D/7PT3/9/q
+ 6//i7e7/5O7w/6Otsv+/vsb/6eru/93r6//Y8O3/z+fk/+H17//e6+j/4enr/8PQ0//K3OHxTG982DJY
+ ZgA3XGoAN1xqADdcagA3XGoAN1xqAP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAEzSQABM0kAATNJAAEz
+ SQAAKkAnVYKW0tLt9//b5+n/4uzt/+r09f/p8vT/097g/6Wxtf+Mmp//4Orr/+bv8f/i7O7/4evu/+Xv
+ 8//i6u//5u/z/+v0+P/k7PH/7PL0/9Xe5P+otLv/h5Ka/36Lk/92hIn/doOI/5Oeo/+tub3/v8vO/9nk
+ 5v/m8PH/6fPz/+r09f/o8vP/5vDy/+fw9P/i6+//4Ojt/+Lr7//V3+T/vsnP/6Crsf+BjZT/eoaP/4aT
+ m/+Ik5z/oqu2/9/n8P/v9/3/4Oju/+Do7v/g6u7/6PL0/9rl5v/t9/j/lZ6k/8vO0//u7/H/3Onq/+H0
+ 8f/Y6+n/2ero/93q6f/i7/L/4/n8/6nI0OM+aXlrPWl4AD9regA/a3oAP2t6AD9regA/a3oA////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8AADVHAAA1RwAANUcAADlLAAA5Sw0SRlnDnbW///f////P2dv/oK2x/42a
+ n/+hrrL/rrq+/4iVmv/e6Or/5vDx/+Pu7//h6+7/5u/z/+vz9//h6+7/xtDU/6GttP99iI//fIiQ/5Wh
+ qf+8xsv/y9TX/93o6v/y+/z/8Pr6/+fy8v/l7/D/3+rr/9vm6P/f6er/4Ovr/97q6v/g6uz/2+Xp/93n
+ 7P/k7fD/4+zw/+Ps8P/n8PT/6/T4//L7/v/q8/f/zdfc/7nDy/+Yoq//b3mE/4KMl/+7xMr/4env/+zz
+ 9v/f6er/3+rr/+/4+f+Tn6P/aHR7/32Kjv+Vp6n/vM3O/+j19P/o8vP/1eLm/9Hm7v/S9vy7WIaSpQk5
+ Sh8UR1YAFEZWABRGVgAURlYAFEZWABRGVgD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAYYnMAGGJzABll
+ dgAISVkAADZHLBVLXYkqP0z5dYKH/4GNk/+2wcX/5/Hy/+Pu7//t9/j/n6yw/9ni5P/Y4+T/5e/w/+73
+ +f/V3uT/o660/3+Mk/+AjJT/prG3/9Tf5P/q8/b/7vX5/+Ps8f/h6+//4uvu/9vk5//b5un/6PL0/+Dq
+ 7P/j7O7/5/Hz/+Pt8P/i7O7/4uzu/+Tu8f/i6/D/5O3x/+bv8//c5er/5e7z/+fw9P/f6e3/3ufr/+Lr
+ 7//k7fH/3+jv/+nx+f/q8vb/t8DH/4KMlf9yf4n/n6Wr/+Hq7P/j7vD/7/j4/5SgpP/O3N3/3u7t/7TG
+ x/9wgIT/k56i/9jh5f/0////0+3zu2iaqI4AMkQ4CDxMAAg7TAAIO0wACDtMAAg7TAAIO0wACDtMAP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////ADKPoAAyj6AANZKjABtsewALPk8AT4COAExueohHVV3/aHV7/5yp
+ rf/BzM//1eDi//f///+irrL/1eDh/+v19f/a4+X/maas/4aSmv+bpq3/0Njc/+Tt8v/w+fz/4+3w/97p
+ 7f/g6u7/5O3x/+Xv8//i6+//5Ozx/+fw9f/j6/D/5Ozx/+jx9f/g6u7/4+zx/+Tt8v/m7/T/4+zw/+fw
+ 9P/j7fH/3+nt/+Ps8P/h6+//5O7y/+Tu8v/k7fH/5O3x/+Tt8f/m7/X/4ury/97m8P/r8/n/6/P5/9DZ
+ 3f+RnqT/YG51/52qrf/i7e7/l6Wp/8bX1//l9vX/5fT0/9rl5v96g4n/OkVQ/01caP9+nqxxJ1tuHAU9
+ TgARSVgAEUhXABFIVwARSFcAEUhXABFIVwARSFcA////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AL4maAC+J
+ mgAxjJ0WE2NzdEl3hQBLfotTdpKc+PX9/v/d5+j/rbm9/4iWm/+EkZb/n6mt/46boP/d5+n/p7O3/36L
+ j/+xub3/5O3x/+nx9f/i7PD/4eru/+Pt8v/j7PD/5O3x/+Xu8v/k7fH/4uzw/+Pr8f/j6/H/5e3z/+bu
+ 9P/m7vT/5e3z/9/o7//o7/X/5Ozy/+bu9P/l7vP/6PH1/+Xu8v/m7/P/5/D0/+bw9P/l7/P/5u/z/+bv
+ 8//m7/P/5u/z/+fv9v/k7PX/4Ory/+Dq8P/h6e//4erw/+/3+v/a5Ob/iZSZ/257gP9canD/vM/P/5Sn
+ qf96jJD/dYWJ/42Wm/+WmqD/U2Bt/0Vjc24oWWgAKGl2ADB5hQAvd4MAL3eDAC93gwAvd4MAL3eDAC93
+ gwD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wAriJkAK4iZAC6LnAsXano+Byo6rRM8TPqhvsb/u8jL/9vk
+ 5v/u+fr/+f///9Lc3/+3wsX/RFNZ/zdBR/9IU1r/qre6/93l6P/f6O3/5O7y/93n6//h6u7/4uvv/+Tt
+ 8f/l7vL/5e7y/+Xu8v/k7fH/4+vx/+Ts8v/l7fP/5e3z/+bu9P/l7fL/5e3x/9rj6P/l7PL/4env/+bu
+ 8//i7PD/5O3x/+bv8//m7/P/5/D0/+bv8//m7/P/5u/z/+bv8//m7/P/5e70/+Ts9P/l7fX/5e3z/+Hp
+ 8P/c5Ov/ydLY/7bBxf+lsrb/UWBn/yMtNP84Qkj/lKep/8DP0f/X4eL/5ezt/+3y9P/S3ub/RGFu5iVV
+ YTA7eoUWLHWBDS51gQAudYEALnWBAC51gQAudYEALnWBAP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AEmT
+ ogBJk6IASZSjAEOJlwAfT19PZIqV/4qiq/+Mm6D/gY6U/46an/+RnqL/vcnM/+Ls7v9VY2n/qLO3/9Ld
+ 3/+ap6v/kp+m/56qsv/X4eX/6fL1/+vz9//f6O3/5e7y/+bv8//m7/P/5u/z/+Tt8f/l7fP/5e30/+Xt
+ 9P/l7fT/5e30/+Do8P/g6O//6/P4/+Xt8v/l7fP/3+ju/+Xu8v/o8fX/5e7y/+Ls8P/j7fH/5u/z/+bv
+ 8//m7/P/5u/z/+bv8//l7vT/5Oz0/+bu9v/n7/X/5u70/8jR2f97h4//jZmd/5KfpP/G0dP/4Ors/7TB
+ xP92hYr/scLE/+Px8f/z+fn/1+Dh/7TBxf9adHz/FzlF4Td3goEocn4eK3N/ACtzfwArc38AK3N/ACtz
+ fwArc38A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8AKF5tAChebQAoX24AHVJhCER2g9XN7PP/4PH4/+Hs
+ 7v/c5ub/usbJ/7nEyP+Nm6D/NEJI/0pXXv+grbL/vcnL/9bh4v/W4OT/zdfd/+Pt8P/i6+//6PH1/+Xu
+ 8v/l7vL/5u/z/+bv8//m7/P/5e7y/+bu9f/l7fX/5e31/+Xt9f/l7fX/3ubv/+Ts8P/e5u7/1+Dn/+Ts
+ 9P/i6/L/3OXq/+bv8//n8PP/5e7y/+jx9f/n8PT/5u/z/+bv8//m7/P/5u/z/+bu9f/l7fX/5u72/+bu
+ 9P/i6vD/3ubt/97o7P/3////8vz8/+Lt7f/O2Nv/ydHU/5ynrP8vQUj/VWls/3SDhv97h4r/mKWp/7/T
+ 1f9tjJH/XJGWbKHb3wCRys8AksvQAJLL0ACSy9AAksvQAJLL0AD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wAsdIQALHSEAC96igAANEUEQGdz+Of8///f7PL/5vDy/+Ls7v/y/P3/3+rs/4WTmf+5xMf/5O7v/7/M
+ z/+bpqv/oayy/5unrv/V3+T/3ujt/+Tt8f/f6O3/4+3x/+bv8//m7/P/5/D0/+bv8//l7vP/5u72/+bu
+ 9v/l7fX/5Oz0/+Xt9P/f5/D/p7K7/7a/x/90gI3/jpik/5Gbpv/h6u7/5/H1/+Xu8//h6u//5e7y/+bv
+ 8//m7/P/5u/z/+bv8//m7/P/6PD4/+fv9//k7PT/5e3z/+Ps8f/i6vD/5O7y/5unrP+HlJr/i5mg/5Ke
+ pf+KkJr/lqCm/667vv9dcHP/hJaX//r////g7ev/4vTz/8Pe3v9XgIW4ZpmiEGSWnwBkl58AZJefAGSX
+ nwBkl58AZJefAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AC94iAAveIgAMXyNMhVSYL0wWGT9eo2U/4iS
+ m/+eq7P/s8DI/8PN0v9ba3X/kZ+m/9Xh5v/H1Nn/1N/k/+Hr8P/g6u//1Nzj/9ng5//n7fP/6O70/+ju
+ 9P/o7vT/6e/1/+nv9f/o7vT/5+3z/+ft8//l7PT/5e31/+Xt9f/k7PT/4uvy/+ry+v+SnKb/WGNw/8jS
+ 3P9mcn//pa65/+rv9v/n7vX/6O71/+ft9P/o7vX/6O71/+jt9f/o7vX/6O71/+jt9f/n7fb/5+31/+fs
+ 9f/l6vP/5Ory/+Lo8P/s8ff/2N7k/8bN1P/Ax9D/zNPZ/9Xf4//U4OH/1+Pk/7zLzP9DVVv/e4uO/6i3
+ uv+MnKD/oLS3/zhITv9NeIE3aZqkAGWWnwBllp8AZZafAGWWnwBllp8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8AKGl4AChpeAAmZ3YBM3F9obDX3f/j8fP/2N/i/7vIzv+uvML/LjpE/3J/h/+Zpq7/m6qy/52s
+ tP+isLj/p7W9/6u5wP+yvsX/ztfd/+ju9P/o7/T/5u3z/+rx9v/o7/T/6O/0/+fu8//m7fP/5u3z/+Xs
+ 9P/l7fX/5e31/+Ts9P/h6vL/4+vz/9ff5f+BjZn/kp2p/4+bpP/r8/j/5Ony/+br9P/n7PX/6O32/+nu
+ 9//o7fb/6O32/+jt9v/o7fb/6O32/+bs9f/m7PX/5uz1/+Tq8//j6vP/4unw/7vCy/+TnKn/oKm1/5af
+ rf+Qmqb/l6Wr/5alqf+NnKH/oK+z/52prf9EU1v/qrm8/+Tw8f/l8fL/vsrN/0lmcLhAYWwAQ2JtAENi
+ bQBDYm0AQ2JtAENibQD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wALP00ACz9NAAk+SwAQRVOtv+Pn/+Lw
+ 8P/a4uP/7/n8/5+ssv+UoKb/7vr9/+35/P/n8vb/5/L2/+Xw9P/i7vL/4Ozw/97o7f/l7/L/6vP3/+Dr
+ 7v/g6u7/5vD0/+Tu8v/l7vL/5O7y/+Tu8v/k7vL/5Ozy/+Xt9f/l7fX/5Oz0/+Hq8v/d5u7/7PP5/8TN
+ 1/96hZL/4enw/+Pq8v/l6/P/5uv0/+fs9f/o7fb/6O32/+fs9f/n7PX/5+z1/+fs9f/n7PX/5u31/+Tt
+ 9f/k7fX/4uvz/+Dq8v/g6fH/zNbf/8TO1//X4Oj/1d/n/97n7v/h7fD/7Pj4/+f09P/o9fX/9v///7vI
+ yv9ren//4u3u/9bj5f/t+vr/KkRPzgQeKwALJTIACyUyAAslMgALJTIACyUyAP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AAtATgALQE4ACT5MABRJV6vP8fP/4+3u/+ns7v/FzdL/b3yF/+Xv8//i7PD/3+jt/9/p
+ 7f/g6e7/4uvv/+Ps8P/l7vL/5vH1/+Ds8P/d6e3/4+/z/+fz9//k7/P/4ezx/+Ht8f/i7vL/4u7y/+Lu
+ 8v/j7PL/5e3z/+Xt8//k7PL/4erw/93m7P/n7/T/4uvx/+/3+//c5Ov/4ejv/+ft8v/n7fP/5+3z/+ft
+ 8//n7vP/5u3y/+bt8v/m7fL/5u3y/+bt8v/k7fL/4u7z/+Hu8//g7PH/3urv/9/q8P/o9Pn/6/b7/9/q
+ 8P/l7/T/3+rv/+Dq7v/h7O3/3Ojp/9jj5f/f6ev/6/X2/32Jjv+eqq7/6PP0/+jw8f9adoHKPWZ2AENr
+ egBDa3oAQ2t6AENregBDa3oA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ACDVAAAg1QAAHMz8ACzdDq6zM
+ 0f/m7e7/6Ors/3uHjf/U3uD/4+7v/97p7P/c5un/3+rs/+Hs7f/h7O7/5e/x/+bw8f/j7vD/3u3v/9/t
+ 7//h7/H/3u3v/9zr7P/d7O3/3ezu/9/t7//g7/D/4e7x/+Pr8f/l7fP/5e3z/+Ts8v/f6O//4urx/+Ps
+ 8v/h6e//2OHn/+Tt8P/j6fD/6O3z/+ft8//n7fP/5+3z/+ft8//m7PL/5uzy/+bs8v/m7PL/5Ozy/+Pu
+ 8//h7vP/4O3y/97s8f/d6/D/3erv/97s8v/f7fL/4O3y/+Pw9v/d6u//4+3w/+bx8f/q9PX/4Ors/97p
+ 6v/d6On/3efo/3F/hP/Q293/4Ojq/3aVoM5Zk6UIXpanAF6WpwBelqcAXpanAF6WpwD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wAAIi4AACEtAAEiLgACIy+rXX6F/+Tr7P+tr7L/V2Nq/8bQ0//l7u//4err/+Pr
+ 7f/m7/D/4uvt/+jw8v/c5ef/4Onr/+Pv8P/h8PD/4fDw/9/t7//i8fL/4/Hy/+Du7//c6+z/3Ors/+Dv
+ 8P/f7e7/6vL2/+Ts8v/j7PH/5u7z/+Xu8//o8fb/3+ju/+Xu8//l7fP/5Ozy/+Lq8P/n7fP/5+3z/+ft
+ 8//n7fP/6O7z/+ft8//k6u//5evx/+Xs8f/o7/T/3Ofs/9/s8f/f7PH/3erv/9zq7v/e7PD/2Obr/97r
+ 7//d6/D/1+Tp/+by9//l7/D/4uvs/+jw8f/f6On/5/Dx/9ni5P++yc3/VGBn/4+an//7////XHmF/UJ2
+ iVpHeowAR3qMAEd6jABHeowAR3qMAP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AA9IUwAQSVQAC0JNAAc4
+ RKtBZGz/i5WZ/1dcYf9EUFf/XWlw/5GaoP/X3uH/5Ovt/97l6P/n7e//3+bo//H3+P/o7/H/0Nnb/7/L
+ zf+xvsH/rbq9/7TBxP/CztD/1uLj//D7/P/o8/T/2ubn/+Tv8P/d5ur/5/Dz/+Tu8f/m8PP/6fL1/9zl
+ 6v/s9ff/3ebp/+Tt8f/f6Oz/5+/z/+fu8v/n7vL/5+7y/+fu8v/n7vH/6O/z/+nw8//j6e3/5+3x/9/n
+ 6v/l7fH/5/H1/+r09//t9/v/7/j7/+75/P/s9vn/5/D0/+Pu8f/i7fD/2uTo/+Do6//l6+3/2N/i/87V
+ 2f+LlZz/ZnJ5/1hkbP9KVl7/Vl9m/6Gprv8aMTzkT4WVKE+DkwBPg5MAT4OTAE+DkwBPg5MA////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8ASJmlAEygrAAwdoEAACkzsEtvdv9CUFX/AAAF/wwUG/8kLzb/JDA2/15o
+ bv+xurz/7fT0/+jv7//l6+z/oqqt/4ONkv96hor/gIuP/46Xm/+Pl5v/iJKW/4CLj/+EkJT/kZyg/8XQ
+ 0f/o8PD/5+/w/97o6f/l8PH/4ezt/+r19f/f6uv/6PLy/97o6f/i7O3/6fT0/93n6f/k7e//5+3v/+bt
+ 7//m7e//5u3v/+bt7//j6uz/4ejr/+bt7//q8PL/6fDy/+bs7//Fz9L/q7W5/6Stsv+lr7P/pK2y/6Ot
+ sv+1vsL/3OTm//L5+f/q8PL/6/Hz/8/V2P+cpav/VWFp/0VQWP8nLzf/FRsk/wYPF/8HDRT/Fh0m/xMg
+ Ks5fmqUAW5SfAFuUnwBblJ8AW5SfAFuUnwD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBGl6MASZyoADZ/
+ igAMP0iVL1NZ/Sw8P/8AAwj/AQkP/wAGDf8ACxH/AwwT/0FNVP+GkJX/m6So/3iBhv+dqKv/zdHT/+/1
+ 9f/6/v///f////7////+////8/f4/9fd3/+7wcP/eIGG/4WNkv/Iz9H/7fb3/9/p6//l8PD/3Obo/+r0
+ 9f/Z4+X/4evs/+z39//Y5Ob/6fT1/9/p6//l6+3/5ezu/+Xs7v/l7O7/5ezu/9/m6f/u9fb/7vT2/7O8
+ wP+Gj5X/bHV9/4aOlP+Zoaf/q7K3/7m/xP+9xMf/qrK3/4OLkv9gaG7/dn6F/7a7v/+mrbL/cnyD/z9H
+ UP8fJS3/BQkP/wAJEf8BBAz/BQ0V/woUHP8CChL/DiIrzEx8hQBId4AASHeAAEh3gABId4AASHeAAP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AEeZpQBFmaUAUp6oAGCZoAgRKC7yGysu/x8kJv8NFhz/AwkP/wUP
+ Ff8CDRP/CRUc/1pla/+fpqn/6/Hx//T6+f/u9fX/8PX1//L09f/x8/T/8fP0//Hz9P/z9fb/8vX1//r7
+ /P/v8fL/vsLG/3yDif+UnqP/5/Dy/9zn6P/q8/T/2eTm/+rz9f/e6uv/i5SX/zE5PP+LlJj/3efp/+bs
+ 7v/k6+3/5Ovt/+Tr7f/k6+3/6u7w/8DIzP9veYD/ho+V/8PLz//y9vj/9PX3//X3+f/y8/b/9/j6//3+
+ ///5+vz/8PHz/+/v8f/Hys//eX6E/zdBSv9KVV3/KS83/wAEDP8ACBD/AgsT/wQJEv8xO0T/WWRs/xsi
+ K/8FDxbMBxEaAAYRGQAGERkABhEZAAYRGQAGERkA////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AO4mUAD6O
+ mgAvbHYAEigvCgALEfo4SEz/VGFn/xghKP8DCQ//AQcO/wgRGf9sdXr/5uzs///////s8fH/7fHy//H1
+ 9f/v8fL/+fj5//f39//39/j/+Pj5//T19f/39/j/7u/w//P09P/7+/z/9/n6/5mhpv+Bi5D/6fHx/+Dq
+ 6//h6+z/6PLz/5ajqP8nMzv/PUdM/1RgZ//DztL/5e/x/+Xs7//k6+3/5Ovt/+309v+qsbX/WmRs/8jO
+ 0P/6////5+3v//L09v/u7vH/8fH0//j3+v/29fj/7+/y//Pz9f/y8fT/7+/y//Dw8///////3N/i/2Rr
+ cv80Pkj/MzpC/woQGf8ABg7/AQMK/zI5Qf9hbnb/ISgw/yA7RM0tTlYAK0xUACtMVAArTFQAK0xUACtM
+ VAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wAxaXIAMWpyADBocQAybHQFG0tVwj1RXP8tNj//AgUM/w8V
+ Hf8bIir/e3+E/+/x8v/z8/T/7/Hy//T09f/09fb/9/b3//b29//19vf/8/T1//b39//p6uv/8/T1//Hx
+ 8v/09fb/6ers//b29//w8fL//////5Sbnv+epaj/6vPz/9vm6P/d6+z/3evs/+r2+v/w+v7/7fX5/+Hp
+ 7//g6vD/4ezw/+Tu8v/t9ff/t7/C/3aAh//k5+n/9/n5/+3v8P/z9PX/9fX2/+3u7//v7/D/8fLz//Dx
+ 8v/29vf/8/P0//X19v/x8vP/7/Dx/+7v8P/19ff/+fn6/4GEif9BR0//VVlh/yYtNP8BBgz/AAMK/zlL
+ UP8uPkP/XH6CZXaeogBymp4AcpqeAHKangBymp4AcpqeAP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AFeT
+ nABXk5wAV5OcAFyYoQA/dX9cHTQ//wgNFf8PFRz/QEdO/290ef/7+/z/7u/w/+/x8v/z9PX/9vb3//f3
+ +P/39vj/9vf3/+bo6f/3+Pj/9vb3//Dx8v/e4OL/4uPl/+fp6//6+/v/5efo//X29//x8vL/9Pb3/2x2
+ e//W3d//4+3u/+Lw8f/e7e7/3Ojs/93n6//i6u//5Ovy/+Hr8f/W4uf/5vD0/9Ha3v+CjJL/5uvt/+ns
+ 7f/09fX/6uvs//r5+f/4+Pj//v7/////////////8/T0//Hy8//s7e7/7e7v//X29//u7/D/8/T0/+/w
+ 8f/q6uz//v39/4aJjf9CSE//Z210/0NPVv8OFx3/AQ8U/wkeI/+BpagbnMTGAJe+wQCXvsEAl77BAJe+
+ wQCXvsEA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8AOnV+ADp1fgA6dX4AO3aABTtye80JHin/DhIZ/1df
+ Zv9aYGf/5ufo/+zt7v/w8fL/9/f4//b29//39/j/9/f4//b29//s7e7//f7+/+fp6/+goqb/U1dd/yw0
+ O/8oLjX/S05R/6aoq//29vj/5Obn//Lz9P/09vf/r7e5/5qjp//z/f3/3Orr/+Ty9P/h7fH/4uzw/+Xs
+ 8f/h6fD/4u3y/97q7v/m8PT/pK61/6ausv/1+Pn/7fDx/+/w8f/z8/T/9fP1/76/wv+Ul5v/g4SH/4uO
+ kv+0uLv/5ujp//z8/f/v8PH/7O3u//r6+//x8vP/8fLz/+3t7f/u7e3/9fT1/2ltc/9YXmb/aHN5/1Rj
+ af8aLjT/AAQJ/4OkpyOexskAmcDDAJnAwwCZwMMAmcDDAJnAwwD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wAfWWMAH1ljAB9ZYwAdWGILK2Fr9zNLVv9XYWn/XmVt/4mOk//4+fn/8vPz//Hy8//19fb/9/f4//f3
+ +P/19fb/8fLz//n6+v/FyMv/NjpA/wAABf8AAAH/AQYO/wQID/8AAAX/CgwQ/4OFi//09fb/8/P0//L0
+ 9f/Cycv/lqGl/+v29v/f7e7/4O7w/+Xw9P/m8PT/5Ozx/97m7f/h6/H/4u7y/9/p7v+JlJz/0trd/+rx
+ 8v/k5+n/8/T1/8HFyP9KTFL/DhEY/wAAB/8AAAL/AAAG/wsNE/8jJiz/lpqf///////09PT/8PDy//P0
+ 9f/x8vP/9PX1//j39//29fX/x8fK/0JJUf9ga3H/XGtx/1pvdP8ZJiv/fp+jJZvCxQCWvcAAlr3AAJa9
+ wACWvcAAlr3AAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////ABtVXwAbVV8AG1VfABdTXQorYWvyWXJ8/2Vu
+ dv9FTFT/zM7Q//Hy8//v8PH/8vLz//j4+P/29vf/9fX2//Hz9P/x8vP/3eDh/x0hKP8AAgn/AwcO/wMJ
+ EP8AAgn/CAwT/wcMEv8MERj/BwgL/7a4u//4+fr/8vT1/9fe3/+VoaX/4Ozt/9/t7v/f7u//5PD0/+jx
+ 9f/o7/T/6e/2/+Tu8//Z5uv/5e7x/3J8hP/p7/H/6e/w//X4+f++v8L/DxMX/wAAAv8BBQz/AAEI/wED
+ Cf8AAwr/AAAH/wAEDP8CBQz/mJug//v8/f/t7u//9PX2//f3+P/x8PH/9vX2//Lw8v/n5uj/Ymhu/1hi
+ aP9VZWr/XXJ2/zJKTv9wlZoqhq6yAISqrwCEqq8AhKqvAISqrwCEqq8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8AFE5YABROWAAUTlgAEUxWCiVbZfJbdX//Zm93/05VXP/k5eb/7/Hx/+3u7//29/f/9fb3//P0
+ 9f/29vf/7u/w//3+/v9+gof/AAAB/wMGDP8ECA//AQMK/wEEC/8BAwr/AQQL/wMID/8AAQb/QURK/+/w
+ 8v/t8PH/4ujp/5ikqP/Y4+X/4O7v/+Du8P/h7fH/5e7y/+fu8//k6/L/5/D2/9nl6v/g6u7/bXd///D2
+ +P/q8PH/9vn6/09TWf8AAAX/BQkQ/wAABf8AAQj/AAUM/wAHDv8AAwr/AgUM/wACCf8tLzX/6+3u//Hy
+ 8//39/j/8vLz//X19v/59/j/8/Hy//////+KjZL/N0FI/1ViZ/9SZ2v/OFFV/2iOkjN9pakAeqGlAHqh
+ pQB6oaUAeqGlAHqhpQD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAWT1oAFk9aABZPWgAWUVsKGEpV9iY6
+ RP8sND3/KS41/+Dh4//19vb/9fb2/+/v8f/z9PX/9PX2//j3+P/09fb///7//1NWWv8AAAL/AQUM/wAA
+ Bv8AAwn/AQUM/wAEC/8DBw//AAEH/wQJEf8FCA//3d7g//X3+P/T3N3/namt/9nl5v/f7u//4e/x/+Lu
+ 8v/l7vL/5+7z/+Tr8v/h6/H/3Oft/+Lt8P99iZD/6O/x/+jv8f/l6ev/Gx4k/wAABv8DBw7/AAIJ/wAD
+ Cv8ABQz/AAUM/wAEC/8AAAb/AwYN/xUaIv/Iy87/+fr5//X19v/39/n/9vX2//r3+P/y8fL//Pv7/6yv
+ s/8FDRT/AAoS/xInLf8TIif/cJKWLYeusgCDqq0Ag6qtAIOqrQCDqq0Ag6qtAP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////ACxmcAAsZnAALGZwAC9sdgkdSFLgAAAM/wAKE/8KDBP/3t7g//Pz9P/z9PT/8vP1//X2
+ 9//5+vr/8vLz//Hy8//s7e//SEtQ/wAABP8DBw3/AQQL/wAAB/8DCA//AAQK/wIHDv8BBAv/AgYM/wUK
+ Ef/Q0dP/9ff4/8bNzv+bpqr/6fT1/9/u7//h7/H/4u7y/+Xu8v/m7vP/5ezz/+Dq7//e6u7/6fP3/5ei
+ qv/GztH/7vX2/9vf4f8REhf/AQcO/wEDCv8ABAv/AAUM/wAEC/8ABAv/AAMK/wACCf8DBw//GBsi/9HU
+ 1v/19vb/8fLy//n6+v/49/j/+vf4//Lw8f/19PX/y83R/w4TGv8AAAb/AA4U/wABBv+DpKcmnMbJAJfA
+ wwCXwMMAl8DDAJfAwwCXwMMA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AYZ+mAGGfpgBhn6YAaKivAEJu
+ dlUAAAj/AgoS/wEFDP/Iysz/9PT1/+3u7//29vf/9PX2//j5+f/z9PX/8vP0//Hy9P9FR0v/AAAA/wUK
+ Ef8BBAv/AQUM/wADCv8BBAr/AAIJ/wMIDv8DCA//AgQL/9bX2P/z9vf/usHD/56oq//u+fr/3evt/+Hv
+ 8f/i7vL/5e7y/+bt8//m7fP/4ezx/9/r7//q9fn/rLe9/56nq//2+/3/4eXn/xsfJf8BBg3/AQMK/wAE
+ C/8AAwr/AAMK/wADCv8AAwr/AQgP/wAAA/81Nz3/9/j5/+vt7v/29/f/+Pj5//j3+P/69/j/8vDx//b1
+ 9v/BxMj/NEBF/yo2PP8NHiP/AAwR/0NbXyNPbXEATWpuAE1qbgBNam4ATWpuAE1qbgD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wAWQEsAFkBLABZASwAXQk0ADTQ/UBosNv84P0j/LjQ8/6uus//5+fr/8vLz//Ly
+ 8//y8/P/9PT1//j4+f/y8/T//v///4GEiP8AAAL/BQgQ/wAECv8CBg3/AQUL/wADCv8AAgj/AgUM/wMH
+ Dv8aHiX/5+jp//D09P+jra//x9HS/+bw8f/f7e7/4e/x/+Lu8v/l7vL/5u7z/+bt8//c5+3/4u7y/+Tw
+ 9P/Hz9X/hY6V/+vw8v/y9fb/TFFX/wAAA/8DBQz/AAEI/wABCP8AAQj/AAEI/wEGDf8DCRD/AAAB/4+S
+ l//6+/v/7O7v//b3+P/19fb/9vX2//r3+P/z8vP//Pv7/6uusv9UX2X/XGxy/1Vqb/8sRUn/BxogIwQV
+ GgAEFhsABBYbAAQWGwAEFhsABBYbAP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ABg/SQAYP0kAGD9JABc+
+ SAAXQEpTQmFq/2h0e/9MVlv/fISG//n6+//z9fX/8/X2//T09f/y8vT/9vX3//Dv8P/09PX/6uvt/yUp
+ MP8AAAD/AwgP/wABCP8FChH/AQQK/wQKEf8AAgn/AAAA/4WKjv/v8/X/5evt/4iTmP/v+fj/5O7x/9/r
+ 7f/k7vP/5O7z/+Xu8//n7vT/4urx/9/q7v/k8PT/4ezw/+fw8/91gYf/1tzf//n9/v+orrD/AwgQ/wEE
+ C/8BAwr/AAAG/wECCf8CCA//AAMK/wAAB/88Qkn/8PHy/+vs7v/19fb/9PT1//T09f/y8vL/+Pf4//Du
+ 8P//////l5yi/01YYf9aaHD/XnF3/ys9RP8nQkcaRm1xAERqbgBEam4ARGpuAERqbgBEam4A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8AtebnALXm5wC15ucAtuXmAKrb3R1CYGjHVmVs/1lmaP9LVlj/7vTz/+Ln
+ 5//v8vP/8PH0//Pz9v/18/b/9vT1//Xz9P//////q6+z/xkbIP8AAAD/BQkQ/wADCf8AAQf/AAAD/wID
+ B/9obXL/7O/w/+/29/+uub3/rLi8/+z19v/e5+v/6PH1/+Ts8//m7vT/5u72/+Xt9f/g6fH/5vH1/+Lu
+ 8v/j7fL/7vf6/52prf+5wsb/6vHx//H29v9rdHj/AAMF/wAAB/8DChD/AwkP/wAAAP8ABg7/VFhf/+rr
+ 7f/w8fP/8fHz//n5+v/t7u//+/n5//f19f/09PX/8/P2/+/w9f+AhY7/SlZh/15sdP9ebHT/GSYu/zJT
+ WKODwMMAfrm8AH65vAB+ubwAfrm8AH65vAD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wCe2dwAntncAJ7Y
+ 3ACs4eQAp9faSQwjL/xVYWr/YGtw/z5KT/+vuLn/9fr7/+rt7v/z9vf/9PX2//b39//29/j/+Pb3/+rq
+ 7P/19vf/yMrN/2Nma/8tMDb/GyMr/zs+RP9aXF3/o6er//j4+f/x8/T/4Ofp/5Shpv/i7O7/4+3u/+Dq
+ 7f/p8fX/5Ozy/+bu9P/m7vb/5e31/+bu9f/i7vP/3+zw/+Tu8//g6e3/2uTl/295f//0+vv/4+vr//H4
+ +P+UnaD/Jy00/wADC/8OExr/T1BT/6aprv/3+Pn/8vPz/+3u7v/09fb/8/P0//b29//7+fr/+Pb3//Hw
+ 8f/x8fT/2t3g/1dhaf9eanL/WGdu/0dXXf84SE3/OVpg7lGMjzRRio0AUYqNAFGKjQBRio0AUYqNAP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AD13gAA9d4AAPXeBADt2gGA5YWvXIzRE/1FaZv9kb3X/TVpg/1tm
+ a//u9fX/7PLz//L19v/09fb/9/f4//f3+P/49/j/9PT1//Pz9P/29/j/9vf4/+Xm6P/S1Nb/5ujq//T2
+ 9//6+/v/5ufo//P19f+ZpKn/ws3P/+v09f/h6+3/5e7y/+Do7v/l7fP/5u70/+bu9v/l7fX/4+zz/+Hu
+ 8v/j7vL/4uzw/+Pt8P/t9/j/jJWb/6+4u//+////3+bn//T8+//c3+D/xcbI/87R0v/v8fP/+fn6/+zu
+ 7//y8/T//f39/+3u8P/5+vr/9vb4//Pw8//w7vH/9vX3//X3+P+epan/RFBX/2Jvdf9gb3T/QFFW/z9R
+ Vf9Nb3L/AC0xgAAwNAAAMDQAADA0AAAwNAAAMDQA////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AABwqAAAc
+ KgAAGygAACIwsU5vff9caHv/PkNU/19qdP9gbHT/N0NK/5mhpf/4/v7/6u/u//H09f/19vf/9ff4//b2
+ +P/4+fr/7e/w/+rs7f/19/j/9Pb3//X3+P/u7/D/6+3u/+Tn6P/4+fn/wcXI/5WfpP/p9PT/3unq/+r0
+ 9f/k7fH/5e3y/+Ts8//m7vT/5u72/+Xt9f/h6/L/5fD1/+Pu8//e6e3/5/D0/+Ht7v/R2dz/b3h+/+vw
+ 8P/r8vL/7vX1/+rt7v/39/j//f3+//X19v/u7/D/8fLz//Lz9P/3+Pj/+vr7/+/w8f/v8PH/9PL2//Dv
+ 8//09ff/2Nvd/0hSWP9kcXP/Wmpt/1tsb/82SEz/Wmxw/z9iZv8LREh5DkZKAA5GSgAORkoADkZKAA5G
+ SgD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wAYQVIAGEFSABlCUgAON0irTGR4/4eNo/9RVGn/WGFv/2Fs
+ d/9bZ3D/O0ZO/8rS0//5//3/6e7v/+zw8v/y9fj/9vX5//b2+P/x9fb/9Pb3//T3+P/z9vf/9Pf3//f5
+ +v/s8PH/8/X2/9zf4f9+h43/2eHi/+Dq7P/k7u//5O7v/+Xu8v/h6e//5e3z/+bu9P/m7vb/5e31/+Ts
+ 8//m8vb/4Ozw/+Hs8P/k7vH/4u3u//D3+f+dpqr/fIaK//f8/P/r8vL/7/Lz//b19//w8fL/9vX3//n6
+ +v/y8/T/9fb2//X29v/z9PX/9vf3//T19v/r7PD/+Pj6/+3w8v9ocHX/Tltd/2Jxcv9YaGv/Wmxw/yk6
+ P/9cb3T/PF5j/Thwc2U5cHMAOXBzADlwcwA5cHMAOXBzAP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ALTe
+ 6wCz3usAwu76AEJmd6hIXHL/ubzV/3l8lP9ASlz/X2x6/1xodP9OWWH/PElO/8zU0//x+Pb/7PHy/+rt
+ 8P/w8vf/8vX3//f5+f/y9fb/8PP0//P29//u8fL/7vHy//X4+P/Y293/foWK/9LZ2v/m7vD/4evs/+Lt
+ 7v/j7e//4+3w/+Tt8v/m7vT/5u70/+bu9v/m7vb/5e71/+Dt8f/k7/P/4ezw/+Hr7v/n8fL/4ejr/+zz
+ 9P+Zo6b/j5ic//T6+v/r7/D/7/Dx//Hy8//19fb/9fX2//Dx8v/19vb/9fb2//P09f/4+Pn/7/Dx/+/w
+ 9f/3+fz/dHuA/0hTWf9lcnP/VWVo/2N0eP82R07/coOM/2Z2g/83VV/6TX+DTUl6fwBKen8ASnp/AEp6
+ fwBKen8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8AxPf6AMn4+gCt3uUlMlRo3HGBmv/Gy+X/rLPL/z5I
+ X/9aZXb/WGVy/2h2fP9IVVr/OkdK/6+3uP/z+Pj/9vv9/+rv8v/q7vH/8vf3/+3z8//r8vL/8Pb2//D1
+ 9f/4/f3/v8fJ/1BZYP92gIX/6/Hx/9/n6f/n8fL/5vDx/9zo6f/j7PD/6PD1/+bu9P/m7vT/5u72/+bu
+ 9v/l7vX/4e7y/+Tv8//h7PD/3+ns/+Lt7v/k7O7/5u3u/9DY2f8+SVD/h5CV//H29v/29/j/8vLz//Ly
+ 9P/19fb/+Pj5//Lz8//v8PH/9fX2/+nq6///////4uXp/290fP9DTVX/anZ7/1pna/9gb3P/UmJp/0ZW
+ Yv+6x9X/j5uy/zZPYv9QfoJrhrW1AH6srQB+rK0AfqytAH6srQD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wDT//8A4P//AIe2u00pRFv/lKW//7/K5//Ezun/VmB5/0dSZv9kcH7/VGJq/2d1ef9baWr/Lz1A/213
+ e/+yur3/6O3z//z////2+/v/8vj4/+719f/0+vr/4enp/4eRlv9MWF//XWpv/1lkav+mr7L/7/j5/9nl
+ 5v/l7/D/5O/w/97n6//l7fL/5e3z/+Xt8//l7fX/5e31/+Tt9P/h7fL/4e7y/+Tu8//j7PD/4ezt/+Do
+ 6//i6ur/doGG/15qb/8+SlH/cXd8/7/BxP/4+fr/9fb3/+7v8f/y8/T/8fHz//f4+f/19vb/8vP1/7W4
+ uv9aYGj/RlFZ/2Vxd/9XZGj/YnF1/1Jiaf9OXmn/eYeZ/8HN4/+0vdv/VGaB/0Jpb7OMubkLi7i5AIq3
+ uACKt7gAire4AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AFWIkwBZiZQIRHJ/zEdjef+0x+H/s8Xk/7bE
+ 4v+pscn/NkFY/1xpef9jcXr/WGhr/19ubv9icXH/S1hd/0FMVP9WXmn/fYaN/5+orP+stbj/nqir/3qF
+ if9WYWb/SVVc/2Fscv9fa3D/Y25z/2Ftc/+st7z/8Pn6/97o6f/f6uv/7fb5/+Hq7//j6/H/4+vx/+Ts
+ 9P/k7PT/4+z0/9/s8f/f7PD/5e/z/+Tu8f/g7O3/6O/y/4qUmf9ZZGr/X2px/2Vwdv9OV13/RElR/19k
+ av+gpKj/1tjZ/97f4f/b3d7/3d7g/8LEx/9qb3X/QUhQ/1ZfaP9hbHT/Xmpw/2Nxc/9RX2X/X252/z5N
+ Xv+st83/xs7s/7zC6/+GkrP/O1df/2SMkEZ7pakAeaKmAHmipgB5oqYA////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8AHU9fABhJWQMNOkv6e5et/7bI5f+swOH/s8Pi/8XM5v9mcYj/Q1Fi/15udv9ca2//W2ts/11r
+ bP9ib3P/Xmlw/1dhbf9IU13/SVVc/0hVW/9NWWD/VGFo/1lmbP9jbnT/ZHF3/1lmbP9fbHL/VmRq/2h2
+ fP/BzND/6PLz/93o6//i7PD/5Ozy/+Pr8f/j6/H/5Oz0/+Ts9P/k7PT/4+7z/9/r7v/g6u7/3efq/9rj
+ 5f+QmaD/XGdu/1pma/9eaW//ZG91/2Bpb/9kanL/VFtj/0NJUf9ES1L/T1Vc/0xTW/9JUFj/REpS/1th
+ af9gZ27/X2hw/11nbv9daW7/XGpv/2NyeP9EUl7/d4SX/8HK5f+Nlr3/srjo/6my1v9ab3v/LlJZ1m+c
+ oQRrmJ0Aa5idAGuYnQD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wBViZcAUIOSVy1SZ/yYrcf/tMPk/7C/
+ 5v+5yOz/tMPi/6271P84Rl3/VmJz/2Bqdf9jbHP/X2Zs/19lbP9ianH/WGJr/2Rudf9jb3X/aHR6/19q
+ cP9daW//WGRq/1lla/9gbHL/YGxy/19rcP9caG//X2pz/2p0fv++x87/6O71/9zl6//j6/H/5u7z/+Pu
+ 8//k7vT/5/H3/+Pr8P/o7/L/4enr/+fv8P/a4uT/iZOY/1diaf9ibXT/YGtx/11pb/9fa3H/XGdt/2Vw
+ df9jbXP/Ymxy/2Zvdv9ibHP/ZW91/2Fqcf9jbHP/Ymty/19nbv9iamz/Y2xu/1xobv9danP/XGx8/zJB
+ Wf+CkK7/cX6i/5ijzP+2v+z/usPp/3iJoP89WGb6PWRrbld+hQJSeIAAUniAAP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////ABU/UwAXQlavSmmB/6m61/+2w+b/vcnv/7PC6f+8z+7/xdXx/3+Lpf83P1P/YWp5/1hg
+ a/9lanH/XGJp/2lvdv9YYWj/X2pw/0RQV/8oMDb/QUxS/1pmbP9kcHb/YGxy/15pb/9eaW//Y21z/2Js
+ c/9aY2//WGFt/2dxfP++xs3/5+/0/9/n7v/f6e7/4+7y/+Ds8f/e6u//6vH1/+bt7f/q8PH/0dfZ/4CK
+ kP9aZWv/YWxy/1NfZf9daW//YWxy/1lkav9lcHb/QU1T/0lVW/9ZZWv/WGNp/1NeZP9HU1n/XWhv/19q
+ cP9fa3H/Ymxx/19oZ/9nb27/ZW91/1hlc/8/TmX/RVRz/3qJrv+ottv/wMz0/6+75/+7xu7/jJm2/1Bl
+ ef8wUVz5WoKIHGaNkwBki5EA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ARHeHABlFWa9ffJT/t8fk/7TB
+ 5P+9yvH/jJvF/2V2m/9hcZT/ZnOR/zdAV/9JUWT/YGh0/2Fpcf9ja3H/VV5l/2lyef8xPEP/BAwS/wAB
+ B/9OWV//Ym50/z5JT/89SE//Y291/1ZhZ/9aZmz/XWhu/2Bpc/9bZXD/ICk1/0RQWv+rtLv/4uvv/+Tt
+ 8f/h6u//3unu/+Dr8P/f6ev/6O/w/8bO0P9mcnf/X2px/0xYXv9MWF7/YGtx/1hkav9ZZWv/WGRq/0RP
+ Vf8FDRP/BQsS/1ZgZv9hbHL/Iy41/wMIDv8YICf/VF9l/11pb/9faG7/Zm5v/2Boav9eaHH/WGN1/0xZ
+ cf+yv9z/usjr/7TC6f+1wOv/t8Lt/7bB6f+rttT/X3OI/y5MWf9mkZVCeaWoAHahpQD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wBFfYs3NmR27nWQp/+6yOX/ucXq/7G+6P+1xO7/s8Dp/7XC5/+7xub/r7jS/z1G
+ W/9eZ3b/Xmhy/1djaf9baG3/SlVa/wAHDf8ABw3/Exwj/2Fuc/9baG7/MjtB/wEFCP9ATFL/X2pw/1pm
+ bP9VYWf/XWhx/zxFUP8AAAn/QUtX/1plcP+Jk5z/3ubr/+bu8f/Y4eb/5fD1/9nj5v+ao6j/XWlv/1xo
+ bv9fanD/FR4k/w8ZH/9aZmz/VWBm/2Ftcv8yPkT/AgMK/wQOFf8CChH/WmVr/2Nvdf9AS1L/BQ8W/wAB
+ B/8FChD/P0tR/2Zwdv9kbHL/XGRs/11mdf87SV3/oq3G/8LP7f+vvuH/uMTs/7K+6f+1v+v/tsDp/8DK
+ 6v9md5D/T2t6/ydNVM5GcncARXF2AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAzQlcyXnD/karC/7vH
+ 5v+5xOv/t8Tv/7nG9P+tueb/t8Hq/7nD5v/J0e7/i5Su/zVBVf9hbXr/WWVu/1dkaf8fKS3/AAUK/wAG
+ DP8xOUD/YGxy/1tnbf9FUFb/AAUK/wUMEv8/SlH/WmZs/11obv9eaHD/DRIb/wAEDf8+SFD/Xmly/1Vh
+ av9qdX3/rbW6/9/q7f+5xsr/ZnR6/1djaf9fa3H/ZG91/1plbP8SGB//AAUL/zM+Rf9bZm3/HyYs/wAD
+ CP8DCxH/AAMJ/yAoLv9aZ23/WWVr/1pla/8oMzr/AAcN/wYNFP8EChH/RlFY/1pkbv9dZ3P/R1Jk/3B7
+ kf+8yeP/rr3d/7rH7P+wvOb/xM/4/7O96P+krNL/qLTY/4WTr/9OZnj/NVhg2GSUlg5ejJAA////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8AHU5dUS5VaP+qv9f/vMbn/7W+5/+6xvL/rrvq/7zF8f+1ver/uMHm/7O8
+ 3//L0/D/aXWM/0JPYv9hb3z/TVpk/wAID/8FEBf/AggP/0dQVv9daW//W2dt/1JeZP8HEhn/AAcM/wEI
+ EP83Q0n/VWFn/yQqMv8ABg7/AAEJ/zk+Rv9ga3P/Xmpy/1Ziav9caHD/WGRs/0NQV/9daXD/ZG91/1pm
+ bP9XY2n/U15k/woSGP8AAwj/BxIY/wkRF/8AAgj/Aw0T/wAHDf8CBgz/T1th/1djaf9XY2n/YW1y/1Fc
+ Yv8ECA//BA8V/wAHDf8+SE7/Ymt5/1Jcbv9XYnj/vMjf/7jG5P+6yOv/sr/n/8PN9/+dqdP/fIiy/2dy
+ n/+ptNz/oKvJ/0xhdP9La3P/IEhOdT5obQD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wBTjZlZOF1w/6/A
+ 2v+5wuT/vMPs/7bB8P+oteb/srvp/7a+6f+0vef/rbfe/6m11v+Tn7v/KjZO/0tZbP9gb37/CRYj/wAD
+ C/8THCP/WmZs/19qcP9fa3H/X2tx/x8mLP8ABgz/AAUL/wACCP8PFx3/AAQM/wQLFP8AAgr/LDE5/19p
+ cf9dZ2//W2Zu/2Judv8sNT3/Ehoj/15pcf9bZmz/Xmpw/1pmbP9RXGL/BRAW/wALEf8ACA7/AAUL/wAJ
+ D/8ADBL/AAQK/x8qMf9daG7/XGhu/1pla/9cZmz/Ym1z/xEaIP8DCxL/BgwT/1BaYv9bZXf/KDJL/4WP
+ qv+ksc//qrja/6u54P+IlsH/bHmm/3qHtf+Yos7/vMTw/7zF8f+lsdH/Vmd9/0libf9SeX6Ijbq9A///
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////ADpwfsJUd4r/tcXe/77E5v+8wuz/qLXk/4ORw/90e6v/foi2/4OP
+ u/+Ajrn/eIet/4ybvP+4xuD/UF11/0VUaP9OW27/Iiw4/1FcYv9hbHL/VGBm/15pb/9ibXP/PUhO/wQG
+ DP8HERf/AQcN/wAFC/8ABg3/BQsS/wAEC/8lKjL/XmZu/19ob/9XY2n/YW1z/xUiKP8ACQ//UV1j/1ll
+ a/9caG7/Xmpw/0xXXf8CDRP/AQsR/wAJD/8ACQ//AAoQ/wAGDP8JExr/UFti/2NudP9bZ23/YWxy/19q
+ cP9eanD/O0ZM/wABBf85Q0r/Ul9n/0lSaf+fqML/i5i1/32Lrv+Bkbf/eYey/5in0v+0vuv/sbrn/8DF
+ 8v+8w/H/s7zq/7C63f9odY3/Vmt3/ztdY/0pUFUk////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AJVlo9mGC
+ lf+3xN3/w8fs/7/D8P+4w/X/tsLw/7vB6v+1v+j/sr3o/7bE7f+8y/P/vM3w/7LD4v+zwdz/S1dx/1Vg
+ eP9XYm//Y290/11obv9ibXP/XGdt/1RhZ/9eanD/DhQa/wMJDv8BChD/BA4V/wAFDf8CCA//AAUM/xkf
+ J/9bY2r/YGlv/11mbf9eaW//DhYc/wYKEf9KU1r/WmZs/1lmbP9ibnP/RE9V/wAHDf8BBw3/AAcN/wEM
+ Ev8ABw3/AAMJ/ys2PP9lcHb/WWRq/19qcP9daG7/WmZr/11pb/9WYGb/QEdL/0ROU/9ETFT/u8LY/7a/
+ 3v+9x+j/uMXq/7fE7P+8yfP/tcPu/7fB7f+9xvL/tbzo/7vC8P+2ve7/ucDn/3R/mP9bbHn/NVBW/wUi
+ KCT///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wAeT1/1a4qd/77I4//Aw+j/s7nm/6+77P+2w+//u8Pr/7rE
+ 7P+3w+3/s8Hr/66/6f+vwer/tMPn/8PR8P94hqT/LTVR/1Bba/9PW2D/VGFn/2Bscv9fanD/XGdt/1xp
+ b/82P0b/AAAD/wAJDv8EDBL/AQcO/wIHDv8BBw7/EBYe/1pgaP9dZGv/XmZu/0lVW/8IDhT/AwgP/zM8
+ Q/9gbHL/VmNp/2Ftc/89Rkz/AAMJ/wEIDv8ABw3/AQoQ/wAFC/8YIin/Ul5k/15pb/9XY2n/X2pw/1tn
+ bf9fanD/YGtx/11pb/9jb3T/WmVr/0NNV/9xepX/yNHx/6663f+2wur/t8Tt/7G+6v+5xO//tsDr/7e/
+ 7P++xPD/vMPx/7rA8//AxO3/goqj/1dmdP8/V13/WX+ENP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AB5O
+ XPRwjKD/v8bj/7/A5v++w/D/t8b1/7nI8v+/yOz/vcjt/73I8P+1w+3/qrrl/6Oz3P+Flb3/UV+G/257
+ nP+3wN3/TFRl/yUtNP9bZmz/WWVr/2Nvdf9ZZmz/XWpw/1BdYv8MFh3/AAMK/wMJD/8DCA//AgcO/wMK
+ EP8IEBf/WF9m/1pka/9hbHL/OURL/wEKEf8ACA//Higv/2dxd/9YYWj/YWpx/zpARv8ABQv/Ag0T/wAK
+ D/8ABAr/AwwS/0RRVv9lcnf/VmJo/2NudP9aZGr/Y21z/1tmbP9daW//ZG91/1tobf9hbXP/WWZv/zQ+
+ Wf9jbYz/nqnH/73I6/+4xO//vMf0/7fD8f+3wu7/usXw/73G8P/CyfX/vMX2/8PI8v+Mk67/VmJy/05l
+ bv9Kb3Sn////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8AHUtX9HOLof/Bxuf/wcHs/7O75/+PpNL/iJ/H/5Cg
+ wP+ElLb/gpC2/32Ltv9xgKz/aXWi/4GNuf+tuN3/tsPl/6ax0f9FSl7/X19p/2dudP9WY2n/V2pv/1Zs
+ cf9OY2b/Y3R3/zM+Q/8BAQf/CAoO/wMIC/8BCQ7/AgsQ/wAFCf9LW1//V2ht/19udf8oNjz/AAcO/wAJ
+ EP8WHCT/ZGpy/11iaf9iaG//KCsz/wAFDP8DDBH/AAkO/wIEB/8zQkb/WW5v/1tqbf9gaW3/Y2tw/2Jp
+ bv9ja3D/ZGxx/2Jqcf9ga3H/XGpw/1lrcf9abHP/XWhx/ygwQv9zfJT/bXmb/4yYv/+aptb/pLHi/627
+ 6P+vveT/nq7Q/42dwv+Jmcf/usHq/5qgvv9fZ33/WGx4/yJDSNT///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wAfTVj0cYme/8HG5//Gx/D/tr3q/4idyv95kbn/jp/C/5qoyv+Vo8n/narT/7bB6v+/yPH/u8bs/7fD
+ 5v+5xOL/Ym+O/0hPY/9xc3v/Ymhu/1xobv9fbnP/UGNo/15vdP9VY2j/Xmht/xgdIv8ABAj/AwgN/wEI
+ DP8BBgv/AQsP/z9JT/9cZ27/XWlw/yQvNf8ABQz/AAYO/xUaIv9cZW3/XGRr/2FqcP8aHyb/AAQL/wQK
+ Ef8AAwj/ICUq/1tlav9eam7/VWNn/19qbv9lbnP/ZW1y/2Jpb/9jaW//Y2px/2Brcf9da3H/Wmxx/1ts
+ c/9hbHL/QEhU/5eesf+ut9T/jJfA/4qXxv+Ajb//eYq2/3yMs/+Gl7j/j6DD/5am0v+5wen/oKXF/2Fq
+ gP9ecH7/FjU6z////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AB9PWfR2j6T/wMbn/76/6f+9xPH/scTv/7TH
+ 7/+5xuz/usfs/77L8v+8x/D/tsDn/77H7f+vu9z/aniX/4aTr/84R2H/Xmp4/2FpcP9cZGv/YGlv/2Vv
+ df9dZ27/YWtx/11mbP9eaG7/SFBW/wABBv8GCRH/Cg8V/wUJEP8DBw7/LzE5/2Zpcf9eYmr/ICUs/wAD
+ Cv8DBQ7/ExUe/1BeZf9bZ23/WGVq/woRGf8BBg3/CA0U/wkKEf9NTlb/aWhv/2dmbf9aYWj/WGht/11q
+ b/9eaG7/Ympw/2Vsc/9kanH/Ympx/19rcf9da3H/XGpx/19rcP9bZG//QEle/8XN6P+4w+f/usXv/7fD
+ 7/+2xO3/s8Lo/7bG5v+5yuv/uMjw/7/J8P+rsND/YmqB/1lsef8bPEHP////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8AH1Bb9HSOo//Axuf/wsPt/8HH8/+yw+7/rsHr/7K95/+1wer/uMTt/7rG7v/AyvD/l6LF/1lm
+ hv+cqsH/Wmd9/0hYa/9YZ3L/X2xx/2RvdP9kaXD/ZWhw/2dpcf9laG//YWdu/1tmbf9dbnT/JTU8/wAB
+ Cf8ECBH/BQoR/wADCv8hIyz/aWlx/11dZv8bHCT/AQIK/wcIEP8OEBj/Slhd/1tpb/9GU1r/AgsS/wEM
+ E/8ABAr/MzY9/2xxef9jZW3/Zmdw/1xob/9bb3X/Wm5z/1lqb/9fanD/Y2ty/2Nqcf9ianH/Ympx/2Br
+ cf9ga3H/ZG91/11ncf9BTV//gIql/8rS8v+0vuX/ssDp/7jF7f+yweb/scHk/7HC6P+uwOz/usXr/7a7
+ 2v9faH7/VGZ0/zpdYc7///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAdT1r1d5Oo/8DI6P+7vef/ucDt/7HA
+ 7P+ywu//sL3r/7S/7P/E0Pj/qrje/299of9mc5L/uMTZ/4+crf81RVb/Wmt4/1hrcv9cbHH/YGxy/2Vq
+ cf9oaHH/aWdx/2Bhav9dZW7/Wmpz/09ob/89WWD/BRgh/wAGD/8CDhf/AAcQ/xMYIP9eZG3/Wl9o/xQZ
+ IP8BBAz/CAsT/wgKEv9NVlz/X2xy/zVDSv8ACxH/AA0U/w0fJf9Xb3T/TGNq/ztTW/9JY2v/SWZt/0Vi
+ af9Vb3b/WW91/1lqcf9caHD/Ympy/2Rqcf9kanH/Y2px/2Fqcf9caG7/Xmpz/1VgcP8nMUf/eYOg/6ex
+ 1P+7x+3/vcrv/7PB5/+wvuT/scHq/6y+6v+tuOD/wMXj/2hvhv9VZXP/RGZq4////wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AC5ibOdsi5//vMXm/7/B6//AxfL/ucfz/77N+v+vuuv/pbHg/3qHs/9kcpn/kZ68/8XS
+ 6P+ir8H/NkRU/1lpdP9ZaXD/XHB0/1lrb/9caG//ZGty/2Zpcf9na3T/Ymp0/1xtdv9PaXP/OF1l7VeA
+ hoouVl/NABki6gwbIusIERn7Ag8Y/z9OV/9JVl3/Ehoh/wADCf8BCA3/BAsS/zg7Q/9cZGv/Iywx/wMK
+ D/8EDRL/CSUq7S1dYelWi49+Q210RTBWXEA9Ymk9NVti1TlcZf9ScHj/V251/1pqc/9daXH/YWlw/19l
+ bP9nbHP/YGhu/15pb/9ibHX/XWh1/zpEV/9jbYb/go2r/257nv+Jl77/rbvi/6W02/+zwur/tMby/7bB
+ 6P/DyOb/Zm2E/1xte/9Ka2//////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AO3F6yGOEmP++yur/wsXu/7K2
+ 4v+ToM3/hZTF/4OQw/9zgLD/navU/7fF5P/AzOT/r7zO/0JQYP9SYGz/XGlw/2FudP9QX2T/W21w/15s
+ cv9fbHL/Wmdu/1Jhav9UanP/RGRt/yhQWMFolJoRZpCWADllbgABIisDgK6xB2SMkkg+V2C2AAgP/wAO
+ FP8BBgv/BQwQ/woYHf8eKC//NjM7/zg9RP81RUv/HDY6/ypNULUKLTMOGktQA2mkpwBSf4UAMFVbAD5i
+ aQA6Y2skKldg0zZbY/9ScHn/U2ly/1Zmbf9ZZWv/Y2xy/2Ztcv9iam//WmVr/1pmbf9gbHb/V2Jx/1Fa
+ bv/Cyd//s7zY/52py/93ha7/d4ez/3CCsv+ClcT/navS/8jM6v90fJL/V2V0/0hna/////8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wBJgImFWXqO/73J6v+9vun/rrLg/5ik0f+Yp9X/r73s/8HO+P+su+H/ucjk/73L
+ 3v9LWmz/UF1r/2Fvdv9cZ23/X2pw/2Bscf9ZZmr/Wmlu/1Zqb/9PaG3/TGxz/zpja/ZSgIhYKVNcC2qV
+ mwBjjZMAOGNsAAAbJACBsLIAj7y/AHqbnzYAAgb/AAwS/wEJDv8EEBX/BxEV/xEUGf8eGh//Gh0j/xQi
+ J/8IGR3/ETg7YwoxNgAgUVYAZqCjAFB8ggAwVVsAPmJpADhhaQA8bHYXJ1NdxzdcZf9TcXn/VWty/19u
+ dP9ga3H/X2ht/2Jqb/9nc3n/W2du/1llbv9aZHD/RExd/4SKnf/Fzeb/ucTj/7fE6f+6x/P/orPi/5it
+ 2v+ot93/xcrn/3yCmP9baXf/SWds/////wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AF2WnVJGaX7/ucbm/77B
+ 6/++we7/v8j0/7zJ9f+vvev/r73m/7nI6f+uvtn/W2p+/0BPYP9ZZ3L/X2tz/2JudP9faG//XmVr/11m
+ a/9cbHD/UGxv/z9laf8nWFzMaqGkPXuuswAlT1gAapWbAGONkwAxXGUAFzxDAIe2ugCay88AaouQSwAA
+ Bf8BEBb/AwoQ/wAIDf8ABgz/AQEI/wsID/8CBQr/AAMI/xMkJ+ZQhocuT4KCADtxdABjnaAAUHyCADBV
+ WwA+YmkAOGFpADdmbwBdjpcAOGNqXyFDS/9PaG//WGtw/1hlav9lb3P/YWlu/1xnbf9fbHL/XGhv/2Vw
+ ef9lbnr/Nz9S/56nvv/Fzu3/t8Ln/6y65f+zxPL/tcr1/7HA5f+9wuH/gIWc/1xqeP9MaW7/////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8AIFFeVEBlev+0xOT/wcTu/7u96/+0vur/rrzp/7XE7v+2xOr/kqPC/yk3
+ Uv89TWH/X258/1tqdP9bZ27/WGJp/11lbf9qbHL/aW5y/1hpbP80VVf/SXh7jUJ4fBFto6YAeKqwACVP
+ WABqlZsAYIqPAEx3gABsm6MAdKOqAHanrgBTdn1fAAAH/wAMFP8ECBD/BgkP/woMEf8ICA3/CAsP/wYO
+ E/8BDhL/BQwOuxUkJgAVIyQADxsdAF2PkgBXhIoAMFVbAD5iaQA4YWkAN2ZvAFyNlgA7Zm0AFDhAXj9d
+ Y/JOY2n/Z3Z6/15qbv9gaW3/W2dt/2Bscv9fanD/YWty/1dfaf9kbHz/O0Rd/6Cqyv+4wuf/vsv0/6e5
+ 6/+rv+z/sL7j/8HH5f+MkKb/WWd1/09scP////8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wATSVhRN2N3/6G3
+ 0/+4weX/wcbv/77F8f+ntdz/kqPC/3GCn/8kMkz/RE9k/2Rtff9cZHD/YWhx/1xka/9lbXP/W2ds/1pv
+ df9EYmn/RGlwyixTV2xUhIUARnt/AGyipQB4qrAAJU9YAGmTmgBch40AbJqiAGeWngBkk5oAapuiAEdt
+ dHUMFyD/ChYe/wACCv8GCQ//Cg0S/wQJDf8GChD/AQgO/wAUGv8BERa/AAoQAAALEAAACQwAGzQ5ADZg
+ ZwAzWV8AP2NqADhhaQA3Zm8AXI2WADplbAAXOkMAW3+FIy1OVbE3VVz/V251/19zef9gbXP/WGVo/2Rt
+ cf9haWv/bHJ4/15jbv9UWmv/IyxG/4KMq/+lsNP/u8ry/62/7f+4xe7/w8vq/4+Xrv9XZ3b/UGtx////
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AFqdqRs/dYbXepqw/7vL5/+gqcz/gYiz/5Ofv/+Hmab/R1dm/1Re
+ bP9maXf/ZGVw/2RlcP9maXL/X2pw/1Rmaf9PaGv/Kldf9iZhbXdflp4QOWFlAFGBggBFen4AbKKlAHiq
+ sAAkTlYAeqasAF+PlABomJ4AZ5ecAGeXnABrnKEAUX+Fbz1ZYv8/SlL/Iycv/wIHDf8DCQ7/AAgN/wQF
+ Df8AAAf/AAkS/wMkLb8DJy4AAyYuAAMmLwAAIioAABoiABw/RwA+YmkAOGFpADdmbwBcjZYAOmVsABY5
+ QgBbfoQAK05WA0d3gEcqVF/YQGBq/1xwdf9da2z/YWxt/2RrbP9kamv/Y2dr/2tvd/9TWWf/RUxg/5CX
+ q/+Cjq7/n63c/7rH7f+5wuP/mqW7/1Jkc/9NZm3/////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AOXOAABxO
+ Xa1xj6P/vMni/7a72v/Hyuz/m6K+/09caf9TX2n/Zm97/1tib/9WYGv/WGZv/1xxeP9BYGf/MFhb+yxX
+ WaUhVV4wNXB8AFyRmAA4YGQAUYGCAEV6fgBsoqUAeKqwACJLVABZhowAQnN4AEJydwBDcngAQ3J4AENz
+ eAFBbnTFTWhx/19rc/9aXmf/LDQ7/xwkKP8NGB3/Fxoi/ykxOf83SlP/IkRMvx9CSQAgQkoAIEJKACBC
+ SgAgQkkAHUBHACpNVAA8ZW0AN2ZvAFyNlgA6ZWwAFjlCAFt+hAApS1MAXo6WADpocwM1XGhwNVJY/09m
+ af9ecnT/XWxu/2Bsbv9ibHD/WmNq/1pkbf9QWWn/foWW/7S91v9/i7L/fIiv/6GqyP+apLn/VmVz/05l
+ bf////8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wA4ZXEAM2Ftg117jP/I1ej/ur/Y/3+EoP9ETGX/WmRx/15r
+ df9XY27/YHB6/1Zsdf9JZ3D/K1Vc8h1OVKQnWV04Ml5gACVXYAAzbnkAXJGYADhgZABRgYIARXp+AGyi
+ pQB5qrEAJFBYABpITwAgT1YAIE5VACBOVQAgTlUAH05UAyZSWe1JY2v/YGly/2BkbP9pbXT/TVhe/0NO
+ VP9aX2f/XWhv/1lwd/8oS1K/IkVMACNGTQAjRk0AI0ZNACNGTQAjRk0AI0VMADdfZwA3Zm8AXI2WADpl
+ bAAWOUIAW36EAClLUwBaipIAPWp1ADZcaAAmR089S250pTdXW/9VcHT/VWpu/1Nlav9Zam//WGZu/1xn
+ c/9BTFv/f4qf/8vT8f+ttNT/trvV/5Kbrv9WZHH/UGVv/////wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AIKy
+ vAB4qLIdP2Nw+oyisP9hcYP/SFhs/1Vod/9ccXn/XXR7/0ZeZ/8+XmX/N11jzClXXpEqW2EdI1dcAChY
+ XAAyXV8AJVdgADNueQBckZgAOGBkAFGBggBFen4AbKKlAHWmrAAlUVoAIk5WACNPVwAjT1cAI09XACNP
+ VwAhT1YDJlJZ6k9qc/9jbXX/YWJr/19iaf9cY2n/ZW5z/1xlbP9XZGz/Umlx/xg9RL8QNT0AETY9ABE2
+ PQARNj0AETY9ABE2PQAQNDsAGT9HADppcgBcjZYAOmVsABY5QgBbfoQAKUtTAFqKkgA9anUANFpmADVX
+ XwBbgYcANF5kVilRVtlFaGz/TWxw/09obf9ccnb/U2Vs/1lpcf88Slr/gYmm/8bN5f/Aw9f/kZeo/1xp
+ dv9SZm//////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8APG95ADlsdgYvYGrsQGZx/z5fav9Nb3n/Rmx0/zFa
+ XvoZQETuPGhtsRY9REpWg4kSN2VsACxdYwAiVlsAKFhcADJdXwAlV2AAM255AFyRmAA4YGQAUYGCAEV6
+ fgBto6YAa5yhABxKUQAjUlgAI1FYACNRWAAjUVgAI1FYACVUWgMYQknpMEdQ/0JNVv9eYGn/Z2hw/2Fn
+ bP9cZmv/WGRq/11rcv9Wb3b/FjpBvw0yOQAPMzoADzM6AA8zOgAPMzoADzM6AA8zOgANMTgAMF5mAF6Q
+ mQA6ZWwAFjlCAFt+hAApS1MAWoqSAD1qdQA0WmYAM1VdAFp/hQA4YWcAIk1THCFLUVk3X2XSQmNo+1Fv
+ cf9Vb3L/VWpv/1dqdP9FU2f/fYeb/8nQ3f+BjJn/U2Nu/1hud/3///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wAeUlwAHVJcACdcZjUsYmqkGkpQogc1O6ILQESiTImJPwg0OAZCcnYAHENKAFN/hQA2ZGsALF1jACJW
+ WwAoWFwAMl1fACVXYAAzbnkAXJGYADhgZABRgYIARXp+AGmfogBqnqIAW46TAFyPlABcj5QAXI+UAFyP
+ lABcj5QAYZecAENobooABA3/BA4V/x4jK/9LTVX/Vlti/1VfZf9NWV//MT9G/xAjLP8AFR2/AAwUAAAN
+ FQAADRUAAA0VAAANFQAADRUAAA0VAAAIEAALKDEAWIqTADtmbQAWOUIAW36EAClLUwBaipIAPWp1ADRa
+ ZgAzVV0AWn+FADhhZwAjTVMAKlRaAC1WWwImTlKAJkxQ2Udqa/9BXmD/XXd8/1dsef9IWWj/YXOA/1Zp
+ dP9TaHL/T2ly2////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////ACNXYQAiVmAAI1ZgAFiVmwAhUlgAAy82AAo+
+ QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZkawAsXWMAIlZbAChYXAAyXV8AJVdgADNueQBckZgAOGBkAFGB
+ ggBHfIAAYpaZAHWkqABrm58AbJugAGyboABsm6AAbJugAGyboABypKgAT3F3RAAHD/8ACRD/AAAH/wgM
+ FP8PFRz/Ehsh/wUMEv8AAQj/AAIK/x4tNL5/oaUAeJidAHiYnQB4mJ0AeJidAHiYnQB4mJ0AeJmeAHSS
+ lwBnlp4AOWVsABY5QgBbfoQAKUtTAFqKkgA9anUANFpmADNVXQBaf4UAOGFnACNNUwApU1kAL1hdACZN
+ UgAiSU0cKlNVSmKKipYsUFPuPl5m/1Rye/9EYWn/PFlh/09udf87XWXG////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8AI1dhACJWYAAjV2EAVJCWACBRVwAEMDcACj5DAFCNjQANODwAQXB1ABxDSgBTf4UANmRrACxd
+ YwAiVlsAKFhcADJdXwAlV2AAM255AFyRmAA4YGQAUoKDAEh+ggAFISgAABIZAAAUGwAAFBwAABQcAAAU
+ HAAAFBwAABQcAAAVHAAAFBtEABEY/wAOFP8DDBT/BQsT/wAFCv8AAwn/AAUM/wUMFP8ADRf/KDQ7w6rS
+ 1gCgx8sAoMfLAKDHywCgx8sAoMfLAKDHywCgx8sAoMjMAJvEyAAyXGMAFTlCAFt+hAApS1MAWoqSAD1q
+ dQA0WmYAM1VdAFp/hQA4YWcAI01TAClTWQAvWF0AJk1SACFITAA5YWMAc52cABxBRQYgR01aFjxDpB5E
+ S6RReX6iN15koXiepCD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAjV2EAIlZgACNXYQBUkJYAIFFXAAQw
+ NwAKPkMAUI2NAA04PABBcHUAHENKAFN/hQA2ZGsALF1jACJWWwAoWFwAMl1fACVXYAAzbnkAXJGYADhg
+ ZABSgYIATYKGACRSWQAmWV8AJlhfACZYXwAmWF8AJlhfACZYXwAmWF8AJlheACpeZD0PLDL6AAoQ/wAK
+ Ef8ABgz/AAkO/wIKD/8CCA//AgcP/wEGEP8SHifzSnB4S0NmbgBEZm4ARGZuAERmbgBEZm4ARGZuAERm
+ bgBEZm4AR2lxADFUXAAfQ0sAW36DAClLUwBaipIAPWp1ADRaZgAzVV0AWn+FADhhZwAjTVMAKVNZAC9Y
+ XQAmTVIAIUhMADdfYQBwmpkAH0RIACJITwATOkEAGT5FAHqmqABLdHkAeJ2jAP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////ACNXYQAiVmAAI1dhAFSQlgAgUVcABDA3AAo+QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZk
+ awAsXWMAIlZbAChYXAAyXV8AJVdgADNueQBckZgAN19kAFB/gQCDvb8Af7m6AH+5ugB/uboAf7m6AH+5
+ ugB/uboAf7m6AH+5ugB/uboAicXHATBIS6UAAAX/Aw8V/wIKEP8BCQ7/AAQJ/wIHDf8GCxT/AwcQ/wEN
+ F/8XMjtmJUlSACNFTgAjRU4AI0VOACNFTgAjRU4AI0VOACNFTgAjRU4AJkhRADJXXwBafIIAKUtTAFqK
+ kgA9anUANFpmADNVXQBaf4UAOGFnACNNUwApU1kAL1hdACZNUgAhSEwAN19hAHCamQAfREgAIkhPABQ6
+ QQAaP0YAdqGkAElydwB4naMA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AI1dhACJWYAAjV2EAVJCWACBR
+ VwAEMDcACj5DAFCNjQANODwAQXB1ABxDSgBTf4UANmRrACxdYwAiVlsAKFhcADJdXwAlV2AAM255AFyR
+ mAA4YGUATnx/ADxobwAwWmEAMVxiADFcYgAxXGIAMVxiADFcYgAxXGIAMVxiADFcYgA0X2YAGztDlgIJ
+ Df8ACA7/AAEF/wMNEP8FDxH/AgcM/wUMEv8EChH/AAEI/zFSWbVXhIkKUHuBAFB7gQBQe4EAUHuBAFF7
+ gQBPen8AT3l/AFN9gwBRfIEATHV8AFuAhQApS1IAWoqSAD1qdQA0WmYAM1VdAFp/hQA4YWcAI01TAClT
+ WQAvWF0AJk1SACFITAA3X2EAcJqZAB9ESAAiSE8AFDpBABo/RgB2oaQASXJ3AHidowD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wAjV2EAIlZgACNXYQBUkJYAIFFXAAQwNwAKPkMAUI2NAA04PABBcHUAHENKAFN/
+ hQA2ZGsALF1jACJWWwAoWFwAMl1fACVXYAAzbnkAXJGYADdfZABPeHoAc5uhAGuUmQBslJoAbJSaAGyU
+ mgBslJoAbJSaAGyUmgBslJoAbJSaAGyUmgBslpwbEyUq8RwyN/8MERX/ERca/wMFB/8FCQ3/BAoO/woV
+ Gv8gNjz/KUxU/yhNVBAsUVkAK1BYACtRWAArUFgAKk9XADZbYgA0W2EAH0VMACxSWAAoTlUARmxyACdI
+ UABaipIAPWp1ADRaZgAzVV0AWn+FADhhZwAjTVMAKVNZAC9YXQAmTVIAIUhMADdfYQBwmpkAH0RIACJI
+ TwAUOkEAGj9GAHahpABJcncAeJ2jAP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ACNXYQAiVmAAI1dhAFSQ
+ lgAgUVcABDA3AAo+QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZkawAsXWMAIlZbAChYXAAyXV8AJVdgADNu
+ eQBckZgAPGZrACZRVgA2YWcANGBlADRgZQA0YGUANGBlADRgZQA0YGUANGBlADRgZQA0YGUANWBlADFd
+ YgAiSE3iUW5y/0hXW/9FTlL/P0ZK/z1GTP8/Sk//UV9k/1dqcP9HYmr/QWNsf0tudgBMb3cATG93AExv
+ dwBHaXEAY4WMAGOJjgAjSVAASW90AEdtcwBEaW8AM1hfAF2MlAA8aXQANFpmADNVXQBaf4UAOGFnACNN
+ UwApU1kAL1hdACZNUgAhSEwAN19hAHCamQAfREgAIkhPABQ6QQAaP0YAdqGkAElydwB4naMA////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8AI1dhACJWYAAjV2EAVJCWACBRVwAEMDcACj5DAFCNjQANODwAQXB1ABxD
+ SgBTf4UANmRrACxdYwAiVlsAKFhcADJdXwAlV2AAM255AFeLkwBWgoYAa5+hAGeanABnmpwAZ5qcAGea
+ nABnmpwAZ5qcAGeanABnmpwAZ5qcAGeanABnmpwAbaCiAE9+gVwyU1f/XnV4/11nbP9mbnP/WmZr/2Rw
+ df9jbnP/WGRr/1docP8sRE7eWHmBIHSYnwBwk5oAcpadAFp8hAAzUlgAYYeMACNJUABGbHIARGpwAERq
+ cABDaG4AV4CHAERveQA1W2cAM1VdAFp/hQA4YWcAI01TAClTWQAvWF0AJk1SACFITAA3X2EAcJqZAB9E
+ SAAiSE8AFDpBABo/RgB2oaQASXJ3AHidowD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wAjV2EAIlZgACNX
+ YQBUkJYAIFFXAAQwNwAKPkMAUI2NAA04PABBcHUAHENKAFN/hQA2ZGsALF1jACJWWwAoWFwAMl1fACVX
+ YAAzbnkAWY6WAGGUlABil5cAYpeXAGKXlwBil5cAYpeXAGKXlwBil5cAYpeXAGKXlwBil5cAYpeXAGKX
+ lwBkmpkAW4+PFyBIS9lMZmr/YG1y/11mbf9XZ2v/WGRq/1tiaf9laXH/ZW11/zNASv9AWWGUcpadAGuO
+ lQBsjpUAV3mBADJQVgBhh4wAI0lQAEZscgBEanAARGpwAERqcABCZ20AS3J3ACtQWgA0Vl4AWn+FADhh
+ ZwAjTVMAKVNZAC9YXQAmTVIAIUhMADdfYQBwmpkAH0RIACJITwAUOkEAGj9GAHahpABJcncAeJ2jAP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////ACNXYQAiVmAAI1dhAFSQlgAgUVcABDA3AAo+QwBQjY0ADTg8AEFw
+ dQAcQ0oAU3+FADZkawAsXWMAIlZbAChYXAAyXV8AJVdgADNueQBbkJgAeK2sAG6hoABvoqEAb6KhAG+i
+ oQBvoqEAb6KhAG+ioQBvoqEAb6KhAG+ioQBvoqEAb6KhAG6ioQB2qqkASHh5ZT5cYfpeb3X/VGNo/1dq
+ bv9UYGf/bXJ5/1ZXYP9dXWf/GiAq/wUJEv4cPENPEjg7AAQVGQAsSlEAOlhfAGGHjAAjSVAARmxyAERq
+ cABEanAARGpwAERqcABEam8APmNqAEpudABaf4QAN2BmACNNUwApU1kAL1hdACZNUgAhSEwAN19hAHCa
+ mQAfREgAIkhPABQ6QQAaP0YAdqGkAElydwB4naMA////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AI1dhACJW
+ YAAjV2EAVJCWACBRVwAEMDcACj5DAFCNjQANODwAQXB1ABxDSgBTf4UANmRrACxdYwAiVlsAKFhcADJd
+ XwAlV2AAM2x5AF6UnACczc0Al8fGAJfHxgCXx8YAl8fGAJfHxgCXx8YAl8fGAJfHxgCXx8YAl8fGAJfH
+ xgCXx8YAl8fGAJjIxwCYyccAHUBE3ktjaf9Uam//VGlu/1Vkav9AR07/MzI8/x4cJ/8GCBH/AwoR/wwg
+ JvgOMzdRAA8TACpITwA6WF8AYYeMACNJUABGbHIARGpwAERqcABEanAARGpwAERqcABDaW8ATXN5AExy
+ eAA+Z20AIUtRAClTWQAvWF0AJk1SACFITAA3X2EAcJqZAB9ESAAiSE8AFDpBABo/RgB2oaQASXJ3AHid
+ owD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wAjV2EAIlZgACNXYQBUkJYAIFFXAAQwNwAKPkMAUI2NAA04
+ PABBcHUAHENKAFN/hQA2ZGsALF1jACJWWwAoWFwAMl1fACVXYAA1b3sASXuDAHGgoQBtnJ0AbZydAG2c
+ nQBtnJ0AbZydAG2cnQBtnJ0AbZydAG2cnQBtnJ0AbZydAG2cnQBtnJ0AbpyeAG2dngAcQERMESMq/yU+
+ Rf8THyT/Q1FX/xMaIP8HCBD/AQIJ/wYLEv8DChD/AQ4S/wAXG/8AFBhPK0lQADpYXwBhh4wAI0lQAEZs
+ cgBEanAARGpwAERqcABEanAARGpwAERqcABDaW8ARGpwADxhaAAqVVsAJU9VAC9YXQAmTVIAIUhMADdf
+ YQBwmpkAH0RIACJITwAUOkEAGj9GAHahpABJcncAeJ2jAP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ACNX
+ YQAiVmAAI1dhAFSQlgAgUVcABDA3AAo+QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZkawAsXWMAIlZbAChY
+ XAAyXV8AJVdgADZzfwAdSVAAIk1SACFNUgAhTVIAIU1SACFNUgAhTVIAIU1SACFNUgAhTVIAIU1SACFN
+ UgAhTVIAIU1SACFNUgAhTVIAIU1SAC1cYRMKKC+yAAcO/wAMEv8QGSD/DxUc/wIID/8GDBP/BAoR/wcO
+ Ff8EDhL/AQgN/wAOEvgnRUybPFxiEWaNkgAiSE8ARmxyAERqcABEanAARGpwAERqcABEanAARGpwAERq
+ cABEanAARWtxAENqcAA/aG4AK1RaACVMUQAhSEwAN19hAHCamQAfREgAIkhPABQ6QQAaP0YAdqGkAEly
+ dwB4naMA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8AI1dhACJWYAAjV2EAVJCWACBRVwAEMDcACj5DAFCN
+ jQANODwAQXB1ABxDSgBTf4UANmRrACxdYwAiVlsAKFhcADJdXwAjVV4AQ36JAEt4fgBPfH8ATnt/AE57
+ fwBOe38ATnt/AE57fwBOe38ATnt/AE57fwBOe38ATnt/AE57fwBOe38ATnt/AE57fwBOe38AUH6CAD5p
+ bgAgP0W1AwoS/wEKEf8EDxb/AQcO/wIKEP8DChD/AwoP/xAUGP8MEhf/BwwR/wQMEv8dMznSTW90VihP
+ VgBGbHIARGpwAERqcABEanAARGpwAERqcABEanAARGpwAERqcABEanAARGpwAElvdQAxWF4AKlJWAB5F
+ SQA3X2EAcJqZAB9ESAAiSE8AFDpBABo/RgB2oaQASXJ3AHidowD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wAjV2EAIlZgACNXYQBUkJYAIFFXAAQwNwAKPkMAUI2NAA04PABBcHUAHENKAFN/hQA2ZGsALF1jACJW
+ WwAoWFwAMl1fAB9RWwBblZ4AmsjJAJTDxQCUw8UAlMPFAJTDxQCUw8UAlMPFAJTDxQCUw8UAlMPFAJTD
+ xQCUw8UAlMPFAJTDxQCUw8UAlMPFAJTDxQCTw8QAmMnKAJG+wQkqNjy1AQgN/wAKD/8DDxT/BAoR/wIH
+ Df8ECQ7/DQ8V/wkID/8MCxL/BQwT/wAJE/8DEBj/KEpQlEt0ewRIcXcASHF3AEhxdwBIcXcASHF3AEhx
+ dwBIcXcASHF3AEhxdwBIcXcASHB2AEt0egBEbXIAN2FmADVfYQBwmpkAH0RIACJITwAUOkEAGj9GAHah
+ pABJcncAeJ2jAP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////ACNXYQAiVmAAI1dhAFSQlgAgUVcABDA3AAo+
+ QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZkawAsXWMAIlZbAChYXAAyXV8AH1FbAFmTnACSwMIAjby+AI28
+ vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28
+ vgCNvb0AlMDDAHifohEKKSy5AQsP/wARFv8DCxL/BgcP/wUFDf8IBg//CAYP/woHEP8JDBf/AAcS/wAL
+ Ff8OHST/L0hNYyxFSwAsRUsALEVLACxFSwAsRUsALEVLACxFSwAsRUsALEVLACxFSwAsRUsALEVLAC1G
+ TAArQ0cALUpNAHGcmgAfREgAIkhPABQ6QQAaP0YAdqGkAElydwB4naMA////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8AI1dhACJWYAAjV2EAVJCWACBRVwAEMDcACj5DAFCNjQANODwAQXB1ABxDSgBTf4UANmRrACxd
+ YwAiVlsAKFhcADJdXwAfUVsAWZOcAJLAwgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28
+ vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI29vgCRvL8Ad52gAA44OwgoTlGjCBAU+QgX
+ Hf8GERr/AAcP/wEKEv8FCxT/AwcP/wYJEv8JERz/AQ0X/wAWH/8ACQ5rAAkPAAAJDwAACQ8AAAkPAAAJ
+ DwAACQ8AAAkPAAAJDwAACQ8AAAkPAAAJDwAACQ8AAAkPAAEECAAkNDkAcZybAB9ESAAiSE8AFDpBABo/
+ RgB2oaQASXJ3AHidowD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wAjV2EAIlZgACNXYQBUkJYAIFFXAAQw
+ NwAKPkMAUI2NAA04PABBcHUAHENKAFN/hQA2ZGsALF1jACJWWwAoWFwAMl1fAB9RWwBZk5wAksDCAI28
+ vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28
+ vgCNvL4Ajb2+AJG8vwB2nJ8ADDM3ADRhZAAeLzMuHC4yqwcYHv8AChD/AAEH/wADCf8ACQ//AAoR/wYP
+ GP8BDhX/MExSomiVmQ1kj5MAZI+TAGSPkwBkj5MAZI+TAGSPkwBkj5MAZI+TAGSPkwBkj5MAZI+TAGSP
+ kwBkj5MAZI+TAGeUmABZhIYAIkZKACJITwAUOkEAGj9GAHahpABJcncAeJ2jAP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////ACNXYQAiVmAAI1dhAFSQlgAgUVcABDA3AAo+QwBQjY0ADTg8AEFwdQAcQ0oAU3+FADZk
+ awAsXWMAIlZbAChYXAAyXV8AH1FbAFmTnACSwMIAjby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28
+ vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvL4Ajby+AI28vgCNvb4Akby/AHacnwAMMzcAMV1gAB4x
+ NAAeMDUAEC80ST9eYVNSb3B3Lk9S1h1ARPQzU1jaPlBWZwEVHFNqlpsBa5ibAGmVmQBplZkAaZWZAGmV
+ mQBplZkAaZWZAGmVmQBplZkAaZWZAGmVmQBplZkAaZWZAGmVmQBplpoAa5icAFiDhQAiRkoAIkhPABQ6
+ QQAaP0YAdqGkAElydwB4naMA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
+ /wD///8A////AP///wD///8A////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////+A//////AP////////////gD/////gB////////////wAf////wAP///
+ ////////8AD////4AD///////////+AAP///4AA////////////gAB///8AAP///////////4AAf///g
+ AD////////////AAD///wAA////////////wAAP//gAAP///////////+AAH//8AAH///////////wAA
+ Af/+AAD///////////wAAAH//gAA9//////////+AAABf/AAAPz//////////gAAAH/+AACT////////
+ //wAAAD/kAAAAH/////////8AAAAPAAAAAA//////////gAAAAAAAAAAP/////////4AAAAAAAAAAD//
+ ///////+AAAAAAAAAAA//////////gAAAAAAAAAAf/////////+AAAAAAAAAAP/////////5AAAAAAAA
+ AAH/////////+AAAAAAAAAAAP/////////4AAAAAAAAAAD/////////8AAAAAAAAAAB//////////AAA
+ AAAAAAAAP/////////gAAAAAAAAAAD/////////4AAAAAAAAAAA//////////AAAAAAAAAAAP///////
+ //wAAAAAAAAAAD/////////8AAAAAAAAAAAf/////////AAAAAAAAAAAH/////////wAAAAAAAAAAB//
+ ///////8AAAAAAAAAAA//////////AAAAAAAAAAAP/////////wAAAAAAAAAAD/////////8AAAAAAAA
+ AAA//////////AAAAAAAAAAAP/////////4AAAAAAAAAAD/////////8AAAAAAAAAAA//////////AAA
+ AAAAAAAAP/////////wAAAAAAAAAAD/////////8AAAAAAAAAAA//////////AAAAAAAAAAAP///////
+ //wAAAAAAAAAAD/////////+AAAAAAAAAAA//////////gAAAAAAAAAAP/////////4AAAAAAAAAAD//
+ ///////+AAAAAAAAAAA//////////gAAAAAAAAAAH/////////wAAAAAAAAAAB/////////8AAAAAAAA
+ AAAf/////////AAAAAAAAAAAH/////////wAAAAAAAAAAB/////////4AAAAAAAAAAAf////////+AAA
+ AAAAAAAAD/////////AAAAAAAAAAAA/////////wAAAAAAAAAAAH////////8AAAAAAAAAAAA///////
+ //AAAAAAAAAAAAP////////wAAAAAAAAAAAD////////4AAAAAAAAAAAA////////+AAAAAAAAAAAAH/
+ ///////gAAAAAAAAAAAB////////4AAAAAAAAAAAAP///////+AAAAAAAAAAAAD////////gAAAAAAAA
+ AAAA////////4AAAAAAAAAAAAP///////+AAAAAAAAAAAAD////////gAAAAAAAAAAAA////////4AAA
+ AAAAAAAAAP///////+AAAAAAAAAAAAD////////gAAAAAAAAAAAA////////4AAAAAAAAAAAAP//////
+ /+AAAAAAAAAAAAD////////gAAADAAB4AAAA////////4AAAB+AB/AAAAP///////+AAAB/gAf8AAAD/
+ ///////gAAA/4AP/gAAA////////4AAA/+AD/8AAAP///////+AAAf/gA//gAAD////////wAAf/wAP/
+ +AAA////////8AAf/8AD//4AAP////////AAf//AA///gAD////////wAf//wAP//8AA////////+A//
+ /+AD///wAP/////////////gA////AD/////////////4AP///+A/////////////+AB////////////
+ ///////gAf//////////////////8AD///////////////////AA///////////////////4AP//////
+ ////////////+AB///////////////////gAf//////////////////8AD///////////////////gAf
+ //////////////////4AD//////////////////+AAP//////////////////4AB////////////////
+ //+AAH//////////////////wAB//////////////////+AAf//////////////////4AH//////////
+ /////////gD/////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////8=
+
+
+
\ No newline at end of file
diff --git a/Crypter/obj/Debug/Compiler.FormCompiler.resources b/Crypter/obj/Debug/Compiler.FormCompiler.resources
new file mode 100644
index 0000000..7e465a1
Binary files /dev/null and b/Crypter/obj/Debug/Compiler.FormCompiler.resources differ
diff --git a/Crypter/obj/Debug/Crypter.ilmerge b/Crypter/obj/Debug/Crypter.ilmerge
index c1df969..1f84e87 100644
--- a/Crypter/obj/Debug/Crypter.ilmerge
+++ b/Crypter/obj/Debug/Crypter.ilmerge
@@ -1,2 +1,3 @@
Crypter.exe
DotNetZip.dll
+FastColoredTextBox.dll
diff --git a/Crypter/packages.config b/Crypter/packages.config
index d59f9d2..13782c2 100644
--- a/Crypter/packages.config
+++ b/Crypter/packages.config
@@ -1,6 +1,7 @@
+
\ No newline at end of file
diff --git a/packages/FCTB.2.16.24/.signature.p7s b/packages/FCTB.2.16.24/.signature.p7s
new file mode 100644
index 0000000..4c8b749
Binary files /dev/null and b/packages/FCTB.2.16.24/.signature.p7s differ
diff --git a/packages/FCTB.2.16.24/FCTB.2.16.24.nupkg b/packages/FCTB.2.16.24/FCTB.2.16.24.nupkg
new file mode 100644
index 0000000..56d508d
Binary files /dev/null and b/packages/FCTB.2.16.24/FCTB.2.16.24.nupkg differ
diff --git a/packages/FCTB.2.16.24/lib/FastColoredTextBox.dll b/packages/FCTB.2.16.24/lib/FastColoredTextBox.dll
new file mode 100644
index 0000000..1f426e4
Binary files /dev/null and b/packages/FCTB.2.16.24/lib/FastColoredTextBox.dll differ
diff --git a/packages/FCTB.2.16.24/lib/FastColoredTextBox.xml b/packages/FCTB.2.16.24/lib/FastColoredTextBox.xml
new file mode 100644
index 0000000..55d36af
--- /dev/null
+++ b/packages/FCTB.2.16.24/lib/FastColoredTextBox.xml
@@ -0,0 +1,3243 @@
+
+
+
+ FastColoredTextBox
+
+
+
+
+ Item of autocomplete menu
+
+
+
+
+ Returns text for inserting into Textbox
+
+
+
+
+ Compares fragment text with this item
+
+
+
+
+ Returns text for display into popup menu
+
+
+
+
+ This method is called after item inserted into text
+
+
+
+
+ Title for tooltip.
+
+ Return null for disable tooltip for this item
+
+
+
+ Tooltip text.
+
+ For display tooltip text, ToolTipTitle must be not null
+
+
+
+ Menu text. This text is displayed in the drop-down menu.
+
+
+
+
+ Fore color of text of item
+
+
+
+
+ Back color of item
+
+
+
+
+ Item do not appears
+
+
+
+
+ Item appears
+
+
+
+
+ Item appears and will selected
+
+
+
+
+ Autocomplete item for code snippets
+
+ Snippet can contain special char ^ for caret position.
+
+
+
+ Compares fragment text with this item
+
+
+
+
+ This autocomplete item appears after dot
+
+
+
+
+ This Item does not check correspondence to current text fragment.
+ SuggestItem is intended for dynamic menus.
+
+
+
+
+ Popup menu for autocomplete
+
+
+
+
+ Regex pattern for serach fragment around caret
+
+
+
+
+ Minimum fragment length for popup
+
+
+
+
+ User selects item
+
+
+
+
+ It fires after item inserting
+
+
+
+
+ Occurs when popup menu is opening
+
+
+
+
+ Allow TAB for select menu item
+
+
+
+
+ Interval of menu appear (ms)
+
+
+
+
+ Sets the max tooltip window size
+
+
+
+
+ Tooltip will perm show and duration will be ignored
+
+
+
+
+ Back color of selected item
+
+
+
+
+ Border color of hovered item
+
+
+
+
+ Shows popup menu immediately
+
+ If True - MinFragmentLength will be ignored
+
+
+
+ Minimal size of menu
+
+
+
+
+ Image list of menu
+
+
+
+
+ Tooltip duration (ms)
+
+
+
+
+ Tooltip
+
+
+
+
+ Base class for bookmark collection
+
+
+
+
+ Collection of bookmarks
+
+
+
+
+ Removes bookmark by line index
+
+
+
+
+ Returns Bookmark by index.
+
+
+
+
+ Bookmark of FastColoredTextbox
+
+
+
+
+ Name of bookmark
+
+
+
+
+ Line index
+
+
+
+
+ Color of bookmark sign
+
+
+
+
+ Scroll textbox to the bookmark
+
+
+
+
+ Char and style
+
+
+
+
+ Unicode character
+
+
+
+
+ Style bit mask
+
+ Bit 1 in position n means that this char will rendering by FastColoredTextBox.Styles[n]
+
+
+
+ Shows document map of FCTB
+
+
+
+
+ Scale
+
+
+
+
+ Scrollbar visibility
+
+
+
+
+ Exports colored text as HTML
+
+ At this time only TextStyle renderer is supported. Other styles is not exported.
+
+
+
+ Use nbsp; instead space
+
+
+
+
+ Use nbsp; instead space in beginning of line
+
+
+
+
+ Use original font
+
+
+
+
+ Use style tag instead style attribute
+
+
+
+
+ Use 'br' tag instead of '\n'
+
+
+
+
+ Includes line numbers
+
+
+
+
+ Exports colored text as RTF
+
+ At this time only TextStyle renderer is supported. Other styles are not exported.
+
+
+
+ Includes line numbers
+
+
+
+
+ Use original font
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Clean up any resources being used.
+
+ true if managed resources should be disposed; otherwise, false.
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ Collection of Hints.
+ This is temporary buffer for currently displayed hints.
+
+
+
+
+ Clears all displayed hints
+
+
+
+
+ Add and shows the hint
+
+
+
+
+
+ Is collection contains the hint?
+
+
+
+
+ Count of hints
+
+
+
+
+ Hint of FastColoredTextbox
+
+
+
+
+ Text of simple hint
+
+
+
+
+ Linked range
+
+
+
+
+ Backcolor
+
+
+
+
+ Second backcolor
+
+
+
+
+ Border color
+
+
+
+
+ Fore color
+
+
+
+
+ Text alignment
+
+
+
+
+ Font
+
+
+
+
+ Occurs when user click on simple hint
+
+
+
+
+ Inner control
+
+
+
+
+ Docking (allows None and Fill only)
+
+
+
+
+ Width of hint (if Dock is None)
+
+
+
+
+ Height of hint
+
+
+
+
+ Host panel
+
+
+
+
+ Tag
+
+
+
+
+ Cursor
+
+
+
+
+ Inlining. If True then hint will moves apart text.
+
+
+
+
+ Scroll textbox to the hint
+
+
+
+
+ Creates Hint
+
+ Linked range
+ Text for simple hint
+ Inlining. If True then hint will moves apart text
+ Docking. If True then hint will fill whole line
+
+
+
+ Creates Hint
+
+ Linked range
+ Text for simple hint
+
+
+
+ Creates Hint
+
+ Linked range
+ Inner control
+ Inlining. If True then hint will moves apart text
+ Docking. If True then hint will fill whole line
+
+
+
+ Creates Hint
+
+ Linked range
+ Inner control
+
+
+
+ Returns edited hotkey map
+
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Clean up any resources being used.
+
+ true if managed resources should be disposed; otherwise, false.
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ This class records, stores and executes the macros.
+
+
+
+
+ Allows to user to record macros
+
+
+
+
+ Returns current recording state. Set to True/False to start/stop recording programmatically.
+
+
+
+
+ FCTB
+
+
+
+
+ Executes recorded macro
+
+
+
+
+
+ Adds the char to current macro
+
+
+
+
+ Adds keyboard key to current macro
+
+
+
+
+ Clears last recorded macro
+
+
+
+
+ Returns True if last macro is empty
+
+
+
+
+ Macros as string.
+
+
+
+
+ Dictionary of shortcuts for FCTB
+
+
+
+
+ Actions for shortcuts
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Clean up any resources being used.
+
+ true if managed resources should be disposed; otherwise, false.
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ Highlights syntax for given language
+
+
+
+
+ Highlights syntax for given XML description file
+
+
+
+
+ Uses the given to parse a XML description and adds it as syntax descriptor.
+ The syntax descriptor is used for highlighting when
+
+ - Language property of FCTB is set to
+ - DescriptionFile property of FCTB has the same value as the method parameter
+
+
+ Name of the description file
+ XmlDocument to parse
+
+
+
+ Adds the given as resilient style. A resilient style is additionally available when highlighting is
+ based on a syntax descriptor that has been derived from a XML description file. In the run of the highlighting routine
+ the styles used by the FCTB are always dropped and replaced with the (initial) ones from the syntax descriptor. Resilient styles are
+ added afterwards and can be used anyway.
+
+ Style to add
+
+
+
+ Highlights C# code
+
+
+
+
+
+ Highlights VB code
+
+
+
+
+
+ Highlights HTML code
+
+
+
+
+
+ Highlights XML code
+
+
+
+
+
+ Highlights SQL code
+
+
+
+
+
+ Highlights PHP code
+
+
+
+
+
+ Highlights JavaScript code
+
+
+
+
+
+ Highlights Lua code
+
+
+
+
+
+ String style
+
+
+
+
+ Comment style
+
+
+
+
+ Number style
+
+
+
+
+ C# attribute style
+
+
+
+
+ Class name style
+
+
+
+
+ Keyword style
+
+
+
+
+ Style of tags in comments of C#
+
+
+
+
+ HTML attribute value style
+
+
+
+
+ HTML tag brackets style
+
+
+
+
+ HTML tag name style
+
+
+
+
+ HTML Entity style
+
+
+
+
+ XML attribute style
+
+
+
+
+ XML attribute value style
+
+
+
+
+ XML tag brackets style
+
+
+
+
+ XML tag name style
+
+
+
+
+ XML Entity style
+
+
+
+
+ XML CData style
+
+
+
+
+ Variable style
+
+
+
+
+ Specific PHP keyword style
+
+
+
+
+ Specific PHP keyword style
+
+
+
+
+ SQL Statements style
+
+
+
+
+ SQL Functions style
+
+
+
+
+ SQL Types style
+
+
+
+
+ Language
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Clean up any resources being used.
+
+ true if managed resources should be disposed; otherwise, false.
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ Fast colored textbox
+
+
+
+
+ Constructor
+
+
+
+
+ AutoComplete brackets
+
+
+
+
+ Colors of some service visual markers
+
+
+
+
+ Contains UniqueId of start lines of folded blocks
+
+ This dictionary remembers folding state of blocks.
+ It is needed to restore child folding after user collapsed/expanded top-level folding block.
+
+
+
+ Strategy of search of brackets to highlighting
+
+
+
+
+ Automatically shifts secondary wordwrap lines on the shift amount of the first line
+
+
+
+
+ Indent of secondary wordwrap lines (in chars)
+
+
+
+
+ MacrosManager records, stores and executes the macroses
+
+
+
+
+ Allows drag and drop
+
+
+
+
+ Collection of Hints.
+ This is temporary buffer for currently displayed hints.
+
+ You can asynchronously add, remove and clear hints. Appropriate hints will be shown or hidden from the screen.
+
+
+
+ Delay (ms) of ToolTip
+
+
+
+
+ ToolTip component
+
+
+
+
+ Color of bookmarks
+
+
+
+
+ Bookmarks
+
+
+
+
+ Enables virtual spaces
+
+
+
+
+ Strategy of search of end of folding block
+
+
+
+
+ Indicates if tab characters are accepted as input
+
+
+
+
+ Indicates if return characters are accepted as input
+
+
+
+
+ Shows or hides the caret
+
+
+
+
+ Enables caret blinking
+
+
+
+
+ Draw caret when the control is not focused
+
+
+
+
+ Color of border of text area
+
+
+
+
+ Type of border of text area
+
+
+
+
+ Background color for current line
+
+
+
+
+ Background color for highlighting of changed lines
+
+
+
+
+ Fore color (default style color)
+
+
+
+
+ Height of char in pixels (includes LineInterval)
+
+
+
+
+ Interval between lines (in pixels)
+
+
+
+
+ Width of char in pixels
+
+
+
+
+ Spaces count for tab
+
+
+
+
+ Text was changed
+
+
+
+
+ Text version
+
+ This counter is incremented each time changes the text
+
+
+
+ Read only
+
+
+
+
+ Shows line numbers.
+
+
+
+
+ Shows vertical lines between folding start line and folding end line.
+
+
+
+
+ Rectangle where located text
+
+
+
+
+ Color of line numbers.
+
+
+
+
+ Start value of first line number.
+
+
+
+
+ Background color of indent area
+
+
+
+
+ Background color of padding area
+
+
+
+
+ Color of disabled component
+
+
+
+
+ Color of caret
+
+
+
+
+ Wide caret
+
+
+
+
+ Color of service lines (folding lines, borders of blocks etc.)
+
+
+
+
+ Padings of text area
+
+
+
+
+ --Do not use this property--
+
+
+
+
+ Color of folding area indicator
+
+
+
+
+ Enables folding indicator (left vertical line between folding bounds)
+
+
+
+
+ Left distance to text beginning
+
+
+
+
+ Left padding in pixels
+
+
+
+
+ This property draws vertical line after defined char position.
+ Set to 0 for disable drawing of vertical line.
+
+
+
+
+ Styles
+
+
+
+
+ Hotkeys. Do not use this property in your code, use HotkeysMapping property.
+
+
+
+
+ Hotkeys mapping
+
+
+
+
+ Default text style
+ This style is using when no one other TextStyle is not defined in Char.style
+
+
+
+
+ Style for rendering Selection area
+
+
+
+
+ Style for folded block rendering
+
+
+
+
+ Style for brackets highlighting
+
+
+
+
+ Style for alternative brackets highlighting
+
+
+
+
+ Opening bracket for brackets highlighting.
+ Set to '\x0' for disable brackets highlighting.
+
+
+
+
+ Closing bracket for brackets highlighting.
+ Set to '\x0' for disable brackets highlighting.
+
+
+
+
+ Alternative opening bracket for brackets highlighting.
+ Set to '\x0' for disable brackets highlighting.
+
+
+
+
+ Alternative closing bracket for brackets highlighting.
+ Set to '\x0' for disable brackets highlighting.
+
+
+
+
+ Comment line prefix.
+
+
+
+
+ This property specifies which part of the text will be highlighted as you type (by built-in highlighter).
+
+ When a user enters text, a component refreshes highlighting (because the text was changed).
+ This property specifies exactly which section of the text will be re-highlighted.
+ This can be useful to highlight multi-line comments, for example.
+
+
+
+ Is keyboard in replace mode (wide caret) ?
+
+
+
+
+ Allows text rendering several styles same time.
+
+
+
+
+ Allows to record macros.
+
+
+
+
+ Allows AutoIndent. Inserts spaces before new line.
+
+
+
+
+ Does autoindenting in existing lines. It works only if AutoIndent is True.
+
+
+
+
+ Minimal delay(ms) for delayed events (except TextChangedDelayed).
+
+
+
+
+ Minimal delay(ms) for TextChangedDelayed event.
+
+
+
+
+ Language for highlighting by built-in highlighter.
+
+
+
+
+ Syntax Highlighter
+
+
+
+
+ XML file with description of syntax highlighting.
+ This property works only with Language == Language.Custom.
+
+
+
+
+ Position of left highlighted bracket.
+
+
+
+
+ Position of right highlighted bracket.
+
+
+
+
+ Position of left highlighted alternative bracket.
+
+
+
+
+ Position of right highlighted alternative bracket.
+
+
+
+
+ Start line index of current highlighted folding area. Return -1 if start of area is not found.
+
+
+
+
+ End line index of current highlighted folding area. Return -1 if end of area is not found.
+
+
+
+
+ TextSource
+
+
+
+
+ The source of the text.
+ Allows to get text from other FastColoredTextBox.
+
+
+
+
+ Returns current visible range of text
+
+
+
+
+ Current selection range
+
+
+
+
+ Background color.
+ It is used if BackBrush is null.
+
+
+
+
+ Background brush.
+ If Null then BackColor is used.
+
+
+
+
+ Multiline
+
+
+
+
+ WordWrap.
+
+
+
+
+ WordWrap mode.
+
+
+
+
+ If true then line breaks included into the selection will be selected too.
+ Then line breaks will be shown as selected blank character.
+
+
+
+
+ Do not change this property
+
+
+
+
+ Count of lines
+
+
+
+
+ Gets or sets char and styleId for given place
+ This property does not fire OnTextChanged event
+
+
+
+
+ Gets Line
+
+
+
+
+ Text of control
+
+
+
+
+ Text lines
+
+
+
+
+ Gets colored text as HTML
+
+ For more flexibility you can use ExportToHTML class also
+
+
+
+ Gets colored text as RTF
+
+ For more flexibility you can use ExportToRTF class also
+
+
+
+ Text of current selection
+
+
+
+
+ Start position of selection
+
+
+
+
+ Length of selected text
+
+
+
+
+ Font
+
+ Use only monospaced font
+
+
+
+ Font
+
+ Use only monospaced font
+
+
+
+ Indicates that IME is allowed (for CJK language entering)
+
+
+
+
+ Is undo enabled?
+
+
+
+
+ Is redo enabled?
+
+
+
+
+ Range of all text
+
+
+
+
+ Color of selected area
+
+
+
+
+ Reserved space for line number characters.
+ If smaller than needed (e. g. line count >= 10 and this value set to 1) this value will have no impact.
+ If you want to reserve space, e. g. for line numbers >= 10 or >= 100 than you can set this value to 2 or 3 or higher.
+
+
+
+
+ Occurs when mouse is moving over text and tooltip is needed
+
+
+
+
+ Removes all hints
+
+
+
+
+ Add and shows the hint
+
+ Linked range
+ Inner control
+ Scrolls textbox to the hint
+ Inlining. If True then hint will moves apart text
+ Docking. If True then hint will fill whole line
+
+
+
+ Add and shows the hint
+
+ Linked range
+ Inner control
+
+
+
+ Add and shows simple text hint
+
+ Linked range
+ Text of simple hint
+ Scrolls textbox to the hint
+ Inlining. If True then hint will moves apart text
+ Docking. If True then hint will fill whole line
+
+
+
+ Add and shows simple text hint
+
+ Linked range
+ Text of simple hint
+
+
+
+ Occurs when user click on the hint
+
+
+
+
+
+ Occurs when VisibleRange is changed
+
+
+
+
+ Invalidates the entire surface of the control and causes the control to be redrawn.
+ This method is thread safe and does not require Invoke.
+
+
+
+
+ HintClick event.
+ It occurs if user click on the hint.
+
+
+
+
+ TextChanged event.
+ It occurs after insert, delete, clear, undo and redo operations.
+
+
+
+
+ Fake event for correct data binding
+
+
+
+
+ Occurs when user paste text from clipboard
+
+
+
+
+ TextChanging event.
+ It occurs before insert, delete, clear, undo and redo operations.
+
+
+
+
+ SelectionChanged event.
+ It occurs after changing of selection.
+
+
+
+
+ VisibleRangeChanged event.
+ It occurs after changing of visible range.
+
+
+
+
+ TextChangedDelayed event.
+ It occurs after insert, delete, clear, undo and redo operations.
+ This event occurs with a delay relative to TextChanged, and fires only once.
+
+
+
+
+ SelectionChangedDelayed event.
+ It occurs after changing of selection.
+ This event occurs with a delay relative to SelectionChanged, and fires only once.
+
+
+
+
+ VisibleRangeChangedDelayed event.
+ It occurs after changing of visible range.
+ This event occurs with a delay relative to VisibleRangeChanged, and fires only once.
+
+
+
+
+ It occurs when user click on VisualMarker.
+
+
+
+
+ It occurs when visible char is enetering (alphabetic, digit, punctuation, DEL, BACKSPACE)
+
+ Set Handle to True for cancel key
+
+
+
+ It occurs when visible char is enetered (alphabetic, digit, punctuation, DEL, BACKSPACE)
+
+
+
+
+ It occurs when calculates AutoIndent for new line
+
+
+
+
+ It occurs when line background is painting
+
+
+
+
+ Occurs when line was inserted/added
+
+
+
+
+ Occurs when line was removed
+
+
+
+
+ Occurs when current highlighted folding area is changed.
+ Current folding area see in StartFoldingLine and EndFoldingLine.
+
+
+
+
+
+ Occurs when undo/redo stack is changed
+
+
+
+
+
+ Occurs when component was zoomed
+
+
+
+
+ Occurs when user pressed key, that specified as CustomAction
+
+
+
+
+ Occurs when scroolbars are updated
+
+
+
+
+ Occurs when custom wordwrap is needed
+
+
+
+
+ Returns list of styles of given place
+
+
+
+
+ Call this method if the recalc of the position of lines is needed.
+
+
+
+
+ Call this method if the recalc of the position of lines is needed.
+
+
+
+
+ Call this method if the recalc of the position of lines is needed.
+
+
+
+
+ Navigates forward (by Line.LastVisit property)
+
+
+
+
+ Navigates backward (by Line.LastVisit property)
+
+
+
+
+ Navigates to defined line, without Line.LastVisit reseting
+
+
+
+
+ Add new style
+
+ Layer index of this style
+
+
+
+ Checks if the styles buffer has enough space to add one
+ more element. If not, an exception is thrown. Otherwise,
+ the index of a free slot is returned.
+
+ Index of free styles buffer slot
+ If maximum count of styles is exceeded
+
+
+
+ Shows find dialog
+
+
+
+
+ Shows find dialog
+
+
+
+
+ Shows replace dialog
+
+
+
+
+ Shows replace dialog
+
+
+
+
+ Gets length of given line
+
+ Line index
+ Length of line
+
+
+
+ Get range of line
+
+ Line index
+
+
+
+ Copy selected text into Clipboard
+
+
+
+
+ Cut selected text into Clipboard
+
+
+
+
+ Paste text from clipboard into selected position
+
+
+
+
+ Select all chars of text
+
+
+
+
+ Move caret to end of text
+
+
+
+
+ Move caret to first position
+
+
+
+
+ Clear text, styles, history, caches
+
+
+
+
+ Clear buffer of styles
+
+
+
+
+ Clear style of all text
+
+
+
+
+ Clears undo and redo stacks
+
+
+
+
+ Insert text into current selected position
+
+
+
+
+ Insert text into current selected position
+
+
+
+
+
+ Insert text into current selection position (with predefined style)
+
+
+
+
+
+ Insert text into current selection position (with predefined style)
+
+
+
+
+ Insert text into replaceRange and restore previous selection
+
+
+
+
+ Append string to end of the Text
+
+
+
+
+ Append string to end of the Text
+
+
+
+
+ Returns index of the style in Styles
+ -1 otherwise
+
+
+ Index of the style in Styles
+
+
+
+ Returns StyleIndex mask of given styles
+
+
+ StyleIndex mask of given styles
+
+
+
+ Deletes selected chars
+
+
+
+
+ Deletes current line(s)
+
+
+
+
+ Calculates wordwrap cutoffs
+
+
+
+
+ Scroll control for display defined rectangle
+
+
+
+
+
+ Updates scrollbar position after Value changed
+
+
+
+
+ Scroll control for display caret
+
+
+
+
+ Scroll control left
+
+
+
+
+ Scroll control for display selection area
+
+
+
+
+ Scroll control for display given range
+
+
+
+
+ Scroll control for display given range
+
+
+
+
+ Process control keys
+
+
+
+
+ Scrolls to nearest bookmark or to first bookmark
+
+ Current bookmark line index
+
+
+
+ Scrolls to nearest previous bookmark or to last bookmark
+
+ Current bookmark line index
+
+
+
+ Bookmarks line
+
+
+
+
+ Unbookmarks current line
+
+
+
+
+ Moves selected lines down
+
+
+
+
+ Moves selected lines up
+
+
+
+
+ Convert selected text to upper case
+
+
+
+
+ Convert selected text to lower case
+
+
+
+
+ Convert selected text to title case
+
+
+
+
+ Convert selected text to sentence case
+
+
+
+
+ Insert/remove comment prefix into selected lines
+
+
+
+
+ Insert/remove comment prefix into selected lines
+
+
+
+
+ Process "real" keys (no control)
+
+
+
+
+ Enables AutoIndentChars mode
+
+
+
+
+ Regex patterns for AutoIndentChars (one regex per line)
+
+
+
+
+ Do AutoIndentChars
+
+
+
+
+ Finds given char after current caret position, moves the caret to found pos.
+
+
+
+
+
+ Inserts autoindent's spaces in the line
+
+
+
+
+ Returns needed start space count for the line
+
+
+
+
+ Undo last operation
+
+
+
+
+ Redo
+
+
+
+
+ Draws text to given Graphics
+
+
+ Start place of drawing text
+ Size of drawing
+
+
+
+ Draw control
+
+
+
+
+ Gets the value for the system control panel mouse wheel scroll settings.
+ The value returns the number of lines that shall be scolled if the user turns the mouse wheet one step.
+
+
+ This methods gets the "WheelScrollLines" value our from the registry key "HKEY_CURRENT_USER\Control Panel\Desktop".
+ If the value of this option is 0, the screen will not scroll when the mouse wheel is turned.
+ If the value of this option is -1 or is greater than the number of lines visible in the window,
+ the screen will scroll up or down by one page.
+
+
+ Number of lines to scrol l when the mouse wheel is turned
+
+
+
+
+ Zooming (in percentages)
+
+
+
+
+ Gets nearest line and char position from coordinates
+
+ Point
+ Line and char position
+
+
+
+ Gets nearest absolute text position for given point
+
+ Point
+ Position
+
+
+
+ Fires TextChanging event
+
+
+
+
+ Fires TextChanged event
+
+
+
+
+ Fires TextChanged event
+
+
+
+
+ Fires TextChanged event
+
+
+
+
+ Call this method before multiple text changing
+
+
+
+
+ Call this method after multiple text changing
+
+
+
+
+ Fires TextChanged event
+
+
+
+
+ Clears folding state for range of text
+
+
+
+
+ Fires SelectionChanged event
+
+
+
+
+ Gets absolute text position from line and char position
+
+ Line and char position
+ Point of char
+
+
+
+ Gets line and char position from absolute text position
+
+
+
+
+ Gets absolute char position from char position
+
+
+
+
+ Gets point for given line and char position
+
+ Line and char position
+ Coordiantes
+
+
+
+ Get range of text
+
+ Absolute start position
+ Absolute finish position
+ Range
+
+
+
+ Get range of text
+
+ Line and char position
+ Line and char position
+ Range
+
+
+
+ Finds ranges for given regex pattern
+
+ Regex pattern
+ Enumeration of ranges
+
+
+
+ Finds ranges for given regex pattern
+
+ Regex pattern
+ Enumeration of ranges
+
+
+
+ Get text of given line
+
+ Line index
+ Text
+
+
+
+ Exapnds folded block
+
+ Start line
+
+
+
+ Collapse folding blocks using FoldedBlocks dictionary.
+
+
+
+
+ Expand collapsed block
+
+
+
+
+ Expand collapsed block
+
+ Any line inside collapsed block
+
+
+
+ Collapses all folding blocks
+
+
+
+
+ Exapnds all folded blocks
+
+
+
+
+
+ Collapses folding block
+
+ Start folding line
+
+
+
+ Start foilding marker for the line
+
+
+
+
+ End foilding marker for the line
+
+
+
+
+ Collapse text block
+
+
+
+
+ Insert TAB into front of seletcted lines.
+
+
+
+
+ Remove TAB from front of seletcted lines.
+
+
+
+
+ Remove TAB in front of the caret ot the selected line.
+
+
+
+
+ Insert autoindents into selected lines
+
+
+
+
+ Insert prefix into front of seletcted lines
+
+
+
+
+ Remove prefix from front of selected lines
+ This method ignores forward spaces of the line
+
+
+
+
+ Begins AutoUndo block.
+ All changes of text between BeginAutoUndo() and EndAutoUndo() will be canceled in one operation Undo.
+
+
+
+
+ Ends AutoUndo block.
+ All changes of text between BeginAutoUndo() and EndAutoUndo() will be canceled in one operation Undo.
+
+
+
+
+ Highlights brackets around caret
+
+
+
+
+ Returns range between brackets (or null if not found)
+
+
+
+
+ Selectes next fragment for given regex.
+
+
+
+
+ Prints range of text
+
+
+
+
+ Prints all text
+
+
+
+
+ Prints all text, without any dialog windows
+
+
+
+
+ Open text file
+
+
+
+
+ Open text file (with automatic encoding detector)
+
+
+
+
+ Open file binding mode
+
+
+
+
+
+
+ Close file binding mode
+
+
+
+
+ Save text to the file
+
+
+
+
+
+
+ Set VisibleState of line
+
+
+
+
+ Returns VisibleState of the line
+
+
+
+
+ Shows Goto dialog form
+
+
+
+
+ Occurs when undo/redo stack is changed
+
+
+
+
+ Search lines by regex pattern
+
+
+
+
+ Removes given lines
+
+
+
+
+ Activates the scrolling mode (middle click button).
+
+ MouseEventArgs
+
+
+
+ Deactivates the scrolling mode (middle click button).
+
+
+
+
+ Restore scrolls
+
+
+
+
+ Inserted line index
+
+
+
+
+ Count of inserted lines
+
+
+
+
+ Removed line index
+
+
+
+
+ Count of removed lines
+
+
+
+
+ UniqueIds of removed lines
+
+
+
+
+ TextChanged event argument
+
+
+
+
+ Constructor
+
+
+
+
+ This range contains changed area of text
+
+
+
+
+ Set to true if you want to cancel text inserting
+
+
+
+
+ Word wrapping by control width
+
+
+
+
+ Word wrapping by preferred line width (PreferredLineWidth)
+
+
+
+
+ Char wrapping by control width
+
+
+
+
+ Char wrapping by preferred line width (PreferredLineWidth)
+
+
+
+
+ Custom wrap (by event WordWrapNeeded)
+
+
+
+
+ Title of page. If you want to print Title on the page, insert code &w in Footer or Header.
+
+
+
+
+ Footer of page.
+ Here you can use special codes: &w (Window title), &D, &d (Date), &t(), &4 (Time), &p (Current page number), &P (Total number of pages), && (A single ampersand), &b (Right justify text, Center text. If &b occurs once, then anything after the &b is right justified. If &b occurs twice, then anything between the two &b is centered, and anything after the second &b is right justified).
+ More detailed see here
+
+
+
+
+ Header of page
+ Here you can use special codes: &w (Window title), &D, &d (Date), &t(), &4 (Time), &p (Current page number), &P (Total number of pages), && (A single ampersand), &b (Right justify text, Center text. If &b occurs once, then anything after the &b is right justified. If &b occurs twice, then anything between the two &b is centered, and anything after the second &b is right justified).
+ More detailed see here
+
+
+
+
+ Prints line numbers
+
+
+
+
+ Additional spaces count for this line, relative to previous line
+
+
+
+
+ Additional spaces count for next line, relative to previous line
+
+
+
+
+ Absolute indentation of current line. You can change this property if you want to set absolute indentation.
+
+
+
+
+ Type of highlighting
+
+
+
+
+ Highlight only changed range of text. Highest performance.
+
+
+
+
+ Highlight visible range of text. Middle performance.
+
+
+
+
+ Highlight all (visible and invisible) text. Lowest performance.
+
+
+
+
+ Strategy of search of end of folding block
+
+
+
+
+ Strategy of search of brackets to highlighting
+
+
+
+
+ ToolTipNeeded event args
+
+
+
+
+ HintClick event args
+
+
+
+
+ CustomAction event args
+
+
+
+
+ Style index mask (16 styles)
+
+
+
+
+ Insert single char
+
+ This operation includes also insertion of new line and removing char by backspace
+
+
+
+ Constructor
+
+ Underlaying textbox
+ Inserting char
+
+
+
+ Undo operation
+
+
+
+
+ Execute operation
+
+
+
+
+ Merge lines i and i+1
+
+
+
+
+ Insert text
+
+
+
+
+ Constructor
+
+ Underlaying textbox
+ Text for inserting
+
+
+
+ Undo operation
+
+
+
+
+ Execute operation
+
+
+
+
+ Insert text into given ranges
+
+
+
+
+ Constructor
+
+ Underlaying textbox
+ List of ranges for replace
+ Text for inserting
+
+
+
+ Undo operation
+
+
+
+
+ Execute operation
+
+
+
+
+ Clear selected text
+
+
+
+
+ Construstor
+
+ Underlaying textbox
+
+
+
+ Undo operation
+
+
+
+
+ Execute operation
+
+
+
+
+ Replaces text
+
+
+
+
+ Constructor
+
+ Underlaying textsource
+ List of ranges for replace
+
+
+
+ Undo operation
+
+
+
+
+ Execute operation
+
+
+
+
+ Removes lines
+
+
+
+
+ Constructor
+
+ Underlaying textbox
+ List of ranges for replace
+ Text for inserting
+
+
+
+ Undo operation
+
+
+
+
+ Execute operation
+
+
+
+
+ Wrapper for multirange commands
+
+
+
+
+ Remembers current selection and restore it after Undo
+
+
+
+
+ Required designer variable.
+
+
+
+
+ Clean up any resources being used.
+
+ true if managed resources should be disposed; otherwise, false.
+
+
+
+ Required method for Designer support - do not modify
+ the contents of this method with the code editor.
+
+
+
+
+ Limited stack
+
+
+
+
+ Max stack length
+
+
+
+
+ Current length of stack
+
+
+
+
+ Constructor
+
+ Maximum length of stack
+
+
+
+ Pop item
+
+
+
+
+ Peek item
+
+
+
+
+ Push item
+
+
+
+
+ Clear stack
+
+
+
+
+ Line of text
+
+
+
+
+ Text of line was changed
+
+
+
+
+ Time of last visit of caret in this line
+
+ This property can be used for forward/backward navigating
+
+
+
+ Background brush.
+
+
+
+
+ Unique ID
+
+
+
+
+ Count of needed start spaces for AutoIndent
+
+
+
+
+ Clears style of chars, delete folding markers
+
+
+
+
+ Text of the line
+
+
+
+
+ Clears folding markers
+
+
+
+
+ Count of start spaces
+
+
+
+
+ Chars count
+
+
+
+
+ Visible state
+
+
+
+
+ Positions for wordwrap cutoffs
+
+
+
+
+ Count of wordwrap string count for this line
+
+
+
+
+ Gets index of wordwrap string for given char position
+
+
+
+
+ Line index and char index
+
+
+
+
+ Diapason of text chars
+
+
+
+
+ Constructor
+
+
+
+
+ Return true if no selected text
+
+
+
+
+ Column selection mode
+
+
+
+
+ Constructor
+
+
+
+
+ Constructor
+
+
+
+
+ Constructor. Creates range of the line
+
+
+
+
+ Returns intersection with other range,
+ empty range returned otherwise
+
+
+
+
+
+
+ Returns union with other range.
+
+
+
+
+
+
+ Select all chars of control
+
+
+
+
+ Start line and char position
+
+
+
+
+ Finish line and char position
+
+
+
+
+ Text of range
+
+ This property has not 'set' accessor because undo/redo stack works only with
+ FastColoredTextBox.Selection range. So, if you want to set text, you need to use FastColoredTextBox.Selection
+ and FastColoredTextBox.InsertText() mehtod.
+
+
+
+
+ Returns first char after Start place
+
+
+
+
+ Returns first char before Start place
+
+
+
+
+ Returns required char's number before start of the Range
+
+
+
+
+ Returns required char's number after start of the Range
+
+
+
+
+ Clone range
+
+
+
+
+
+ Return minimum of end.X and start.X
+
+
+
+
+ Return maximum of end.X and start.X
+
+
+
+
+ Move range right
+
+ This method jump over folded blocks
+
+
+
+ Move range left
+
+ This method can to go inside folded blocks
+
+
+
+ Move range left
+
+ This method jump over folded blocks
+
+
+
+ Move range left
+
+ This method can to go inside folded blocks
+
+
+
+ Set style for range
+
+
+
+
+ Set style for given regex pattern
+
+
+
+
+ Set style for given regex
+
+
+
+
+ Set style for given regex pattern
+
+
+
+
+ Set style for given regex pattern
+
+
+
+
+ Set style for given regex pattern
+
+
+
+
+ Appends style to chars of range
+
+
+
+
+ Sets folding markers
+
+ Pattern for start folding line
+ Pattern for finish folding line
+
+
+
+ Sets folding markers
+
+ Pattern for start folding line
+ Pattern for finish folding line
+
+
+
+ Sets folding markers
+
+ Pattern for start and end folding line
+
+
+
+ Finds ranges for given regex pattern
+
+ Regex pattern
+ Enumeration of ranges
+
+
+
+ Finds ranges for given regex pattern
+
+ Regex pattern
+ Enumeration of ranges
+
+
+
+ Finds ranges for given regex pattern.
+ Search is separately in each line.
+ This method requires less memory than GetRanges().
+
+ Regex pattern
+ Enumeration of ranges
+
+
+
+ Finds ranges for given regex.
+ Search is separately in each line.
+ This method requires less memory than GetRanges().
+
+ Regex
+ Enumeration of ranges
+
+
+
+ Finds ranges for given regex pattern.
+ Search is separately in each line (order of lines is reversed).
+ This method requires less memory than GetRanges().
+
+ Regex pattern
+ Enumeration of ranges
+
+
+
+ Finds ranges for given regex
+
+ Enumeration of ranges
+
+
+
+ Clear styles of range
+
+
+
+
+ Clear styles of range
+
+
+
+
+ Clear folding markers of all lines of range
+
+
+
+
+ Starts selection position updating
+
+
+
+
+ Ends selection position updating
+
+
+
+
+ Exchanges Start and End if End appears before Start
+
+
+
+
+ Exchanges Start and End
+
+
+
+
+ Expands range from first char of Start line to last char of End line
+
+
+
+
+ Chars of range (exclude \n)
+
+
+
+
+ Get fragment of text around Start place. Returns maximal matched to pattern fragment.
+
+ Allowed chars pattern for fragment
+ Range of found fragment
+
+
+
+ Get fragment of text around Start place. Returns maximal matched to given Style.
+
+ Allowed style for fragment
+ Range of found fragment
+
+
+
+ Get fragment of text around Start place. Returns maximal mathed to pattern fragment.
+
+ Allowed chars pattern for fragment
+ Range of found fragment
+
+
+
+ Range is readonly?
+ This property return True if any char of the range contains ReadOnlyStyle.
+ Set this property to True/False to mark chars of the range as Readonly/Writable.
+
+
+
+
+ Is char before range readonly
+
+
+
+
+
+ Is char after range readonly
+
+
+
+
+
+ Style of chars
+
+ This is base class for all text and design renderers
+
+
+
+ This style is exported to outer formats (HTML for example)
+
+
+
+
+ Occurs when user click on StyleVisualMarker joined to this style
+
+
+
+
+ Constructor
+
+
+
+
+ Renders given range of text
+
+ Graphics object
+ Position of the range in absolute control coordinates
+ Rendering range of text
+
+
+
+ Occurs when user click on StyleVisualMarker joined to this style
+
+
+
+
+ Shows VisualMarker
+ Call this method in Draw method, when you need to show VisualMarker for your style
+
+
+
+
+ Returns CSS for export to HTML
+
+
+
+
+
+ Returns RTF descriptor for export to RTF
+
+
+
+
+
+ Style for chars rendering
+ This renderer can draws chars, with defined fore and back colors
+
+
+
+
+ Renderer for folded block
+
+
+
+
+ Renderer for selected area
+
+
+
+
+ Marker style
+ Draws background color for text
+
+
+
+
+ Draws small rectangle for popup menu
+
+
+
+
+ This style draws a wavy line below a given text range.
+
+ Thanks for Yallie
+
+
+
+ This style is used to mark range of text as ReadOnly block
+
+ You can inherite this style to add visual effects of readonly text
+
+
+
+ This class contains the source text (chars and styles).
+ It stores a text lines, the manager of commands, undo/redo stack, styles.
+
+
+
+
+ Styles
+
+
+
+
+ Occurs when line was inserted/added
+
+
+
+
+ Occurs when line was removed
+
+
+
+
+ Occurs when text was changed
+
+
+
+
+ Occurs when recalc is needed
+
+
+
+
+ Occurs when recalc wordwrap is needed
+
+
+
+
+ Occurs before text changing
+
+
+
+
+ Occurs after CurrentTB was changed
+
+
+
+
+ Current focused FastColoredTextBox
+
+
+
+
+ Default text style
+ This style is using when no one other TextStyle is not defined in Char.style
+
+
+
+
+ Text lines
+
+
+
+
+ Lines count
+
+
+
+
+ These classes are required for correct data binding to Text property of FastColoredTextbox
+
+
+
+
+ This class contains the source text (chars and styles).
+ It stores a text lines, the manager of commands, undo/redo stack, styles.
+
+
+
+
+ Occurs when need to display line in the textbox
+
+
+
+
+ Occurs when need to save line in the file
+
+
+
+
+ End Of Line characters used for saving
+
+
+
+
+ This text will be displayed in textbox
+
+
+
+
+ This property contains only changed text.
+ If text of line is not changed, this property contains null.
+
+
+
+
+ This text will be saved in the file
+
+
+
+