Rework Chat Room Form (again)

Version Bump
This commit is contained in:
Alan Moon 2025-11-17 16:40:15 -08:00
parent 0d71fe5983
commit 5016e63a38
7 changed files with 233 additions and 140 deletions

View File

@ -0,0 +1,86 @@
using qtc_net_client_2.Properties;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace qtc_net_client_2.Controls
{
public class ChatMessageControl : Control
{
public Image? Avatar { get; set; }
public string Username = "Username";
public string Message = "Message";
private Font usernameFont = new("Segoe UI", 9, FontStyle.Bold);
private Font messageFont = new("Segoe UI", 9, FontStyle.Regular);
private Font messageFontBold = new("Segoe UI", 10, FontStyle.Bold);
public ChatMessageControl()
{
DoubleBuffered = true;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
int avatarSize = 32;
int padding = 6;
// first, draw the avatar
Rectangle pfpRect = new(padding, padding, avatarSize, avatarSize);
e.Graphics.DrawImage(Avatar ?? Resources.DefaultPfp, pfpRect);
// then draw the username
int textLeft = padding * 2 + avatarSize;
int textWidth = Width - textLeft - padding;
Rectangle usernameRect = new(textLeft, padding, textWidth, 20);
e.Graphics.DrawString(Username, usernameFont, Brushes.Black, usernameRect);
// finally draw the message
int messageTop = usernameRect.Bottom + 2;
Rectangle messageRect = new(textLeft, messageTop, textWidth, Height - messageTop - padding);
StringFormat fmt = new()
{
Trimming = StringTrimming.Word,
FormatFlags = 0,
Alignment = StringAlignment.Near
};
if (Username.Contains("Server"))
{
e.Graphics.DrawString(Message, messageFontBold, Brushes.Black, messageRect, fmt);
return;
}
e.Graphics.DrawString(Message, messageFont, Brushes.Black, messageRect, fmt);
}
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
Height = CalculateHeight(Width);
}
public int CalculateHeight(int width)
{
int padding = 6;
int avatarSize = 32;
int textLeft = padding * 2 + avatarSize;
int textWidth = width - textLeft - padding;
using (Graphics g = CreateGraphics())
{
SizeF usernameSize = g.MeasureString(Username, usernameFont, textWidth);
SizeF messageSize = g.MeasureString(Message, messageFont, textWidth);
int totalHeight = padding + (int)usernameSize.Height + 2 + (int)messageSize.Height + padding;
return Math.Max(totalHeight, avatarSize + 2 * padding);
}
}
}
}

View File

