diff --git a/Forwarder/Forwarder/App.config b/Forwarder/Forwarder/App.config index d1428ad..ecdcf8a 100644 --- a/Forwarder/Forwarder/App.config +++ b/Forwarder/Forwarder/App.config @@ -1,6 +1,6 @@ - + diff --git a/Forwarder/Forwarder/Extension.cs b/Forwarder/Forwarder/Extension.cs index 2f3b2bb..b6b8b62 100644 --- a/Forwarder/Forwarder/Extension.cs +++ b/Forwarder/Forwarder/Extension.cs @@ -40,7 +40,7 @@ public static string FBytes(int bytes) { if (bytes < 1024) - return bytes.ToString()+"b"; + return bytes.ToString() + "b"; string tail = null; double b = bytes; if (b > 1024) @@ -92,19 +92,38 @@ return result.ToString(); } - public static string BinToTextSample(byte[] data) + public static string BinToTextSample(this byte[] data, int max = MAX_DIALOG_PREVIEW) { if (data == null || data.Length == 0) return ""; - string result = Encoding.ASCII.GetString(data, 0, Math.Min(MAX_DIALOG_PREVIEW, data.Length)); + string result = Encoding.ASCII.GetString(data, 0, Math.Min(max, data.Length)); StringBuilder sb = new StringBuilder(result.Trim()); for (int i = 0; i < sb.Length; i++) if (Char.IsControl(sb[i]) && sb[i] != '\n' && sb[i] != '\r') sb[i] = '□'; result = sb.ToString(); - if (data.Length > MAX_DIALOG_PREVIEW) + if (data.Length > max) result += "\r\n..."; return result; } + + public static string ToComactString(this DateTime dt) + { + StringBuilder sb = new StringBuilder(dt.Year.ToString(), 64); + sb.Append(dt.Month.Lz()); + sb.Append(dt.Day.Lz()); + sb.Append(dt.Hour.Lz()); + sb.Append(dt.Minute.Lz()); + sb.Append(dt.Second.Lz()); + return sb.ToString(); + } + + public static string Lz(this int i, int size = 2) + { + string result = i.ToString(); + while (result.Length < size) + result = "0" + result; + return result; + } } } diff --git a/Forwarder/Forwarder/FData.Designer.cs b/Forwarder/Forwarder/FData.Designer.cs new file mode 100644 index 0000000..d4fdb78 --- /dev/null +++ b/Forwarder/Forwarder/FData.Designer.cs @@ -0,0 +1,83 @@ +namespace Forwarder +{ + partial class FData + { + /// + /// 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.tbData = new System.Windows.Forms.TextBox(); + this.btSaveAll = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // tbData + // + this.tbData.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.tbData.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64))))); + this.tbData.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.tbData.Font = new System.Drawing.Font("Lucida Console", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.tbData.ForeColor = System.Drawing.Color.White; + this.tbData.Location = new System.Drawing.Point(12, 12); + this.tbData.Multiline = true; + this.tbData.Name = "tbData"; + this.tbData.ReadOnly = true; + this.tbData.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.tbData.Size = new System.Drawing.Size(776, 385); + this.tbData.TabIndex = 0; + // + // btSaveAll + // + this.btSaveAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btSaveAll.Location = new System.Drawing.Point(680, 403); + this.btSaveAll.Name = "btSaveAll"; + this.btSaveAll.Size = new System.Drawing.Size(108, 34); + this.btSaveAll.TabIndex = 5; + this.btSaveAll.Text = "Save"; + this.btSaveAll.UseVisualStyleBackColor = true; + this.btSaveAll.Click += new System.EventHandler(this.btSaveAll_Click); + // + // FData + // + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.btSaveAll); + this.Controls.Add(this.tbData); + this.Name = "FData"; + this.ShowIcon = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox tbData; + private System.Windows.Forms.Button btSaveAll; + } +} \ No newline at end of file diff --git a/Forwarder/Forwarder/FData.cs b/Forwarder/Forwarder/FData.cs new file mode 100644 index 0000000..fe6d6e0 --- /dev/null +++ b/Forwarder/Forwarder/FData.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Forwarder +{ + public partial class FData : Form + { + private Sentence s; + + private FData() + { + InitializeComponent(); + } + + public static void Execute(string title, Sentence s) + { + var f = new FData(); + f.Text = title; + f.tbData.Text = s.Data.BinToTextSample(s.Data.Length); + f.tbData.SelectionLength = 0; + f.s = s; + f.Show(); + f.tbData.SelectionLength = 0; + } + + private void btSaveAll_Click(object sender, EventArgs e) + { + SaveFileDialog sfd = new SaveFileDialog(); + sfd.Filter = "*.bin|Transaction binary"; + sfd.DefaultExt = ".bin"; + sfd.FileName = "Data.bin"; + if (sfd.ShowDialog() == DialogResult.OK) + { + File.WriteAllBytes(sfd.FileName, s.Data); + } + } + } +} diff --git a/Forwarder/Forwarder/FData.resx b/Forwarder/Forwarder/FData.resx new file mode 100644 index 0000000..1af7de1 --- /dev/null +++ b/Forwarder/Forwarder/FData.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Forwarder/Forwarder/FTransmission.Designer.cs b/Forwarder/Forwarder/FTransmission.Designer.cs index e87a61e..67d67cb 100644 --- a/Forwarder/Forwarder/FTransmission.Designer.cs +++ b/Forwarder/Forwarder/FTransmission.Designer.cs @@ -34,14 +34,16 @@ this.lbCtt = new System.Windows.Forms.Label(); this.pTimeline = new DBPanel(); this.tUpdate = new System.Windows.Forms.Timer(this.components); + this.btSaveAll = new System.Windows.Forms.Button(); this.SuspendLayout(); // // lbInfo // this.lbInfo.AutoSize = true; - this.lbInfo.Location = new System.Drawing.Point(12, 9); + this.lbInfo.Location = new System.Drawing.Point(16, 11); + this.lbInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbInfo.Name = "lbInfo"; - this.lbInfo.Size = new System.Drawing.Size(112, 13); + this.lbInfo.Size = new System.Drawing.Size(142, 16); this.lbInfo.TabIndex = 0; this.lbInfo.Text = "Transmission between"; // @@ -49,9 +51,10 @@ // this.lbAt.AutoSize = true; this.lbAt.ForeColor = System.Drawing.SystemColors.GrayText; - this.lbAt.Location = new System.Drawing.Point(19, 22); + this.lbAt.Location = new System.Drawing.Point(25, 27); + this.lbAt.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbAt.Name = "lbAt"; - this.lbAt.Size = new System.Drawing.Size(16, 13); + this.lbAt.Size = new System.Drawing.Size(18, 16); this.lbAt.TabIndex = 1; this.lbAt.Text = "at"; // @@ -59,9 +62,10 @@ // this.lbCtt.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.lbCtt.Location = new System.Drawing.Point(12, 35); + this.lbCtt.Location = new System.Drawing.Point(16, 43); + this.lbCtt.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbCtt.Name = "lbCtt"; - this.lbCtt.Size = new System.Drawing.Size(360, 13); + this.lbCtt.Size = new System.Drawing.Size(1090, 16); this.lbCtt.TabIndex = 2; this.lbCtt.TextAlign = System.Drawing.ContentAlignment.TopRight; // @@ -73,9 +77,10 @@ this.pTimeline.AutoScroll = true; this.pTimeline.BackColor = System.Drawing.SystemColors.Window; this.pTimeline.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pTimeline.Location = new System.Drawing.Point(12, 51); + this.pTimeline.Location = new System.Drawing.Point(16, 63); + this.pTimeline.Margin = new System.Windows.Forms.Padding(4); this.pTimeline.Name = "pTimeline"; - this.pTimeline.Size = new System.Drawing.Size(360, 355); + this.pTimeline.Size = new System.Drawing.Size(1089, 609); this.pTimeline.TabIndex = 3; this.pTimeline.Resize += new System.EventHandler(this.pTimeline_Resize); // @@ -84,22 +89,32 @@ this.tUpdate.Interval = 1000; this.tUpdate.Tick += new System.EventHandler(this.tUpdate_Tick); // + // btSaveAll + // + this.btSaveAll.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btSaveAll.Location = new System.Drawing.Point(927, 679); + this.btSaveAll.Name = "btSaveAll"; + this.btSaveAll.Size = new System.Drawing.Size(178, 34); + this.btSaveAll.TabIndex = 4; + this.btSaveAll.Text = "Save full transmission"; + this.btSaveAll.UseVisualStyleBackColor = true; + this.btSaveAll.Click += new System.EventHandler(this.btSaveAll_Click); + // // FTransmission // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(384, 418); + this.ClientSize = new System.Drawing.Size(1122, 725); + this.Controls.Add(this.btSaveAll); this.Controls.Add(this.pTimeline); this.Controls.Add(this.lbCtt); this.Controls.Add(this.lbAt); this.Controls.Add(this.lbInfo); - this.MaximizeBox = false; - this.MinimizeBox = false; - this.MinimumSize = new System.Drawing.Size(300, 200); + this.Margin = new System.Windows.Forms.Padding(4); + this.MinimumSize = new System.Drawing.Size(394, 235); this.Name = "FTransmission"; this.ShowIcon = false; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Transmission"; this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FTransmission_FormClosed); this.ResumeLayout(false); @@ -114,5 +129,6 @@ private System.Windows.Forms.Label lbCtt; private DBPanel pTimeline; private System.Windows.Forms.Timer tUpdate; + private System.Windows.Forms.Button btSaveAll; } } \ No newline at end of file diff --git a/Forwarder/Forwarder/FTransmission.cs b/Forwarder/Forwarder/FTransmission.cs index d71a163..ad7e2c3 100644 --- a/Forwarder/Forwarder/FTransmission.cs +++ b/Forwarder/Forwarder/FTransmission.cs @@ -4,6 +4,7 @@ using System.Data; using System.Drawing; using System.Linq; +using System.Net.Mail; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; @@ -13,10 +14,10 @@ public partial class FTransmission : Form { private static Dictionary fmap = new Dictionary(); - private static Font fontMonospace = new Font("Lucida Console", 7.5f); - private static Font fontSmall = new Font(FontFamily.GenericSansSerif, 6f); + private static Font fontMonospace = new Font("Lucida Console", 8f); + private static Font fontSmall = new Font(FontFamily.GenericSansSerif, 7f); - private Transmission trans; + private readonly Transmission trans; private FTransmission(Transmission trans) { @@ -28,10 +29,16 @@ pTimeline.HorizontalScroll.Visible = false; pTimeline.HorizontalScroll.Maximum = 0; pTimeline.AutoScroll = true; + Text += " " + trans.Id; } public static void Execute(Transmission trans) { + if (trans == null) + { + MessageBox.Show("Can't not load transmission, try again."); + return; + } FTransmission f; if (!fmap.TryGetValue(trans, out f)) fmap[trans] = f = new FTransmission(trans); @@ -54,6 +61,8 @@ private void LoadTransmission() { + if (trans == null) + return; lbInfo.Text = "Transmission between " + trans.SourceIP + " and " + trans.DestinationIP; lbAt.Text = trans.Date.ToLongDateString() + " " + trans.Date.ToLongTimeString(); lbCtt.Text = "Uploaded: " + Utils.FBytes(trans.Uploaded) + " Downloaded: " + Utils.FBytes(trans.Downloaded); @@ -66,18 +75,18 @@ DateTime tlast = tstart; foreach (Sentence s in trans.Conversation) { - if ((s.Time - tlast).TotalSeconds > 30) + if ((s.Time - tlast).TotalSeconds > 5) { Label lbx = new Label(); lbx.Parent = pTimeline; lbx.Font = fontSmall; lbx.Text = "On hold by " + Utils.FTime(s.Time - tlast); lbx.TextAlign = ContentAlignment.MiddleCenter; - lbx.BackColor = Color.LightYellow; + lbx.BackColor = Color.LightGray; lbx.Top = y; lbx.Left = 5; lbx.Width = pTimeline.ClientSize.Width - 10; - y += lbx.Height + 4; + y += lbx.Height + 15; } Label lbs = new Label(); lbs.AutoSize = true; @@ -88,20 +97,23 @@ lbs.Left = s.FromMe ? 5 : pTimeline.ClientSize.Width - 5 - w2; lbs.BackColor = s.FromMe ? Color.LightGreen : Color.LightBlue; lbs.TextAlign = s.FromMe ? ContentAlignment.TopLeft : ContentAlignment.TopRight; - lbs.Text = Utils.BinToTextSample(s.Data); + lbs.Text = s.Data.BinToTextSample(1024); lbs.Font = fontMonospace; lbs.Parent = pTimeline; + lbs.Click += Lbs_Click; + lbs.Cursor = Cursors.Hand; + lbs.Tag = s; Label lbt = new Label(); lbt.Parent = pTimeline; lbt.Font = fontSmall; - lbt.Text = Utils.FTime(s.Time - tstart); + lbt.Text = $"At: {Utils.FTime(s.Time - tstart)}"; lbt.AutoSize = true; lbt.Top = lbs.Top - 2; lbt.Left = s.FromMe ? w2 + 10 : lbs.Left - lbt.Width - 5; Label lbd = new Label(); lbd.Parent = pTimeline; lbd.Font = fontSmall; - lbd.Text = Utils.FTime(s.Time - tlast); + lbd.Text = $"Take: {Utils.FTime(s.Time - tlast)}"; lbd.ForeColor = SystemColors.GrayText; lbd.AutoSize = true; lbd.Top = lbt.Top + lbt.Height - 1; @@ -113,13 +125,20 @@ lbz.AutoSize = true; lbz.Top = lbd.Top + lbd.Height - 1; lbz.Left = s.FromMe ? w2 + 10 : lbs.Left - lbz.Width - 5; - y += lbs.Height + 4; + y += lbs.Height + 15; tlast = s.Time; } pTimeline.ResumeLayout(); pTimeline.VerticalScroll.Value = cscroll; } + private void Lbs_Click(object sender, EventArgs e) + { + if (!(sender is Label lb)) return; + if (!(lb.Tag is Sentence s)) return; + FData.Execute(Utils.FTime(s.Time - trans.Date),s); + } + private void FTransmission_FormClosed(object sender, FormClosedEventArgs e) { fmap.Remove(trans); @@ -136,5 +155,17 @@ tUpdate.Enabled = false; LoadTransmission(); } + + private void btSaveAll_Click(object sender, EventArgs e) + { + SaveFileDialog sfd = new SaveFileDialog(); + sfd.Filter = "*.zip|Zipped Transmission file"; + sfd.DefaultExt = ".zip"; + sfd.FileName = $"Transmission {trans.Id}.zip"; + if (sfd.ShowDialog() == DialogResult.OK) + { + trans.SaveToFile(sfd.FileName); + } + } } } diff --git a/Forwarder/Forwarder/Forwarder.cs b/Forwarder/Forwarder/Forwarder.cs index d496396..77a4cf5 100644 --- a/Forwarder/Forwarder/Forwarder.cs +++ b/Forwarder/Forwarder/Forwarder.cs @@ -1,5 +1,7 @@ using System; using System.Collections.Generic; +using System.IO; +using System.IO.Compression; using System.Linq; using System.Net; using System.Net.Sockets; @@ -183,7 +185,7 @@ fw = forwarder; scksrc = source; sckdst = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); - trans = new Transmission(scksrc.RemoteEndPoint as IPEndPoint, sckdst.RemoteEndPoint as IPEndPoint); + trans = new Transmission(scksrc.RemoteEndPoint as IPEndPoint, remote); forwarder.Message(ForwarderMessage.FromNewTransmission(trans)); sckdst.Connect(remote); } @@ -381,6 +383,55 @@ conversation.Add(new Sentence(b, false)); } + public void SaveToFile(string path) + { + using (FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write)) + using (ZipArchive za = new ZipArchive(fs, ZipArchiveMode.Create)) + { + GenerateIndex(za.CreateEntry("Index.ini").Open()); + for (int i = 0; i < conversation.Count; i++) + GeneratePart(za.CreateEntry($"Part-{i + 1}.bin").Open(), conversation[i]); + } + } + + private void GenerateIndex(Stream s) + { + using (s) + using (StreamWriter sw = new StreamWriter(s, Encoding.UTF8)) + { + sw.WriteLine("; Transmission index file"); + sw.WriteLine(); + sw.WriteLine($"From={SourceIP}"); + sw.WriteLine($"To={DestinationIP}"); + sw.WriteLine($"Time={date.ToUniversalTime().ToString("O")}"); + sw.WriteLine($"TotalSent={uploaded}"); + sw.WriteLine($"TotalRecv={downloaded}"); + for (int i = 0; i < conversation.Count; i++) + { + sw.WriteLine(); + sw.WriteLine($"[Transfer({i + 1})]"); + Sentence sn = conversation[i]; + sw.WriteLine($"Time={sn.Time.ToUniversalTime().ToString("O")}"); + sw.WriteLine("Initiator=" + (sn.FromMe ? "Local" : "Remote")); + sw.WriteLine($"Size={sn.Data.Length}"); + sw.WriteLine($"File=Part-{i + 1}.bin"); + } + } + } + + private void GeneratePart(Stream s, Sentence st) + { + using (s) + { + s.Write(st.Data, 0, st.Data.Length); + } + } + + private string GetId() + { + return $"{src.Address}({src.Port})-{dst.Address}({dst.Port})@{date.ToComactString()}"; + } + public IPEndPoint SourceIP => src; public IPEndPoint DestinationIP => dst; public object Tag { get; set; } @@ -388,22 +439,19 @@ public int Downloaded => downloaded; public DateTime Date => date; public Sentence[] Conversation => conversation.ToArray(); + public string Id => GetId(); } public class Sentence { - private DateTime time= DateTime.Now; - private byte[] data; - private bool me; - - public Sentence(byte[] data,bool me) + public Sentence(byte[] data, bool me) { - this.me = me; - this.data = data; + FromMe = me; + Data = data; } - public bool FromMe => me; - public byte[] Data => data; - public DateTime Time => time; + public bool FromMe { get; } + public byte[] Data { get; } + public DateTime Time { get; } = DateTime.Now; } } diff --git a/Forwarder/Forwarder/Forwarder.csproj b/Forwarder/Forwarder/Forwarder.csproj index 3781de2..a95a5aa 100644 --- a/Forwarder/Forwarder/Forwarder.csproj +++ b/Forwarder/Forwarder/Forwarder.csproj @@ -8,7 +8,7 @@ WinExe Forwarder Forwarder - v4.5 + v4.7.2 512 true @@ -38,6 +38,8 @@ + + @@ -62,6 +64,12 @@ FAbout.cs + + Form + + + FData.cs + Form @@ -86,6 +94,9 @@ FAbout.cs + + FData.cs + Form1.cs diff --git a/Forwarder/Forwarder/ForwarderControl.Designer.cs b/Forwarder/Forwarder/ForwarderControl.Designer.cs index b94c698..801a2bc 100644 --- a/Forwarder/Forwarder/ForwarderControl.Designer.cs +++ b/Forwarder/Forwarder/ForwarderControl.Designer.cs @@ -66,8 +66,9 @@ this.pConf.Controls.Add(this.lbSrc); this.pConf.Dock = System.Windows.Forms.DockStyle.Top; this.pConf.Location = new System.Drawing.Point(0, 0); + this.pConf.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.pConf.Name = "pConf"; - this.pConf.Size = new System.Drawing.Size(424, 80); + this.pConf.Size = new System.Drawing.Size(565, 98); this.pConf.TabIndex = 0; // // rbFollow @@ -75,9 +76,10 @@ this.rbFollow.Appearance = System.Windows.Forms.Appearance.Button; this.rbFollow.Checked = true; this.rbFollow.Image = global::Forwarder.Properties.Resources.list_follow; - this.rbFollow.Location = new System.Drawing.Point(28, 52); + this.rbFollow.Location = new System.Drawing.Point(37, 64); + this.rbFollow.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.rbFollow.Name = "rbFollow"; - this.rbFollow.Size = new System.Drawing.Size(25, 25); + this.rbFollow.Size = new System.Drawing.Size(33, 31); this.rbFollow.TabIndex = 21; this.rbFollow.TabStop = true; this.toolTip1.SetToolTip(this.rbFollow, "Follow events"); @@ -86,9 +88,10 @@ // lbInfo // this.lbInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); - this.lbInfo.Location = new System.Drawing.Point(274, 59); + this.lbInfo.Location = new System.Drawing.Point(365, 73); + this.lbInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbInfo.Name = "lbInfo"; - this.lbInfo.Size = new System.Drawing.Size(147, 16); + this.lbInfo.Size = new System.Drawing.Size(196, 20); this.lbInfo.TabIndex = 19; this.lbInfo.TextAlign = System.Drawing.ContentAlignment.TopRight; // @@ -96,9 +99,10 @@ // this.btClear.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.btClear.Image = global::Forwarder.Properties.Resources.list_clear; - this.btClear.Location = new System.Drawing.Point(1, 52); + this.btClear.Location = new System.Drawing.Point(1, 64); + this.btClear.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btClear.Name = "btClear"; - this.btClear.Size = new System.Drawing.Size(25, 25); + this.btClear.Size = new System.Drawing.Size(33, 31); this.btClear.TabIndex = 18; this.toolTip1.SetToolTip(this.btClear, "Clear event list"); this.btClear.UseVisualStyleBackColor = true; @@ -107,9 +111,10 @@ // btStart // this.btStart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btStart.Location = new System.Drawing.Point(360, 25); + this.btStart.Location = new System.Drawing.Point(480, 31); + this.btStart.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btStart.Name = "btStart"; - this.btStart.Size = new System.Drawing.Size(61, 23); + this.btStart.Size = new System.Drawing.Size(81, 28); this.btStart.TabIndex = 17; this.btStart.Text = "Start"; this.btStart.UseVisualStyleBackColor = true; @@ -117,9 +122,10 @@ // // tbDestPort // - this.tbDestPort.Location = new System.Drawing.Point(274, 27); + this.tbDestPort.Location = new System.Drawing.Point(365, 33); + this.tbDestPort.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.tbDestPort.Name = "tbDestPort"; - this.tbDestPort.Size = new System.Drawing.Size(41, 20); + this.tbDestPort.Size = new System.Drawing.Size(53, 22); this.tbDestPort.TabIndex = 16; this.tbDestPort.Text = "8088"; this.tbDestPort.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; @@ -128,35 +134,39 @@ // lbDestPort // this.lbDestPort.AutoSize = true; - this.lbDestPort.Location = new System.Drawing.Point(243, 31); + this.lbDestPort.Location = new System.Drawing.Point(324, 38); + this.lbDestPort.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbDestPort.Name = "lbDestPort"; - this.lbDestPort.Size = new System.Drawing.Size(29, 13); + this.lbDestPort.Size = new System.Drawing.Size(34, 16); this.lbDestPort.TabIndex = 15; this.lbDestPort.Text = "Port:"; // // tbDestHost // - this.tbDestHost.Location = new System.Drawing.Point(76, 29); + this.tbDestHost.Location = new System.Drawing.Point(101, 36); + this.tbDestHost.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.tbDestHost.Name = "tbDestHost"; - this.tbDestHost.Size = new System.Drawing.Size(161, 20); + this.tbDestHost.Size = new System.Drawing.Size(213, 22); this.tbDestHost.TabIndex = 14; this.tbDestHost.TextChanged += new System.EventHandler(this.ConfChanged); // // lbDestHost // this.lbDestHost.AutoSize = true; - this.lbDestHost.Location = new System.Drawing.Point(7, 32); + this.lbDestHost.Location = new System.Drawing.Point(9, 39); + this.lbDestHost.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbDestHost.Name = "lbDestHost"; - this.lbDestHost.Size = new System.Drawing.Size(63, 13); + this.lbDestHost.Size = new System.Drawing.Size(77, 16); this.lbDestHost.TabIndex = 13; this.lbDestHost.Text = "Destination:"; // // cbLocal // this.cbLocal.AutoSize = true; - this.cbLocal.Location = new System.Drawing.Point(123, 6); + this.cbLocal.Location = new System.Drawing.Point(164, 7); + this.cbLocal.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.cbLocal.Name = "cbLocal"; - this.cbLocal.Size = new System.Drawing.Size(131, 17); + this.cbLocal.Size = new System.Drawing.Size(161, 20); this.cbLocal.TabIndex = 12; this.cbLocal.Text = "only local connections"; this.cbLocal.UseVisualStyleBackColor = true; @@ -164,9 +174,10 @@ // // tbSrcPort // - this.tbSrcPort.Location = new System.Drawing.Point(76, 3); + this.tbSrcPort.Location = new System.Drawing.Point(101, 4); + this.tbSrcPort.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.tbSrcPort.Name = "tbSrcPort"; - this.tbSrcPort.Size = new System.Drawing.Size(41, 20); + this.tbSrcPort.Size = new System.Drawing.Size(53, 22); this.tbSrcPort.TabIndex = 11; this.tbSrcPort.Text = "8088"; this.tbSrcPort.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; @@ -175,9 +186,10 @@ // lbSrc // this.lbSrc.AutoSize = true; - this.lbSrc.Location = new System.Drawing.Point(4, 6); + this.lbSrc.Location = new System.Drawing.Point(5, 7); + this.lbSrc.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.lbSrc.Name = "lbSrc"; - this.lbSrc.Size = new System.Drawing.Size(66, 13); + this.lbSrc.Size = new System.Drawing.Size(80, 16); this.lbSrc.TabIndex = 10; this.lbSrc.Text = "Source Port:"; // @@ -191,10 +203,11 @@ this.lvHistory.FullRowSelect = true; this.lvHistory.GridLines = true; this.lvHistory.HideSelection = false; - this.lvHistory.Location = new System.Drawing.Point(0, 80); + this.lvHistory.Location = new System.Drawing.Point(0, 98); + this.lvHistory.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.lvHistory.MultiSelect = false; this.lvHistory.Name = "lvHistory"; - this.lvHistory.Size = new System.Drawing.Size(424, 342); + this.lvHistory.Size = new System.Drawing.Size(565, 421); this.lvHistory.SmallImageList = this.ilMsg; this.lvHistory.TabIndex = 1; this.lvHistory.UseCompatibleStateImageBehavior = false; @@ -232,12 +245,13 @@ // // ForwarderControl // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.lvHistory); this.Controls.Add(this.pConf); + this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.Name = "ForwarderControl"; - this.Size = new System.Drawing.Size(424, 422); + this.Size = new System.Drawing.Size(565, 519); this.pConf.ResumeLayout(false); this.pConf.PerformLayout(); this.ResumeLayout(false); diff --git a/Forwarder/Forwarder/ForwarderControl.resx b/Forwarder/Forwarder/ForwarderControl.resx index 9cb1725..94051af 100644 --- a/Forwarder/Forwarder/ForwarderControl.resx +++ b/Forwarder/Forwarder/ForwarderControl.resx @@ -117,6 +117,9 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 98, 17 + 17, 17 @@ -124,125 +127,120 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADI - GgAAAk1TRnQBSQFMAgEBBgEAASgBAAEoAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA - AwABIAMAAQEBAAEgBgABICYAAwQBBQMMARADDAEQAwQBBhwAAyMBMwMjATMDIwEzxAADBAEFAxMBGgMk - ATUDIQExAw0BERwAATUBgQGsAf8BNAGAAasB/wE1AYEBrAH/wAADAwEEAxIBGAMmATkBKQF7AVMB8QEA - AY4BSQH/AxABFhwAATMBegGrAf8BZgGyAdQB/wEzAYABqwH/vAADAgEDAxABFQMkATUBMwFyAVMB7AEA - AccBhgH/AQABiwFGAf8DHAEnAxABFgMQARYDEAEWAxABFgMQARYDDAEQAwQBBQEzAXoBqgH/AWQBsAHT - Af8BMwF6AasB/7gAAwIBAwMPARQDIgEyAVIBYQFZAc8BAAHAAYAB/wEAAeUBpgH/AQABiAFDAf8DLgFI - AysBQwMrAUMDKwFDAysBQwMrAUIDIQExAwwBEAEzAXoBqgH/AWQBsAHTAf8BMgGBAa8B/xQAAwsBDwMi - ATIDIwEzAyMBMwMjATMDGAEhAwcBCoQAAwMBBAMPARQDIgEyAVMBWwFWAcEBAAG8AYEB/wEAAdsBoAH/ + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAB0 + GgAAAk1TRnQBSQFMAgEBBgEAATgBAAE4AQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABIAMAAQEBAAEgBgABICYAAwQBBQMMARADDAEQAwUBBhwAAyMBMwMjATMDIwEzxAADBAEFAxMBGgMk + ATUDIgExAw0BERwAATUBgQGsAf8BNAGAAasB/wE1AYEBrAH/wAADAwEEAxIBGAMmATkBNQF1AVUB8QEA + AY4BSQH/AxEBFhwAATMBegGrAf8BZgGyAdQB/wEzAYABqwH/vAADAgEDAxABFQMkATUBQAFwAVkB7AEA + AccBhgH/AQABiwFGAf8DHAEnAxEBFgMRARYDEQEWAxEBFgMRARYDDAEQAwQBBQEzAXoBqgH/AWQBsAHT + Af8BMwF6AasB/7gAAwIBAwMPARQDIwEyAVoBYQFbAc8BAAHAAYAB/wEAAeUBpgH/AQABiAFDAf8DLgFI + AywBQwMsAUMDLAFDAywBQwMrAUIDIgExAwwBEAEzAXoBqgH/AWQBsAHTAf8BMgGBAa8B/xQAAwwBDwMj + ATIDIwEzAyMBMwMjATMDGAEhAwgBCoQAAwMBBAMPARQDIwEyAVcBWwFZAcEBAAG8AYEB/wEAAdsBoAH/ AQAB3AGhAf8BAAGDAT0B/wEAAYcBQQH/AQABiAFCAf8BAAGIAUIB/wEAAYgBQgH/AQABiAFCAf8BAAGK - AUQB/wEmAXsBUwHyAxABFgEzAXoBqwH/AWMBsgHWAf8BMAGFAbYB/wMXASADCgENDAADPwFtA04B+wNF - Af8DPgH/Az4B/wNVAbkDOAFdAxYBH4AAAwoBDQMgAS4BUwFbAVYBwQEAAboBgAH/AQAB1gGgAf8BAAHT + AUQB/wEyAXgBVwHyAxEBFgEzAXoBqwH/AWMBsgHWAf8BMAGFAbYB/wMYASADCgENDAADPwFtA1AB+wNF + Af8DPgH/Az4B/wNXAbkDOAFdAxcBH4AAAwoBDQMgAS4BVwFbAVkBwQEAAboBgAH/AQAB1gGgAf8BAAHT AZwB/wEAAdMBnAH/AQAB2AGgAf8BAAHZAaIB/wEAAdoBogH/AQAB2gGiAf8BAAHaAaIB/wEAAdoBoQH/ - ATQB6AG+Af8BAAGJAUMB/wMQARYBMwF6AasB/wFhAawBzwH/AUgBQwFBAf8DVQGxAz0BaQMjATMDIwEz - AyMBMwNIAf8DRwH/A0gF/wH8AfsB+QH/AW0BbAFrAf8BQAJBAf8DUwGtgAADDwEUAVMBWgFXAcABAAG4 + ATQB6AG+Af8BAAGJAUMB/wMRARYBMwF6AasB/wFhAawBzwH/AUgBQwFBAf8DVQGxAz0BaQMjATMDIwEz + AyMBMwNIAf8DRwH/A0gF/wH8AfsB+QH/AW0BbAFrAf8BQAJBAf8DVQGtgAADDwEUAVgBWgFZAcABAAG4 AYEB/wEAAdIBnwH/AQABzgGbAf8BAAHNAZoB/wEAAc0BmgH/AQABzwGbAf8BAAHPAZsB/wEAAc8BmwH/ - AQABzwGbAf8BAAHPAZsB/wEAAc8BmgH/AU0B5QHDAf8BAAGHAUAB/wMQARYBMgF6AawB/wFiAbUB3AH/ + AQABzwGbAf8BAAHPAZsB/wEAAc8BmgH/AU0B5QHDAf8BAAGHAUAB/wMRARYBMgF6AawB/wFiAbUB3AH/ AUgBQAE8Af8BPwE9ATwB/wNGAf8DRQH/Az4B/wM7Af8DPQH/Az4B/wM6Bf8B9gH1AfMB/wFkAWMBYgH/ AXcBdgF1Af8DRQH/gAADDAEQAQABigFDAf8BJwHcAbcB/wECAc0BoQH/AQAByQGZAf8BAAHJAZoB/wEA AckBmQH/AQAByQGZAf8BAAHIAZkB/wEAAcgBmQH/AQAByAGZAf8BAAHIAZgB/wEAAcgBlwH/AWgB5gHN - Af8BAAGHAT8B/wMQARYBMgF6AawB/wFhAbUB3AH/AUQBPAE5Af8BdQFyAXAB/wE5AjgB/wE/AT4BPQH/ + Af8BAAGHAT8B/wMRARYBMgF6AawB/wFhAbUB3AH/AUQBPAE5Af8BdQFyAXAB/wE5AjgB/wE/AT4BPQH/ AfIB8QHwCf8BcQFvAW4B/wE6AjsB/wGOAYsBigH/AXYBdAFzAf8B2gHZAdgB/wG4ArcB/wM/Af+AAAME - AQUBNwF3AVYB6wEAAbMBgQH/AV0B4AHHAf8BAAHGAZoB/wEAAcUBmQH/AQABxAGYAf8BAAHDAZgB/wEA + AQUBRAFzAVkB6wEAAbMBgQH/AV0B4AHHAf8BAAHGAZoB/wEAAcUBmQH/AQABxAGYAf8BAAHDAZgB/wEA AcMBmQH/AQABwwGZAf8BAAHDAZkB/wEAAcMBmAH/AQABwwGXAf8BhwHpAdgB/wEAAYcBPwH/AxABFQEy AXoBrAH/AWABtAHbAf8BPgE3ATMB/wHiAeAB3QH/AawBqwGqAf8BkAGPAY4B/wHqAekB6AX/Af4C/QH/ - AccBxgHFAf8DOAH/AVsBWQFWAf8BTAFKAUkB/wH7AfoB+QX/AzsB/4QAAwQBBQE+AW4BVwHlAQABrwF6 + AccBxgHFAf8DOAH/AVsBWQFWAf8BTAFKAUkB/wH7AfoB+QX/AzsB/4QAAwQBBQFMAWwBXAHlAQABrwF6 Af8BWwHcAcYB/wEAAcABlwH/AZQB5gHYAf8BSAHnAdEB/wFMAekB1AH/AU0B6QHVAf8BTQHpAdUB/wFM AekB1AH/AUkB6QHUAf8BnQHwAeYB/wEAAYkBQQH/AwoBDQEyAXoBrAH/AWABswHaAf8BPAE1ATEB/wHq AegB5QH/Ae8B7gHtAf8B/gH/Af0B/wFmAWMBZAH/AXUBcgFzAf8BZgFlAWQB/wH0AfMB8gH/AzIB/wHn - AuYB/wHJAcgBxgH/AdIB0QHQBf8DOwH/iAADBAEFAT4BbwFWAeYBAAGrAXoB/wFVAdkBxAH/AYIB4wHW - Af8BAAGCATYB/wEAAYYBPQH/AQABhwE+Af8BAAGHAT4B/wEAAYcBPgH/AQABhwE/Af8BAAGJAUEB/wFS - AVgBVQG0AwMBBAEyAXoBrAH/AWABswHbAf8BPQE2ATIB/wHHAcUBwwH/AbYBtQG0Af8C6QHoAf8BZwJl + AuYB/wHJAcgBxgH/AdIB0QHQBf8DOwH/iAADBAEFAUoBagFaAeYBAAGrAXoB/wFVAdkBxAH/AYIB4wHW + Af8BAAGCATYB/wEAAYYBPQH/AQABhwE+Af8BAAGHAT4B/wEAAYcBPgH/AQABhwE/Af8BAAGJAUEB/wFV + AVcBVQG0AwMBBAEyAXoBrAH/AWABswHbAf8BPQE2ATIB/wHHAcUBwwH/AbYBtQG0Af8C6QHoAf8BZwJl Af8BdQJzAf8BZgFlAWQB/wHiAeEB4AH/Ay8F/wHwAe4B7AH/AVgBVwFWAf8BxQHDAcQB/wM9Af+MAAMD - AQQBUwFcAVgBwAEAAaoBegH/AXUB4wHYAf8BAAGJAT8B/wMQARYcAAEyAXoBrAH/AWABtAHbAf8BPwE3 + AQQBWAFbAVkBwAEAAaoBegH/AXUB4wHYAf8BAAGJAT8B/wMRARYcAAEyAXoBrAH/AWABtAHbAf8BPwE3 ATMB/wG8ArsB/wEtASwBLQH/ATUBNAEyAf8B6wHqAegF/wH7AvoB/wG1ArQB/wMyAf8D8QH/AegB5wHm - Af8C2wHaAf8D3QH/Az8B/5AAAwIBAwFSAVUBVAGuAQABqwGHAf8BAAGMAUUB/wMNAREcAAEyAXoBrAH/ - AWEBtAHbAf8BQAE4ATQB/wHtAewB6wH/ApwBnQH/AYMCggH/AegB5wHmBf8B+QL4Af8D2AH/AzoB/wNG - Af8DZQH/A20B/wPTAf8DQgH/lAADAwEEAVMBVwFWAbMBAAGOAUgB/wMEAQYcAAEzAYABrAH/AWMBtgHc - Af8BRQE8ATYB/wFoAWYBZAH/A5AB/wG1ArQB/wHNAswB/wHMAssB/wLKAcgB/wOoAf8DQQH/BAADIgEx - AzUBVwNWAbwDRwH/wAABVQFWAVcBsQEzAYMBsQH/AVACUgGkAzwBZgJZAVgBzQNBAf8DPwH/AT0CPgH/ - Az8B/wNIAfgDSQGIsAADHQEqAyMBMwMdASoYAAMDAQQDCgENAxABFQMQARYDEAEWAxABFgMQARYDEAEW - AxABFgMQARYDEAEWAxABFgMQARYDEAEVAwoBDQMDAQQEAAMaASQDIwEzUAADBAEGAwwBEAMMARADBAEF - LAADHwEtAXABYwFXAd0BpwFyAUAB/wFwAWMBVwHdAx8BLRQAAwoBDQMeASsDKgFAAysBQwMrAUMDKwFD - AysBQwMrAUMDKwFDAysBQwMrAUMDKwFDAysBQwMqAUADHgErAwoBDQQAAWMCYAHDAWsBbQFuAf8DIwEz - AyMBMwMjATMDIwEzAyMBMzwAAw0BEQMhATEDJAE1AxMBGgMEAQUkAAMfAS0BewFlAVEB6QHFAaMBeQH/ - AfsB9AHnAf8BxQGjAXkB/wF7AWUBUQHpAx8BLRAAAw4BEwFXAVsBYQHEATQBegHIAf8BMwF4AccB/wE0 - AXcBxwH/ATQBdwHHAf8BMwF4AccB/wEzAXgByAH/ATMBeAHIAf8BMwF4AccB/wE0AXcBxwH/ATQBdwHH - Af8BMwF4AccB/wE0AXoByAH/AVcBWwFhAcQDDgETBAABnwGgAaIB/wLMAc4B/wFmAW4BeAH/AbsBgwE6 - Af8BtwGCAT4B/wG2AYMBPwH/AbgBhAFAAf8DIwEzOAADEAEWAQABjgFJAf8BKQF7AVMB8QMmATkDEgEY - AwMBBBwAAx8BLQF6AWcBVAHoAcQBpAF6Af8B9gHtAd8B/wHBAZ4BdAH/AfYB7QHfAf8BxAGkAXoB/wF6 - AWcBVAHoAx8BLQwAAwoBDQE2AYYBzQH/AU4B4gL/AVAB4wL/AVEB4QL/AVEB4gL/AVAB5AL/AU4B5wL/ - AU4B5wL/AVAB5AL/AVEB4gL/AVEB4QL/AVAB4wL/AU4B4gL/ATYBhgHNAf8DCgENCAABnAGkAa4B/wG5 - AXkBMgH/AfkBwQFuAf8B8gG6AWgB/wHvAbYBYAH/AeUBtQFoAf8BtwGDAT8B/wMjATMYAAMEAQUDDAQQ - ARYDEAEWAxABFgMQARYDEAEWAxwBJwEAAYsBRgH/AQABxwGGAf8BMwFyAVMB7AMkATUDEAEVAwIBAxQA - Ax8BLQF6AWcBVAHoAcUBpQGBAf8B+AHxAeYB/wG0AYkBWAH/AaMBbQE5Af8BtAGJAVgB/wH4AfEB5gH/ - AcUBpQGBAf8BegFnAVQB6AMfAS0IAAMDAQQBVQFWAVkBsgF2AbwB5wH/AUwB2gL/AUUB1AL/AUcB1AL/ - AUUB2AL/AYoBYAFSAf8BigFgAVIB/wFFAdgC/wFHAdQC/wFFAdQC/wFMAdoC/wF2AbwB5wH/AVUBVgFZ - AbIDAwEECAABuQGAATUB/wH0AckBjwH/AfYBwAFzAf8B8gG7AWsB/wHrAb8BgQH/AbEBeAE6Af8B7wGz - AVgB/wG4AYQBPwH/GAADDAEQAyEBMQMrAUIDKwFDAysBQwMrAUMDKwFDAy4BSAEAAYgBQwH/AQAB5QGm - Af8BAAHAAYAB/wFSAWEBWQHPAyIBMgMPARQDAgEDDAADHwEtAXoBZwFUAegBxwGmAYQB/wH6AfQB6gH/ - AbMBiQFXAf8BogFrATcB/wGjAWwBOAH/AaIBawE3Af8BswGJAVcB/wH6AfQB6gH/AccBpgGEAf8BegFn - AVQB6AMfAS0IAAMHAQoBOgGCAckB/wGjAeUC/wE4AcwC/wE9AcwC/wE9AdEC/wE7AdkC/wE7AdkC/wE9 - AdEC/wE9AcwC/wE4AcwC/wGjAeUC/wE6AYIByQH/AwcBCgwAAbYBgAE5Af8B+AHRAZ4B/wH4AcIBeAH/ - AfIBywGUAf8BrgF1ATYB/wH0AboBZgH/AX4BcQFeAd0BuAGCATsB/wMjATMDIwEzEAADEAEWASYBewFT - AfIBAAGKAUQB/wEAAYgBQgH/AQABiAFCAf8BAAGIAUIB/wEAAYgBQgH/AQABhwFBAf8BAAGDAT0B/wEA - AdwBoQH/AQAB2wGgAf8BAAG8AYEB/wFTAVsBVgHBAyIBMgMPARQDAwEEBAADGwEmAXsBZQFRAekBxgGn - AYQB/wH8AfcB7wH/AbMBigFaAf8BuAGRAWMB/wH6AfIB5AH/AfgB7wHgAf8B+wHzAeYB/wG5AZIBZAH/ - AbMBiwFaAf8B/AH3Ae8B/wHGAacBhAH/AXsBZQFRAekDHQEqBAADAQECA0MBeAFhAaEB2AH/AZIB5AL/ - ATABxwL/ATMBzwL/AV8BQwE5Af8BXwFDATkB/wEzAc8C/wEwAccC/wGSAeQC/wFhAaEB2AH/A0MBeAMB - AQIMAAG1AYABOgL/AdwBrwH/AfsB1wGnAf8BrQFzATIB/wH5AcIBdgH/AYABdwFmAd4BtQF6ATkB/wG5 - AcUB2AH/AbgBgQE6Af8BuAGEAT8B/wMjATMMAAMQARYBAAGJAUMB/wE0AegBvgH/AQAB2gGhAf8BAAHa - AaIB/wEAAdoBogH/AQAB2gGiAf8BAAHZAaIB/wEAAdgBoAH/AQAB0wGcAf8BAAHTAZwB/wEAAdYBoAH/ - AQABugGAAf8BUwFbAVYBwQMgAS4DCgENBAABYgFeAVkBzAHIAagBhwH/Af0B+QHyAf8BtQGMAVsB/wGm - AXEBPgH/AaUBcAE9Af8BuAGQAWEB/wH9AfgB7wH/AaIBagE1Af8BpwFyAUAB/wGmAXEBPwH/AbUBjAFb - Af8B/QH5AfIB/wHIAagBhwH/AXABYwFXAd0IAAMEAQYBVgFfAWsB0wGjAdEB8AH/AWUB1QL/ASUByQL/ - AWQBUQFHAf8BZAFRAUcB/wElAckC/wFlAdUC/wGjAdEB8AH/AVYBXwFrAdMDBAEGEAABtgGBATsC/wHr - AcUB/wGtAXIBMAL/AcsBiAH/AYMBeQFsAd4BtQF6AToB/wMjATMBtQF6ATcB/wHpAcUBkQH/Ae0BrwFR - Af8BtwGEAUAB/wMjATMIAAMQARYBAAGHAUAB/wFNAeUBwwH/AQABzwGaAf8BAAHPAZsB/wEAAc8BmwH/ - AQABzwGbAf8BAAHPAZsB/wEAAc8BmwH/AQABzQGaAf8BAAHNAZoB/wEAAc4BmwH/AQAB0gGfAf8BAAG4 - AYEB/wFTAVoBVwHAAw8BFAQAAaYBcAE+Bf8BxAGkAYEB/wGjAW0BOQH/AagBcwFCAf8BpgFwAT0B/wG5 - AZEBYgP/Af4B/wGkAW0BOQH/AakBdQFFAf8BqQF1AUQB/wGkAW0BOQH/AcQBpAGBBf8BpgFwAT4B/wsA - AQEDHQEpAUABiAHMAf8BvQHtAv8BOQHMAv8BZwFWAU4B/wFnAVYBTgH/ATkBzAL/Ab0B7QL/AUABiAHM - Af8DHQEpAwABARQAAbUBegE5Av8B2gGfAf8BgQF7AXAB3QG0AXgBNAH/AyMBMwG1AXoBOgH/AYIBdwFo - Ad4B8QG3AWEB/wGyAXkBOgH/AeEBrAFaAf8BuAGEAUAB/wgAAxABFgEAAYcBPwH/AWgB5gHNAf8BAAHI - AZcB/wEAAcgBmAH/AQAByAGZAf8BAAHIAZkB/wEAAcgBmQH/AQAByQGZAf8BAAHJAZkB/wEAAckBmgH/ - AQAByQGZAf8BAgHNAaEB/wEnAdwBtwH/AQABigFDAf8DDAEQBAABVgFUAVMBrAHJAakBiQP/AfwB/wG0 - AY0BXQH/AaUBbwE9Af8BvgGaAW8J/wGlAW8BPAH/AakBdQFEAf8BpwFyAT8B/wG1AY0BXgP/AfwB/wHJ - AakBiQH/AV0BWwFWAcEMAAMCAQMBTwJRAZwBcAGvAeIB/wGzAfAC/wFoAVYBTQH/AWgBVgFNAf8BswHw - Av8BcAGvAeIB/wFPAlEBnAMCAQMcAAG3AYIBPAH/AbYBegE3Af8BuAHEAdUB/wG1AXkBNQH/AYMBdwFo - Ad4B+QHBAXQB/wGvAXUBNgH/AeYBuQFwAf8B5gG1AWsB/wG3AYMBPgH/CAADEAEVAQABhwE/Af8BhwHp - AdgB/wEAAcMBlwH/AQABwwGYAf8BAAHDAZkB/wEAAcMBmQH/AQABwwGZAf8BAAHDAZgB/wEAAcQBmAH/ - AQABxQGZAf8BAAHGAZoB/wFdAeABxwH/AQABswGBAf8BNwF3AVYB6wMEAQUIAAFUAVIBUQGnAckBqgGL - Bf8BtgGMAV0B/wGjAW0BOAH/AaIBawE2Af8BogFrATYB/wGmAXEBPgH/AaYBcQE+Af8BtwGNAV4F/wHJ - AaoBiwH/AVQBUgFRAacUAAMGAQgBKwF4AcgB/wGgAdYB+QH/AZEB4gL/AZEB4gL/AaAB1gH5Af8BKwF4 - AcgB/wMGAQgoAAG3AYABOAH/Ae8BywGfAv8BzQGMAf8BrQFzATIB/wHuAcYBiwH/AfABtwFlAf8B7AHA - AYEB/wG3AYIBPAH/CAADCgENAQABiQFBAf8BnQHwAeYB/wFJAekB1AH/AUwB6QHUAf8BTQHpAdUB/wFN - AekB1QH/AUwB6QHUAf8BSAHnAdEB/wGUAeYB2AH/AQABwAGXAf8BWwHcAcYB/wEAAa8BegH/AT4BbgFX - AeUDBAEFEAABVAFSAVEBpwHKAasBjAX/AbUBjAFcAf8BugGUAWYD/wH+Af8BowFsATgB/wG2AY4BXgX/ - AcoBqwGMAf8BVAFSAVEBpxsAAQEDMgFQAUUBkAHTAf8BxAHwAv8BxAHwAv8BRQGQAdMB/wMyAVADAAEB - KAABtwGCATwC/wHcAaIB/wGuAXIBMAH/AfoB1AGjAf8B9gHAAXQB/wH0AbsBawH/AfcBzQGTAf8BvAGD - ATkB/wgAAwMBBAFSAVgBVQG0AQABiQFBAf8BAAGHAT8B/wEAAYcBPgH/AQABhwE+Af8BAAGHAT4B/wEA - AYYBPQH/AQABggE2Af8BggHjAdYB/wFVAdkBxAH/AQABqwF6Af8BPgFvAVYB5gMEAQUYAAFUAVIBUQGn - AcoBrAGOBf8BswGKAVoB/wGgAWcBMQH/AbQBiwFbBf8BygGsAY4B/wFUAVIBUQGnIAADBAEFAVYBYwFw - AdUBdQG8AewB/wF1AbwB7AH/AVYBYwFwAdUDBAEFMAABtQF6ATkC/wHqAcMC/wHhAbgC/wHdAbAC/wHb - AasB/wG5AXkBMAH/AWYBbgF4Af8DIwEzIAADEAEWAQABiQE/Af8BdQHjAdgB/wEAAaoBegH/AVMBXAFY - AcADAwEEIAABVAFSAVEBpwHLAa0BjgX/AcYBqAGGBf8BywGtAY8B/wFUAVIBUQGnKAADDgETAS8BhQHN - Af8BLwGFAc0B/wMOARM4AAG2AYEBOwH/AbUBegE5Af8BtQF6ATgB/wG4AXoBNAH/AZwBpAGtAf8CzAHO - Af8BawFsAW4B/yAAAw0BEQEAAYwBRQH/AQABqwGHAf8BUgFVAVQBrgMCAQMoAAFUAVIBUQGnAcsBrgGR - Bf8BywGuAZEB/wFUAVIBUQGniAABnwGgAaIB/wNaAbQgAAMEAQYBAAGOAUgB/wFTAVcBVgGzAwMBBDAA - AVYBVAFTAawBpgFwATwB/wFWAVQBUwGs2AABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEB - FgAD/wEAAfgBfwEfAf8EAAHwAX8BHwH/BAAB4AF/AR8B/wQAAcABAAEfAf8EAAGAAQABHwEBBgABByUA - AYAHAAHABwAB4AF/BgAB8AF/BgAB+AF/AQABEAQAAv8BAAEfBAAB/gE/AgABnwH/Af4BHwH8AR8CAAGA - Af8B/gEPAfgBDwIAAYABfwH+AQcB8AEHAgABwAE/AQABAwHgAQMCAAHAAT8BAAEBAcABAQGAAQEBwAEP - AgABgAEAAYABAQHAAQcCAAGAAQABwAEDAcABAwIAAYABAAHAAQMB4AEDAgABgAEAAeABBwHwAQMCAAHA - AQEB8AEPAfwBAwEAAQEB4AEDAfABDwH8AQMBAAEDAfABBwH4AR8B/gEBAf4BBwH4AQ8B/AE/Af8BAQH+ - AQ8B/AEfA/8B+QH+AR8B/gE/Bv8L + Af8C2wHaAf8D3QH/Az8B/5AAAwIBAwNVAa4BAAGrAYcB/wEAAYwBRQH/Aw0BERwAATIBegGsAf8BYQG0 + AdsB/wFAATgBNAH/Ae0B7AHrAf8CnAGdAf8BgwKCAf8B6AHnAeYF/wH5AvgB/wPYAf8DOgH/A0YB/wNl + Af8DbQH/A9MB/wNCAf+UAAMDAQQDVgGzAQABjgFIAf8DBQEGHAABMwGAAawB/wFjAbYB3AH/AUUBPAE2 + Af8BaAFmAWQB/wOQAf8BtQK0Af8BzQLMAf8BzALLAf8CygHIAf8DqAH/A0EB/wQAAyIBMQM2BFcBvANH + Af/AAAFVAlcBsQEzAYMBsQH/AVECUgGkAzwBZgNbAc0DQQH/Az8B/wE9Aj4B/wM/Af8DSwH4A0kBiLAA + Ax4BKgMjATMDHgEqGAADAwEEAwoBDQMQARUDEQEWAxEBFgMRARYDEQEWAxEBFgMRARYDEQEWAxEBFgMR + ARYDEQEWAxABFQMKAQ0DAwEEBAADGgEkAyMBM1AAAwUBBgMMARADDAEQAwQBBSwAAyABLQFpAWMBWgHd + AacBcgFAAf8BaQFjAVoB3QMgAS0UAAMKAQ0DHgErAyoBQAMsAUMDLAFDAywBQwMsAUMDLAFDAywBQwMs + AUMDLAFDAywBQwMsAUMDKgFAAx4BKwMKAQ0EAAFeAl0BwwFrAW0BbgH/AyMBMwMjATMDIwEzAyMBMwMj + ATM8AAMNAREDIgExAyQBNQMTARoDBAEFJAADIAEtAXMBYwFWAekBxQGjAXkB/wH7AfQB5wH/AcUBowF5 + Af8BcwFjAVYB6QMgAS0QAAMPARMBWgFbAV0BxAE0AXoByAH/ATMBeAHHAf8BNAF3AccB/wE0AXcBxwH/ + ATMBeAHHAf8BMwF4AcgB/wEzAXgByAH/ATMBeAHHAf8BNAF3AccB/wE0AXcBxwH/ATMBeAHHAf8BNAF6 + AcgB/wFaAVsBXQHEAw8BEwQAAZ8BoAGiAf8CzAHOAf8BZgFuAXgB/wG7AYMBOgH/AbcBggE+Af8BtgGD + AT8B/wG4AYQBQAH/AyMBMzgAAxEBFgEAAY4BSQH/ATUBdQFVAfEDJgE5AxIBGAMDAQQcAAMgAS0BcgFn + AVcB6AHEAaQBegH/AfYB7QHfAf8BwQGeAXQB/wH2Ae0B3wH/AcQBpAF6Af8BcgFnAVcB6AMgAS0MAAMK + AQ0BNgGGAc0B/wFOAeIC/wFQAeMC/wFRAeEC/wFRAeIC/wFQAeQC/wFOAecC/wFOAecC/wFQAeQC/wFR + AeIC/wFRAeEC/wFQAeMC/wFOAeIC/wE2AYYBzQH/AwoBDQgAAZwBpAGuAf8BuQF5ATIB/wH5AcEBbgH/ + AfIBugFoAf8B7wG2AWAB/wHlAbUBaAH/AbcBgwE/Af8DIwEzGAADBAEFAwwBEAMRARYDEQEWAxEBFgMR + ARYDEQEWAxwBJwEAAYsBRgH/AQABxwGGAf8BQAFwAVkB7AMkATUDEAEVAwIBAxQAAyABLQFyAWcBVwHo + AcUBpQGBAf8B+AHxAeYB/wG0AYkBWAH/AaMBbQE5Af8BtAGJAVgB/wH4AfEB5gH/AcUBpQGBAf8BcgFn + AVcB6AMgAS0IAAMDAQQCVgFXAbIBdgG8AecB/wFMAdoC/wFFAdQC/wFHAdQC/wFFAdgC/wGKAWABUgH/ + AYoBYAFSAf8BRQHYAv8BRwHUAv8BRQHUAv8BTAHaAv8BdgG8AecB/wJWAVcBsgMDAQQIAAG5AYABNQH/ + AfQByQGPAf8B9gHAAXMB/wHyAbsBawH/AesBvwGBAf8BsQF4AToB/wHvAbMBWAH/AbgBhAE/Af8YAAMM + ARADIgExAysBQgMsAUMDLAFDAywBQwMsAUMDLgFIAQABiAFDAf8BAAHlAaYB/wEAAcABgAH/AVoBYQFb + Ac8DIwEyAw8BFAMCAQMMAAMgAS0BcgFnAVcB6AHHAaYBhAH/AfoB9AHqAf8BswGJAVcB/wGiAWsBNwH/ + AaMBbAE4Af8BogFrATcB/wGzAYkBVwH/AfoB9AHqAf8BxwGmAYQB/wFyAWcBVwHoAyABLQgAAwgBCgE6 + AYIByQH/AaMB5QL/ATgBzAL/AT0BzAL/AT0B0QL/ATsB2QL/ATsB2QL/AT0B0QL/AT0BzAL/ATgBzAL/ + AaMB5QL/AToBggHJAf8DCAEKDAABtgGAATkB/wH4AdEBngH/AfgBwgF4Af8B8gHLAZQB/wGuAXUBNgH/ + AfQBugFmAf8BcAFqAV4B3QG4AYIBOwH/AyMBMwMjATMQAAMRARYBMgF4AVcB8gEAAYoBRAH/AQABiAFC + Af8BAAGIAUIB/wEAAYgBQgH/AQABiAFCAf8BAAGHAUEB/wEAAYMBPQH/AQAB3AGhAf8BAAHbAaAB/wEA + AbwBgQH/AVcBWwFZAcEDIwEyAw8BFAMDAQQEAAMbASYBcwFjAVYB6QHGAacBhAH/AfwB9wHvAf8BswGK + AVoB/wG4AZEBYwH/AfoB8gHkAf8B+AHvAeAB/wH7AfMB5gH/AbkBkgFkAf8BswGLAVoB/wH8AfcB7wH/ + AcYBpwGEAf8BcwFjAVYB6QMeASoEAAQCA0QBeAFhAaEB2AH/AZIB5AL/ATABxwL/ATMBzwL/AV8BQwE5 + Af8BXwFDATkB/wEzAc8C/wEwAccC/wGSAeQC/wFhAaEB2AH/A0QBeAQCDAABtQGAAToC/wHcAa8B/wH7 + AdcBpwH/Aa0BcwEyAf8B+QHCAXYB/wFyAW0BZAHeAbUBegE5Af8BuQHFAdgB/wG4AYEBOgH/AbgBhAE/ + Af8DIwEzDAADEQEWAQABiQFDAf8BNAHoAb4B/wEAAdoBoQH/AQAB2gGiAf8BAAHaAaIB/wEAAdoBogH/ + AQAB2QGiAf8BAAHYAaAB/wEAAdMBnAH/AQAB0wGcAf8BAAHWAaAB/wEAAboBgAH/AVcBWwFZAcEDIAEu + AwoBDQQAAV8BXQFbAcwByAGoAYcB/wH9AfkB8gH/AbUBjAFbAf8BpgFxAT4B/wGlAXABPQH/AbgBkAFh + Af8B/QH4Ae8B/wGiAWoBNQH/AacBcgFAAf8BpgFxAT8B/wG1AYwBWwH/Af0B+QHyAf8ByAGoAYcB/wFp + AWMBWgHdCAADBQEGAVoBXwFjAdMBowHRAfAB/wFlAdUC/wElAckC/wFkAVEBRwH/AWQBUQFHAf8BJQHJ + Av8BZQHVAv8BowHRAfAB/wFaAV8BYwHTAwUBBhAAAbYBgQE7Av8B6wHFAf8BrQFyATAC/wHLAYgB/wFz + AW0BZwHeAbUBegE6Af8DIwEzAbUBegE3Af8B6QHFAZEB/wHtAa8BUQH/AbcBhAFAAf8DIwEzCAADEQEW + AQABhwFAAf8BTQHlAcMB/wEAAc8BmgH/AQABzwGbAf8BAAHPAZsB/wEAAc8BmwH/AQABzwGbAf8BAAHP + AZsB/wEAAc0BmgH/AQABzQGaAf8BAAHOAZsB/wEAAdIBnwH/AQABuAGBAf8BWAFaAVkBwAMPARQEAAGm + AXABPgX/AcQBpAGBAf8BowFtATkB/wGoAXMBQgH/AaYBcAE9Af8BuQGRAWID/wH+Af8BpAFtATkB/wGp + AXUBRQH/AakBdQFEAf8BpAFtATkB/wHEAaQBgQX/AaYBcAE+Af8IAAQBAx0BKQFAAYgBzAH/Ab0B7QL/ + ATkBzAL/AWcBVgFOAf8BZwFWAU4B/wE5AcwC/wG9Ae0C/wFAAYgBzAH/Ax0BKQQBFAABtQF6ATkC/wHa + AZ8B/wFzAXABaQHdAbQBeAE0Af8DIwEzAbUBegE6Af8BcgFtAWYB3gHxAbcBYQH/AbIBeQE6Af8B4QGs + AVoB/wG4AYQBQAH/CAADEQEWAQABhwE/Af8BaAHmAc0B/wEAAcgBlwH/AQAByAGYAf8BAAHIAZkB/wEA + AcgBmQH/AQAByAGZAf8BAAHJAZkB/wEAAckBmQH/AQAByQGaAf8BAAHJAZkB/wECAc0BoQH/AScB3AG3 + Af8BAAGKAUMB/wMMARAEAANVAawByQGpAYkD/wH8Af8BtAGNAV0B/wGlAW8BPQH/Ab4BmgFvCf8BpQFv + ATwB/wGpAXUBRAH/AacBcgE/Af8BtQGNAV4D/wH8Af8ByQGpAYkB/wFcAVsBWQHBDAADAgEDAVACUQGc + AXABrwHiAf8BswHwAv8BaAFWAU0B/wFoAVYBTQH/AbMB8AL/AXABrwHiAf8BUAJRAZwDAgEDHAABtwGC + ATwB/wG2AXoBNwH/AbgBxAHVAf8BtQF5ATUB/wFzAW0BZgHeAfkBwQF0Af8BrwF1ATYB/wHmAbkBcAH/ + AeYBtQFrAf8BtwGDAT4B/wgAAxABFQEAAYcBPwH/AYcB6QHYAf8BAAHDAZcB/wEAAcMBmAH/AQABwwGZ + Af8BAAHDAZkB/wEAAcMBmQH/AQABwwGYAf8BAAHEAZgB/wEAAcUBmQH/AQABxgGaAf8BXQHgAccB/wEA + AbMBgQH/AUQBcwFZAesDBAEFCAADUwGnAckBqgGLBf8BtgGMAV0B/wGjAW0BOAH/AaIBawE2Af8BogFr + ATYB/wGmAXEBPgH/AaYBcQE+Af8BtwGNAV4F/wHJAaoBiwH/A1MBpxQAAwYBCAErAXgByAH/AaAB1gH5 + Af8BkQHiAv8BkQHiAv8BoAHWAfkB/wErAXgByAH/AwYBCCgAAbcBgAE4Af8B7wHLAZ8C/wHNAYwB/wGt + AXMBMgH/Ae4BxgGLAf8B8AG3AWUB/wHsAcABgQH/AbcBggE8Af8IAAMKAQ0BAAGJAUEB/wGdAfAB5gH/ + AUkB6QHUAf8BTAHpAdQB/wFNAekB1QH/AU0B6QHVAf8BTAHpAdQB/wFIAecB0QH/AZQB5gHYAf8BAAHA + AZcB/wFbAdwBxgH/AQABrwF6Af8BTAFsAVwB5QMEAQUQAANTAacBygGrAYwF/wG1AYwBXAH/AboBlAFm + A/8B/gH/AaMBbAE4Af8BtgGOAV4F/wHKAasBjAH/A1MBpxgABAEDMwFQAUUBkAHTAf8BxAHwAv8BxAHw + Av8BRQGQAdMB/wMzAVAEASgAAbcBggE8Av8B3AGiAf8BrgFyATAB/wH6AdQBowH/AfYBwAF0Af8B9AG7 + AWsB/wH3Ac0BkwH/AbwBgwE5Af8IAAMDAQQBVQFXAVUBtAEAAYkBQQH/AQABhwE/Af8BAAGHAT4B/wEA + AYcBPgH/AQABhwE+Af8BAAGGAT0B/wEAAYIBNgH/AYIB4wHWAf8BVQHZAcQB/wEAAasBegH/AUoBagFa + AeYDBAEFGAADUwGnAcoBrAGOBf8BswGKAVoB/wGgAWcBMQH/AbQBiwFbBf8BygGsAY4B/wNTAacgAAME + AQUBWwFjAWgB1QF1AbwB7AH/AXUBvAHsAf8BWwFjAWgB1QMEAQUwAAG1AXoBOQL/AeoBwwL/AeEBuAL/ + Ad0BsAL/AdsBqwH/AbkBeQEwAf8BZgFuAXgB/wMjATMgAAMRARYBAAGJAT8B/wF1AeMB2AH/AQABqgF6 + Af8BWAFbAVkBwAMDAQQgAANTAacBywGtAY4F/wHGAagBhgX/AcsBrQGPAf8DUwGnKAADDwETAS8BhQHN + Af8BLwGFAc0B/wMPARM4AAG2AYEBOwH/AbUBegE5Af8BtQF6ATgB/wG4AXoBNAH/AZwBpAGtAf8CzAHO + Af8BawFsAW4B/yAAAw0BEQEAAYwBRQH/AQABqwGHAf8DVQGuAwIBAygAA1MBpwHLAa4BkQX/AcsBrgGR + Af8DUwGniAABnwGgAaIB/wNYAbQgAAMFAQYBAAGOAUgB/wNWAbMDAwEEMAADVQGsAaYBcAE8Af8DVQGs + 2AABQgFNAT4HAAE+AwABKAMAAUADAAEgAwABAQEAAQEGAAEBFgAD/wEAAfgBfwEfAf8EAAHwAX8BHwH/ + BAAB4AF/AR8B/wQAAcABAAEfAf8EAAGAAQABHwEBBgABByUAAYAHAAHABwAB4AF/BgAB8AF/BgAB+AF/ + AQABEAQAAv8BAAEfBAAB/gE/AgABnwH/Af4BHwH8AR8CAAGAAf8B/gEPAfgBDwIAAYABfwH+AQcB8AEH + AgABwAE/AQABAwHgAQMCAAHAAT8BAAEBAcABAQGAAQEBwAEPAgABgAEAAYABAQHAAQcCAAGAAQABwAED + AcABAwIAAYABAAHAAQMB4AEDAgABgAEAAeABBwHwAQMCAAHAAQEB8AEPAfwBAwEAAQEB4AEDAfABDwH8 + AQMBAAEDAfABBwH4AR8B/gEBAf4BBwH4AQ8B/AE/Af8BAQH+AQ8B/AEfA/8B+QH+AR8B/gE/Bv8L - - 98, 17 - \ No newline at end of file diff --git a/Forwarder/Forwarder/Program.cs b/Forwarder/Forwarder/Program.cs index dc7ed0b..a2bce59 100644 --- a/Forwarder/Forwarder/Program.cs +++ b/Forwarder/Forwarder/Program.cs @@ -26,7 +26,7 @@ { static class Program { - public const string VERSION = "1.1"; + public const string VERSION = "1.2"; /// /// The main entry point for the application. /// diff --git a/Forwarder/Forwarder/Properties/Resources.Designer.cs b/Forwarder/Forwarder/Properties/Resources.Designer.cs index 1feea29..0f4acc7 100644 --- a/Forwarder/Forwarder/Properties/Resources.Designer.cs +++ b/Forwarder/Forwarder/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Este código fue generado por una herramienta. +// Versión de runtime:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. // //------------------------------------------------------------------------------ @@ -13,13 +13,13 @@ /// - /// A strongly-typed resource class, for looking up localized strings, etc. + /// Clase de recurso fuertemente tipado, para buscar cadenas traducidas, etc. /// - // This class was auto-generated by the StronglyTypedResourceBuilder - // class via a tool like ResGen or Visual Studio. - // To add or remove a member, edit your .ResX file then rerun ResGen - // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + // StronglyTypedResourceBuilder generó automáticamente esta clase + // a través de una herramienta como ResGen o Visual Studio. + // Para agregar o quitar un miembro, edite el archivo .ResX y, a continuación, vuelva a ejecutar ResGen + // con la opción /str o recompile su proyecto de VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -33,7 +33,7 @@ } /// - /// Returns the cached ResourceManager instance used by this class. + /// Devuelve la instancia de ResourceManager almacenada en caché utilizada por esta clase. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ } /// - /// Overrides the current thread's CurrentUICulture property for all - /// resource lookups using this strongly typed resource class. + /// Reemplaza la propiedad CurrentUICulture del subproceso actual para todas las + /// búsquedas de recursos mediante esta clase de recurso fuertemente tipado. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap computer { get { @@ -71,7 +71,7 @@ } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap cross { get { @@ -81,7 +81,7 @@ } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap help { get { @@ -91,7 +91,7 @@ } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap link_go { get { @@ -101,7 +101,7 @@ } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap list_clear { get { @@ -111,7 +111,7 @@ } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap list_follow { get { @@ -121,7 +121,7 @@ } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap TcpForwarder { get { @@ -131,7 +131,7 @@ } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap world { get { @@ -141,7 +141,7 @@ } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap world_add { get { @@ -151,7 +151,7 @@ } /// - /// Looks up a localized resource of type System.Drawing.Bitmap. + /// Busca un recurso adaptado de tipo System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap world_delete { get { diff --git a/Forwarder/Forwarder/Properties/Settings.Designer.cs b/Forwarder/Forwarder/Properties/Settings.Designer.cs index cd4a553..fe87bc8 100644 --- a/Forwarder/Forwarder/Properties/Settings.Designer.cs +++ b/Forwarder/Forwarder/Properties/Settings.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// This code was generated by a tool. -// Runtime Version:4.0.30319.42000 +// Este código fue generado por una herramienta. +// Versión de runtime:4.0.30319.42000 // -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. +// Los cambios en este archivo podrían causar un comportamiento incorrecto y se perderán si +// se vuelve a generar el código. // //------------------------------------------------------------------------------ @@ -12,7 +12,7 @@ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.5.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));