diff --git a/Remontor/.vs/Remontor/FileContentIndex/179f1e71-12a2-4e4f-8260-627c639129ad.vsidx b/Remontor/.vs/Remontor/FileContentIndex/179f1e71-12a2-4e4f-8260-627c639129ad.vsidx
deleted file mode 100644
index d12dab6..0000000
Binary files a/Remontor/.vs/Remontor/FileContentIndex/179f1e71-12a2-4e4f-8260-627c639129ad.vsidx and /dev/null differ
diff --git a/Remontor/.vs/Remontor/FileContentIndex/6a10c53d-114a-42d6-9be8-dea699283021.vsidx b/Remontor/.vs/Remontor/FileContentIndex/6a10c53d-114a-42d6-9be8-dea699283021.vsidx
new file mode 100644
index 0000000..8f812b7
Binary files /dev/null and b/Remontor/.vs/Remontor/FileContentIndex/6a10c53d-114a-42d6-9be8-dea699283021.vsidx differ
diff --git a/Remontor/.vs/Remontor/FileContentIndex/9a61cb09-7211-4570-8adf-f890b657f684.vsidx b/Remontor/.vs/Remontor/FileContentIndex/9a61cb09-7211-4570-8adf-f890b657f684.vsidx
deleted file mode 100644
index f2ec436..0000000
Binary files a/Remontor/.vs/Remontor/FileContentIndex/9a61cb09-7211-4570-8adf-f890b657f684.vsidx and /dev/null differ
diff --git a/Remontor/.vs/Remontor/FileContentIndex/aa52844a-2ac0-4f7f-aafa-63730132a2b5.vsidx b/Remontor/.vs/Remontor/FileContentIndex/aa52844a-2ac0-4f7f-aafa-63730132a2b5.vsidx
new file mode 100644
index 0000000..f191465
Binary files /dev/null and b/Remontor/.vs/Remontor/FileContentIndex/aa52844a-2ac0-4f7f-aafa-63730132a2b5.vsidx differ
diff --git a/Remontor/.vs/Remontor/FileContentIndex/af207ab6-de44-447d-86a2-e2a02cfa55be.vsidx b/Remontor/.vs/Remontor/FileContentIndex/af207ab6-de44-447d-86a2-e2a02cfa55be.vsidx
new file mode 100644
index 0000000..17b67d0
Binary files /dev/null and b/Remontor/.vs/Remontor/FileContentIndex/af207ab6-de44-447d-86a2-e2a02cfa55be.vsidx differ
diff --git a/Remontor/.vs/Remontor/FileContentIndex/d0ce2c6b-7ad6-40c2-bd45-23e194891d3e.vsidx b/Remontor/.vs/Remontor/FileContentIndex/d0ce2c6b-7ad6-40c2-bd45-23e194891d3e.vsidx
deleted file mode 100644
index 58385da..0000000
Binary files a/Remontor/.vs/Remontor/FileContentIndex/d0ce2c6b-7ad6-40c2-bd45-23e194891d3e.vsidx and /dev/null differ
diff --git a/Remontor/.vs/Remontor/FileContentIndex/d850cd25-d807-47d1-b9b5-07931d365f47.vsidx b/Remontor/.vs/Remontor/FileContentIndex/d850cd25-d807-47d1-b9b5-07931d365f47.vsidx
new file mode 100644
index 0000000..1f1bd18
Binary files /dev/null and b/Remontor/.vs/Remontor/FileContentIndex/d850cd25-d807-47d1-b9b5-07931d365f47.vsidx differ
diff --git a/Remontor/.vs/Remontor/FileContentIndex/e679b517-87f7-412e-a799-c3ff5c600664.vsidx b/Remontor/.vs/Remontor/FileContentIndex/e679b517-87f7-412e-a799-c3ff5c600664.vsidx
deleted file mode 100644
index 400574d..0000000
Binary files a/Remontor/.vs/Remontor/FileContentIndex/e679b517-87f7-412e-a799-c3ff5c600664.vsidx and /dev/null differ
diff --git a/Remontor/.vs/Remontor/v17/.suo b/Remontor/.vs/Remontor/v17/.suo
index 69ddcf4..754ecdd 100644
Binary files a/Remontor/.vs/Remontor/v17/.suo and b/Remontor/.vs/Remontor/v17/.suo differ
diff --git a/Remontor/BarSessionControl.Designer.cs b/Remontor/BarSessionControl.Designer.cs
index adaa612..8265bbe 100644
--- a/Remontor/BarSessionControl.Designer.cs
+++ b/Remontor/BarSessionControl.Designer.cs
@@ -37,6 +37,7 @@
this.ShowBar = new System.Windows.Forms.Button();
this.NewBtn = new System.Windows.Forms.Button();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
+ this.button1 = new System.Windows.Forms.Button();
this.flowLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
@@ -46,7 +47,7 @@
this.button2.FlatAppearance.BorderSize = 0;
this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button2.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
- this.button2.Location = new System.Drawing.Point(461, 0);
+ this.button2.Location = new System.Drawing.Point(431, 0);
this.button2.Margin = new System.Windows.Forms.Padding(0);
this.button2.Name = "button2";
this.button2.Size = new System.Drawing.Size(140, 21);
@@ -60,7 +61,7 @@
this.button3.FlatAppearance.BorderSize = 0;
this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button3.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
- this.button3.Location = new System.Drawing.Point(352, 0);
+ this.button3.Location = new System.Drawing.Point(322, 0);
this.button3.Margin = new System.Windows.Forms.Padding(0);
this.button3.Name = "button3";
this.button3.Size = new System.Drawing.Size(109, 21);
@@ -74,7 +75,7 @@
this.button4.FlatAppearance.BorderSize = 0;
this.button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
- this.button4.Location = new System.Drawing.Point(243, 0);
+ this.button4.Location = new System.Drawing.Point(213, 0);
this.button4.Margin = new System.Windows.Forms.Padding(0);
this.button4.Name = "button4";
this.button4.Size = new System.Drawing.Size(109, 21);
@@ -88,7 +89,7 @@
this.button7.FlatAppearance.BorderSize = 0;
this.button7.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button7.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
- this.button7.Location = new System.Drawing.Point(134, 0);
+ this.button7.Location = new System.Drawing.Point(104, 0);
this.button7.Margin = new System.Windows.Forms.Padding(0);
this.button7.Name = "button7";
this.button7.Size = new System.Drawing.Size(109, 21);
@@ -104,7 +105,7 @@
this.button6.FlatAppearance.BorderSize = 0;
this.button6.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button6.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
- this.button6.Location = new System.Drawing.Point(631, 0);
+ this.button6.Location = new System.Drawing.Point(598, 0);
this.button6.Name = "button6";
this.button6.Size = new System.Drawing.Size(21, 21);
this.button6.TabIndex = 6;
@@ -117,7 +118,7 @@
this.button5.FlatAppearance.BorderSize = 0;
this.button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.button5.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
- this.button5.Location = new System.Drawing.Point(604, 0);
+ this.button5.Location = new System.Drawing.Point(571, 0);
this.button5.Name = "button5";
this.button5.Size = new System.Drawing.Size(21, 21);
this.button5.TabIndex = 5;
@@ -141,7 +142,7 @@
this.NewBtn.BackgroundImage = global::Remontor.Properties.Resources.connect_min;
this.NewBtn.FlatAppearance.BorderSize = 0;
this.NewBtn.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.NewBtn.Location = new System.Drawing.Point(103, 0);
+ this.NewBtn.Location = new System.Drawing.Point(73, 0);
this.NewBtn.Margin = new System.Windows.Forms.Padding(10, 0, 10, 0);
this.NewBtn.Name = "NewBtn";
this.NewBtn.Size = new System.Drawing.Size(21, 21);
@@ -160,13 +161,27 @@
this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.flowLayoutPanel1.Margin = new System.Windows.Forms.Padding(0);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
- this.flowLayoutPanel1.Size = new System.Drawing.Size(601, 21);
+ this.flowLayoutPanel1.Size = new System.Drawing.Size(571, 21);
this.flowLayoutPanel1.TabIndex = 8;
//
+ // button1
+ //
+ this.button1.BackColor = System.Drawing.SystemColors.Control;
+ this.button1.BackgroundImage = global::Remontor.Properties.Resources.max_size;
+ this.button1.FlatAppearance.BorderSize = 0;
+ this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.button1.Font = new System.Drawing.Font("Microsoft Sans Serif", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+ this.button1.Location = new System.Drawing.Point(643, 0);
+ this.button1.Name = "button1";
+ this.button1.Size = new System.Drawing.Size(21, 21);
+ this.button1.TabIndex = 9;
+ this.button1.UseVisualStyleBackColor = false;
+ //
// BarSessionControl
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.button1);
this.Controls.Add(this.flowLayoutPanel1);
this.Controls.Add(this.button6);
this.Controls.Add(this.button5);
@@ -189,5 +204,6 @@
private System.Windows.Forms.Button button6;
private System.Windows.Forms.Button button7;
private System.Windows.Forms.FlowLayoutPanel flowLayoutPanel1;
+ private System.Windows.Forms.Button button1;
}
}
diff --git a/Remontor/Comp/CompName.cs b/Remontor/Comp/CompName.cs
new file mode 100644
index 0000000..81467b1
--- /dev/null
+++ b/Remontor/Comp/CompName.cs
@@ -0,0 +1,116 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Reseter2
+{
+ [Serializable]
+ internal class CompId : IComp
+ {
+ private int imgIndex=1;
+ private string Name { get; set; }
+ private string Description { get; set; }
+ private IPAddress Ip { get; set; }
+ private string netName;
+
+ public CompId(string netname)
+ {
+ this.netName = netname;
+ //this.Name = netname;
+
+ }
+
+
+
+
+
+ public CompId(IPAddress ip)
+ {
+ this.Ip = ip;
+ }
+ public CompId(string name, string description)
+ {
+ this.Name = name;
+ this.Description = description;
+ }
+
+
+
+ public CompId(string name, string description, IPAddress ip)
+ {
+ this.Name = name;
+ this.Description = description;
+ this.Ip = ip;
+ }
+
+
+ public string GetName()
+ {
+ return Name;
+ }
+
+ public string GetNetNameStr()
+ {
+ if (netName == null) return GetIPStr();
+ return netName;
+ }
+ public string GetNetName()
+ {
+ return netName;
+ }
+ public IPAddress GetIP()
+ {
+ return Ip;
+ }
+
+ public string GetIPStr()
+ {
+ if (Ip != null) return Ip.ToString();
+ return null;
+ }
+ public int GetImage()
+ {
+ return imgIndex;
+ }
+
+ public void SetIP(IPAddress ip)
+ {
+ Ip = ip;
+ }
+ public void SetName(string name)
+ {
+ Name = name;
+ }
+
+ public void SetNetName(string netname)
+ {
+ netName = netname;
+ }
+
+ public void SetImage(int image)
+ {
+ imgIndex = image;
+ }
+ public void SetDescription(string description)
+ {
+ Description = description;
+ }
+
+ public string GetResetName()
+ {
+ if (netName != null) return netName;
+ return GetIPStr();
+ }
+
+ public string GetDescription()
+ {
+ return Description;
+ }
+
+
+
+ }
+}
diff --git a/Remontor/Comp/IComp.cs b/Remontor/Comp/IComp.cs
new file mode 100644
index 0000000..7c4e4ac
--- /dev/null
+++ b/Remontor/Comp/IComp.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Reseter2
+{
+ internal interface IComp
+ {
+ string GetName();
+ string GetNetName();
+ string GetNetNameStr();
+ string GetResetName();
+ IPAddress GetIP();
+ int GetImage();
+
+ void SetIP(IPAddress ip);
+ void SetName(string name);
+ void SetNetName(string netName);
+ void SetImage(int imdexImg);
+ void SetDescription(string description);
+
+ string GetDescription();
+
+ }
+}
diff --git a/Remontor/Connector/Connect.cs b/Remontor/Connector/Connect.cs
new file mode 100644
index 0000000..a8bf5f5
--- /dev/null
+++ b/Remontor/Connector/Connect.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Remontor.Connector
+{
+ internal class Connect
+ {
+ }
+}
diff --git a/Remontor/Connector/SConnector.cs b/Remontor/Connector/SConnector.cs
new file mode 100644
index 0000000..05379eb
--- /dev/null
+++ b/Remontor/Connector/SConnector.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Remontor.Connector
+{
+ internal class SConnector
+ {
+ }
+}
diff --git a/Remontor/Finder/Finder.Designer.cs b/Remontor/Finder/Finder.Designer.cs
index be79a21..46a3505 100644
--- a/Remontor/Finder/Finder.Designer.cs
+++ b/Remontor/Finder/Finder.Designer.cs
@@ -30,22 +30,24 @@
{
this.textBox1 = new System.Windows.Forms.TextBox();
this.flowLayoutPanel1 = new System.Windows.Forms.FlowLayoutPanel();
+ this.label1 = new System.Windows.Forms.Label();
+ this.ConnectBtn = new System.Windows.Forms.Button();
this.sessionItemControl1 = new Remontor.SessionItemControl();
this.sessionItemControl2 = new Remontor.SessionItemControl();
this.sessionItemControl3 = new Remontor.SessionItemControl();
this.sessionItemControl4 = new Remontor.SessionItemControl();
- this.sessionItemControl5 = new Remontor.SessionItemControl();
this.sessionItemControl6 = new Remontor.SessionItemControl();
- this.sessionItemControl7 = new Remontor.SessionItemControl();
- this.sessionItemControl8 = new Remontor.SessionItemControl();
this.sessionItemControl9 = new Remontor.SessionItemControl();
- this.label1 = new System.Windows.Forms.Label();
- this.ConnectBtn = new System.Windows.Forms.Button();
+ this.sessionItemControl8 = new Remontor.SessionItemControl();
+ this.sessionItemControl7 = new Remontor.SessionItemControl();
+ this.sessionItemControl5 = new Remontor.SessionItemControl();
this.flowLayoutPanel1.SuspendLayout();
this.SuspendLayout();
//
// textBox1
//
+ this.textBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
this.textBox1.Location = new System.Drawing.Point(125, 12);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(328, 20);
@@ -54,21 +56,42 @@
//
// flowLayoutPanel1
//
+ this.flowLayoutPanel1.BackColor = System.Drawing.SystemColors.Window;
this.flowLayoutPanel1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.flowLayoutPanel1.Controls.Add(this.sessionItemControl1);
this.flowLayoutPanel1.Controls.Add(this.sessionItemControl2);
this.flowLayoutPanel1.Controls.Add(this.sessionItemControl3);
this.flowLayoutPanel1.Controls.Add(this.sessionItemControl4);
- this.flowLayoutPanel1.Controls.Add(this.sessionItemControl5);
this.flowLayoutPanel1.Controls.Add(this.sessionItemControl6);
- this.flowLayoutPanel1.Controls.Add(this.sessionItemControl7);
- this.flowLayoutPanel1.Controls.Add(this.sessionItemControl8);
this.flowLayoutPanel1.Controls.Add(this.sessionItemControl9);
- this.flowLayoutPanel1.Location = new System.Drawing.Point(12, 47);
+ this.flowLayoutPanel1.Controls.Add(this.sessionItemControl8);
+ this.flowLayoutPanel1.Controls.Add(this.sessionItemControl7);
+ this.flowLayoutPanel1.Controls.Add(this.sessionItemControl5);
+ this.flowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Bottom;
+ this.flowLayoutPanel1.Location = new System.Drawing.Point(0, 52);
this.flowLayoutPanel1.Name = "flowLayoutPanel1";
- this.flowLayoutPanel1.Size = new System.Drawing.Size(556, 391);
+ this.flowLayoutPanel1.Size = new System.Drawing.Size(592, 398);
this.flowLayoutPanel1.TabIndex = 1;
//
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(31, 15);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(88, 13);
+ this.label1.TabIndex = 2;
+ this.label1.Text = "Введите запрос";
+ //
+ // ConnectBtn
+ //
+ this.ConnectBtn.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.ConnectBtn.Location = new System.Drawing.Point(459, 10);
+ this.ConnectBtn.Name = "ConnectBtn";
+ this.ConnectBtn.Size = new System.Drawing.Size(91, 23);
+ this.ConnectBtn.TabIndex = 3;
+ this.ConnectBtn.Text = "Подключиться";
+ this.ConnectBtn.UseVisualStyleBackColor = true;
+ //
// sessionItemControl1
//
this.sessionItemControl1.Location = new System.Drawing.Point(3, 3);
@@ -97,64 +120,46 @@
this.sessionItemControl4.Size = new System.Drawing.Size(264, 55);
this.sessionItemControl4.TabIndex = 3;
//
- // sessionItemControl5
- //
- this.sessionItemControl5.Location = new System.Drawing.Point(3, 125);
- this.sessionItemControl5.Name = "sessionItemControl5";
- this.sessionItemControl5.Size = new System.Drawing.Size(264, 55);
- this.sessionItemControl5.TabIndex = 4;
- //
// sessionItemControl6
//
- this.sessionItemControl6.Location = new System.Drawing.Point(273, 125);
+ this.sessionItemControl6.Location = new System.Drawing.Point(3, 125);
this.sessionItemControl6.Name = "sessionItemControl6";
this.sessionItemControl6.Size = new System.Drawing.Size(264, 55);
this.sessionItemControl6.TabIndex = 5;
//
- // sessionItemControl7
- //
- this.sessionItemControl7.Location = new System.Drawing.Point(3, 186);
- this.sessionItemControl7.Name = "sessionItemControl7";
- this.sessionItemControl7.Size = new System.Drawing.Size(264, 55);
- this.sessionItemControl7.TabIndex = 6;
- //
- // sessionItemControl8
- //
- this.sessionItemControl8.Location = new System.Drawing.Point(273, 186);
- this.sessionItemControl8.Name = "sessionItemControl8";
- this.sessionItemControl8.Size = new System.Drawing.Size(264, 55);
- this.sessionItemControl8.TabIndex = 7;
- //
// sessionItemControl9
//
- this.sessionItemControl9.Location = new System.Drawing.Point(3, 247);
+ this.sessionItemControl9.Location = new System.Drawing.Point(273, 125);
this.sessionItemControl9.Name = "sessionItemControl9";
this.sessionItemControl9.Size = new System.Drawing.Size(264, 55);
this.sessionItemControl9.TabIndex = 8;
//
- // label1
+ // sessionItemControl8
//
- this.label1.AutoSize = true;
- this.label1.Location = new System.Drawing.Point(31, 15);
- this.label1.Name = "label1";
- this.label1.Size = new System.Drawing.Size(88, 13);
- this.label1.TabIndex = 2;
- this.label1.Text = "Введите запрос";
+ this.sessionItemControl8.Location = new System.Drawing.Point(3, 186);
+ this.sessionItemControl8.Name = "sessionItemControl8";
+ this.sessionItemControl8.Size = new System.Drawing.Size(264, 55);
+ this.sessionItemControl8.TabIndex = 7;
//
- // ConnectBtn
+ // sessionItemControl7
//
- this.ConnectBtn.Location = new System.Drawing.Point(459, 10);
- this.ConnectBtn.Name = "ConnectBtn";
- this.ConnectBtn.Size = new System.Drawing.Size(91, 23);
- this.ConnectBtn.TabIndex = 3;
- this.ConnectBtn.Text = "Подключиться";
- this.ConnectBtn.UseVisualStyleBackColor = true;
+ this.sessionItemControl7.Location = new System.Drawing.Point(273, 186);
+ this.sessionItemControl7.Name = "sessionItemControl7";
+ this.sessionItemControl7.Size = new System.Drawing.Size(264, 55);
+ this.sessionItemControl7.TabIndex = 6;
+ //
+ // sessionItemControl5
+ //
+ this.sessionItemControl5.Location = new System.Drawing.Point(3, 247);
+ this.sessionItemControl5.Name = "sessionItemControl5";
+ this.sessionItemControl5.Size = new System.Drawing.Size(264, 55);
+ this.sessionItemControl5.TabIndex = 4;
//
// Finder
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(580, 450);
+ this.ClientSize = new System.Drawing.Size(592, 450);
this.Controls.Add(this.ConnectBtn);
this.Controls.Add(this.label1);
this.Controls.Add(this.flowLayoutPanel1);
diff --git a/Remontor/Properties/Resources.Designer.cs b/Remontor/Properties/Resources.Designer.cs
index 9f5fda3..2630ac1 100644
--- a/Remontor/Properties/Resources.Designer.cs
+++ b/Remontor/Properties/Resources.Designer.cs
@@ -130,6 +130,26 @@ namespace Remontor.Properties {
}
}
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap max_size {
+ get {
+ object obj = ResourceManager.GetObject("max_size", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
+ ///
+ /// Поиск локализованного ресурса типа System.Drawing.Bitmap.
+ ///
+ internal static System.Drawing.Bitmap Person {
+ get {
+ object obj = ResourceManager.GetObject("Person", resourceCulture);
+ return ((System.Drawing.Bitmap)(obj));
+ }
+ }
+
///
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
///
diff --git a/Remontor/Properties/Resources.resx b/Remontor/Properties/Resources.resx
index 8a0a8db..130e665 100644
--- a/Remontor/Properties/Resources.resx
+++ b/Remontor/Properties/Resources.resx
@@ -118,6 +118,9 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\Resources\max_size.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\reconnect.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -136,6 +139,9 @@
..\Resources\close.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\up_min1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\down_min11.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -145,7 +151,7 @@
..\Resources\down_min1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\up_min1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\Person.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
\ No newline at end of file
diff --git a/Remontor/Remontor.csproj b/Remontor/Remontor.csproj
index 0954137..659e9ca 100644
--- a/Remontor/Remontor.csproj
+++ b/Remontor/Remontor.csproj
@@ -146,5 +146,11 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Remontor/Resources/Person.png b/Remontor/Resources/Person.png
new file mode 100644
index 0000000..d815c05
Binary files /dev/null and b/Remontor/Resources/Person.png differ
diff --git a/Remontor/Resources/max_size.png b/Remontor/Resources/max_size.png
new file mode 100644
index 0000000..6929a41
Binary files /dev/null and b/Remontor/Resources/max_size.png differ
diff --git a/Remontor/SCCMsearch/AuthLogin.cs b/Remontor/SCCMsearch/AuthLogin.cs
new file mode 100644
index 0000000..3374608
--- /dev/null
+++ b/Remontor/SCCMsearch/AuthLogin.cs
@@ -0,0 +1,46 @@
+using Remontor.Setting;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Remontor.SCCMsearch
+{
+ internal class AuthLogin : IAuthType
+ {
+ private string User = null;
+ private string Pass = null;
+ public AuthLogin()
+ {
+
+ }
+
+ public AuthLogin(string user, string pass)
+ {
+ User = user;
+ Pass = pass;
+ }
+ public string Name
+ {
+ get
+ {
+ if(User != null) return User;
+ return SGlobalSetting.settingSCCM.username;
+ }
+ }
+ public string Password
+ {
+ get
+ {
+ if(Pass != null) return Pass;
+ return SGlobalSetting.settingSCCM.password;
+ }
+ }
+ public string AuthString()
+ {
+ return "user=" + Name + ";password=" + Password + ";";
+ }
+ }
+}
diff --git a/Remontor/SCCMsearch/AuthWin.cs b/Remontor/SCCMsearch/AuthWin.cs
new file mode 100644
index 0000000..f25bba0
--- /dev/null
+++ b/Remontor/SCCMsearch/AuthWin.cs
@@ -0,0 +1,39 @@
+using Remontor.Setting;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Security.Principal;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Remontor.SCCMsearch
+{
+ internal class AuthWin : IAuthType
+ {
+ private static System.Security.Principal.WindowsIdentity user = WindowsIdentity.GetCurrent();
+ public static string uid;
+ public AuthWin()
+ {
+ uid = user.User.AccountDomainSid.Value;
+ }
+ public string Name
+ {
+ get
+ {
+ return "";
+ }
+ }
+ public string Password
+ {
+ get
+ {
+ return uid;
+ }
+ }
+ public string AuthString()
+ {
+ Console.WriteLine(Password);
+ return "Integrated Security=true;";
+ }
+ }
+}
diff --git a/Remontor/SCCMsearch/IAuthType.cs b/Remontor/SCCMsearch/IAuthType.cs
new file mode 100644
index 0000000..84d7281
--- /dev/null
+++ b/Remontor/SCCMsearch/IAuthType.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Remontor.SCCMsearch
+{
+ internal interface IAuthType
+ {
+ public string Name { get; }
+ public string Password { get; }
+ public string AuthString();
+ }
+}
diff --git a/Remontor/Seacher/ISeaherMetod.cs b/Remontor/Seacher/ISeaherMetod.cs
new file mode 100644
index 0000000..9fbd75b
--- /dev/null
+++ b/Remontor/Seacher/ISeaherMetod.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using static Remontor.Seacher.SeahcLocal;
+
+namespace Remontor.Seacher
+{
+ internal interface ISeaherMetod
+ {
+ public void Change(ResultUpdate sender, string seach);
+ public IComp Result(int index);
+ public string ResultString(int index);
+
+ }
+}
diff --git a/Remontor/Seacher/SSeaher.cs b/Remontor/Seacher/SSeaher.cs
new file mode 100644
index 0000000..cf65323
--- /dev/null
+++ b/Remontor/Seacher/SSeaher.cs
@@ -0,0 +1,25 @@
+using Remontor.Setting;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Remontor.Seacher
+{
+ internal static class SSeaher
+ {
+ public static ISeaherMetod seaherMetod;
+ public static void LoadSetting()
+ {
+ if(SGlobalSetting.settingSCCM.on)
+ {
+ seaherMetod = new SeachSCCM();
+ }
+ else
+ {
+ seaherMetod = new SeahcLocal();
+ }
+ }
+ }
+}
diff --git a/Remontor/Seacher/SeachSCCM.cs b/Remontor/Seacher/SeachSCCM.cs
new file mode 100644
index 0000000..c8d95f0
--- /dev/null
+++ b/Remontor/Seacher/SeachSCCM.cs
@@ -0,0 +1,263 @@
+using System.Data.SqlClient;
+using Remontor.SCCMsearch;
+using Remontor.Setting;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading.Tasks;
+using System.Xml.Linq;
+using static Remontor.Seacher.SeahcLocal;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement.StartPanel;
+using System.Threading;
+
+namespace Remontor.Seacher
+{
+ internal class SeachSCCM : ISeaherMetod
+ {
+ private SqlConnection Connection;
+ private IAuthType AuthType;
+ private List comps = new List();
+ private ResultUpdate Update;
+ private bool enable;
+ private string error;
+ private Mode mode;
+ private Timer TimerDisconnect;
+
+ private enum Mode{
+ PCname,
+ Login,
+ Username
+ }
+
+ public SeachSCCM()
+ {
+ if (SGlobalSetting.settingSCCM.windowsAuth)
+ {
+ AuthType = new AuthWin();
+ }
+ else
+ {
+ AuthType = new AuthLogin();
+ }
+
+ }
+
+ public SeachSCCM(bool AuthMetod, string User = "", string Pass = "")
+ {
+ if (AuthMetod)
+ {
+ AuthType = new AuthWin();
+ }
+ else
+ {
+ AuthType = new AuthLogin(User, Pass);
+ }
+
+ }
+ public void Change(ResultUpdate sender, string seach)
+ {
+ Activate();
+ Update = sender;
+ if (Connection != null && Connection.State == ConnectionState.Open)
+ {
+ List result;
+ if (seach.Length > 2)
+ {
+ result = ResultSeach(seach);
+ int itemHeight = 14;
+ if(enable) itemHeight = 40;
+ Update(result, enable, itemHeight);
+ }
+ else
+ {
+ result = new List();
+ result.Add("Введите запрос, к бд подключенно");
+ Update(result, false, 14);
+ }
+ }
+ else
+ {
+ List result = new List();
+ result.Add(error);
+ Update(result, false,14);
+ }
+
+ }
+
+ private string QueryBilder(string query)
+ {
+ string result;
+ Regex regexCyrillic = new(@"\p{IsCyrillic}+", RegexOptions.IgnoreCase);
+ Regex regexNumrable = new(@"\d+", RegexOptions.IgnoreCase);
+ MatchCollection jjj = regexNumrable.Matches(query);
+ if (regexCyrillic.Matches(query).Count > 0)
+ {
+ result = "SELECT TOP (15) " +
+ "dbo._RES_COLL_SMS00001.Name," +
+ " dbo._RES_COLL_SMS00001.UserName," +
+ " dbo.v_R_User.Full_User_Name0," +
+ " dbo._RES_COLL_SMS00001.LastActiveTime" +
+ " FROM dbo.v_R_User " +
+ "JOIN dbo._RES_COLL_SMS00001 ON dbo.v_R_User.User_Name0=dbo._RES_COLL_SMS00001.UserName" +
+ " WHERE LOWER(dbo.v_R_User.Full_User_Name0) LIKE LOWER(N'%" + query + "%')";
+ mode = Mode.Username;
+ }
+ else if(regexNumrable.Matches(query).Count > 0)
+ {
+ result = "SELECT TOP (15) dbo._RES_COLL_SMS00001.Name, dbo._RES_COLL_SMS00001.UserName, dbo.v_R_User.Full_User_Name0, dbo._RES_COLL_SMS00001.LastActiveTime FROM dbo._RES_COLL_SMS00001 LEFT JOIN dbo.v_R_User ON dbo._RES_COLL_SMS00001.UserName = dbo.v_R_User.User_Name0 WHERE LOWER(dbo._RES_COLL_SMS00001.Name) LIKE LOWER(N'%" + query + "%')";
+ mode = Mode.PCname;
+ }
+ else
+ {
+ result = "SELECT TOP (15) dbo._RES_COLL_SMS00001.Name, dbo._RES_COLL_SMS00001.UserName, dbo.v_R_User.Full_User_Name0, dbo._RES_COLL_SMS00001.LastActiveTime FROM dbo._RES_COLL_SMS00001 LEFT JOIN dbo.v_R_User ON dbo._RES_COLL_SMS00001.UserName = dbo.v_R_User.User_Name0 WHERE LOWER(dbo._RES_COLL_SMS00001.Name) LIKE LOWER(N'%" + query + "%') OR LOWER(dbo._RES_COLL_SMS00001.UserName) LIKE LOWER(N'%" + query + "%')" +
+ ""; ;
+ mode = Mode.Login;
+ }
+ return result;
+ }
+ public List ResultSeach(string seach)
+ {
+ int y = 0;
+ comps.Clear();
+ List result = new List();
+ if (Connection.State == ConnectionState.Open && Connection != null)
+ {
+ try
+ {
+ string sql = QueryBilder(seach);
+ SqlCommand sqlCom = new SqlCommand(sql, Connection);
+ // Connection.Open();
+ sqlCom.ExecuteNonQuery();
+ SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlCom);
+ DataTable dt = new DataTable();
+ dataAdapter.Fill(dt);
+
+ DataRow[] myData = dt.Select();
+ for (int i = 0; i < myData.Length; i++)
+ {
+ IComp comp = new CompId(myData[i].ItemArray[0].ToString());
+ comp.SetName(myData[i].ItemArray[1].ToString());
+ comp.SetDescription(myData[i].ItemArray[2].ToString());
+ comps.Add(comp);
+ result.Add("ПК:"+ comp.GetNetNameStr() + " Логин:" + comp.GetName() + "\r\n" + comp.GetDescription() + "\r\nLastLogin:" + myData[i].ItemArray[3].ToString());
+ ++y;
+ }
+ enable = true;
+ }
+ catch
+ {
+ y = 1;
+ enable = false;
+ result.Clear();
+ result.Add("Ошибка выполнения запроса");
+ }
+
+ }
+ if (y == 0)
+ {
+ enable = false;
+ result.Add("Ничего не найдено");
+ }
+ TimerDisconnect.Change(90000, 90000);
+ return result;
+ }
+ public void Activate()
+ {
+ if (Connection == null)
+ {
+
+ string stringConnect = "server=" + SGlobalSetting.settingSCCM.server + ";database=" + SGlobalSetting.settingSCCM.dataBase + ";" + AuthType.AuthString();
+ try
+ {
+ Connection = new SqlConnection(stringConnect);
+ Connection.Open();
+ Console.WriteLine("Подключились");
+ error = "Подключенно";
+ TimerCallback TimerDelegate = new TimerCallback(Deactivate);
+ TimerDisconnect = new Timer(TimerDelegate, null, 90000,90000);
+ }
+ catch
+ {
+ Console.WriteLine("Повторное бы подключение");
+ error = "Не удалось подключиться к базе";
+ }
+ }
+
+ }
+
+ public void Deactivate(object obj)
+ {
+ Connection.Close();
+ Connection = null;
+ TimerDisconnect.Dispose();
+ List result = new List();
+ result.Add("Введите запрос");
+ Update(result, false, 14);
+ }
+
+ public IComp Result(int index)
+ {
+ return comps[index];
+ }
+ public string ResultString(int index)
+ {
+ switch (mode)
+ {
+ case Mode.Login:
+ return comps[index].GetName();
+ case Mode.Username:
+ return comps[index].GetDescription();
+ case Mode.PCname:
+ return comps[index].GetNetNameStr();
+ }
+ return "";
+ }
+ public string CheckConnect(string server, string basa)
+ {
+ if (Connection == null)
+ {
+ string stringConnect = "server=" + server + ";database=" + basa + ";" + AuthType.AuthString();
+ try
+ {
+ Connection = new SqlConnection(stringConnect);
+ Connection.Open();
+ error = "Подключенно";
+ }
+ catch
+ {
+ error = "Не удалось подключиться к серверу";
+ }
+ }
+ if (Connection.State == ConnectionState.Open && Connection != null)
+ {
+ try
+ {
+ string sql = "SELECT TOP (1) * FROM dbo._RES_COLL_SMS00001";
+ SqlCommand sqlCom = new SqlCommand(sql, Connection);
+ sqlCom.ExecuteNonQuery();
+ SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlCom);
+ DataTable dt = new DataTable();
+ dataAdapter.Fill(dt);
+
+ DataRow[] myData = dt.Select();
+ if(myData.Length > 0)
+ {
+ error = "Соединие успешно установленно";
+ }
+
+ }
+ catch
+ {
+ error = "Ошибка выполнения запроса \nКакая то не правильная базаю";
+ }
+
+ }
+ return error;
+ }
+
+ }
+}
diff --git a/Remontor/Seacher/SeahcLocal.cs b/Remontor/Seacher/SeahcLocal.cs
new file mode 100644
index 0000000..574169c
--- /dev/null
+++ b/Remontor/Seacher/SeahcLocal.cs
@@ -0,0 +1,86 @@
+using Remontor.History;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Remontor.Seacher
+{
+ internal class SeahcLocal : ISeaherMetod
+ {
+ internal delegate void ResultUpdate(List Item, bool eneble, int itemHeight);
+ private ResultUpdate Update;
+ private List comps = new List();
+ private bool enable;
+ public void Change(ResultUpdate sender, string seach)
+ {
+ Update = sender;
+ if (seach.Length > 2)
+ {
+
+ Update(ResultSeach(seach), enable,14);
+ }
+ else
+ {
+ List result = new List();
+ result.Add("Введите запрос");
+ Update(result,false, 14);
+ }
+
+ }
+ public List ResultSeach(string seach)
+ {
+ int i = 0;
+ comps.Clear();
+ List result = new List();
+ foreach(HistoryItem item in HistoryList.Hitem)
+ {
+ if (item.NameNode().ToUpper().Contains(seach.ToUpper()))
+ {
+ int y = 0;
+ foreach(string itemOk in result)
+ {
+ if (itemOk.ToUpper() == item.NameNode().ToUpper()) ++y;
+ }
+ if(y == 0)
+ {
+ result.Add(item.NameNode());
+ comps.Add(item.GetComp());
+ ++i;
+ enable = true;
+ if (i>6) return result;
+ }
+
+ }
+
+ }
+ if (i == 0)
+ {
+ enable = false;
+ result.Add("Ничего не найдено");
+ }
+ return result;
+ }
+ public IComp Result(int index)
+ {
+ return comps[index];
+ }
+
+ public string ResultString(int index)
+ {
+ string buf;
+ if (comps[index].GetName() == null)
+ {
+ buf = comps[index].GetNetNameStr();
+ }
+ else
+ {
+ buf = comps[index].GetName();
+ if (comps[index].GetNetNameStr() != null) buf += "(" + comps[index].GetNetNameStr() + ")";
+
+ }
+ return buf;
+ }
+ }
+}
diff --git a/Remontor/SessionItemControl.Designer.cs b/Remontor/SessionItemControl.Designer.cs
index 315e9be..69f9a0f 100644
--- a/Remontor/SessionItemControl.Designer.cs
+++ b/Remontor/SessionItemControl.Designer.cs
@@ -64,7 +64,7 @@
//
// pictureBox1
//
- this.pictureBox1.Image = global::Remontor.Properties.Resources.apple_touch_icon;
+ this.pictureBox1.Image = global::Remontor.Properties.Resources.Person;
this.pictureBox1.Location = new System.Drawing.Point(3, 3);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(48, 48);
diff --git a/Remontor/Setting/SGlobalSetting.cs b/Remontor/Setting/SGlobalSetting.cs
new file mode 100644
index 0000000..abe7896
--- /dev/null
+++ b/Remontor/Setting/SGlobalSetting.cs
@@ -0,0 +1,276 @@
+using Remontor.History;
+using Remontor.Seacher;
+using Remontor.Words;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.IO.Compression;
+using System.Linq;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Security.Policy;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using static System.Net.WebRequestMethods;
+
+namespace Remontor.Setting
+{
+ [Serializable]
+ internal static class SGlobalSetting
+ {
+
+ public static SettingWords settingWords = new SettingWords();
+ public static SettingExpand settingExpand = new SettingExpand();
+ public static SettingSCCM settingSCCM = new SettingSCCM();
+ public static SettingReboot settingReboot = new SettingReboot();
+
+ //public static void LoadSetting()
+ // {
+
+
+ // }
+
+
+
+ public static void LoadSetting()
+ {
+ SSetting setting;
+ object output = Load("res.dat");
+ if (!(output is SSetting))
+ {
+ setting = new SSetting();
+ }
+ else
+ {
+ setting = (SSetting)output;
+ }
+
+ if (setting.settingWords != null) settingWords = setting.settingWords;
+ if (setting.settingExpand != null) settingExpand = setting.settingExpand;
+ if (setting.settingSCCM != null) settingSCCM = setting.settingSCCM;
+ if (setting.settingReboot != null) settingReboot = setting.settingReboot;
+ if (setting.historyItems != null) HistoryList.Hitem = setting.historyItems;
+ SSeaher.LoadSetting();
+ // return output;
+ }
+
+ public static bool SaveSettig()
+ {
+ SSetting sSetting = new SSetting();
+ sSetting.settingWords = settingWords;
+ sSetting.historyItems = HistoryList.Hitem;
+ sSetting.settingExpand = settingExpand;
+ sSetting.settingSCCM = settingSCCM;
+ sSetting.settingReboot = settingReboot;
+ if (Save("res.dat", sSetting))
+ {
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+
+ }
+
+ public static WordsCategory LoadWords()
+ {
+ WordsCategory output = (WordsCategory)Load(settingWords.PathBase);
+ if (output == null)
+ {
+ output = new WordsCategory("Main");
+ }
+ return output;
+ }
+ private static object Load(string path)
+ {
+ object obj = null;
+ GZipStream compressStream = null;
+ BinaryFormatter binaryFormatter = new BinaryFormatter();
+ FileStream file = null;
+ try
+ {
+ file = new FileStream(path, FileMode.Open);
+ compressStream = new GZipStream(file, CompressionMode.Decompress);
+ obj = binaryFormatter.Deserialize(compressStream);
+ compressStream.Close();
+ compressStream.Dispose();
+ file.Close();
+ file.Dispose();
+ return obj;
+ }
+ catch
+ {
+ if (compressStream != null)
+ {
+ compressStream.Close();
+ compressStream.Dispose();
+ }
+ if (file != null)
+ {
+ file.Close();
+ file.Dispose();
+ }
+ return null;
+ }
+
+ }
+
+ private static object Clone(object input)
+ {
+ object output;
+ BinaryFormatter binaryFormatter = new BinaryFormatter();
+ MemoryStream Memory = new MemoryStream();
+ binaryFormatter.Serialize(Memory, input);
+ Memory.Position = 0;
+ if (input is WordsCategory) settingWords.HashSumm(Memory);
+ Memory.Position = 0;
+ output = binaryFormatter.Deserialize(Memory);
+ Memory.Dispose();
+ Memory.Close();
+
+ return output;
+ }
+
+ public static WordsCategory Clone(WordsCategory input)
+ {
+ return (WordsCategory)Clone((object)input);
+ }
+
+ public static IComp Clone(IComp input)
+ {
+ return (IComp)Clone((object)input);
+ }
+
+ public static bool SaveClose(WordsCategory output, DialogResult ok = DialogResult.No)
+ {
+ GZipStream compressStream = null;
+ BinaryFormatter binaryFormatter = new BinaryFormatter();
+ MemoryStream Memory = new MemoryStream();
+ binaryFormatter.Serialize(Memory, output);
+ FileStream file = null;
+ Memory.Position = 0;
+ if (settingWords.HashCheck(Memory) )
+ {
+ if (ok == DialogResult.OK)
+ {
+ Memory.Close();
+ Memory.Dispose();
+
+ bool save = Save(output);
+ if (save) {
+ WordsList.MainCategory = output;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ else
+ {
+ DialogResult result = MessageBox.Show("Сохранить внесенные изменения?", "Сохранение измененний", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Warning);
+ switch (result)
+ {
+ case DialogResult.Yes:
+
+ try
+ {
+ file = new FileStream(settingWords.PathBase, FileMode.Create);
+ compressStream = new GZipStream(file, CompressionMode.Compress);
+ Memory.Position = 0;
+ Memory.CopyTo(compressStream);
+ Memory.Close();
+ Memory.Dispose();
+ compressStream.Close();
+ compressStream.Dispose();
+ file.Close();
+ file.Dispose();
+ }
+ catch
+ {
+ Memory.Close();
+ Memory.Dispose();
+ compressStream.Close();
+ compressStream.Dispose();
+ file.Close();
+ file.Dispose();
+
+
+ bool save = SaveCheck(settingWords.PathBase, output); ;
+ if (save)
+ {
+ WordsList.MainCategory = output;
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ WordsList.MainCategory = output;
+ return true;
+ case DialogResult.No:
+ return true;
+ case DialogResult.Cancel:
+ return false;
+ }
+ }
+
+ }
+ return true;
+ }
+ public static bool Save(WordsCategory output)
+ {
+ return Save(settingWords.PathBase, output);
+ }
+ public static bool Save(string path, object output)
+ {
+ GZipStream compressStream = null;
+ BinaryFormatter binaryFormatter = new BinaryFormatter();
+ FileStream file = null;
+ try
+ {
+ file = new FileStream(path, FileMode.Create);
+ compressStream = new GZipStream(file, CompressionMode.Compress);
+ binaryFormatter.Serialize(compressStream, output);
+ compressStream.Close();
+ compressStream.Dispose();
+ file.Close();
+ file.Dispose();
+ return true;
+ }
+ catch
+ {
+ if (compressStream != null)
+ {
+ compressStream.Close();
+ compressStream.Dispose();
+ }
+ if (file != null)
+ {
+ file.Close();
+ file.Dispose();
+ }
+
+ return SaveCheck(path, output);
+
+ }
+ }
+ public static bool SaveCheck(string path, object output)
+ {
+ DialogResult result1 = MessageBox.Show("Файл занят другой программой.\nПовторить еще раз?", "Ошибка сохранения", MessageBoxButtons.AbortRetryIgnore, MessageBoxIcon.Error);
+ switch (result1)
+ {
+ case (DialogResult.Retry):
+ return Save(path, output);
+ case (DialogResult.Abort):
+ return true;
+ }
+ return false;
+ }
+
+
+ }
+}
diff --git a/Remontor/Setting/SSetting.cs b/Remontor/Setting/SSetting.cs
new file mode 100644
index 0000000..f48f587
--- /dev/null
+++ b/Remontor/Setting/SSetting.cs
@@ -0,0 +1,19 @@
+using Remontor.History;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Remontor.Setting
+{
+ [Serializable]
+ internal struct SSetting
+ {
+ public SettingWords settingWords;
+ public List historyItems;
+ public SettingExpand settingExpand;
+ public SettingSCCM settingSCCM;
+ public SettingReboot settingReboot;
+ }
+}
diff --git a/Remontor/Setting/SettingExpand.cs b/Remontor/Setting/SettingExpand.cs
new file mode 100644
index 0000000..b6e6a4e
--- /dev/null
+++ b/Remontor/Setting/SettingExpand.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Remontor.Setting
+{
+ [Serializable]
+ internal class SettingExpand
+ {
+ private List nodePathes;
+ public SettingExpand()
+ {
+ nodePathes = new List();
+ }
+
+ public void ExpendAll(TreeNodeCollection nodes)
+ {
+
+ foreach (string path in nodePathes)
+ {
+ string[] folder = path.Split('/');
+ Expand(nodes, folder, 0);
+ }
+ nodePathes.Clear();
+ }
+
+ private void Expand(TreeNodeCollection nodes, string[] folder, int number)
+ {
+
+ int i = nodes.IndexOfKey(folder[number]);
+ if (i == -1) return;
+ if (folder.Count() == number+1)
+ {
+ nodes[i].Expand();
+ }
+ else
+ {
+ Expand(nodes[i].Nodes, folder, ++number);
+ }
+
+ }
+
+ public void SaveExpand(TreeNodeCollection nodes, string path = "")
+ {
+
+ foreach(TreeNode node in nodes)
+ {
+ if(node.Nodes.Count > 0)
+ {
+ if (node.IsExpanded)
+ {
+ nodePathes.Add(path + node.Name);
+ }
+ SaveExpand(node.Nodes, path + node.Name + "/" );
+ }
+ }
+ }
+
+ }
+}
diff --git a/Remontor/Setting/SettingReboot.cs b/Remontor/Setting/SettingReboot.cs
new file mode 100644
index 0000000..5982552
--- /dev/null
+++ b/Remontor/Setting/SettingReboot.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Remontor.Setting
+{
+ [Serializable]
+ internal class SettingReboot
+ {
+ public int checkConnect;
+ public int timeOutReboot;
+ public int timeCheckBeforReboot;
+ public int sizeHistoryItem;
+ public SettingReboot()
+ {
+ this.checkConnect = 5;
+ this.timeOutReboot = 5;
+ this.timeCheckBeforReboot = 50;
+ this.sizeHistoryItem = 200;
+ }
+ }
+}
diff --git a/Remontor/Setting/SettingRebootControl.Designer.cs b/Remontor/Setting/SettingRebootControl.Designer.cs
new file mode 100644
index 0000000..58c35f7
--- /dev/null
+++ b/Remontor/Setting/SettingRebootControl.Designer.cs
@@ -0,0 +1,185 @@
+namespace Remontor.Setting
+{
+ partial class SettingRebootControl
+ {
+ ///
+ /// Обязательная переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором компонентов
+
+ ///
+ /// Требуемый метод для поддержки конструктора — не изменяйте
+ /// содержимое этого метода с помощью редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ this.groupBox3 = new System.Windows.Forms.GroupBox();
+ this.label15 = new System.Windows.Forms.Label();
+ this.label14 = new System.Windows.Forms.Label();
+ this.label13 = new System.Windows.Forms.Label();
+ this.label12 = new System.Windows.Forms.Label();
+ this.nb_checkConnect = new System.Windows.Forms.NumericUpDown();
+ this.nb_timeOutReboot = new System.Windows.Forms.NumericUpDown();
+ this.nb_timeCheckBeforReboot = new System.Windows.Forms.NumericUpDown();
+ this.nb_sizeHistoryItem = new System.Windows.Forms.NumericUpDown();
+ this.groupBox3.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.nb_checkConnect)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.nb_timeOutReboot)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.nb_timeCheckBeforReboot)).BeginInit();
+ ((System.ComponentModel.ISupportInitialize)(this.nb_sizeHistoryItem)).BeginInit();
+ this.SuspendLayout();
+ //
+ // groupBox3
+ //
+ this.groupBox3.Controls.Add(this.nb_sizeHistoryItem);
+ this.groupBox3.Controls.Add(this.nb_timeCheckBeforReboot);
+ this.groupBox3.Controls.Add(this.nb_timeOutReboot);
+ this.groupBox3.Controls.Add(this.nb_checkConnect);
+ this.groupBox3.Controls.Add(this.label15);
+ this.groupBox3.Controls.Add(this.label14);
+ this.groupBox3.Controls.Add(this.label13);
+ this.groupBox3.Controls.Add(this.label12);
+ this.groupBox3.Location = new System.Drawing.Point(3, 3);
+ this.groupBox3.Name = "groupBox3";
+ this.groupBox3.Size = new System.Drawing.Size(386, 124);
+ this.groupBox3.TabIndex = 4;
+ this.groupBox3.TabStop = false;
+ this.groupBox3.Text = "Параметры перезагрузки";
+ //
+ // label15
+ //
+ this.label15.AutoSize = true;
+ this.label15.Location = new System.Drawing.Point(7, 99);
+ this.label15.Name = "label15";
+ this.label15.Size = new System.Drawing.Size(130, 13);
+ this.label15.TabIndex = 11;
+ this.label15.Text = "Кол-во записей истории";
+ //
+ // label14
+ //
+ this.label14.AutoSize = true;
+ this.label14.Location = new System.Drawing.Point(7, 73);
+ this.label14.Name = "label14";
+ this.label14.Size = new System.Drawing.Size(196, 13);
+ this.label14.TabIndex = 9;
+ this.label14.Text = "Время контроля после перезагрузки";
+ //
+ // label13
+ //
+ this.label13.AutoSize = true;
+ this.label13.Location = new System.Drawing.Point(7, 47);
+ this.label13.Name = "label13";
+ this.label13.Size = new System.Drawing.Size(166, 13);
+ this.label13.TabIndex = 7;
+ this.label13.Text = "Время ожидание перезагрузки";
+ //
+ // label12
+ //
+ this.label12.AutoSize = true;
+ this.label12.Location = new System.Drawing.Point(7, 21);
+ this.label12.Name = "label12";
+ this.label12.Size = new System.Drawing.Size(171, 13);
+ this.label12.TabIndex = 5;
+ this.label12.Text = "Кол-во попыток проверки связи";
+ //
+ // nb_checkConnect
+ //
+ this.nb_checkConnect.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.nb_checkConnect.Location = new System.Drawing.Point(184, 18);
+ this.nb_checkConnect.Maximum = new decimal(new int[] {
+ 1000000,
+ 0,
+ 0,
+ 0});
+ this.nb_checkConnect.Name = "nb_checkConnect";
+ this.nb_checkConnect.Size = new System.Drawing.Size(182, 20);
+ this.nb_checkConnect.TabIndex = 13;
+ //
+ // nb_timeOutReboot
+ //
+ this.nb_timeOutReboot.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.nb_timeOutReboot.Location = new System.Drawing.Point(184, 44);
+ this.nb_timeOutReboot.Maximum = new decimal(new int[] {
+ 100000,
+ 0,
+ 0,
+ 0});
+ this.nb_timeOutReboot.Name = "nb_timeOutReboot";
+ this.nb_timeOutReboot.Size = new System.Drawing.Size(182, 20);
+ this.nb_timeOutReboot.TabIndex = 14;
+ //
+ // nb_timeCheckBeforReboot
+ //
+ this.nb_timeCheckBeforReboot.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.nb_timeCheckBeforReboot.Location = new System.Drawing.Point(208, 70);
+ this.nb_timeCheckBeforReboot.Maximum = new decimal(new int[] {
+ 100000,
+ 0,
+ 0,
+ 0});
+ this.nb_timeCheckBeforReboot.Name = "nb_timeCheckBeforReboot";
+ this.nb_timeCheckBeforReboot.Size = new System.Drawing.Size(158, 20);
+ this.nb_timeCheckBeforReboot.TabIndex = 15;
+ //
+ // nb_sizeHistoryItem
+ //
+ this.nb_sizeHistoryItem.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.nb_sizeHistoryItem.Location = new System.Drawing.Point(184, 96);
+ this.nb_sizeHistoryItem.Maximum = new decimal(new int[] {
+ 10000,
+ 0,
+ 0,
+ 0});
+ this.nb_sizeHistoryItem.Name = "nb_sizeHistoryItem";
+ this.nb_sizeHistoryItem.Size = new System.Drawing.Size(182, 20);
+ this.nb_sizeHistoryItem.TabIndex = 16;
+ //
+ // SettingRebootControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.groupBox3);
+ this.Name = "SettingRebootControl";
+ this.Size = new System.Drawing.Size(391, 130);
+ this.groupBox3.ResumeLayout(false);
+ this.groupBox3.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.nb_checkConnect)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.nb_timeOutReboot)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.nb_timeCheckBeforReboot)).EndInit();
+ ((System.ComponentModel.ISupportInitialize)(this.nb_sizeHistoryItem)).EndInit();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox3;
+ private System.Windows.Forms.Label label15;
+ private System.Windows.Forms.Label label14;
+ private System.Windows.Forms.Label label13;
+ private System.Windows.Forms.Label label12;
+ private System.Windows.Forms.NumericUpDown nb_timeOutReboot;
+ private System.Windows.Forms.NumericUpDown nb_checkConnect;
+ private System.Windows.Forms.NumericUpDown nb_sizeHistoryItem;
+ private System.Windows.Forms.NumericUpDown nb_timeCheckBeforReboot;
+ }
+}
diff --git a/Remontor/Setting/SettingRebootControl.cs b/Remontor/Setting/SettingRebootControl.cs
new file mode 100644
index 0000000..80d5df3
--- /dev/null
+++ b/Remontor/Setting/SettingRebootControl.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Runtime;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Remontor.Setting
+{
+ public partial class SettingRebootControl : UserControl
+ {
+ public SettingRebootControl()
+ {
+ InitializeComponent();
+ UpdateSetting();
+
+ }
+ public void UpdateSetting()
+ {
+ if (SGlobalSetting.settingReboot != null)
+ {
+ nb_checkConnect.Value = SGlobalSetting.settingReboot.checkConnect;
+ nb_timeOutReboot.Value = SGlobalSetting.settingReboot.timeOutReboot;
+ nb_timeCheckBeforReboot.Value = SGlobalSetting.settingReboot.timeCheckBeforReboot;
+ nb_sizeHistoryItem.Value = SGlobalSetting.settingReboot.sizeHistoryItem;
+ }
+ }
+
+
+ public void Save()
+ {
+ SGlobalSetting.settingReboot.checkConnect = (int)nb_checkConnect.Value;
+ SGlobalSetting.settingReboot.timeOutReboot = (int)nb_timeOutReboot.Value;
+ SGlobalSetting.settingReboot.timeCheckBeforReboot = (int)nb_timeCheckBeforReboot.Value;
+ SGlobalSetting.settingReboot.sizeHistoryItem = (int)nb_sizeHistoryItem.Value;
+
+ }
+
+ public bool edited()
+ {
+ return (SGlobalSetting.settingReboot.checkConnect != (int)nb_checkConnect.Value ||
+ SGlobalSetting.settingReboot.timeOutReboot != (int)nb_timeOutReboot.Value ||
+ SGlobalSetting.settingReboot.timeCheckBeforReboot != (int)nb_timeCheckBeforReboot.Value ||
+ SGlobalSetting.settingReboot.sizeHistoryItem != (int)nb_sizeHistoryItem.Value);
+
+ }
+
+
+ }
+}
diff --git a/Remontor/Setting/SettingRebootControl.resx b/Remontor/Setting/SettingRebootControl.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Remontor/Setting/SettingRebootControl.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
\ No newline at end of file
diff --git a/Remontor/Setting/SettingSCCM.cs b/Remontor/Setting/SettingSCCM.cs
new file mode 100644
index 0000000..0d845a7
--- /dev/null
+++ b/Remontor/Setting/SettingSCCM.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Remontor.Setting
+{
+ [Serializable]
+ internal class SettingSCCM
+ {
+ public string server;
+ public string dataBase;
+ public string username;
+ public string password;
+ public bool on;
+ public bool windowsAuth;
+
+ public SettingSCCM()
+ {
+ server = string.Empty;
+ dataBase = string.Empty;
+ username = string.Empty;
+ password = string.Empty;
+ on = false;
+ windowsAuth = false;
+ }
+
+ }
+}
diff --git a/Remontor/Setting/SettingSCCMControl.Designer.cs b/Remontor/Setting/SettingSCCMControl.Designer.cs
new file mode 100644
index 0000000..786e97a
--- /dev/null
+++ b/Remontor/Setting/SettingSCCMControl.Designer.cs
@@ -0,0 +1,191 @@
+namespace Remontor.Setting
+{
+ partial class SettingSCCMControl
+ {
+ ///
+ /// Обязательная переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором компонентов
+
+ ///
+ /// Требуемый метод для поддержки конструктора — не изменяйте
+ /// содержимое этого метода с помощью редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ this.groupBox2 = new System.Windows.Forms.GroupBox();
+ this.bt_checkConnect = new System.Windows.Forms.Button();
+ this.label10 = new System.Windows.Forms.Label();
+ this.ib_password = new System.Windows.Forms.TextBox();
+ this.label11 = new System.Windows.Forms.Label();
+ this.ib_username = new System.Windows.Forms.TextBox();
+ this.cb_windowsAuth = new System.Windows.Forms.CheckBox();
+ this.label9 = new System.Windows.Forms.Label();
+ this.ib_dataBase = new System.Windows.Forms.TextBox();
+ this.label8 = new System.Windows.Forms.Label();
+ this.ib_server = new System.Windows.Forms.TextBox();
+ this.cb_on = new System.Windows.Forms.CheckBox();
+ this.groupBox2.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox2
+ //
+ this.groupBox2.Controls.Add(this.bt_checkConnect);
+ this.groupBox2.Controls.Add(this.label10);
+ this.groupBox2.Controls.Add(this.ib_password);
+ this.groupBox2.Controls.Add(this.label11);
+ this.groupBox2.Controls.Add(this.ib_username);
+ this.groupBox2.Controls.Add(this.cb_windowsAuth);
+ this.groupBox2.Controls.Add(this.label9);
+ this.groupBox2.Controls.Add(this.ib_dataBase);
+ this.groupBox2.Controls.Add(this.label8);
+ this.groupBox2.Controls.Add(this.ib_server);
+ this.groupBox2.Controls.Add(this.cb_on);
+ this.groupBox2.Location = new System.Drawing.Point(3, 3);
+ this.groupBox2.Name = "groupBox2";
+ this.groupBox2.Size = new System.Drawing.Size(386, 173);
+ this.groupBox2.TabIndex = 3;
+ this.groupBox2.TabStop = false;
+ this.groupBox2.Text = "Параметры поиска";
+ //
+ // bt_checkConnect
+ //
+ this.bt_checkConnect.Location = new System.Drawing.Point(263, 143);
+ this.bt_checkConnect.Name = "bt_checkConnect";
+ this.bt_checkConnect.Size = new System.Drawing.Size(112, 23);
+ this.bt_checkConnect.TabIndex = 11;
+ this.bt_checkConnect.Text = "Проверить связь";
+ this.bt_checkConnect.UseVisualStyleBackColor = true;
+ this.bt_checkConnect.Click += new System.EventHandler(this.bt_checkConnect_Click);
+ //
+ // label10
+ //
+ this.label10.AutoSize = true;
+ this.label10.Location = new System.Drawing.Point(193, 102);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(45, 13);
+ this.label10.TabIndex = 10;
+ this.label10.Text = "Пароль";
+ //
+ // ib_password
+ //
+ this.ib_password.Location = new System.Drawing.Point(193, 117);
+ this.ib_password.Name = "ib_password";
+ this.ib_password.PasswordChar = '•';
+ this.ib_password.Size = new System.Drawing.Size(182, 20);
+ this.ib_password.TabIndex = 9;
+ //
+ // label11
+ //
+ this.label11.AutoSize = true;
+ this.label11.Location = new System.Drawing.Point(6, 102);
+ this.label11.Name = "label11";
+ this.label11.Size = new System.Drawing.Size(38, 13);
+ this.label11.TabIndex = 8;
+ this.label11.Text = "Логин";
+ //
+ // ib_username
+ //
+ this.ib_username.Location = new System.Drawing.Point(6, 117);
+ this.ib_username.Name = "ib_username";
+ this.ib_username.Size = new System.Drawing.Size(181, 20);
+ this.ib_username.TabIndex = 7;
+ //
+ // cb_windowsAuth
+ //
+ this.cb_windowsAuth.AutoSize = true;
+ this.cb_windowsAuth.Location = new System.Drawing.Point(10, 82);
+ this.cb_windowsAuth.Name = "cb_windowsAuth";
+ this.cb_windowsAuth.Size = new System.Drawing.Size(157, 17);
+ this.cb_windowsAuth.TabIndex = 6;
+ this.cb_windowsAuth.Text = "Аутентификация Windows";
+ this.cb_windowsAuth.UseVisualStyleBackColor = true;
+ this.cb_windowsAuth.CheckedChanged += new System.EventHandler(this.cb_windowsAuth_CheckedChanged);
+ //
+ // label9
+ //
+ this.label9.AutoSize = true;
+ this.label9.Location = new System.Drawing.Point(193, 40);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(72, 13);
+ this.label9.TabIndex = 5;
+ this.label9.Text = "База данных";
+ //
+ // ib_dataBase
+ //
+ this.ib_dataBase.Location = new System.Drawing.Point(193, 55);
+ this.ib_dataBase.Name = "ib_dataBase";
+ this.ib_dataBase.Size = new System.Drawing.Size(182, 20);
+ this.ib_dataBase.TabIndex = 4;
+ //
+ // label8
+ //
+ this.label8.AutoSize = true;
+ this.label8.Location = new System.Drawing.Point(6, 40);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(113, 13);
+ this.label8.TabIndex = 3;
+ this.label8.Text = "Сервер базы данных";
+ //
+ // ib_server
+ //
+ this.ib_server.Location = new System.Drawing.Point(6, 55);
+ this.ib_server.Name = "ib_server";
+ this.ib_server.Size = new System.Drawing.Size(181, 20);
+ this.ib_server.TabIndex = 1;
+ //
+ // cb_on
+ //
+ this.cb_on.AutoSize = true;
+ this.cb_on.Location = new System.Drawing.Point(10, 20);
+ this.cb_on.Name = "cb_on";
+ this.cb_on.Size = new System.Drawing.Size(215, 17);
+ this.cb_on.TabIndex = 0;
+ this.cb_on.Text = "Связь с SCCM (помощь в поиске ПК)";
+ this.cb_on.UseVisualStyleBackColor = true;
+ this.cb_on.CheckedChanged += new System.EventHandler(this.cb_on_CheckedChanged);
+ //
+ // SettingSCCMControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.groupBox2);
+ this.Name = "SettingSCCMControl";
+ this.Size = new System.Drawing.Size(391, 178);
+ this.groupBox2.ResumeLayout(false);
+ this.groupBox2.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox2;
+ private System.Windows.Forms.Button bt_checkConnect;
+ private System.Windows.Forms.Label label10;
+ private System.Windows.Forms.TextBox ib_password;
+ private System.Windows.Forms.Label label11;
+ private System.Windows.Forms.TextBox ib_username;
+ private System.Windows.Forms.CheckBox cb_windowsAuth;
+ private System.Windows.Forms.Label label9;
+ private System.Windows.Forms.TextBox ib_dataBase;
+ private System.Windows.Forms.Label label8;
+ private System.Windows.Forms.TextBox ib_server;
+ private System.Windows.Forms.CheckBox cb_on;
+ }
+}
diff --git a/Remontor/Setting/SettingSCCMControl.cs b/Remontor/Setting/SettingSCCMControl.cs
new file mode 100644
index 0000000..1560d16
--- /dev/null
+++ b/Remontor/Setting/SettingSCCMControl.cs
@@ -0,0 +1,89 @@
+using Remontor.Seacher;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Remontor.Setting
+{
+ public partial class SettingSCCMControl : UserControl
+ {
+ public SettingSCCMControl()
+ {
+ InitializeComponent();
+ UpdateSetting();
+ }
+
+ public void UpdateSetting()
+ {
+ if (SGlobalSetting.settingSCCM != null)
+ {
+ ib_server.Text = SGlobalSetting.settingSCCM.server;
+ ib_dataBase.Text = SGlobalSetting.settingSCCM.dataBase;
+ ib_username.Text = SGlobalSetting.settingSCCM.username;
+ ib_password.Text = SGlobalSetting.settingSCCM.password;
+ cb_on.Checked = SGlobalSetting.settingSCCM.on;
+
+ cb_windowsAuth.Checked = SGlobalSetting.settingSCCM.windowsAuth;
+ SearchControl(cb_on.Checked);
+ }
+ }
+ private void AuthControl(bool enable)
+ {
+ ib_username.Enabled = enable;
+ ib_password.Enabled = enable;
+ }
+ private void SearchControl(bool enable)
+ {
+ ib_server.Enabled = enable;
+ ib_dataBase.Enabled = enable;
+ cb_windowsAuth.Enabled = enable;
+ bt_checkConnect.Enabled = enable;
+ AuthControl(!cb_windowsAuth.Checked && enable);
+ }
+
+ private void cb_on_CheckedChanged(object sender, EventArgs e)
+ {
+ SearchControl(cb_on.Checked);
+ }
+
+ private void cb_windowsAuth_CheckedChanged(object sender, EventArgs e)
+ {
+ AuthControl(!cb_windowsAuth.Checked);
+ }
+
+ public bool edited()
+ {
+ return (SGlobalSetting.settingSCCM.server != ib_server.Text ||
+ SGlobalSetting.settingSCCM.dataBase != ib_dataBase.Text ||
+ SGlobalSetting.settingSCCM.username != ib_username.Text ||
+ SGlobalSetting.settingSCCM.password != ib_password.Text ||
+ SGlobalSetting.settingSCCM.on != cb_on.Checked ||
+ SGlobalSetting.settingSCCM.windowsAuth != cb_windowsAuth.Checked);
+
+ }
+
+ public void Save()
+ {
+ SGlobalSetting.settingSCCM.server = ib_server.Text;
+ SGlobalSetting.settingSCCM.dataBase = ib_dataBase.Text;
+ SGlobalSetting.settingSCCM.username = ib_username.Text;
+ SGlobalSetting.settingSCCM.password = ib_password.Text;
+ SGlobalSetting.settingSCCM.on = cb_on.Checked;
+ SGlobalSetting.settingSCCM.windowsAuth = cb_windowsAuth.Checked;
+
+ }
+
+ private void bt_checkConnect_Click(object sender, EventArgs e)
+ {
+ SeachSCCM SeacherCheck = new(cb_windowsAuth.Checked, ib_username.Text, ib_password.Text);
+ MessageBox.Show(SeacherCheck.CheckConnect(ib_server.Text,ib_dataBase.Text));
+ }
+ }
+}
diff --git a/Remontor/Setting/SettingSCCMControl.resx b/Remontor/Setting/SettingSCCMControl.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Remontor/Setting/SettingSCCMControl.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
\ No newline at end of file
diff --git a/Remontor/Setting/SettingWords.cs b/Remontor/Setting/SettingWords.cs
new file mode 100644
index 0000000..c1e4549
--- /dev/null
+++ b/Remontor/Setting/SettingWords.cs
@@ -0,0 +1,47 @@
+using Remontor.Words;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Security.Cryptography;
+using System.Security.Policy;
+using System.Text;
+using System.Threading.Tasks;
+using static System.Net.WebRequestMethods;
+
+namespace Remontor.Setting
+{
+ [Serializable]
+ internal class SettingWords
+ {
+ public string PathBase { get; set; }
+ [NonSerialized]
+ private MD5 Hash = MD5.Create();
+ [NonSerialized]
+ private byte[] hash;
+ public SettingWords()
+ {
+ PathBase = "base.wb";
+ }
+
+ public SettingWords(string pathBase)
+ {
+ PathBase = pathBase;
+ }
+
+ public void HashSumm(MemoryStream memory)
+ {
+ if(Hash == null) Hash = MD5.Create();
+ hash = Hash.ComputeHash(memory);
+ }
+
+ public bool HashCheck(MemoryStream memory)
+ {
+ byte[] hashSave = Hash.ComputeHash(memory);
+ return !hash.SequenceEqual(hashSave);
+ }
+
+
+ }
+}
\ No newline at end of file
diff --git a/Remontor/Setting/SettingWordsControl.Designer.cs b/Remontor/Setting/SettingWordsControl.Designer.cs
new file mode 100644
index 0000000..d5ed989
--- /dev/null
+++ b/Remontor/Setting/SettingWordsControl.Designer.cs
@@ -0,0 +1,119 @@
+namespace Remontor.Setting
+{
+ partial class SettingWordsControl
+ {
+ ///
+ /// Обязательная переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором компонентов
+
+ ///
+ /// Требуемый метод для поддержки конструктора — не изменяйте
+ /// содержимое этого метода с помощью редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.bt_path_open = new System.Windows.Forms.Button();
+ this.path = new System.Windows.Forms.TextBox();
+ this.label7 = new System.Windows.Forms.Label();
+ this.bt_wordsBilder = new System.Windows.Forms.Button();
+ this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.bt_path_open);
+ this.groupBox1.Controls.Add(this.path);
+ this.groupBox1.Controls.Add(this.label7);
+ this.groupBox1.Controls.Add(this.bt_wordsBilder);
+ this.groupBox1.Location = new System.Drawing.Point(3, 3);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(386, 98);
+ this.groupBox1.TabIndex = 2;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Параметры справочника";
+ //
+ // bt_path_open
+ //
+ this.bt_path_open.Location = new System.Drawing.Point(348, 36);
+ this.bt_path_open.Name = "bt_path_open";
+ this.bt_path_open.Size = new System.Drawing.Size(27, 23);
+ this.bt_path_open.TabIndex = 3;
+ this.bt_path_open.Text = "...";
+ this.bt_path_open.UseVisualStyleBackColor = true;
+ this.bt_path_open.Click += new System.EventHandler(this.bt_path_open_Click);
+ //
+ // path
+ //
+ this.path.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.path.Location = new System.Drawing.Point(10, 37);
+ this.path.Name = "path";
+ this.path.Size = new System.Drawing.Size(339, 20);
+ this.path.TabIndex = 2;
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.Location = new System.Drawing.Point(7, 20);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(105, 13);
+ this.label7.TabIndex = 1;
+ this.label7.Text = "Файл базы данных";
+ //
+ // bt_wordsBilder
+ //
+ this.bt_wordsBilder.Location = new System.Drawing.Point(220, 65);
+ this.bt_wordsBilder.Name = "bt_wordsBilder";
+ this.bt_wordsBilder.Size = new System.Drawing.Size(155, 23);
+ this.bt_wordsBilder.TabIndex = 0;
+ this.bt_wordsBilder.Text = "Редактор справочника";
+ this.bt_wordsBilder.UseVisualStyleBackColor = true;
+ this.bt_wordsBilder.Click += new System.EventHandler(this.bt_wordsBilder_Click);
+ //
+ // openFileDialog1
+ //
+ this.openFileDialog1.CheckFileExists = false;
+ this.openFileDialog1.DefaultExt = "*.wb";
+ this.openFileDialog1.Filter = "База справочника|*.wb";
+ //
+ // SettingWordsControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.groupBox1);
+ this.Name = "SettingWordsControl";
+ this.Size = new System.Drawing.Size(391, 103);
+ this.groupBox1.ResumeLayout(false);
+ this.groupBox1.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Button bt_path_open;
+ private System.Windows.Forms.TextBox path;
+ private System.Windows.Forms.Label label7;
+ private System.Windows.Forms.Button bt_wordsBilder;
+ private System.Windows.Forms.OpenFileDialog openFileDialog1;
+ }
+}
diff --git a/Remontor/Setting/SettingWordsControl.cs b/Remontor/Setting/SettingWordsControl.cs
new file mode 100644
index 0000000..6ca1d2e
--- /dev/null
+++ b/Remontor/Setting/SettingWordsControl.cs
@@ -0,0 +1,70 @@
+using Remontor.Words;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement;
+
+namespace Remontor.Setting
+{
+
+ partial class SettingWordsControl : UserControl
+ {
+
+
+ public delegate void DUpdateTree();
+ public DUpdateTree UpdateTree;
+ public SettingWordsControl()
+ {
+ InitializeComponent();
+ UpdateSetting();
+ }
+
+ public void UpdateSetting()
+ {
+ if (SGlobalSetting.settingWords != null)
+ {
+ path.Text = SGlobalSetting.settingWords.PathBase;
+ }
+ }
+
+ private void bt_wordsBilder_Click(object sender, EventArgs e)
+ {
+ BilderWords bilderWords = new BilderWords();
+ DialogResult result = bilderWords.ShowDialog();
+ if (result == DialogResult.OK)
+ {
+ UpdateTree();
+ }
+ }
+
+ private void bt_path_open_Click(object sender, EventArgs e)
+ {
+ openFileDialog1.ShowDialog();
+ if(openFileDialog1.FileName != null)
+ {
+ path.Text = openFileDialog1.FileName;
+ }
+ }
+
+ public bool edited()
+ {
+ return (SGlobalSetting.settingWords.PathBase != path.Text);
+
+ }
+
+ public void Save()
+ {
+ if(SGlobalSetting.settingWords.PathBase != path.Text)
+ {
+ SGlobalSetting.settingWords.PathBase = path.Text;
+ }
+
+ }
+ }
+}
diff --git a/Remontor/Setting/SettingWordsControl.resx b/Remontor/Setting/SettingWordsControl.resx
new file mode 100644
index 0000000..9bad2f5
--- /dev/null
+++ b/Remontor/Setting/SettingWordsControl.resx
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
\ No newline at end of file
diff --git a/Remontor/Words/BilderWords.Designer.cs b/Remontor/Words/BilderWords.Designer.cs
new file mode 100644
index 0000000..33fd1d0
--- /dev/null
+++ b/Remontor/Words/BilderWords.Designer.cs
@@ -0,0 +1,230 @@
+namespace Remontor.Words
+{
+ partial class BilderWords
+ {
+ ///
+ /// 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(BilderWords));
+ this.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.panel1 = new System.Windows.Forms.Panel();
+ this.bt_close = new System.Windows.Forms.Button();
+ this.bt_saveClose = new System.Windows.Forms.Button();
+ this.bt_save = new System.Windows.Forms.Button();
+ this.bt_deleteItem = new System.Windows.Forms.Button();
+ this.treeView1 = new System.Windows.Forms.TreeView();
+ this.imageList1 = new System.Windows.Forms.ImageList(this.components);
+ this.bt_newPC = new System.Windows.Forms.Button();
+ this.label1 = new System.Windows.Forms.Label();
+ this.bt_newCat = new System.Windows.Forms.Button();
+ this.label2 = new System.Windows.Forms.Label();
+ this.groupBox1.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox1
+ //
+ this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.groupBox1.Controls.Add(this.panel1);
+ this.groupBox1.Location = new System.Drawing.Point(225, 13);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(268, 502);
+ this.groupBox1.TabIndex = 3;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Параметры";
+ //
+ // panel1
+ //
+ this.panel1.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.panel1.Location = new System.Drawing.Point(3, 19);
+ this.panel1.Name = "panel1";
+ this.panel1.Size = new System.Drawing.Size(262, 480);
+ this.panel1.TabIndex = 0;
+ //
+ // bt_close
+ //
+ this.bt_close.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.bt_close.Location = new System.Drawing.Point(417, 521);
+ this.bt_close.Name = "bt_close";
+ this.bt_close.Size = new System.Drawing.Size(75, 23);
+ this.bt_close.TabIndex = 4;
+ this.bt_close.Text = "Закрыть";
+ this.bt_close.UseVisualStyleBackColor = true;
+ this.bt_close.Click += new System.EventHandler(this.bt_close_Click);
+ //
+ // bt_saveClose
+ //
+ this.bt_saveClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.bt_saveClose.Location = new System.Drawing.Point(280, 521);
+ this.bt_saveClose.Name = "bt_saveClose";
+ this.bt_saveClose.Size = new System.Drawing.Size(131, 23);
+ this.bt_saveClose.TabIndex = 5;
+ this.bt_saveClose.Text = "Сохранить и закрыть";
+ this.bt_saveClose.UseVisualStyleBackColor = true;
+ this.bt_saveClose.Click += new System.EventHandler(this.bt_saveClose_Click);
+ //
+ // bt_save
+ //
+ this.bt_save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.bt_save.Location = new System.Drawing.Point(199, 521);
+ this.bt_save.Name = "bt_save";
+ this.bt_save.Size = new System.Drawing.Size(75, 23);
+ this.bt_save.TabIndex = 6;
+ this.bt_save.Text = "Сохранить";
+ this.bt_save.UseVisualStyleBackColor = true;
+ this.bt_save.Click += new System.EventHandler(this.bt_save_Click);
+ //
+ // bt_deleteItem
+ //
+ this.bt_deleteItem.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+ this.bt_deleteItem.Location = new System.Drawing.Point(12, 521);
+ this.bt_deleteItem.Name = "bt_deleteItem";
+ this.bt_deleteItem.Size = new System.Drawing.Size(112, 23);
+ this.bt_deleteItem.TabIndex = 9;
+ this.bt_deleteItem.Text = "Удалить элемент";
+ this.bt_deleteItem.UseVisualStyleBackColor = true;
+ this.bt_deleteItem.Click += new System.EventHandler(this.bt_deleteItem_Click);
+ //
+ // treeView1
+ //
+ this.treeView1.AllowDrop = true;
+ this.treeView1.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.treeView1.HideSelection = false;
+ this.treeView1.ImageIndex = 0;
+ this.treeView1.ImageList = this.imageList1;
+ this.treeView1.ItemHeight = 16;
+ this.treeView1.Location = new System.Drawing.Point(9, 42);
+ this.treeView1.Name = "treeView1";
+ this.treeView1.SelectedImageIndex = 1;
+ this.treeView1.ShowLines = false;
+ this.treeView1.Size = new System.Drawing.Size(207, 470);
+ this.treeView1.TabIndex = 4;
+ this.treeView1.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeSelect);
+ this.treeView1.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeView1_AfterSelect);
+ this.treeView1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.treeView1_MouseClick);
+ //
+ // imageList1
+ //
+ this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
+ this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
+ this.imageList1.Images.SetKeyName(0, "11favicon.ico");
+ this.imageList1.Images.SetKeyName(1, "16favicon.ico");
+ this.imageList1.Images.SetKeyName(2, "12favicon.ico");
+ this.imageList1.Images.SetKeyName(3, "13favicon.ico");
+ this.imageList1.Images.SetKeyName(4, "14favicon.ico");
+ this.imageList1.Images.SetKeyName(5, "15favicon.ico");
+ this.imageList1.Images.SetKeyName(6, "17favicon.ico");
+ this.imageList1.Images.SetKeyName(7, "18favicon.ico");
+ this.imageList1.Images.SetKeyName(8, "40favicon.ico");
+ //
+ // bt_newPC
+ //
+ this.bt_newPC.Location = new System.Drawing.Point(76, 13);
+ this.bt_newPC.Name = "bt_newPC";
+ this.bt_newPC.Size = new System.Drawing.Size(34, 23);
+ this.bt_newPC.TabIndex = 10;
+ this.bt_newPC.Tag = "pc";
+ this.bt_newPC.Text = "+";
+ this.bt_newPC.UseVisualStyleBackColor = true;
+ this.bt_newPC.Click += new System.EventHandler(this.bt_new_Click);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(9, 18);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(65, 13);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "Компьютер";
+ //
+ // bt_newCat
+ //
+ this.bt_newCat.Location = new System.Drawing.Point(180, 13);
+ this.bt_newCat.Name = "bt_newCat";
+ this.bt_newCat.Size = new System.Drawing.Size(34, 23);
+ this.bt_newCat.TabIndex = 12;
+ this.bt_newCat.Tag = "cat";
+ this.bt_newCat.Text = "+";
+ this.bt_newCat.UseVisualStyleBackColor = true;
+ this.bt_newCat.Click += new System.EventHandler(this.bt_new_Click);
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(120, 18);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(60, 13);
+ this.label2.TabIndex = 11;
+ this.label2.Text = "Категория";
+ //
+ // BilderWords
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(504, 556);
+ this.Controls.Add(this.bt_newCat);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.bt_newPC);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.treeView1);
+ this.Controls.Add(this.bt_deleteItem);
+ this.Controls.Add(this.bt_save);
+ this.Controls.Add(this.bt_saveClose);
+ this.Controls.Add(this.bt_close);
+ this.Controls.Add(this.groupBox1);
+ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
+ this.MinimumSize = new System.Drawing.Size(520, 595);
+ this.Name = "BilderWords";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "Редактор справочника";
+ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.BilderWords_FormClosing);
+ this.Load += new System.EventHandler(this.BilderWords_Load);
+ this.groupBox1.ResumeLayout(false);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.Panel panel1;
+ private System.Windows.Forms.Button bt_close;
+ private System.Windows.Forms.Button bt_saveClose;
+ private System.Windows.Forms.Button bt_save;
+ private System.Windows.Forms.Button bt_deleteItem;
+ private System.Windows.Forms.TreeView treeView1;
+ public System.Windows.Forms.ImageList imageList1;
+ private System.Windows.Forms.Button bt_newPC;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Button bt_newCat;
+ private System.Windows.Forms.Label label2;
+ }
+}
\ No newline at end of file
diff --git a/Remontor/Words/BilderWords.cs b/Remontor/Words/BilderWords.cs
new file mode 100644
index 0000000..9a154db
--- /dev/null
+++ b/Remontor/Words/BilderWords.cs
@@ -0,0 +1,420 @@
+using Remontor.History;
+using Remontor.Setting;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Data.Odbc;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.Serialization.Formatters.Binary;
+using System.Security.Cryptography;
+using System.Security.Policy;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+
+namespace Remontor.Words
+{
+ internal partial class BilderWords : Form
+ {
+ private Control control;
+ private bool DragOn;
+ WordsCategory ChangeCategory;
+ //private byte[] hash;
+ //MD5 Hash = MD5.Create();
+ public BilderWords()
+ {
+ LoadForm();
+ treeView1.Nodes.AddRange(WordsList.ListNodes(ChangeCategory));
+
+
+ }
+
+ public BilderWords(IComp comp)
+ {
+ LoadForm();
+ CompId compId = (CompId)SGlobalSetting.Clone(comp);
+ WordsComp item = new WordsComp(compId);
+ WordsList.AddItem(item, ChangeCategory);
+ treeView1.Nodes.AddRange(WordsList.ListNodes(ChangeCategory));
+ treeView1.SelectedNode = treeView1.Nodes[treeView1.Nodes.Count-1];
+ }
+
+ private void LoadForm()
+ {
+ ChangeCategory = SGlobalSetting.Clone(WordsList.MainCategory);
+ InitializeComponent();
+
+ //cb_create.SelectedIndex = 1;
+ treeView1.ItemDrag += new ItemDragEventHandler(TreeView1_ItemDrag);
+ treeView1.DragEnter += new DragEventHandler(TreeView1_DragEnter);
+ treeView1.DragOver += new DragEventHandler(TreeView1_DragOver);
+ treeView1.DragDrop += new DragEventHandler(TreeView1_DragDrop);
+ }
+ private void TreeView1_ItemDrag(object sender, ItemDragEventArgs e)
+ {
+ DragOn = true;
+ if (e.Button == MouseButtons.Left)
+ {
+ DoDragDrop(e.Item, DragDropEffects.Move);
+ }
+ }
+
+ private void TreeView1_DragEnter(object sender, DragEventArgs e)
+ {
+ DragOn = true;
+ e.Effect = e.AllowedEffect;
+ }
+ private void TreeView1_DragOver(object sender, DragEventArgs e)
+ {
+ Point targetPoint = treeView1.PointToClient(new Point(e.X, e.Y));
+ treeView1.SelectedNode = treeView1.GetNodeAt(targetPoint);
+ }
+ private void TreeView1_DragDrop(object sender, DragEventArgs e)
+ {
+ DragOn = false;
+ int indexMod = 0;
+ int index = 0;
+ Point targetPoint = treeView1.PointToClient(new Point(e.X, e.Y));
+ TreeNode selectNode = treeView1.GetNodeAt(targetPoint);
+ TreeNode moveNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
+ if(selectNode == null)
+ {
+ // indexMod = 1;
+ }
+ else
+ {
+ int PointH = targetPoint.Y - selectNode.Bounds.Y;
+ if (PointH > 6) indexMod = 1;
+ }
+
+ //if (!((IWordsItem)moveNode.Tag).ChekMove((IWordsItem)selectNode.Tag)) return;
+
+ WordsCategory DstCategory;
+ TreeNodeCollection DstNodes;
+
+ if (selectNode == null)
+ {
+ DstCategory = ChangeCategory;
+ DstNodes = treeView1.Nodes;
+ if(targetPoint.Y < 5)
+ {
+ index = 0;
+ }
+ else
+ {
+ index = treeView1.Nodes.Count;
+ }
+
+ }
+ else if (selectNode.Tag is WordsCategory)
+ {
+ DstCategory = (WordsCategory)selectNode.Tag;
+ DstNodes = selectNode.Nodes;
+ selectNode.Expand();
+ // index = 1;
+ }
+ else if (selectNode.Parent == null)
+ {
+ DstCategory = ChangeCategory;
+ DstNodes = treeView1.Nodes;
+ index = selectNode.Index + indexMod;
+ }
+ else
+ {
+ DstCategory = (WordsCategory)selectNode.Parent.Tag;
+ DstNodes = selectNode.Parent.Nodes;
+ index = selectNode.Index + indexMod;
+ }
+
+ WordsCategory SrcCategory;
+ TreeNodeCollection SrcNodes;
+ if (moveNode == null)
+ {
+ SrcCategory = ChangeCategory;
+ SrcNodes = treeView1.Nodes;
+ }
+ else if (moveNode.Parent == null)
+ {
+ SrcCategory = ChangeCategory;
+ SrcNodes = treeView1.Nodes;
+
+ }
+ else
+ {
+ SrcCategory = (WordsCategory)moveNode.Parent.Tag;
+ SrcNodes = moveNode.Parent.Nodes;
+
+ }
+ if(SrcCategory == DstCategory)
+ {
+ if (selectNode == null)
+ {
+ if (targetPoint.Y > 5) index--;
+ }
+ else if(selectNode.Tag == DstCategory)
+ {
+ index = 0;
+ }
+ else if(selectNode.Tag == moveNode.Tag)
+ {
+ return;
+ }
+ else if(moveNode.Index < selectNode.Index)
+ {
+ index--;
+ }
+ }
+
+ IWordsItem MoveItem = (IWordsItem)moveNode.Tag;
+ if (!MoveItem.ChekMove(DstCategory)) return;
+ WordsList.MoveItem(index, MoveItem, SrcCategory, DstCategory);
+
+ // treeView1.Nodes.Clear();
+ // treeView1.Nodes.AddRange(WordsList.ListNodes());
+
+ SrcNodes.Remove(moveNode);
+ DstNodes.Insert(index, moveNode);
+
+
+
+ }
+
+ public BilderWords(WordsCategory category):base()
+ {
+
+ }
+ public BilderWords(WordsComp item) : base()
+ {
+
+ }
+
+
+
+ private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
+ {
+
+ if (e.Node != null && !DragOn)
+ {
+ if (e.Node.Tag is WordsComp)
+ {
+ WordsComp wordsComp = (WordsComp)e.Node.Tag;
+ control = new WordsEditCompControl(wordsComp, e.Node, imageList1);
+ panel1.Controls.Add(control);
+ }
+ if (e.Node.Tag is WordsCategory)
+ {
+ WordsCategory wordsCategory = (WordsCategory)e.Node.Tag;
+ control = new WordsEditCategoryControl(wordsCategory, e.Node);
+ panel1.Controls.Add(control);
+ }
+ }
+
+ }
+
+ private void treeView1_BeforeSelect(object sender, TreeViewCancelEventArgs e)
+ {
+
+ if(control != null && !DragOn)
+ {
+ control.Visible = false;
+ control.Dispose();
+ }
+
+
+ }
+
+ private void bt_new_Click(object sender, EventArgs e)
+ {
+ WordsCategory ParentCategory;
+ TreeNode selectNode = treeView1.SelectedNode;
+ TreeNodeCollection ParentNodes;
+ int index = 0;
+ if(selectNode == null)
+ {
+ ParentCategory = ChangeCategory;
+ ParentNodes = treeView1.Nodes;
+ }
+ else if(selectNode.Tag is WordsCategory)
+ {
+ ParentCategory = (WordsCategory)selectNode.Tag;
+ ParentNodes = selectNode.Nodes;
+ selectNode.Expand();
+ }
+ else if (selectNode.Parent == null)
+ {
+ ParentCategory = ChangeCategory;
+ ParentNodes = treeView1.Nodes;
+ // index = selectNode.Index+1;
+ }
+ else
+ {
+ ParentCategory = (WordsCategory)selectNode.Parent.Tag;
+ ParentNodes = selectNode.Parent.Nodes;
+ // index = selectNode.Index+1;
+ }
+
+
+
+ object item = null;
+ TreeNode treeNode = new TreeNode();
+ Button sendBt = (Button)sender;
+ switch (sendBt.Tag)
+ {
+ case "cat":
+ item = new WordsCategory("Новая категория");
+ index = 0;
+ WordsList.InsertItem(index, (WordsCategory)item, ParentCategory);
+ treeNode.ImageIndex = 0;
+ treeNode.SelectedImageIndex = 0;
+ treeNode.Text = "Новая категория";
+ break;
+ case "pc":
+ item = new WordsComp(new CompId("Новый ПК"));
+ index = ParentCategory.Count();
+ WordsList.InsertItem(index, (WordsComp)item, ParentCategory);
+ treeNode.ImageIndex = 1;
+ treeNode.SelectedImageIndex = 1;
+ treeNode.Text = "Новый ПК";
+ break;
+ }
+
+ treeNode.Tag = item;
+ ParentNodes.Insert(index,treeNode);
+
+
+
+ }
+
+ private void BilderWords_FormClosing(object sender, FormClosingEventArgs e)
+ {
+ if (control != null)
+ {
+ control.Visible = false;
+ control.Visible = true;
+ }
+
+ if (!SGlobalSetting.SaveClose(ChangeCategory, this.DialogResult))
+ {
+ e.Cancel = true;
+ }
+ else
+ {
+ // WordsList.MainCategory = ChangeCategory;
+ this.DialogResult = DialogResult.OK;
+ }
+
+ }
+
+ private void bt_deleteItem_Click(object sender, EventArgs e)
+ {
+
+ TreeNode selectNode = treeView1.SelectedNode;
+ if (selectNode == null) return;
+ WordsCategory ParentCategory;
+ TreeNodeCollection ParentNodes;
+ treeView1.SelectedNode = null;
+ control.Visible = false;
+ control.Dispose();
+ if (selectNode.Parent == null)
+ {
+ ParentCategory = ChangeCategory;
+ ParentNodes = treeView1.Nodes;
+ }
+ else
+ {
+ ParentCategory = (WordsCategory)selectNode.Parent.Tag;
+ ParentNodes = selectNode.Parent.Nodes;
+ }
+
+
+ if (selectNode.Tag == null) return;
+ IWordsItem wordsItem = (IWordsItem)selectNode.Tag;
+
+ if(selectNode.NextNode != null)
+ {
+ treeView1.SelectedNode = selectNode.NextNode;
+ }else if(selectNode.PrevNode != null)
+ {
+ treeView1.SelectedNode = selectNode.PrevNode;
+ }else if(selectNode.Parent != null) treeView1.SelectedNode = selectNode.Parent ;
+
+ ParentCategory.DeleteItem(wordsItem);
+ ParentNodes.Remove(selectNode);
+
+ }
+
+
+
+ private void treeView1_MouseClick(object sender, MouseEventArgs e)
+ {
+ if (e.Button == MouseButtons.Left)
+ {
+
+ TreeNode tr = treeView1.GetNodeAt(e.X, e.Y);
+ if (tr == null || !(tr.Bounds.X < e.X && (tr.Bounds.Width + tr.Bounds.X) > e.X))
+ {
+ if (control != null && !DragOn)
+ {
+ control.Visible = false;
+ control.Dispose();
+ }
+ treeView1.SelectedNode = null;
+ }
+
+ }
+ else if (e.Button == MouseButtons.Right)
+ {
+ if (control != null && !DragOn)
+ {
+ control.Visible = false;
+ control.Dispose();
+ }
+ treeView1.SelectedNode = null;
+ }
+
+ }
+
+ private void treeView1_KeyDown(object sender, KeyEventArgs e)
+ {
+
+ }
+
+ private void panel2_MouseDown(object sender, MouseEventArgs e)
+ {
+
+ }
+
+ private void bt_saveClose_Click(object sender, EventArgs e)
+ {
+
+ this.DialogResult = DialogResult.OK;
+
+ }
+
+ private void bt_save_Click(object sender, EventArgs e)
+ {
+ if (control != null)
+ {
+ control.Visible = false;
+ control.Visible = true;
+ }
+ if(SGlobalSetting.Save(ChangeCategory)) WordsList.MainCategory = ChangeCategory;
+ SGlobalSetting.Clone(WordsList.MainCategory);
+ }
+
+ private void bt_close_Click(object sender, EventArgs e)
+ {
+ this.Close();
+ }
+
+ private void BilderWords_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/Remontor/Words/BilderWords.resx b/Remontor/Words/BilderWords.resx
new file mode 100644
index 0000000..75f4de0
--- /dev/null
+++ b/Remontor/Words/BilderWords.resx
@@ -0,0 +1,1150 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
+ ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACQ
+ JAAAAk1TRnQBSQFMAgEBCQEAAZgBAAGYAQABEAEAARABAAT/AREBAAj/AUIBTQE2BwABNgMAASgDAAFA
+ AwABMAMAAQEBAAEQBgABGBIAAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8BjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBzgE5Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/
+ AX8BjAExAf8BfwH/AX8B/wF/Af8BfwG1AVYBzgE5Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/
+ AYwBMQGMATEBjAExAf8BfwH/AX8B/wF/Af8BfwG1AVYBjAExAYwBMQGMATEB/wF/Af8Bf2AAAf8BfwH/
+ AX8B/wF/AYwBMQGMATEBjAExAd4BewHeAXsB3gF7Ad4BewGUAVIBjAExAYwBMQGMATEB/wF/Af8Bf2AA
+ Af8BfwH/AX8B/wF/AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEB/wF/
+ Af8Bf2AAAf8BfwH/AX8B/wF/AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBrQE1Ab0BdwGM
+ ATEB/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Aa0BNQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQGcAXMB/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8BOQFnATkBZwE5AWcBOQFnATkBZwE5
+ AWcBWgFrAf8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8BjAExAYwBMQGMATEBjAEx
+ AYwBMQGMATEBzgE5Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8BjAExAYwBMQGM
+ ATEBjAExAYwBMQGMATEBzgE5Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8Bf2AAAf8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8BEAFCAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGM
+ ATEBjAExAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQF7AW8BewFvAXsBbwF7AW8BewFvAXsBbwF7
+ AW8BewFvAXsBbwF7AW8BewFvAXsBbwGMATEBcwFOAf8BfwEQAUIBEAFCAZQBUgH/AX8BEAFCARABQgEQ
+ AUIBEAFCARABQgEQAUIBEAFCAd4BewGcAXMB/wF/Af8BfwH/AX8B/wF/AYwBMQGMATEBjAExAYwBMQGM
+ ATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAf8BfwH/AX8B/wF/Af8BfwGMATEBjAExAYwBMQGM
+ ATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQH/AX8B/wF/Af8BfwGMATEB/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BjAExARABQgH/AX8BjAExAYwBMQEQ
+ AUIB/wF/AYwBMQGMATEBjAExAYwBMQGMATEBjAExAd4BewH/AX8BMQFGAZQBUgH/AX8B/wF/Af8BfwGM
+ ATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwH/
+ AX8BjAExARABQgH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwGMATEB/wF/Af8BfwH/
+ AX8BjAExAf8BfwH/AX8B/wF/Af8BfwGMATEBcwFOAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQEQ
+ AUIB/wF/AYwBMQGMATEBEAFCAf8BfwGMATEBjAExAYwBMQGMATEBjAExAe8BPQH/AX8BzgE5Ad4BewHe
+ AXsBrQE1Af8BfwH/AX8BjAExARABQgH/AX8BEAFCAf8BfwGcAXMBEAFCARABQgEQAUIBlAFSAf8BfwGM
+ ATEB/wF/Af8BfwH/AX8B/wF/AYwBMQEQAUIB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8BjAExAf8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwH/AX8BjAExAYwBMQGMATEBOQFnAf8BfwH/
+ AX8B/wF/Af8BfwGMATEBEAFCAf8BfwExAUYBjAExAa0BNQH/AX8BMQFGAYwBMQGMATEBjAExAYwBMQEQ
+ AUIBewFvAd4BewGMATEBrQE1AVoBawH/AX8B/wF/AYwBMQEQAUIB/wF/AYwBMQH/AX8BewFvAYwBMQGM
+ ATEBjAExARABQgH/AX8BjAExAf8BfwH/AX8B/wF/Af8BfwGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwGMATEB/wF/Af8BfwH/AX8B/wF/AYwBMQGM
+ ATEBjAExAYwBMQFSAUoB/wF/Af8BfwH/AX8BjAExARABQgH/AX8B/wF/AZwBcwEQAUIB1gFaAf8BfwG9
+ AXcBEAFCAYwBMQGMATEBzgE5Af8BfwH/AX8BjAExAYwBMQH/AX8B/wF/Af8BfwGMATEBEAFCAf8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwH/AX8BjAExARABQgH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwGMATEB/wF/Af8BfwH/AX8BjAExAf8BfwH/
+ AX8B/wF/Af8BfwGMATEBjAExAa0BNQG9AXcB/wF/Af8BfwH/AX8B/wF/AYwBMQEQAUIB/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQGMATEB/wF/Af8BfwH/
+ AX8BjAExARABQgH/AX8BjAExAf8BfwF7AW8BjAExAYwBMQGMAjEBRgH/AX8BjAExAf8BfwH/AX8B/wF/
+ Af8BfwGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/
+ Af8BfwGMATEB/wF/Af8BfwH/AX8B/wF/AYwBMQF7AW8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BjAEx
+ ARABQgH/AX8B/wF/Af8BfwH/AX8BcwFOAYwBMQHOATkB/wF/AXMBTgGMATEBjAExAYwBMQH/AX8BnAFz
+ Ab0BdwH/AX8B/wF/Af8BfwGMATEBEAFCAf8BfwF7AW8B/wF/Ad4CewFvAXsBbwF7AW8BnAFzAf8BfwGM
+ ATEB/wF/Af8BfwH/AX8B/wF/AYwBMQEQAUIB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8BjAExAf8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwGMATEBEAFCAf8BfwH/AX8B/wF/Ab0BdwGMATEBjAExAXsBbwG9AXcBjAExAYwBMQGM
+ ATEBjAExAc4BOQH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQEQAUIB/wF/Af8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8BjAExAf8BfwH/AX8B/wF/Af8BfwGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/
+ AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/Af8BfwGMATEBEAFCARABQgEQAUIBEAFCARABQgEQ
+ AUIBEAFCARABQgEQAUIBEAFCARABQgEQAUIBjAIxAUYB/wF/Af8BfwH/AX8BewFvAYwBMQGMATEB/wF/
+ AXsBbwGMATEBjAExAYwBMQGMATEBjAExAf8BfwH/AX8B/wF/Af8BfwH/AX8BjAExARABQgH/AX8BjAEx
+ Af8BfwF7AW8BjAExAYwBMQGMATEBEAFCAf8BfwGMATEB/wF/Af8BfwH/AX8B/wF/AYwBMQEQAUIB/wF/
+ AYwBMQH/AX8BewFvAYwBMQGMATEBjAExARABQgH/AX8BjAExAf8BfwH/AX8B/wF/AdYBWgGMATEBjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGtATUB/wF/Af8BfwH/AX8B/wF/
+ Ad4BewGMATEBjAExATkBZwHeAXsBjAExAYwBMQGMATEBjAExAe8BPQH/AX8B/wF/Af8BfwH/AX8B/wF/
+ AYwBMQEQAUIB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BjAExAf8BfwH/AX8B/wF/
+ Af8BfwGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AYwBMQH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ARgBYwHWAVoB/wF/Aa0BNQH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8BOQFnAYwBMQGtATUB/wF/ATkBZwGMATEBjAExAa0BNQH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwGMATEBrQE1ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQgEQAUIBEAFC
+ AYwBMQH/AX8B/wF/Af8BfwH/AX8BjAExAa0BNQEQAUIBEAFCARABQgEQAUIBEAFCARABQgEQAUIBEAFC
+ ARABQgGMATEB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/ARgBYwHWAVoB/wF/Af8BfwH/AX8BrQE1
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BMQFGAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEB/wF/Af8BfwH/AX8B/wF/ATEBRgGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwG9AXcB/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BlAFSARABQgEQAUIBEAFC
+ ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQgExAUYB3gF7Af8BfwH/AX8B/wF/Af8BfwH/AX8BjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/ARABQgEQAUIBEAFC
+ ARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQgEQAUIBEAFCARABQgEQAUIBGAFjAf8BfwGMATEBjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/AX8BewFv
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQH/AX8B/wF/
+ Af8BfwH/AX8B/wF/AVoBawGMATEBjAExAYwBMQGMATEBjAExAYwBMQGtATUB/wF/Af8BfwH/AX8B/wF/
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQH/AX8BjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAXMBTgH/AX8B/wF/
+ Af8BfwH/AX8B/wF/AXsBbwGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQGMATEB/wF/Af8BfwG9AXcBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQGMATEBzgE5Af8BfwH/AX8BvQF3AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQGMATEBjAExAc4BOQH/AX8B/wF/AZwBcwGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ ARABQgH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwF7AW8BjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAf8BfwH/AX8BewFvAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8BewFvAYwBMQH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/AZwBcwGUAVIBrQE1
+ AYwBMQEQAUIBOQFnAf8BfwH/AX8B/wF/Af8BfwHvAT0B/wF/Af8BfwH/AX8BewFvAYwBMQGMATEBjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQH/AX8B/wF/AXsBbwGMATEB/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwF7AW8BjAEx
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwF7AW8BjAExAf8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwHeAXsBjAExAe8BPQH/AX8B/wF/
+ AXsBbwGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEB/wF/
+ Af8BfwF7AW8BjAExAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwF7AW8BjAEx
+ Af8BfwH/AX8BewFvAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BewFv
+ AYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Ab0BdwGtATUBjAExAVIBSgH/AX8B/wF/Af8BfwGUAVIB/wF/
+ AXMBTgGMATEB/wF/Af8BfwF7AW8BjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQGMATEBjAExAf8BfwH/AX8BewFvAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8BewFvAYwBMQH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/Af8BfwGMATEBjAExAYwBMQGMATEBUgFK
+ Af8BfwGUAVIBjAExAf8BfwG9AXcBjAExAdYBWgH/AX8BewFvAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwF7AW8BjAExAf8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwF7AW8BjAExAf8BfwH/AX8B/wF/Af8BfwF7AW8BjAEx
+ AYwBMQGMATEBjAExAYwBMQH/AX8BvQF3AYwBMQEYAWMB/wF/AYwBMQFSAUoB/wF/AXsBbwGMATEBjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEB/wF/Af8BfwF7AW8BjAEx
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwF7AW8BjAExAf8BfwH/AX8BewFv
+ AYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BewFvAYwBMQH/AX8B/wF/
+ Af8BfwH/AX8BnAFzAYwBMQGMATEBjAExAYwBMQGtATUB/wF/AVoBawGMATEBewFvAf8BfwGMATEBlAFS
+ Af8BfwF7AW8BjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBWgFr
+ Af8BfwH/AX8BewFvAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BewFv
+ AYwBMQH/AX8B/wF/AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ AXsBbwGMATEB/wF/Af8BfwH/AX8B/wF/Af8BfwHvAT0BjAExAYwBMQGMATEBvQF3Af8BfwGcAXMBjAEx
+ Af8BfwF7AW8BjAExAb0BdwH/AX8B3gF7AYwBMQGMATEBjAExAYwBMQGMATEB1gFaAf8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AXsBbwGMATEBEAFCARABQgEQAUIBEAFCARABQgEQAUIBEAFC
+ ARABQgEQAUIBEAFCAe8BPQGMATEB/wF/Af8BfwHeAXsBjAExAYwBMQGMATEBjAExAYwBMQGMATEBjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBEAFCAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/AZwBcwF7AW8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8BjAExAYwBMQH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B7wE9AYwBMQGMATEBjAEx
+ AYwBMQGMATEBjAExAYwBMQGMATEBjAExAYwBMQGMATEBWgFrAf8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8BvQF3AYwBMQFaAWsB/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/Af8BfwH/AX8B/wF/
+ Af8BfwH/AX8B/wF/Af8BfwH/AX8BQgFNAT4HAAE+AwABKAMAAUADAAEwAwABAQEAAQEFAAGAAQEWAAP/
+ /wCCAAs=
+
+
+
+
+
+ AAABAAwAICAQAAEABADoAgAAxgAAABAQEAABAAQAKAEAAK4DAAAwMAAAAQAIAKgOAADWBAAAICAAAAEA
+ CACoCAAAfhMAABAQAAABAAgAaAUAACYcAABAQAAAAQAgAChCAACOIQAAMDAAAAEAIACoJQAAtmMAACgo
+ AAABACAAaBoAAF6JAAAgIAAAAQAgAKgQAADGowAAGBgAAAEAIACICQAAbrQAABQUAAABACAAuAYAAPa9
+ AAAQEAAAAQAgAGgEAACuxAAAKAAAACAAAABAAAAAAQAEAAAAAACAAgAAAAAAAAAAAAAQAAAAAAAAAAAA
+ AAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA/wAA/wAAAP//AP8AAAD/AP8A//8AAP//
+ /wCZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
+ mZmZmZmZmZmZeXl5l5l5l5l5mZmZmZmZmP//////////iZmZmZmZmZ///4///////4mZmZmZmZl/+ZeX
+ l5eXl5eZmZmZmZmZn/eZmZmZmZmZmZmZmZmZmX/5GYiIiIiIiIiImZmZmZmf+Zj//////////4eZmZmZ
+ f/kY///////////3mZmZmZ/5mP/4iIiP////95mZmZl/95j/iRkZmP////mZmZmZn/mY/4mZeZj////3
+ mZmZmX/5GP//////////+ZmZmZmf+Zj///////////eZmZmZf/kf/4l5eXl5d//5mZmZmZ/5mP+JmZmZ
+ mZn/95mZmZl/+Rj/+IiIiIiI//mZmZmZn/eY///////////3mZmZmX/5mP/4iIiIiIj/+ZmZmZmYiZj/
+ gZmZmZmX//cZmZmZmZmf/4l5eXl5d//5mZmZmZmZmP//////////95mZmZmZmZj///////////mZmZmZ
+ mZmZ//////////+JmZmZmZmZmXl3l3l3l3l5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
+ mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABAAAAAgAAAAAQAEAAAA
+ AADAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAIAAAIAAAACAgACAAAAAgACAAICAAACAgIAAwMDAAAAA
+ /wAA/wAAAP//AP8AAAD/AP8A//8AAP///wCZmZmZmZmZmZmZmZmZmZmZmZiIiIiHmZmZiIiIiImZmZmI
+ mYmJiXmZmYif////+JmZiH+HmP/4mZmIn4iI//iZmYh/iIiI+JmZiJ+JeXj4mZmIn/j4j/iZmXmPiZl5
+ +JmZmZ/////4mZmZmIiIiImZmZmZmZmZmZmZmZmZmZmZmQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAMAAAAGAAAAABAAgAAAAAAIAK
+ AAAAAAAAAAAAAAABAAAAAAAAGBi/AC0tvgATE8IAExPEABQUxgAYGMIAHBzCABwcxQAUFMoAFBTNABkZ
+ yAAdHcgAGRnOAB4ezQAVFdEAFRXVABoa0QAdHdMAGhrVAB4e1QAWFtkAFhbdABoa2AAeHtkAGRndAB8f
+ 3AAuLsEALi7EACMjyQAuLskAKSnNAC8vzQAyMsMAMjLGADo6xQAzM84AOzvIADo6zgAvL9AAOzvRADw8
+ 0QAwMNoAMDDcABYW4QAWFuUAGBjjABcX6QAXF+wAGhroABgY7gAYGPIAHBzxACsr5gAgIOgAICDvACws
+ 7gA9PeEAPT3kAD096AAhIfEALCzyADQ08gA/P/MARUXBAFlZxQBHR9YAQUHYAEhI2QBbW9MAW1vXAFdX
+ 2wBbW9gAX1/bAGxsyQBtbdIAZ2fYAEJC4ABDQ+4ARETyAFlZ8wB8fOMAfHzmAGpq8wCMjNcAhYXYAIaG
+ 3ACOjt8AlpbdAKqq3wCKiuIAjo7hAIOD6wCDg+8Aj4/pAI+P7QCXl+wAj4/wAJiY9wCqquAAo6PqAKSk
+ 6gCsrOgArKzuALS04gC5ueUAvLzmALW17QC8vOgAvb3vAKys8ACurvcApqb4ALq68AC8vPAAu7v0AL6+
+ 9QC7u/oAvb36AMrK7QDV1e8AxcXyAMnJ8QDLy/kA0dHyANbW8wDd3fEA3t71ANPT+gDe3vkA4eHyAOLi
+ 9gDm5vUA6Oj2AOLi+ADm5voA5+f9AOjo+QDt7foA6Oj9APPz+gDz8/wA9vb8APj4/AD+/v4AAAAAAC8U
+ AABQIgAAcDAAAJA+AACwTQAAz1sAAPBpAAD/eREA/4oxAP+dUQD/r3EA/8GRAP/SsQD/5dEA////AAAA
+ AAAvAwAAUAQAAHAGAACQCQAAsAoAAM8MAADwDgAA/yASAP8+MQD/XFEA/3pxAP+XkQD/trEA/9TRAP//
+ /wAAAAAALwAOAFAAFwBwACEAkAArALAANgDPAEAA8ABJAP8RWgD/MXAA/1GGAP9xnAD/kbIA/7HIAP/R
+ 3wD///8AAAAAAC8AIABQADYAcABMAJAAYgCwAHgAzwCOAPAApAD/EbMA/zG+AP9RxwD/cdEA/5HcAP+x
+ 5QD/0fAA////AAAAAAAsAC8ASwBQAGkAcACHAJAApQCwAMQAzwDhAPAA8BH/APIx/wD0Uf8A9nH/APeR
+ /wD5sf8A+9H/AP///wAAAAAAGwAvAC0AUAA/AHAAUgCQAGMAsAB2AM8AiADwAJkR/wCmMf8AtFH/AMJx
+ /wDPkf8A3LH/AOvR/wD///8AAAAAAAgALwAOAFAAFQBwABsAkAAhALAAJgDPACwA8AA+Ef8AWDH/AHFR
+ /wCMcf8AppH/AL+x/wDa0f8A////ADIyMjIyMjIyMjIyMjIyMjEsKywsLCwwLC4uLi4uLi4uLy4vLy8v
+ MTExMTIxMjIyMjIyMjIyMjIyMjIyMjIyMiwrLCwsLC0tLiwwLi4uLi4uLi4uLy8vLzExMTExMTIyMjIy
+ MjIyMjIyMjIyMjIvKy0rLSstLCwsLCwsLC4uLi4uLi4vLi8vLy8xMTEyMTIxMjIyMjIyMjIyMjIyMjEt
+ KysrKyssLCwsLSwuLC4uLi4uLi4uLi4vLy8vMTExMTEyMTIyMjIyMjIyMjIyLhUVFRUVKxUVKysrKyss
+ KywsLC0sLi4uLi8uLy8vLy8xMTEyMTIyMjIyMjIyMi4rDw8PDw8PFA8UFBQUFBQUFBQUFBUVFSsuLi4u
+ Li8vLy8xMTExMTIyMjIyMjIvLBILBgYHBwcHBwsHBwsLCwsLCwsNCw0NDRMYLC4uLy4vLy8vLzExMTIy
+ MjIyMjItQldoaWlpaWtraWtraWtra2tra2tra2tra2UqLi4uLi4vLy8vLy8xMTIyMjIyMi9Me4+fn5+f
+ n5+fn5+fn5+fn5+fn5+fn5+fn4g4LS4uLi4vLi8vLy8vMTIyMjIyMjBfj5+fj4+fn5+Pn5+fn4+Pj4+P
+ j5+fn5+fn4g5LC4uLi4uLi4vLy8vLzIyMjIyMjVyn595XV5eXl5eXl5eXl5eXmBeYGBgYGBgYFw0LC4u
+ Li4uLi8uLy8vLzIyMjIyMjV1n49aEhQUFBQUFBQUGBQVGBUYFRUrFSsVKy0rKywtLC4uLi4uLi8vLzIy
+ MjIyMjVzn59dDhQUFA8OCQkJDgkODg4ODg4ODw8PDw8UDw8UFSssLi4uLy4vLzIyMjIyMjVzn49aDxQU
+ DgobIiIiIiIiIiQiJCQkJCQkJCQkJCUlHg8YLi4uLi4uLzIyMjIyMjVzn59aDg8OHFV3hIOEg4SEhIiE
+ hISEhISIhIiEhISGdksWLC4uLi4vLjIyMjIyMjZzn49aDhQMVY2fn5+fn5+fn5+fn5+fn5+fn5+fn5+f
+ n4hGKywwLi4uLjIyMjIyMTVzn59aDg8mfJ+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn59kGCwuLi4uLjIy
+ MjIyMjZzn49aDg4ohp+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn59xGSwuLi4uLjIyMjIyMjVzn49aDg8o
+ iJ+fn4+FgICAgICAgICFj5+fn5+fn5+fn59xGS0uLi4uLjIyMjIyMjVzn49aDA4oiJ+fn4JDKSkqKioq
+ KipDhZ+fn5+fn5+fn59zGS0uLi4uLjIyMjIyMjVzn59aDA4oiJ+fn34fCQ4ODg8ODw4mgJ+fn5+fn5+f
+ n59xGSwsMCwuLjIyMjIyMjZzn59aDg4oiJ+fn34gAAUFBQUFBQUhfp+fn5+fn5+fn59xGS0sLC4uLjIy
+ MjIyMjVzn59aCQ4oiJ+fn4tnYmJiYmJiYmJnjJ+fn5+fn5+fn59sGSswLCwuLjIyMjIyMjVzn59aDA4o
+ iJ+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn59xGS0tLCwuMDIyMjIyMjVzn59aCQ4oiJ+fn5+fn5+fn5+f
+ n5+fn5+fn5+fn5+fn59sFyssLSwsLDIyMjIyMjZzn59aCQ4oiJ+fn4xqZmZtbW1tbW1tbW1tbW1teI+P
+ n59xGS0sLCwtLjIyMjIyMjVzn59WCQkoiJ+fn34jEBISEhIWEhYWFhYWFhYSSI6fn59sFysrLCwtLDIy
+ MjIyMjVzn59WCQkoiJ+fn34dBAgICQgJCQkJCQkOCQ4JRY6fn59xFyssLCwsLDIyMjIyMjVzn59aCAko
+ iJ+fn4I/AQEBARoaGhoaGhoaGhsaSo6fn59sFysrLCwsLDIyMjIyMjZzn59WCAkliJ+fn46BfX2BfYF9
+ gX2BfYF+gX59hI+fn59sFxUrKywrLDIyMjIyMTVzn49WCAkoiJ+fn5+fn5+fn5+fn5+fn5+fn5+fn5+f
+ n59sFxUrLCssKzIyMjIyMjtzn59aCA84iJ+fn5+Pj4+Pj4+Pj4+Pj4+Pj4+Pj5+fn59sExUrKysrLDIy
+ MjIyMjZ1n49aDy46iJ+fn4lZUFBRUVFRUVFRUVFRUVFRY4+fn59xExUrKyssMTIyMjIyMjtuiopcMTE6
+ ip+fn4AfCA4ODg4ODg4PDg8OFA4OR46fn59sExUrKywxMjIyMjIyMjI9Pj48MjE6ip+fn34bAgIEBAQE
+ BAQECAgICAgERI6fn59sExUrLDIyMjIyMjIyMjIyMjIyMjI6ip+fn4hJQEBAQEBAQEBAQEBAQEBAU4+P
+ n59sExUrMTIyMjIyMjIyMjIyMjIyMjE6ip+fn5+Ojo6Ojo6Ojo6Ojo6Ojo6Oj5+fn59sEysyMjIyMjIy
+ MjIyMjIyMjIyMjI+h5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn59wGS4yMjIyMjIyMjIyMjIyMjIyMjI8
+ ep+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn49fMzIyMjIyMjIyMjIyMjIyMjIyMjIyUoqfn5+fn5+fn5+f
+ n5+fn5+fn5+fn5+fj39OMjIyMjIyMjIyMjIyMjIyMjIyMjIyM09vdXV1dXV1dXV1dXV1dXV1dXV1dXV0
+ YU4yMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIzOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7MzIyMjIyMjIyMjIy
+ MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
+ MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
+ MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
+ MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy
+ MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAACgAAAAgAAAAQAAAAAEACAAAAAAAgAQAAAAAAAAAAAAAAAEAAAAAAAAWFsYAGRnCABkZ
+ xwAXF8kAFxfNABkZygAaGs0AFhbQABUV1gAaGtEAGBjUABUV2QAWFt0AICDOADMzzgA/P8kALCzeADMz
+ 0QAzM9QANDTVADw81AA1Nd4AOTnaABYW4QAWFuUAHBziABkZ5AAXF+kAFxfsAB4e6QAYGO4AHh7sABgY
+ 8gAeHvEALCzjACws6gA2NuEAPj7mAD8/6QAvL/IAPT3xAEFBxwBJScYAQUHKAElJyABISM0AQ0PXAElJ
+ 0ABOTtIASUnUAE5O1gBCQtkAQkLdAEpK3QBQUNsAdXXVAHd33ABKSuAATU3rAE1N7QBAQPMAR0fyAE1N
+ 8wBLS/QAb2/hAImJ5wCenuQAior1AKio4QCqquYApaXrAKSk7QCqquoArKzuALCw5QC0tOYAtLToALKy
+ 7AC2tuwAubnpALy86AC5ue0Ao6PyAKGh9QCkpPYAq6vwAKys8ACvr/kAt7f1ALq68ADHx/EAysr7AN/f
+ 8wDe3vYA4uL3AObm9gDs7PcA4eH4AOTk+gDn5/0A7Oz6AO3t/ADx8fkA9fX7APHx/AD19fwA+fn8AP7+
+ /gDA/5EA0v+xAOT/0QD///8AAAAAACYvAABAUAAAWnAAAHSQAACOsAAAqc8AAMLwAADR/xEA2P8xAN7/
+ UQDj/3EA6f+RAO//sQD2/9EA////AAAAAAAvJgAAUEEAAHBbAACQdAAAsI4AAM+pAADwwwAA/9IRAP/Y
+ MQD/3VEA/+RxAP/qkQD/8LEA//bRAP///wAAAAAALxQAAFAiAABwMAAAkD4AALBNAADPWwAA8GkAAP95
+ EQD/ijEA/51RAP+vcQD/wZEA/9KxAP/l0QD///8AAAAAAC8DAABQBAAAcAYAAJAJAACwCgAAzwwAAPAO
+ AAD/IBIA/z4xAP9cUQD/enEA/5eRAP+2sQD/1NEA////AAAAAAAvAA4AUAAXAHAAIQCQACsAsAA2AM8A
+ QADwAEkA/xFaAP8xcAD/UYYA/3GcAP+RsgD/scgA/9HfAP///wAAAAAALwAgAFAANgBwAEwAkABiALAA
+ eADPAI4A8ACkAP8RswD/Mb4A/1HHAP9x0QD/kdwA/7HlAP/R8AD///8AAAAAACwALwBLAFAAaQBwAIcA
+ kAClALAAxADPAOEA8ADwEf8A8jH/APRR/wD2cf8A95H/APmx/wD70f8A////AAAAAAAbAC8ALQBQAD8A
+ cABSAJAAYwCwAHYAzwCIAPAAmRH/AKYx/wC0Uf8AwnH/AM+R/wDcsf8A69H/AP///wAAAAAACAAvAA4A
+ UAAVAHAAGwCQACEAsAAmAM8ALADwAD4R/wBYMf8AcVH/AIxx/wCmkf8Av7H/ANrR/wD///8AICAgICAg
+ ICAgIBsXGBgaGBsbGxsbHBscHBweHh4gHiAgICAgICAgICAbFxcYGBgaGxsbGxsbGxwcHBwcHh4gHiAg
+ ICAgICAeGxcXFxcXFxgYGhgbGxsbHBscHhwcHiAeICAgICAgGwwICAgLCwsLDAwMDAwMDBgbGxscHB4c
+ Hh4gICAgHhkULS0tLS8vLy8vLy8xLzExFhobHBscHBwcHiAgICAdQV9mZmZoZmZnZmZoaGhmaGhWGRsb
+ GxscHB4cICAgICZja2NiYmJiYmJiYmJiY2JjYlIaGxsbHBscHBwgICAgO2ljNhUVFRUVFSQkJCQkJCQk
+ IhoaGxsbGxscHCAgICA7aF4TCwgHBQUFBgYGBgYJCQkJCQkKFxsbHBscICAgIDtoYRMIDThKS0tLS0xM
+ TExLTExMTEIuFxsbGxsgICAgOmheEwo4aW9vb29vb29vb29vb29va1oQGxsbGyAgICA7aF4TCU1vb29v
+ b29vb29vb29vb29vaDkYGxsbICAgIDpoXhMJTm9vYUlVVVVWVl5vb29vb29oORgbGxsgICAgO2heEglR
+ b29IBgoKCgoJSW9vb29vb2g5GhsbGyAgICA6aF4TCU5vb08pDysPKytRb29vb29vaDkYGhsbICAgIDtp
+ YhEGTm9vamBgYGBgYGpvb29vb29oORcYGBsgICAgOmheEgZOb29qZWVlZWVlZWVlZWhvb2k5FxgaGCAg
+ ICA7aGIRBk5vb1EuNDQ0NDQ0NDQ0QGlvaDkXGBgYICAgIDtoXg4GTm9vRQEAAAADAwMFBAMwaG9oORcY
+ GBggICAgO2hhEQZOb29cRERERERFREVERFBrb2g5DBcYGCAgICA7aF4OCU5vb29vb29vb29vb29vb29v
+ aTUXFxcXICAgID5oYhMZWG9vYUdHR0dHR0dHR0dZam9oNQwXFxwgICAgPFdUIx9Yb29IAgQEBAQECQcJ
+ CjJpb2g1DBcbICAgICAgISEgIVhvb1AsKiwsLC0sLC0sN2lvaDUMGyAgICAgICAgICAhWG9vamlpaGlo
+ aWhpaGlpb29oNRsgICAgICAgICAgICBUa29vb29vb29vb29vb29vb2MmICAgICAgICAgICAgID1baGho
+ aGhoaGhoaGhoaGhjQyEgICAgICAgICAgICAgICc/Pj4+Pj4+Pj4+Pj4+PjwhICAgICAgICAgICAgICAg
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAKAAAABAAAAAgAAAAAQAIAAAAAABAAQAAAAAAAAAAAAAAAQAAAAAAAB8f1QAWFtoAFhbdABcX
+ 4QAWFuUAGBjjABgY5QAXF+kAFxfsABgY6AAYGO4AGBjyACoq4QA/P+oALS3zAD8/8wBISNEAWFjYAFlZ
+ 3ABjY9YAY2PYAGJi3wBoaNoAamrdAH9/3gBBQeYAR0flAEJC8ABKSvQAZmbhAGxs5QBlZfIAbW3wAIWF
+ 3QCJieMAiYnlAIWF6wCMjOsAi4vuAIyM7ACVleEAkpLmAJub5QCcnOYAlpbqAJOT7wCXl+wAmZnoAJyc
+ 7QCIiPcAlZXzAJ6e9QCVlfgAn5/5AKmp7gC4uOoAubnvAMPD8gDFxfMAzs70ANfX9QDr6/gA7u75APHx
+ +gD29v0A+fn9AP39/gAAcCIAAJAsAACwNgAAz0AAAPBKABH/WwAx/3EAUf+HAHH/nQCR/7IAsf/JANH/
+ 3wD///8AAAAAAAIvAAAEUAAABnAAAAiQAAAKsAAAC88AAA7wAAAg/xIAPf8xAFv/UQB5/3EAmP+RALX/
+ sQDU/9EA////AAAAAAAULwAAIlAAADBwAAA9kAAATLAAAFnPAABn8AAAeP8RAIr/MQCc/1EArv9xAMD/
+ kQDS/7EA5P/RAP///wAAAAAAJi8AAEBQAABacAAAdJAAAI6wAACpzwAAwvAAANH/EQDY/zEA3v9RAOP/
+ cQDp/5EA7/+xAPb/0QD///8AAAAAAC8mAABQQQAAcFsAAJB0AACwjgAAz6kAAPDDAAD/0hEA/9gxAP/d
+ UQD/5HEA/+qRAP/wsQD/9tEA////AAAAAAAvFAAAUCIAAHAwAACQPgAAsE0AAM9bAADwaQAA/3kRAP+K
+ MQD/nVEA/69xAP/BkQD/0rEA/+XRAP///wAAAAAALwMAAFAEAABwBgAAkAkAALAKAADPDAAA8A4AAP8g
+ EgD/PjEA/1xRAP96cQD/l5EA/7axAP/U0QD///8AAAAAAC8ADgBQABcAcAAhAJAAKwCwADYAzwBAAPAA
+ SQD/EVoA/zFwAP9RhgD/cZwA/5GyAP+xyAD/0d8A////AAAAAAAvACAAUAA2AHAATACQAGIAsAB4AM8A
+ jgDwAKQA/xGzAP8xvgD/UccA/3HRAP+R3AD/seUA/9HwAP///wAAAAAALAAvAEsAUABpAHAAhwCQAKUA
+ sADEAM8A4QDwAPAR/wDyMf8A9FH/APZx/wD3kf8A+bH/APvR/wD///8AAAAAABsALwAtAFAAPwBwAFIA
+ kABjALAAdgDPAIgA8ACZEf8ApjH/ALRR/wDCcf8Az5H/ANyx/wDr0f8A////AAAAAAAIAC8ADgBQABUA
+ cAAbAJAAIQCwACYAzwAsAPAAPhH/AFgx/wBxUf8AjHH/AKaR/wC/sf8A2tH/AP///wALCwsLCgUEBgkJ
+ BwcICgoKCwsLCQIBAgIDAwUGCAgKCgsLDSkrKisrKysvGgcICAgLCzI6JScnJycnJhkGBwcICws1IwAR
+ FhcXFxcXFQwHBwsLMyUSP0FBQUFCQkEkCQcLCzMlF0EvHR0wQk9PMAYHCwszIxdCNygoOEJPTzAGCQsL
+ MyMXQjguLi4uNkAwBQQLCzMjF0IoExQUFBg/MAMECws1Ix5CPDk6OTk7QTADBAsLHBsgQSEQEBAQFz8w
+ AwoLCwsLH0E/PT09PT5PLQoLCwsLCw4xNTU1NTU1NA8LCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsLCwsL
+ CwsLCwsLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAACgAAABAAAAAgAAAAAEAIAAAAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAYGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8f8XF+f/Fhbj/xYW4/8WFuT/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+b/Fxfm/xcX
+ 5/8XF+f/Fxfo/xcX6P8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX
+ 6/8XF+z/Fxfs/xcX7f8XF+3/Fxft/xgY7v8YGO7/GBjv/xgY7/8YGO//GBjw/xgY8P8YGPD/GBjx/xgY
+ 8f8YGPL/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f8XF+j/Fhbi/xYW4/8WFuP/Fhbj/xYW5P8WFuT/Fhbk/xcX
+ 5f8XF+X/Fxfm/xcX5v8XF+b/Fxfn/xcX5/8XF+j/Fxfo/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfp/xcX
+ 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xcX7P8XF+z/Fxft/xcX7f8XF+3/GBju/xgY7v8YGO//GBjv/xgY
+ 7/8YGPD/GBjw/xgY8P8YGPH/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f8WFuf/Fhbi/xYW4v8WFuL/Fhbj/xYW
+ 4/8WFuP/Fhbk/xYW5P8WFuT/Fxfl/xcX5f8XF+b/Fxfm/xcX5v8XF+f/Fxfn/xcX6P8XF+j/Fxfo/xcX
+ 6f8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8XF+v/Fxfs/xcX7P8XF+3/Fxft/xcX
+ 7f8YGO7/GBju/xgY7/8YGO//GBjv/xgY8P8YGPD/GBjw/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f8WFub/Fhbh/xYW
+ 4f8WFuH/Fhbi/xYW4v8WFuP/Fhbj/xYW4/8WFuT/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+b/Fxfm/xcX
+ 5/8XF+f/Fxfo/xcX6P8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX
+ 6/8XF+z/Fxfs/xcX7f8XF+3/Fxft/xgY7v8YGO7/GBjv/xgY7/8YGO//GBjw/xgY8P8YGPD/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8f8WFub/Fhbg/xYW4P8WFuH/Fhbh/xYW4f8WFuL/Fhbi/xYW4/8WFuP/Fhbj/xYW5P8WFuT/Fhbk/xcX
+ 5f8XF+X/Fxfm/xcX5v8XF+b/Fxfn/xcX5/8XF+j/Fxfo/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfp/xcX
+ 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xcX7P8XF+z/Fxft/xcX7f8XF+3/GBju/xgY7v8YGO//GBjv/xgY
+ 7/8YGPD/GBjw/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8v8YGPL/GBjy/xgY7/8WFuX/Fhbe/xYW3v8WFt//Fhbf/xYW4P8WFuD/Fhbg/xYW4f8WFuH/Fhbi/xYW
+ 4v8WFuL/Fhbj/xYW4/8WFuP/Fhbk/xYW5P8XF+X/Fxfl/xcX5f8XF+b/Fxfm/xcX5v8XF+f/Fxfn/xcX
+ 6P8XF+j/Fxfo/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8XF+v/Fxfs/xcX7P8XF+3/Fxft/xcX
+ 7f8YGO7/GBju/xgY7/8YGO//GBjv/xgY8P8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjy/xgY8f8YGPD/GBjv/xgY7P8WFuH/Fhba/xYW2v8WFtr/Fhbb/xYW2/8WFtv/Fhbc/xYW
+ 3P8WFt3/Fhbd/xYW3f8WFt7/Fhbe/xYW3/8WFt//Fhbf/xYW4P8WFuD/Fhbg/xYW4f8WFuH/Fhbh/xYW
+ 4v8WFuL/Fhbj/xYW4/8WFuT/Fxfl/xcX5f8XF+f/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX
+ 6/8XF+z/Fxfs/xcX7f8XF+3/Fxft/xgY7v8YGO7/GBjv/xgY7/8YGO//GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xgY8P8XF+z/Fxfq/xcX5f8VFdn/FRXS/xUV0v8VFdL/FRXS/xUV
+ 0/8VFdP/FRXT/xUV1P8VFdT/FRXV/xUV1f8VFdX/FRXV/xUV1v8VFdb/FRXW/xUV1/8VFdf/FRXX/xUV
+ 2P8VFdj/FRXZ/xUV2f8VFdn/Fhba/xYW2v8WFtv/Fhbb/xYW3P8WFt//Fhbj/xcX5v8XF+n/Fxfp/xcX
+ 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xcX7P8XF+z/Fxft/xcX7f8XF+3/GBju/xgY7v8YGO//GBjv/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xgY7/8XF+v/Fxfk/xYW3P8UFM3/FBTF/xQU
+ xP8UFMT/FBTF/xQUxf8UFMb/FBTG/xQUxv8UFMf/FBTH/xQUx/8UFMf/FBTH/xQUyP8UFMj/FBTJ/xQU
+ yf8UFMn/FBTK/xQUyv8VFcr/FRXL/xUVy/8VFcv/FRXM/xUVzP8VFcz/FRXN/xUVzf8VFc//FRXU/xYW
+ 3P8WFuP/Fxfn/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8XF+v/Fxfs/xcX7P8XF+3/Fxft/xcX
+ 7f8YGO7/GBju/xgY7/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xgY8P8XF+v/Fhbj/xwc
+ 1v89Pcr/Xl7I/2dnyf9nZ8n/Z2fJ/2dnyv9nZ8r/Z2fK/2dnyv9nZ8r/Z2fK/2dny/9nZ8v/Z2fL/2dn
+ y/9oaMz/aGjM/2hozP9oaMz/aGjM/2hozP9oaM3/aGjN/2hozf9oaM3/aGjN/2hozv9oaM7/aGjO/2ho
+ zv9oaM7/aGjQ/2ho1P85Odf/Fhbg/xcX5v8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX
+ 6/8XF+z/Fxfs/xcX7f8XF+3/Fxft/xgY7v8YGO7/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8v8YGO7/Fxfm/yYm2f+Jid7/3t7y//b2+//5+fz/+vr9//r6/f/6+v3/+vr9//r6/f/6+v3/+vr9//r6
+ /f/6+v3/+vr9//r6/f/6+v3/+vr9//r6/f/6+v3/+vr9//r6/f/6+v3/+vr9//r6/f/6+v3/+vr9//r6
+ /f/6+v3/+vr9//r6/f/6+v3/+vr9//r6/f/4+Pz/eHjl/xcX3/8XF+b/Fxfo/xcX6f8XF+n/Fxfp/xcX
+ 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xcX7P8XF+z/Fxft/xcX7f8XF+3/GBju/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPH/Fxfr/x4e4f+JieP/9fX8////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////f3+/3p65/8XF9//Fxfm/xcX
+ 6P8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8XF+v/Fxfs/xcX7P8XF+3/Fxft/xcX
+ 7f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6v9AQOL/39/2////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////////////////////////////////39
+ /v96eun/Fxfi/xcX5v8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX
+ 6/8XF+z/Fxfs/xcX7f8XF+3/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/YmLn//b2
+ /f////////////v7/v/m5vn/4uL5/+Li+v/i4vr/4uL6/+Li+v/i4vr/4uL6/+Li+v/i4vr/4uL6/+Li
+ +v/i4vr/4uL6/+Li+v/i4vr/4uL6/+Li+v/i4vr/4uL6/+Li+v/i4vr/4uL6/+Li+v/i4vv/4uL7/+Li
+ +//i4vv/4uL7/+Li+//h4fv/bm7r/xcX5P8XF+f/Fxfo/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfp/xcX
+ 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/Fxfp/2xs6v/6+v7////////////m5vf/V1fX/zo62f86Otz/Ojre/zo63v86Ot7/Ojrf/zo6
+ 3v86Ot//Ojrf/zo63/87O+D/Ozvg/zs74P87O+H/Ozvh/zs74f87O+H/Ozvh/zs74v87O+L/Ozvj/zs7
+ 4/87O+P/Ozvk/zs75P87O+T/Ozvl/zs75f87O+X/Ojrm/yYm5f8XF+X/Fxfl/xcX5v8XF+f/Fxfn/xcX
+ 6P8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8XF+v/Fxfs/xcX7P8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6f9sbOr/+vr+////////////4eH2/zg40f8VFdT/FRXY/xYW
+ 2v8WFtr/Fhba/xYW2f8WFtn/FRXY/xUV2P8VFdj/FRXY/xYW2f8WFtn/Fhba/xYW2v8WFtr/Fhbb/xYW
+ 2/8WFtz/Fhbc/xYW3P8WFt3/Fhbd/xYW3f8WFt7/Fhbe/xYW3/8WFt//Fhbf/xYW4P8WFuD/Fhbh/xYW
+ 4v8WFuL/Fhbj/xYW5P8XF+X/Fxfn/xcX6P8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/Fxfr/xcX
+ 6/8XF+z/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh
+ 9v84ONL/FRXU/xUV2f8WFtr/Fhba/xUV2f8VFdb/FRXT/xUV0v8VFdH/FRXR/xUV0f8VFdH/FRXR/xUV
+ 0v8VFdL/FRXS/xUV0/8VFdP/FRXT/xUV1P8VFdT/FRXU/xUV1f8VFdX/FRXV/xUV1v8VFdb/FRXW/xUV
+ 1/8VFdf/FRXY/xUV2P8VFdj/FRXZ/xYW2f8WFtv/Fhbe/xYW4v8XF+X/Fxfo/xcX6f8XF+n/Fxfp/xcX
+ 6v8XF+r/Fxfq/xcX6/8XF+v/Fxfr/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs
+ 6v/6+v7////////////h4fb/ODjR/xUV1P8VFdj/FRXZ/xUV2P8VFdP/FBTO/xQUyf8UFMX/FBTD/xQU
+ w/8UFMP/FBTD/xQUw/8UFMT/FBTE/xQUxf8UFMX/FBTF/xUVxf8VFcb/FRXG/xUVx/8VFcf/FRXH/xUV
+ x/8VFcj/FRXI/xUVyP8VFcn/FRXJ/xUVyf8VFcr/FRXK/xUVyv8VFcz/FRXO/xUV0/8VFdn/Fhbg/xcX
+ 5f8XF+j/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+r/Fxfr/xcX6/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjw/xcX6f9sbOr/+vr+////////////4eH2/zg40f8VFdP/FRXX/xUV1/8VFdT/FBTM/xwc
+ w/9FRcT/bGzM/3d3zv93d87/d3fO/3d3z/93d8//d3fP/3d3z/93d8//d3fP/3h4z/94eM//eHjQ/3h4
+ 0P94eND/eHjQ/3h40P94eND/eHjQ/3h40P94eNH/eHjR/3h40f94eNH/eHjR/3h40v94eNL/d3fS/21t
+ 0f9GRsv/HR3N/xUV2P8WFuD/Fxfm/xcX6P8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6v8XF+v/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh9v84ONH/FRXT/xUV
+ 1v8VFdX/FBTO/yUlxv+Pj9n/5OT0//n5/P/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8
+ /v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8
+ /v/8/P7//Pz+//z8/v/5+f3/5OT1/46O3P8lJdD/Fhbb/xYW4/8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX
+ 6v8XF+r/Fxfq/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7/////////
+ ///h4fb/ODjQ/xUV0/8VFdX/FRXS/x0dyv+Pj9z/9/f8////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////29vz/iYnf/x0d1/8WFuH/Fxfm/xcX
+ 6f8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX
+ 6f9sbOr/+vr+////////////4eH2/zg40P8VFdL/FRXV/xUV0P9HR9D/5OT2////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////93d
+ 9f8+Ptn/Fhbf/xcX5f8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6f8XF+r/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh9v84OND/FRXS/xUV1P8VFdD/b2/a//n5
+ /f//////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////29vz/YGDg/xYW3f8XF+X/Fxfo/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfp/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7////////////h4fb/ODjQ/xUV
+ 0f8VFdT/FRXP/3p63f/9/f7/////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////+vr9/2pq4f8WFt3/Fhbk/xcX5/8XF+j/Fxfo/xcX
+ 6f8XF+n/Fxfp/xcX6f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6f9sbOr/+vr+////
+ ////////4eH2/zg40P8VFdH/FRXU/xUVz/96et3//f3+////////////////////////////+/v+//n5
+ /v/5+f7/+fn+//n5/v/5+f7/+fn+//n5/v/5+f7/+fn+//n5/v/5+f7/+fn+//v7/v//////////////
+ //////////////////////////////////////////////////////////////r6/f9qauH/Fhbd/xYW
+ 5P8XF+f/Fxfo/xcX6P8XF+j/Fxfp/xcX6f8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8P8XF+n/bGzq//r6/v///////////+Hh9v84OM//FRXR/xUV0/8VFc7/enrd//39/v//////////////
+ ////////+/v+/5SU5f9iYt7/YmLi/2Ji4/9iYuT/YmLk/2Ji5f9iYuX/YmLl/2Ji5f9iYuX/YmLk/2Ji
+ 4f+Vlef/+/v+////////////////////////////////////////////////////////////////////
+ ///6+v3/amrh/xYW3P8WFuP/Fxfm/xcX5/8XF+j/Fxfo/xcX6P8XF+n/Fxfp/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7////////////h4fb/ODjP/xUV0P8VFdP/FRXO/3p6
+ 3f/9/f7///////////////////////n5/f9fX9j/FRXO/xUV1P8VFdb/FRXX/xUV1/8VFdf/FRXY/xUV
+ 2P8VFdj/FRXY/xUV1/8VFdL/YWHb//n5/f//////////////////////////////////////////////
+ ////////////////////////+vr9/2pq4f8WFtz/Fhbj/xcX5v8XF+f/Fxfn/xcX6P8XF+j/Fxfo/xcX
+ 6f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6f9sbOr/+vr+////////////4eH2/zg4
+ z/8VFdD/FRXS/xUVzv96et3//f3+///////////////////////5+f3/X1/W/xQUyf8UFM7/FRXQ/xUV
+ 0P8VFdH/FRXR/xUV0f8VFdL/FRXS/xUV0v8VFdH/FBTN/2Fh2f/5+f3/////////////////////////
+ //////////////////////////////////////////////r6/f9qauH/Fhbc/xYW4/8XF+b/Fxfm/xcX
+ 5/8XF+f/Fxfo/xcX6P8XF+j/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6
+ /v///////////+Hh9v84OM7/FRXP/xUV0v8VFc3/enrd//39/v//////////////////////+fn9/19f
+ 0P8TE7//ExPC/xMTxP8TE8T/ExPE/xMTxf8TE8X/ExPG/xQUxv8UFMb/ExPF/xMTw/9gYNP/+fn9////
+ ///////////////////////////////////////////////////////////////////6+v3/amrh/xYW
+ 3P8WFuL/Fxfl/xcX5v8XF+b/Fxfn/xcX5/8XF+j/Fxfo/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/Fxfp/2xs6v/6+v7////////////h4fb/ODjO/xUVz/8VFdL/FRXN/3p63P/9/f7/////////
+ //////////////v7/f+JidP/UVHB/1FRwv9RUcP/UVHD/1FRw/9RUcP/UVHE/1FRxP9RUcT/UVHE/1FR
+ xP9RUcP/iorV//v7/f//////////////////////////////////////////////////////////////
+ ////////+vr9/2pq4P8WFtv/Fhbi/xcX5f8XF+b/Fxfm/xcX5v8XF+f/Fxfn/xcX6P8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6f9sbOr/+vr+////////////4eH2/zc3zv8VFc//FRXR/xUV
+ zP96etz//f3+////////////////////////////9vb7//Ly+f/y8vn/8vL5//Ly+f/y8vn/8vL5//Ly
+ +f/y8vn/8vL5//Ly+f/y8vn/8vL5//b2+///////////////////////////////////////////////
+ //////////////////////////////r6/f9qauD/Fhbb/xYW4f8XF+X/Fxfl/xcX5v8XF+b/Fxfm/xcX
+ 5/8XF+f/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh
+ 9v83N83/FBTO/xUV0f8VFcz/enrc//39/v//////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////6+v3/amrg/xYW2v8WFuH/Fhbk/xcX
+ 5f8XF+X/Fxfm/xcX5v8XF+b/Fxfn/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs
+ 6v/6+v7////////////h4fb/NzfN/xQUzv8VFdH/FRXM/3p63P/9/f7/////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////+vr9/2pq
+ 4P8WFtr/Fhbh/xYW5P8WFuT/Fxfl/xcX5f8XF+b/Fxfm/xcX5v8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjw/xcX6f9sbOr/+vr+////////////4eH2/zc3zf8UFM7/FRXQ/xUVy/96etz//f3+////
+ ////////////////////////9/f9//Pz/P/z8/z/8/P8//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz
+ /f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P8//f3/f//////////////
+ //////////////r6/f9qauD/Fhba/xYW4P8WFuT/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+b/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh9v83N83/FBTN/xUV
+ 0P8VFcv/enrb//39/v//////////////////////+/v9/4uL4f9VVdn/VVXe/1VV3/9VVeD/VVXg/1VV
+ 4P9VVeD/VVXh/1VV4f9VVeH/VVXh/1VV4f9VVeL/VVXi/1VV4v9VVeL/VVXj/1VV4/9VVeP/VVXi/1VV
+ 3v+Wluf//f3+///////////////////////6+v3/amrf/xYW2f8WFuD/Fhbj/xYW5P8WFuT/Fhbk/xcX
+ 5f8XF+X/Fxfm/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7/////////
+ ///h4fb/NzfM/xQUzf8VFc//FRXK/3p62//9/f7///////////////////////n5/f9fX9b/FBTL/xUV
+ 0f8VFdP/FRXT/xUV1P8VFdT/FRXU/xUV1f8VFdX/FRXV/xUV1v8VFdb/FRXW/xUV1/8VFdf/FRXY/xUV
+ 2P8VFdj/FRXY/xUV1v8VFdH/bm7d//z8/v//////////////////////+vr9/2lp3/8WFtn/Fhbg/xYW
+ 4/8WFuP/Fhbk/xYW5P8WFuT/Fxfl/xcX5f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX
+ 6f9sbOr/+vr+////////////4eH2/zc3zP8UFMz/FRXP/xUVyv96etv//f3+////////////////////
+ ///5+f3/X1/T/xQUxf8UFMr/FBTM/xQUzP8UFM3/FBTN/xQUzf8UFM7/FBTO/xQUzv8VFc//FRXP/xUV
+ z/8VFdD/FRXQ/xUV0f8VFdH/FRXR/xUV0f8VFdD/FBTM/21t2//8/P7///////////////////////r6
+ /f9pad//FhbZ/xYW3/8WFuL/Fhbj/xYW4/8WFuT/Fhbk/xYW5P8XF+X/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8P8XF+n/bGzq//r6/v///////////+Hh9f83N8z/FBTM/xQUz/8VFcr/enrb//39
+ /v//////////////////////+fn9/15ezv8TE7v/ExO//xMTwP8TE8D/ExPA/xMTwP8TE8H/ExPB/xMT
+ wf8TE8L/ExPC/xMTw/8TE8P/ExPD/xMTxP8TE8T/ExPE/xMTxf8TE8T/ExPE/xMTwv9tbdb//Pz+////
+ ///////////////////6+v3/aWnf/xYW2P8WFt//Fhbi/xYW4/8WFuP/Fhbj/xYW5P8WFuT/Fhbk/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7////////////h4fX/NzfL/xQU
+ zP8UFM7/FRXJ/3p62//9/f7///////////////////////v7/f+RkdT/XV3C/11dw/9dXcP/XV3D/11d
+ xP9dXcT/XV3E/11dxf9dXcX/XV3F/11dxf9dXcX/Xl7G/15exv9eXsb/Xl7G/15exv9eXsb/Xl7G/15e
+ xv9eXsb/m5va//39/v//////////////////////+vr9/2lp3/8WFtj/Fhbe/xYW4v8WFuL/Fhbj/xYW
+ 4/8WFuP/Fhbk/xYW5P8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6f9sbOr/+vr+////
+ ////////4eH1/zc3y/8UFMv/FBTO/xUVyf96etr//f3+////////////////////////////+/v9//n5
+ /P/5+fz/+fn8//n5/P/5+fz/+fn8//n5/P/5+fz/+fn8//n5/P/5+fz/+fn8//n5/P/5+fz/+fn8//n5
+ /P/5+fz/+fn8//n5/P/5+fz/+fn8//v7/f////////////////////////////r6/f9pad7/FhbX/xYW
+ 3v8WFuH/Fhbi/xYW4v8WFuP/Fhbj/xYW4/8WFuT/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8P8XF+n/bGzq//r6/v///////////+Hh9f83N8v/FBTL/xQUzf8VFcn/enrc//39/v//////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///6+v3/aWne/xYW1/8WFt7/Fhbh/xYW4f8WFuL/Fhbi/xYW4/8WFuP/Fhbj/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPD/Fxfp/2xs6v/6+v7////////////h4fX/NzfK/xQUy/8UFM7/FRXS/3x8
+ 5//9/f//////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////+vr9/2lp3v8WFtf/Fhbd/xYW4P8WFuH/Fhbh/xYW4v8WFuL/Fhbj/xYW
+ 4/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xcX6v9sbOv/+vr+////////////4eH2/zc3
+ zP8UFMz/FRXY/xgY5P98fOv//f3/////////////////////////////9/f9//Pz/P/z8/z/8/P8//Pz
+ /P/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz/f/z8/3/8/P9//Pz
+ /f/z8/3/8/P8//j4/f////////////////////////////r6/f9pad3/FhbW/xYW3f8WFuD/Fhbh/xYW
+ 4f8WFuH/Fhbi/xYW4v8XF+j/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f8YGOz/bGzt//r6
+ /v///////////+Hh9v83N87/FRXX/xcX6v8YGOj/fHzr//39////////////////////////+/v9/46O
+ 4f9ZWdj/WVnc/1lZ3v9ZWd7/WVne/1lZ3/9ZWd//Wlrf/1pa3/9aWt//Wlrg/1pa4P9aWuD/Wlrh/1pa
+ 4f9aWuH/Wlrh/1pa4f9aWuL/Wlrg/1lZ3P+YmOb//f3+///////////////////////6+v3/aWnd/xUV
+ 1v8WFtz/Fhbg/xYW4P8WFuH/Fhbh/xYW4v8XF+j/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPL/GBjv/2xs8P/4+P7//f3///39///f3/f/OTnc/xgY6/8YGO//GBjo/3x86//9/f//////////
+ //////////////n5/f9fX9T/FBTH/xQUzf8VFc//FRXQ/xUV0P8VFdH/FRXR/xUV0f8VFdL/FRXS/xUV
+ 0/8VFdP/FRXT/xUV1P8VFdT/FRXU/xUV1P8VFdX/FRXV/xUV0/8VFc7/bW3c//z8/v//////////////
+ ////////+vr9/2lp3f8VFdb/Fhbc/xYW3/8WFuD/Fhbg/xYW4f8WFuf/GBjx/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f89PfL/e3v2/3199v99ffb/cHD0/ycn7/8YGPH/GBjv/xgY
+ 6P98fOv//f3////////////////////////5+f3/X1/R/xMTwv8UFMb/FBTI/xQUyf8UFMn/FBTJ/xQU
+ yv8UFMr/FBTK/xQUy/8UFMv/FBTL/xQUzP8UFMz/FBTM/xQUzf8UFM3/FBTO/xQUzf8UFMz/FBTI/21t
+ 2f/8/P7///////////////////////r6/f9pad3/FRXV/xYW3P8WFt//Fhbf/xYW4P8WFub/GBjx/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xkZ8v8ZGfH/GRnx/xkZ
+ 8v8YGPL/GBjy/xgY7/8YGOj/fHzr//39////////////////////////+fn9/15ezP8TE7f/ExO6/xMT
+ vP8TE7z/ExO8/xMTvf8TE73/ExO+/xMTvv8TE77/ExO//xMTv/8TE7//ExO//xMTv/8TE8D/ExPA/xMT
+ wP8UFMH/ExPA/xMTvv9tbdT//Pz+///////////////////////6+v3/aWnd/xUV1f8WFtv/Fhbf/xYW
+ 3/8WFub/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8v8YGO//GBjo/3x86//9/f////////////////////////v7
+ /f+amtb/aWnE/2pqxf9qasX/amrG/2pqxv9qasb/amrG/2pqxv9qasf/amrH/2pqx/9qasf/amrH/2pq
+ x/9qasj/amrI/2pqyP9qasj/amrI/2pqyP9qasj/o6Pc//39/v//////////////////////+vr9/2lp
+ 3f8VFdX/Fhbb/xYW3v8WFub/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjw/xgY6f98fOv//f3/////
+ /////////////////////////f3+//z8/f/8/P3//Pz9//z8/f/8/P3//Pz9//z8/f/8/P3//Pz+//z8
+ /v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//39/v//////////////
+ //////////////r6/f9pad3/FRXV/xYW2/8WFuX/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8P8YGOr/fHzt//39////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////6+v3/aWne/xYW1v8WFuL/GBjx/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPH/GBjs/3Jy7v/5+f7/////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////9vb8/2Bg3v8WFt7/GBjv/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xgY7/9LS+7/5ub7////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////////97e
+ +P8/P+P/GBjt/xgY8v8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPH/ISHu/5OT
+ 9f/29v7/////////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ //////////////b2/v+KivH/Hx/t/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8f8pKfD/jY32/9/f/P/29v7/+vr+//r6/v/6+v7/+vr+//r6/v/6+v7/+vr+//r6
+ /v/6+v7/+vr+//r6/v/6+v7/+vr+//r6/v/6+v7/+vr+//r6/v/6+v7/+vr+//r6/v/6+v7/+vr+//r6
+ /v/6+v7/+vr+//r6/v/6+v7/9vb+/9/f/P+Li/T/KCjv/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/x8f8P9BQfL/ZGT0/21t9P9tbfT/bW30/21t
+ 9P9tbfT/bW30/21t9P9tbfT/bW30/21t9P9tbfT/bW30/21t9P9tbfT/bW30/21t9P9tbfT/bW30/21t
+ 9P9tbfT/bW30/21t9P9tbfT/bW30/21t9P9tbfT/bW30/2Rk9P9CQvH/Hx/w/xgY8v8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/GBjy/xgY
+ 8v8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY
+ 8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPH/GBjx/xgY8f8YGPL/GBjy/xgY
+ 8v8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAA
+ AAAAAAAAGBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/Fxft/xYW5P8WFuP/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+b/Fxfn/xcX5/8XF+j/Fxfo/xcX
+ 6f8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6/8XF+v/Fxfs/xcX7P8XF+3/GBju/xgY7v8YGO//GBjv/xgY
+ 8P8YGPD/GBjx/xgY8f8YGPL/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8XF+7/Fhbk/xYW4v8WFuP/Fhbj/xYW5P8WFuT/Fxfl/xcX5f8XF+b/Fxfm/xcX
+ 5/8XF+f/Fxfo/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY
+ 7v8YGO7/GBjv/xgY7/8YGPD/GBjw/xgY8f8YGPH/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xcX7f8WFuP/Fhbh/xYW4v8WFuL/Fhbj/xYW4/8WFuT/Fhbk/xcX
+ 5f8XF+X/Fxfm/xcX5v8XF+f/Fxfn/xcX6P8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6v8XF+r/Fxfr/xcX
+ 6/8XF+z/Fxfs/xcX7f8YGO7/GBju/xgY7/8YGO//GBjw/xgY8P8YGPH/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/Fxft/xYW4v8WFuD/Fhbh/xYW4f8WFuL/Fhbi/xYW
+ 4/8WFuP/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+b/Fxfn/xcX5/8XF+j/Fxfo/xcX6f8XF+n/Fxfp/xcX
+ 6f8XF+r/Fxfq/xcX6/8XF+v/Fxfs/xcX7P8XF+3/GBju/xgY7v8YGO//GBjv/xgY8P8YGPD/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/GBjx/xgY8f8XF+r/Fhbf/xYW3f8WFt3/Fhbe/xYW
+ 3v8WFt//Fhbf/xYW4P8WFuD/Fhbh/xYW4f8WFuL/Fhbi/xYW4/8WFuP/Fhbj/xcX5P8XF+X/Fxfl/xcX
+ 5v8XF+f/Fxfn/xcX6f8XF+n/Fxfq/xcX6v8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY7v8YGO7/GBjv/xgY
+ 7/8YGPD/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f8YGO7/Fxfq/xYW4v8VFdX/FRXT/xUV
+ 1P8VFdT/FRXV/xUV1f8VFdb/FRXW/xUV1/8VFdf/FRXX/xUV2P8VFdj/FRXZ/xUV2f8VFdr/FRXa/xUV
+ 2v8WFtv/Fhbc/xYW3P8WFt3/Fhbh/xcX5f8XF+j/Fxfp/xcX6v8XF+r/Fxfr/xcX6/8XF+z/Fxfs/xcX
+ 7f8YGO7/GBju/xgY7/8YGO//GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjx/xgY7P8XF+P/GRnV/xwc
+ xv8cHML/HBzD/xwcw/8dHcP/HR3E/x0dxP8dHcX/HR3F/x0dxf8dHcb/HR3G/x0dx/8dHcf/HR3I/x0d
+ yP8dHcj/HR3I/x0dyf8dHcn/HR3K/x0dyv8eHs3/HR3T/xgY3v8XF+b/Fxfp/xcX6f8XF+r/Fxfq/xcX
+ 6/8XF+v/Fxfs/xcX7P8XF+3/GBju/xgY7v8YGO//GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/GBju/xgY
+ 4/9BQdj/lpbd/7m55f+8vOb/vLzm/7y85v+8vOb/vLzn/7y85/+8vOf/vLzn/7y85/+8vOf/vLzn/7y8
+ 5/+8vOf/vLzo/7y86P+8vOj/vLzo/7y86P+9vej/vb3o/7296P+9ven/rKzo/zIy3v8XF+X/Fxfp/xcX
+ 6f8XF+n/Fxfq/xcX6v8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY7v8YGO7/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPH/Fxfr/0JC4P/R0fL//f3+////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////6Oj6/z09
+ 4f8XF+X/Fxfo/xcX6f8XF+n/Fxfp/xcX6v8XF+r/Fxfr/xcX6/8XF+z/Fxfs/xcX7f8YGO7/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPH/Gxvo/5eX7P/9/f7////////////+/v///v7///7+///+/v///v7///7+
+ ///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+///+/v///v7///7+
+ ///+/v//6Oj7/z095P8XF+b/Fxfo/xcX6f8XF+n/Fxfp/xcX6f8XF+r/Fxfq/xcX6/8XF+v/Fxfs/xcX
+ 7P8XF+3/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/7u79P///////////8nJ8f+Pj+j/j4/r/4+P
+ 7P+Pj+z/j4/s/4+P7P+Pj+z/j4/t/4+P7f+Pj+3/j4/t/4+P7f+Pj+7/j4/u/4+P7v+Pj+//j4/v/4+P
+ 7/+Pj+//j4/w/4+P8P+Pj/D/g4Pv/ysr5v8XF+b/Fxfn/xcX6P8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX
+ 6v8XF+v/Fxfr/xcX7P8XF+z/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//4+P
+ 4/8XF9L/FxfY/xcX2v8XF9r/Fxfa/xYW2f8XF9n/FxfZ/xcX2f8XF9r/Fxfa/xcX2/8XF9v/Fxfc/xcX
+ 3P8XF93/Fxfd/xcX3v8XF97/Fxff/xcX3/8XF+D/Fxfg/xYW4f8WFuL/Fhbj/xcX5P8XF+X/Fxfn/xcX
+ 6f8XF+n/Fxfp/xcX6v8XF+r/Fxfr/xcX6/8XF+z/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+
+ 9f///////v7//46O4/8WFtL/FhbZ/xYW2v8VFdj/FRXU/xUV0f8UFM//FBTO/xQUz/8UFM//FBTP/xQU
+ 0P8VFdD/FRXR/xUV0f8VFdL/FRXS/xUV0/8VFdP/FRXU/xUV1P8VFdX/FRXV/xUV1v8VFdb/FRXX/xUV
+ 2P8WFtz/Fhbh/xcX5v8XF+j/Fxfp/xcX6f8XF+r/Fxfq/xcX6/8XF+v/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/ICDo/76+9f///////v7//46O4/8WFtL/FRXY/xUV1/8VFdH/GRnI/y4uxP86OsX/OjrE/zo6
+ xf86OsX/OjrF/zo6xf87O8b/OzvG/zs7xv87O8f/OzvH/zs7x/87O8j/OzvI/zs7yP87O8n/OzvJ/zs7
+ yf87O8r/OzvK/zk5zP8pKc3/FxfV/xYW3/8XF+b/Fxfp/xcX6f8XF+n/Fxfq/xcX6v8XF+v/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4/8WFtH/FRXW/xUV0v8jI8n/hYXY/9XV
+ 7//n5/X/5+f1/+fn9f/n5/X/5+f2/+fn9v/n5/b/6Oj2/+jo9v/o6Pb/6Oj2/+jo9v/o6Pb/6Oj2/+jo
+ 9v/o6Pb/6Oj2/+jo9v/o6Pb/6Oj2/+Xl9v/Kyu3/Z2fY/xsb1/8WFuP/Fxfo/xcX6f8XF+n/Fxfp/xcX
+ 6v8XF+r/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4/8WFtH/FRXV/xkZ
+ zv+Ghtz/9vb8////////////////////////////////////////////////////////////////////
+ ////////////////////////////////////////////////////////6Oj4/1dX2/8WFt//Fxfm/xcX
+ 6f8XF+n/Fxfp/xcX6f8XF+r/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O
+ 4v8WFtD/FRXU/y8v0P/W1vP/////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////////////////v7//6Sk
+ 6v8bG9z/Fxfm/xcX6P8XF+n/Fxfp/xcX6f8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+
+ 9f///////v7//46O4v8WFtD/FRXT/zs70//n5/n/////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////7y88f8fH93/Fxfl/xcX6P8XF+j/Fxfp/xcX6f8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/ICDo/76+9f///////v7//46O4v8WFs//FRXT/zw80//o6Pn/////////////////+vr+/+Li
+ +P/e3vn/3t75/97e+f/e3vn/3t75/97e+v/e3vn/3t75/+Li+f/6+v7/////////////////////////
+ /////////////////////////////7298f8fH9z/Fxfk/xcX5/8XF+j/Fxfo/xcX6f8XF+n/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4v8WFs//FRXS/zw80v/o6Pn/////////
+ ////////4uL3/0dH1v8wMNn/MDDb/zAw3P8wMNz/MDDc/zAw3f8wMN3/MDDb/0hI2f/i4vj/////////
+ /////////////////////////////////////////////7298f8fH9z/Fhbj/xcX5/8XF+f/Fxfo/xcX
+ 6P8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4v8WFs7/FRXS/zw8
+ 0v/o6Pn/////////////////3t72/y8vzf8UFM7/FRXR/xUV0v8VFdL/FRXT/xUV0/8VFdP/FRXR/y8v
+ 0f/e3vb//////////////////////////////////////////////////////7298f8fH9v/Fhbj/xcX
+ 5v8XF+f/Fxfn/xcX6P8XF+j/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O
+ 4f8WFs7/FRXR/zw80v/o6Pn/////////////////39/1/zIyw/8YGL//GBjB/xgYwf8YGML/GBjC/xgY
+ w/8YGMP/GBjC/zIyxv/f3/X//////////////////////////////////////////////////////729
+ 8f8fH9v/Fhbj/xcX5v8XF+b/Fxfn/xcX5/8XF+j/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+
+ 9f///////v7//46O4f8WFs7/FRXR/zw80f/o6Pj/////////////////8/P6/7S04v+qqt//qqrg/6qq
+ 4P+qquD/qqrg/6qq4P+qquH/qqrg/7S04//z8/r/////////////////////////////////////////
+ /////////////7298f8fH9r/Fhbi/xcX5f8XF+b/Fxfm/xcX5/8XF+f/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/ICDo/76+9f///////v7//46O4f8WFs3/FRXQ/zw80f/o6Pj/////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////7298f8fH9r/Fhbi/xcX5f8XF+X/Fxfm/xcX5v8XF+f/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4f8VFc3/FRXQ/zw80P/o6Pj/////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////7298f8fH9n/Fhbh/xYW5P8XF+X/Fxfl/xcX
+ 5v8XF+b/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O4f8VFcz/FRXP/zw8
+ 0P/o6Pj/////////////////8/P8/7W17f+srO7/rKzv/6ys8P+srPD/rKzw/6ys8P+srPD/rKzw/6ys
+ 8P+srPH/rKzx/6ys8f+srPH/rKzx/6ys8P/FxfL//f3+/////////////////7298P8fH9n/Fhbh/xYW
+ 5P8WFuT/Fxfl/xcX5f8XF+b/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O
+ 4P8VFcz/FBTP/zs70P/o6Pj/////////////////39/2/zMzzv8aGtH/GhrU/xoa1f8aGtX/GhrV/xoa
+ 1v8aGtb/GhrW/xoa1/8aGtf/GhrY/xoa2P8aGtn/GhrZ/xoa1f9fX9v/+Pj9/////////////////729
+ 8P8fH9j/Fhbg/xYW4/8WFuT/Fhbk/xcX5f8XF+X/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+
+ 9f///////v7//46O4P8VFcv/FBTO/zs7z//o6Pj/////////////////3t71/y4uyP8UFMf/FBTK/xQU
+ yv8UFMv/FBTL/xQUzP8UFMz/FBTN/xQUzf8UFM7/FBTO/xQUz/8UFM//FBTP/xQUzP9bW9f/+Pj9////
+ /////////////7298P8fH9j/Fhbg/xYW4/8WFuP/Fhbk/xYW5P8XF+X/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/ICDo/76+9f///////v7//46O4P8VFcv/FBTO/zs7z//o6Pj/////////////////4uL1/0VF
+ wf8tLb3/Li6+/y4uvv8uLr//Li6//y4uwP8uLsD/Li7A/y4uwf8uLsH/Li7B/y4uwv8uLsL/Li7C/y4u
+ wf9tbdL/+fn9/////////////////7298P8fH9j/Fhbf/xYW4v8WFuP/Fhbj/xYW5P8WFuT/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O3/8VFcr/FBTN/zs7zv/o6Pj/////////
+ ////////+vr9/+Hh8v/d3fH/3t7x/97e8f/e3vH/3t7x/97e8f/e3vH/3t7x/97e8f/e3vH/3t7x/97e
+ 8v/e3vL/3t7y/97e8v/o6Pb//v7//////////////////7298P8fH9f/Fhbf/xYW4v8WFuL/Fhbj/xYW
+ 4/8WFuT/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/ICDo/76+9f///////v7//46O3/8VFcr/FBTN/zw8
+ 0f/o6Pn/////////////////////////////////////////////////////////////////////////
+ /////////////////////////////////////////////////////////////7298P8fH9b/Fhbe/xYW
+ 4f8WFuL/Fhbi/xYW4/8WFuP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPH/ICDp/76+9f///////v7//46O
+ 4P8VFcr/FRXU/z094f/o6Pv///////////////////////39/v/9/f7//f3+//39///9/f///f3///39
+ ///9/f///f3///39///9/f///f3///39///9/f///f3///39///9/f///////////////////////729
+ 7/8eHtb/Fhbe/xYW4f8WFuH/Fhbi/xYW4v8WFuT/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPH/ISHr/76+
+ 9v///////v7//46O4v8WFtP/Fxfn/z4+6P/o6Pv/////////////////7e36/4qK4v98fOP/fHzk/3x8
+ 5f98fOX/fHzl/3x85v98fOb/fHzm/3x85/98fOf/fHzn/3x85/98fOf/fHzn/3x85f+jo+r/+/v+////
+ /////////////7297/8eHtb/Fhbd/xYW4P8WFuH/Fhbh/xYW5P8XF+7/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPL/ICDv/66u9//o6P3/5+f9/4OD6/8YGOn/GBju/z4+6P/o6Pv/////////////////3t72/y8v
+ yv8UFMv/FRXO/xUVz/8VFdD/FRXQ/xUV0f8VFdH/FRXS/xUV0v8VFdL/FRXT/xUV0/8VFdT/FRXT/xUV
+ 0P9bW9j/+Pj9/////////////////7297/8eHtX/Fhbd/xYW4P8WFuD/Fhbj/xcX7v8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/Ghry/zQ08v8/P/P/Pz/z/yws8v8YGPL/GBju/z4+6P/o6Pv/////////
+ ////////3t70/y4uwv8TE8D/ExPC/xMTw/8TE8P/ExPE/xMTxP8TE8X/ExPF/xQUxf8UFMb/FBTG/xQU
+ x/8UFMf/FBTH/xQUxf9bW9P/+Pj9/////////////////7297/8eHtX/Fhbc/xYW3/8WFuL/Fxft/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/GBju/z4+
+ 6P/o6Pv/////////////////6Oj2/2xsyf9ZWcT/WVnE/1paxf9aWsX/WlrF/1paxv9aWsb/WlrG/1pa
+ xv9aWsf/WlrH/1pax/9aWsf/WlrH/1pax/+MjNf/+vr9/////////////////7297/8eHtX/Fhbc/xYW
+ 4f8XF+3/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjv/z4+6f/o6Pv//////////////////v7///n5/P/4+Pz/+Pj8//j4/P/4+Pz/+Pj8//j4
+ /P/4+Pz/+Pj8//j4/P/4+Pz/+Pj8//j4/P/4+Pz/+Pj8//j4/P/6+v3//////////////////////729
+ 7/8eHtX/Fhbe/xcX7P8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjw/zw86//m5vv/////////////////////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////7q68P8eHtn/Fxfq/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjx/yws7v/Ly/n/////////////////////////
+ ////////////////////////////////////////////////////////////////////////////////
+ /////////////////////////f3//5eX7f8bG+j/GBjy/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xoa8P9qavP/6en9//7+
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////////////////////9/f//09P6/0ND7v8YGPH/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8v8dHfH/WVnz/6am+P+9vfr/vr76/76++v++vvr/vr76/76++v++vvr/vr76/76++v++vvr/vr76/76+
+ +v++vvr/vr76/76++v++vvr/vr76/76++v++vvr/vr76/7u7+v+YmPf/RETy/xkZ8f8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjy/x0d8f8hIfL/ISHx/yEh8f8hIfH/ISHx/yEh8f8hIfH/ISHx/yEh
+ 8f8hIfH/ISHx/yEh8f8hIfH/ISHx/yEh8f8hIfH/ISHx/yEh8f8hIfH/ISHx/yEh8v8cHPL/GBjy/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAKAAAACgAAABQAAAAAQAgAAAAAABAGgAAAAAAAAAAAAAAAAAAAAAAABgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8WFub/Fhbj/xYW5P8WFuT/Fxfl/xcX
+ 5f8XF+b/Fxfn/xcX5/8XF+j/Fxfp/xcX6f8XF+n/Fxfp/xcX6v8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY
+ 7v8YGO7/GBjv/xgY8P8YGPD/GBjx/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8P8WFub/Fhbi/xYW4v8WFuP/Fhbk/xYW5P8XF+X/Fxfl/xcX5v8XF+f/Fxfn/xcX
+ 6P8XF+n/Fxfp/xcX6f8XF+n/Fxfq/xcX6/8XF+v/Fxfs/xcX7P8XF+3/GBju/xgY7v8YGO//GBjw/xgY
+ 8P8YGPH/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8P8WFuX/Fhbh/xYW
+ 4f8WFuL/Fhbi/xYW4/8WFuT/Fhbk/xcX5f8XF+X/Fxfm/xcX5/8XF+f/Fxfo/xcX6f8XF+n/Fxfp/xcX
+ 6f8XF+r/Fxfr/xcX6/8XF+z/Fxfs/xcX7f8YGO7/GBju/xgY7/8YGO//GBjw/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPL/GBjy/xgY7v8WFuL/Fhbe/xYW3v8WFt//Fhbg/xYW4P8WFuH/Fhbi/xYW
+ 4v8WFuP/Fhbj/xcX5P8XF+T/Fxfl/xcX5v8XF+b/Fxfn/xcX6P8XF+n/Fxfp/xcX6v8XF+v/Fxfr/xcX
+ 7P8XF+z/Fxft/xgY7v8YGO7/GBjv/xgY7/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxft/xcX
+ 5v8VFdn/FRXU/xUV1f8VFdX/FRXW/xUV1v8VFdf/FRXY/xUV2P8VFdn/FRXZ/xUV2v8WFtv/Fhbb/xYW
+ 2/8WFtz/Fhbd/xYW3f8WFuD/Fhbk/xcX6P8XF+n/Fxfq/xcX6/8XF+v/Fxfs/xcX7P8XF+3/GBju/xgY
+ 7v8YGO//GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPD/Fxfo/xwc2/8qKsv/LS3F/y0txv8tLcb/LS3H/y0t
+ x/8tLcf/LS3I/y0tyP8tLcn/LS3J/y0tyv8uLsr/Li7L/y4uy/8uLsv/Li7M/y4uzP8uLs3/Li7R/yAg
+ 2/8XF+X/Fxfp/xcX6f8XF+r/Fxfr/xcX6/8XF+z/Fxfs/xcX7f8YGO7/GBju/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPL/Fxfr/zEx3/+dneT/1dXv/9vb8f/b2/H/29vx/9vb8v/b2/L/29vy/9vb8v/b2/L/29vy/9vb
+ 8v/b2/L/29vy/9vb8v/b2/L/29vy/9vb8v/b2/L/29vy/9ra8v9kZOP/Fxfk/xcX6P8XF+n/Fxfp/xcX
+ 6v8XF+v/Fxfr/xcX7P8XF+z/Fxft/xgY7v8YGPP/GBjz/xgY8/8YGPP/GBjx/x4e6P+enuz//Pz+////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////9/f7/c3Pp/xcX5P8XF+j/Fxfp/xcX6f8XF+n/Fxfq/xcX6/8XF+v/Fxfs/xcX
+ 7P8XF+3/GBjz/xgY8/8YGPP/GBjz/xgY8P8tLej/19f4///////t7fr/w8Py/8DA9P/BwfT/wcH0/8HB
+ 9P/BwfT/wcH1/8HB9f/BwfX/wcH1/8HB9f/BwfX/wcH1/8HB9v/Bwfb/wcH2/8HB9v/Bwfb/v7/3/1pa
+ 6f8XF+b/Fxfo/xcX6f8XF+n/Fxfp/xcX6f8XF+r/Fxfr/xcX6/8XF+z/Fxfs/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/MTHp/93d+f//////wcHv/ygo1P8gINn/ICDb/yAg2/8gINr/Hx/a/x8f2v8gINv/ICDb/yAg
+ 3P8gINz/ICDd/yAg3v8gIN7/ICDf/yAg3/8gIOD/ICDg/yAg4f8aGuL/Fhbi/xYW4/8XF+X/Fxfn/xcX
+ 6P8XF+n/Fxfp/xcX6v8XF+v/Fxfr/xcX7P8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fn//////76+
+ 7/8eHtP/FhbZ/xUV2f8VFdX/FRXQ/xQUzf8UFMz/FBTN/xQUzf8UFM7/FBTO/xUVz/8VFc//FRXQ/xUV
+ 0P8VFdH/FRXS/xUV0v8VFdP/FRXT/xUV1P8VFdX/FRXX/xYW3f8XF+T/Fxfo/xcX6f8XF+n/Fxfq/xcX
+ 6/8XF+v/GBjz/xgY8/8YGPP/GBjz/xgY8P8xMen/3d35//////++vu7/Hh7S/xUV1/8VFdT/Hh7K/09P
+ zP9ubtH/cHDR/3Bw0f9wcNL/cHDS/3Bw0v9xcdL/cXHT/3Fx0/9xcdP/cXHU/3Fx1P9xcdT/cXHU/3Fx
+ 1f9xcdX/cXHV/2ho1f87O9L/GBjZ/xcX5P8XF+j/Fxfp/xcX6f8XF+r/Fxfr/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/MTHp/93d+f//////vr7u/x4e0v8VFdX/Hh7O/4+P3v/u7vj//Pz+//z8/v/8/P7//Pz+//z8
+ /v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/6+v3/2dnz/1VV
+ 2v8XF9//Fxfn/xcX6f8XF+n/Fxfp/xcX6v8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fn//////76+
+ 7v8eHtH/FRXT/1FR1f/u7vr/////////////////////////////////////////////////////////
+ //////////////////////////////////////////////////+8vO//IiLd/xcX5v8XF+n/Fxfp/xcX
+ 6f8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY8P8xMen/3d35//////++vu7/Hh7Q/xUV0v9wcN3//Pz+////
+ ////////////////////////////////////////////////////////////////////////////////
+ ////////////////////////2tr3/y4u3v8XF+X/Fxfo/xcX6f8XF+n/Fxfp/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/MTHp/93d+f//////vb3u/x4e0P8VFdL/c3Pe//39/v////////////Ly/P/Ly/T/yMj1/8jI
+ 9f/IyPb/yMj2/8jI9v/IyPb/y8v1//Ly/P///////////////////////////////////////////9zc
+ 9/8vL97/Fxfk/xcX5/8XF+j/Fxfp/xcX6f8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fn//////729
+ 7v8eHs//FRXR/3Nz3f/9/f7////////////JyfH/KyvS/yEh1v8hIdj/ISHY/yEh2f8hIdr/ISHZ/yws
+ 1f/Ly/P////////////////////////////////////////////c3Pf/Ly/d/xYW5P8XF+f/Fxfn/xcX
+ 6P8XF+n/GBjz/xgY8/8YGPP/GBjz/xgY8P8xMen/3d35//////+9ve3/Hh7P/xUV0P9zc93//f3+////
+ ////////xsbv/x8fxv8UFMn/FBTK/xQUy/8UFMv/FBTM/xQUy/8gIMr/x8fw////////////////////
+ ////////////////////////3Nz3/y8v3f8WFuP/Fxfm/xcX5/8XF+f/Fxfo/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/MTHp/93d+f//////vb3t/x4ezv8VFdD/c3Pd//39/v///////////9zc8v92dtD/b2/P/29v
+ 0P9vb9D/b2/Q/29v0P9vb9H/dnbS/93d8////////////////////////////////////////////9zc
+ 9/8vL9z/Fhbj/xcX5f8XF+b/Fxfn/xcX5/8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fn//////729
+ 7f8eHs7/FRXP/3Nz3f/9/f7////////////+/v///Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8
+ /v/+/v/////////////////////////////////////////////c3Pf/Ly/c/xYW4v8XF+X/Fxfm/xcX
+ 5v8XF+f/GBjz/xgY8/8YGPP/GBjz/xgY8P8xMen/3d35//////+9ve3/Hh7N/xUVz/9zc9z//f3+////
+ /////////v7///z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8/v/8/P7//Pz+//z8
+ /v/9/f7/////////////////3Nz3/y8v2/8WFuL/Fhbk/xcX5f8XF+X/Fxfm/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/MTHp/93d+f//////vb3t/x0dzP8VFc7/c3Pc//39/v///////////93d9v96euH/c3Pk/3Nz
+ 5f9zc+X/c3Pm/3Nz5v9zc+b/c3Pn/3Nz5/9zc+f/c3Po/3Nz6P9zc+f/mZnp//r6/v///////////9zc
+ 9/8vL9v/Fhbh/xYW5P8WFuT/Fxfl/xcX5f8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fn//////729
+ 7f8dHcz/FBTN/3Nz2//9/f7////////////Gxu//Hx/K/xQUzv8VFdD/FRXR/xUV0f8VFdL/FRXS/xUV
+ 0/8VFdP/FRXU/xUV1P8VFdX/FRXS/1RU2f/29v3////////////c3Pf/Ly/a/xYW4P8WFuP/Fhbk/xYW
+ 5P8XF+X/GBjz/xgY8/8YGPP/GBjz/xgY8P8xMen/3d35//////+9ve3/HR3L/xQUzf9zc9v//f3+////
+ ////////ycnt/ykpv/8eHr//Hh7A/x4ewP8fH8H/Hx/C/x8fwv8fH8P/Hx/D/x8fxP8fH8T/Hx/F/x8f
+ xP9bW9D/9vb8////////////3Nz3/y8v2v8WFuD/Fhbi/xYW4/8WFuT/Fhbk/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPD/MTHp/93d+f//////vb3s/x0dy/8UFMz/c3Pb//39/v////////////Hx+f/IyOn/xcXp/8XF
+ 6f/Fxen/xcXp/8XF6f/Fxer/xcXq/8XF6v/Fxer/xcXq/8XF6v/Fxer/1dXv//39/v///////////9zc
+ 9/8vL9n/Fhbf/xYW4v8WFuP/Fhbj/xYW5P8YGPP/GBjz/xgY8/8YGPP/GBjw/zEx6f/d3fr//////729
+ 7P8dHcr/FBTN/3Nz3//9/f7/////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////c3Pf/Ly/Z/xYW3v8WFuH/Fhbi/xYW
+ 4v8WFuP/GBjz/xgY8/8YGPP/GBjz/xgY8f8xMer/3d36//////+9ve3/HR3M/xYW2v91der//f3/////
+ ////////+Pj9/+Tk+f/j4/n/4+P5/+Pj+f/j4/n/4+P5/+Pj+v/j4/r/4+P6/+Pj+v/j4/r/4+P6/+Pj
+ +v/r6/r//v7/////////////3Nz2/y8v2P8WFt7/Fhbg/xYW4f8WFuL/Fhbm/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPL/MjLu/9vb+//9/f//vLzv/x8f3f8XF+r/dXXt//39/////////////87O8f9AQNL/NzfV/zc3
+ 1/83N9j/NzfY/zc32f83N9n/Nzfa/zc32v83N9r/Nzfb/zc32/83N9n/bW3e//f3/f///////////9zc
+ 9v8vL9j/Fhbd/xYW4P8WFuH/Fhbl/xgY8P8YGPP/GBjz/xgY8/8YGPP/GBjz/yMj8v9oaPX/dnb2/1xc
+ 8v8cHPD/GBjt/3V17f/9/f/////////////Gxu7/Hx/D/xQUxv8UFMf/FBTI/xQUyP8UFMn/FBTJ/xQU
+ yv8UFMr/FBTL/xQUy/8UFMz/FBTK/1NT0//29vz////////////c3Pb/Ly/X/xYW3f8WFt//Fhbl/xgY
+ 8P8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjy/xgY8v8YGPL/GBjy/xgY7f91de3//f3/////
+ ////////1dXv/1lZxf9QUMT/UVHF/1FRxf9RUcb/UVHG/1FRxv9RUcf/UVHH/1FRx/9RUcj/UVHI/1FR
+ yP+AgNX/+Pj9////////////3Nz2/y8v1/8WFtz/Fhbk/xgY8P8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGO7/dXXt//39//////////////39/v/29vv/9fX7//X1
+ +//19fv/9fX7//X1+//19fv/9fX7//X1+//19fv/9fX7//X1+//19fv/+Pj8/////////////////9zc
+ 9v8vL9f/Fhbh/xgY7/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjw/21t7//7+/7/////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////W1vb/LCze/xgY7v8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8f9AQPD/29v8////
+ ////////////////////////////////////////////////////////////////////////////////
+ ///////////////////8/P//np7z/x4e7P8YGPL/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/Ghrx/1lZ8/+/v/r/3Nz8/93d/P/d3fz/3d38/93d
+ /P/d3fz/3d38/93d/P/d3fz/3d38/93d/P/d3fz/3d38/93d/P/d3fz/3d38/93d/P/X1/z/n5/3/zMz
+ 8f8YGPL/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8ZGfL/JSXy/zIy8v8yMvL/MjLy/zIy8v8yMvL/MjLy/zIy8v8yMvL/MjLy/zIy
+ 8v8yMvL/MjLy/zIy8v8yMvL/MjLy/zIy8v8yMvL/Ly/y/x8f8v8YGPL/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACgAAAAgAAAAQAAAAAEA
+ IAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAAAAAYGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPL/Fxfp/xYW4/8WFuT/Fhbk/xcX5f8XF+b/Fxfn/xcX6P8XF+j/Fxfp/xcX6f8XF+r/Fxfq/xcX
+ 6/8XF+z/Fxft/xcX7f8YGO7/GBjv/xgY8P8YGPD/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjy/xcX6P8WFuL/Fhbi/xYW4/8WFuT/Fhbk/xcX5f8XF+b/Fxfn/xcX6P8XF+j/Fxfp/xcX
+ 6f8XF+r/Fxfq/xcX6/8XF+z/Fxft/xcX7f8YGO7/GBjv/xgY8P8YGPD/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjy/xgY8f8XF+f/Fhbg/xYW4P8WFuH/Fhbi/xYW4v8WFuP/Fhbk/xcX5f8XF+X/Fxfm/xcX
+ 5/8XF+j/Fxfo/xcX6f8XF+r/Fxfq/xcX6/8XF+z/Fxft/xcX7f8YGO7/GBjv/xgY8P8YGPP/GBjz/xgY
+ 8/8YGPP/GBjy/xgY7/8XF+r/Fhbe/xUV1v8VFdb/FRXX/xUV2P8VFdj/FRXZ/xYW2v8WFtr/Fhbb/xYW
+ 3P8WFt3/Fhbd/xYW3v8WFt//Fhbj/xcX6P8XF+r/Fxfq/xcX6/8XF+z/Fxft/xcX7f8YGO7/GBjv/xgY
+ 8/8YGPP/GBjz/xgY8/8YGO7/HR3i/zw81P9ISMz/SEjM/0hIzf9JSc3/SUnO/0lJzv9JSc//SUnP/0lJ
+ 0P9JSdD/SUnR/0lJ0f9JSdH/SUnS/0lJ1P85Odr/GBjk/xcX6f8XF+r/Fxfq/xcX6/8XF+z/Fxft/xcX
+ 7f8YGO7/GBjz/xgY8/8YGPP/GBjy/x4e6P+Jief/5ub2//Hx+f/x8fn/8fH5//Hx+v/x8fr/8fH6//Hx
+ +v/x8fr/8fH6//Hx+v/x8fr/8fH6//Hx+v/x8fr/8fH6/62t7/8cHOP/Fxfo/xcX6f8XF+r/Fxfq/xcX
+ 6/8XF+z/Fxft/xcX7f8YGPP/GBjz/xgY8/8YGPH/Pz/p/+fn+v/8/P7/5+f6/+Tk+v/k5Pr/5OT6/+Tk
+ +v/k5Pr/5OT6/+Tk+//k5Pv/5OT7/+Tk+//k5Pv/5OT7/+Tk+//k5Pv/o6Py/xsb5f8XF+j/Fxfp/xcX
+ 6f8XF+r/Fxfq/xcX6/8XF+z/Fxft/xgY8/8YGPP/GBjz/xgY8f9NTev/8vL9/+bm+f9QUNv/NTXd/zY2
+ 3v81Nd7/NTXd/zU13v82Nt7/Njbf/zY23/82NuD/Njbh/zY24f82NuL/Njbj/zY24/8sLOP/Fxfj/xcX
+ 5P8XF+b/Fxfo/xcX6f8XF+r/Fxfq/xcX6/8XF+z/GBjz/xgY8/8YGPP/GBjx/01N6//y8v3/4uL4/zQ0
+ 1v8VFdj/FRXX/xYW0P8ZGcv/GhrK/xoay/8aGsv/GhrM/xoazf8aGs3/GhrO/xoaz/8aGs//GhrQ/xoa
+ 0f8aGtH/GhrS/xgY1v8WFuD/Fxfn/xcX6f8XF+r/Fxfq/xcX6/8YGPP/GBjz/xgY8/8YGPH/TU3r//Ly
+ /f/i4vj/NDTV/xUV1v8gIM7/dnbX/7Cw5f+0tOb/tLTm/7S05v+0tOb/tLTn/7S05/+0tOf/tLTn/7S0
+ 5/+0tOf/tbXo/7W16P+0tOj/np7k/0ND2P8XF+H/Fxfo/xcX6f8XF+r/Fxfq/xgY8/8YGPP/GBjz/xgY
+ 8f9NTev/8vL9/+Li9/80NNT/FhbT/3d33P/29vz/////////////////////////////////////////
+ ///////////////////////////////////+/v//x8fx/yws3v8XF+f/Fxfp/xcX6f8XF+r/GBjz/xgY
+ 8/8YGPP/GBjx/01N6//y8v3/4uL3/zMz1P8aGtL/srLs////////////////////////////////////
+ ///////////////////////////////////////////////////w8Pv/SEjh/xcX5f8XF+j/Fxfp/xcX
+ 6f8YGPP/GBjz/xgY8/8YGPH/TU3r//Ly/f/i4vf/MzPT/xsb0f+3t+3////////////g4Pj/rKzv/6ur
+ 8P+rq/H/q6vx/6ur8f+srPD/4eH4//////////////////////////////////Ly/P9LS+L/Fxfk/xcX
+ 5/8XF+j/Fxfp/xgY8/8YGPP/GBjz/xgY8f9NTev/8vL9/+Li9/8zM9P/GxvR/7e37f///////////6qq
+ 6v8aGs7/GBjT/xgY1P8YGNT/GBjV/xsb0v+srOz/////////////////////////////////8vL8/0tL
+ 4f8WFuT/Fxfn/xcX6P8XF+j/GBjz/xgY8/8YGPP/GBjx/01N6//y8v3/4uL3/zMz0v8bG9D/t7ft////
+ ////////ubnp/0FBx/8/P8n/Pz/J/z8/yv8/P8r/QUHK/7q66v//////////////////////////////
+ ///y8vz/Skrg/xYW4/8XF+b/Fxfn/xcX6P8YGPP/GBjz/xgY8/8YGPH/TU3r//Ly/f/i4vf/MzPR/xsb
+ z/+2tu3////////////4+Pz/7Oz3/+zs9//s7Pf/7Oz3/+zs9//s7Pj/+Pj8////////////////////
+ //////////////Ly/P9KSuD/Fhbi/xcX5f8XF+b/Fxfn/xgY8/8YGPP/GBjz/xgY8f9NTev/8vL9/+Li
+ 9/8zM9H/GxvO/7a27f////////////j4/f/t7fv/7e37/+3t/P/t7fz/7e38/+3t/P/t7fz/7e38/+3t
+ /P/t7fz/8fH8//7+////////8vL8/0pK3/8WFuL/Fhbk/xcX5f8XF+b/GBjz/xgY8/8YGPP/GBjx/01N
+ 6//y8v3/4uL3/zMz0P8aGs7/trbs////////////ubnt/0ND1/9CQtv/QkLc/0JC3P9CQt3/QkLd/0JC
+ 3v9CQt//QkLf/0JC3v9vb+H/9fX9///////y8vz/Skrf/xYW4f8WFuT/Fhbk/xcX5f8YGPP/GBjz/xgY
+ 8/8YGPH/TU3r//Ly/f/i4vf/MzPP/xoazf+2tuz///////////+qqub/GRnC/xYWxf8WFsb/FxfH/xcX
+ yP8XF8j/FxfJ/xcXyv8XF8r/FxfK/05O0v/z8/z///////Ly/P9KSt7/Fhbg/xYW4/8WFuT/Fhbk/xgY
+ 8/8YGPP/GBjz/xgY8f9NTev/8vL9/+Li9/8zM8//GhrM/7a27P///////////9/f8/+pqeD/qKjh/6io
+ 4f+oqOH/qKji/6io4v+pqeL/qani/6mp4v+pqeL/vb3p//v7/f//////8vL8/0pK3v8WFt//Fhbi/xYW
+ 4/8WFuT/GBjz/xgY8/8YGPP/GBjx/01N6//y8v3/4uL3/zMzzv8aGs//t7fv////////////////////
+ ///////////////////////////////////////////////////////////////////y8vz/Skrd/xYW
+ 3/8WFuH/Fhbi/xYW4/8YGPP/GBjz/xgY8/8YGPH/TU3t//Ly/f/i4vf/MzPU/xwc4f+3t/X/////////
+ ///e3vb/paXr/6Sk7f+kpO3/pKTt/6Sk7v+kpO7/pKTu/6Sk7v+kpO7/pKTu/7q68P/6+v7///////Ly
+ /P9KSt3/Fhbe/xYW4P8WFuL/Fxfp/xgY8/8YGPP/GBjz/xgY8v89PfH/r6/5/6Sk9v8sLOr/Hh7r/7e3
+ 9f///////////6qq5/8ZGcf/FxfM/xcXzf8XF83/FxfO/xcXz/8XF8//FxfQ/xcX0f8XF9D/Tk7W//Pz
+ /P//////8vL8/0pK3P8WFt3/Fhbg/xcX6P8YGPL/GBjz/xgY8/8YGPP/GBjz/xkZ8/8eHvL/HR3y/xkZ
+ 8v8eHuz/t7f1////////////vLzo/0tLxf9JScb/SUnH/0lJx/9JScj/SUnI/0pKyP9KSsn/SkrJ/0pK
+ yf91ddT/9vb8///////y8vz/Skrc/xYW3f8XF+f/GBjy/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/x4e7f+3t/X////////////6+v3/8/P6//Ly+v/y8vr/8vL6//Ly+v/y8vr/8vL6//Ly
+ +v/y8vr/8vL6//X1+//+/v////////Ly/P9KSt3/Fxfl/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/Gxvv/6Gh9f/+/v//////////////////////////////////////////
+ ////////////////////////////////////////5ub6/z4+5v8YGPD/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/R0fy/8rK+//w8P7/8vL+//Ly/v/y8v7/8vL+//Ly
+ /v/y8v7/8vL+//Ly/v/y8v7/8vL+//Ly/v/y8v7/8vL+/+fn/f+KivX/Hx/w/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8ZGfL/Ly/y/0tL9P9OTvP/Tk7z/05O
+ 8/9OTvP/Tk7z/05O8/9OTvP/Tk7z/05O8/9OTvP/Tk7z/05O8/9NTfP/QEDz/x8f8v8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoAAAAGAAAADAA
+ AAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAGBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xcX
+ 7P8WFuP/Fhbk/xcX5f8XF+b/Fxfn/xcX6P8XF+n/Fxfp/xcX6v8XF+v/Fxfs/xcX7f8YGO7/GBjv/xgY
+ 8P8YGPH/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPL/Fxfr/xYW4v8WFuH/Fhbj/xYW5P8XF+X/Fxfm/xcX
+ 5/8XF+j/Fxfp/xcX6f8XF+r/Fxfr/xcX7P8XF+3/GBju/xgY7/8YGPD/GBjz/xgY8/8YGPP/GBjy/xcX
+ 7v8XF+P/FRXY/xUV2P8VFdn/FRXa/xYW2/8WFtz/Fhbd/xYW3v8WFt//Fhbg/xYW4v8XF+f/Fxfq/xcX
+ 6/8XF+z/Fxft/xgY7v8YGO//GBjz/xgY8/8YGPL/Gxvr/0lJ3/9tbdj/b2/W/29v1/9vb9j/b2/Y/29v
+ 2f9vb9n/b2/a/29v2v9vb9v/b2/b/2Vl3v8jI+P/Fxfp/xcX6v8XF+v/Fxfs/xcX7f8YGO7/GBjz/xgY
+ 8/8YGPH/Skrq/+Pj+P/39/3/9vb9//b2/f/29v3/9vb9//b2/f/29v3/9vb9//b2/f/29v3/9vb9/93d
+ +f83N+b/Fxfo/xcX6f8XF+r/Fxfr/xcX7P8XF+3/GBjz/xgY8/8YGPH/b2/v//j4/f+Jieb/Wlrj/1pa
+ 5P9aWuP/Wlrj/1pa5P9aWuX/Wlrl/1pa5v9aWuf/Wlro/1JS5/8gIOP/Fxfl/xcX5/8XF+n/Fxfq/xcX
+ 6/8XF+z/GBjz/xgY8/8YGPH/cXHv//b2/f9ZWd3/FRXX/xsb0v8xMc//NjbP/zY2z/82NtD/NjbR/zY2
+ 0f82NtL/NjbT/zY21P82NtX/NTXW/yQk2v8XF+T/Fxfp/xcX6v8XF+v/GBjz/xgY8/8YGPH/cXHv//b2
+ /f9ZWdz/GxvT/4aG3//e3vT/5eX2/+Xl9v/l5fb/5eX2/+Xl9v/l5fb/5eX2/+Xl9v/l5fb/5OT2/7e3
+ 7f8yMt//Fxfo/xcX6f8XF+r/GBjz/xgY8/8YGPH/cXHv//b2/f9ZWdv/MTHV/9/f9///////////////
+ //////////////////////////////////////////////v7/v9oaOb/Fxfm/xcX6f8XF+n/GBjz/xgY
+ 8/8YGPH/cXHv//b2/f9ZWdv/NjbW/+Xl+f//////wsLx/4eH6f+Hh+r/h4fr/4eH6v/CwvL/////////
+ //////////////39/v9wcOj/Fxfl/xcX6P8XF+n/GBjz/xgY8/8YGPH/cXHv//b2/P9ZWdr/NjbV/+Xl
+ +P//////jY3h/yEhyv8hIcz/ISHN/yEhzP+NjeL///////////////////////39/v9wcOf/Fxfk/xcX
+ 5/8XF+j/GBjz/xgY8/8YGPH/cXHv//b2/P9YWNn/NjbU/+Xl+P//////5OT1/8rK7f/Kyu3/ysrt/8rK
+ 7f/k5Pb///////////////////////39/v9wcOb/Fhbj/xcX5v8XF+f/GBjz/xgY8/8YGPH/cXHv//b2
+ /P9YWNn/NjbT/+Xl+P//////5OT5/8rK9f/KyvX/ysr2/8rK9v/Kyvb/ysr2/8rK9v/V1ff/+/v+//39
+ /v9wcOb/Fhbi/xcX5f8XF+b/GBjz/xgY8/8YGPH/cXHv//b2/P9YWNj/NjbS/+Xl+P//////jo7i/yIi
+ zv8iItD/IiLR/yIi0v8iItP/IiLU/yIi1P9PT9n/8PD7//39/v9wcOX/Fhbh/xYW5P8XF+X/GBjz/xgY
+ 8/8YGPH/cXHv//b2/P9YWNf/NjbR/+Xl+P//////wcHq/4aG2P+Ghtn/hoba/4aG2v+Ghtv/hobb/4aG
+ 2/+fn+H/9/f8//39/v9wcOX/Fhbg/xYW4/8WFuT/GBjz/xgY8/8YGPH/cXHw//b2/P9YWNj/NzfY/+Xl
+ +v//////+vr+//X1/f/19f3/9fX9//X1/f/19f3/9fX9//X1/f/39/3//v7///39/v9wcOT/Fhbf/xYW
+ 4v8WFuT/GBjz/xgY8/8YGPL/aGjy/97e+/9SUuT/OTnp/+bm+///////pqbo/1FR2f9RUdv/UVHc/1FR
+ 3f9RUd3/UVHe/1FR3v90dOH/8/P8//39/v9wcOT/Fhbe/xYW4v8XF+z/GBjz/xgY8/8YGPP/JSXz/zg4
+ 8/8iIvH/OTnt/+bm+///////n5/g/0NDyP9DQ8r/Q0PK/0NDy/9DQ8v/Q0PM/0NDzP9padX/8vL7//39
+ /v9wcOP/Fhbe/xcX6/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/ODju/+Xl+///////9/f8/+/v
+ +f/v7/n/7+/5/+/v+f/v7/n/7+/5/+/v+f/y8vr//v7///39/v9ubuX/Fxfp/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/Jibx/7i4+f/7+////f3///39///9/f///f3///39///9/f///f3///39
+ ///9/f///f3//+Pj/P9LS+7/GBjy/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/zQ0
+ 8/9pafb/cnL2/3Jy9v9ycvb/cnL2/3Jy9v9ycvb/cnL2/3Jy9v9ycvb/cHD2/0tL9P8cHPL/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKAAAABQAAAAoAAAAAQAgAAAAAACQBgAAAAAAAAAA
+ AAAAAAAAAAAAABgY8/8YGPP/GBjz/xgY8/8YGPP/GBjx/xcX5/8WFuP/Fhbk/xcX5f8XF+f/Fxfo/xcX
+ 6f8XF+n/Fxfr/xcX7P8XF+3/GBju/xgY7/8YGPH/GBjz/xgY8/8YGPP/GBjy/xgY8P8XF+X/Fhbg/xYW
+ 4f8WFuL/Fhbj/xcX5P8XF+X/Fxfn/xcX6P8XF+n/Fxfq/xcX7P8XF+3/GBju/xgY7/8YGPP/GBjz/xgY
+ 8v8eHuj/Li7Z/y8v0v8wMNL/MDDT/zAw1P8wMNX/MDDW/zAw1/8wMNj/Ly/b/x0d5P8XF+n/Fxfr/xcX
+ 7P8XF+3/GBju/xgY8/8YGPP/Hx/u/5OT7P/b2/T/3d30/93d9P/d3fT/3d30/93d9f/d3fX/3d31/93d
+ 9f/U1PT/Rkbm/xcX6P8XF+n/Fxfr/xcX7P8XF+3/GBjz/xgY8/8xMe7/3Nz6/6io7f9zc+f/c3Pn/3Jy
+ 5/9zc+f/c3Po/3Nz6f9zc+r/c3Pq/25u6v8tLeT/Fxfl/xcX6P8XF+n/Fxfr/xcX7P8YGPP/GBjz/zMz
+ 7v/e3vr/b2/h/xYW1v8wMNL/S0vT/0xM1P9MTNX/TU3V/01N1v9NTdf/TU3Y/01N2f9KStr/KSnd/xcX
+ 5/8XF+n/Fxfr/xgY8/8YGPP/MzPu/97e+v9vb+D/MTHV/8jI7//z8/r/8/P7//Pz+//z8/v/8/P7//Pz
+ +//z8/v/8/P7//Ly+v+srO3/IiLj/xcX6f8XF+n/GBjz/xgY8/8zM+7/3t76/29v4P9NTdr/8/P8//j4
+ /f/a2vj/1tb4/9bW+P/a2vj/+Pj9/////////////////97e+f8wMOT/Fxfo/xcX6f8YGPP/GBjz/zMz
+ 7v/e3vr/b2/f/05O2v/09Pz/2dn1/z4+0/8tLdP/LS3U/z8/1v/a2vb/////////////////39/5/zEx
+ 4/8XF+f/Fxfo/xgY8/8YGPP/MzPu/97e+v9vb97/Tk7Z//T0/P/x8fr/t7fo/7Gx5/+xsef/t7fp//Hx
+ +//////////////////f3/n/MTHi/xcX5f8XF+f/GBjz/xgY8/8zM+7/3t76/29v3f9OTtj/9PT8//Hx
+ /P+6uvD/tLTx/7S08f+0tPH/tLTy/7S08v/CwvP/+fn+/9/f+f8xMeH/Fhbk/xcX5f8YGPP/GBjz/zMz
+ 7v/e3vr/b2/d/05O1//09Pz/2dn0/z09zf8sLM3/LCzO/ywsz/8sLND/LCzR/1RU1//w8Pv/39/4/zEx
+ 4P8WFuP/Fhbk/xgY8/8YGPP/MzPu/97e+v9vb9z/Tk7Y//T0/P/39/z/2Njx/9XV8f/V1fH/1dXx/9XV
+ 8f/V1fH/3d30//z8/v/f3/j/MTHf/xYW4v8WFuP/GBjz/xgY8/8yMvD/1dX6/2tr4/9PT+f/9PT9/+vr
+ +v+Xl+f/jo7o/46O6P+Ojun/jo7q/46O6v+kpOz/9/f9/9/f+P8xMd3/Fhbh/xcX6P8YGPP/GBjz/x8f
+ 8v9JSfT/Li7x/1BQ7//09P3/3d30/09Pzf9AQMz/QEDM/0BAzf9AQM7/QEDP/2Vl1v/x8fv/39/4/zEx
+ 3f8XF+b/GBjx/xgY8/8YGPP/GBjz/xgY8/8YGPP/TU3w//Ly/f/8/P7/7u74/+3t+P/t7fj/7e34/+3t
+ +P/t7fj/8PD6//7+/v/c3Pj/MDDl/xgY8f8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8sLPL/r6/5/9/f
+ /f/g4P3/4OD9/+Dg/f/g4P3/4OD9/+Dg/f/g4P3/3t79/5SU9v8fH/H/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8kJPP/MzPz/zQ08/80NPP/NDTz/zQ08/80NPP/NDTz/zQ08/8yMvP/ICDz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8AAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAACgAAAAQAAAAIAAAAAEAIAAAAAAAQAQAAAAAAAAAAAAAAAAAAAAAAAAYGPP/GBjz/xgY
+ 8/8YGPP/GBjv/xYW5P8WFuT/Fxfl/xcX5/8XF+j/Fxfp/xcX6v8XF+z/Fxft/xgY7/8YGPD/GBjz/xgY
+ 8/8YGPH/GBjo/xcX3P8WFtr/Fhbc/xcX3f8XF9//Fxfg/xcX4v8XF+b/Fxfq/xcX7P8XF+3/GBjv/xgY
+ 8/8YGPL/Pz/q/5KS5v+bm+T/m5vl/5ub5f+bm+b/nJzm/5yc5/+amuj/R0fl/xcX6f8XF+r/Fxfs/xcX
+ 7f8YGPP/GRnx/5WV8//FxfP/jIzr/4yM6/+MjOv/jIzs/4yM7P+MjO3/i4vu/0FB5v8XF+X/Fxfo/xcX
+ 6v8XF+z/GBjz/xkZ8f+fn/X/iorn/x8f1f9YWNj/aWna/2lp2/9qatz/amrc/2pq3f9qat7/YmLf/yoq
+ 4f8XF+n/Fxfq/xgY8/8ZGfH/n5/1/4qK5v9ZWdz/8fH6//r6/f/5+f3/+fn9//r6/f/8/P7//Pz+//n5
+ /f+Fhev/Fxfn/xcX6f8YGPP/GRnx/5+f9f+KiuX/a2vf//r6/f+Zmej/Zmbh/2Zm4v+amur//Pz+////
+ ////////nJzv/xgY5f8XF+j/GBjz/xkZ8f+fn/X/iork/2tr3//7+/3/uLjq/5WV4v+VleL/ubnr//39
+ /v///////////5yc7/8YGOP/Fxfn/xgY8/8ZGfH/n5/1/4mJ5P9ra93/+/v9/7m57/+Wlur/l5fr/5eX
+ 7P+Xl+z/qanu//b2/f+cnO7/Fxfi/xcX5f8YGPP/GRnx/5+f9f+JieP/a2vd//r6/f+Xl+H/Y2PV/2Nj
+ 1/9jY9f/Y2PY/39/3v/y8vv/nJzt/xcX4P8WFuT/GBjz/xkZ8f+envX/iIjm/2xs5f/8/P7/19f1/8PD
+ 8v/Dw/L/w8Pz/8PD8//OzvT/+vr+/5yc7f8XF9//Fhbk/xgY8/8YGPP/Skr0/0JC8P9tbfD/+vr9/4WF
+ 3f9ISND/SEjR/0hI0v9ISNP/aGjZ//Dw+/+cnOz/Fxfh/xgY7v8YGPP/GBjz/xgY8/8YGPP/ZWXy//n5
+ /v/x8fr/6+v4/+vr+P/r6/j/6+v4/+7u+f/9/f7/k5Pv/xgY7f8YGPP/GBjz/xgY8/8YGPP/GBjz/y0t
+ 8/+IiPf/n5/5/5+f+f+fn/n/n5/5/5+f+f+fn/n/lZX4/z8/8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GRnz/xkZ8/8ZGfP/GRnz/xkZ8/8ZGfP/GRnz/xkZ8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY
+ 8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/GBjz/xgY8/8YGPP/AAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
+
+
+
\ No newline at end of file
diff --git a/Remontor/Words/IWordsContol.cs b/Remontor/Words/IWordsContol.cs
new file mode 100644
index 0000000..28fb57b
--- /dev/null
+++ b/Remontor/Words/IWordsContol.cs
@@ -0,0 +1,13 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Reseter2.Words
+{
+ internal interface IWordsContol
+ {
+
+ }
+}
diff --git a/Remontor/Words/IWordsItem.cs b/Remontor/Words/IWordsItem.cs
new file mode 100644
index 0000000..ff16c94
--- /dev/null
+++ b/Remontor/Words/IWordsItem.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Reseter2.Words
+{
+ [Serializable]
+ internal abstract class IWordsItem
+ {
+
+
+ public abstract List CategoryList();
+
+ public abstract void Delete();
+ public abstract TreeNode NodeList();
+ public abstract bool ChekMove(IWordsItem wordsItem);
+
+
+
+
+
+ }
+}
diff --git a/Remontor/Words/WordsCategory.cs b/Remontor/Words/WordsCategory.cs
new file mode 100644
index 0000000..c0fa054
--- /dev/null
+++ b/Remontor/Words/WordsCategory.cs
@@ -0,0 +1,126 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Reseter2.Words
+{
+ [Serializable]
+ internal class WordsCategory : IWordsItem
+ {
+ private string Name;
+ private List items;
+
+ public WordsCategory(string name)
+ {
+ Name = name;
+ items = new List();
+
+ }
+ public WordsCategory(string name, List Items)
+ {
+ Name = name;
+ items = Items;
+
+ }
+
+ public void Add(IWordsItem newitem)
+ {
+ items.Add(newitem);
+ }
+ public void Insert(int index, IWordsItem newitem)
+ {
+ //if (index > items.Count) index = items.Count;
+ items.Insert(index, newitem);
+ }
+
+ public void Move(int index, IWordsItem item, WordsCategory wordsdst)
+ {
+ items.Remove(item);
+ wordsdst.Insert(index, item);
+ }
+
+ public string GetName()
+ {
+ return Name;
+ }
+ public void SetName(string name)
+ {
+ Name = name;
+ }
+
+ public IWordsItem Items(int item)
+ {
+ return items[item];
+ }
+
+ public List Items()
+ {
+ return items;
+ }
+
+ public int Count()
+ {
+ return items.Count;
+ }
+
+ public void DeleteItem(IWordsItem wordsItem)
+ {
+ wordsItem.Delete();
+ items.Remove(wordsItem);
+ }
+
+ public override bool ChekMove(IWordsItem wordsItem)
+ {
+ if(this == wordsItem) return false;
+ foreach (var item in items)
+ {
+ if(!item.ChekMove(wordsItem)) return false;
+
+ }
+ return true;
+ }
+
+ public override void Delete() {
+ foreach(IWordsItem item in items)
+ {
+ item.Delete();
+ }
+ items.Clear();
+ }
+
+ public override List CategoryList()
+ {
+ List itemsCatrgory = new List();
+ itemsCatrgory.Add(this);
+ foreach (var item in items)
+ {
+ itemsCatrgory.AddRange(item.CategoryList());
+ }
+ return itemsCatrgory;
+
+ }
+
+ public override TreeNode NodeList()
+ {
+ TreeNode treeNode = new TreeNode(GetName());
+ treeNode.Name = GetName();
+ treeNode.Tag = this;
+ treeNode.ImageIndex = 0;
+ treeNode.SelectedImageIndex = 0;
+ treeNode.StateImageIndex = 0;
+
+ foreach (var item in items)
+ {
+ int i = treeNode.Nodes.Add(item.NodeList());
+ treeNode.Nodes[i].Name += treeNode.Nodes[i].Index;
+ }
+ return treeNode;
+ }
+
+
+ }
+}
diff --git a/Remontor/Words/WordsCategoryControl.Designer.cs b/Remontor/Words/WordsCategoryControl.Designer.cs
new file mode 100644
index 0000000..72d0d74
--- /dev/null
+++ b/Remontor/Words/WordsCategoryControl.Designer.cs
@@ -0,0 +1,103 @@
+namespace Remontor.Words
+{
+ partial class WordsCategoryControl
+ {
+ ///
+ /// Обязательная переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором компонентов
+
+ ///
+ /// Требуемый метод для поддержки конструктора — не изменяйте
+ /// содержимое этого метода с помощью редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ this.Select = new System.Windows.Forms.CheckBox();
+ this.lb_name = new System.Windows.Forms.Label();
+ this.label1 = new System.Windows.Forms.Label();
+ this.flow_wordsItem = new System.Windows.Forms.FlowLayoutPanel();
+ this.SuspendLayout();
+ //
+ // Select
+ //
+ this.Select.AutoSize = true;
+ this.Select.Location = new System.Drawing.Point(6, 2);
+ this.Select.Name = "Select";
+ this.Select.Size = new System.Drawing.Size(15, 14);
+ this.Select.TabIndex = 1;
+ this.Select.UseVisualStyleBackColor = true;
+ //
+ // lb_name
+ //
+ this.lb_name.AutoSize = true;
+ this.lb_name.Location = new System.Drawing.Point(47, 3);
+ this.lb_name.Name = "lb_name";
+ this.lb_name.Size = new System.Drawing.Size(88, 13);
+ this.lb_name.TabIndex = 2;
+ this.lb_name.Text = "Вебинарные ПК";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 18F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+ this.label1.Location = new System.Drawing.Point(21, -4);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(30, 29);
+ this.label1.TabIndex = 3;
+ this.label1.Text = "⟱";
+ this.label1.Click += new System.EventHandler(this.label1_Click);
+ //
+ // flow_wordsItem
+ //
+ this.flow_wordsItem.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.flow_wordsItem.AutoSize = true;
+ this.flow_wordsItem.FlowDirection = System.Windows.Forms.FlowDirection.TopDown;
+ this.flow_wordsItem.Location = new System.Drawing.Point(5, 20);
+ this.flow_wordsItem.Name = "flow_wordsItem";
+ this.flow_wordsItem.Size = new System.Drawing.Size(395, 5);
+ this.flow_wordsItem.TabIndex = 4;
+ this.flow_wordsItem.WrapContents = false;
+ //
+ // WordsCategoryControl
+ //
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
+ this.AutoSize = true;
+ this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.Controls.Add(this.flow_wordsItem);
+ this.Controls.Add(this.Select);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.lb_name);
+ this.Name = "WordsCategoryControl";
+ this.Size = new System.Drawing.Size(401, 25);
+ this.Load += new System.EventHandler(this.WordsCategoryControl_Load);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.CheckBox Select;
+ private System.Windows.Forms.Label lb_name;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.FlowLayoutPanel flow_wordsItem;
+ }
+}
diff --git a/Remontor/Words/WordsCategoryControl.cs b/Remontor/Words/WordsCategoryControl.cs
new file mode 100644
index 0000000..dbef8ab
--- /dev/null
+++ b/Remontor/Words/WordsCategoryControl.cs
@@ -0,0 +1,52 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Remontor.Words
+{
+ [DefaultEvent(nameof(WordsCategoryControl))]
+ partial class WordsCategoryControl : UserControl, IWordsContol
+ {
+ public WordsCategoryControl()
+ {
+ InitializeComponent();
+ }
+ public WordsCategoryControl(WordsCategory wordsCategoty)
+ {
+ InitializeComponent();
+ lb_name.Text = wordsCategoty.GetName();
+ foreach (IWordsItem item in wordsCategoty.Items())
+ {
+ if(item is WordsCategory)
+ {
+ flow_wordsItem.Controls.Add(new WordsCategoryControl((WordsCategory)item));
+ }else if(item is WordsComp)
+ {
+ flow_wordsItem.Controls.Add(new WordsItemControl((WordsComp)item));
+ }
+ }
+ }
+
+ public void Add(WordsItemControl wic)
+ {
+ flow_wordsItem.Controls.Add(wic);
+ }
+
+ private void label1_Click(object sender, EventArgs e)
+ {
+ flow_wordsItem.Visible = !flow_wordsItem.Visible;
+
+ }
+
+ private void WordsCategoryControl_Load(object sender, EventArgs e)
+ {
+
+ }
+ }
+}
diff --git a/Remontor/Words/WordsCategoryControl.resx b/Remontor/Words/WordsCategoryControl.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Remontor/Words/WordsCategoryControl.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
\ No newline at end of file
diff --git a/Remontor/Words/WordsComp.cs b/Remontor/Words/WordsComp.cs
new file mode 100644
index 0000000..9eefb95
--- /dev/null
+++ b/Remontor/Words/WordsComp.cs
@@ -0,0 +1,124 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using System.Xml.Linq;
+
+namespace Remontor.Words
+{
+ [Serializable]
+ internal class WordsComp : IWordsItem
+ {
+ private IComp Comp;
+
+ public WordsComp(IComp comp)
+ {
+ Comp = comp;
+
+ }
+ public WordsComp(String name, String ip, String description)
+ {
+ IPAddress iPAddress;
+ try
+ {
+ iPAddress = IPAddress.Parse(ip);
+ }
+ catch
+ {
+ iPAddress = null;
+ }
+ Comp = new CompId(name,description, iPAddress);
+
+ }
+
+ public void Set(String name, String ip, String description, int imgIndex, string netname)
+ {
+ IPAddress iPAddress;
+ try
+ {
+ iPAddress = IPAddress.Parse(ip);
+ }
+ catch
+ {
+ iPAddress = null;
+ }
+ Comp.SetIP(iPAddress);
+ Comp.SetName(name);
+ Comp.SetDescription(description);
+ Comp.SetImage(imgIndex);
+ Comp.SetNetName(netname);
+ }
+
+ public string GetName()
+ {
+ return Comp.GetName();
+ }
+
+ public string GetNetName()
+ {
+ return Comp.GetNetName();
+ }
+ public override bool ChekMove(IWordsItem wordsItem)
+ {
+ return true ;
+ }
+ public string GetDescription()
+ {
+ return Comp.GetDescription();
+ }
+ public string GetIP()
+ {
+ if(Comp.GetIP() != null)
+ {
+ return Comp.GetIP().ToString();
+ }
+ return null;
+ }
+ public IComp GetComp()
+ {
+ return Comp;
+ }
+
+ public override void Delete()
+ {
+
+ Comp = null;
+ }
+
+ public override List CategoryList()
+ {
+ return new List();
+ }
+
+ public string NameNode()
+ {
+ string buf;
+ if (Comp.GetName() == null)
+ {
+ buf = Comp.GetNetNameStr();
+ }
+ else
+ {
+ buf = Comp.GetName();
+ if (Comp.GetNetNameStr() != null) buf += "(" + Comp.GetNetNameStr() + ")";
+
+ }
+ return buf;
+ }
+ public override TreeNode NodeList()
+ {
+ TreeNode treeNode = new TreeNode();
+ treeNode.Text = NameNode();
+ treeNode.Name = NameNode();
+ treeNode.Tag = this;
+ treeNode.ImageIndex = Comp.GetImage();
+ treeNode.SelectedImageIndex = Comp.GetImage();
+ treeNode.StateImageIndex = 0;
+ return treeNode;
+ }
+
+ }
+}
diff --git a/Remontor/Words/WordsEditCategoryControl.Designer.cs b/Remontor/Words/WordsEditCategoryControl.Designer.cs
new file mode 100644
index 0000000..af5e7c6
--- /dev/null
+++ b/Remontor/Words/WordsEditCategoryControl.Designer.cs
@@ -0,0 +1,75 @@
+namespace Remontor.Words
+{
+ partial class WordsEditCategoryControl
+ {
+ ///
+ /// Обязательная переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором компонентов
+
+ ///
+ /// Требуемый метод для поддержки конструктора — не изменяйте
+ /// содержимое этого метода с помощью редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ this.label1 = new System.Windows.Forms.Label();
+ this.lb_name = new System.Windows.Forms.TextBox();
+ this.SuspendLayout();
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(3, 10);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(112, 13);
+ this.label1.TabIndex = 0;
+ this.label1.Text = "Название категории";
+ this.label1.Click += new System.EventHandler(this.label1_Click);
+ //
+ // lb_name
+ //
+ this.lb_name.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.lb_name.Location = new System.Drawing.Point(6, 26);
+ this.lb_name.Name = "lb_name";
+ this.lb_name.Size = new System.Drawing.Size(245, 20);
+ this.lb_name.TabIndex = 3;
+ //
+ // WordsEditCategoryControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.AutoSize = true;
+ this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
+ this.Controls.Add(this.lb_name);
+ this.Controls.Add(this.label1);
+ this.Name = "WordsEditCategoryControl";
+ this.Size = new System.Drawing.Size(254, 49);
+ this.VisibleChanged += new System.EventHandler(this.WordsEditCategoryControl_VisibleChanged);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.TextBox lb_name;
+ }
+}
diff --git a/Remontor/Words/WordsEditCategoryControl.cs b/Remontor/Words/WordsEditCategoryControl.cs
new file mode 100644
index 0000000..5a0e6e0
--- /dev/null
+++ b/Remontor/Words/WordsEditCategoryControl.cs
@@ -0,0 +1,43 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Remontor.Words
+{
+ [DefaultEvent(nameof(WordsEditCategoryControl))]
+ internal partial class WordsEditCategoryControl : UserControl
+ {
+ private WordsCategory wordsCategory;
+ private TreeNode treeNode;
+ public WordsEditCategoryControl()
+ {
+ InitializeComponent();
+ }
+
+ public WordsEditCategoryControl(WordsCategory wordscategory, TreeNode treenode)
+ {
+ InitializeComponent();
+ lb_name.Text = wordscategory.GetName();
+ wordsCategory = wordscategory;
+ treeNode = treenode;
+
+ }
+
+ private void label1_Click(object sender, EventArgs e)
+ {
+
+ }
+
+ private void WordsEditCategoryControl_VisibleChanged(object sender, EventArgs e)
+ {
+ treeNode.Text = lb_name.Text;
+ wordsCategory.SetName(lb_name.Text);
+ }
+ }
+}
diff --git a/Remontor/Words/WordsEditCategoryControl.resx b/Remontor/Words/WordsEditCategoryControl.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Remontor/Words/WordsEditCategoryControl.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
\ No newline at end of file
diff --git a/Remontor/Words/WordsEditCompControl.Designer.cs b/Remontor/Words/WordsEditCompControl.Designer.cs
new file mode 100644
index 0000000..ffe26ff
--- /dev/null
+++ b/Remontor/Words/WordsEditCompControl.Designer.cs
@@ -0,0 +1,176 @@
+namespace Remontor.Words
+{
+ partial class WordsEditCompControl
+ {
+ ///
+ /// Обязательная переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором компонентов
+
+ ///
+ /// Требуемый метод для поддержки конструктора — не изменяйте
+ /// содержимое этого метода с помощью редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ this.lb_name = new System.Windows.Forms.TextBox();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.lb_ip = new System.Windows.Forms.TextBox();
+ this.lb_description = new System.Windows.Forms.TextBox();
+ this.label4 = new System.Windows.Forms.Label();
+ this.comboBox1 = new System.Windows.Forms.ComboBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.tb_netName = new System.Windows.Forms.TextBox();
+ this.SuspendLayout();
+ //
+ // lb_name
+ //
+ this.lb_name.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.lb_name.Location = new System.Drawing.Point(6, 30);
+ this.lb_name.Name = "lb_name";
+ this.lb_name.Size = new System.Drawing.Size(245, 20);
+ this.lb_name.TabIndex = 2;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(3, 14);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(47, 13);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "Имя ПК";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(3, 92);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(50, 13);
+ this.label3.TabIndex = 5;
+ this.label3.Text = "IP-адрес";
+ //
+ // lb_ip
+ //
+ this.lb_ip.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.lb_ip.Location = new System.Drawing.Point(6, 108);
+ this.lb_ip.Name = "lb_ip";
+ this.lb_ip.Size = new System.Drawing.Size(245, 20);
+ this.lb_ip.TabIndex = 4;
+ //
+ // lb_description
+ //
+ this.lb_description.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.lb_description.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
+ this.lb_description.Location = new System.Drawing.Point(6, 147);
+ this.lb_description.MaxLength = 350;
+ this.lb_description.Multiline = true;
+ this.lb_description.Name = "lb_description";
+ this.lb_description.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
+ this.lb_description.Size = new System.Drawing.Size(245, 134);
+ this.lb_description.TabIndex = 6;
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(3, 131);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(57, 13);
+ this.label4.TabIndex = 7;
+ this.label4.Text = "Описание";
+ //
+ // comboBox1
+ //
+ this.comboBox1.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawVariable;
+ this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+ this.comboBox1.FormattingEnabled = true;
+ this.comboBox1.Location = new System.Drawing.Point(209, 3);
+ this.comboBox1.Name = "comboBox1";
+ this.comboBox1.Size = new System.Drawing.Size(42, 21);
+ this.comboBox1.TabIndex = 8;
+ this.comboBox1.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.comboBox1_DrawItem);
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(160, 6);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(43, 13);
+ this.label1.TabIndex = 9;
+ this.label1.Text = "Значок";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(3, 53);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(72, 13);
+ this.label5.TabIndex = 11;
+ this.label5.Text = "Сетевое имя";
+ //
+ // tb_netName
+ //
+ this.tb_netName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.tb_netName.Location = new System.Drawing.Point(6, 69);
+ this.tb_netName.Name = "tb_netName";
+ this.tb_netName.Size = new System.Drawing.Size(245, 20);
+ this.tb_netName.TabIndex = 10;
+ this.tb_netName.VisibleChanged += new System.EventHandler(this.WordsEditCompControl_VisibleChanged);
+ //
+ // WordsEditCompControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.AutoSize = true;
+ this.AutoValidate = System.Windows.Forms.AutoValidate.Disable;
+ this.Controls.Add(this.label5);
+ this.Controls.Add(this.tb_netName);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.comboBox1);
+ this.Controls.Add(this.label4);
+ this.Controls.Add(this.lb_description);
+ this.Controls.Add(this.label3);
+ this.Controls.Add(this.lb_ip);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.lb_name);
+ this.Name = "WordsEditCompControl";
+ this.Size = new System.Drawing.Size(254, 284);
+ this.VisibleChanged += new System.EventHandler(this.WordsEditCompControl_VisibleChanged);
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+ private System.Windows.Forms.TextBox lb_name;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.TextBox lb_ip;
+ private System.Windows.Forms.TextBox lb_description;
+ private System.Windows.Forms.Label label4;
+ private System.Windows.Forms.ComboBox comboBox1;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.TextBox tb_netName;
+ }
+}
diff --git a/Remontor/Words/WordsEditCompControl.cs b/Remontor/Words/WordsEditCompControl.cs
new file mode 100644
index 0000000..04ea35b
--- /dev/null
+++ b/Remontor/Words/WordsEditCompControl.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Remontor.Words
+{
+
+ [DefaultEvent(nameof(WordsEditCompControl))]
+ internal partial class WordsEditCompControl : UserControl
+ {
+ private WordsComp wordsComp;
+ private TreeNode treeNode;
+ private ImageList imageList;
+ public WordsEditCompControl()
+ {
+ InitializeComponent();
+ }
+ public WordsEditCompControl(WordsComp wordscomp, TreeNode treenode, ImageList imagelist)
+ {
+ InitializeComponent();
+ imageList = imagelist;
+ comboBox1.DataSource = imageList.Images;
+ lb_name.Text = wordscomp.GetName();
+ lb_ip.Text = wordscomp.GetIP();
+ lb_description.Text = wordscomp.GetDescription();
+ tb_netName.Text = wordscomp.GetNetName();
+ wordsComp = wordscomp;
+ treeNode = treenode;
+ comboBox1.SelectedIndex = treeNode.ImageIndex;
+
+ }
+ public void Save()
+ {
+ // lb_description.
+ }
+
+ private void WordsEditCompControl_VisibleChanged(object sender, EventArgs e)
+ {
+ wordsComp.Set(lb_name.Text.Length > 0 ? lb_name.Text : null,
+ lb_ip.Text.Length > 0 ? lb_ip.Text : null,
+ lb_description.Text.Length > 0 ? lb_description.Text : null,
+ comboBox1.SelectedIndex,
+ tb_netName.Text.Length > 0 ? tb_netName.Text : null);
+ treeNode.Text = wordsComp.NameNode();
+ treeNode.ImageIndex = comboBox1.SelectedIndex;
+ treeNode.SelectedImageIndex = comboBox1.SelectedIndex;
+
+ }
+
+ private void comboBox1_DrawItem(object sender, DrawItemEventArgs e)
+ {
+ if(e.Index != -1)
+ {
+ e.Graphics.DrawImage(imageList.Images[e.Index],e.Bounds.Left, e.Bounds.Top, imageList.Images[e.Index].Width, imageList.Images[e.Index].Height);
+ }
+
+ }
+ }
+}
diff --git a/Remontor/Words/WordsEditCompControl.resx b/Remontor/Words/WordsEditCompControl.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Remontor/Words/WordsEditCompControl.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
\ No newline at end of file
diff --git a/Remontor/Words/WordsItemControl.Designer.cs b/Remontor/Words/WordsItemControl.Designer.cs
new file mode 100644
index 0000000..058dcf0
--- /dev/null
+++ b/Remontor/Words/WordsItemControl.Designer.cs
@@ -0,0 +1,130 @@
+namespace Remontor.Words
+{
+ partial class WordsItemControl
+ {
+ ///
+ /// Обязательная переменная конструктора.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Освободить все используемые ресурсы.
+ ///
+ /// истинно, если управляемый ресурс должен быть удален; иначе ложно.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Код, автоматически созданный конструктором компонентов
+
+ ///
+ /// Требуемый метод для поддержки конструктора — не изменяйте
+ /// содержимое этого метода с помощью редактора кода.
+ ///
+ private void InitializeComponent()
+ {
+ this.checkBox1 = new System.Windows.Forms.CheckBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.lb_name = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.lb_ip = new System.Windows.Forms.Label();
+ this.lb_dsp = new System.Windows.Forms.Label();
+ this.pb_icon = new System.Windows.Forms.PictureBox();
+ ((System.ComponentModel.ISupportInitialize)(this.pb_icon)).BeginInit();
+ this.SuspendLayout();
+ //
+ // checkBox1
+ //
+ this.checkBox1.AutoSize = true;
+ this.checkBox1.Location = new System.Drawing.Point(8, 6);
+ this.checkBox1.Name = "checkBox1";
+ this.checkBox1.Size = new System.Drawing.Size(15, 14);
+ this.checkBox1.TabIndex = 0;
+ this.checkBox1.UseVisualStyleBackColor = true;
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(50, 0);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(47, 13);
+ this.label1.TabIndex = 1;
+ this.label1.Text = "Имя ПК";
+ //
+ // lb_name
+ //
+ this.lb_name.AutoSize = true;
+ this.lb_name.Location = new System.Drawing.Point(103, 0);
+ this.lb_name.Name = "lb_name";
+ this.lb_name.Size = new System.Drawing.Size(0, 13);
+ this.lb_name.TabIndex = 2;
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(183, 0);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(50, 13);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "IP-адрес";
+ //
+ // lb_ip
+ //
+ this.lb_ip.AutoSize = true;
+ this.lb_ip.Location = new System.Drawing.Point(239, 0);
+ this.lb_ip.Name = "lb_ip";
+ this.lb_ip.Size = new System.Drawing.Size(0, 13);
+ this.lb_ip.TabIndex = 4;
+ //
+ // lb_dsp
+ //
+ this.lb_dsp.AutoSize = true;
+ this.lb_dsp.Location = new System.Drawing.Point(50, 13);
+ this.lb_dsp.Name = "lb_dsp";
+ this.lb_dsp.Size = new System.Drawing.Size(0, 13);
+ this.lb_dsp.TabIndex = 6;
+ //
+ // pb_icon
+ //
+ this.pb_icon.Location = new System.Drawing.Point(27, 3);
+ this.pb_icon.Name = "pb_icon";
+ this.pb_icon.Size = new System.Drawing.Size(20, 20);
+ this.pb_icon.TabIndex = 7;
+ this.pb_icon.TabStop = false;
+ //
+ // WordsItemControl
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.Controls.Add(this.pb_icon);
+ this.Controls.Add(this.lb_dsp);
+ this.Controls.Add(this.lb_ip);
+ this.Controls.Add(this.label2);
+ this.Controls.Add(this.lb_name);
+ this.Controls.Add(this.label1);
+ this.Controls.Add(this.checkBox1);
+ this.Name = "WordsItemControl";
+ this.Size = new System.Drawing.Size(371, 27);
+ this.Load += new System.EventHandler(this.WordsItemControl_Load);
+ ((System.ComponentModel.ISupportInitialize)(this.pb_icon)).EndInit();
+ this.ResumeLayout(false);
+ this.PerformLayout();
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.CheckBox checkBox1;
+ private System.Windows.Forms.Label label1;
+ private System.Windows.Forms.Label lb_name;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label lb_ip;
+ private System.Windows.Forms.Label lb_dsp;
+ private System.Windows.Forms.PictureBox pb_icon;
+ }
+}
diff --git a/Remontor/Words/WordsItemControl.cs b/Remontor/Words/WordsItemControl.cs
new file mode 100644
index 0000000..71995d2
--- /dev/null
+++ b/Remontor/Words/WordsItemControl.cs
@@ -0,0 +1,38 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Remontor.Words
+{
+
+ [DefaultEvent(nameof(WordsItemControl))]
+ internal partial class WordsItemControl : UserControl, IWordsContol
+ {
+
+ public WordsItemControl()
+ {
+ InitializeComponent();
+ }
+
+ public WordsItemControl(WordsComp wordsComp)
+ {
+ InitializeComponent();
+ lb_ip.Text = wordsComp.GetIP();
+ lb_name.Text = wordsComp.GetName();
+ lb_dsp.Text = wordsComp.GetDescription();
+
+ }
+
+ private void WordsItemControl_Load(object sender, EventArgs e)
+ {
+
+ }
+
+ }
+}
diff --git a/Remontor/Words/WordsItemControl.resx b/Remontor/Words/WordsItemControl.resx
new file mode 100644
index 0000000..1af7de1
--- /dev/null
+++ b/Remontor/Words/WordsItemControl.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
\ No newline at end of file
diff --git a/Remontor/Words/WordsList.cs b/Remontor/Words/WordsList.cs
new file mode 100644
index 0000000..1810b88
--- /dev/null
+++ b/Remontor/Words/WordsList.cs
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace Remontor.Words
+{
+ [Serializable]
+ static class WordsList
+ {
+ public static WordsCategory MainCategory = new WordsCategory("Main");
+ public static void AddItem(IWordsItem item, WordsCategory wordsCategory)
+ {
+ wordsCategory.Add(item);
+ }
+ public static void InsertItem(int index,IWordsItem item, WordsCategory wordsCategory)
+ {
+ wordsCategory.Insert(index, item);
+ }
+
+ public static void MoveItem(int index, IWordsItem item, WordsCategory SrcCategory, WordsCategory DstCategory)
+ {
+ SrcCategory.Move(index, item, DstCategory);
+ }
+
+ public static TreeNode[] ListNodes()
+ {
+ TreeNode[] treeNodes = new TreeNode[MainCategory.Count()];
+ for(int i = 0; i < MainCategory.Count(); i++)
+ {
+ treeNodes[i] = MainCategory.Items(i).NodeList();
+ treeNodes[i].Name += i;
+ }
+
+ return treeNodes;
+ }
+
+
+
+ public static TreeNode[] ListNodes(WordsCategory ChangeCategory)
+ {
+ TreeNode[] treeNodes = new TreeNode[ChangeCategory.Count()];
+ for (int i = 0; i < ChangeCategory.Count(); i++)
+ {
+ treeNodes[i] = ChangeCategory.Items(i).NodeList();
+ }
+
+ return treeNodes;
+ }
+ }
+}
diff --git a/Remontor/bin/Debug/Remontor.exe b/Remontor/bin/Debug/Remontor.exe
index 4b1a72b..a5de831 100644
Binary files a/Remontor/bin/Debug/Remontor.exe and b/Remontor/bin/Debug/Remontor.exe differ
diff --git a/Remontor/bin/Debug/Remontor.pdb b/Remontor/bin/Debug/Remontor.pdb
index 9a7ef80..433831d 100644
Binary files a/Remontor/bin/Debug/Remontor.pdb and b/Remontor/bin/Debug/Remontor.pdb differ
diff --git a/Remontor/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/Remontor/obj/Debug/DesignTimeResolveAssemblyReferences.cache
index 37ae34f..3ca7d05 100644
Binary files a/Remontor/obj/Debug/DesignTimeResolveAssemblyReferences.cache and b/Remontor/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ
diff --git a/Remontor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/Remontor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache
index 26cf969..b151148 100644
Binary files a/Remontor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/Remontor/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ
diff --git a/Remontor/obj/Debug/Remontor.Properties.Resources.resources b/Remontor/obj/Debug/Remontor.Properties.Resources.resources
index e081f0f..8fc7438 100644
Binary files a/Remontor/obj/Debug/Remontor.Properties.Resources.resources and b/Remontor/obj/Debug/Remontor.Properties.Resources.resources differ
diff --git a/Remontor/obj/Debug/Remontor.csproj.GenerateResource.cache b/Remontor/obj/Debug/Remontor.csproj.GenerateResource.cache
index 094e9a5..73653db 100644
Binary files a/Remontor/obj/Debug/Remontor.csproj.GenerateResource.cache and b/Remontor/obj/Debug/Remontor.csproj.GenerateResource.cache differ
diff --git a/Remontor/obj/Debug/Remontor.exe b/Remontor/obj/Debug/Remontor.exe
index 4b1a72b..a5de831 100644
Binary files a/Remontor/obj/Debug/Remontor.exe and b/Remontor/obj/Debug/Remontor.exe differ
diff --git a/Remontor/obj/Debug/Remontor.pdb b/Remontor/obj/Debug/Remontor.pdb
index 9a7ef80..433831d 100644
Binary files a/Remontor/obj/Debug/Remontor.pdb and b/Remontor/obj/Debug/Remontor.pdb differ
diff --git a/Remontor/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll b/Remontor/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll
index ff11fbf..3c3477b 100644
Binary files a/Remontor/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll and b/Remontor/obj/Debug/TempPE/Properties.Resources.Designer.cs.dll differ