@ -29,23 +29,21 @@
private void InitializeComponent() private void InitializeComponent()
{ {
components = new System.ComponentModel.Container(); components = new System.ComponentModel.Container();
ListViewItem listViewItem1 = new ListViewItem("TestUser", 1);
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ChatRoom)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ChatRoom));
ListViewItem listViewItem2 = new ListViewItem("TestUser: the quick brown fox jumped over the lazy dog aaaa", 0);
rtxtChatbox = new RichTextBox(); rtxtChatbox = new RichTextBox();
btnSend = new Button(); btnSend = new Button();
lblRoomName = new Label(); lblRoomName = new Label();
lvUserList = new ListView();
ilStatusIcons = new ImageList(components); ilStatusIcons = new ImageList(components);
lvMessages = new ListView();
ilProfileImages = new ImageList(components); ilProfileImages = new ImageList(components);
lvUserList = new ListView();
fpnlMessages = new FlowLayoutPanel();
SuspendLayout(); SuspendLayout();
// //
// rtxtChatbox // rtxtChatbox
// //
rtxtChatbox.Location = new Point(12, 268); rtxtChatbox.Location = new Point(12, 322);
rtxtChatbox.Name = "rtxtChatbox"; rtxtChatbox.Name = "rtxtChatbox";
rtxtChatbox.Size = new Size(512, 54); rtxtChatbox.Size = new Size(589, 54);
rtxtChatbox.TabIndex = 1; rtxtChatbox.TabIndex = 1;
rtxtChatbox.Text = ""; rtxtChatbox.Text = "";
rtxtChatbox.KeyDown += rtxtChatbox_KeyDown; rtxtChatbox.KeyDown += rtxtChatbox_KeyDown;
@ -55,7 +53,7 @@
btnSend.FlatAppearance.BorderSize = 0; btnSend.FlatAppearance.BorderSize = 0;
btnSend.FlatStyle = FlatStyle.Flat; btnSend.FlatStyle = FlatStyle.Flat;
btnSend.Image = Properties.Resources.SendIcon; btnSend.Image = Properties.Resources.SendIcon;
btnSend.Location = new Point(530, 268); btnSend.Location = new Point(607, 322);
btnSend.Name = "btnSend"; btnSend.Name = "btnSend";
btnSend.Size = new Size(75, 54); btnSend.Size = new Size(75, 54);
btnSend.TabIndex = 2; btnSend.TabIndex = 2;
@ -74,20 +72,6 @@
lblRoomName.TabIndex = 8; lblRoomName.TabIndex = 8;
lblRoomName.Text = "Room"; lblRoomName.Text = "Room";
// //
// lvUserList
//
lvUserList.Alignment = ListViewAlignment.Left;
lvUserList.Items.AddRange(new ListViewItem[] { listViewItem1 });
lvUserList.Location = new Point(12, 43);
lvUserList.MultiSelect = false;
lvUserList.Name = "lvUserList";
lvUserList.Size = new Size(124, 219);
lvUserList.SmallImageList = ilStatusIcons;
lvUserList.TabIndex = 9;
lvUserList.UseCompatibleStateImageBehavior = false;
lvUserList.View = View.SmallIcon;
lvUserList.DoubleClick += lvUserList_DoubleClick;
//
// ilStatusIcons // ilStatusIcons
// //
ilStatusIcons.ColorDepth = ColorDepth.Depth32Bit; ilStatusIcons.ColorDepth = ColorDepth.Depth32Bit;
@ -98,20 +82,6 @@
ilStatusIcons.Images.SetKeyName(2, "Away"); ilStatusIcons.Images.SetKeyName(2, "Away");
ilStatusIcons.Images.SetKeyName(3, "DND"); ilStatusIcons.Images.SetKeyName(3, "DND");
// //
// lvMessages
//
lvMessages.Alignment = ListViewAlignment.Left;
lvMessages.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point, 0);
lvMessages.Items.AddRange(new ListViewItem[] { listViewItem2 });
lvMessages.Location = new Point(142, 43);
lvMessages.MultiSelect = false;
lvMessages.Name = "lvMessages";
lvMessages.Size = new Size(463, 219);
lvMessages.SmallImageList = ilProfileImages;
lvMessages.TabIndex = 10;
lvMessages.UseCompatibleStateImageBehavior = false;
lvMessages.View = View.SmallIcon;
//
// ilProfileImages // ilProfileImages
// //
ilProfileImages.ColorDepth = ColorDepth.Depth32Bit; ilProfileImages.ColorDepth = ColorDepth.Depth32Bit;
@ -119,17 +89,43 @@
ilProfileImages.TransparentColor = Color.Transparent; ilProfileImages.TransparentColor = Color.Transparent;
ilProfileImages.Images.SetKeyName(0, "DefaultPFP"); ilProfileImages.Images.SetKeyName(0, "DefaultPFP");
// //
// lvUserList
//
lvUserList.Alignment = ListViewAlignment.Left;
lvUserList.Location = new Point(12, 43);
lvUserList.MultiSelect = false;
lvUserList.Name = "lvUserList";
lvUserList.Size = new Size(124, 273);
lvUserList.SmallImageList = ilStatusIcons;
lvUserList.TabIndex = 9;
lvUserList.UseCompatibleStateImageBehavior = false;
lvUserList.View = View.SmallIcon;
lvUserList.DoubleClick += lvUserList_DoubleClick;
//
// fpnlMessages
//
fpnlMessages.AutoScroll = true;
fpnlMessages.BackColor = Color.White;
fpnlMessages.BorderStyle = BorderStyle.Fixed3D;
fpnlMessages.FlowDirection = FlowDirection.TopDown;
fpnlMessages.Location = new Point(142, 43);
fpnlMessages.Name = "fpnlMessages";
fpnlMessages.Size = new Size(540, 273);
fpnlMessages.TabIndex = 10;
fpnlMessages.WrapContents = false;
//
// ChatRoom // ChatRoom
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
BackColor = Color.DodgerBlue; BackColor = Color.DodgerBlue;
ClientSize = new Size(617, 334); ClientSize = new Size(694, 388);
Controls.Add(lvMessages); Controls.Add(fpnlMessages);
Controls.Add(lvUserList); Controls.Add(lvUserList);
Controls.Add(lblRoomName); Controls.Add(lblRoomName);
Controls.Add(btnSend); Controls.Add(btnSend);
Controls.Add(rtxtChatbox); Controls.Add(rtxtChatbox);
DoubleBuffered = true;
FormBorderStyle = FormBorderStyle.FixedSingle; FormBorderStyle = FormBorderStyle.FixedSingle;
Icon = (Icon)resources.GetObject("$this.Icon"); Icon = (Icon)resources.GetObject("$this.Icon");
MaximizeBox = false; MaximizeBox = false;
@ -146,9 +142,9 @@
private RichTextBox rtxtChatbox; private RichTextBox rtxtChatbox;
private Button btnSend; private Button btnSend;
private Label lblRoomName; private Label lblRoomName;
private ListView lvUserList;
private ImageList ilStatusIcons; private ImageList ilStatusIcons;
private ListView lvMessages;
private ImageList ilProfileImages; private ImageList ilProfileImages;
private ListView lvUserList;
private FlowLayoutPanel fpnlMessages;
} }
} }

View File

