diff --git a/Controllers/NodeTreeController.cs b/Controllers/NodeTreeController.cs
index 8f608f2..4c58441 100644
--- a/Controllers/NodeTreeController.cs
+++ b/Controllers/NodeTreeController.cs
@@ -586,6 +586,13 @@ namespace NBTExplorer.Controllers
}
}
+ public void ScrollNode (DataNode node)
+ {
+ TreeNode treeNode = FindFrontNode(node);
+ if (treeNode != null)
+ treeNode.EnsureVisible();
+ }
+
public void RefreshRootNodes ()
{
if (ShowVirtualRoot) {
diff --git a/Model/RegionChunkDataNode.cs b/Model/RegionChunkDataNode.cs
index c5c2962..a074d33 100644
--- a/Model/RegionChunkDataNode.cs
+++ b/Model/RegionChunkDataNode.cs
@@ -21,6 +21,16 @@ namespace NBTExplorer.Model
_container = new CompoundTagContainer(new TagNodeCompound());
}
+ public int X
+ {
+ get { return _x; }
+ }
+
+ public int Z
+ {
+ get { return _z; }
+ }
+
protected override NodeCapabilities Capabilities
{
get
diff --git a/Model/RegionFileDataNode.cs b/Model/RegionFileDataNode.cs
index 91524f0..61ed548 100644
--- a/Model/RegionFileDataNode.cs
+++ b/Model/RegionFileDataNode.cs
@@ -10,7 +10,7 @@ namespace NBTExplorer.Model
private string _path;
private RegionFile _region;
- private static Regex _namePattern = new Regex(@"^r(\.-?\d+){2}\.(mcr|mca)$");
+ private static Regex _namePattern = new Regex(@"^r\.(-?\d+)\.(-?\d+)\.(mcr|mca)$");
private RegionFileDataNode (string path)
{
@@ -28,6 +28,20 @@ namespace NBTExplorer.Model
return _namePattern.IsMatch(path);
}
+ public static bool RegionCoordinates (string path, out int rx, out int rz)
+ {
+ rx = 0;
+ rz = 0;
+
+ Match match = _namePattern.Match(path);
+ if (match.Success && match.Groups.Count > 3) {
+ rx = int.Parse(match.Groups[1].Value);
+ rz = int.Parse(match.Groups[2].Value);
+ }
+
+ return match.Success;
+ }
+
protected override NodeCapabilities Capabilities
{
get
diff --git a/NBTExplorer.csproj b/NBTExplorer.csproj
index e472f47..de13973 100644
--- a/NBTExplorer.csproj
+++ b/NBTExplorer.csproj
@@ -97,6 +97,12 @@
CancelSearchForm.cs
+
+ Form
+
+
+ FindBlock.cs
+
Form
@@ -229,9 +235,15 @@
ValueRuleForm.cs
+
+ Component
+
CancelSearchForm.cs
+
+ FindBlock.cs
+
FindReplace.cs
diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs
index 3232c13..ce4df87 100644
--- a/Properties/AssemblyInfo.cs
+++ b/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.5.1.0")]
-[assembly: AssemblyFileVersion("2.5.1.0")]
+[assembly: AssemblyVersion("2.6.0.0")]
+[assembly: AssemblyFileVersion("2.6.0.0")]
diff --git a/Windows/FindBlock.Designer.cs b/Windows/FindBlock.Designer.cs
new file mode 100644
index 0000000..c1e2f56
--- /dev/null
+++ b/Windows/FindBlock.Designer.cs
@@ -0,0 +1,455 @@
+namespace NBTExplorer.Windows
+{
+ partial class FindBlock
+ {
+ ///
+ /// 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.groupBox1 = new System.Windows.Forms.GroupBox();
+ this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
+ this.groupBox2 = new System.Windows.Forms.GroupBox();
+ this.groupBox3 = new System.Windows.Forms.GroupBox();
+ this.label1 = new System.Windows.Forms.Label();
+ this.label2 = new System.Windows.Forms.Label();
+ this.label3 = new System.Windows.Forms.Label();
+ this.label4 = new System.Windows.Forms.Label();
+ this.label5 = new System.Windows.Forms.Label();
+ this.label6 = new System.Windows.Forms.Label();
+ this._findButton = new System.Windows.Forms.Button();
+ this.groupBox4 = new System.Windows.Forms.GroupBox();
+ this.groupBox5 = new System.Windows.Forms.GroupBox();
+ this.label7 = new System.Windows.Forms.Label();
+ this.label8 = new System.Windows.Forms.Label();
+ this.label9 = new System.Windows.Forms.Label();
+ this.label10 = new System.Windows.Forms.Label();
+ this._cancelButton = new System.Windows.Forms.Button();
+ this._blockZTextBox = new NBTExplorer.Windows.WatermarkTextBox();
+ this._blockXTextBox = new NBTExplorer.Windows.WatermarkTextBox();
+ this._chunkZTextBox = new NBTExplorer.Windows.WatermarkTextBox();
+ this._chunkXTextBox = new NBTExplorer.Windows.WatermarkTextBox();
+ this._regionZTextBox = new NBTExplorer.Windows.WatermarkTextBox();
+ this._regionXTextBox = new NBTExplorer.Windows.WatermarkTextBox();
+ this._localChunkXTextBox = new NBTExplorer.Windows.WatermarkTextBox();
+ this._localChunkZTextBox = new NBTExplorer.Windows.WatermarkTextBox();
+ this._localBlockZTextBox = new NBTExplorer.Windows.WatermarkTextBox();
+ this._localBlockXTextBox = new NBTExplorer.Windows.WatermarkTextBox();
+ this.groupBox1.SuspendLayout();
+ this.tableLayoutPanel1.SuspendLayout();
+ this.groupBox2.SuspendLayout();
+ this.groupBox3.SuspendLayout();
+ this.groupBox4.SuspendLayout();
+ this.groupBox5.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // groupBox1
+ //
+ this.groupBox1.Controls.Add(this.label2);
+ this.groupBox1.Controls.Add(this.label1);
+ this.groupBox1.Controls.Add(this._regionZTextBox);
+ this.groupBox1.Controls.Add(this._regionXTextBox);
+ this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.groupBox1.Location = new System.Drawing.Point(3, 3);
+ this.groupBox1.Name = "groupBox1";
+ this.groupBox1.Size = new System.Drawing.Size(142, 70);
+ this.groupBox1.TabIndex = 0;
+ this.groupBox1.TabStop = false;
+ this.groupBox1.Text = "Region";
+ //
+ // tableLayoutPanel1
+ //
+ this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+ | System.Windows.Forms.AnchorStyles.Right)));
+ this.tableLayoutPanel1.ColumnCount = 3;
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+ this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 33.33333F));
+ this.tableLayoutPanel1.Controls.Add(this.groupBox3, 2, 0);
+ this.tableLayoutPanel1.Controls.Add(this.groupBox2, 1, 0);
+ this.tableLayoutPanel1.Controls.Add(this.groupBox1, 0, 0);
+ this.tableLayoutPanel1.Controls.Add(this.groupBox4, 1, 1);
+ this.tableLayoutPanel1.Controls.Add(this.groupBox5, 2, 1);
+ this.tableLayoutPanel1.Location = new System.Drawing.Point(12, 12);
+ this.tableLayoutPanel1.Name = "tableLayoutPanel1";
+ this.tableLayoutPanel1.RowCount = 2;
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
+ this.tableLayoutPanel1.Size = new System.Drawing.Size(446, 152);
+ this.tableLayoutPanel1.TabIndex = 1;
+ //
+ // groupBox2
+ //
+ this.groupBox2.Controls.Add(this.label3);
+ this.groupBox2.Controls.Add(this.label4);
+ this.groupBox2.Controls.Add(this._chunkZTextBox);
+ this.groupBox2.Controls.Add(this._chunkXTextBox);
+ this.groupBox2.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.groupBox2.Location = new System.Drawing.Point(151, 3);
+ this.groupBox2.Name = "groupBox2";
+ this.groupBox2.Size = new System.Drawing.Size(142, 70);
+ this.groupBox2.TabIndex = 2;
+ this.groupBox2.TabStop = false;
+ this.groupBox2.Text = "Chunk";
+ //
+ // groupBox3
+ //
+ this.groupBox3.Controls.Add(this.label5);
+ this.groupBox3.Controls.Add(this.label6);
+ this.groupBox3.Controls.Add(this._blockZTextBox);
+ this.groupBox3.Controls.Add(this._blockXTextBox);
+ this.groupBox3.Location = new System.Drawing.Point(299, 3);
+ this.groupBox3.Name = "groupBox3";
+ this.groupBox3.Size = new System.Drawing.Size(144, 70);
+ this.groupBox3.TabIndex = 2;
+ this.groupBox3.TabStop = false;
+ this.groupBox3.Text = "Block";
+ //
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(6, 22);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(17, 13);
+ this.label1.TabIndex = 2;
+ this.label1.Text = "X:";
+ //
+ // label2
+ //
+ this.label2.AutoSize = true;
+ this.label2.Location = new System.Drawing.Point(6, 48);
+ this.label2.Name = "label2";
+ this.label2.Size = new System.Drawing.Size(17, 13);
+ this.label2.TabIndex = 3;
+ this.label2.Text = "Z:";
+ //
+ // label3
+ //
+ this.label3.AutoSize = true;
+ this.label3.Location = new System.Drawing.Point(6, 48);
+ this.label3.Name = "label3";
+ this.label3.Size = new System.Drawing.Size(17, 13);
+ this.label3.TabIndex = 5;
+ this.label3.Text = "Z:";
+ //
+ // label4
+ //
+ this.label4.AutoSize = true;
+ this.label4.Location = new System.Drawing.Point(6, 22);
+ this.label4.Name = "label4";
+ this.label4.Size = new System.Drawing.Size(17, 13);
+ this.label4.TabIndex = 4;
+ this.label4.Text = "X:";
+ //
+ // label5
+ //
+ this.label5.AutoSize = true;
+ this.label5.Location = new System.Drawing.Point(6, 48);
+ this.label5.Name = "label5";
+ this.label5.Size = new System.Drawing.Size(17, 13);
+ this.label5.TabIndex = 7;
+ this.label5.Text = "Z:";
+ //
+ // label6
+ //
+ this.label6.AutoSize = true;
+ this.label6.Location = new System.Drawing.Point(6, 22);
+ this.label6.Name = "label6";
+ this.label6.Size = new System.Drawing.Size(17, 13);
+ this.label6.TabIndex = 6;
+ this.label6.Text = "X:";
+ //
+ // _findButton
+ //
+ this._findButton.Location = new System.Drawing.Point(383, 170);
+ this._findButton.Name = "_findButton";
+ this._findButton.Size = new System.Drawing.Size(75, 23);
+ this._findButton.TabIndex = 2;
+ this._findButton.Text = "Find Chunk";
+ this._findButton.UseVisualStyleBackColor = true;
+ this._findButton.Click += new System.EventHandler(this._findButton_Click);
+ //
+ // groupBox4
+ //
+ this.groupBox4.Controls.Add(this.label7);
+ this.groupBox4.Controls.Add(this._localChunkXTextBox);
+ this.groupBox4.Controls.Add(this.label8);
+ this.groupBox4.Controls.Add(this._localChunkZTextBox);
+ this.groupBox4.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.groupBox4.Location = new System.Drawing.Point(151, 79);
+ this.groupBox4.Name = "groupBox4";
+ this.groupBox4.Size = new System.Drawing.Size(142, 70);
+ this.groupBox4.TabIndex = 3;
+ this.groupBox4.TabStop = false;
+ this.groupBox4.Text = "Local Chunk";
+ //
+ // groupBox5
+ //
+ this.groupBox5.Controls.Add(this.label9);
+ this.groupBox5.Controls.Add(this.label10);
+ this.groupBox5.Controls.Add(this._localBlockZTextBox);
+ this.groupBox5.Controls.Add(this._localBlockXTextBox);
+ this.groupBox5.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.groupBox5.Location = new System.Drawing.Point(299, 79);
+ this.groupBox5.Name = "groupBox5";
+ this.groupBox5.Size = new System.Drawing.Size(144, 70);
+ this.groupBox5.TabIndex = 4;
+ this.groupBox5.TabStop = false;
+ this.groupBox5.Text = "Local Block";
+ //
+ // label7
+ //
+ this.label7.AutoSize = true;
+ this.label7.Location = new System.Drawing.Point(6, 48);
+ this.label7.Name = "label7";
+ this.label7.Size = new System.Drawing.Size(17, 13);
+ this.label7.TabIndex = 9;
+ this.label7.Text = "Z:";
+ //
+ // label8
+ //
+ this.label8.AutoSize = true;
+ this.label8.Location = new System.Drawing.Point(6, 22);
+ this.label8.Name = "label8";
+ this.label8.Size = new System.Drawing.Size(17, 13);
+ this.label8.TabIndex = 8;
+ this.label8.Text = "X:";
+ //
+ // label9
+ //
+ this.label9.AutoSize = true;
+ this.label9.Location = new System.Drawing.Point(8, 48);
+ this.label9.Name = "label9";
+ this.label9.Size = new System.Drawing.Size(17, 13);
+ this.label9.TabIndex = 9;
+ this.label9.Text = "Z:";
+ //
+ // label10
+ //
+ this.label10.AutoSize = true;
+ this.label10.Location = new System.Drawing.Point(8, 22);
+ this.label10.Name = "label10";
+ this.label10.Size = new System.Drawing.Size(17, 13);
+ this.label10.TabIndex = 8;
+ this.label10.Text = "X:";
+ //
+ // _cancelButton
+ //
+ this._cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+ this._cancelButton.Location = new System.Drawing.Point(302, 171);
+ this._cancelButton.Name = "_cancelButton";
+ this._cancelButton.Size = new System.Drawing.Size(75, 23);
+ this._cancelButton.TabIndex = 3;
+ this._cancelButton.Text = "Cancel";
+ this._cancelButton.UseVisualStyleBackColor = true;
+ this._cancelButton.Click += new System.EventHandler(this._cancelButton_Click);
+ //
+ // _blockZTextBox
+ //
+ this._blockZTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this._blockZTextBox.ForeColor = System.Drawing.Color.Gray;
+ this._blockZTextBox.Location = new System.Drawing.Point(38, 45);
+ this._blockZTextBox.Name = "_blockZTextBox";
+ this._blockZTextBox.Size = new System.Drawing.Size(100, 20);
+ this._blockZTextBox.TabIndex = 1;
+ this._blockZTextBox.Text = "Type here";
+ this._blockZTextBox.WatermarkActive = true;
+ this._blockZTextBox.WatermarkText = "Type here";
+ this._blockZTextBox.TextChanged += new System.EventHandler(this._blockZTextBox_TextChanged);
+ //
+ // _blockXTextBox
+ //
+ this._blockXTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this._blockXTextBox.ForeColor = System.Drawing.Color.Gray;
+ this._blockXTextBox.Location = new System.Drawing.Point(38, 19);
+ this._blockXTextBox.Name = "_blockXTextBox";
+ this._blockXTextBox.Size = new System.Drawing.Size(100, 20);
+ this._blockXTextBox.TabIndex = 0;
+ this._blockXTextBox.Text = "Type here";
+ this._blockXTextBox.WatermarkActive = true;
+ this._blockXTextBox.WatermarkText = "Type here";
+ this._blockXTextBox.TextChanged += new System.EventHandler(this._blockXTextBox_TextChanged);
+ //
+ // _chunkZTextBox
+ //
+ this._chunkZTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this._chunkZTextBox.ForeColor = System.Drawing.Color.Gray;
+ this._chunkZTextBox.Location = new System.Drawing.Point(36, 45);
+ this._chunkZTextBox.Name = "_chunkZTextBox";
+ this._chunkZTextBox.Size = new System.Drawing.Size(100, 20);
+ this._chunkZTextBox.TabIndex = 1;
+ this._chunkZTextBox.Text = "Type here";
+ this._chunkZTextBox.WatermarkActive = true;
+ this._chunkZTextBox.WatermarkText = "Type here";
+ this._chunkZTextBox.TextChanged += new System.EventHandler(this._chunkZTextBox_TextChanged);
+ //
+ // _chunkXTextBox
+ //
+ this._chunkXTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this._chunkXTextBox.ForeColor = System.Drawing.Color.Gray;
+ this._chunkXTextBox.Location = new System.Drawing.Point(36, 19);
+ this._chunkXTextBox.Name = "_chunkXTextBox";
+ this._chunkXTextBox.Size = new System.Drawing.Size(100, 20);
+ this._chunkXTextBox.TabIndex = 0;
+ this._chunkXTextBox.Text = "Type here";
+ this._chunkXTextBox.WatermarkActive = true;
+ this._chunkXTextBox.WatermarkText = "Type here";
+ this._chunkXTextBox.TextChanged += new System.EventHandler(this._chunkXTextBox_TextChanged);
+ //
+ // _regionZTextBox
+ //
+ this._regionZTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this._regionZTextBox.ForeColor = System.Drawing.Color.Gray;
+ this._regionZTextBox.Location = new System.Drawing.Point(36, 45);
+ this._regionZTextBox.Name = "_regionZTextBox";
+ this._regionZTextBox.Size = new System.Drawing.Size(100, 20);
+ this._regionZTextBox.TabIndex = 1;
+ this._regionZTextBox.Text = "Type here";
+ this._regionZTextBox.WatermarkActive = true;
+ this._regionZTextBox.WatermarkText = "Type here";
+ this._regionZTextBox.TextChanged += new System.EventHandler(this._regionZTextBox_TextChanged);
+ //
+ // _regionXTextBox
+ //
+ this._regionXTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this._regionXTextBox.ForeColor = System.Drawing.Color.Gray;
+ this._regionXTextBox.Location = new System.Drawing.Point(36, 19);
+ this._regionXTextBox.Name = "_regionXTextBox";
+ this._regionXTextBox.Size = new System.Drawing.Size(100, 20);
+ this._regionXTextBox.TabIndex = 0;
+ this._regionXTextBox.Text = "Type here";
+ this._regionXTextBox.WatermarkActive = true;
+ this._regionXTextBox.WatermarkText = "Type here";
+ this._regionXTextBox.TextChanged += new System.EventHandler(this._regionXTextBox_TextChanged);
+ //
+ // _localChunkXTextBox
+ //
+ this._localChunkXTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this._localChunkXTextBox.ForeColor = System.Drawing.Color.Gray;
+ this._localChunkXTextBox.Location = new System.Drawing.Point(36, 19);
+ this._localChunkXTextBox.Name = "_localChunkXTextBox";
+ this._localChunkXTextBox.Size = new System.Drawing.Size(100, 20);
+ this._localChunkXTextBox.TabIndex = 6;
+ this._localChunkXTextBox.Text = "Type here";
+ this._localChunkXTextBox.WatermarkActive = true;
+ this._localChunkXTextBox.WatermarkText = "Type here";
+ this._localChunkXTextBox.TextChanged += new System.EventHandler(this._localChunkXTextBox_TextChanged);
+ //
+ // _localChunkZTextBox
+ //
+ this._localChunkZTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this._localChunkZTextBox.ForeColor = System.Drawing.Color.Gray;
+ this._localChunkZTextBox.Location = new System.Drawing.Point(36, 45);
+ this._localChunkZTextBox.Name = "_localChunkZTextBox";
+ this._localChunkZTextBox.Size = new System.Drawing.Size(100, 20);
+ this._localChunkZTextBox.TabIndex = 7;
+ this._localChunkZTextBox.Text = "Type here";
+ this._localChunkZTextBox.WatermarkActive = true;
+ this._localChunkZTextBox.WatermarkText = "Type here";
+ this._localChunkZTextBox.TextChanged += new System.EventHandler(this._localChunkZTextBox_TextChanged);
+ //
+ // _localBlockZTextBox
+ //
+ this._localBlockZTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this._localBlockZTextBox.ForeColor = System.Drawing.Color.Gray;
+ this._localBlockZTextBox.Location = new System.Drawing.Point(38, 45);
+ this._localBlockZTextBox.Name = "_localBlockZTextBox";
+ this._localBlockZTextBox.Size = new System.Drawing.Size(100, 20);
+ this._localBlockZTextBox.TabIndex = 7;
+ this._localBlockZTextBox.Text = "Type here";
+ this._localBlockZTextBox.WatermarkActive = true;
+ this._localBlockZTextBox.WatermarkText = "Type here";
+ this._localBlockZTextBox.TextChanged += new System.EventHandler(this._localBlockZTextBox_TextChanged);
+ //
+ // _localBlockXTextBox
+ //
+ this._localBlockXTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this._localBlockXTextBox.ForeColor = System.Drawing.Color.Gray;
+ this._localBlockXTextBox.Location = new System.Drawing.Point(38, 19);
+ this._localBlockXTextBox.Name = "_localBlockXTextBox";
+ this._localBlockXTextBox.Size = new System.Drawing.Size(100, 20);
+ this._localBlockXTextBox.TabIndex = 6;
+ this._localBlockXTextBox.Text = "Type here";
+ this._localBlockXTextBox.WatermarkActive = true;
+ this._localBlockXTextBox.WatermarkText = "Type here";
+ this._localBlockXTextBox.TextChanged += new System.EventHandler(this._localBlockXTextBox_TextChanged);
+ //
+ // FindBlock
+ //
+ this.AcceptButton = this._findButton;
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.CancelButton = this._cancelButton;
+ this.ClientSize = new System.Drawing.Size(470, 206);
+ this.Controls.Add(this._cancelButton);
+ this.Controls.Add(this._findButton);
+ this.Controls.Add(this.tableLayoutPanel1);
+ this.Name = "FindBlock";
+ this.Text = "Chunk Finder";
+ this.groupBox1.ResumeLayout(false);
+ this.groupBox1.PerformLayout();
+ this.tableLayoutPanel1.ResumeLayout(false);
+ this.groupBox2.ResumeLayout(false);
+ this.groupBox2.PerformLayout();
+ this.groupBox3.ResumeLayout(false);
+ this.groupBox3.PerformLayout();
+ this.groupBox4.ResumeLayout(false);
+ this.groupBox4.PerformLayout();
+ this.groupBox5.ResumeLayout(false);
+ this.groupBox5.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private System.Windows.Forms.GroupBox groupBox1;
+ private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
+ private System.Windows.Forms.GroupBox groupBox3;
+ private System.Windows.Forms.GroupBox groupBox2;
+ private System.Windows.Forms.Label label2;
+ private System.Windows.Forms.Label label1;
+ private WatermarkTextBox _regionZTextBox;
+ private WatermarkTextBox _regionXTextBox;
+ private System.Windows.Forms.Label label5;
+ private System.Windows.Forms.Label label6;
+ private WatermarkTextBox _blockZTextBox;
+ private WatermarkTextBox _blockXTextBox;
+ private System.Windows.Forms.Label label3;
+ private System.Windows.Forms.Label label4;
+ private WatermarkTextBox _chunkZTextBox;
+ private WatermarkTextBox _chunkXTextBox;
+ private System.Windows.Forms.Button _findButton;
+ private System.Windows.Forms.GroupBox groupBox4;
+ private System.Windows.Forms.Label label7;
+ private WatermarkTextBox _localChunkXTextBox;
+ private System.Windows.Forms.Label label8;
+ private WatermarkTextBox _localChunkZTextBox;
+ private System.Windows.Forms.GroupBox groupBox5;
+ private System.Windows.Forms.Label label9;
+ private System.Windows.Forms.Label label10;
+ private WatermarkTextBox _localBlockZTextBox;
+ private WatermarkTextBox _localBlockXTextBox;
+ private System.Windows.Forms.Button _cancelButton;
+ }
+}
\ No newline at end of file
diff --git a/Windows/FindBlock.cs b/Windows/FindBlock.cs
new file mode 100644
index 0000000..95315bd
--- /dev/null
+++ b/Windows/FindBlock.cs
@@ -0,0 +1,530 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+using NBTExplorer.Model;
+
+namespace NBTExplorer.Windows
+{
+ public partial class FindBlock : Form
+ {
+ private class CoordinateGroup
+ {
+ public int? Region;
+ public int? Chunk;
+ public int? Block;
+ public int? LocalChunk;
+ public int? LocalBlock;
+
+ public WatermarkTextBox RegionBox;
+ public WatermarkTextBox ChunkBox;
+ public WatermarkTextBox BlockBox;
+ public WatermarkTextBox LocalChunkBox;
+ public WatermarkTextBox LocalBlockBox;
+ }
+
+ private bool _inUpdate;
+
+ private CoordinateGroup _groupX;
+ private CoordinateGroup _groupZ;
+
+ private DataNode _searchRoot;
+ private DataNode _searchResult;
+
+ public FindBlock (DataNode searchRoot)
+ {
+ InitializeComponent();
+
+ _searchRoot = searchRoot;
+
+ _groupX = new CoordinateGroup() {
+ RegionBox = _regionXTextBox,
+ ChunkBox = _chunkXTextBox,
+ BlockBox = _blockXTextBox,
+ LocalChunkBox = _localChunkXTextBox,
+ LocalBlockBox = _localBlockXTextBox,
+ };
+
+ _groupZ = new CoordinateGroup() {
+ RegionBox = _regionZTextBox,
+ ChunkBox = _chunkZTextBox,
+ BlockBox = _blockZTextBox,
+ LocalChunkBox = _localChunkZTextBox,
+ LocalBlockBox = _localBlockZTextBox,
+ };
+
+ ApplyRegion(_groupX, "0", true);
+ ApplyRegion(_groupZ, "0", true);
+
+ Validate();
+ }
+
+ public DataNode Result
+ {
+ get { return _searchResult; }
+ }
+
+ private DataNode Search (DataNode node)
+ {
+ if (node is DirectoryDataNode) {
+ DirectoryDataNode dirNode = node as DirectoryDataNode;
+ if (!dirNode.IsExpanded)
+ dirNode.Expand();
+
+ foreach (var subNode in dirNode.Nodes) {
+ DataNode resultNode = Search(subNode);
+ if (resultNode != null)
+ return resultNode;
+ }
+
+ return null;
+ }
+ else if (node is RegionFileDataNode) {
+ RegionFileDataNode regionNode = node as RegionFileDataNode;
+
+ int rx, rz;
+ if (!RegionFileDataNode.RegionCoordinates(regionNode.NodePathName, out rx, out rz))
+ return null;
+ if (rx != _groupX.Region.Value || rz != _groupZ.Region.Value)
+ return null;
+
+ if (!regionNode.IsExpanded)
+ regionNode.Expand();
+
+ foreach (var subNode in regionNode.Nodes) {
+ DataNode resultNode = Search(subNode);
+ if (resultNode != null)
+ return resultNode;
+ }
+
+ return null;
+ }
+ else if (node is RegionChunkDataNode) {
+ RegionChunkDataNode chunkNode = node as RegionChunkDataNode;
+ if (chunkNode.X != _groupX.LocalChunk.Value || chunkNode.Z != _groupZ.LocalChunk.Value)
+ return null;
+
+ return chunkNode;
+ }
+
+ return null;
+ }
+
+ private int Mod (int a, int b)
+ {
+ return ((a % b) + b) % b;
+ }
+
+ // Block Set
+
+ private string RegionFromBlock (int block)
+ {
+ return ((block >> 4) >> 5).ToString();
+ }
+
+ private string ChunkFromBlock (int block)
+ {
+ return (block >> 4).ToString();
+ }
+
+ private string LocalChunkFromBlock (int block)
+ {
+ return Mod(block >> 4, 32).ToString();
+ }
+
+ private string LocalBlockFromBlock (int block)
+ {
+ return Mod(block, 16).ToString();
+ }
+
+ // Chunk Set
+
+ private string RegionFromChunk (int chunk)
+ {
+ return (chunk >> 5).ToString();
+ }
+
+ private string BlockFromChunk (int chunk)
+ {
+ int start = chunk * 16;
+ int end = (chunk + 1) * 16 - 1;
+
+ return string.Format("({0} to {1})", start, end);
+ }
+
+ private string BlockFromChunk (int chunk, int localBlock)
+ {
+ return (chunk * 16 + localBlock).ToString();
+ }
+
+ private string LocalChunkFromChunk (int chunk)
+ {
+ return Mod(chunk, 32).ToString();
+ }
+
+ private string LocalBlockFromChunk (int chunk)
+ {
+ return "(0 to 15)";
+ }
+
+ // Region Set
+
+ private string ChunkFromRegion (int region)
+ {
+ int start = region * 32;
+ int end = (region + 1) * 32 - 1;
+
+ return string.Format("({0} to {1})", start, end);
+ }
+
+ private string BlockFromRegion (int region)
+ {
+ int start = region * 32 * 16;
+ int end = (region + 1) * 32 * 16 - 1;
+
+ return string.Format("({0} to {1})", start, end);
+ }
+
+ private string LocalChunkFromRegion (int region)
+ {
+ return "(0 to 31)";
+ }
+
+ private string LocalBlockFromRegion (int region)
+ {
+ return "(0 to 15)";
+ }
+
+ // Local Chunk Set
+
+ private string RegionFromLocalChunk (int localChunk)
+ {
+ return "(ANY)";
+ }
+
+ private string ChunkFromLocalChunk (int localChunk)
+ {
+ return "(ANY)";
+ }
+
+ private string ChunkFromLocalChunk (int region, int localChunk)
+ {
+ return (region * 32 + localChunk).ToString();
+ }
+
+ private string BlockFromLocalChunk (int localChunk)
+ {
+ return "(ANY)";
+ }
+
+ private string BlockFromLocalChunk (int region, int localChunk)
+ {
+ return BlockFromChunk(region * 32 + localChunk);
+ }
+
+ private string LocalBlockFromLocalChunk (int localChunk)
+ {
+ return "(0 to 15)";
+ }
+
+ private string LocalBlockFromLocalChunk (int region, int localChunk)
+ {
+ return "(0 to 15)";
+ }
+
+ // Local Block Set
+
+ private string RegionFromLocalBlock (int localBlock)
+ {
+ return "(ANY)";
+ }
+
+ private string ChunkFromLocalBlock (int localBlock)
+ {
+ return "(ANY)";
+ }
+
+ private string ChunkFromLocalBlock (int region, int localChunk, int localBlock)
+ {
+ return (region * 32 + localChunk).ToString();
+ }
+
+ private string BlockFromLocalBlock (int localBlock)
+ {
+ return "(ANY)";
+ }
+
+ private string BlockFromLocalBlock (int region, int localChunk, int localBlock)
+ {
+ return (region * 32 * 16 + localChunk * 16 + localBlock).ToString();
+ }
+
+ private int? ParseInt (string value)
+ {
+ int parsedValue;
+ if (int.TryParse(value, out parsedValue))
+ return parsedValue;
+ else
+ return null;
+ }
+
+ private void ApplyValueToTextBox (WatermarkTextBox textBox, string value, bool primary)
+ {
+ if (primary)
+ textBox.ApplyText(value);
+ else
+ textBox.ApplyWatermark(value);
+ }
+
+ private void ApplyRegion (CoordinateGroup group, string value, bool primary)
+ {
+ group.Region = ParseInt(value);
+ ApplyValueToTextBox(group.RegionBox, value, primary);
+
+ if (primary && group.Region.HasValue) {
+ if (group.LocalChunk.HasValue && !group.LocalChunkBox.WatermarkActive) {
+ ApplyChunk(group, ChunkFromLocalChunk(group.Region.Value, group.LocalChunk.Value), false);
+ if (group.LocalBlock.HasValue && !group.LocalBlockBox.WatermarkActive)
+ ApplyBlock(group, BlockFromLocalBlock(group.Region.Value, group.LocalChunk.Value, group.LocalBlock.Value), false);
+ else {
+ ApplyBlock(group, BlockFromLocalChunk(group.Region.Value, group.LocalChunk.Value), false);
+ ApplyLocalBlock(group, LocalBlockFromLocalChunk(group.Region.Value, group.LocalChunk.Value), false);
+ }
+ }
+ else {
+ ApplyChunk(group, ChunkFromRegion(group.Region.Value), false);
+ ApplyBlock(group, BlockFromRegion(group.Region.Value), false);
+ ApplyLocalChunk(group, LocalChunkFromRegion(group.Region.Value), false);
+ ApplyLocalBlock(group, LocalBlockFromRegion(group.Region.Value), false);
+ }
+ }
+ }
+
+ private void ApplyChunk (CoordinateGroup group, string value, bool primary)
+ {
+ group.Chunk = ParseInt(value);
+ ApplyValueToTextBox(group.ChunkBox, value, primary);
+
+ if (primary && group.Chunk.HasValue) {
+ ApplyRegion(group, RegionFromChunk(group.Chunk.Value), false);
+ ApplyLocalChunk(group, LocalChunkFromChunk(group.Chunk.Value), false);
+ if (group.LocalBlock.HasValue && !group.LocalBlockBox.WatermarkActive)
+ ApplyBlock(group, BlockFromChunk(group.Chunk.Value, group.LocalBlock.Value), false);
+ else {
+ ApplyBlock(group, BlockFromChunk(group.Chunk.Value), false);
+ ApplyLocalBlock(group, LocalBlockFromChunk(group.Chunk.Value), false);
+ }
+ }
+ }
+
+ private void ApplyBlock (CoordinateGroup group, string value, bool primary)
+ {
+ group.Block = ParseInt(value);
+ ApplyValueToTextBox(group.BlockBox, value, primary);
+
+ if (primary && group.Block.HasValue) {
+ ApplyRegion(group, RegionFromBlock(group.Block.Value), false);
+ ApplyChunk(group, ChunkFromBlock(group.Block.Value), false);
+ ApplyLocalChunk(group, LocalChunkFromBlock(group.Block.Value), false);
+ ApplyLocalBlock(group, LocalBlockFromBlock(group.Block.Value), false);
+ }
+ }
+
+ private void ApplyLocalChunk (CoordinateGroup group, string value, bool primary)
+ {
+ group.LocalChunk = ParseInt(value);
+ ApplyValueToTextBox(group.LocalChunkBox, value, primary);
+
+ if (primary && group.LocalChunk.HasValue) {
+ if (group.Region.HasValue) {
+ ApplyChunk(group, ChunkFromLocalChunk(group.Region.Value, group.LocalChunk.Value), false);
+ if (group.LocalBlock.HasValue && !group.LocalBlockBox.WatermarkActive)
+ ApplyBlock(group, BlockFromLocalBlock(group.Region.Value, group.LocalChunk.Value, group.LocalBlock.Value), false);
+ else {
+ ApplyBlock(group, BlockFromLocalChunk(group.Region.Value, group.LocalChunk.Value), false);
+ ApplyLocalBlock(group, LocalBlockFromLocalChunk(group.Region.Value, group.LocalChunk.Value), false);
+ }
+ }
+ else {
+ ApplyRegion(group, RegionFromLocalChunk(group.LocalChunk.Value), false);
+ ApplyChunk(group, ChunkFromLocalChunk(group.LocalChunk.Value), false);
+ ApplyBlock(group, BlockFromLocalChunk(group.LocalChunk.Value), false);
+ ApplyLocalBlock(group, LocalBlockFromLocalChunk(group.LocalChunk.Value), false);
+ }
+ }
+ }
+
+ private void ApplyLocalBlock (CoordinateGroup group, string value, bool primary)
+ {
+ group.LocalBlock = ParseInt(value);
+ ApplyValueToTextBox(group.LocalBlockBox, value, primary);
+
+ if (primary && group.LocalBlock.HasValue) {
+ if (group.Region.HasValue && group.LocalChunk.HasValue && !group.LocalChunkBox.WatermarkActive) {
+ ApplyChunk(group, ChunkFromLocalBlock(group.Region.Value, group.LocalChunk.Value, group.LocalBlock.Value), false);
+ ApplyBlock(group, BlockFromLocalBlock(group.Region.Value, group.LocalChunk.Value, group.LocalBlock.Value), false);
+ }
+ else {
+ ApplyRegion(group, RegionFromLocalBlock(group.LocalBlock.Value), false);
+ ApplyChunk(group, ChunkFromLocalBlock(group.LocalBlock.Value), false);
+ ApplyBlock(group, BlockFromLocalBlock(group.LocalBlock.Value), false);
+ }
+ }
+ }
+
+ private void Validate ()
+ {
+ if (_groupX.LocalChunk.HasValue && _groupZ.LocalChunk.HasValue)
+ _findButton.Enabled = true;
+ else
+ _findButton.Enabled = false;
+ }
+
+ private void _regionXTextBox_TextChanged (object sender, EventArgs e)
+ {
+ int region = 0;
+ if (_inUpdate || !int.TryParse(_regionXTextBox.Text, out region))
+ return;
+
+ _inUpdate = true;
+ ApplyRegion(_groupX, _regionXTextBox.Text, true);
+ _inUpdate = false;
+
+ Validate();
+ }
+
+ private void _regionZTextBox_TextChanged (object sender, EventArgs e)
+ {
+ int region = 0;
+ if (_inUpdate || !int.TryParse(_regionZTextBox.Text, out region))
+ return;
+
+ _inUpdate = true;
+ ApplyRegion(_groupZ, _regionZTextBox.Text, true);
+ _inUpdate = false;
+
+ Validate();
+ }
+
+ private void _chunkXTextBox_TextChanged (object sender, EventArgs e)
+ {
+ int chunk = 0;
+ if (_inUpdate || !int.TryParse(_chunkXTextBox.Text, out chunk))
+ return;
+
+ _inUpdate = true;
+ ApplyChunk(_groupX, _chunkXTextBox.Text, true);
+ _inUpdate = false;
+
+ Validate();
+ }
+
+ private void _chunkZTextBox_TextChanged (object sender, EventArgs e)
+ {
+ int chunk = 0;
+ if (_inUpdate || !int.TryParse(_chunkZTextBox.Text, out chunk))
+ return;
+
+ _inUpdate = true;
+ ApplyChunk(_groupZ, _chunkZTextBox.Text, true);
+ _inUpdate = false;
+
+ Validate();
+ }
+
+ private void _blockXTextBox_TextChanged (object sender, EventArgs e)
+ {
+ int block = 0;
+ if (_inUpdate || !int.TryParse(_blockXTextBox.Text, out block))
+ return;
+
+ _inUpdate = true;
+ ApplyBlock(_groupX, _blockXTextBox.Text, true);
+ _inUpdate = false;
+
+ Validate();
+ }
+
+ private void _blockZTextBox_TextChanged (object sender, EventArgs e)
+ {
+ int block = 0;
+ if (_inUpdate || !int.TryParse(_blockZTextBox.Text, out block))
+ return;
+
+ _inUpdate = true;
+ ApplyBlock(_groupZ, _blockZTextBox.Text, true);
+ _inUpdate = false;
+
+ Validate();
+ }
+
+ private void _localChunkXTextBox_TextChanged (object sender, EventArgs e)
+ {
+ int localChunk = 0;
+ if (_inUpdate || !int.TryParse(_localChunkXTextBox.Text, out localChunk))
+ return;
+
+ _inUpdate = true;
+ ApplyLocalChunk(_groupX, _localChunkXTextBox.Text, true);
+ _inUpdate = false;
+
+ Validate();
+ }
+
+ private void _localChunkZTextBox_TextChanged (object sender, EventArgs e)
+ {
+ int localChunk = 0;
+ if (_inUpdate || !int.TryParse(_localChunkZTextBox.Text, out localChunk))
+ return;
+
+ _inUpdate = true;
+ ApplyLocalChunk(_groupZ, _localChunkZTextBox.Text, true);
+ _inUpdate = false;
+
+ Validate();
+ }
+
+ private void _localBlockXTextBox_TextChanged (object sender, EventArgs e)
+ {
+ int localBlock = 0;
+ if (_inUpdate || !int.TryParse(_localBlockXTextBox.Text, out localBlock))
+ return;
+
+ _inUpdate = true;
+ ApplyLocalBlock(_groupX, _localBlockXTextBox.Text, true);
+ _inUpdate = false;
+
+ Validate();
+ }
+
+ private void _localBlockZTextBox_TextChanged (object sender, EventArgs e)
+ {
+ int localBlock = 0;
+ if (_inUpdate || !int.TryParse(_localBlockZTextBox.Text, out localBlock))
+ return;
+
+ _inUpdate = true;
+ ApplyLocalBlock(_groupZ, _localBlockZTextBox.Text, true);
+ _inUpdate = false;
+
+ Validate();
+ }
+
+ private void _findButton_Click (object sender, EventArgs e)
+ {
+ _searchResult = Search(_searchRoot);
+
+ DialogResult = DialogResult.OK;
+ Close();
+ }
+
+ private void _cancelButton_Click (object sender, EventArgs e)
+ {
+ DialogResult = DialogResult.Cancel;
+ Close();
+ }
+ }
+}
diff --git a/Windows/FindBlock.resx b/Windows/FindBlock.resx
new file mode 100644
index 0000000..7080a7d
--- /dev/null
+++ b/Windows/FindBlock.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/Windows/MainForm.Designer.cs b/Windows/MainForm.Designer.cs
index 2ced6d5..6f329d6 100644
--- a/Windows/MainForm.Designer.cs
+++ b/Windows/MainForm.Designer.cs
@@ -31,48 +31,42 @@
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.menuStrip1 = new System.Windows.Forms.MenuStrip();
this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemOpen = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemOpenFolder = new System.Windows.Forms.ToolStripMenuItem();
this._menuItemOpenMinecraftSaveFolder = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
- this._menuItemSave = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemRefresh = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
this._menuItemRecentFiles = new System.Windows.Forms.ToolStripMenuItem();
this._menuItemRecentFolders = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator();
- this._menuItemExit = new System.Windows.Forms.ToolStripMenuItem();
this.editToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemCut = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemCopy = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemPaste = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator();
- this._menuItemRename = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemEditValue = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemDelete = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
this.searchToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemFind = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemFindNext = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator();
this.replaceToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
- this._menuItemAbout = new System.Windows.Forms.ToolStripMenuItem();
- this._nodeTree = new NBTExplorer.Vendor.MultiSelectTreeView.MultiSelectTreeView();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
+ this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
+ this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
+ this.BottomToolStripPanel = new System.Windows.Forms.ToolStripPanel();
+ this.TopToolStripPanel = new System.Windows.Forms.ToolStripPanel();
+ this.RightToolStripPanel = new System.Windows.Forms.ToolStripPanel();
+ this.LeftToolStripPanel = new System.Windows.Forms.ToolStripPanel();
+ this.ContentPanel = new System.Windows.Forms.ToolStripContentPanel();
+ this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
+ this.testToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this._buttonOpen = new System.Windows.Forms.ToolStripButton();
this._buttonOpenFolder = new System.Windows.Forms.ToolStripButton();
this._buttonSave = new System.Windows.Forms.ToolStripButton();
this._buttonRefresh = new System.Windows.Forms.ToolStripButton();
- this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
this._buttonCut = new System.Windows.Forms.ToolStripButton();
this._buttonCopy = new System.Windows.Forms.ToolStripButton();
this._buttonPaste = new System.Windows.Forms.ToolStripButton();
- this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator();
this._buttonRename = new System.Windows.Forms.ToolStripButton();
this._buttonEdit = new System.Windows.Forms.ToolStripButton();
this._buttonDelete = new System.Windows.Forms.ToolStripButton();
- this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this._buttonAddTagByte = new System.Windows.Forms.ToolStripButton();
this._buttonAddTagShort = new System.Windows.Forms.ToolStripButton();
this._buttonAddTagInt = new System.Windows.Forms.ToolStripButton();
@@ -84,18 +78,26 @@
this._buttonAddTagString = new System.Windows.Forms.ToolStripButton();
this._buttonAddTagList = new System.Windows.Forms.ToolStripButton();
this._buttonAddTagCompound = new System.Windows.Forms.ToolStripButton();
- this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
this._buttonFindNext = new System.Windows.Forms.ToolStripButton();
- this.BottomToolStripPanel = new System.Windows.Forms.ToolStripPanel();
- this.TopToolStripPanel = new System.Windows.Forms.ToolStripPanel();
- this.RightToolStripPanel = new System.Windows.Forms.ToolStripPanel();
- this.LeftToolStripPanel = new System.Windows.Forms.ToolStripPanel();
- this.ContentPanel = new System.Windows.Forms.ToolStripContentPanel();
- this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
- this.testToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemOpen = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemOpenFolder = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemSave = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemRefresh = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemExit = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemCut = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemCopy = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemPaste = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemRename = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemEditValue = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemDelete = new System.Windows.Forms.ToolStripMenuItem();
this._menuItemMoveUp = new System.Windows.Forms.ToolStripMenuItem();
this._menuItemMoveDown = new System.Windows.Forms.ToolStripMenuItem();
- this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator();
+ this._menuItemFind = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemFindNext = new System.Windows.Forms.ToolStripMenuItem();
+ this._menuItemAbout = new System.Windows.Forms.ToolStripMenuItem();
+ this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator();
+ this.findBlockToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+ this._nodeTree = new NBTExplorer.Vendor.MultiSelectTreeView.MultiSelectTreeView();
this.menuStrip1.SuspendLayout();
this.toolStrip1.SuspendLayout();
this.contextMenuStrip1.SuspendLayout();
@@ -132,23 +134,6 @@
this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20);
this.fileToolStripMenuItem.Text = "&File";
//
- // _menuItemOpen
- //
- this._menuItemOpen.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemOpen.Image")));
- this._menuItemOpen.Name = "_menuItemOpen";
- this._menuItemOpen.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
- this._menuItemOpen.Size = new System.Drawing.Size(223, 22);
- this._menuItemOpen.Text = "&Open...";
- //
- // _menuItemOpenFolder
- //
- this._menuItemOpenFolder.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemOpenFolder.Image")));
- this._menuItemOpenFolder.Name = "_menuItemOpenFolder";
- this._menuItemOpenFolder.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
- | System.Windows.Forms.Keys.O)));
- this._menuItemOpenFolder.Size = new System.Drawing.Size(223, 22);
- this._menuItemOpenFolder.Text = "Open &Folder...";
- //
// _menuItemOpenMinecraftSaveFolder
//
this._menuItemOpenMinecraftSaveFolder.Name = "_menuItemOpenMinecraftSaveFolder";
@@ -160,23 +145,6 @@
this.toolStripSeparator3.Name = "toolStripSeparator3";
this.toolStripSeparator3.Size = new System.Drawing.Size(220, 6);
//
- // _menuItemSave
- //
- this._menuItemSave.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemSave.Image")));
- this._menuItemSave.Name = "_menuItemSave";
- this._menuItemSave.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
- this._menuItemSave.Size = new System.Drawing.Size(223, 22);
- this._menuItemSave.Text = "&Save";
- //
- // _menuItemRefresh
- //
- this._menuItemRefresh.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemRefresh.Image")));
- this._menuItemRefresh.Name = "_menuItemRefresh";
- this._menuItemRefresh.ShortcutKeys = System.Windows.Forms.Keys.F5;
- this._menuItemRefresh.Size = new System.Drawing.Size(223, 22);
- this._menuItemRefresh.Text = "Refresh";
- this._menuItemRefresh.Click += new System.EventHandler(this.refreshToolStripMenuItem_Click);
- //
// toolStripSeparator4
//
this.toolStripSeparator4.Name = "toolStripSeparator4";
@@ -199,14 +167,6 @@
this.toolStripSeparator8.Name = "toolStripSeparator8";
this.toolStripSeparator8.Size = new System.Drawing.Size(220, 6);
//
- // _menuItemExit
- //
- this._menuItemExit.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemExit.Image")));
- this._menuItemExit.Name = "_menuItemExit";
- this._menuItemExit.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4)));
- this._menuItemExit.Size = new System.Drawing.Size(223, 22);
- this._menuItemExit.Text = "E&xit";
- //
// editToolStripMenuItem
//
this.editToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
@@ -225,58 +185,15 @@
this.editToolStripMenuItem.Size = new System.Drawing.Size(39, 20);
this.editToolStripMenuItem.Text = "&Edit";
//
- // _menuItemCut
- //
- this._menuItemCut.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemCut.Image")));
- this._menuItemCut.Name = "_menuItemCut";
- this._menuItemCut.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
- this._menuItemCut.Size = new System.Drawing.Size(203, 22);
- this._menuItemCut.Text = "Cu&t";
- //
- // _menuItemCopy
- //
- this._menuItemCopy.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemCopy.Image")));
- this._menuItemCopy.Name = "_menuItemCopy";
- this._menuItemCopy.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
- this._menuItemCopy.Size = new System.Drawing.Size(203, 22);
- this._menuItemCopy.Text = "&Copy";
- //
- // _menuItemPaste
- //
- this._menuItemPaste.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemPaste.Image")));
- this._menuItemPaste.Name = "_menuItemPaste";
- this._menuItemPaste.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
- this._menuItemPaste.Size = new System.Drawing.Size(203, 22);
- this._menuItemPaste.Text = "&Paste";
- //
// toolStripSeparator7
//
this.toolStripSeparator7.Name = "toolStripSeparator7";
this.toolStripSeparator7.Size = new System.Drawing.Size(200, 6);
//
- // _menuItemRename
+ // toolStripSeparator10
//
- this._menuItemRename.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemRename.Image")));
- this._menuItemRename.Name = "_menuItemRename";
- this._menuItemRename.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R)));
- this._menuItemRename.Size = new System.Drawing.Size(203, 22);
- this._menuItemRename.Text = "&Rename";
- //
- // _menuItemEditValue
- //
- this._menuItemEditValue.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemEditValue.Image")));
- this._menuItemEditValue.Name = "_menuItemEditValue";
- this._menuItemEditValue.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E)));
- this._menuItemEditValue.Size = new System.Drawing.Size(203, 22);
- this._menuItemEditValue.Text = "&Edit Value";
- //
- // _menuItemDelete
- //
- this._menuItemDelete.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemDelete.Image")));
- this._menuItemDelete.Name = "_menuItemDelete";
- this._menuItemDelete.ShortcutKeys = System.Windows.Forms.Keys.Delete;
- this._menuItemDelete.Size = new System.Drawing.Size(203, 22);
- this._menuItemDelete.Text = "&Delete";
+ this.toolStripSeparator10.Name = "toolStripSeparator10";
+ this.toolStripSeparator10.Size = new System.Drawing.Size(200, 6);
//
// searchToolStripMenuItem
//
@@ -284,27 +201,13 @@
this._menuItemFind,
this._menuItemFindNext,
this.toolStripSeparator9,
- this.replaceToolStripMenuItem});
+ this.replaceToolStripMenuItem,
+ this.toolStripSeparator11,
+ this.findBlockToolStripMenuItem});
this.searchToolStripMenuItem.Name = "searchToolStripMenuItem";
this.searchToolStripMenuItem.Size = new System.Drawing.Size(54, 20);
this.searchToolStripMenuItem.Text = "&Search";
//
- // _menuItemFind
- //
- this._menuItemFind.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemFind.Image")));
- this._menuItemFind.Name = "_menuItemFind";
- this._menuItemFind.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F)));
- this._menuItemFind.Size = new System.Drawing.Size(167, 22);
- this._menuItemFind.Text = "&Find...";
- //
- // _menuItemFindNext
- //
- this._menuItemFindNext.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemFindNext.Image")));
- this._menuItemFindNext.Name = "_menuItemFindNext";
- this._menuItemFindNext.ShortcutKeys = System.Windows.Forms.Keys.F3;
- this._menuItemFindNext.Size = new System.Drawing.Size(167, 22);
- this._menuItemFindNext.Text = "Find &Next";
- //
// toolStripSeparator9
//
this.toolStripSeparator9.Name = "toolStripSeparator9";
@@ -326,31 +229,6 @@
this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20);
this.helpToolStripMenuItem.Text = "&Help";
//
- // _menuItemAbout
- //
- this._menuItemAbout.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemAbout.Image")));
- this._menuItemAbout.Name = "_menuItemAbout";
- this._menuItemAbout.ShortcutKeys = System.Windows.Forms.Keys.F1;
- this._menuItemAbout.Size = new System.Drawing.Size(126, 22);
- this._menuItemAbout.Text = "&About";
- //
- // _nodeTree
- //
- this._nodeTree.AllowDrop = true;
- this._nodeTree.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._nodeTree.ImageIndex = 0;
- this._nodeTree.ImageList = this.imageList1;
- this._nodeTree.ItemHeight = 18;
- this._nodeTree.Location = new System.Drawing.Point(0, 49);
- this._nodeTree.Margin = new System.Windows.Forms.Padding(0);
- this._nodeTree.Name = "_nodeTree";
- this._nodeTree.SelectedImageIndex = 0;
- this._nodeTree.SelectedNodes = ((System.Collections.Generic.List)(resources.GetObject("_nodeTree.SelectedNodes")));
- this._nodeTree.Size = new System.Drawing.Size(619, 374);
- this._nodeTree.TabIndex = 0;
- //
// imageList1
//
this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
@@ -407,6 +285,75 @@
this.toolStrip1.Stretch = true;
this.toolStrip1.TabIndex = 0;
//
+ // toolStripSeparator1
+ //
+ this.toolStripSeparator1.Name = "toolStripSeparator1";
+ this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
+ //
+ // toolStripSeparator6
+ //
+ this.toolStripSeparator6.Name = "toolStripSeparator6";
+ this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25);
+ //
+ // toolStripSeparator2
+ //
+ this.toolStripSeparator2.Name = "toolStripSeparator2";
+ this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
+ //
+ // toolStripSeparator5
+ //
+ this.toolStripSeparator5.Name = "toolStripSeparator5";
+ this.toolStripSeparator5.Size = new System.Drawing.Size(6, 25);
+ //
+ // BottomToolStripPanel
+ //
+ this.BottomToolStripPanel.Location = new System.Drawing.Point(0, 0);
+ this.BottomToolStripPanel.Name = "BottomToolStripPanel";
+ this.BottomToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
+ this.BottomToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
+ this.BottomToolStripPanel.Size = new System.Drawing.Size(0, 0);
+ //
+ // TopToolStripPanel
+ //
+ this.TopToolStripPanel.Location = new System.Drawing.Point(0, 0);
+ this.TopToolStripPanel.Name = "TopToolStripPanel";
+ this.TopToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
+ this.TopToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
+ this.TopToolStripPanel.Size = new System.Drawing.Size(0, 0);
+ //
+ // RightToolStripPanel
+ //
+ this.RightToolStripPanel.Location = new System.Drawing.Point(0, 0);
+ this.RightToolStripPanel.Name = "RightToolStripPanel";
+ this.RightToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
+ this.RightToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
+ this.RightToolStripPanel.Size = new System.Drawing.Size(0, 0);
+ //
+ // LeftToolStripPanel
+ //
+ this.LeftToolStripPanel.Location = new System.Drawing.Point(0, 0);
+ this.LeftToolStripPanel.Name = "LeftToolStripPanel";
+ this.LeftToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
+ this.LeftToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
+ this.LeftToolStripPanel.Size = new System.Drawing.Size(0, 0);
+ //
+ // ContentPanel
+ //
+ this.ContentPanel.Size = new System.Drawing.Size(562, 376);
+ //
+ // contextMenuStrip1
+ //
+ this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+ this.testToolStripMenuItem});
+ this.contextMenuStrip1.Name = "contextMenuStrip1";
+ this.contextMenuStrip1.Size = new System.Drawing.Size(97, 26);
+ //
+ // testToolStripMenuItem
+ //
+ this.testToolStripMenuItem.Name = "testToolStripMenuItem";
+ this.testToolStripMenuItem.Size = new System.Drawing.Size(96, 22);
+ this.testToolStripMenuItem.Text = "Test";
+ //
// _buttonOpen
//
this._buttonOpen.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@@ -444,11 +391,6 @@
this._buttonRefresh.Text = "Refresh Content From Disk";
this._buttonRefresh.Click += new System.EventHandler(this._buttonRefresh_Click);
//
- // toolStripSeparator1
- //
- this.toolStripSeparator1.Name = "toolStripSeparator1";
- this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
- //
// _buttonCut
//
this._buttonCut.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@@ -476,11 +418,6 @@
this._buttonPaste.Size = new System.Drawing.Size(23, 22);
this._buttonPaste.Text = "Paste";
//
- // toolStripSeparator6
- //
- this.toolStripSeparator6.Name = "toolStripSeparator6";
- this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25);
- //
// _buttonRename
//
this._buttonRename.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@@ -508,11 +445,6 @@
this._buttonDelete.Size = new System.Drawing.Size(23, 22);
this._buttonDelete.Text = "Delete Tag";
//
- // toolStripSeparator2
- //
- this.toolStripSeparator2.Name = "toolStripSeparator2";
- this.toolStripSeparator2.Size = new System.Drawing.Size(6, 25);
- //
// _buttonAddTagByte
//
this._buttonAddTagByte.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@@ -613,11 +545,6 @@
this._buttonAddTagCompound.Size = new System.Drawing.Size(23, 22);
this._buttonAddTagCompound.Text = "Add Compound Tag";
//
- // toolStripSeparator5
- //
- this.toolStripSeparator5.Name = "toolStripSeparator5";
- this.toolStripSeparator5.Size = new System.Drawing.Size(6, 25);
- //
// _buttonFindNext
//
this._buttonFindNext.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
@@ -627,54 +554,95 @@
this._buttonFindNext.Size = new System.Drawing.Size(23, 22);
this._buttonFindNext.Text = "Find / Find Next";
//
- // BottomToolStripPanel
+ // _menuItemOpen
//
- this.BottomToolStripPanel.Location = new System.Drawing.Point(0, 0);
- this.BottomToolStripPanel.Name = "BottomToolStripPanel";
- this.BottomToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
- this.BottomToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
- this.BottomToolStripPanel.Size = new System.Drawing.Size(0, 0);
+ this._menuItemOpen.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemOpen.Image")));
+ this._menuItemOpen.Name = "_menuItemOpen";
+ this._menuItemOpen.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O)));
+ this._menuItemOpen.Size = new System.Drawing.Size(223, 22);
+ this._menuItemOpen.Text = "&Open...";
//
- // TopToolStripPanel
+ // _menuItemOpenFolder
//
- this.TopToolStripPanel.Location = new System.Drawing.Point(0, 0);
- this.TopToolStripPanel.Name = "TopToolStripPanel";
- this.TopToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
- this.TopToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
- this.TopToolStripPanel.Size = new System.Drawing.Size(0, 0);
+ this._menuItemOpenFolder.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemOpenFolder.Image")));
+ this._menuItemOpenFolder.Name = "_menuItemOpenFolder";
+ this._menuItemOpenFolder.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift)
+ | System.Windows.Forms.Keys.O)));
+ this._menuItemOpenFolder.Size = new System.Drawing.Size(223, 22);
+ this._menuItemOpenFolder.Text = "Open &Folder...";
//
- // RightToolStripPanel
+ // _menuItemSave
//
- this.RightToolStripPanel.Location = new System.Drawing.Point(0, 0);
- this.RightToolStripPanel.Name = "RightToolStripPanel";
- this.RightToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
- this.RightToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
- this.RightToolStripPanel.Size = new System.Drawing.Size(0, 0);
+ this._menuItemSave.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemSave.Image")));
+ this._menuItemSave.Name = "_menuItemSave";
+ this._menuItemSave.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S)));
+ this._menuItemSave.Size = new System.Drawing.Size(223, 22);
+ this._menuItemSave.Text = "&Save";
//
- // LeftToolStripPanel
+ // _menuItemRefresh
//
- this.LeftToolStripPanel.Location = new System.Drawing.Point(0, 0);
- this.LeftToolStripPanel.Name = "LeftToolStripPanel";
- this.LeftToolStripPanel.Orientation = System.Windows.Forms.Orientation.Horizontal;
- this.LeftToolStripPanel.RowMargin = new System.Windows.Forms.Padding(3, 0, 0, 0);
- this.LeftToolStripPanel.Size = new System.Drawing.Size(0, 0);
+ this._menuItemRefresh.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemRefresh.Image")));
+ this._menuItemRefresh.Name = "_menuItemRefresh";
+ this._menuItemRefresh.ShortcutKeys = System.Windows.Forms.Keys.F5;
+ this._menuItemRefresh.Size = new System.Drawing.Size(223, 22);
+ this._menuItemRefresh.Text = "Refresh";
+ this._menuItemRefresh.Click += new System.EventHandler(this.refreshToolStripMenuItem_Click);
//
- // ContentPanel
+ // _menuItemExit
//
- this.ContentPanel.Size = new System.Drawing.Size(562, 376);
+ this._menuItemExit.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemExit.Image")));
+ this._menuItemExit.Name = "_menuItemExit";
+ this._menuItemExit.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Alt | System.Windows.Forms.Keys.F4)));
+ this._menuItemExit.Size = new System.Drawing.Size(223, 22);
+ this._menuItemExit.Text = "E&xit";
//
- // contextMenuStrip1
+ // _menuItemCut
//
- this.contextMenuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
- this.testToolStripMenuItem});
- this.contextMenuStrip1.Name = "contextMenuStrip1";
- this.contextMenuStrip1.Size = new System.Drawing.Size(97, 26);
+ this._menuItemCut.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemCut.Image")));
+ this._menuItemCut.Name = "_menuItemCut";
+ this._menuItemCut.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.X)));
+ this._menuItemCut.Size = new System.Drawing.Size(203, 22);
+ this._menuItemCut.Text = "Cu&t";
//
- // testToolStripMenuItem
+ // _menuItemCopy
//
- this.testToolStripMenuItem.Name = "testToolStripMenuItem";
- this.testToolStripMenuItem.Size = new System.Drawing.Size(96, 22);
- this.testToolStripMenuItem.Text = "Test";
+ this._menuItemCopy.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemCopy.Image")));
+ this._menuItemCopy.Name = "_menuItemCopy";
+ this._menuItemCopy.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C)));
+ this._menuItemCopy.Size = new System.Drawing.Size(203, 22);
+ this._menuItemCopy.Text = "&Copy";
+ //
+ // _menuItemPaste
+ //
+ this._menuItemPaste.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemPaste.Image")));
+ this._menuItemPaste.Name = "_menuItemPaste";
+ this._menuItemPaste.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.V)));
+ this._menuItemPaste.Size = new System.Drawing.Size(203, 22);
+ this._menuItemPaste.Text = "&Paste";
+ //
+ // _menuItemRename
+ //
+ this._menuItemRename.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemRename.Image")));
+ this._menuItemRename.Name = "_menuItemRename";
+ this._menuItemRename.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.R)));
+ this._menuItemRename.Size = new System.Drawing.Size(203, 22);
+ this._menuItemRename.Text = "&Rename";
+ //
+ // _menuItemEditValue
+ //
+ this._menuItemEditValue.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemEditValue.Image")));
+ this._menuItemEditValue.Name = "_menuItemEditValue";
+ this._menuItemEditValue.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.E)));
+ this._menuItemEditValue.Size = new System.Drawing.Size(203, 22);
+ this._menuItemEditValue.Text = "&Edit Value";
+ //
+ // _menuItemDelete
+ //
+ this._menuItemDelete.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemDelete.Image")));
+ this._menuItemDelete.Name = "_menuItemDelete";
+ this._menuItemDelete.ShortcutKeys = System.Windows.Forms.Keys.Delete;
+ this._menuItemDelete.Size = new System.Drawing.Size(203, 22);
+ this._menuItemDelete.Text = "&Delete";
//
// _menuItemMoveUp
//
@@ -694,10 +662,58 @@
this._menuItemMoveDown.Text = "Move Do&wn";
this._menuItemMoveDown.Click += new System.EventHandler(this._menuItemMoveDown_Click);
//
- // toolStripSeparator10
+ // _menuItemFind
//
- this.toolStripSeparator10.Name = "toolStripSeparator10";
- this.toolStripSeparator10.Size = new System.Drawing.Size(200, 6);
+ this._menuItemFind.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemFind.Image")));
+ this._menuItemFind.Name = "_menuItemFind";
+ this._menuItemFind.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.F)));
+ this._menuItemFind.Size = new System.Drawing.Size(167, 22);
+ this._menuItemFind.Text = "&Find...";
+ //
+ // _menuItemFindNext
+ //
+ this._menuItemFindNext.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemFindNext.Image")));
+ this._menuItemFindNext.Name = "_menuItemFindNext";
+ this._menuItemFindNext.ShortcutKeys = System.Windows.Forms.Keys.F3;
+ this._menuItemFindNext.Size = new System.Drawing.Size(167, 22);
+ this._menuItemFindNext.Text = "Find &Next";
+ //
+ // _menuItemAbout
+ //
+ this._menuItemAbout.Image = ((System.Drawing.Image)(resources.GetObject("_menuItemAbout.Image")));
+ this._menuItemAbout.Name = "_menuItemAbout";
+ this._menuItemAbout.ShortcutKeys = System.Windows.Forms.Keys.F1;
+ this._menuItemAbout.Size = new System.Drawing.Size(126, 22);
+ this._menuItemAbout.Text = "&About";
+ //
+ // toolStripSeparator11
+ //
+ this.toolStripSeparator11.Name = "toolStripSeparator11";
+ this.toolStripSeparator11.Size = new System.Drawing.Size(164, 6);
+ //
+ // findBlockToolStripMenuItem
+ //
+ this.findBlockToolStripMenuItem.Name = "findBlockToolStripMenuItem";
+ this.findBlockToolStripMenuItem.Size = new System.Drawing.Size(167, 22);
+ this.findBlockToolStripMenuItem.Text = "&Chunk Finder...";
+ this.findBlockToolStripMenuItem.Click += new System.EventHandler(this.findBlockToolStripMenuItem_Click);
+ //
+ // _nodeTree
+ //
+ this._nodeTree.AllowDrop = true;
+ this._nodeTree.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._nodeTree.ImageIndex = 0;
+ this._nodeTree.ImageList = this.imageList1;
+ this._nodeTree.ItemHeight = 18;
+ this._nodeTree.Location = new System.Drawing.Point(0, 49);
+ this._nodeTree.Margin = new System.Windows.Forms.Padding(0);
+ this._nodeTree.Name = "_nodeTree";
+ this._nodeTree.SelectedImageIndex = 0;
+ this._nodeTree.SelectedNodes = ((System.Collections.Generic.List)(resources.GetObject("_nodeTree.SelectedNodes")));
+ this._nodeTree.Size = new System.Drawing.Size(619, 374);
+ this._nodeTree.TabIndex = 0;
//
// MainForm
//
@@ -791,6 +807,8 @@
private System.Windows.Forms.ToolStripSeparator toolStripSeparator10;
private System.Windows.Forms.ToolStripMenuItem _menuItemMoveUp;
private System.Windows.Forms.ToolStripMenuItem _menuItemMoveDown;
+ private System.Windows.Forms.ToolStripSeparator toolStripSeparator11;
+ private System.Windows.Forms.ToolStripMenuItem findBlockToolStripMenuItem;
}
}
diff --git a/Windows/MainForm.cs b/Windows/MainForm.cs
index d1eb4d8..41a35f5 100644
--- a/Windows/MainForm.cs
+++ b/Windows/MainForm.cs
@@ -846,6 +846,20 @@ namespace NBTExplorer.Windows
_controller.MoveSelectionDown();
}
+ private void findBlockToolStripMenuItem_Click (object sender, EventArgs e)
+ {
+ FindBlock form = new FindBlock(_nodeTree.SelectedNode.Tag as DataNode);
+ if (form.ShowDialog() == DialogResult.OK) {
+ if (form.Result != null) {
+ _controller.SelectNode(form.Result);
+ _controller.ExpandSelectedNode();
+ _controller.ScrollNode(form.Result);
+ }
+ else
+ MessageBox.Show("Chunk not found.");
+ }
+ }
+
#endregion
#endregion
diff --git a/Windows/MainForm.resx b/Windows/MainForm.resx
index 281f9fd..47a19bc 100644
--- a/Windows/MainForm.resx
+++ b/Windows/MainForm.resx
@@ -121,266 +121,245 @@
17, 17
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACCUlEQVQ4T6VSPWgTYRh+v/0Q
- RUQ9DcJBfk6QG8IV6pJkyBASl8SlpFt0cglaSvjGqrSzIKIidKwi/g0iFiRDQZBCpByCwcGgkiGLi4OK
- fX2er004RFw8eHi/9/m7H05UVf4H0mw2pdVqnQOiRqMhlUpF4jiWQqEgmUzGTe7kqdNHP3O8sSM7nY4l
- 6vV69K8C6lMvc66AVzabtYPBQNvtti2Xy9HfnoA8dfroZ25WgHOUy+VskiSKR7PFYjFKvwJ38tTpo//P
- Au5RPp+3w+FQa7WahTHiN+DkTp76NDwruGSMdIGzAEXc2Y5GIy2VStb3/fOc3MlTp49+5twrvMPhI/AF
- eLhXFIVhaMfjsVar1Zf9fl+5k6dOH/3MpQu8z8YsADeAB4+M2bwaBMlkMtEtz0t2sJPf1xdQ4KULvA/G
- XJ/Mz2//XFr6qquru7q2pjvdrr4S+cazA3jq9NGPAs89wVtjFj/NzQ1oehIE72+KbP9aWdEXmMAtTu7k
- qdNHP3OuYMuYe+nw9+VlfQrzM5HF5/hqnNzJp0tcjgWPRTYh7lL80evpBuZ9hK4h3AY4uZOnTh/9zLmC
- 2yJ33sTxmE+xDrEH8+m9H3R2cSdPnT76mXMFoUgFy13g9QWRK/Ce4d8NnAJOACeBAAgvilymj37mpr+y
- D3GK4zgfBQ4DB4ED+ziEeQQ4lvL6LPgNwitoieNYTCsAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAB70lEQVQ4T42SPUubYRSGz+Kg
- IphFqCAFY4YiWboIUkyLhZjQWhULWVwcNJUgRqpECWazP6DkF9S2UkTqoAjBqnF3dOtQBC1YNOb7+/Tc
- Dz3yECvkgQteeN735lz3eWlybY3exmKvhZkH6JuIRmlsZQXvGUYnh8nf30aurhYiXArBXLXK18Ui/87n
- +TyT4V/pNO8kk4w7wWUHaOCg10MmWXiXLZf5TzbLF6kU/7y64rPLS/68t8c4uBdcOoEGvIlEiF4tLYG5
- XKXCN7mcCUmcnvLXoyNejcfveBEMfv+neKdkAkbCYRAqiMJtoWBCtk9OuBklE/AyFALzJQnISgcI2Rb3
- ZpRMwPPZWbBQrtU4Lz0gZOv4mG0l7eXjxgYrLp8vKhA9m54Gi9V6nYvSA0K2Dg/ZVmosFxuCNvRpYGoK
- vK9JQEU0EPLt4IBtJS1XJzmXoqENfXoaCIDluqyrKhoI2Uwk2FbScnUS/CvQhj65x8dBBPuuyxQI+bK/
- z7aSlquT3JRKDG3oU6vDQT0eT8z8MQgRPu3usq2k5eokaekJ2tDHedzudIY73O4PSp/X+8NW0nJ1EqwY
- 2tDH6RQeCd3KE79/3VbScnWSvBQN7d6hIRPQeDoblaCDTlAstlOSZ7wjHzr+F3BPydbTZ2jLx71/Ad5i
- gsnRJ2HiAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACc0lEQVQ4T43SW0hUURQG4PWS
- 0JsIFUQ9lWMTFo63RqXRLKoRDMbMcbyMWtqY5qBOjsEEFmlRJAaTlJRdTLtn+ZBBL4EE9rBDu0AlIURZ
- D4VQjo3j7W+v0+xT+tSBj7M5Z6+ftdc5dC6diLVn/HXIaozIzc3NkVxhOfzs3z2qTisOB3TIDYKdMNFw
- 12H3l5GRD2C85mfqvbx36AF+GRAm3rfvRV9NKgYHX2Fo6B1GRz9reM3P+N1bfynkfqHq6OxmUsTrtiJc
- L4nFRftaXCtej5v74nC7Ih7dpRtwuSAGPWUb8bK1ALJGqDpqTSVFDJ9x4NnRbDz2ZGguNNjQ1ujQnW8q
- Q2eLC83bl72pLbSQ25FGdNqsEy9O5eGpb6fO7yvGr7k5/JyexvepKYwFAugbGECtPeWjzeeLzvZ6iU4m
- 6cTzZhueeLfqWr35mJyZwfjkJL5NTODT+Dh6+vvBlyyukgx0PIEUwe0/qrNoeGDHqrIRnJ3Fj2BQD/F3
- d0OJtlqPUFMcKYLbv38gWRvkpfxoNJRkIiSPEAiFFoRwJ2Oyq23V1W7yxZIi+uvTcaVwHTodBo3HmYkZ
- GRCUM1gcwjOxVFTUUaORFPGg2oyrRUZdXfEWzM3PIySPsTiEB2t2Oj1UbyBF9MqALtm+4i7MwLwc2Kzs
- YnFIQAbE2+1e2r2SyL1GI3qrNmk/i1KZl6ZNnEO4Ez4Oz4QHOyXvMVlZPuJr1woi1+o/AbfKTboaWzzy
- raYFHFkmJBlXfY00mVqiEhPLuX6ptHxPJImHB1O0r3CvMgl3XYm6O/sTwPi3ZryXa8K1FCUXsclL6MaO
- CBL/g/dyjRT1G7y5F+bDPK+HAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAt0lEQVQ4T6VSSwoCMQxNTzBL
- wYX3cu9F5j7iQhAFQXAxC8/gATxGzQuNhEdHM1h4NOn7tBlGaq3yD6SUAoyKfauxZ2p4xAMOzex9ZjdP
- RvhV4+QxvAD1VhHPeiHGO3GiEbjvBZhm7nmX7DfxgCsZuO9dZBonbhTAfS/ANHMj3JeOMJGB+95FpnHi
- EQJQ7xTxTLDoEuN//kjmDItHc+rJwkT/8WxUfFa8mgl7poYHXhkUK8V6IeAZ3llKVtf+E8JOAAAAAElF
- TkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADaWlUWHRYTUw6Y29tLmFkb2Jl
- LnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQi
- Pz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENv
- cmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJE
- RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8
- cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXBSaWdodHM9Imh0dHA6Ly9ucy5hZG9i
- ZS5jb20veGFwLzEuMC9yaWdodHMvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAv
- MS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNv
- dXJjZVJlZiMiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1wUmlnaHRz
- Ok1hcmtlZD0iRmFsc2UiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NzA0RUI0NjQwMzg3MTFFMUFE
- RTJDQkMzMDBBQjU2MjYiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NzA0RUI0NjMwMzg3MTFFMUFE
- RTJDQkMzMDBBQjU2MjYiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTMyBXaW5kb3dz
- Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InV1aWQ6QUMxRjJFODMzMjRBREYx
- MUFBQjhDNTM5MEQ4NUI1QjMiIHN0UmVmOmRvY3VtZW50SUQ9InV1aWQ6QzlEMzQ5NjY0QTNDREQxMUIw
- OEFCQkJDRkYxNzIxNTYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+
- IDw/eHBhY2tldCBlbmQ9InIiPz4xPsWJAAACIElEQVQ4T4WSXUhTYRiA3/dbG7omFjZGFyFBJBkW9nMR
- SD/o2kUF5+aElZo0LyYG9oOh5aIakxlpKAxrQ1jUZEWRRT/EvBiKFLEslW6CmeWwCyFJangRvL3fwcmx
- OnrguTgcnuf7zve9ACs8JUUIbU0IqqpqpBG3TiL2jiHue4FobGfFp2EEyUKgcMBu76VAgIYRXz1DLP+n
- 8LeoC2xSFKU+k8nQvMdDc1VVFAN4shgwErVACPcHffa7Uk4mk5RKpchnsTyPAOyA4kIAbw1o2/wvLD8K
- 4kv6HqD4g52a7HA4fKW5uVtUsxkg2grQ5zUI6OTfMz6aeHeUblzM6bfZbNutVitIjAM6ef7bZZp8f5we
- Bk2J/pCpPCsbB3Tyz6lmmhqrpnsdYvB+t6h4fNukrWy8A508O3GW0uO1FPaLoTvXhTPWJWD5gE6e+VSv
- yd2tYvjWNeGMtAvQB8zyAOWzeIg6efqjm+WT1H4eX99sQWfPVQHZQOURsXR2ZIApinVgn7yqr6PV9OXD
- CbrSgG/azuDBzmYEGVCcBmMbbgJLzzk4/SOdmE3GK+jzSCW1uPGt14MufyOCq2yZeZd76WzAPfHoqcTc
- 9CClRiK/Go/h0IVacO3dtYKY/ZFLNeiXcrRLHa07jKEDpajwNztTwKxl8pk8hqcGchgLs4oxMdoqVHcI
- Q2Xb0J1nxd38XsIUM5uZjcwGZj2zjlnDrF4IyWsQfwCLISjKZ5nx7AAAAABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABfUlEQVQ4T6WTu0vDUBTGz1+g
- VBtB1KBgdSsUNFvHQoZChw4upWoRupYO7a6giw66KCj4wgciuAiKg5M4XcFBUHAVBxdXcfD4fTGJqaZT
- hx+353yPezNUVFU6oaMwL/YKDkXkCJyIuMDw5LzvE6cx87eAIaPNpvIEbqTA0z5qtVBrKfCN5qvR0Id8
- Xj/rdcXOAJYQ81apeNpLqRRovy/YxXOAuwPje7Wq146jr+WyciaPhYK3u8vlvB29zISfwAGCbEHYhOG5
- WNSLdFpvs1m9ymR027L02LaVGj30xhbAIBswrMN4nkrpXiLhcZBMKnfU6PlXsIjlElgBqzCtwXyGW08R
- DuCOGj30MhN+QlCw/GMwlwjGQY2edgUUzA3CAZzb7NyWF8zjOcDcIxzAeQG3kTiNmfATbAxTMNYRekIJ
- T87D2JM4jZmwAL8HwdiEyNw0wpMis5hHwRAYACOOyAw1ejCPMxMt6MKiF/T79OHsAd2AWgJYET3JfVjQ
- yd/5G8s+qAWdGU8YAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAB1klEQVQ4T6WQTyjkYRzG32ax
- WlK7xvhzsNnNxko7RYkiBzkoBwfZWtMmm4ucJIuTPeHCblgkB8q/SRPbYvewbStcvnsQ7QEzWOYgcVAT
- iXn2faZ+mjEzqH3r09v3eZ73eX/vTwFQ/4Pv8MsPv5W1c0Pl9myp/P49VTjkVsUjh9Ua4c6ZOn3mmDcu
- DVfAQzLoBrhrqu9f0LfLsHzeB9pWz9H/F+Ccr/W7v6B7kyHp2/Oi4dvpNR+dV6Ceq/2wT3jVsU5TPrmu
- UDd3EkTXnwvQZy7oH2S2C0Xp3rpE64oHLcse1C8co2psB28mXKh17OKt3YnmpSMwx3zAT3zRtjKY3ros
- /tTMOFHSI7BNbeOmx3xAgQ6o5++XfDxr/qWeNv6Q13YXinrXUDnlBGfqRob5kAVpTT9Vcv08kbIZN6xD
- 2yidPgBn6vRZErJA36LM7xwGkjd7gtSxQ+Q4jqF1MTzmggriC2tVtLVSxdkmDST96xni7B6kfdG7bVIM
- LyIpS3EFPMGn6PXAkqkeVY0SsSx6YZr14smCF5yp0zdWyAKapoQMFVkxLJbvQOw88HgR4Ezdf4UqeKgD
- TOWYChrHTeUDco2eqWuyNTHhnhChDbMm5RYStRflX/AP4Mv/7H+tMgIAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAB6UlEQVQ4T6WPT0hUYRTFPyYH
- QkkJMpgBNSYEiRY2SiAyFvhnUy0Cy4GeQpS6UDeaiQ4oucqVQiKOWIumRdMgWlHSX7UYXXhdCLpSU2FM
- Z1NYDI4gc7p3cOS9N86qD35c7jnnO+97CoD6H+KXrzzdMXD1WdjLkA6vOZP4aLzANbJlhgY3gP6VGJ6s
- A+yTOWMoKBnaVCaob/kAnrkoHi8dgD0yZwwFF3oXVPHAih56tBBFy4c/6JnfA3uk9yVvKMhr+6ryPUFV
- 2LeUgDxzETS8+YWu2QhYp4QnOcknFZxrn1LnO78raWeofWYXNb51NL4NQXbRxZdcygIxHR0zKr8rSHfH
- 1lAxQKj1r0J20cU/tiC39YuXW0mPO/ADZYOLuOVfg9mTvOEX7M2Tmq3pPTUHd3F9YhvXxn/C9WIThSOr
- KPVtoDIQQsWrEKrfhSE5yRsKWFTZ9RPamfvjdPvbX+T6wkmUT/6G+JKTfFIBmyqrzq9l1r6ksul9ZAYi
- R1z6GIXo4ksuqeDU5Tsq3elWGVXdKsPt09JrnlPBVAyW1zE4Pscgu+jiW20XlRzDC+LK4bGcLVBproea
- 9eYo2T8BMmUXXX+OK7ByIIdxMkUW570HlhvDJFP2Qxw8T6Z6wQk2shgbY0/BadbT9AX/ADWhA8f0EOn9
- AAAAAElFTkSuQmCC
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACkklEQVQ4T43SX0hTURzA8d9b
- 9O/BHjPowfZkRgTRgxVFJgrBRKT2kJWjEsUsKyprtZyumdoSZ86hGdU0LUOTsJXGahCYthIUs6au/fPf
- nJvzOvfXX+ccusINgg584Hfhni/ncC8MqACoL+WQQ5T8pxx+H/STzX+UcpZynPl4CmeNJ5Ebuo0xRyPi
- 5BOh2RYk75fy+6BPCTwlLrzEFe8LDNpr0dNXiG+1h/DdG7VAT68GO8vi69Ql+6FKvg/gU9kqVWy+DaMz
- eibmfY7mjnPo9HhwiuPQQdj8fnxlMqFSnmrIlMlEGcXFACbFqoqouwUjk48ZOn9uleKwxYLfRkdx3O3G
- kakpbO7uRrrI5jxCBEY58O5Fpp9iyPGQobPpkQS/j42xyKTPxyIavX6VKD1dBj03gVcdcjVhwFrP0NnY
- eBR/TEywyBy5Ah+hJ6HXSSsqKgDDDeDVLtsakLPUMnTu1WWixWplEe/SkiDiWFzElIKCQnh9DXjawIQW
- /aPVDJ0NdWIct9lYZGF5WRCZDgTwQG7uBei8ArwG7mcN+oYrGTp31xxBKwnQCBcMCiLz5HmvVHoRFMcA
- 2i8xTf4RNXoGVQydu+6noc1uZ5FAOCyI+Mnznuzsy0DXrSyAZ+dB7xuqQLdZwdC5ozIV7Q4HiwQjEUGE
- I4FdEgk5P8BaYpPuLHR5B8mv3C9nvOQU7XdT0Ol0skgkGhVElkhwu1hMviFAHLEtPxXq31fv9o8b8sJz
- Awqc/6rE1jsH0eVyoZOIraxglAjHYhgisRCZ45OTy9kV6Dq8A0B3BjK0p0HXdn3LB3Nz5q+rWWvs60Qi
- zYbExIqNSUmqv61PSMgXBMhm0EgB1CdgZ9VxkJVJ4AF5YSux+R/ifgP/44T3ShVnvwAAAABJRU5ErkJg
- gg==
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKTSURBVDhPjdJdSFNhGMDx5y76urDLDLqwXZkRQXRh
+ RZENhUARqV1k5ahEMcuKylotl2umtsSZc2hGNU3L0CRspmENAtMsQTFr6tqXX3NuzuPcp0/v++YZnOii
+ A7/xHLbnz3vYgX4VMF9KIIso+k9Z/B70kY9VdzhTCc58PIWzPSeRG7qNEVsd4uRTodlGpL/l96BXGaXE
+ hVe44n6JfmsVunrzsVN7CN+9VQt0dWuwrTi2Wl20H8rl+wA+FUepIvPNGJ7RMxH3CxxoPYd2lwunOA5t
+ hMXrxddGIyrlYkO6TCZKKywEMCqiSsPORgxNPmHo/LlJisMmE34bHcVxpxNHpqawoaMD6UWWcwgR9MiB
+ dz80/QwDtkcMnY2PJfh9bIxFJj0eFtHo9VGilBQZdN0EXkXAUY8+cw1D5566o/hjYoJF5sgj8BF6Evo4
+ yQUFeWC4AbyqZUstcqYqhs7dunQ0mc0s4l5aEkRsi4uYlJeXD2+uAU/rm9Cid7SCobOhOhXHLRYWWVhe
+ FkSmfT48kJ19AdquAK+W+1mJnuEyhs4dlUfQTAI0wvn9gsg8ud8rlV4ExTGAlktMvXdEja5BFUPn9gfJ
+ aLFaWcQXDAoiXnK/JzPzMnmVAG5lADw/D3rPUCk6BxQMnVvLxGi12VjEHwoJIhyZd0kk5OwAa4lNurPQ
+ 7h4kr3KfnHGTU7TcS0K73c4ioXBYEFki8/bUVPL/AcQQ23LFUPO+Yrd33JATnOtX4PxXJTbdPYgOhwPt
+ RGRlBcNEMBLBAIkFyBybmFhCA+w6vANAdwbStKdB13x9y4eBhvRfVzPWWNeJRJoN8fGlGxMSVH9bHxeX
+ u7r+J0CWQSMFUJ+AneXHQVYsgYfkq63E5n+DmN//44T3M7snJAAAAABJRU5ErkJggg==
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADrwAAA68AZW8ckkAAAI/SURBVDhPjdJPSJNxGAfw5xYd6+hZJIhCkm5d8hBeIq/9
- AftDgRcPHQzEqVPn5sRcNptjuVjZYlkUFZZpusQIFf+h2Zwuc0NJl5vatub+fXufB1e8DKTBhz1s3+f7
- vr+Xl2jvM2GgK+MG0v4Pzmb3/n6PNVFDZMmAdfdlbAyVITJbh3TgPrD2UG3DCc7mFHxuJB22nyMT7kHc
- 34HN0QosuEqQWepUwaoDnM0pGGkkfTrkQmq9W6TDTzHjKMb2jAlJ7z2kFy0iE3gAzuYUDGvJmAo6kVxz
- CJ6nuk7BP6IXKaWEpf12cDanYKiGWpM/HmE30CV4/mQ+iZVhnUh4zCK1bANncwr6NWTaXbUjttwpeHab
- TmDZ3SDi8+0i4bOCs30aKlKVvKsi8+8VGyKLZsHzQGshfINaEZsziV1+FpkMOK8qeFNJltg3C3Y8JsHz
- 2+ZjWPpQJ6KzbSK+0IFQNArOqwpeVpIt4m3H1lyL4Pm17ii8A7Xi10yriH29C18wCM6rCp7dJPvO/G1s
- TusFzy/qj8DzXiO2p1pE9MsdnB7NgPOqAmcFdW/NGhGcqBc899QUwNNXLbYmjSKiHON4bwSczxYcVIbD
- 1uv0KjytvMpjtSKs3IVLU4BF5fZZ9ghR5UFy9loxnVX2eJcOKfLLz1Bnv6lox9dbnvg5Xo/QpA7NFyh8
- 6xyNsJZLNJjFWd7Z2/13EusNKrVcJeuTqjz3+OPS780X6aPyb15JPh3IeXH2+6GtjAqVq1U3nad2Jbfv
- 8h/ayQIkRwIF8QAAAABJRU5ErkJggg==
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
+ vAAADrwBlbxySQAAAkJJREFUOE+Nkk1Ik3Ecx3+36FhHzyJBFJJ065KH8BJ57QXshQIvHjoYiPN9vmyY
+ y2ZzLA3LFmZRVFim6RIjVHxjZnO6TEVJl86tbW267dvz++0vD17CL3zg+zx8P88bD+1lvJ6ujdVT5UHg
+ rdL0jNZSdXihHuuuq9gYLEDYXYHkykNg7fF+NpzgrdL0fK0hI4IvkQp0I7bcgs2RIsx15SG10LoPrHaA
+ t0rTM1xDdcmtLiTWO4Vk4DmmO3IRnLZg1/sAyXmbkFp5BN4qTc9QJZkSfid21zoE7pNtZ7A8XCcktIsw
+ yeV28FZpegbLqHH31xPEV9oE7l+sp7E0ZBR2PFYhsegAb5Wmp89AlvhqO6KLrQJ3l+UUFl3VQmy2Wdjx
+ 2cHbXgPlKDWdDyVk/bvkQHjeKnDvb8yGb6BSiM5YhDh/i1QKvFdqOu+KyRb9YUPIYxG4v284gYVPFULE
+ 3STE5lqwFYmA90pN53UxOcLeZmzPmAXub43H4e0vF/5MNwrR7/fh8/vBe6Wm8+I2tYdm72Jzqk7g/qrq
+ GDwfDUJw0ixEvt3D2ZEUeK/UdJxF1LntNsE/XiVw7y7Lgqe3VNieMAlh7TVO9oTBe6XSYY2j9pv0JjCl
+ /cqj5UJAe4ouQxbmtcdn9l4hon1I3t7IpfPKpSMamYXnqLXPkhPy9RTu/B6rwtaEEQ2XKHDnAg0z5is0
+ sAdv2VGuHvstyrddJ/uzkgzX2NP8nw2X6bN2OiMvkw6lFwdMUwFla3cqrb1Izdrhf2Sif9rJAiRH1VCK
+ AAAAAElFTkSuQmCC
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABwklEQVQ4T6XOT0iTcRzH8e+e
- 7e7BgxDixbuXELyKlxQPgiwx/JOa4UE8CR4UFcTUubUJk4nhX6ytRHCCqJvicuEk6KBWZKgVRaIM/IPK
- YLBPv8+jgwR5VBy8tvH7fd7PJgDkPqTa7FRcdUqvta3t+W1we9E4RarUm+LYenOi/giQuAE33LJhK0/N
- DnJujkYRTyQQi8cNccMtG7ZSabZT3/rwAc5UfHR+bogbbtmwlQqzjdyfBv/iMBbD3vGxIW64ZcNWyrQu
- 8nz0/Ma++vUf0aghbrhlw1aeaJ00GHH/xO7OEf6cnhrihls2bKVU66ChsGsbga7NW+GWDVsp0dppNOTY
- Qs/jcXRbx67Fu6S1/l9gw1asWitNLPZ8gb30NSKRNayshK/gGe/eNYXhLPPhQ98O2LCVYq2ZfAsvNuAq
- f4tgMISW/H7dzMycjme84wM8z6bx/uV3sGErRVoTTQW7P8NdNQW/P6B/ks/n1yXP+ICR+nks27+BDVtJ
- NaVLjqk4t8DUEGh/9OpwcnIBA7V+ndc7q0ue8QHexhCWbF/BPVu+MpSsTMmuyZPaVYvFYrsO7/73UAqH
- L1tJUV/SlAd3xCblH+s4aw2T/BzJAAAAAElFTkSuQmCC
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHASURBVDhPpc1NSNNxHMfx7/7b3UMHQcKLdy8heBUv
+ Kh0EmWKY5iMewlPgQVFBfJqbmzCZGD4k6qYiNCHKTXG5cBJ08JEMtcIokoEPqAwG+/j7/HVQIP+UBq8N
+ fr/P+zcB8F+kyuxUXPVKr7W1te4uuL1unCKV6ktx7E6dqQeBxD/wwy0btvLM7CDn5lgU8UQCsXjcEDfc
+ smErFWY79a+PHOFCDU4uLw1xwy0btlJutpH709BPHMdi+HV6aogbbtmwlTKtizwfPYf4rf7hazRqiBtu
+ 2bCVJ1oHDUXc33Cwf4If5+eGuOGWDVsp1dppOOzaQ6Br8064ZcNWSrQ2Ggs5dtFTPI5u66tb8S5pbeA7
+ 2LAVq9ZCE4s927CXTiISWcPKSvgvPOPdTGMYzjIfPvTvgw1bKdKayLfQuQHX02kEgyE05w/o5uff6njG
+ Oz7gqXmN931fwIatFGqNNBfs3oK7cg5+f0D/JZ/Pr0ue8YHR5++wbP8MNmzlgemhZJuKcgpMDYG2vJfH
+ s7MLGKz167zeN7rkGR/wvghhybYD7tnyk65kZkhWda7UrlosFtttePenR/J45KaVFCVVSbsn1UjKFes4
+ aw2cv28fAAAAAElFTkSuQmCC
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAC50lEQVQ4T6XTa0hTYRgH8NdT
- CSWpaVobplPTbAWlm5SGKM0vSgmJoZElXgPbumjasBpqGluUzbLQLgYO5kwstS2nqUtFjTq2SBOzCZW6
- LbPVvORS8e15D/UhPwUd+HGey3v+53w5CGOM/gcKLjUwQm59RGG3x1H4PbNzROXn/eAK6AA0UAIh7Nhh
- d4wI6kRQQV68PMBHcN8kTmu2KvP18/qS4SUrwAX6+dn0p9bRvZUmHbykGNDE3wE3P7AElWNJV4cW5cX6
- efWl1wuDsoFFK8BQY5hhWf8Chi+lr48sMXcmgFfyDvGvDduHlo0IZG9sogvdM/K83pnGWNV4C1/+vgPQ
- UBuK++ZwXucUhNgwqcmcCdgpGyBYB6s/xeS2fhWdabeUQi8NvPw2moTvkPaTfRmgi/pmcFbTBJb0WDHp
- mQBuYR/hl9FgjDulMQsjy4fE2y6+CtpepEcB+S/R1gI6Efbw8DQ+2zbJkHR/x2TGBPif70X+53o4J7Xm
- cKHaGOGX183zEXciTo4Oeed2kF0FzOjlyJwJ2HS6FXlmtVV4ZbfTy5E5J+cZ8hV3kTMI9rzk+vGIDLUp
- HHoOE8A6/oSgk7VfcHy9iZGps2AyYwubEjdmatD6tEeIlakJCizqFceoRoX7qgxxsPdjAsgS0FENk5iv
- MOLYJgsmPShzSalDTkkPkGvqw2jopZHVY6V7VGZRoPRFDPQsJsDxiIqgQx5P4UjtNN6ssmBS+0q6DGQO
- OnwknS27akyN3NpvcoF2WuSSWidwOlpjzwSsia8i6AjdT0zuXM0c9qj/gT0b5vAWjY2wQj0IMzW/xSZ3
- TqlNckhQsNYeVjL/EKLcAtCqA3fp34rtExQ6dtHzUa/qiVlO8yIGVi/lhJ5V2KtcfUghXhmW60O5ByBy
- MQFweVCh2VUULz0Lap6dO1dA7T6RT0XfqKX2l/eBTipKXkoFH0uxW+cdCme4wA2s+BPgCI0r2ADY/4A8
- 7AAoEvALSboOLClv94sAAAAASUVORK5CYII=
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALlSURBVDhPpdN7SFNRHAfw462EktQ0rYnp1DRbQekm
+ pSGO5j9KCYmhkSU+A9t6aNqwErUttijbykJ7GDiYM7HUXE5Tl4oaddciTcwUKh9bZtZ85FLx9Du3+iPp
+ j6ALH+7vcc73/nURxvi/oCDlACP4xnsUenMEhd0xO/JLP+4Fl0AroIEaCGHnFnprFEEdD0r+FuAtuGsS
+ pzRY1HnGOWNh/6IF4Hzj3EzqY8vQ7lKTHs5IAU38GXD9HUtQOpxwuW9BITXO1V14Od8r71mwAAw1hhmW
+ d89j+BB9dXCReTMB3MI3iHel3zakaFAgf2UVneuYVuR0TddGa0YaeYq3rYCGekBqmMU5bZMQYsWkJnMm
+ YLu8h2DtL/8Qld30WXSqZUIJvSzg4utIEr5N1k32RYCWGKZxRv0Yzu20YNIzAZwCA+GbVjMac0JrFoYX
+ 94m3nH8RuFViRP55z9HmfDoe9nB5Cp9uHmfkdnzFZMYE+J3tQn5nOtnHdeYwYd0o3zeng+stbkPsLD3y
+ ym4luxKY0UuROROw4WQT8shoLvHMbKGXInN21hPkI24nZxDMuInVI/y0OlMY9GwmgHX0EUEn6j7h2GoT
+ I10/gcnMTVgfvz5di9amPECsdG1ggKRLHKUZEu4pG4iBvS8TQJaAjqgZxzzVKI6un8CkB0VOSVXIIeEe
+ ck6+Hwm9LLx8WLlLYxYFyJ5FQc9iAuwPaQg6+OEkDtdN4Y2aCUxqn9z2ATIHrd65bY07Kky1nMovCoFu
+ SuSUXCVwOFxhywSsii0jaL7+OyZvjnYWu1d/wx41s3iT1kpYoO6FWR2v0apwTKpMsItTsVYfVP/8FygX
+ f7Ri3236F6ltnErvJnk65Fk+NsNuWMDA4qkeM7IKutQrD6jEy0OzvSlXf0QeJgAedyoks4zipmZAzbVx
+ 5QioncfyqMhrldTeYgNooyIUSiroSJLNGq8QOMMBLmDZ7wB74AzWAbd/QC7bAQpjjH4ASboOLBOl+vUA
+ AAAASUVORK5CYII=
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAB/UlEQVQ4T41SS0tVURjdEwc5
- aSAhXaNBIWqmVMoNEdNQUMvoZSGZPbhpFGmYqfQiKrEbgiRldSNKk6yMIoIyupBCYGAfBNGoxywnEv2F
- 1bc+2psrXLANi3XOtx6HvfdxNyudI4arXEIh/4GEzwBw7oaG/0G+3YrhZ6INc6Md+P2kG38mejE/3oVf
- I+34cacV328fgXrFZ6xgqCJAvl5vwdC2CO7uXZ2WTa9w4jNWMFgeIF8Gmy040VaSlqmrX3zGCgbKAuTz
- QBPuNeXiXU81nrZuWMCcU1e/+IwVxKMBIvE9uL8vD29Pb8bj2LoFzDl19YvPWEFfaYDM9u/GyP4CTHZV
- WQH5QXO+zXgu1NUvPmMFl9YHyMcrOzDasgavOzfh0eFi4/6tK5BMJtFXtxzU1S8+YwUXigPkw8UGPDxQ
- iFcd5Rg7VGR8bUsOTpYsQbw+AurqF5+xgjOFATJ9vt4KXp4oS8vU1S8+YwXd+QHy/mwtxg6uxYvjG60g
- lTmnrn7xGSvozA2QZG+NFTw/FrWCVOacuvrFZ6xgV8S59lUG4fXR+OxoqR1mKnNOnT76mbMCroZlzsVy
- nLw5VYnhnSvt6+mYOn30c/mCTH3OblzqhH/g1Lk6uy7+NMSnq42Yubzd9s8t0Ee/ItMXZOlLUTTDjddm
- OFkM9KlfL99lseAvRjbC0XMbRtAAAAAASUVORK5CYII=
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH0SURBVDhPjZLdS9NhHMWfGy/ypguJcIsuCklbG5my
+ EDGNAp0ZWWlIZi8sFSMNMx29EZnYQhhKWU6kNMlSKSLohQYpBAb1BUG66uWubkL6F06/86XnYYNB/eBw
+ xnM+54zfi7lTaVSjVSbpSf5DSdsBYMxt78dfyZe7UXxPtuHnVBdWn/Ti91wMv2Z68GOyE9/GWvH13mmQ
+ sx0dGKlwks/DLRjZ78P4kc1ZXXOPsx0dSJQ7yUqiWcG5tpKszpyc7ejAUJmTLA81YaKpAG/79mC2dUeG
+ 85w5OdvRgXjYSSTeiPtHt+DNhd14HN2e4TxnTs52dGCg1Ek+Dh7G5LEivO6p0iL9QXOhnvE5MCdnOzpw
+ vdhJPtyox1TLVrzs3oVHp0Lqg/s2IJVKYaAmH8zJ2Y4OXA05yftrdXh4PIAXXeWYPhlUv1Xrx7mSNYhH
+ fGBOznZ04GLASRavRHTg+dmyrM6cnO3oQG+hk7y7VI3pE9vw7MxOLaQ7z5mTsx0d6C5wklRsr4JPO8Ja
+ THeeMydnOzpwyGdM5yaV8HURnG8v1YeZ7jxnTo48ezrAq26dMVG/kVfnKzF6cKP+azZnTo48LzuQ62l9
+ w1oj/OIWLtfo6+JHQ3262YCl/gN6/7wFcuTZswN5noLhHDNTnWPkXyLn8d5LNHkAzB9GNsLR7W5NQAAA
+ AABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAICSURBVDhPpZA/aFNRFMbP3YMoUtRoKDzInyfIG8Ir
+ 1CXJkCEkXRKXkm6pk0vQUsIdq9LOghQtgqOWUq2DiAXJUCiUQqQ8CgYHg0qGLC4OKub4fddY3iAuXvhx
+ cs73JyGiqv+F1Ot1aTQacyCo1WpSKpUkDEPJ5XKSSqXc5M47dfroZ84V8NhqtSypVqvBvwqo//Ey5wr4
+ 0um07fV62mw2bbFYDP5WwDt1+uhn7qQAL8hkMjaKIsVPs/l8PogXcOedOn30MxQv4Auy2azt9/taqVQs
+ jAELOLnzTp2+3/ZJwQ1jpA2uAjx+sx0MBlooFGwymbzGyZ136vTRz5wrOMaHD+Az2AIwBL7v2+FwqOVy
+ +XW321XuvFOnj37m4gWJT8bMg3tgc9uY3dueF41GI91LJKIj7LxP9Hn64wWJ98bcHc3OHv5YWvqiq6tj
+ XVvTo3Zb34h85WcH7tTpo585V/DWmIWPMzM9mp573rv7Ioc/V1b0FSZY5+TOO3X66GfOFewZ8yge/ra8
+ rDuYL0QWXuJf4+TOe7zE5VjwTGQX4pji905Hn2A+RegOwk3AyZ136pMvGTPnCh6IPDwIwyFbH0PswHwZ
+ ofjjzjt1+uhnzhX4IiUsG2B/UeQWvFdAGkyDi+AS8IB/XeQmffQz5wrwkjEugHPgLDgNTk04A6bAeXDi
+ V1X5BcIraIltHRGHAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHWSURBVDhPjZHLK4RRGIffjQVSZqMoKcxCmo2NkgxR
+ w+QeNZvZWDA0yQgNTTM7/gD5C1zTNLEgNbkM+1naWUihyGXM/fZ6fx+jz0E59dSZvvM+necMjXi9NOrz
+ 9Qnjf1A/7PHQ4OIizmn0j3SStbGEjBVFRPgoOGLZLD8lk3wfj/PN2xtfRyK8f37O+CYY9YKCsMViJm0j
+ TEbTaX6MRvn25YWvHh748u6ONw8PGQvfBaMqGHC7iXrn58FULJPh51hMkwTDYd4+O+OltbUvOhyOPRn+
+ lqQJul0u4ExIwmsioUkCFxf8nyRN0OV0gumUDERlAJKAHPxPkiZon5gAM+lcjuMyBIk/FGJ9UkGyurHx
+ hbGnxyMQtY6NgdlsPs9JGYLEf3rK+iT1JshBNvKp2W4HczkRZGQIkt3jY9YnqZIb2SMb+dRks4GFvLRl
+ JQOSnWCQ9UmqBA+LbOSTaWgIuPE4ebkFJFtHR6xPUiXPqRQjG/lUbDBQtdnsgwALN1k/OGB9kiqJyG9k
+ C4RVU1pX5yozmVYK1FssJ/okVYK/GNnIxyoXKoWqAg1W67J2m88kVRKXPbJr29rk+M9VriYhB2+Ch8W/
+ k5I9zshZw8fI9/Uj6Tdwhohq3wHeYoLJhJ4gHAAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJtSURBVDhPjdJLSJRRFAfws0loJ0IFUatybMLC8ZUP
+ 0smiGsFgzBzHt6WNjTk4mmMwgUVaFInBJBVlD9PeWS6aoE0ggS1uaA+oJIQoa1EI5djM+Pp3z5ffTV31
+ we+by/3OOZx75tK5TNJ0mP85ZDFG5OXl5UqOObm8Nz9Gz5tf4KIk2AkTDXUddn0dHv4Ixmve079zrCrg
+ k6854kPHXvTVpmFg4DUGB99jZOSLhte8x9/e+crBsXoend2siDftxbhRFotLtrW4XrIet/bF4U5VPLrL
+ N+BKYQx6KjbiVVshOFbPo7Y0RQydseP50Rw8aTBrLjRa0d5kV843V6Cz1YGW7cve1hVlkMueTnQ6RREv
+ T+XjmXen4vOW4PfMDH5NTuJHKITRQAB9/f2os6V+snq90TkeD9HJJEW8aLHiqWer0uYpwMTUFMYmJvB9
+ fByfx8bQ4/eDH5nslAx0PIF0gtt/7M7Q8MCOOXMQnJ7Gz2BQFfF1dyvRFssRao4jneC2HxxI1gZ5uSAa
+ jWVZCMsjBMLhBUW4k1G53lZT4yJvLOmEvz4TV4vWodNu0DSUZmFKFgjKGSwuwjPJqKpyU5ORdOJhTQqu
+ FRsVd8kWzMzOIiyPsbgIDzaltLSB6g2kE72yQJdsX+cqMmNWDmxadrG4SECu4202D+1eSeRaoxG9zk3a
+ ZdFV56drE+ci3Akfh2fCgw3J35jsbK+8SkS7VhA5Vv8tcLvSpNRa41FgMS1gzzYhybjqW6TJ1BqVmFjJ
+ +Uul5XsiSTw6mKr9C/erk3DPkajc3Z+g4WvNOJZz5nIpSopNXkI3d0SQ+B8cyzlEFPUHvLkX5sUkE2cA
+ AAAASUVORK5CYII=
+
+
+
+
+ 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
+ HFTsDEBsA+DL/+xB8T2EAAAAAElFTkSuQmCC
+
+
+
+
+ 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
- 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
+ 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
+ PH8iqGWNUP4AbaoEShPoUdgAAAAASUVORK5CYII=
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACZElEQVQ4T4WSXWhSYRjHj8Ns
- GDrmJutjd0LrJroQYjoQzWO4BiluTt3OlkvXlqhH50xaizWWrNhdEWNdBEFBFxvBGI3AaiR1EQV2EQxG
- weiDotsuol38e56D2mEMEn68f9/nfX6e87wKGo1GUDFLeZngVb3Pec/a7kMrhUIBBoOh1NTUJJhMJgXO
- vMc1Eq2o5WrBnNlsfieKIngl7hJCFc71GgnmahK1YLVYLCKXy0GWcyypqOFaoXAJ6XSGn2J1L8HazMwM
- hoYk9PYOwmq1IpPJKHDmWiwWQyDQz4K1vQTr09PTGBiIwG63K01qPB4PotEofL5eFqzvFiw0Nzdv8vvX
- mnw+HxKJhAJn3hdFt7LyWRIssKQ2g9LU1BS9exp9fX2w2eygyW+pCQaDSKVSiMfjxDg/RUkt2JicnMTw
- sES/IqKnJ8hX+cloNHYynPP5PM3gPLq7vfB6/SzYUAvK2WwWg4MRuFwuOhCAXq/fJoQq2xMTEzSDc3Bf
- eQT36DwLymrB63Q6jXC4Hw6HAx6PD42NjV8I4Yg3JXCWZVm5Ifv1DeIl2roiWwfFRH0Gb5LJJEZGosoM
- QiEJOp3u2yFPQjherCx1yMt/umafwXathJNXn2LxK9CRffyLalJtiBWn0wm3+1T9FrRa7Y9WR1ywXC6/
- vfUZSHwAht7/I7cJcE2ofj6OjY1BkiS6Mj/9kcJoaGj4ub/9hNDiv7nU0n9759jFhzg6/gCW0fvofAW0
- hu78pprE/e3EE+K7GhrQc/puZapZqR84c2OH0VmcL6q9gpGCiWgjDv8P3dnFe/tOz1+o9hj/AtmlLdLj
- WupUAAAAAElFTkSuQmCC
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJfSURBVDhPjZJLaBNRFIYnIcZSSULTlvrormDdiIuA
+ tCmExEwktWBK0qSvSU1NamrIO6nBWolFQxV3ipS6EAQFFxWhFIsQtVh0IQpxIRSKQvGB4taF2MXvOUMm
+ 3p0OfJwz95z/n3vPHUmn04nME8v1+F81sYF5WCqVYDKZqhaLRbJarSqc8xrXuEfUiOLL7e3tb2VZBkfi
+ NiHV4bxR415NJxqsVCoVFAoFZDIFbqyJcK1UOod0Osu7WNF0osFquVxGOKwgEBiHzWZDNptV4Zxr0WgU
+ fn+IDVY1nWiwNjc3h7GxUdjtdlUk4vF4EIlE4PMF2GBN02ni6y0tLZt8Rk3g8/mQSCRUOOc1WXarkXtZ
+ IxpUZ2dn6expDA0NobfXDpr8lkgwGEQqlUIsFiOmeRdV0WC9WCxiYkKhr8gYGAjyVX40m809DOczMzM0
+ g9Po7/fC6x1kg3XRYCOXy2F8fBQul4sa/Ghubt4mpDrb+XyeZnAK7gsP4J5aYIMN0eBVOp3GyEgIDoeD
+ BuZDU1PTZ0I64E1JnGcyGfWG7FfWiRfo6Bvd2isnGgavk8kkJicj6gyGhxUYjcav+zwJ6XClttSdWf7d
+ N/8UvZeqOHrxCRa/AN25Rz+ppmgGNafTCbf7WOMWDAbD9zZHTOo6v/Hmxicg8R4Iv/tLYRPgmlR/PsTj
+ cSiKQlc2SD/SCPR6/Y/dnUek1sFrS62hmzuHzt7Hwel76Jq6i56XQNvwrV9UU1jcSTwmvonQrp5RtDH1
+ XF3fc+LqDmPscj6nd9ZKZsJKdBD7/4Xx5OKdXccXzlBOGsn8B9mlLdJJ1LdPAAAAAElFTkSuQmCC
- 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
- QtiJ+A2+oxJO8d3MEAAAAABJRU5ErkJggg==
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAALhSURBVDhPXY5fSFNhGMY/ChnmXRIjKEKyWZK5VBBW
+ rhhNJ8u5uan5P00rYRj5B5ws0wLRiAhSwwsZLvBCZppCIGhbSrml86jpcagxneaF4q68fzrvp4L0wg+e
+ 877P7+Ow7OxsZjQaWU5ODjObzcxisZzLzc1VS9A8OoJGTTfqUJccck8+IJOOaXV1dY1er3dxd3cXOzs7
+ HMrT09OLtbW1jdSh7v8PyEwmU5bD4egj4dPwChrezkNv9XMoO4dEbG9vobe3t4+65PAHDAYDcUc6OIPB
+ IEptM3jQtIaa92HUdx+grusA1nf7yGtc5bf19TX09PQ4ySGX6fV6udVqtW9sBFHY4EX56xCevtlD1rNl
+ HA/lx+27KG4+7AQCAVRXV9vJZTqdTuN2f1vqcvqQU7+MstYQjLUBaJ/4j3TwTLtCexD3axbQ2TeN0dGR
+ JXKZVqstpt+qsntQ2hJERrXA0VT+gkL3GZe1LsRlDiM2fZCjfjjFu7OzMyCXaTQaqyAIuFU0jqIXf3C3
+ wgeleQJXMkek0iz8fj9idV+k71FOUu4E705NTYFcplara6iYmj+GrOfLiDe6EWeYgEI/xmVRFHmmHXHD
+ 8p13PR4PyGUqlapcEOZRUj8GdaWAeIuPc9U4yeVQKMTz8f665QfvejyTIJelpqZmDAy4Vjo+enAzz43k
+ sgASCqU/scxweX9/n2faEdeyx9He5YbD4Vwhl6WkpJw3mcxtc3NLuFc2isR8H5LKN5FQ8JvL4XCYZ2XZ
+ JuLNXt7x+eZhNJrayGVKpZIlJibqmptfuRYW1nA734VL6V8RXyBCWfGXQ5l2dBOEVdjtrS5yyGVyuZzF
+ xMREKhSKYputZUgUt9HR/ROGykGcTe7kUKadKG7BZns5RF1yyKU5JXFGJpNdiI6OLlGp0j7094+sr67u
+ 4SS0oxt1pO5Fco5cdloiWkIhkRQREaGJjIysioqKapJoP6KJdnSjjkTcocNO/wO+oxJOTRPayQAAAABJ
+ RU5ErkJggg==
@@ -388,10 +367,10 @@
- AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
+ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADQ
- MwAAAk1TRnQBSQFMAgEBEAEAATABAQEwAQEBEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
+ MwAAAk1TRnQBSQFMAgEBEAEAATgBAgE4AQIBEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
AwABUAMAAQEBAAEYBgABPP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AB4AA/wD+SH4A/kD/AMAA/0D+SH4
A/kD/TkAA/8D/AP5EvgD+QP7A/4GAAGWAakBvAFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFc
AYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgFcAYQBrgGWAakBvAMAAs8BywK5
@@ -621,297 +600,314 @@
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJ5SURBVDhPjdNdSFNhHMfx56Kb3i7scl10M28kIW+6kCDC
- mF1EikF5IViDBMMkJQbKzHyZLiUVXc6hGdU0K0OTMFPBGkGpWIJiqznX3nybc3Oezb3663ke8sBJgg58
- Of/ncM6H58A5hPw5ZrTk+rSWVP1P7N6958TzVB2pESxarH28hvWJfAhz95BwdgHLT6Wt94Lduw/4XEs0
- 2HqNXd8rhB06eL8U470+A6PvmiSNjbdhsPZ4+z7gUy2pT2y+QHzNyEv4XmJm4BZcXi9WBAFOmj0QwBuT
- CZpKxUiOWp0sQUxVpCHu6UVs+QmPzZN9SsxbLPhmNsPq8WBhZQU9w8NgR3ZZWaEEmbhLHsRWnyHifMRj
- s+lxLr4vLnJk2e/nSJvRKJacmakWdzFWQVoi7m6EbB08Nk90XcGPpSWObNBX2EPYTtjrKEpKikRgpJzo
- duydECw6HpvHDTmw2Gwc8QWDEsS5vY2MoqJiEXirIvrQkh4BcwuPzSPtWbDa7RzZ2tmRIKuhEM4WFNwW
- gUEV6RR+tsI/38hj83DrRdgowBAhHJYgm3R9RqksFYH+UtIdWGiCd7aex+ah5guwOxwcCUWjEiRA16fz
- 8u6IQG8xMfrnGuCZqeaxeaBRAYfTyZFwLCZBBAqk5eaqGHCQdsxwgwz5ZumnPFXJ89Fd9N8/D5fLxZFY
- PC5BghQ8mZVVwYAkmrxQQTpGW9IC1qHC6MZ0NTa/atBXdw5utxsuWmJ3F3FaNJFAhGIROsvS07WSr9FQ
- QLL1SmJ4Xi77MNlz6Zfq8gHHIbm87XBKSsPR1NT6vzsil9/c90+wC8355FRjHlHXXCUP6fIETfaPkn4D
- qvVdCMceSq0AAAAASUVORK5CYII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKASURBVDhPjZJdSJNRHMb/F930dWGX66KbeSMJedOFBBHG
+ 7CKaGNQuBtYgwTBJiYEyM3W6paTDmXNoRjXNytBGLFNhNYJSsQTFrKlrX37NfThf9z3/nXN6Vd7oogd+
+ 8Bx4nx/nwAu7mdLC9Ukt1P4P9Ft+tp+JRqjn7Fpc+3gN161FyM3cw7S7G3H5qZD1PqTf8rP9fFZDA26+
+ xp3gK4y52tH/pQzfG/Jw5F2LgNExPQ6pj3fws/18UoMmHXiBqTUTIx18iVODt9Dj9+MKx6Gb4AyH8Y3N
+ hg01kuFClSqTn/6JrRaaUr4+TC4/YdA+3q/AWbsdv83P46LPh3MrK9hrsSBNQWVliUBivQsPkqvPMO5+
+ xKDd9liG3xcWmGQ5FGISvcm0R2Z+voqfA4xWgy7u7cGIo5NBu7X7Cv5YWmKSDfKEXQm9CX2OpLy8lJ8D
+ DFdBe9TZhZy9nUH7mLEQ7Q4HkwS3twUS99YW5pWWlvFzgLdKMESWDBie1zFoH+6Q4qLTySSb0ahAshqJ
+ 4Nni4tv8HGBICV3czzYMzTYzaLe0XUQHEVAJF4sJJAFyPqNQVPBzgIEK6AnPtaB/WsOg3dx6AZ0uF5NE
+ EgmBJEzOp+XyO/wcoK8MTKGZJvRN1TFoH2yWoMvtZpJYMimQcKTnyGRKuj1IOGa8AebgNPmVJ2oYQXKL
+ gfvn0ePxMEkylRJItkk/KZVWU0EGQVwigc4RXU540VyS2Jisw8DXBuxvPIderxc9hPTODqYIiXQa40QW
+ J12Um6ulgr0Yi6HAoADj8yrRh/HeS7+Ulw+4DonF+sNZWU1Hs7M1f3NELL7JT4VpLYJTzXJQ1V+Fh+R4
+ giD6N5DxG6r1XQjZiWGIAAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJASURBVDhPjdJPSJNxGAfw5xYd6+hZJIjCim5d8hBe+nOL
- KLA/FHjx0GEHcf6f04m51mwb5mJlhlkUFpVmusSIKf5Dszk3zYmSLjdn29rmtm/v8+CKl4E0+LCH7ft8
- 3/f38hLtfsYb6dpYI9X8D85m9/5+jzZQXcTbiHXnVWwMlSAyU430ygNg7ZHaRhc4m1PwpZ50CL9AJtSD
- uL8Nm64yzHcXI+O1qmDVAc7mFIzUkz4d7EZqvVOkQ88w7ShCeNqIHc99pBcsIrPyEJzNKRiuIUMq0IWd
- NYfgebLjFPwjepFSSljabwdncwqGKqll58djJFY6BM+fzSexPKwTSbdZpJbawdmcgg9aMiZW7YgtWQXP
- TuNxLDnrRHzOJJI+Gzjbp6UTqpL35WT+vdyOyIJZ8DzQUgjfYI2IzRpFgp9FJgPOqwreaMgSW7Rg220U
- PL9rOgLvx2oRnWkV8fk2BKNRcF5V8EpD7RGPCVuzzYLn17rD8AxUiV/TLSL27R58gQA4ryp4fpvs23N3
- sDmlFzy/rD0Ed79WhCebRfTrXZx2ZcB5VUFXGXVuzRgQGK8VPPdUFsDdVyG2Jgwiohzj6NsIOJ8t2K8M
- B203qTc0pbzKo1UipNxFt7YAC8rts+wRosqD5OyNIjqr7PEuHVDkl54ha7/x2LavtzT5c6wWwQkd9Bcp
- pDlPI6z5Cg1mcZZ3dnf/ncR2iy5YrpPtaXme0/Xk3Pemy/RJ+TevOJ/25bw4e/3QWkKFytUqGi6RScnt
- ufwHz8wCEl4W+tkAAAAASUVORK5CYII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJDSURBVDhPjZJNSJNxHMd/t+hYR88iQRRWdOuSh/DSyy2i
+ wF4o8OKhgwdxvs/5grnWbBvmYmWGWRQWlWa6xAgV35jZdE5TUdKl07UtN7d9e36//eXBS/iFD3yfh+/n
+ eeOh3YzU0I3hGirfD7xVmp6haqoMz9Zg1X0da315CHvKkFx6BKw82ctaG3irND3fqsiIrVdIBTuwvdiE
+ 9cECTLfnIjVr3wOWXeCt0vQMVJEpudGOxGqrkAy+wIQrB1sTZuzMPETSZxNSS4/BW6Xp6S+nukSgDTsr
+ LoH7WMsZLA6YhIR2ESa56ARvlaanr4Qadn49RWypReD+1XoaC/1GIe61Con5ZvBWaXo+GcgcW3YiOm8X
+ uLvNJzHvrhS2pyxC3O8Ab7sMdEqp6XwsIuvfhWaEfVaBe09DNvy95UJ00izE+FukUuC9UtN5V0i26JwN
+ Ia9Z4P6h9hhmP5cJEU+jsD3dhI1IBLxXajpvCqk5PGPB5mS9wP2t8ShmekqFPxMNQvTHA/gDAfBeqem8
+ vEvO0NQ9rI+bBO6vK47A220Qtsbqhcj3+zg7mALvlZpOWwG1bnrqEBipELh3lGTB21UsbI7WCWHtNY6/
+ D4P3SqWDGocdt6kzOK79ykOlQlB7inZDFnza4zO7rxDRPiRvb+XQeeXSIY3M/HNk7zafCPk78+O/hyuw
+ MWqE6TIFCy/SAFN/jXp34S07ytXjuEOXbDfJ8bwowz347MLP2qv0RTudkZtJB9KLfaYxj7K1OxVXXyGL
+ dvgfmegfz8wCEmES5jIAAAAASUVORK5CYII=
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
- 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
+ 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
- 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
+ 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
+ AAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHCSURBVDhPrVI9SAJhGH5vlygi+jFIBJEb4pwECQTBRaRB
- aQmbrFmkwOQWwQicazCKoC1qkFoiEsJBCEK4iFuSFqGQOIIgCgry630+vFAxaUh4eL/3+bvvVKL/+MTj
- 8flYLKb9pQs++Lu8yWRSB6LR6MAS6La3q8Dj8eiGYYhEIqGHQqG+JeChwwd/7201kKZpCr6i7vP5ukqw
- g4feDvd9iOb1evV6vS4ikYjORmnCxA4eOlMDX1OWNBoNEQwGdafTuYCJ/S9h+Vpz/ARVVfVmsynC4fBF
- pVIR2MH/+is9ETkeiRYfFGWLcVxSlPKGy2ValiWqDod5wzt46PDB/1Nm8nKvKJtWIFB7T6VeXnO5ligU
- xG06LS6J3nAGwEOHD37kZIlBtNTw+w2YTtzuu22i2lc+L854nhMVMbGDhw4f/MjJgqqi7HeGPzIZccpm
- hjRgYgffWYKcLCgRlZ8zmRbEz2xWHPI8stvbL4odPHT44EdOyjtEu9ea1sQtDlhc7wnbXxZ46PDBj5zU
- vEShItEeE1fLRGtMzeL/w5hhOBnTDDdDXSFahQ9+5OzyKT7YmOTzOGOUMcwYamOE5xhjosOLDH0D4S3s
- Kzy6vYEAAAAASUVORK5CYII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHASURBVDhPrZI/SEJhFMXv2yWKiP4YJIKIQzwnQQJBcBFp
+ UFrCJmsWKTB5i2AEzjUYRdAWNUgtEQnhIAQhvJC3JC1CIeHSUlCQX/d8foaVSUMXDp/nnN+9Okj/MrFY
+ bD4ajerKDhxw4JXtTCKRMKBIJDLwCPouq6LOuFwuwzRNEY/HjWAw2PcIcvTgwKv4c3SElmUJ/omG1+v9
+ cgQeOXq13PdLdLfbbdTrdREOhw0GJYQXHjl6cMh/G3mk0WiIQCBg2O32Bbzwf1mWM8eQx+Mxms2mCIVC
+ F+VyWcAjV8jPeSSyPRAt3mvaFuu4qGmlDYfDarVaomKzWTfskaMHB16tElls7jRts+X3V1+SyadaNtsW
+ +byopVLikugZn6XnHD048NiTB0yipYbPZwI6cTpvt4mq77mcOOP3nKiAFx45enDgsScPVDRtv3f5NZ0W
+ p/yyJIAXHnnvEezJA0WiUjWdbqN8y2TEIb9H3etq4JGjBwcee7LcIdq91vUmrh5wuf5tuTvI0YMDjz1Z
+ uPlfWiDa4+BqmWiNo1mWizXDsrOmWU6WZ4VoFRx47HEmZ6pHk6xx1ihrmDWkNMIaY02weniiDzfL66dM
+ bAjUAAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAG4SURBVDhPlZNNS0JREIbdR2DLIghCF0Eu2rQKI4IuSIFE
- hQtXLsRCIiMjQ7m7+gHhL+iTEKmFIoj5tXfZrkUIGRhpeq/fOs0IczmYCR4YOHDOfZjnnXN1Olx7gcDW
- riw7h9WOLBvozshlDQRcaqcD340GfNZqkK9W4b1SgedMBuhs2+83jgb4fPtKqwVfigIf5TK8FYvwWijA
- bTQKtKx4PhKy6fUeqO02lFS1D4nncnCfSsF5MKjVmsv1RIpDlTY8HncdFX7q9T4knM3CWErrbvdhEwEK
- ZkCQMLqPpbTqdB61ul2oYQ4ECaXTICpxLlc3N8BllCS/FuyKw3Hc6fWggTkQJJRMgqg0GC5NiLQ1wLLd
- ftJFQBs1CPKYSICoxOFyJ3kMmrQ1wJLNdtrDcXVQgyAP8TiIShwud0JvhbQ1wKLVekbz7mEXBLmLxUBU
- 4nC5k1KzCaStAWbNZrn/YgiCdR2JgKjE4XInFcyJtBkwN2EweCZNpksugyS9iEocLndCIyZtBuhxM401
- w7VgsVyIShwud1LDoEn7v/9DP6hEOpQJBUvTaeKe7iBgahjkj5Kox3vSxo/nfwHKBlL+USi6VgAAAABJ
- RU5ErkJggg==
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGzSURBVDhPlZFNSwJRFIbvPgJbFkEQughy0aZVGBEkSMEQ
+ FS5cuRALiYyMDGV29QPCX5B9ECK1UAQxv/Yu27UIIQMjTZ3x29M501WmyYQOHLjDPe/Dee4wqh2/f2Nb
+ FB3DeksU9crQqBL8fqfU6cBHowFvsgz5ahVeKhV4yGSA7jZ9PgMfHV6C17tba7XgvVaD13IZnotFeCoU
+ 4CoaBSq6HwlZ93j2pHYbSpKkQOK5HNykUnAaCAx6xem8/1Npze121VHhs15XIOFsFv6ltOpy7TcxUMMA
+ QcI4+C+lZYfjoNXtgowhgoTSaVAr9SEXweCgDWazj8cZW7LbDzu9HjQwRJBQMglqJe0mpEPaPM7Yos12
+ 1EVAG0MEuUskQK2kheTxTNo8ztiC1XrcQ7cOahDkNh4HtZIWQg9L2jzO2LwgnNDj9HALglzHYqBW0kJK
+ zSaQNo8zNm0yiQSgok0uIxFQK2khFfwmbR5nM2N6vXvcaDzvt95sflQraSH0i0mb55kOexJ7qt9zFsuZ
+ sg1X0kJkPJM2zg4tnVaJdOhN6GHp7zTxTDM4O/Ed+Vm/lIY1zTDGZr8AygZS/nlYTlgAAAAASUVORK5C
+ YII=
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJfSURBVDhPjZJdSJNRGMfPRQhdVRJd1GVNc1j2Tm3ah5oG
- y5EX6pxOXWr51UzRxmuSwoqUEFperKgo7Uv7/vKiBd0EEtjFCe0DKgkhyrooBuVsm9P9O89bO6DzogM/
- 3sM5z/nxnP97GFtiuEr0ccXFxUUWi6WBoDmtLVUr185kswueLMaJboWND6hNXycmPoKgOa1F96k2Rkab
- H87ux3DzNoyOvsbY2HtMTn7RoDmt0d47TzWoNkZweifjb/oqcb0qGRdLN+CqXY+bB7bgdp0Bg9WbMFCe
- iKGazXjlLgfVxgjcmYyPn7Lh+bECPHHmaJxXC9F3xCY556pBf08Dunevfhsj6M1g/GWvFc8690g8nXb8
- np/Hr9lZ/AgGMeX3Y3hkBK2lxk9FXV26BZKTaYy/6C7E0/Y8ibu9DDPhMHwzM/g+PY3PPh+GvF7Q2Kuq
- jvyOjgQpOZHKOLX/uC1LgwI77ihAYG4OPwMBKfEMDiKKzmTqkgJXCuPU/v2DW7UgL5XpoFblIiSu4A+F
- FkiokynRVZ7D0SIFR/WMew9n43LFRvTbEjSc+3IRFoKAyGCxhDLZUVfXJgVqEuMPmzJwpTJJ0mbfhflI
- BCFxjcUSCtZotzuloFXH+AMhuCbaj9JSkYOICGxOdLFY4hcCxWptl4KW9ULgMGqPJUqjdbuWOEmoE7oO
- ZULBBsU30WzulIL6dX8Ft2oVSXOhAWX5ygJsZgUpurXfVihKzyqDoZYEywVrSlYy/uhQpvYX7jWm425D
- muROfSoIetYE1dKZf2dZvJgkpy9jN0xxjP8PVEtnBPF/AKXf9csr/2VyAAAAAElFTkSuQmCC
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJrSURBVDhPjZJLSFRhFMfPIoRWlUSLWtZoDpbdURvtoaaB
+ OeTC1+iok1q+GlO0YUxSsGgkhMzFFBWlvbT3y0UTtAkksMUN7QGVhBBlLQqhHBtHx/n3nevnHRQXHfhx
+ D985/z/nO9+l5aK9wBiRl5eXm5+fX8NwzmeyvHycS6VLnhRSGbdCI72uuu+jo5/BcM5nC3XulbJwcOHT
+ +YMYqN+BoaG3GB7+iLGxbxqc8xnXPnjKwb1SFo6zu0l9112Km2WxuFy4CdftRtw+tA13q0zoK9+C3uJo
+ 9FdsxZuuYnCvlIWjK5nUkTM2vDyRjWfONI2Lrhx0H7PpXGivQE9HDdx7176XsnB0JpH6utOKF637dDyt
+ dvydm8OfmRn8mp7GuM+HgcFBNBaav+S2tRmkdD5OJ5D6yp2D580ZOl3NRZiancXE1BR+Tk7i68QE+r1e
+ cOx3uRxZLS1RUk50Kp5UHv9pU4oGL+ykIxv+YBC//X7dxNPXp2PIzGyTcvH2caTy2A8Pb9cWeaXIAFdZ
+ OgLiCr5AYJEJTzIu8gyHo0HKiY4bSfUeTcXVks3osUVpOA+kY1YY+MUOlprwTnZVVTVJOZErhtTHdUm4
+ Vhqj02Tfg7lQCAFxjaUmvFiz3e6UcqJGA6mPhMENMf4CDSVpCImFBcUUS018Iles1mYpJ2rYKAwcZu1n
+ WaDWulPbOJvwJHwd3gkvdlp8oy2WViknqt4wb3CnUtGpzzGhKEtZhM2iIM6w/scqRelYYzJVsnalYF3B
+ alKfHEnWXuFBbSLu1yTo3KuO1+DfmuFe1kgtRQpiE1fQrcwIUv8H7mUNEUX+A6Xf9csHIy1eAAAAAElF
+ TkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAClSURBVDhPY2CgBmBkZGwE4jUgs0A0kexGuN1ADetIdQg5
- enDbATRtE0wWyo5EFsOmE0UeyNmKrAidj8MAFD0oaoAG7CApTIAadqO5AIWPwwUINUAD9qEZgMLHYQBu
- NUADD5LqhaNoLkDh43ABQg3QxpNI0QhipyCL4TAArock1+JSfJsMU+B65ICatwPxc6ghIJoYNkgPSC8D
- PxCLA7EUiRikhx8A/a8lPHxgyaMAAAAASUVORK5CYII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACeSURBVDhPrYxBCoMwEEWTE7gsdOG93HsR7yMuCtKCILjo
+ omfoAXqN/ozfYsKok+KDwfcz83Wn4L1vMC29NXoTXEDoqGb+6WyDv92oi1frN41oj9BThTRr7N5g+aDa
+ QGGgCmnWiG4QRqqQZo3dGywnqg0UnlQhzRrRDcKLuni9ftM42mfz5jeHX6fE3DEfSfPX4qETuq7AXDDX
+ zEHHFV/9ryU8cAN6HAAAAABJRU5ErkJggg==
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGtSURBVDhPY2AgETxkYNB+wMg49xIDgz2JWhkYgoKC5PeI
- is7939Hx/ygj485NDAzORBsSEhKiEhAQkPnt27f/PzIy/n+Kifm/goFhI1EGbJ7N4DClWWQxSPOZM2f+
- 3717938zK+vWeQwMRgQNAGlePZVx+/93Hf93rzIGaxYXF282ZGPTJEnzn9fN/++dDfvfU8mxgYuLS58k
- zT+e1/1/cD7q/5rJTAfWz2AmHHDIzv7yuOL/40ux/5f0MB1aMYnZhSSb398r/P/kcsL/2a1Mhxd1MLuS
- pPn1rUyw5kk1TEenN5Ko+dnVZKDm+P+dxYzHJ1QyELZ5cQ2D+vJexmWgqHp0Mfb/wwvR/+uzGU+0FTC4
- EXT2qnoGtumFDDkfnxx4f2a3y//75yL+VyYxnqrNYHAnqBmkoD+bwXL34qQDn54d+n/j3IKv+eGMh8sS
- iNQMMqAqlrEVpHnxxNCLyT6Ms+z1GQKAwqJALAzEgkDMD8S8QMwFxBxAzAbELEDMDMSMIDP+J3sxzrLW
- Y0jm42QwBfJ1gVgLiNWAWBGIZYFYEohFgFgAiLmhBrECaSYAn5vTxDvxqyMAAAAASUVORK5CYII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHASURBVDhPYyAVPGRg0H7AyDj3EgODPVSIeBAUFCS/R1R0
+ 7v+Ojv9HGRl3bmJgcIZKEQYhISEqAQEBmd++ffv/IyPj/6eYmP8rGBg2QqXxg82zGRymNIssBmk+c+bM
+ /7t37/5vZmXdOo+BwQiqBDcAaV49lXH7/3cd/3evMgZrFhcXbzZkY9OEKsENkDX/ed38/97ZsP89lRwb
+ uLi49KFKcANkzT+e1/1/cD7q/5rJTAfWz2AmHHDImr88rvj/+FLs/yU9TIdWTGJ2gSrBDZA1v79X+P/J
+ 5YT/s1uZDi/qYHaFKsENkDW/vpUJ1jyphuno9EYSNT+7mgzUHP+/s5jx+IRKBsKaF9cwqC/vZVwG0vzo
+ Yuz/hxei/9dnM55oK2BwgyrBDVbVM7BNL2TI+fjkwPszu13+3z8X8b8yifFUbQaDO1QJftCfzWC5e3HS
+ gU/PDv2/cW7B1/xwxsNlCURqBoGqWMZWkObFE0MvJvswzrLXZwgACosCsTAQCwIxPxDzAjEXEHMAMRsQ
+ swAxMxAzAjHD/2QvxlnWegzJfJwMpkC+LhBrAbEaECsCsSwQSwKxCBALADE3EIMMYmVgYGACAJ+b08TC
+ IH0dAAAAAElFTkSuQmCC
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFYSURBVDhPzZG9SwNBEMXnL1BOc4KoAcFoF4houpSBFIEU
- aSxC1CCkPVIkvYJWFtooWEQCfiLYCIqFlVidYCEo2IqFja1YOL633AbxjrvWgx+7M++92WNX5F99JyKl
- UxGf698fi9OM9xChI4S101GurO0Qq316XkjrH9RD6Lvd1sdyWb9aLWUNSgH+e6NhtNdazWihq+vCvA/h
- o9nUm3xe3+p1ZU2eKhXTuy8WTY/eyLvfgwD8l2pVL7NZvSsU9DqX067r6nE6rdToiX24XRh2YLzIZLTn
- OIaDVErZo5b46lswbcN8jlPPELawRy12wCYMwL9CMApq9EQOWYewAcMtwhbWUT16Q0NWYX5A2MJ6DUYS
- pYUGLMDoIfSMIVxZW1OcZj3j2EzPiqwsIjwnsox6CkyAMTA5L7JEjR7UM4CZ/jeA3TAYDRjBOgQGATUH
- uL/0VNBPfNVEww/s+bJaSKBvAQAAAABJRU5ErkJggg==
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFRSURBVDhPzY2vS0NhFIbPX6BM7wRRB4LTNpjo2uJgYbCw
+ YhhTh7A6FrauoMmgRcEwGfiTgUVQDCYxXcEgKFjFYLGKweP7Xs69l+F1xeILDx/nPO/hk/+VE5H8qYjL
+ 11ZB+jkvhxBHKGirpXw5mwrcR73+wwXpQHw1m/pQKOhno6GcQd5w36pVz72Uy56zszBtFPch3ms1vc5k
+ 9LVSUc7ksVj0dne5nLdj1856swcB3OdSSS9SKb3NZvUqndZ2PK7HiYTSsWP16OyisIPieTKpnVjM48Bx
+ lDs6q/2eLZS2UT7Dr10c+3BHZ7XobKIA3EscREHHjtV7sw6xgcINij6co3bs2lmYVYh7FHw4r6FIopyd
+ hVlAsQ7xhAJfzqb6Oj/jYHpWZGURhTmRZcxTYAKMgcl5kSU6djDPAN4EGQDDYNQYAUNgENDFQBz43gHc
+ /zUi3+z5slrGfejKAAAAAElFTkSuQmCC
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
- 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
+ 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
- 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
- RpkLgwRoAAAAAElFTkSuQmCC
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVDhPjZLPK8NxGMe/R3LbgfPKDivloCQ5UThQshHl
+ sIsfi8W0pmxaufgD5Og2ByVFTCmXFSm5YAel2GqsWdjv33s872+ffT+0Wd71HD6f3u9Xz+f5PEpVkxsb
+ oxMez1yjMns87cJeK7PLNZ8ulegzn6doJkPhVIpCySQFEwm1jvx+gmfc7TaIyG+Nra8vJAsFinHwLR6n
+ 51iMHiMRCry+0kM4THs+H0Hw1YWMOp3WFAM+0um6kG2vVyvD0JBbxKRGHI7FTLFIX9z+XxB0gufAK2JS
+ g3b7UpZnkMhmG0IAgFfEpAZsNluOAalcriEEg4VXxKT6rdblQrlMGZ4DIIHgGZ3fONW6CuxoEPwOvCIm
+ 1Tc7ay8yIMdzAOTkcoVC74GaTqLcHbwiJtVrsayWKhXK8zMAuXs6poOLBbVuHw81CPYEXhGT6p6ZcZQZ
+ gC6qEHTyErkj76lF6yTBd/CKmFTX1JSzwotSYgAgJ/5N2j2cVuv6fl8bLJYNXhGT6jSZ1rBpFe6iCvnZ
+ SfV30nyGV8SkDMPDLgCgRhAsG7wipqqZq7Wtp2dT5FXhOZgJBgsQvhh7kuczvMiIrKLj6mjS61dbjMat
+ /xS8yCiKovsG+chGmSDXNhUAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAG9SURBVDhPjZLNSwJRFMVdFu1a1DrIhRC0CCKiVUG5KIi0
- KGjRxkpKwpAJ1BgIpEWboH8gwqIoCiHaBv4L1UIQ+8ISkcpxZvz2ds/QRPLMenB4PDj3x73nXYvl68xs
- bk5My/JiMzlludv0C7czEFjSKhV6LxYpreuUVFV6yuXoUVEMRaJRgmcqGLQ2hEz6/cu5UokyXPiazdJ9
- JkOxVIruXl7oNpmkw6srwoGvIWRCktwqA940rSFkLxwmU9axsaDQxbjPt6KXy/TB7f8GQScYB14BMOr1
- ruY5AyWfbwoBAF4BMOLxeAoMUAuFphAEC68AGHa710rVKumcAyCXF2mSXHFDkbPUd7D4HXgFwJDL5S0z
- oMA5mJDI6SvthhJ1maR5RHgFwODCwnqlVqMij2FCzo+faUeO1WWCPYFXAPTPz/uqDEAXJuT08IFC/pu6
- TBQeEV4B0Dc7K9V4USoMAOTkIEFz9mtDR/vxbwiWDV4B0OtwbGDTatyFCfk5jvk7GmcErwCw2u0BY1f/
- gGDZ4P0JaOVHR+fAwJYJMCAsZIJgMRK+GHtS5De8qGGh1tLO6mnp6lpvs9m2/yN4UYPaT6iBRnEAJMyK
- AAAAAElFTkSuQmCC
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHHSURBVDhPjZJLS0JRFIXvsGjWoMZCDoSgQRASjQrKQUH0
+ wsCBEyspCUUM1LgQRIMmQX8gIqMwCiGaBv2FahBETywR6aHX92O31+VcT1JJC/bgwFofe++zFUMzq6tj
+ 06o616ymVLVL2H9qKhSaz1Yq9F4sUjKXo7im0VMmQ4/ptF6xiwuCZyIcNotIo8aDwYVMqUQpDr5+ftJ9
+ KkU3iQRdv7zQVTxOkbMzguD7FTIWCLg1Brxls79Ctvf26mUeGQmLmNSo37+YK5fpg9v/C4JOMA68IiY1
+ 7PUu5XkH6Xy+KQQAeEVMasjj8RQYoBUKTSFYLLwiJjXodi+XqlXK8R4AOT1JUsB1q1fsKFGH4HfgFTGp
+ AZfLW2ZAgfdgQGLRV9pav2voJMndwStiUv1Op69Sq1GRxzAgxwfPtKneNIyDO4FXxKT6HA5/lQHowoBE
+ Iw+0Hrxs2EmawfCKmFSv3R6o8aFUGADI4e4dzdrO9drfua1DcGzwiphUz+TkCi6txl0YkO/jGL+T5Te8
+ IiZlttlCAEDNIDg2eEVMVytXR6fVuibyujAOdoLFAoQvxp0U+Q0vMiKrtHN1t5hMvjaLZeM/BS8yiqK0
+ fwGogUZxweK26QAAAABJRU5ErkJggg==
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGzSURBVDhPjZK9S4JRFMYdi7aGmoUchKAhCImmgnRIiuzD
- QcjFSkpCEQM/EFyCxlqamuwPaHFoCRyarKmCyIoCTUQ0X/X1+z2dR3olumZdeLhceM6Pc557NJqvsxYK
- mVfD4c1+WgmHx1S/cK8EAluVVosK9TplZZlS5TK9lUr0KkkdncfjBM9yMKjrCVny+7dLjQbluPC9WKSX
- XI4eMhm6S6fpNpWis1iMcODrCTH7fM4yA/KVSk/IcTRKqnRGY1DoYsHr3ZGbTfrg9n+DoBOMA68AmHe7
- d6ucgVSt9oUAAK8AmHO5XDUGlGu1vhAEC68AmHU69xrtNsmcAyCOkyRdPxeEcfA78AqAGYfD3WRAjXMA
- ZOPovgP4mUmWR4RXAEzb7Z6WolCdxwBk/fCGEk95YRzsCbwCYMpm87YZgC4AWYxcUeIxJ2QicXfwCoBJ
- q9Wn8KK0GACIKXDZ1elFstsJlg1eATBhsexj0xTuQoWo46jB4osrPB68AkBnMgU6u/oHBMsG73fAID9G
- Rg2GiAroQFjIBMFiJHwx9qTOb3hRw0KtZpg1PqDVeob0+oP/CF7UoPYTXb5IoCRPHYoAAAAASUVORK5C
- YII=
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAG/SURBVDhPjZK9S0JhFMbvWLQ11CzkIAQNQUQ0FZRDUaR9
+ DEItVlIShhh4FcElaKylqcn+gJaGlqChqZoqiL4osCIk66rXe/06nUfe60tp0gNneOF5fpxz3qNYmolG
+ x6djscVm5Y7FuoS9Xm5VXcqVSpQ2TXrXdUpms/ScydCTplXr4OSE4JmKROwi8lOT4fByplCgFAdfv77o
+ MZWim7c3unp5octkkvYPDwmCryFkPBTyZRnwkcs1hOwkErWyj45GRExqLBhc0YtF+uT2/4KgE4wDr4hJ
+ jQQCq3negZbPN4UAAK+ISQ37/X6DAVnDaArBYuEVMakhn2+tUC6TznsAxLt7R+cP6ToIfgdeEZMa9HoD
+ RQYYvAdA5revq4Dfnbxzd/CKmNTAwsJ6qVIhk8cAZHbrgs7uP+rGwZ3AK2JSfR5PsMwAdAHIRPyUzm5T
+ dTvRuDt4RUyqd24uVOFDKTEAEKd6XKu9o7saBMcGr4hJ9bhcG7i0CndhQaxxrMUCkuM3vCImZXc6VQCg
+ ZhAcG7wiVlUrV0dnf39c5KvCONgJFgsQvhh3YvIbXmREVmnn6m6x2dbbHI7N/xS8yCiK0v4NXb5IoFC4
+ YucAAAAASUVORK5CYII=
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAG1SURBVDhPjZK9S4JRFMYdi7aGmoUchKAhCImmgnRIirRy
- EHKxkpJQxMAPhJZo7l+oxqAhtwiEWgIjKiEIIuE1kZfM1+/P03mk9yW4Zl14uFx4zo9znnt0uu+zGo1a
- V2KxjX6yx2Jjql+47eHwZrnVony9TrlKhaRSidLFIr0pSlfniQTBsxyJGHpClkKhrWKjQTIXvhcK9CrL
- 9JzN0lMmQ4+SRCfxOOHA1xNiDQY9JQZ8lMs9IUfHx6TKYDZHhC4WAoHtSrNJn9z+bxB0gnHgFQDzPt9O
- lTNQqtW+EADgFQBzXq+3xoBSrdYXgmDhFQCzHs9uo92mCucAyK37RdPDYVoLFr8DrwCYcbt9TQbUOAdA
- rtdTlLnPC+PkeER4BcC0y+VvdTpU5zEAuVxLakqdprVgsSfwCoAppzPQZgC6AORi8YakO1nIROHu4BUA
- kw5HsMOL0mIAIGeWK5KSspaJ+jtYNngFwITNtodN63AXKkQdRw0WkDKPB68AMFgs4e6u/gHBssH7EzDI
- j5FRk2lfBXQhLGSCYDESvhh7Uuc3vKhhoVY3zBof0Ov9Q0bjwX8EL2pQ+wUVkUjMVKxfkgAAAABJRU5E
- rkJggg==
+ YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAG9SURBVDhPjZK9S4JRFMbfsWhzqDnIQQgagpBoKiiHosg+
+ HIRcrKQkFDFIRWiJ5v6FagwacotAqCUoohKCIBJeC3nJ/P72dB65vrewpAfOcOF5fpxz7lFaWgqFZhbD
+ 4dVOtRAODwh7uxYCgbV8rUapcpmShQKpuRzFs1l6zWSadRqNEjzzwaBRRH5qbmdnPVupkMbBt3SaXjSN
+ nt7f6TGRoAdVpaNIhCD4foXM+P2uHAM+8vlfIQeHh3oZp6aCIiY17fNtFKpV+uT2/4KgE4wDr4hJTXo8
+ m0XeQaZY7AgBAF4Rk5pwu90lBuRKpY4QLBZeEZMad7m2KvU6FXgPgFw7n/W634/rEPwOvCImNeZ0eqoM
+ KPEeALlciVHiLtXWSZK7g1fEpEYdDm+t0aAyjwHI+fKNXrHjuA7BncArYlIjdruvzgB0AcjZ7BWpt1rb
+ TjLcHbwiJjVss/kbfCg1BgByYrkg9UbTd9KC4NjgFTGpIat1G5fW4C5akNY43yF5fsMrYlJGiyUAANQJ
+ gmODV8Sa6ubq7TObd0W+KYyDnWCxAOGLcSdlfsOLjMgqBq7Brv5+b4/JtPefghcZRVEMXxWRSMxfobYl
+ AAAAAElFTkSuQmCC
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
- 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
+ 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
- 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
+ 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
- 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
+ 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
- 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
+ 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
- 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
+ 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
- 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
+ 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
- YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJQSURBVDhPhVJdaJJRGFbRLhSnOGQU3dQggroTYjoQTQ3X
- KMX/zc/l0qWJ/z9JZtgocdBdEWNdBEFBF9vNGI3ASpK6iEV2EQxGQfRD0W0X0S6ezvvht32tUR88nPe8
- z/M+5/3ecyQS0SeVSmcZFmkV5yn+F7elZaKlarUKtVrd3mlAOeJIs5Pj94y4qtfrX9ntdtDKcFsQUizm
- SPuXCUsuN5tNlEol5HIl6HS6nhjEVasXkM3mqYvl3QxWGo0GIhEOXm8YBoMB+XyeB8XExWIxeDwBMljZ
- zWC1Xq9jcnICJpOJLxLD4XAgGo3C5fKSweofBixxXavVrtP/C0UulwupVIoHxZS32238SlqqEU+/XavV
- 2L9n4fP5YDSaoNFoNsTw+/3IZDKIx+MMSepi+6bYplMulzE1xbFT7Bgf90OlUr1nVzdCoLhSqbAZnMXY
- mBNOp5sMOuIOuoVCAeHwBKxWKxN4oFQqPwgCiovFIpvBGdguPYBtpkUGXbHBi2w2i1AoALPZDIfDBblc
- /kkQUJzL5fgbMl3rMDzD0GhoQ2zwMp1OY3o6ys8gGOSgUCi+kOBIs7ewN7f4a3T2MYxX2jh2+RHmPwMH
- k0s/jjZfc8Ir7FksFthsx7dugZ36jcjhi921Gx+B1Fsg8mYbpXWAOKGLd4lEAhzHsStzs4cUgkwm+06k
- 7vTcwmDg5ubh8/dxKHkPwzN3MfIc0AVv/Rx0t/gO9jM8ZPgqBhvSE7Y3EPoxz6tOzm0SFAcsT/u1kgE6
- iGGIYd//sOfU/B3Fida5fs3Ab3OLJ81GwikSAAAAAElFTkSuQmCC
+ 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
347, 17
+
+
+ AAEAAAD/////AQAAAAAAAAAMAgAAAKYBU3lzdGVtLldpbmRvd3MuRm9ybXMsIFZlcnNpb249Mi4wLjAu
+ MCwgQ3VsdHVyZT1uZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIG1zY29y
+ bGliLCBWZXJzaW9uPTIuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVj
+ NTYxOTM0ZTA4OQwDAAAAV1N5c3RlbS5XaW5kb3dzLkZvcm1zLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1
+ cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQUBAAAAQFN5c3RlbS5Db2xs
+ ZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLldpbmRvd3MuRm9ybXMuVHJlZU5vZGUDAAAABl9p
+ dGVtcwVfc2l6ZQhfdmVyc2lvbgQAAB9TeXN0ZW0uV2luZG93cy5Gb3Jtcy5UcmVlTm9kZVtdAwAAAAgI
+ AgAAAAkEAAAAAAAAAAEAAAAMBQAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
+ LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkHBAAAAAABAAAA
+ AAAAAAQdU3lzdGVtLldpbmRvd3MuRm9ybXMuVHJlZU5vZGUFAAAACw==
+
+
AAABAAQAMDAAAAEAIACoJQAARgAAACAgAAABACAAqBAAAO4lAAAYGAAAAQAgAIgJAACWNgAAEBAAAAEA
diff --git a/Windows/WatermarkTextBox.cs b/Windows/WatermarkTextBox.cs
new file mode 100644
index 0000000..d2d058c
--- /dev/null
+++ b/Windows/WatermarkTextBox.cs
@@ -0,0 +1,63 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Text;
+using System.Windows.Forms;
+
+namespace NBTExplorer.Windows
+{
+ class WatermarkTextBox : TextBox
+ {
+ public WatermarkTextBox ()
+ {
+ WatermarkText = "Type here";
+ WatermarkActive = true;
+
+ this.Text = WatermarkText;
+ this.ForeColor = Color.Gray;
+
+ GotFocus += (source, e) => {
+ RemoveWatermak();
+ };
+
+ LostFocus += (source, e) => {
+ ApplyWatermark();
+ };
+ }
+
+ public string WatermarkText { get; set; }
+
+ public bool WatermarkActive { get; set; }
+
+ public void RemoveWatermak ()
+ {
+ if (this.WatermarkActive) {
+ this.WatermarkActive = false;
+ this.Text = "";
+ this.ForeColor = Color.Black;
+ }
+ }
+
+ public void ApplyWatermark ()
+ {
+ if (!this.WatermarkActive && string.IsNullOrEmpty(this.Text) || ForeColor == Color.Gray) {
+ this.WatermarkActive = true;
+ this.Text = WatermarkText;
+ this.ForeColor = Color.Gray;
+ }
+ }
+
+ public void ApplyWatermark (string newText)
+ {
+ Text = "";
+ WatermarkText = newText;
+ ApplyWatermark();
+ }
+
+ public void ApplyText (string text)
+ {
+ RemoveWatermak();
+ Text = text;
+ }
+ }
+}