Adjusted ApplyingChangingForm

Simplified the ApplyingChangingForm size positioning
and made the messages a bit less technical. Also added
in a submessage so that can explain things a bit better
in the future if we need to.
This commit is contained in:
temacdonald 2020-05-15 22:25:44 +12:00
parent da6fbc610e
commit e91858836d
12 changed files with 1902 additions and 1799 deletions

View File

@ -533,8 +533,8 @@ namespace HeliosPlus.Shared
{
var dict = new Dictionary<string, string>()
{
{ "Applying_Topos", Language.Applying_Topologies },
{ "Applying_Paths", Language.Applying_Paths }
{ "Applying_Topos", Language.Applying_First_Message },
{ "Applying_Paths", Language.Applying_Second_Message }
};
return dict;
}

View File

@ -70,20 +70,20 @@ namespace HeliosPlus.Shared.Resources {
}
/// <summary>
/// Looks up a localized string similar to Applying Paths.
/// Looks up a localized string similar to Pulling everything apart.
/// </summary>
internal static string Applying_Paths {
internal static string Applying_First_Message {
get {
return ResourceManager.GetString("Applying_Paths", resourceCulture);
return ResourceManager.GetString("Applying_First_Message", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Applying Toplogies.
/// Looks up a localized string similar to Putting it back together.
/// </summary>
internal static string Applying_Topologies {
internal static string Applying_Second_Message {
get {
return ResourceManager.GetString("Applying_Topologies", resourceCulture);
return ResourceManager.GetString("Applying_Second_Message", resourceCulture);
}
}

View File

@ -123,10 +123,10 @@
<data name="UN_TITLED_PROFILE" xml:space="preserve">
<value>UN-TITLED-PROFILE</value>
</data>
<data name="Applying_Paths" xml:space="preserve">
<value>Applying Paths</value>
<data name="Applying_First_Message" xml:space="preserve">
<value>Pulling everything apart</value>
</data>
<data name="Applying_Topologies" xml:space="preserve">
<value>Applying Toplogies</value>
<data name="Applying_Second_Message" xml:space="preserve">
<value>Putting it back together</value>
</data>
</root>

View File

@ -94,12 +94,6 @@
</Compile>
<Compile Include="GameLibraries\UplayGame.cs" />
<Compile Include="GameLibraries\SteamGame.cs" />
<Compile Include="UIForms\EditForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="UIForms\EditForm.Designer.cs">
<DependentUpon>EditForm.cs</DependentUpon>
</Compile>
<Compile Include="UIForms\ShortcutForm.cs">
<SubType>Form</SubType>
</Compile>
@ -137,9 +131,6 @@
<EmbeddedResource Include="UIForms\ShortcutForm.resx">
<DependentUpon>ShortcutForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIForms\EditForm.resx">
<DependentUpon>EditForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="UIForms\DisplayProfileForm.resx">
<DependentUpon>DisplayProfileForm.cs</DependentUpon>
</EmbeddedResource>

View File

@ -107,7 +107,7 @@ namespace HeliosPlus.Resources {
}
/// <summary>
/// Looks up a localized string similar to Apply Profile.
/// Looks up a localized string similar to Apply_Profile.
/// </summary>
internal static string Apply_Profile {
get {
@ -115,24 +115,6 @@ namespace HeliosPlus.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Applying Paths.
/// </summary>
internal static string Applying_Paths {
get {
return ResourceManager.GetString("Applying_Paths", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Applying Topologies.
/// </summary>
internal static string Applying_Topologies {
get {
return ResourceManager.GetString("Applying_Topologies", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Are you sure?.
/// </summary>
@ -430,6 +412,15 @@ namespace HeliosPlus.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to It won&apos;t be long now.
/// </summary>
internal static string It_wont_be_long_now {
get {
return ResourceManager.GetString("It_wont_be_long_now", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [None].
/// </summary>
@ -502,6 +493,15 @@ namespace HeliosPlus.Resources {
}
}
/// <summary>
/// Looks up a localized string similar to Press ESC to cancel.
/// </summary>
internal static string Press_ESC_to_cancel {
get {
return ResourceManager.GetString("Press_ESC_to_cancel", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to Process Information.
/// </summary>

View File

@ -126,9 +126,6 @@
<data name="This_profile_is_currently_impossible_to_apply" xml:space="preserve">
<value>This profile is currently impossible to apply.</value>
</data>
<data name="Apply_Profile" xml:space="preserve">
<value>Apply Profile</value>
</data>
<data name="Profile_is_invalid_or_not_possible_to_apply" xml:space="preserve">
<value>Profile is invalid or not possible to apply.</value>
</data>
@ -363,10 +360,13 @@
<data name="Waiting_for_the_0_to_terminate" xml:space="preserve">
<value>Waiting for the '{0}' to terminate</value>
</data>
<data name="Applying_Paths" xml:space="preserve">
<value>Applying Paths</value>
<data name="Apply_Profile" xml:space="preserve">
<value>Apply_Profile</value>
</data>
<data name="Applying_Topologies" xml:space="preserve">
<value>Applying Topologies</value>
<data name="It_wont_be_long_now" xml:space="preserve">
<value>It won't be long now</value>
</data>
<data name="Press_ESC_to_cancel" xml:space="preserve">
<value>Press ESC to cancel</value>
</data>
</root>

View File

@ -34,6 +34,7 @@ namespace HeliosPlus.UIForms
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ApplyingChangesForm));
this.progressPanel = new System.Windows.Forms.Panel();
this.lbl_sub_message = new System.Windows.Forms.Label();
this.lbl_message = new System.Windows.Forms.Label();
this.progressBar = new CircularProgressBar.CircularProgressBar();
this.t_start = new System.Windows.Forms.Timer(this.components);
@ -44,20 +45,31 @@ namespace HeliosPlus.UIForms
// progressPanel
//
this.progressPanel.Anchor = System.Windows.Forms.AnchorStyles.None;
this.progressPanel.Controls.Add(this.lbl_sub_message);
this.progressPanel.Controls.Add(this.lbl_message);
this.progressPanel.Controls.Add(this.progressBar);
this.progressPanel.Location = new System.Drawing.Point(12, 12);
this.progressPanel.Location = new System.Drawing.Point(12, 54);
this.progressPanel.Name = "progressPanel";
this.progressPanel.Size = new System.Drawing.Size(407, 230);
this.progressPanel.Size = new System.Drawing.Size(621, 270);
this.progressPanel.TabIndex = 0;
//
// lbl_sub_message
//
this.lbl_sub_message.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.lbl_sub_message.ForeColor = System.Drawing.Color.White;
this.lbl_sub_message.Location = new System.Drawing.Point(160, 85);
this.lbl_sub_message.Name = "lbl_sub_message";
this.lbl_sub_message.Size = new System.Drawing.Size(300, 16);
this.lbl_sub_message.TabIndex = 2;
this.lbl_sub_message.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// lbl_message
//
this.lbl_message.Font = new System.Drawing.Font("Microsoft Sans Serif", 27.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(178)));
this.lbl_message.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.lbl_message.Location = new System.Drawing.Point(0, 0);
this.lbl_message.Location = new System.Drawing.Point(3, 27);
this.lbl_message.Name = "lbl_message";
this.lbl_message.Size = new System.Drawing.Size(407, 88);
this.lbl_message.Size = new System.Drawing.Size(615, 61);
this.lbl_message.TabIndex = 1;
this.lbl_message.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
@ -71,7 +83,7 @@ namespace HeliosPlus.UIForms
this.progressBar.InnerColor = System.Drawing.Color.FromArgb(((int)(((byte)(224)))), ((int)(((byte)(224)))), ((int)(((byte)(224)))));
this.progressBar.InnerMargin = 0;
this.progressBar.InnerWidth = 0;
this.progressBar.Location = new System.Drawing.Point(136, 91);
this.progressBar.Location = new System.Drawing.Point(243, 125);
this.progressBar.MarqueeAnimationSpeed = 2000;
this.progressBar.Name = "progressBar";
this.progressBar.OuterColor = System.Drawing.Color.FromArgb(((int)(((byte)(64)))), ((int)(((byte)(64)))), ((int)(((byte)(64)))));
@ -79,7 +91,7 @@ namespace HeliosPlus.UIForms
this.progressBar.OuterWidth = 6;
this.progressBar.ProgressColor = System.Drawing.Color.DodgerBlue;
this.progressBar.ProgressWidth = 10;
this.progressBar.SecondaryFont = new System.Drawing.Font("Microsoft Sans Serif", 24F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.progressBar.SecondaryFont = new System.Drawing.Font("Microsoft Sans Serif", 26.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.progressBar.Size = new System.Drawing.Size(135, 135);
this.progressBar.StartAngle = 270;
this.progressBar.SubscriptColor = System.Drawing.Color.FromArgb(((int)(((byte)(166)))), ((int)(((byte)(166)))), ((int)(((byte)(166)))));
@ -87,7 +99,7 @@ namespace HeliosPlus.UIForms
this.progressBar.SubscriptText = "";
this.progressBar.SuperscriptColor = System.Drawing.Color.Gray;
this.progressBar.SuperscriptMargin = new System.Windows.Forms.Padding(0, 30, 0, 0);
this.progressBar.SuperscriptText = "\'\'";
this.progressBar.SuperscriptText = "";
this.progressBar.TabIndex = 0;
this.progressBar.TextMargin = new System.Windows.Forms.Padding(2, 5, 0, 0);
this.progressBar.Value = 68;
@ -102,12 +114,12 @@ namespace HeliosPlus.UIForms
this.t_countdown.Interval = 1000;
this.t_countdown.Tick += new System.EventHandler(this.t_countdown_Tick);
//
// SplashForm
// ApplyingChangesForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(40)))), ((int)(((byte)(40)))), ((int)(((byte)(40)))));
this.ClientSize = new System.Drawing.Size(431, 254);
this.ClientSize = new System.Drawing.Size(645, 418);
this.ControlBox = false;
this.Controls.Add(this.progressPanel);
this.DoubleBuffered = true;
@ -116,12 +128,12 @@ namespace HeliosPlus.UIForms
this.KeyPreview = true;
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "SplashForm";
this.Name = "ApplyingChangesForm";
this.Opacity = 0D;
this.ShowIcon = false;
this.ShowInTaskbar = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = global::HeliosPlus.Resources.Language.Helios_Display_Management_Please_Wait;
this.Text = "HeliosPlus - Please Wait";
this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.SplashForm_FormClosing);
this.Load += new System.EventHandler(this.SplashForm_Reposition);
this.Shown += new System.EventHandler(this.SplashForm_Shown);
@ -140,5 +152,6 @@ namespace HeliosPlus.UIForms
private System.Windows.Forms.Label lbl_message;
private System.Windows.Forms.Timer t_start;
private System.Windows.Forms.Timer t_countdown;
private Label lbl_sub_message;
}
}

View File

@ -29,6 +29,7 @@ namespace HeliosPlus.UIForms
progressPanel.BackColor = BackColor;
progressBar.Invalidated += (sender, args) => Invalidate();
progressPanel.Invalidated += (sender, args) => Invalidate();
Reposition();
}
public ApplyingChangesForm(Action job, int cancellationTimeout = 0, int countdown = 0) : this()
@ -45,7 +46,11 @@ namespace HeliosPlus.UIForms
}
public string CancellationMessage { get; set; } = Language.Starting_in;
public string CancellationSubMessage { get; set; } = Language.Press_ESC_to_cancel;
public string CountdownMessage { get; set; } = Language.Please_wait;
public string CountdownSubMessage { get; set; } = Language.It_wont_be_long_now;
protected override void OnKeyDown(KeyEventArgs e)
{
@ -102,6 +107,7 @@ namespace HeliosPlus.UIForms
private void DoJob()
{
lbl_message.Text = CountdownMessage;
lbl_sub_message.Text = CountdownSubMessage;
progressBar.ProgressColor = Color.OrangeRed;
if (_countdownCounter > 0)
@ -128,6 +134,7 @@ namespace HeliosPlus.UIForms
private void DoTimeout()
{
lbl_message.Text = CancellationMessage;
lbl_sub_message.Text = CancellationSubMessage;
progressBar.ProgressColor = Color.DodgerBlue;
if (_startCounter > 0)
@ -146,31 +153,21 @@ namespace HeliosPlus.UIForms
{
lock (_progressPositions)
{
var screens = Screen.AllScreens;
var minX = screens.Select(screen => screen.Bounds.X).Concat(new[] {0}).Min();
var maxX = screens.Select(screen => screen.Bounds.Width + screen.Bounds.X).Concat(new[] {0}).Max();
var minY = screens.Select(screen => screen.Bounds.Y).Concat(new[] {0}).Min();
var maxY = screens.Select(screen => screen.Bounds.Height + screen.Bounds.Y).Concat(new[] {0}).Max();
#if !DEBUG
Size = new Size(maxX + Math.Abs(minX), maxY + Math.Abs(minY));
Location = new Point(minX, minY);
#else
Size = new Size((int)((maxX + Math.Abs(minX)) * 0.8d), (int)((maxY + Math.Abs(minY)) * 0.8d));
Location = new Point(minX + (int)(Size.Width / 8d), minY + (int)(Size.Height / 8d));
#endif
Screen[] screens = Screen.AllScreens;
Size = screens.Select(screen => screen.Bounds)
.Aggregate(Rectangle.Union)
.Size;
_progressPositions.Clear();
_progressPositions.AddRange(
screens.Select(
screen =>
new Point(screen.Bounds.X - minX + (screen.Bounds.Width - progressPanel.Width) / 2,
screen.Bounds.Y - minY + (screen.Bounds.Height - progressPanel.Height) / 2)));
new Point(screen.Bounds.X + ((screen.Bounds.Width - progressPanel.Width) / 2),
screen.Bounds.Y + ((screen.Bounds.Height - progressPanel.Height) / 2))
)
);
}
#if !DEBUG
TopMost = true;
Activate();
#endif
Invalidate();
}
@ -301,5 +298,6 @@ namespace HeliosPlus.UIForms
base.WndProc(ref m);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,465 +0,0 @@
using HeliosPlus.Resources;
using HeliosPlus.Shared.UserControls;
namespace HeliosPlus.UIForms
{
partial class EditForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EditForm));
this.btn_save = new System.Windows.Forms.Button();
this.btn_apply = new System.Windows.Forms.Button();
this.btn_cancel = new System.Windows.Forms.Button();
this.dv_profile = new HeliosPlus.Shared.UserControls.DisplayView();
this.txt_name = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.lv_monitors = new System.Windows.Forms.ListView();
this.imageList1 = new System.Windows.Forms.ImageList(this.components);
this.gb_arrangement = new System.Windows.Forms.GroupBox();
this.nud_y = new System.Windows.Forms.NumericUpDown();
this.nud_x = new System.Windows.Forms.NumericUpDown();
this.label11 = new System.Windows.Forms.Label();
this.cb_clone = new System.Windows.Forms.ComboBox();
this.label9 = new System.Windows.Forms.Label();
this.cb_rotation = new System.Windows.Forms.ComboBox();
this.label8 = new System.Windows.Forms.Label();
this.cb_frequency = new System.Windows.Forms.ComboBox();
this.label4 = new System.Windows.Forms.Label();
this.cb_colordepth = new System.Windows.Forms.ComboBox();
this.label3 = new System.Windows.Forms.Label();
this.cb_resolution = new System.Windows.Forms.ComboBox();
this.label2 = new System.Windows.Forms.Label();
this.gb_surround = new System.Windows.Forms.GroupBox();
this.cb_surround_applybezel = new System.Windows.Forms.CheckBox();
this.btn_topo = new System.Windows.Forms.Button();
this.gb_eyefinity = new System.Windows.Forms.GroupBox();
this.label10 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.gb_arrangement.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.nud_y)).BeginInit();
((System.ComponentModel.ISupportInitialize)(this.nud_x)).BeginInit();
this.gb_surround.SuspendLayout();
this.gb_eyefinity.SuspendLayout();
this.SuspendLayout();
//
// btn_save
//
this.btn_save.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btn_save.Enabled = false;
this.btn_save.Location = new System.Drawing.Point(569, 572);
this.btn_save.Name = "btn_save";
this.btn_save.Size = new System.Drawing.Size(75, 23);
this.btn_save.TabIndex = 5;
this.btn_save.Text = global::HeliosPlus.Resources.Language.Save;
this.btn_save.UseVisualStyleBackColor = true;
this.btn_save.Click += new System.EventHandler(this.btn_save_Click);
//
// btn_apply
//
this.btn_apply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.btn_apply.Enabled = false;
this.btn_apply.Location = new System.Drawing.Point(472, 572);
this.btn_apply.Name = "btn_apply";
this.btn_apply.Size = new System.Drawing.Size(91, 23);
this.btn_apply.TabIndex = 6;
this.btn_apply.Text = global::HeliosPlus.Resources.Language.Save_and_Apply;
this.btn_apply.UseVisualStyleBackColor = true;
this.btn_apply.Click += new System.EventHandler(this.btn_apply_Click);
//
// btn_cancel
//
this.btn_cancel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.btn_cancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
this.btn_cancel.Location = new System.Drawing.Point(12, 572);
this.btn_cancel.Name = "btn_cancel";
this.btn_cancel.Size = new System.Drawing.Size(75, 23);
this.btn_cancel.TabIndex = 7;
this.btn_cancel.Text = global::HeliosPlus.Resources.Language.Cancel;
this.btn_cancel.UseVisualStyleBackColor = true;
//
// dv_profile
//
this.dv_profile.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.dv_profile.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(174)))), ((int)(((byte)(184)))), ((int)(((byte)(196)))));
this.dv_profile.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.dv_profile.Font = new System.Drawing.Font("Consolas", 50F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.dv_profile.ForeColor = System.Drawing.Color.MidnightBlue;
this.dv_profile.Location = new System.Drawing.Point(-1, -1);
this.dv_profile.Margin = new System.Windows.Forms.Padding(18);
this.dv_profile.Name = "dv_profile";
this.dv_profile.PaddingX = 100;
this.dv_profile.PaddingY = 100;
this.dv_profile.Profile = null;
this.dv_profile.Size = new System.Drawing.Size(658, 236);
this.dv_profile.TabIndex = 2;
//
// txt_name
//
this.txt_name.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.txt_name.Location = new System.Drawing.Point(12, 263);
this.txt_name.Name = "txt_name";
this.txt_name.Size = new System.Drawing.Size(632, 20);
this.txt_name.TabIndex = 9;
//
// label1
//
this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(9, 247);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(70, 13);
this.label1.TabIndex = 8;
this.label1.Text = "Profile Name:";
//
// lv_monitors
//
this.lv_monitors.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.lv_monitors.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.None;
this.lv_monitors.HideSelection = false;
this.lv_monitors.LargeImageList = this.imageList1;
this.lv_monitors.Location = new System.Drawing.Point(-1, 294);
this.lv_monitors.Name = "lv_monitors";
this.lv_monitors.ShowGroups = false;
this.lv_monitors.Size = new System.Drawing.Size(658, 75);
this.lv_monitors.SmallImageList = this.imageList1;
this.lv_monitors.TabIndex = 10;
this.lv_monitors.UseCompatibleStateImageBehavior = false;
this.lv_monitors.View = System.Windows.Forms.View.List;
this.lv_monitors.SelectedIndexChanged += new System.EventHandler(this.lv_monitors_SelectionChangeCommitted);
//
// imageList1
//
this.imageList1.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
this.imageList1.ImageSize = new System.Drawing.Size(48, 48);
this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
//
// gb_arrangement
//
this.gb_arrangement.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
this.gb_arrangement.Controls.Add(this.nud_y);
this.gb_arrangement.Controls.Add(this.nud_x);
this.gb_arrangement.Controls.Add(this.label11);
this.gb_arrangement.Controls.Add(this.cb_clone);
this.gb_arrangement.Controls.Add(this.label9);
this.gb_arrangement.Controls.Add(this.cb_rotation);
this.gb_arrangement.Controls.Add(this.label8);
this.gb_arrangement.Controls.Add(this.cb_frequency);
this.gb_arrangement.Controls.Add(this.label4);
this.gb_arrangement.Controls.Add(this.cb_colordepth);
this.gb_arrangement.Controls.Add(this.label3);
this.gb_arrangement.Controls.Add(this.cb_resolution);
this.gb_arrangement.Controls.Add(this.label2);
this.gb_arrangement.Enabled = false;
this.gb_arrangement.Location = new System.Drawing.Point(11, 375);
this.gb_arrangement.Name = "gb_arrangement";
this.gb_arrangement.Size = new System.Drawing.Size(207, 184);
this.gb_arrangement.TabIndex = 11;
this.gb_arrangement.TabStop = false;
this.gb_arrangement.Text = "Arrangement";
//
// nud_y
//
this.nud_y.Location = new System.Drawing.Point(141, 155);
this.nud_y.Maximum = new decimal(new int[] {
999999,
0,
0,
0});
this.nud_y.Minimum = new decimal(new int[] {
999999,
0,
0,
-2147483648});
this.nud_y.Name = "nud_y";
this.nud_y.Size = new System.Drawing.Size(60, 20);
this.nud_y.TabIndex = 24;
this.nud_y.ValueChanged += new System.EventHandler(this.nud_y_ValueChanged);
//
// nud_x
//
this.nud_x.Location = new System.Drawing.Point(78, 155);
this.nud_x.Maximum = new decimal(new int[] {
999999,
0,
0,
0});
this.nud_x.Minimum = new decimal(new int[] {
999999,
0,
0,
-2147483648});
this.nud_x.Name = "nud_x";
this.nud_x.Size = new System.Drawing.Size(60, 20);
this.nud_x.TabIndex = 23;
this.nud_x.ValueChanged += new System.EventHandler(this.nud_x_ValueChanged);
//
// label11
//
this.label11.AutoSize = true;
this.label11.Location = new System.Drawing.Point(6, 157);
this.label11.Name = "label11";
this.label11.Size = new System.Drawing.Size(51, 13);
this.label11.TabIndex = 22;
this.label11.Text = "Location:";
//
// cb_clone
//
this.cb_clone.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_clone.FormattingEnabled = true;
this.cb_clone.Location = new System.Drawing.Point(78, 127);
this.cb_clone.Name = "cb_clone";
this.cb_clone.Size = new System.Drawing.Size(123, 21);
this.cb_clone.TabIndex = 19;
this.cb_clone.SelectionChangeCommitted += new System.EventHandler(this.cb_clone_SelectionChangeCommitted);
//
// label9
//
this.label9.AutoSize = true;
this.label9.Location = new System.Drawing.Point(6, 130);
this.label9.Name = "label9";
this.label9.Size = new System.Drawing.Size(37, 13);
this.label9.TabIndex = 20;
this.label9.Text = "Clone:";
//
// cb_rotation
//
this.cb_rotation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_rotation.FormattingEnabled = true;
this.cb_rotation.Location = new System.Drawing.Point(78, 100);
this.cb_rotation.Name = "cb_rotation";
this.cb_rotation.Size = new System.Drawing.Size(123, 21);
this.cb_rotation.TabIndex = 17;
this.cb_rotation.SelectionChangeCommitted += new System.EventHandler(this.cb_rotation_SelectionChangeCommitted);
//
// label8
//
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(6, 103);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(50, 13);
this.label8.TabIndex = 18;
this.label8.Text = "Rotation:";
//
// cb_frequency
//
this.cb_frequency.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_frequency.FormattingEnabled = true;
this.cb_frequency.Location = new System.Drawing.Point(78, 73);
this.cb_frequency.Name = "cb_frequency";
this.cb_frequency.Size = new System.Drawing.Size(123, 21);
this.cb_frequency.TabIndex = 15;
this.cb_frequency.SelectionChangeCommitted += new System.EventHandler(this.cb_frequency_SelectionChangeCommitted);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(6, 76);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(60, 13);
this.label4.TabIndex = 16;
this.label4.Text = "Frequency:";
//
// cb_colordepth
//
this.cb_colordepth.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_colordepth.FormattingEnabled = true;
this.cb_colordepth.Location = new System.Drawing.Point(78, 46);
this.cb_colordepth.Name = "cb_colordepth";
this.cb_colordepth.Size = new System.Drawing.Size(123, 21);
this.cb_colordepth.TabIndex = 13;
this.cb_colordepth.SelectionChangeCommitted += new System.EventHandler(this.cb_colordepth_SelectionChangeCommitted);
//
// label3
//
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(6, 49);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(66, 13);
this.label3.TabIndex = 14;
this.label3.Text = "Color Depth:";
//
// cb_resolution
//
this.cb_resolution.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
this.cb_resolution.FormattingEnabled = true;
this.cb_resolution.Location = new System.Drawing.Point(78, 19);
this.cb_resolution.Name = "cb_resolution";
this.cb_resolution.Size = new System.Drawing.Size(123, 21);
this.cb_resolution.TabIndex = 12;
this.cb_resolution.SelectionChangeCommitted += new System.EventHandler(this.cb_resolution_SelectionChangeCommitted);
//
// label2
//
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(6, 22);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(60, 13);
this.label2.TabIndex = 12;
this.label2.Text = "Resolution:";
//
// gb_surround
//
this.gb_surround.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
this.gb_surround.Controls.Add(this.cb_surround_applybezel);
this.gb_surround.Controls.Add(this.btn_topo);
this.gb_surround.Enabled = false;
this.gb_surround.Location = new System.Drawing.Point(224, 375);
this.gb_surround.Name = "gb_surround";
this.gb_surround.Size = new System.Drawing.Size(207, 184);
this.gb_surround.TabIndex = 17;
this.gb_surround.TabStop = false;
this.gb_surround.Text = "NVidia Surround";
//
// cb_surround_applybezel
//
this.cb_surround_applybezel.AutoSize = true;
this.cb_surround_applybezel.Location = new System.Drawing.Point(6, 21);
this.cb_surround_applybezel.Name = "cb_surround_applybezel";
this.cb_surround_applybezel.Size = new System.Drawing.Size(183, 17);
this.cb_surround_applybezel.TabIndex = 18;
this.cb_surround_applybezel.Text = "Apply Bezel Corrected Resolution";
this.cb_surround_applybezel.UseVisualStyleBackColor = true;
this.cb_surround_applybezel.CheckedChanged += new System.EventHandler(this.cb_surround_applybezel_CheckedChanged);
//
// btn_topo
//
this.btn_topo.Enabled = false;
this.btn_topo.Location = new System.Drawing.Point(116, 155);
this.btn_topo.Name = "btn_topo";
this.btn_topo.Size = new System.Drawing.Size(85, 23);
this.btn_topo.TabIndex = 17;
this.btn_topo.Text = "Edit Topology";
this.btn_topo.UseVisualStyleBackColor = true;
//
// gb_eyefinity
//
this.gb_eyefinity.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
this.gb_eyefinity.Controls.Add(this.label10);
this.gb_eyefinity.Enabled = false;
this.gb_eyefinity.Location = new System.Drawing.Point(437, 375);
this.gb_eyefinity.Name = "gb_eyefinity";
this.gb_eyefinity.Size = new System.Drawing.Size(207, 184);
this.gb_eyefinity.TabIndex = 17;
this.gb_eyefinity.TabStop = false;
this.gb_eyefinity.Text = "AMD Eyefinity";
//
// label10
//
this.label10.Location = new System.Drawing.Point(6, 20);
this.label10.Name = "label10";
this.label10.Size = new System.Drawing.Size(195, 145);
this.label10.TabIndex = 12;
this.label10.Text = "Not Available";
this.label10.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
//
// label5
//
this.label5.BackColor = System.Drawing.SystemColors.Window;
this.label5.Location = new System.Drawing.Point(12, 318);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(632, 29);
this.label5.TabIndex = 18;
this.label5.Text = resources.GetString("label5.Text");
//
// EditForm
//
this.AcceptButton = this.btn_save;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.CancelButton = this.btn_cancel;
this.ClientSize = new System.Drawing.Size(656, 607);
this.Controls.Add(this.label5);
this.Controls.Add(this.gb_eyefinity);
this.Controls.Add(this.gb_surround);
this.Controls.Add(this.gb_arrangement);
this.Controls.Add(this.lv_monitors);
this.Controls.Add(this.txt_name);
this.Controls.Add(this.label1);
this.Controls.Add(this.btn_cancel);
this.Controls.Add(this.btn_apply);
this.Controls.Add(this.btn_save);
this.Controls.Add(this.dv_profile);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow;
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "EditForm";
this.ShowIcon = false;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
this.Text = "Edit Profile \'{0}\'";
this.Load += new System.EventHandler(this.EditForm_Load);
this.gb_arrangement.ResumeLayout(false);
this.gb_arrangement.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.nud_y)).EndInit();
((System.ComponentModel.ISupportInitialize)(this.nud_x)).EndInit();
this.gb_surround.ResumeLayout(false);
this.gb_surround.PerformLayout();
this.gb_eyefinity.ResumeLayout(false);
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private DisplayView dv_profile;
private System.Windows.Forms.Button btn_save;
private System.Windows.Forms.Button btn_apply;
private System.Windows.Forms.Button btn_cancel;
private System.Windows.Forms.TextBox txt_name;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ListView lv_monitors;
private System.Windows.Forms.ImageList imageList1;
private System.Windows.Forms.GroupBox gb_arrangement;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ComboBox cb_resolution;
private System.Windows.Forms.GroupBox gb_surround;
private System.Windows.Forms.GroupBox gb_eyefinity;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Button btn_topo;
private System.Windows.Forms.ComboBox cb_clone;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.ComboBox cb_rotation;
private System.Windows.Forms.Label label8;
private System.Windows.Forms.ComboBox cb_frequency;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.ComboBox cb_colordepth;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.NumericUpDown nud_y;
private System.Windows.Forms.NumericUpDown nud_x;
private System.Windows.Forms.Label label11;
private System.Windows.Forms.CheckBox cb_surround_applybezel;
private System.Windows.Forms.Label label5;
}
}

View File

@ -1,452 +0,0 @@
using System;
using System.Drawing;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using WindowsDisplayAPI.Native.DisplayConfig;
using HeliosPlus.Resources;
using HeliosPlus.Shared;
using HeliosPlus.Shared.Topology;
namespace HeliosPlus.UIForms
{
public partial class EditForm : Form
{
public EditForm()
{
InitializeComponent();
}
public EditForm(Profile profile) : this()
{
Profile = profile;
Text = string.Format(Text, profile.Name);
txt_name.Text = profile.Name;
dv_profile.Profile = profile;
RefreshMonitors();
}
public Profile Profile { get; set; }
private DisplayRepresentation SelectedDisplay { get; set; }
public sealed override string Text
{
get => base.Text;
set => base.Text = value;
}
private void btn_apply_Click(object sender, EventArgs e)
{
if (SaveProfile())
{
if (!dv_profile.Profile.IsPossible)
{
MessageBox.Show(this, Language.This_profile_is_currently_impossible_to_apply,
Language.Apply_Profile,
MessageBoxButtons.OK, MessageBoxIcon.Warning);
return;
}
var currentProfile = Profile.CurrentProfile;
Enabled = false;
var failed = false;
if (new ApplyingChangesForm(() =>
{
Task.Factory.StartNew(() =>
{
if (!dv_profile.Profile.Apply())
{
failed = true;
}
}, TaskCreationOptions.LongRunning);
}, 3, 30).ShowDialog(this) !=
DialogResult.Cancel)
{
if (failed)
{
MessageBox.Show(this, Language.Profile_is_invalid_or_not_possible_to_apply, Language.Error,
MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
else
{
new ApplyingChangesForm(
() =>
{
Task.Factory.StartNew(() => currentProfile.Apply(), TaskCreationOptions.LongRunning);
}, 60, 30) {CancellationMessage = Language.Reverting_in}.ShowDialog(this);
}
}
Enabled = true;
Activate();
}
}
private void btn_save_Click(object sender, EventArgs e)
{
if (SaveProfile())
{
DialogResult = DialogResult.OK;
}
}
private void cb_clone_SelectionChangeCommitted(object sender, EventArgs e)
{
if (cb_clone.SelectedItem != null && SelectedDisplay != null)
{
ProfileViewport newSource;
if (cb_clone.SelectedItem is string)
{
newSource = new ProfileViewport();
Profile.Viewports = Profile.Viewports.Concat(new[] {newSource}).ToArray();
}
else
{
newSource = cb_clone.SelectedItem as ProfileViewport;
}
if (newSource != null)
{
var target = SelectedDisplay.GetPathTarget(Profile);
var source = SelectedDisplay.GetPathSource(Profile);
source.TargetDisplays = source.TargetDisplays.Where(pathTarget => pathTarget != target).ToArray();
newSource.TargetDisplays = newSource.TargetDisplays.Concat(new[] {target}).ToArray();
if (source.TargetDisplays.Length == 0)
{
Profile.Viewports = Profile.Viewports.Where(path => path != source).ToArray();
}
}
cb_resolution_SelectionChangeCommitted(null, null);
cb_colordepth_SelectionChangeCommitted(null, null);
cb_frequency_SelectionChangeCommitted(null, null);
cb_rotation_SelectionChangeCommitted(null, null);
}
RefreshArrangementSettings();
}
private void cb_colordepth_SelectionChangeCommitted(object sender, EventArgs e)
{
if (cb_colordepth.SelectedItem != null && SelectedDisplay != null)
{
SelectedDisplay.GetPathSource(Profile).PixelFormat =
ColorDepthToPixelFormat((ColorDepth) cb_colordepth.SelectedItem);
}
RefreshArrangementSettings();
}
private void cb_frequency_SelectionChangeCommitted(object sender, EventArgs e)
{
if (cb_frequency.SelectedItem != null && SelectedDisplay != null)
{
SelectedDisplay.GetPathTarget(Profile).FrequencyInMillihertz = (uint) cb_frequency.SelectedItem * 1000;
}
RefreshArrangementSettings();
}
private void cb_resolution_SelectionChangeCommitted(object sender, EventArgs e)
{
if (cb_resolution.SelectedItem != null && SelectedDisplay != null)
{
SelectedDisplay.GetPathSource(Profile).Resolution = (Size) cb_resolution.SelectedItem;
}
RefreshArrangementSettings();
}
private void cb_rotation_SelectionChangeCommitted(object sender, EventArgs e)
{
if (cb_rotation.SelectedItem != null && SelectedDisplay != null)
{
switch (cb_rotation.SelectedIndex)
{
case 1:
SelectedDisplay.GetPathTarget(Profile).Rotation = Rotation.Rotate90;
break;
case 2:
SelectedDisplay.GetPathTarget(Profile).Rotation = Rotation.Rotate180;
break;
case 3:
SelectedDisplay.GetPathTarget(Profile).Rotation = Rotation.Rotate270;
break;
default:
SelectedDisplay.GetPathTarget(Profile).Rotation = Rotation.Identity;
break;
}
}
RefreshArrangementSettings();
}
private void cb_surround_applybezel_CheckedChanged(object sender, EventArgs e)
{
}
private DisplayConfigPixelFormat ColorDepthToPixelFormat(ColorDepth depth)
{
switch (depth)
{
case ColorDepth.Depth8Bit:
return DisplayConfigPixelFormat.PixelFormat8Bpp;
case ColorDepth.Depth16Bit:
return DisplayConfigPixelFormat.PixelFormat16Bpp;
case ColorDepth.Depth24Bit:
return DisplayConfigPixelFormat.PixelFormat24Bpp;
case ColorDepth.Depth32Bit:
return DisplayConfigPixelFormat.PixelFormat32Bpp;
default:
return DisplayConfigPixelFormat.NotSpecified;
}
}
private void EditForm_Load(object sender, EventArgs e)
{
}
private void lv_monitors_SelectionChangeCommitted(object sender, EventArgs e)
{
SelectedDisplay = null;
if (lv_monitors.SelectedItems.Count > 0)
{
SelectedDisplay = lv_monitors.SelectedItems[0].Tag as DisplayRepresentation;
}
RefreshArrangementSettings();
}
private void nud_x_ValueChanged(object sender, EventArgs e)
{
}
private void nud_y_ValueChanged(object sender, EventArgs e)
{
}
private WindowsDisplayAPI.ColorDepth PixelFormatToColorDepth(DisplayConfigPixelFormat format)
{
switch (format)
{
case DisplayConfigPixelFormat.PixelFormat8Bpp:
return WindowsDisplayAPI.ColorDepth.Depth8Bit;
case DisplayConfigPixelFormat.PixelFormat16Bpp:
return WindowsDisplayAPI.ColorDepth.Depth16Bit;
case DisplayConfigPixelFormat.PixelFormat24Bpp:
return WindowsDisplayAPI.ColorDepth.Depth24Bit;
case DisplayConfigPixelFormat.PixelFormat32Bpp:
return WindowsDisplayAPI.ColorDepth.Depth32Bit;
default:
return WindowsDisplayAPI.ColorDepth.Depth4Bit;
}
}
// ReSharper disable once CyclomaticComplexity
// ReSharper disable once FunctionComplexityOverflow
private void RefreshArrangementSettings()
{
gb_arrangement.Enabled = false;
gb_surround.Enabled = false;
cb_resolution.Items.Clear();
cb_colordepth.Items.Clear();
cb_frequency.Items.Clear();
cb_rotation.Items.Clear();
cb_clone.Items.Clear();
dv_profile.Invalidate();
nud_x.Value = 0;
nud_y.Value = 0;
try
{
if (SelectedDisplay != null)
{
var pathSource = SelectedDisplay.GetPathSource(Profile);
var pathTarget = SelectedDisplay.GetPathTarget(Profile);
if (SelectedDisplay.IsAvailable)
{
//gb_arrangement.Enabled = true;
var possibleSettings = SelectedDisplay.PossibleSettings;
foreach (var resolution in possibleSettings.Select(setting => setting.Resolution).Distinct())
{
cb_resolution.Items.Add(resolution);
if ((Size) cb_resolution.Items[cb_resolution.Items.Count - 1] == pathSource.Resolution)
{
cb_resolution.SelectedIndex = cb_resolution.Items.Count - 1;
}
}
foreach (
var colorDepth in
possibleSettings.Where(setting => setting.Resolution == pathSource.Resolution)
.Select(setting => setting.ColorDepth)
.Distinct())
{
cb_colordepth.Items.Add(colorDepth);
if ((WindowsDisplayAPI.ColorDepth) cb_colordepth.Items[cb_colordepth.Items.Count - 1] ==
PixelFormatToColorDepth(pathSource.PixelFormat))
{
cb_colordepth.SelectedIndex = cb_colordepth.Items.Count - 1;
}
}
foreach (
var frequency in
possibleSettings.Where(
setting =>
setting.Resolution == pathSource.Resolution &&
setting.ColorDepth == PixelFormatToColorDepth(pathSource.PixelFormat))
.Select(setting => setting.Frequency)
.Distinct())
{
cb_frequency.Items.Add(frequency);
if ((int) cb_frequency.Items[cb_frequency.Items.Count - 1] ==
(int) (pathTarget.FrequencyInMillihertz / 1000))
{
cb_frequency.SelectedIndex = cb_frequency.Items.Count - 1;
}
}
}
else
{
cb_resolution.Items.Add(pathSource.Resolution);
cb_resolution.SelectedIndex = 0;
cb_colordepth.Items.Add(PixelFormatToColorDepth(pathSource.PixelFormat));
cb_colordepth.SelectedIndex = 0;
cb_frequency.Items.Add((int) (pathTarget.FrequencyInMillihertz / 1000));
cb_frequency.SelectedIndex = 0;
}
nud_x.Value = pathSource.Position.X;
nud_y.Value = pathSource.Position.Y;
cb_clone.Items.Clear();
cb_clone.Items.Add("None");
cb_clone.SelectedIndex = 0;
foreach (
var potentialClone in
Profile.Viewports.Where(
path =>
path.Resolution == pathSource.Resolution &&
path.TargetDisplays.First().DevicePath != SelectedDisplay.Path))
{
cb_clone.Items.Add(potentialClone);
if (potentialClone.TargetDisplays.Contains(pathTarget))
{
cb_clone.SelectedIndex = cb_clone.Items.Count - 1;
}
}
cb_rotation.Items.Clear();
cb_rotation.Items.Add("Identity");
cb_rotation.Items.Add("90 degree");
cb_rotation.Items.Add("180 degree");
cb_rotation.Items.Add("270 degree");
switch (pathTarget.Rotation)
{
case Rotation.Identity:
cb_rotation.SelectedIndex = 0;
break;
case Rotation.Rotate90:
cb_rotation.SelectedIndex = 1;
break;
case Rotation.Rotate180:
cb_rotation.SelectedIndex = 2;
break;
case Rotation.Rotate270:
cb_rotation.SelectedIndex = 3;
break;
default:
cb_rotation.SelectedIndex = 0;
break;
}
if (pathTarget.SurroundTopology != null)
{
cb_surround_applybezel.Checked = pathTarget.SurroundTopology.ApplyWithBezelCorrectedResolution;
}
else
{
cb_surround_applybezel.Checked = false;
}
}
}
catch (Exception)
{
// ignored
}
}
private void RefreshMonitors()
{
imageList1.Images.Clear();
lv_monitors.Items.Clear();
foreach (var display in DisplayRepresentation.GetDisplays(Profile))
{
imageList1.Images.Add(display.ToBitmap(imageList1.ImageSize, Profile));
lv_monitors.Items.Add(new ListViewItem
{
Text = display.Name,
Tag = display,
ImageIndex = imageList1.Images.Count - 1
});
}
}
private bool SaveProfile()
{
if (string.IsNullOrWhiteSpace(txt_name.Text) ||
Profile.LoadAllProfiles()
.Any(
profile =>
!profile.Equals(Profile) &&
profile.Name.Equals(txt_name.Text.Trim(), StringComparison.InvariantCultureIgnoreCase)))
{
MessageBox.Show(this, Language.Invalid_or_duplicate_profile_name, Language.Validation,
MessageBoxButtons.OK,
MessageBoxIcon.Warning);
txt_name.Focus();
return false;
}
Profile.Name = txt_name.Text.Trim();
return true;
}
}
}

View File

@ -1,483 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="imageList1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="label5.Text" xml:space="preserve">
<value>This tool is not yet complete and this page is currently just a placeholder. Try managing your setup using Windows Control Panel or NVidia Control Panel and use the clone feature to make a new profile.</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAYAEBAAAAEACABoBQAAZgAAAAAAAAABACAAbggAAM4FAAAwMAAAAQAgAKglAAA8DgAAICAAAAEA
IACoEAAA5DMAABgYAAABACAAiAkAAIxEAAAQEAAAAQAgAGgEAAAUTgAAKAAAABAAAAAgAAAAAQAIAAAA
AAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAAAADrnicA6qAvAPWjIwDMq3cAz657AMmrfQCtra0As7GuALGx
sQC1tbUAv7+/AM2wgwDBv74Aw8K+AMDAwADT0MwA2dnZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
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
AAAAAAAAAAAAAAAAAAAAAAAAAAAAffI/hr0DB0YPKhgAAAAASUVORK5CYIIoAAAAMAAAAGAAAAABACAA
AAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACsrKwKlpaWYYqKimyJiYlsioqKbIqKimyJiYls
ioqKbIqKimyJiYlsioqKbIqKimyJiYlsioqKbIqKimyJiYlsioqKbIqKimyenp5MAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSkpJnMzMz/jMzM/8yMjL+
MzMz/zMzM/8yMjL+MzMz/zMzM/8yMjL+MzMz/zMzM/8yMjL+MzMz/zMzM/8yMjL+MzMz/zMzM/88PDz6
rKysJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHh4d0
MjIy/jIyMv4yMjL+MjIy/jIyMv4yMjL+MjIy/jIyMv4yMjL+MjIy/jIyMv4yMjL+MjIy/jIyMv4yMjL+
MjIy/jIyMv4zMzP+qKioLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACfn583X19f31hYWOlYWFjoWFhY6VhYWOlYWFjoWFhY6VhYWOlYWFjoWFhY6VhYWOlYWFjo
WFhY6VhYWOlYWFjoWFhY6VhYWOltbW3GqKioDgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjY2NAYqKigKPj48Cj4+PAo+PjwKPj48Cj4+PAo+PjwKPj48C
j4+PAo+PjwKPj48Cj4+PAo+PjwKPj48Cj4+PAoqKigKOjo4BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIiIiIeamprCmpqawpqamsKamprC
mpqawpqamsKamprCmpqawpqamsKamprCmpqawpqamsKamprClZWVv4qKilu4uLjCubm5wrm5ucK5ubnC
ubm5wrm5ucK5ubnCubm5wrm5ucK5ubnCubm5wrm5ucK5ubnCuLi4woSEhFiZmZnCmpqawpqamsKamprC
mpqawpqamsKamprCmpqawpqamsKamprCmpqawpqamsKamprCmpqawoeHh3UAAAAAAAAAAJiYmLKwsLD+
sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+q6ur+piYmHnY2Nj+
2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/o+Pj3WwsLD+
sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/pWVlZoAAAAA
AAAAAJiYmLKwsLD+sbGx/7Gxsf+wsLD+sbGx/7Gxsf+wsLD+sbGx/7Gxsf+xsbH/sLCw/rGxsf+wsLD+
q6ur+5iYmHnY2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+
2dnZ/4+Pj3WxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/paWlpoAAAAAAAAAAJiYmLKwsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+
sLCw/rCwsP6wsLD+q6ur+piYmHnY2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+
2NjY/tjY2P7Y2Nj+2NjY/o+Pj3WwsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+
sLCw/rCwsP6wsLD+sLCw/paWlpoAAAAAAAAAAJiYmLKwsLD+sbGx/7Gxsf+wsLD+sbGx/7Gxsf+wsLD+
sbGx/7Gxsf+xsbH/sLCw/rGxsf+wsLD+q6ur+5iYmHnY2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+
2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/4+Pj3WxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAAAAAAAJiYmLKwsLD+sbGx/7Gxsf+wsLD+
sbGx/7Gxsf+wsLD+sbGx/7Gxsf+xsbH/sLCw/rGxsf+wsLD+q6ur+5iYmHnY2Nj+2dnZ/9nZ2f/Y2Nj+
2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/4+Pj3WxsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAAAAAAAJiYmLKwsLD+
sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+q6ur+piYmHnY2Nj+
2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/o+Pj3WwsLD+
sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/paWlpoAAAAA
AAAAAJiYmLKwsLD+sbGx/7Gxsf+wsLD+sbGx/7Gxsf+wsLD+sbGx/7Gxsf+xsbH/sLCw/rGxsf+wsLD+
q6ur+5iYmHnY2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+
2dnZ/4+Pj3WxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/paWlpoAAAAAAAAAAJiYmLKwsLD+sbGx/7Gxsf+wsLD+sbGx/7Gxsf+wsLD+sbGx/7Gxsf+xsbH/
sLCw/rGxsf+wsLD+q6ur+5iYmHnY2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+
2dnZ/9nZ2f/Y2Nj+2dnZ/4+Pj3WxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAAAAAAAJiYmLKwsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+
sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+q6ur+piYmHnY2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+
2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/o+Pj3WwsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+
sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/paWlpoAAAAAAAAAAJiYmLKwsLD+sbGx/7Gxsf+wsLD+
sbGx/7Gxsf+wsLD+sbGx/7Gxsf+xsbH/sLCw/rGxsf+wsLD+q6ur+5iYmHnY2Nj+2dnZ/9nZ2f/Y2Nj+
2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/4+Pj3WxsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAAAAAAAJiYmLKwsLD+
sbGx/7Gxsf+wsLD+sbGx/7Gxsf+wsLD+sbGx/7Gxsf+xsbH/sLCw/rGxsf+wsLD+q6ur+5iYmHnY2Nj+
2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/4+Pj3WxsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAA
AAAAAJiYmLKwsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+
q6ur+piYmHnY2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+2NjY/tjY2P7Y2Nj+
2NjY/o+Pj3WwsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+
sLCw/paWlpoAAAAAAAAAAJiYmLKwsLD+sbGx/7Gxsf+wsLD+sbGx/7Gxsf+wsLD+sbGx/7Gxsf+xsbH/
sLCw/rGxsf+wsLD+q6ur+5iYmHnY2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+2dnZ/9nZ2f/Y2Nj+
2dnZ/9nZ2f/Y2Nj+2dnZ/4+Pj3WxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAAAAAAAI+PjqqlpaXzpaWl9KWlpfSlpaXzpaWl9KWlpfSlpaXz
paWl9KWlpfSlpaX0paWl86WlpfSlpaXzn5+f8I+OjXPIyMjzyMjI9MjIyPTIyMjzyMjI9MjIyPTIyMjz
yMjI9MjIyPTIyMjzyMjI9MjIyPTIyMjzyMjI9ImJiHGxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAAAAAAAJ50MlqxgTWBsoE2gbKBNoGygTaB
soE2gbKBNoGygTaBsoE2gbKBNoGygTaBsoE2gbKBNoGygTaBsYAzgbOAMn22hjqBt4c7gbeHO4G3hzuB
t4c7gbeHO4G3hzuBt4c7gbeHO4G3hzuBt4c7gbeHO4G3hzuBtYU6gYlzUEywsLD+sLCw/rCwsP6wsLD+
sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/paWlpoAAAAAAAAAAM6IHLP0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//1oyP/9KIi/vWjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj/5x2PHaxsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAA
AAAAAM+JHLP0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//1oyP/9KIi/vWjI//0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+
9aMj/513PHaxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/paWlpoAAAAAAAAAAM+JHLP0oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+
9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+
9KIi/vSiIv70oiL+9KIi/p13PHawsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+
sLCw/rCwsP6wsLD+sLCw/paWlpoAAAAAAAAAAM+JHLP0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//1oyP/9KIi/vWjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj/513PHaxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAAAAAAAM+JHLP0oiL+9aMj//WjI//0oiL+
9aMj//WjI//0oiL+9aMj//WjI//1oyP/9KIi/vWjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj/513PHaxsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAAAAAAAM+JHLP0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//1oyP/9KIi/vWjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj/513PHaxsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAA
AAAAAM+JHLP0oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+
9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+
9KIi/p13PHawsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+
sLCw/paWlpoAAAAAAAAAAM+JHLP0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//1oyP/
9KIi/vWjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//0oiL+9aMj/513PHaxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAAAAAAAM+JHLP0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//1oyP/9KIi/vWjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj/513PHaxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAAAAAAAM+JHLP0oiL+9KIi/vSiIv70oiL+
9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+
9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/p13PHawsLD+sLCw/rCwsP6wsLD+
sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/paWlpoAAAAAAAAAAM+JHLP0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//1oyP/9KIi/vWjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj/513PHaxsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/paWlpoAAAAA
AAAAAM+JHLP0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//1oyP/9KIi/vWjI//0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+
9aMj/513PHaxsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/paWlpoAAAAAAAAAAM+JHLP0oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+
9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+9KIi/vSiIv70oiL+
9KIi/vSiIv70oiL+9KIi/p13PHawsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+sLCw/rCwsP6wsLD+
sLCw/rCwsP6wsLD+sLCw/paWlpoAAAAAAAAAAM2IG7P0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//1oyP/9KIi/vWjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj//WjI//0oiL+
9aMj//WjI//0oiL+9aMj//WjI//0oiL+9aMj/5t2O3axsbH/sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/
sLCw/rGxsf+xsbH/sLCw/rGxsf+xsbH/sLCw/pSUlJoAAAAAAAAAAJxmEy+pbxVDqm8VQ6pvFUOpbxVD
qm8VQ6pvFUOpbxVDqm8VQ6pvFUOqbxVDqW8VQ6pvFUOpbxVDqm8VQ6pvFUOpbxVDqm8VQ6pvFUOpbxVD
qm8VQ6pvFUOpbxVDqm8VQ6pvFUOpbxVDqm8VQ6pvFUOpbxVDp24VQ4dnNR58fHtCgICAQoCAgEKAgIBC
gICAQoCAgEKAgIBCgICAQoCAgEKAgIBCgICAQoCAgEKAgIBCf39/Qnd3dycAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
////////AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA//wAAH//AAD//AAA
P/8AAP/8AAA//wAA//wAAD//AAD//gAAf/8AAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAA
gAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAA
AAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAA
gAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAAgAAAAAABAACAAAAA
AAEAAIAAAAAAAQAAgAAAAAABAACAAAAAAAEAAIAAAAAAAQAA////////AAD///////8AAP///////wAA
////////AAD///////8AAP///////wAAKAAAACAAAABAAAAAAQAgAAAAAACAEAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAg4ODGHJycphtbW2dbW1tnW1tbZ1tbW2dbW1tnW1tbZ1tbW2dbW1tnW1tbZ1tbW2d
enp6jXBwcAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAB3d3dNMzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/MzMz/zMzM/8zMzP/
MzMz/zMzM/8zMzP+dHR0HQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAISEhBhtbW2YZ2dnnWdnZ51nZ2edZ2dnnWdnZ51nZ2ed
Z2dnnWdnZ51nZ2edZ2dnnXR0dI1wcHAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
QkJCEIuLi4GMjIyBjIyMgYyMjIGMjIyBjIyMgYyMjIGMjIyBjY2NgYyMjFmkpKR6rq6uga6uroGurq6B
rq6uga6uroGurq6Brq6uga6uroGjo6NyjIyMYY2NjYGMjIyBjIyMgYyMjIGMjIyBjIyMgYyMjIGMjIyB
i4uLgUJCQghJSUkhsbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/n5+fscjIyPHZ2dn/
2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/8TExOGhoaHBsbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/SEhIEUlJSSGxsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+goKCx
yMjI8dnZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/xMTE4aGhocGxsbH/sbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/sbGx/7Gxsf9ISEgRSUlJIbGxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/
sbGx/6CgoLHIyMjx2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/ExMThoaGhwbGxsf+xsbH/
sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/0hISBFJSUkhsbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/oKCgscjIyPHZ2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/8TExOGhoaHB
sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/SEhIEUlJSSGxsbH/sbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/sbGx/7Gxsf+goKCxyMjI8dnZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/
xMTE4aGhocGxsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf9ISEgRSUlJIbGxsf+xsbH/
sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/6CgoLHIyMjx2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/
2dnZ/9nZ2f/ExMThoaGhwbGxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/0hISBFJSUkh
sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/oKCgscjIyPHZ2dn/2dnZ/9nZ2f/Z2dn/
2dnZ/9nZ2f/Z2dn/2dnZ/8TExOGhoaHBsbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/
SEhIEUlJSSGxsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+goKCxyMjI8dnZ2f/Z2dn/
2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/xMTE4aGhocGxsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/
sbGx/7Gxsf9ISEgRSUlJIbGxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/5+fn7HIyMjx
2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f/ExMThoaGhwbGxsf+xsbH/sbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/sbGx/0hISBFNPygVqIhWpKmJV6SpiVekqYlXpKmJV6SpiVekqYlXpKmJV6SpiVek
pYRQirGRXp+3l2Wkt5dlpLeXZaS3l2Wkt5dlpLeXZaS3l2Wkt5dlpKqMX5CgnZrBsbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/SEhIEV8+CyL1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/3pQh4aOdk8GxsbH/
sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf9ISEgRYD8LIvWjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//elCHh
o52TwbGxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/0hISBFgPwsi9aMj//WjI//1oyP/
9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj/96UIeGjnZPBsbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/SEhIEWA/CyL1oyP/
9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//1oyP/3pQh4aOdk8GxsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf9ISEgR
YD8LIvWjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//1oyP/9aMj//WjI//elCHho52TwbGxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/
sbGx/0hISBFgPwsi9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj/96UIeGjnZPBsbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/SEhIEWA/CyL1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/3pQh4aOdk8GxsbH/sbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/sbGx/7Gxsf9ISEgRYD8LIvWjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//elCHho52TwbGxsf+xsbH/
sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/0hISBFgPwsi9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj/96UIeGjnZPB
sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/SEhIEVc5ChHAfxmCw4AagsOAGoLDgBqC
w4AagsOAGoLDgBqCw4AagsOAGoLDgBqCw4AagsOAGoLDgBqCw4AagsOAGoLDgBqCw4AagsOAGoLDgBqC
tHgac4mDeWGQkJCBkJCQgZCQkIGQkJCBkJCQgZCQkIGQkJCBkJCQgY+Pj4FDQ0MIAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAD//////////////////////4AB//+AAf//gAH/AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAA/////////////////////ygAAAAYAAAAMAAAAAEAIAAAAAAAYAkAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQUFAxh4eHjIeHh4yHh4eMh4eHjIeHh4yHh4eM
hYWFi42NjWegoKCMoKCgjKCgoIygoKCMoKCgjKCgoIyKiopmhoaGjIeHh4yHh4eMh4eHjIeHh4yHh4eM
h4eHjE9PTypjY2NZsLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/rq6u/Li4uLzZ2dn/2NjY/tnZ2f/Y2Nj+
2NjY/tjY2P60tLS6sLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/sLCw/mJiYk1jY2NZsbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/rq6u/bi4uLzZ2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f+0tLS6sbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/sbGx/2JiYk1jY2NZsLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/rq6u/Li4uLzZ2dn/
2NjY/tnZ2f/Y2Nj+2NjY/tjY2P60tLS6sLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/sLCw/mJiYk1jY2NZ
sLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/rq6u/Li4uLzZ2dn/2NjY/tnZ2f/Y2Nj+2NjY/tjY2P60tLS6
sLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/sLCw/mJiYk1jY2NZsbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/
rq6u/bi4uLzZ2dn/2dnZ/9nZ2f/Z2dn/2dnZ/9nZ2f+0tLS6sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/
sbGx/2JiYk1jY2NZsLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/rq6u/Li4uLzZ2dn/2NjY/tnZ2f/Y2Nj+
2NjY/tjY2P60tLS6sLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/sLCw/mJiYk1fXVlIpqKc0KainNCmopzQ
pqKc0KainNCmopzQo5+azq2popnHw73Qx8O90MfDvdDHw73Qx8O90MfDvdCopaGbsbGx/7Gxsf+xsbH/
sbGx/7Gxsf+xsbH/sbGx/2JiYk19UxJR45gi6eOYIunjmCLp45gi6eOYIunjmCLp45gi6eSYIunkmCLp
5Jgi6eSYIunkmCLp5Jgi6eSYIum9hjCssLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/sLCw/mJiYk2FWBFZ
9KIi/vSiIv71oyP/9KIi/vSiIv71oyP/9KIi/vSiIv71oyP/9KIi/vWjI//0oiL+9KIi/vSiIv7JjS+6
sLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/sLCw/mJiYk2FWBFZ9KIi/vSiIv71oyP/9KIi/vSiIv71oyP/
9KIi/vSiIv71oyP/9KIi/vWjI//0oiL+9KIi/vSiIv7JjS+6sLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/
sLCw/mJiYk2FWBFZ9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//JjS+6sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/2JiYk2FWBFZ9KIi/vSiIv71oyP/
9KIi/vSiIv71oyP/9KIi/vSiIv71oyP/9KIi/vWjI//0oiL+9KIi/vSiIv7JjS+6sLCw/rCwsP6xsbH/
sLCw/rCwsP6xsbH/sLCw/mJiYk2FWBFZ9KIi/vSiIv71oyP/9KIi/vSiIv71oyP/9KIi/vSiIv71oyP/
9KIi/vWjI//0oiL+9KIi/vSiIv7JjS+6sLCw/rCwsP6xsbH/sLCw/rCwsP6xsbH/sLCw/mJiYk2FWBFZ
9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//JjS+6
sbGx/7Gxsf+xsbH/sbGx/7Gxsf+xsbH/sbGx/2JiYk1iQAwpqXAWdalwFnWpcBZ1qXAWdalwFnWpcBZ1
qXAWdalwFnWpcBZ1qXAWdalwFnWpcBZ1qXAWdalwFnWRZiNVfX18dH5+fnR+fn50fn5+dH5+fnR+fn50
fX19dEtLSyMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8AAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A
////AP///wAoAAAAEAAAACAAAAABACAAAAAAAEAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYGBgF
Hx8fCB8fHwgfHx8IHx8fCCAgIAciIiIIIiIiCCIiIggiIiIIICAgBx8fHwgfHx8IHx8fCB8fHwgYGBgE
fX19kLGxsf+xsbH/sbGx/7Gxsf+zs7PR2dnZ/9nZ2f/Z2dn/2dnZ/7KystGxsbH/sbGx/7Gxsf+xsbH/
fHx8iH19fZCxsbH/sbGx/7Gxsf+xsbH/tLS00dnZ2f/Z2dn/2dnZ/9nZ2f+zs7PRsbGx/7Gxsf+xsbH/
sbGx/3x8fIh9fX2QsbGx/7Gxsf+xsbH/sbGx/7S0tNHZ2dn/2dnZ/9nZ2f/Z2dn/s7Oz0bGxsf+xsbH/
sbGx/7Gxsf98fHyIfX19kLGxsf+xsbH/sbGx/7Gxsf+0tLTR2dnZ/9nZ2f/Z2dn/2dnZ/7Ozs9GxsbH/
sbGx/7Gxsf+xsbH/fHx8iHl3dH6pp6Pgqaej4Kmno+Cpp6PgrKqlt83KxuDNysbgzcrG4M3KxuCurKrD
sbGx/7Gxsf+xsbH/sbGx/3x8fIijbBeI6Zsi8OmbIvDpmyLw6Zsi8OmbIvDpnCLw6Zwi8OmcIvDpnCLw
vJZbyrGxsf+xsbH/sbGx/7Gxsf98fHyIqnEXkPWjI//1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj/8GZWtGxsbH/sbGx/7Gxsf+xsbH/fHx8iKpxF5D1oyP/9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//BmVrRsbGx/7Gxsf+xsbH/sbGx/3x8fIiqcReQ9aMj//WjI//1oyP/9aMj//WjI//1oyP/
9aMj//WjI//1oyP/wZla0bGxsf+xsbH/sbGx/7Gxsf98fHyIpW0WjOucIfjrnCH465wh+OucIfjrnCH4
65wh+OucIfjrnCH465wh+LuUV8urq6v4q6ur+Kurq/irq6v4eXl5hAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD//wAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAP//AAA=
</value>
</data>
</root>