@ -1,4 +1,6 @@
using qtc_net_client_2.Services; using qtc_net_client_2.ClientModel;
using qtc_net_client_2.Controls;
using qtc_net_client_2.Services;
using QtCNETAPI.Dtos.User; using QtCNETAPI.Dtos.User;
using QtCNETAPI.Events; using QtCNETAPI.Events;
using QtCNETAPI.Models; using QtCNETAPI.Models;
@ -55,8 +57,7 @@ namespace qtc_net_client_2.Forms
lblRoomName.Text = Room.Name; lblRoomName.Text = Room.Name;
RoomUserList.Clear(); RoomUserList.Clear();
lvUserList.Clear(); lvUserList.Items.Clear();
lvMessages.Clear();
} }
private async void frmChat_FormClosing(object sender, FormClosingEventArgs e) private async void frmChat_FormClosing(object sender, FormClosingEventArgs e)
@ -143,7 +144,7 @@ namespace qtc_net_client_2.Forms
Invoke(async delegate () Invoke(async delegate ()
{ {
RoomUserList.Clear(); RoomUserList.Clear();
lvUserList.Clear(); lvUserList.Items.Clear();
foreach (var user in args.UserList) foreach (var user in args.UserList)
{ {
lvUserList.Items.Add(user.Username, user.Status); lvUserList.Items.Add(user.Username, user.Status);
@ -164,7 +165,7 @@ namespace qtc_net_client_2.Forms
private void _gatewayService_OnGuestUserJoin(object? sender, EventArgs e) private void _gatewayService_OnGuestUserJoin(object? sender, EventArgs e)
{ {
var args = (GuestUserJoinEventArgs)e; var args = (GuestUserJoinEventArgs)e;
AddMessage($"[SERVER] Guest User {args.Username} Has Joined {_gatewayService.CurrentRoom?.Name}"); AddMessage($"Server: Guest User {args.Username} Has Joined {_gatewayService.CurrentRoom?.Name}");
} }
private void _gatewayService_OnRoomDeleted(object? sender, EventArgs e) private void _gatewayService_OnRoomDeleted(object? sender, EventArgs e)
@ -173,8 +174,8 @@ namespace qtc_net_client_2.Forms
{ {
Invoke(delegate () Invoke(delegate ()
{ {
AddMessage($"[SERVER] This Room Was Deleted By An Admin."); AddMessage($"Server: This Room Was Deleted By An Admin.");
lvUserList.Clear(); lvUserList.Items.Clear();
RoomUserList.Clear(); RoomUserList.Clear();
lvUserList.Enabled = false; lvUserList.Enabled = false;
@ -189,9 +190,20 @@ namespace qtc_net_client_2.Forms
{ {
if (IsHandleCreated && !IsDisposed) if (IsHandleCreated && !IsDisposed)
{ {
Invoke(delegate () Invoke((Delegate)delegate ()
{ {
lvMessages.Items.Add(message, userId ?? "DefaultPfp"); var ctrl = new ChatMessageControl()
{
Avatar = ilProfileImages.Images[userId] ?? ilProfileImages.Images[0],
Username = message.Split(':')[0],
Message = message.Split(':')[1].Trim(),
Width = fpnlMessages.ClientSize.Width - SystemInformation.VerticalScrollBarWidth
};
ctrl.Height = ctrl.CalculateHeight(ctrl.Width);
fpnlMessages.Controls.Add(ctrl);
fpnlMessages.VerticalScroll.Value = fpnlMessages.VerticalScroll.Maximum;
fpnlMessages.PerformLayout();
}); });
} }
} }

View File

@ -124,91 +124,90 @@
<value> <value>
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAuhMAAAJNU0Z0AUkBTAIBAQQB SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAchMAAAJNU0Z0AUkBTAIBAQQB
AAEQAQEBEAEBARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/ AAEYAQIBGAECARABAAEQAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoAwABQAMAASADAAEBAQABIAYAASD/
AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AC4AAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AC4AAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B
0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYB 0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYB
BwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekD BwM0AVQDUQGiA14B0gNaAekDYAHoA10B0QNQAZ8DMQFNAwUBBhgAAwYBBwM0AVQDUQGiA14B0gNaAekD
YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA1oB9QMkAfsDRgH+A0YB/gMkAfsDUwH0A2IB YAHoA10B0QNQAZ8DMQFNAwUBBhQAAyABLQNUAasDWwHkA1oB9QMkAfsDZwH+A2cB/gMkAfsDUwH0A2IB
4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQBWQFaAVkB9QEhAV4BIQH7ASIBYgEiAf4BIgFiASIB/gEhAV4B 4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQDWgH1ASEBXgEhAfsBQwGAAUMB/gFDAYABQwH+ASEBXgEhAfsD
IQH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAVkCWgH1ASECXgH7ASICYgH+ASICYgH+ASEC UwH0A2IB4QNRAaEDHgEqEAADIAEtA1QBqwNbAeQDWgH1ASECXgH7AUMCgAH+AUMCgAH+ASECXgH7A1MB
XgH7A1MB9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkAlkBWgH1AiEBXgH7AiIBYgH+AiIBYgH+AiEB 9ANiAeEDUQGhAx4BKhAAAyABLQNUAasDWwHkA1oB9QIhAV4B+wJDAYAB/gJDAYAB/gIhAV4B+wNTAfQD
XgH7A1MB9ANiAeEDUQGhAx4BKgwAAxsBJQNYAb0DWgHyA0oB/gMwAf8DOQH/AzwB/wM2Af8DKgH/AyQB YgHhA1EBoQMeASoMAAMbASUDWAG9A1oB8gNrAf4DMAH/AzkB/wM8Af8DNgH/AyoB/wMkAf8DQAH9A14B
/wNAAf0DXgHwA1YBsgMaASMIAAMbASUDWAG9A1oB8gEiAWoBIgH+AQABVwEAAf8BAAFnAQAB/wEAAWwB 8ANWAbIDGgEjCAADGwElA1gBvQNaAfIBQwGAAUMB/gEAAVcBAAH/AQABZwEAAf8BAAFsAQAB/wEAAWEB
AAH/AQABYQEAAf8BAAFMAQAB/wEAAUABAAH/A0AB/QNeAfADVgGyARkBGgEZASMIAAMbASUDWAG9A1oB AAH/AQABTAEAAf8BAAFAAQAB/wNAAf0DXgHwA1YBsgEZARoBGQEjCAADGwElA1gBvQNaAfIBQwKAAf4B
8gEiAmoB/gEAAlcB/wEAAmcB/wEAAmwB/wEAAmEB/wEAAkwB/wEAAkAB/wNAAf0DXgHwA1YBsgEZAhoB AAJXAf8BAAJnAf8BAAJsAf8BAAJhAf8BAAJMAf8BAAJAAf8DQAH9A14B8ANWAbIBGQIaASMIAAMbASUD
IwgAAxsBJQNYAb0DWgHyAiIBagH+AgABVwH/AgABZwH/AgABbAH/AgABYQH/AgABTAH/AgABQAH/A0AB WAG9A1oB8gJDAYAB/gIAAVcB/wIAAWcB/wIAAWwB/wIAAWEB/wIAAUwB/wIAAUAB/wNAAf0DXgHwA1YB
/QNeAfADVgGyAhkBGgEjBAADAwEEA1IBpQNgAfMDSQH/A1UB/wNlAf8DcQH/A3UB/wNxAf8DZAH/A0wB sgIZARoBIwQAAwMBBANSAaUDYAHzA0kB/wNVAf8DZQH/A3EB/wN1Af8DcQH/A2QB/wNMAf8DMQH/A2cB
/wMxAf8DRgH+A2IB7gNQAZoDAwEEAwMBBAFSAVMBUgGlAWABbwFgAfMBAAGCAQAB/wEAAZkBAAH/AQAB /gNiAe4DUAGaAwMBBAMDAQQBUgFTAVIBpQFgAW8BYAHzAQABggEAAf8BAAGZAQAB/wEAAbYBAAH/AQAB
tgEAAf8BAAHMAQAB/wEAAdMBAAH/AQABywEAAf8BAAGzAQAB/wEAAYgBAAH/AQABVwEAAf8BIgFiASIB zAEAAf8BAAHTAQAB/wEAAcsBAAH/AQABswEAAf8BAAGIAQAB/wEAAVcBAAH/AUMBgAFDAf4DYgHuA1AB
/gNiAe4DUAGaAwMBBAMDAQQBUgJTAaUBYAJvAfMBAAKCAf8BAAKZAf8BAAK2Af8BAALMAf8BAALTAf8B mgMDAQQDAwEEAVICUwGlAWACbwHzAQACggH/AQACmQH/AQACtgH/AQACzAH/AQAC0wH/AQACywH/AQAC
AALLAf8BAAKzAf8BAAKIAf8BAAJXAf8BIgJiAf4DYgHuA1ABmgMDAQQDAwEEAlIBUwGlAmABbwHzAgAB swH/AQACiAH/AQACVwH/AUMCgAH+A2IB7gNQAZoDAwEEAwMBBAJSAVMBpQJgAW8B8wIAAYIB/wIAAZkB
ggH/AgABmQH/AgABtgH/AgABzAH/AgAB0wH/AgABywH/AgABswH/AgABiAH/AgABVwH/AiIBYgH+A2IB /wIAAbYB/wIAAcwB/wIAAdMB/wIAAcsB/wIAAbMB/wIAAYgB/wIAAVcB/wJDAYAB/gNiAe4DUAGaAwMB
7gNQAZoDAwEEAy0BRANgAegDgAH+A24B/wN7Af8DhQH/A4oB/wOMAf8DigH/A4UB/wN2Af8DVwH/AzIB BAMtAUQDYAHoA4AB/gNuAf8DewH/A4UB/wOKAf8DjAH/A4oB/wOFAf8DdgH/A1cB/wMyAf8DQAH9A14B
/wNAAf0DXgHdAyoBPwMtAUQBYAFpAWAB6AEiAYABIgH+AQABxgEAAf8BAAHcAQAB/wEAAe4BAAH/AQAB 3QMqAT8DLQFEAWABaQFgAegBQwGAAUMB/gEAAcYBAAH/AQAB3AEAAf8BAAHuAQAB/wEAAfgBAAH/AQAB
+AEAAf8BAAH7AQAB/wEAAfkBAAH/AQAB7wEAAf8BAAHUAQAB/wEAAZwBAAH/AQABWgEAAf8DQAH9A14B +wEAAf8BAAH5AQAB/wEAAe8BAAH/AQAB1AEAAf8BAAGcAQAB/wEAAVoBAAH/A0AB/QNeAd0DKgE/Ay0B
3QMqAT8DLQFEAWACaQHoASICgAH+AQACxgH/AQAC3AH/AQAC7gH/AQAC+AH/AQAC+wH/AQAC+QH/AQAC RAFgAmkB6AFDAoAB/gEAAsYB/wEAAtwB/wEAAu4B/wEAAvgB/wEAAvsB/wEAAvkB/wEAAu8B/wEAAtQB
7wH/AQAC1AH/AQACnAH/AQACWgH/A0AB/QNeAd0DKgE/Ay0BRAJgAWkB6AIiAYAB/gIAAcYB/wIAAdwB /wEAApwB/wEAAloB/wNAAf0DXgHdAyoBPwMtAUQCYAFpAegCQwGAAf4CAAHGAf8CAAHcAf8CAAHuAf8C
/wIAAe4B/wIAAfgB/wIAAfsB/wIAAfkB/wIAAe8B/wIAAdQB/wIAAZwB/wIAAVoB/wNAAf0DXgHdAyoB AAH4Af8CAAH7Af8CAAH5Af8CAAHvAf8CAAHUAf8CAAGcAf8CAAFaAf8DQAH9A14B3QMqAT8DTgGVA3cB
PwNOAZUDdwH4A38B/wOFAf8DigH/A40B/wOOAf8DjgH/A44B/wONAf8DiQH/A3cB/wNNAf8DJQH/A1oB +AN/Af8DhQH/A4oB/wONAf8DjgH/A44B/wOOAf8DjQH/A4kB/wN3Af8DTQH/AyUB/wNaAfIDSgGLA04B
8gNKAYsDTgGVAU8BfAFPAfgBAAHlAQAB/wEAAe8BAAH/AQAB+AEAAf8BAAH9AQAB/wEAAf8BAAH/AQAB lQFcAXwBXAH4AQAB5QEAAf8BAAHvAQAB/wEAAfgBAAH/AQAB/QEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
/wEAAf8BAAH/AQAB/wEAAf4BAAH/AQAB9gEAAf8BAAHVAQAB/wEAAYsBAAH/AQABQQEAAf8DWgHyA0oB /wEAAf8BAAH+AQAB/wEAAfYBAAH/AQAB1QEAAf8BAAGLAQAB/wEAAUEBAAH/A1oB8gNKAYsDTgGVAVwC
iwNOAZUBTwJ8AfgBAALlAf8BAALvAf8BAAL4Af8BAAL9Af8BAAP/AQAD/wEAA/8BAAL+Af8BAAL2Af8B fAH4AQAC5QH/AQAC7wH/AQAC+AH/AQAC/QH/AQAD/wEAA/8BAAP/AQAC/gH/AQAC9gH/AQAC1QH/AQAC
AALVAf8BAAKLAf8BAAJBAf8DWgHyA0oBiwNOAZUCTwF8AfgCAAHlAf8CAAHvAf8CAAH4Af8CAAH9Af8C iwH/AQACQQH/A1oB8gNKAYsDTgGVAlwBfAH4AgAB5QH/AgAB7wH/AgAB+AH/AgAB/QH/AgAC/wIAAv8C
AAL/AgAC/wIAAv8CAAH+Af8CAAH2Af8CAAHVAf8CAAGLAf8CAAFBAf8DWgHyA0oBiwNfAdMDfgH8A5MB AAL/AgAB/gH/AgAB9gH/AgAB1QH/AgABiwH/AgABQQH/A1oB8gNKAYsDXwHTA34B/AOTAf8DjgH/A40B
/wOOAf8DjQH/A44B/wOOAf8DjgH/A44B/wOOAf8DjQH/A4UB/wNnAf8DNAH/A0EB+QNaAcQBWwFfAVsB /wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wOFAf8DZwH/AzQB/wNBAfkDWgHEAVsBXwFbAdMBKwF+ASsB
0wErAZUBKwH8AQ4B+wEOAf8BAwH9AQMB/wEAAf4BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB /AEOAfsBDgH/AQMB/QEDAf8BAAH+AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
/wEAAf8BAAH/AQAB/wEAAf0BAAH/AQAB7wEAAf8BAAG5AQAB/wEAAV0BAAH/A0EB+QNaAcQBWwJfAdMB /wEAAf8BAAH9AQAB/wEAAe8BAAH/AQABuQEAAf8BAAFdAQAB/wNBAfkDWgHEAVsCXwHTASsCfgH8AQ4C
KwKVAfwBDgL7Af8BAwL9Af8BAAL+Af8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv0B/wEAAu8B/wEAArkB +wH/AQMC/QH/AQAC/gH/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL9Af8BAALvAf8BAAK5Af8BAAJdAf8D
/wEAAl0B/wNBAfkDWgHEAlsBXwHTAisBlQH8Ag4B+wH/AgMB/QH/AgAB/gH/AgAC/wIAAv8CAAL/AgAC QQH5A1oBxAJbAV8B0wIrAX4B/AIOAfsB/wIDAf0B/wIAAf4B/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAB
/wIAAv8CAAH9Af8CAAHvAf8CAAG5Af8CAAFdAf8DQQH5A1oBxANuAfUDgAH+A58B/wOTAf8DjwH/A44B /QH/AgAB7wH/AgABuQH/AgABXQH/A0EB+QNaAcQDbgH1A4AB/gOfAf8DkwH/A48B/wOOAf8DjgH/A44B
/wOOAf8DjgH/A44B/wOOAf8DjgH/A4sB/wN3Af8DSAH/A0AB/QNiAeEBWgFuAVoB9QFGAbsBRgH+AScB /wOOAf8DjgH/A44B/wOLAf8DdwH/A0gB/wNAAf0DYgHhAVoBbgFaAfUBZwGAAWcB/gEnAf8BJwH/AQsB
/wEnAf8BCwH/AQsB/wEBAf8BAQH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB /wELAf8BAQH/AQEB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
/wEAAf8BAAH/AQAB+QEAAf8BAAHWAQAB/wEAAYEBAAH/A0AB/QNiAeEBWgJuAfUBRgK7Af4BJwP/AQsD /wEAAfkBAAH/AQAB1gEAAf8BAAGBAQAB/wNAAf0DYgHhAVoCbgH1AWcCgAH+AScD/wELA/8BAQP/AQAD
/wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL5Af8BAALWAf8BAAKBAf8DQAH9A2IB4QJaAW4B /wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAC+QH/AQAC1gH/AQACgQH/A0AB/QNiAeECWgFuAfUCZwGAAf4C
9QJGAbsB/gInAv8CCwL/AgEC/wIAAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAfkB/wIAAdYB/wIAAYEB JwL/AgsC/wIBAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAH5Af8CAAHWAf8CAAGBAf8DQAH9A2IB
/wNAAf0DYgHhA2MB9gOAAf4DqwH/A5kB/wOQAf8DjgH/A44B/wOOAf8DjgH/A44B/wOOAf8DjQH/A38B 4QNjAfYDgAH+A6sB/wOZAf8DkAH/A44B/wOOAf8DjgH/A44B/wOOAf8DjgH/A40B/wN/Af8DVQH/A0AB
/wNVAf8DQAH9A14B4gFIAW8BSAH2AWkBuwFpAf4BQgH/AUIB/wEZAf8BGQH/AQQB/wEEAf8BAAH/AQAB /QNeAeIBSAFjAUgB9gOAAf4BQgH/AUIB/wEZAf8BGQH/AQQB/wEEAf8BAAH/AQAB/wEAAf8BAAH/AQAB
/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH9AQAB/wEAAeQBAAH/AQAB /wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH9AQAB/wEAAeQBAAH/AQABmAEAAf8DQAH9A14B
mAEAAf8DQAH9A14B4gFIAm8B9gFpArsB/gFCA/8BGQP/AQQD/wEAA/8BAAP/AQAD/wEAA/8BAAP/AQAD 4gFIAmMB9gOAAf4BQgP/ARkD/wEEA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAA/8BAAL9Af8BAALkAf8B
/wEAAv0B/wEAAuQB/wEAApgB/wNAAf0DXgHiAkgBbwH2AmkBuwH+AkIC/wIZAv8CBAL/AgAC/wIAAv8C AAKYAf8DQAH9A14B4gJIAWMB9gOAAf4CQgL/AhkC/wIEAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAv8C
AAL/AgAC/wIAAv8CAAL/AgAB/QH/AgAB5AH/AgABmAH/A0AB/QNeAeIDYQHWA34B/AO4Af8DowH/A5MB AAH9Af8CAAHkAf8CAAGYAf8DQAH9A14B4gNhAdYDfgH8A7gB/wOjAf8DkwH/A44B/wOOAf8DjgH/A44B
/wOOAf8DjgH/A44B/wOOAf8DjgH/A44B/wONAf8DggH/A1wB/wNNAfoDWgHHAVwBYQFcAdYBZAGbAWQB /wOOAf8DjgH/A40B/wOCAf8DXAH/A00B+gNaAccBXAFhAVwB1gFkAX4BZAH8AV8B/wFfAf8BLwH/AS8B
/AFfAf8BXwH/AS8B/wEvAf8BDAH/AQwB/wEBAf8BAQH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB /wEMAf8BDAH/AQEB/wEBAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAAH/AQAB
/wEAAf8BAAH/AQAB/wEAAf4BAAH/AQAB6gEAAf8BAAGlAQAB/wE4AU0BOAH6A1oBxwFcAmEB1gFkApsB /gEAAf8BAAHqAQAB/wEAAaUBAAH/A00B+gNaAccBXAJhAdYBZAJ+AfwBXwP/AS8D/wEMA/8BAQP/AQAD
/AFfA/8BLwP/AQwD/wEBA/8BAAP/AQAD/wEAA/8BAAP/AQAD/wEAAv4B/wEAAuoB/wEAAqUB/wE4Ak0B /wEAA/8BAAP/AQAD/wEAA/8BAAL+Af8BAALqAf8BAAKlAf8DTQH6A1oBxwJcAWEB1gJkAX4B/AJfAv8C
+gNaAccCXAFhAdYCZAGbAfwCXwL/Ai8C/wIMAv8CAQL/AgAC/wIAAv8CAAL/AgAC/wIAAv8CAAH+Af8C LwL/AgwC/wIBAv8CAAL/AgAC/wIAAv8CAAL/AgAC/wIAAf4B/wIAAeoB/wIAAaUB/wNNAfoDWgHHA1AB
AAHqAf8CAAGlAf8COAFNAfoDWgHHA1ABmgN9AfkDxQH/A7IB/wOcAf8DkQH/A44B/wOOAf8DjgH/A44B mgNqAfkDxQH/A7IB/wOcAf8DkQH/A44B/wOOAf8DjgH/A44B/wOPAf8DjgH/A4MB/wNgAf8DWgHyA0wB
/wOPAf8DjgH/A4MB/wNgAf8DWgHyA0wBkANQAZoBagGHAWoB+QF8Af8BfAH/AVEB/wFRAf8BHwH/AR8B kANQAZoDagH5AXwB/wF8Af8BUQH/AVEB/wEfAf8BHwH/AQcB/wEHAf8BAQH/AQEB/wEAAf8BAAH/AQAB
/wEHAf8BBwH/AQEB/wEBAf8BAAH/AQAB/wEAAf8BAAH/AQAB/wEAAf8BAgH/AQIB/wECAf4BAgH/AQAB /wEAAf8BAAH/AQAB/wECAf8BAgH/AQIB/gECAf8BAAHrAQAB/wEAAa0BAAH/AVoBawFaAfIDTAGQA1AB
6wEAAf8BAAGtAQAB/wFaAWsBWgHyA0wBkANQAZoBagKHAfkBfAP/AVED/wEfA/8BBwP/AQED/wEAA/8B mgNqAfkBfAP/AVED/wEfA/8BBwP/AQED/wEAA/8BAAP/AQAD/wECA/8BAgL+Af8BAALrAf8BAAKtAf8B
AAP/AQAD/wECA/8BAgL+Af8BAALrAf8BAAKtAf8BWgJrAfIDTAGQA1ABmgJqAYcB+QJ8Av8CUQL/Ah8C WgJrAfIDTAGQA1ABmgNqAfkCfAL/AlEC/wIfAv8CBwL/AgEC/wIAAv8CAAL/AgAC/wICAv8CAgH+Af8C
/wIHAv8CAQL/AgAC/wIAAv8CAAL/AgIC/wICAf4B/wIAAesB/wIAAa0B/wJaAWsB8gNMAZADLwFJA2wB AAHrAf8CAAGtAf8CWgFrAfIDTAGQAy8BSQNsAesDgAH+A8YB/wOuAf8DnAH/A5MB/wOQAf8DjwH/A5AB
6wOMAf4DxgH/A64B/wOcAf8DkwH/A5AB/wOPAf8DkAH/A5MB/wOTAf8DhQH/A0QB/QNgAeADLQFFAy8B /wOTAf8DkwH/A4UB/wNAAf0DYAHgAy0BRQMvAUkDbAHrA4AB/gF/Af8BfwH/AUkB/wFJAf8BHwH/AR8B
SQNsAesBgAG7AYAB/gF/Af8BfwH/AUkB/wFJAf8BHwH/AR8B/wEMAf8BDAH/AQUB/wEFAf8BAwH/AQMB /wEMAf8BDAH/AQUB/wEFAf8BAwH/AQMB/wEFAf8BBQH/AQoB/wEKAf8BCgH+AQoB/wEBAe0BAQH/AUAB
/wEFAf8BBQH/AQoB/wEKAf8BCgH+AQoB/wEBAe0BAQH/AUABtgFAAf0BYAFmAWAB4AMtAUUDLwFJA2wB tgFAAf0BYAFmAWAB4AMtAUUDLwFJA2wB6wOAAf4BfwP/AUkD/wEfA/8BDAP/AQUD/wEDA/8BBQP/AQoD
6wGAArsB/gF/A/8BSQP/AR8D/wEMA/8BBQP/AQMD/wEFA/8BCgP/AQoC/gH/AQEC7QH/AUACtgH9AWAC /wEKAv4B/wEBAu0B/wFAArYB/QFgAmYB4AMtAUUDLwFJA2wB6wOAAf4CfwL/AkkC/wIfAv8CDAL/AgUC
ZgHgAy0BRQMvAUkDbAHrAoABuwH+An8C/wJJAv8CHwL/AgwC/wIFAv8CAwL/AgUC/wIKAv8CCgH+Af8C /wIDAv8CBQL/AgoC/wIKAf4B/wIBAe0B/wJAAbYB/QJgAWYB4AMtAUUDAwEEA1YBrgNuAfUD2QH/A8sB
AQHtAf8CQAG2Af0CYAFmAeADLQFFAwMBBANWAa4DbgH1A9kB/wPLAf8DtwH/A6cB/wOdAf8DmgH/A5wB /wO3Af8DpwH/A50B/wOaAf8DnAH/A58B/wObAf8DiQH/A2gB8ANSAaMDAwEEAwMBBANWAa4DbgH1AagB
/wOfAf8DmwH/A4kB/wNoAfADUgGjAwMBBAMDAQQDVgGuA24B9QGoAf8BqAH/AYkB/wGJAf8BXAH/AVwB /wGoAf8BiQH/AYkB/wFcAf8BXAH/ATcB/wE3Af8BIgH/ASIB/wEbAf8BGwH/AR8B/wEfAf8BJgH/ASYB
/wE3Af8BNwH/ASIB/wEiAf8BGwH/ARsB/wEfAf8BHwH/ASYB/wEmAf8BHQH/AR0B/wEFAfMBBQH/AV4B /wEdAf8BHQH/AQUB8wEFAf8BXgFoAV4B8ANSAaMDAwEEAwMBBANWAa4DbgH1AagD/wGJA/8BXAP/ATcD
aAFeAfADUgGjAwMBBAMDAQQDVgGuA24B9QGoA/8BiQP/AVwD/wE3A/8BIgP/ARsD/wEfA/8BJgP/AR0D /wEiA/8BGwP/AR8D/wEmA/8BHQP/AQUC8wH/AV4CaAHwA1IBowMDAQQDAwEEA1YBrgNuAfUCqAL/AokC
/wEFAvMB/wFeAmgB8ANSAaMDAwEEAwMBBANWAa4DbgH1AqgC/wKJAv8CXAL/AjcC/wIiAv8CGwL/Ah8C /wJcAv8CNwL/AiIC/wIbAv8CHwL/AiYC/wIdAv8CBQHzAf8CXgFoAfADUgGjAwMBBAQAAxwBJwNdAccD
/wImAv8CHQL/AgUB8wH/Al4BaAHwA1IBowMDAQQEAAMcAScDXQHHA2kB9gObAf4D1wH/A8wB/wPCAf8D YwH2A4AB/gPXAf8DzAH/A8IB/wO7Af8DtwH/A7EB/wOAAf4DaAH0A1kBvAMbASYIAAMcAScDXQHHA2MB
uwH/A7cB/wOxAf8DgAH+A2gB9ANZAbwDGwEmCAADHAEnA10BxwFjAW8BYwH2AYABuwGAAf4BpQH/AaUB 9gOAAf4BpQH/AaUB/wGLAf8BiwH/AXQB/wF0Af8BZgH/AWYB/wFcAf8BXAH/AU4B/wFOAf8BcwGAAXMB
/wGLAf8BiwH/AXQB/wF0Af8BZgH/AWYB/wFcAf8BXAH/AU4B/wFOAf8BUgG7AVIB/gFTAWgBUwH0AVcB /gFTAWgBUwH0AVcBWQFXAbwDGwEmCAADHAEnA10BxwNjAfYDgAH+AaUD/wGLA/8BdAP/AWYD/wFcA/8B
WQFXAbwDGwEmCAADHAEnA10BxwFjAm8B9gGAArsB/gGlA/8BiwP/AXQD/wFmA/8BXAP/AU4D/wFSArsB TgP/AXMCgAH+AVMCaAH0AVcCWQG8AxsBJggAAxwBJwNdAccDYwH2A4AB/gKlAv8CiwL/AnQC/wJmAv8C
/gFTAmgB9AFXAlkBvAMbASYIAAMcAScDXQHHAmMBbwH2AoABuwH+AqUC/wKLAv8CdAL/AmYC/wJcAv8C XAL/Ak4C/wJzAYAB/gJTAWgB9AJXAVkBvAMbASYMAAMhATADWQG2A2IB7gN9AfoDvgH9A9QB/wPMAf8D
TgL/AlIBuwH+AlMBaAH0AlcBWQG8AxsBJgwAAyEBMANZAbYDYgHuA30B+gO+Af0D1AH/A8wB/wO+Af0D vgH9A2oB+QNsAesDVQGsAx8BLBAAAyEBMANZAbYDYgHuA30B+gGuAb4BrgH9AZ8B/wGfAf8BjAH/AYwB
dQH5A2wB6wNVAawDHwEsEAADIQEwA1kBtgNiAe4BfQGEAX0B+gGuAb4BrgH9AZ8B/wGfAf8BjAH/AYwB /wFAAb4BQAH9AWgBagFoAfkBYQFsAWEB6wNVAawDHwEsEAADIQEwA1kBtgNiAe4DfQH6Aa4CvgH9AZ8D
/wFUAb4BVAH9AWgBhwFoAfkBYQFsAWEB6wNVAawDHwEsEAADIQEwA1kBtgNiAe4BfQKEAfoBrgK+Af0B /wGMA/8BQAK+Af0BaAJqAfkBYQJsAesDVQGsAx8BLBAAAyEBMANZAbYDYgHuA30B+gKuAb4B/QKfAv8C
nwP/AYwD/wFUAr4B/QFoAocB+QFhAmwB6wNVAawDHwEsEAADIQEwA1kBtgNiAe4CfQGEAfoCrgG+Af0C jAL/AkABvgH9AmgBagH5AmEBbAHrA1UBrAMfASwUAAMGAQcDNgFYA1UBrANmAeUDfgH8A18B+wNlAeID
nwL/AowC/wJUAb4B/QJoAYcB+QJhAWwB6wNVAawDHwEsFAADBgEHAzYBWANVAawDZgHlA4IB/AOJAfsD UwGnAzMBUQMGAQcYAAMGAQcDNgFYA1UBrANmAeUDfgH8AV8BZwFfAfsDZQHiA1MBpwMzAVEDBgEHGAAD
ZQHiA1MBpwMzAVEDBgEHGAADBgEHAzYBWANVAawDZgHlAX4BmwF+AfwBXwGUAV8B+wNlAeIDUwGnAzMB BgEHAzYBWANVAawDZgHlA34B/AFfAmcB+wNlAeIDUwGnAzMBUQMGAQcYAAMGAQcDNgFYA1UBrANmAeUD
UQMGAQcYAAMGAQcDNgFYA1UBrANmAeUBfgKbAfwBXwKUAfsDZQHiA1MBpwMzAVEDBgEHGAADBgEHAzYB fgH8Al8BZwH7A2UB4gNTAacDMwFRAwYBBwwAAUIBTQE+BwABPgMAASgDAAFAAwABIAMAAQEBAAEBBgAB
WANVAawDZgHlAn4BmwH8Al8BlAH7A2UB4gNTAacDMwFRAwYBBwwAAUIBTQE+BwABPgMAASgDAAFAAwAB ARYAA/+BAAHgAQcB4AEHAeABBwHgAQcBwAEDAcABAwHAAQMBwAEDAYABAQGAAQEBgAEBAYABAVAAAYAB
IAMAAQEBAAEBBgABARYAA/+BAAHgAQcB4AEHAeABBwHgAQcBwAEDAcABAwHAAQMBwAEDAYABAQGAAQEB AQGAAQEBgAEBAYABAQHAAQMBwAEDAcABAwHAAQMB4AEHAeABBwHgAQcB4AEHCw==
gAEBAYABAVAAAYABAQGAAQEBgAEBAYABAQHAAQMBwAEDAcABAwHAAQMB4AEHAeABBwHgAQcB4AEHCw==
</value> </value>
</data> </data>
<metadata name="ilProfileImages.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> <metadata name="ilProfileImages.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
@ -219,7 +218,7 @@
AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs
LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu
SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAlhsAAAJNU0Z0AUkBTAMBAQAB SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAlhsAAAJNU0Z0AUkBTAMBAQAB
OAEAATgBAAEgAQABIAEABP8BIQEACP8BQgFNATYHAAE2AwABKAMAAYADAAEgAwABAQEAASAGAAFAEgAC QAEBAUABAQEgAQABIAEABP8BIQEACP8BQgFNATYHAAE2AwABKAMAAYADAAEgAwABAQEAASAGAAFAEgAC
RwFGAYACRwFGAYACRwFGAYABRwJGAYABRwJGAYACRwFGAYACRwFGAYABRwJGAYABRwJGAYABRwJGAYAD RwFGAYACRwFGAYACRwFGAYABRwJGAYABRwJGAYACRwFGAYACRwFGAYABRwJGAYABRwJGAYABRwJGAYAD
RgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcB RgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcBRgGAAkcB
RgGAAkcBRgGAA0YBgAFHAkYBgAFHAkYBgAFHAkYBgAFHAkYBgAFHAkYBgAJHAUYBgAJHAUYBgAJHAUYB RgGAAkcBRgGAA0YBgAFHAkYBgAFHAkYBgAFHAkYBgAFHAkYBgAFHAkYBgAJHAUYBgAJHAUYBgAJHAUYB

View File

@ -631,9 +631,6 @@ namespace qtc_net_client_2
LoggingService.LogString($"Logged In As '{_apiService.CurrentUser.Username}'"); LoggingService.LogString($"Logged In As '{_apiService.CurrentUser.Username}'");
LoggingService.LogString("Starting SignalR Connection..."); LoggingService.LogString("Starting SignalR Connection...");
// start gateway connection
await _gatewayService.StartAsync();
// subscribe to gateway events // subscribe to gateway events
_gatewayService.OnServerReconnecting += _gatewayService_OnServerReconnecting; _gatewayService.OnServerReconnecting += _gatewayService_OnServerReconnecting;
_gatewayService.OnServerReconnected += _gatewayService_OnServerReconnected; _gatewayService.OnServerReconnected += _gatewayService_OnServerReconnected;
@ -647,6 +644,9 @@ namespace qtc_net_client_2
_apiService.OnCurrentUserUpdate += _apiService_OnCurrentUserUpdate; _apiService.OnCurrentUserUpdate += _apiService_OnCurrentUserUpdate;
// start gateway connection
await _gatewayService.StartAsync();
if (_gatewayService.HubConnection != null && _gatewayService.HubConnection.State == Microsoft.AspNetCore.SignalR.Client.HubConnectionState.Connected) if (_gatewayService.HubConnection != null && _gatewayService.HubConnection.State == Microsoft.AspNetCore.SignalR.Client.HubConnectionState.Connected)
{ {
LoggingService.LogString("Connected To SignalR Succesfully."); LoggingService.LogString("Connected To SignalR Succesfully.");

View File

@ -81,7 +81,7 @@ namespace qtc_net_client_2.Properties {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to 6.5. /// Looks up a localized string similar to 6.5.1.
/// </summary> /// </summary>
internal static string AssemblyVersion { internal static string AssemblyVersion {
get { get {

View File

@ -173,7 +173,7 @@
<value>..\Icons\MessageIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Icons\MessageIcon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data> </data>
<data name="AssemblyVersion" xml:space="preserve"> <data name="AssemblyVersion" xml:space="preserve">
<value>6.5</value> <value>6.5.1</value>
</data> </data>
<data name="cobalt_sittingatputer" type="System.Resources.ResXFileRef, System.Windows.Forms"> <data name="cobalt_sittingatputer" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\cobalt_sittingatputer.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value> <value>..\Resources\cobalt_sittingatputer.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>