Browse Source

Major update to v15.9

deadmoon 1 year ago
parent
commit
3131d1ad0c
80 changed files with 1961 additions and 1525 deletions
  1. 9 0
      CHANGELOG.md
  2. 4 1
      Optimizer/Constants.cs
  3. 1 1
      Optimizer/Controls/MoonCheck.cs
  4. 1 1
      Optimizer/Controls/MoonCheckList.cs
  5. 10 10
      Optimizer/Controls/MoonMenuRenderer.cs
  6. 1 1
      Optimizer/Controls/MoonProgress.cs
  7. 1 1
      Optimizer/Controls/MoonRadio.cs
  8. 8 8
      Optimizer/Controls/MoonTabs.cs
  9. 5 5
      Optimizer/Controls/MoonToggle.cs
  10. 1 1
      Optimizer/Controls/MoonTree.cs
  11. 31 0
      Optimizer/DebugHelper.cs
  12. 1 4
      Optimizer/EmbeddedAssembly.cs
  13. 1 1
      Optimizer/ErrorLogger.cs
  14. 2 2
      Optimizer/Forms/AboutForm.cs
  15. 3 3
      Optimizer/Forms/FileUnlockForm.cs
  16. 181 115
      Optimizer/Forms/FirstRunForm.Designer.cs
  17. 105 68
      Optimizer/Forms/FirstRunForm.cs
  18. 5 5
      Optimizer/Forms/HelperForm.cs
  19. 4 4
      Optimizer/Forms/HostsEditorForm.cs
  20. 3 3
      Optimizer/Forms/InfoForm.cs
  21. 80 64
      Optimizer/Forms/MainForm.Designer.cs
  22. 294 244
      Optimizer/Forms/MainForm.cs
  23. 511 511
      Optimizer/Forms/MainForm.resx
  24. 1 1
      Optimizer/Forms/SplashForm.cs
  25. 6 6
      Optimizer/Forms/StartupPreviewForm.cs
  26. 7 7
      Optimizer/Forms/StartupRestoreForm.cs
  27. 4 4
      Optimizer/Forms/SubForm.Designer.cs
  28. 2 2
      Optimizer/Forms/SubForm.cs
  29. 5 5
      Optimizer/Forms/UpdateForm.cs
  30. 5 6
      Optimizer/HostsHelper.cs
  31. 0 5
      Optimizer/IntegratorHelper.cs
  32. 1 1
      Optimizer/Models/AppInfo.cs
  33. 5 13
      Optimizer/Models/Enums.cs
  34. 0 0
      Optimizer/Models/Hardware.cs
  35. 102 0
      Optimizer/Models/Options.cs
  36. 1 0
      Optimizer/Models/SilentConfig.cs
  37. 21 0
      Optimizer/Models/StartupBackupItem.cs
  38. 1 1
      Optimizer/Models/StartupItem.cs
  39. 0 0
      Optimizer/Models/TelemetryData.cs
  40. 33 11
      Optimizer/OptimizeHelper.cs
  41. 13 10
      Optimizer/Optimizer.csproj
  42. 12 110
      Optimizer/OptionsHelper.cs
  43. 1 1
      Optimizer/PingerHelper.cs
  44. 16 18
      Optimizer/Program.cs
  45. 126 90
      Optimizer/Properties/Resources.Designer.cs
  46. 6 0
      Optimizer/Properties/Resources.resx
  47. BIN
      Optimizer/Resources/Flags/bulgaria.png
  48. 5 1
      Optimizer/Resources/i18n/AR.json
  49. 5 1
      Optimizer/Resources/i18n/BG.json
  50. 5 1
      Optimizer/Resources/i18n/CN.json
  51. 5 1
      Optimizer/Resources/i18n/CZ.json
  52. 5 1
      Optimizer/Resources/i18n/DE.json
  53. 5 1
      Optimizer/Resources/i18n/EL.json
  54. 6 2
      Optimizer/Resources/i18n/EN.json
  55. 5 1
      Optimizer/Resources/i18n/ES.json
  56. 5 1
      Optimizer/Resources/i18n/FA.json
  57. 5 1
      Optimizer/Resources/i18n/FR.json
  58. 5 1
      Optimizer/Resources/i18n/HU.json
  59. 5 1
      Optimizer/Resources/i18n/IT.json
  60. 5 1
      Optimizer/Resources/i18n/JA.json
  61. 5 1
      Optimizer/Resources/i18n/KO.json
  62. 5 1
      Optimizer/Resources/i18n/KU.json
  63. 5 1
      Optimizer/Resources/i18n/NE.json
  64. 5 1
      Optimizer/Resources/i18n/NL.json
  65. 5 1
      Optimizer/Resources/i18n/PL.json
  66. 5 1
      Optimizer/Resources/i18n/PT.json
  67. 5 1
      Optimizer/Resources/i18n/RO.json
  68. 5 1
      Optimizer/Resources/i18n/RU.json
  69. 5 1
      Optimizer/Resources/i18n/TR.json
  70. 5 1
      Optimizer/Resources/i18n/TW.json
  71. 5 1
      Optimizer/Resources/i18n/UA.json
  72. 76 65
      Optimizer/SilentOps.cs
  73. 0 21
      Optimizer/StartupBackupItem.cs
  74. 15 11
      Optimizer/StartupHelper.cs
  75. 5 5
      Optimizer/TokenPrivilegeHelper.cs
  76. 0 30
      Optimizer/UserFoldersHelper.cs
  77. 105 19
      Optimizer/Utilities.cs
  78. 7 4
      README.md
  79. 1 0
      templates/template-windows11.json
  80. 1 1
      version.txt

+ 9 - 0
CHANGELOG.md

@@ -1,3 +1,12 @@
+## [15.9] - 2023-10-14
+- New: Disable CoPilot AI (in Windows 11)
+- New: Fully translated into Bulgarian
+- New: 'Reinforce policies' in Options re-applies your current enabled tweaks (#389)
+- Hotfix: Crash on localized versions of Windows (#383)
+- Hotfix: Various UI bugs
+- Improved: Optimized images and assets
+- Improved: Startup items detection
+
 ## [15.8] - 2023-08-26
 - New: Fully translated into Nepali (thanks to chapagetti)
 - New: You can now set custom DNS in Pinger, as well as from template

+ 4 - 1
Optimizer/Constants.cs

@@ -3,7 +3,9 @@
     internal static class Constants
     {
         internal static string DOWNLOADS_FOLDER = "OptimizerDownloads";
-        internal static string InternalDNS = "1.1.1.1";
+        internal static string INTERNAL_DNS = "1.1.1.1";
+        internal static string THEME_FLAG = "themeable";
+        internal static int CONTRAST_THRESHOLD = 149;
 
         internal static string INDICIUM_TOOL = "indicium";
         internal static string UWP_TOOL = "uwp";
@@ -37,6 +39,7 @@
         internal static string JAPANESE = "日本語";
         internal static string PERSIAN = "فارسی";
         internal static string NEPALI = "नेपाली";
+        internal static string BULGARIAN = "български";
 
         internal static string CloudflareDNS = "Cloudflare";
         internal static string OpenDNS = "OpenDNS";

+ 1 - 1
Optimizer/Controls/MoonCheck.cs

@@ -21,7 +21,7 @@ namespace Optimizer
                 this.Tag = "themeable";
                 this.Font = new Font(this.Font, FontStyle.Underline);
 
-                this.ForeColor = Options.ForegroundColor;
+                this.ForeColor = OptionsHelper.ForegroundColor;
             }
             else
             {

+ 1 - 1
Optimizer/Controls/MoonCheckList.cs

@@ -13,7 +13,7 @@ namespace Optimizer
         protected override void OnDrawItem(DrawItemEventArgs e)
         {
             Color foreColor = Color.White;
-            Color accentColor = Options.ForegroundColor;
+            Color accentColor = OptionsHelper.ForegroundColor;
 
             if (this.Items.Count > 0)
             {

+ 10 - 10
Optimizer/Controls/MoonMenuRenderer.cs

@@ -51,7 +51,7 @@ namespace Optimizer
         {
             get
             {
-                return Options.BackgroundColor;
+                return OptionsHelper.BackgroundColor;
             }
         }
 
@@ -59,21 +59,21 @@ namespace Optimizer
         {
             get
             {
-                return Options.BackgroundColor;
+                return OptionsHelper.BackgroundColor;
             }
         }
         public override Color ImageMarginGradientMiddle
         {
             get
             {
-                return Options.BackgroundColor;
+                return OptionsHelper.BackgroundColor;
             }
         }
         public override Color ImageMarginGradientEnd
         {
             get
             {
-                return Options.BackgroundColor;
+                return OptionsHelper.BackgroundColor;
             }
         }
 
@@ -81,7 +81,7 @@ namespace Optimizer
         {
             get
             {
-                return Options.BackgroundColor;
+                return OptionsHelper.BackgroundColor;
             }
         }
 
@@ -89,7 +89,7 @@ namespace Optimizer
         {
             get
             {
-                return Options.BackAccentColor;
+                return OptionsHelper.BackAccentColor;
             }
         }
 
@@ -97,7 +97,7 @@ namespace Optimizer
         {
             get
             {
-                return Options.BackAccentColor;
+                return OptionsHelper.BackAccentColor;
             }
         }
 
@@ -105,7 +105,7 @@ namespace Optimizer
         {
             get
             {
-                return Options.BackAccentColor;
+                return OptionsHelper.BackAccentColor;
             }
         }
 
@@ -113,7 +113,7 @@ namespace Optimizer
         {
             get
             {
-                return Options.BackAccentColor;
+                return OptionsHelper.BackAccentColor;
             }
         }
 
@@ -121,7 +121,7 @@ namespace Optimizer
         {
             get
             {
-                return Options.BackAccentColor;
+                return OptionsHelper.BackAccentColor;
             }
         }
     }

+ 1 - 1
Optimizer/Controls/MoonProgress.cs

@@ -22,7 +22,7 @@ namespace Optimizer
 
             rec.Width = (int)(rec.Width * ((double)base.Value / Maximum)) - 4;
             rec.Height -= 4;
-            brush = new LinearGradientBrush(rec, Options.ForegroundAccentColor, Options.ForegroundColor, LinearGradientMode.Vertical);
+            brush = new LinearGradientBrush(rec, OptionsHelper.ForegroundAccentColor, OptionsHelper.ForegroundColor, LinearGradientMode.Vertical);
             e.Graphics.FillRectangle(brush, 2, 2, rec.Width, rec.Height);
         }
     }

+ 1 - 1
Optimizer/Controls/MoonRadio.cs

@@ -21,7 +21,7 @@ namespace Optimizer
                 this.Tag = "themeable";
                 this.Font = new Font(this.Font, FontStyle.Underline);
 
-                this.ForeColor = Options.ForegroundColor;
+                this.ForeColor = OptionsHelper.ForegroundColor;
             }
             else
             {

+ 8 - 8
Optimizer/Controls/MoonTabs.cs

@@ -172,7 +172,7 @@ namespace Optimizer
             if (TabCount > 0)
             {
                 using (SolidBrush brushBackgroundTab = new SolidBrush(Color.FromArgb(40, 40, 40)))
-                using (SolidBrush brushDivider = new SolidBrush(Options.ForegroundColor))
+                using (SolidBrush brushDivider = new SolidBrush(OptionsHelper.ForegroundColor))
                 {
                     {
                         e.Graphics.FillRectangle(brushBackgroundTab, DisplayRectangle);
@@ -206,16 +206,16 @@ namespace Optimizer
 
             SolidBrush brushActiveText;
 
-            using (Pen penActive = new Pen(Options.ForegroundColor))
+            using (Pen penActive = new Pen(OptionsHelper.ForegroundColor))
             using (Pen penBorder = new Pen(Color.FromArgb(40, 40, 40), 0))
-            using (SolidBrush brushActive = new SolidBrush(Options.ForegroundColor))
+            using (SolidBrush brushActive = new SolidBrush(OptionsHelper.ForegroundColor))
             using (SolidBrush brushInActive = new SolidBrush(Color.FromArgb(40, 40, 40)))
-            using (SolidBrush brushAlternative = new SolidBrush(Options.ForegroundColor))
-            using (SolidBrush brushActiveIndicator = new SolidBrush(ControlPaint.Light(Options.ForegroundColor)))
-            using (SolidBrush brushInActiveIndicator = new SolidBrush(Options.ForegroundColor))
-            using (brushActiveText = new SolidBrush(Options.TextColor))
+            using (SolidBrush brushAlternative = new SolidBrush(OptionsHelper.ForegroundColor))
+            using (SolidBrush brushActiveIndicator = new SolidBrush(ControlPaint.Light(OptionsHelper.ForegroundColor)))
+            using (SolidBrush brushInActiveIndicator = new SolidBrush(OptionsHelper.ForegroundColor))
+            using (brushActiveText = new SolidBrush(OptionsHelper.TextColor))
             using (SolidBrush brushInActiveText = new SolidBrush(Color.White))
-            using (SolidBrush brushDrag = new SolidBrush(ControlPaint.Dark(Options.ForegroundColor)))
+            using (SolidBrush brushDrag = new SolidBrush(ControlPaint.Dark(OptionsHelper.ForegroundColor)))
             {
                 //if (MoonManager.THEME_PREFERENCE == THEME.LIGHT) brushActiveText = new SolidBrush(Color.White);
 

+ 5 - 5
Optimizer/Controls/MoonToggle.cs

@@ -58,17 +58,17 @@ namespace Optimizer
             if (this.Checked) //ON
             {
                 if (solidStyle)
-                    pevent.Graphics.FillPath(new SolidBrush(Options.ForegroundColor), GetFigurePath());
-                else pevent.Graphics.DrawPath(new Pen(Options.ForegroundColor, 2), GetFigurePath());
+                    pevent.Graphics.FillPath(new SolidBrush(OptionsHelper.ForegroundColor), GetFigurePath());
+                else pevent.Graphics.DrawPath(new Pen(OptionsHelper.ForegroundColor, 2), GetFigurePath());
                 //Draw the toggle
-                pevent.Graphics.FillEllipse(new SolidBrush(Options.TextColor),
+                pevent.Graphics.FillEllipse(new SolidBrush(OptionsHelper.TextColor),
                   new Rectangle(this.Width - this.Height + 1, 2, toggleSize, toggleSize));
             }
             else //OFF
             {
                 if (solidStyle)
-                    pevent.Graphics.FillPath(new SolidBrush(Options.BackAccentColor), GetFigurePath());
-                else pevent.Graphics.DrawPath(new Pen(Options.BackAccentColor, 2), GetFigurePath());
+                    pevent.Graphics.FillPath(new SolidBrush(OptionsHelper.BackAccentColor), GetFigurePath());
+                else pevent.Graphics.DrawPath(new Pen(OptionsHelper.BackAccentColor, 2), GetFigurePath());
                 //Draw the toggle
                 pevent.Graphics.FillEllipse(new SolidBrush(Color.White),
                   new Rectangle(2, 2, toggleSize, toggleSize));

+ 1 - 1
Optimizer/Controls/MoonTree.cs

@@ -49,7 +49,7 @@ namespace Optimizer
             }
 
             if (FindName(e.Node.Name)) TextRenderer.DrawText(e.Graphics, e.Node.Text, this.Font, e.Node.Bounds, Color.Silver);
-            else if (e.Node.Tag != null && e.Node.Tag.ToString() == _primaryItemTag) TextRenderer.DrawText(e.Graphics, e.Node.Text, this.Font, e.Node.Bounds, Options.ForegroundColor);
+            else if (e.Node.Tag != null && e.Node.Tag.ToString() == _primaryItemTag) TextRenderer.DrawText(e.Graphics, e.Node.Text, this.Font, e.Node.Bounds, OptionsHelper.ForegroundColor);
             else TextRenderer.DrawText(e.Graphics, e.Node.Text, this.Font, e.Node.Bounds, Color.White);
 
             if (this.ImageList != null && this.ImageList.Images.Count > 0 && e.Node.SelectedImageIndex > -1)

+ 31 - 0
Optimizer/DebugHelper.cs

@@ -0,0 +1,31 @@
+using Newtonsoft.Json.Linq;
+using System;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace Optimizer
+{
+    // Collection of useful debugging methods and utilities
+    internal sealed class DebugHelper
+    {
+        // For comparing and detecting missing properties in two translation JSON files
+        internal static void FindDifferenceInTwoJsons()
+        {
+            JObject file1 = JObject.Parse(Properties.Resources.EN);
+            JObject file2 = JObject.Parse(Properties.Resources.NE);
+
+            var p1 = file1.Properties().ToList();
+            var p2 = file2.Properties().ToList();
+
+            var missingProps = p1.Where(expected => p2.Where(actual => actual.Name == expected.Name).Count() == 0);
+
+            StringBuilder sb = new StringBuilder();
+            foreach (var x in missingProps)
+            {
+                sb.Append(x.Name + Environment.NewLine);
+            }
+            MessageBox.Show(sb.ToString());
+        }
+    }
+}

+ 1 - 4
Optimizer/EmbeddedAssembly.cs

@@ -20,7 +20,7 @@ namespace Optimizer
 
             using (Stream stream = currentAssembly.GetManifestResourceStream(embeddedResource))
             {
-                if (stream == null) throw new Exception(embeddedResource + " is not found in Embedded Resources.");
+                if (stream == null) throw new Exception($"{embeddedResource} is not found in Embedded Resources.");
 
                 bytes = new byte[(int)stream.Length];
                 stream.Read(bytes, 0, (int)stream.Length);
@@ -69,16 +69,13 @@ namespace Optimizer
             }
 
             assembly = Assembly.LoadFile(tempFile);
-
             _dictionary.Add(assembly.FullName, assembly);
         }
 
         internal static Assembly Get(string assemblyFullName)
         {
             if (_dictionary == null || _dictionary.Count == 0) return null;
-
             if (_dictionary.ContainsKey(assemblyFullName)) return _dictionary[assemblyFullName];
-
             return null;
         }
     }

+ 1 - 1
Optimizer/ErrorLogger.cs

@@ -27,7 +27,7 @@ namespace Optimizer
             _silentReportLog.AppendLine();
         }
 
-        internal static void InitSilentReport()
+        internal static void InitializeSilentReport()
         {
             _silentReportLog = new StringBuilder();
 

+ 2 - 2
Optimizer/Forms/AboutForm.cs

@@ -9,9 +9,9 @@ namespace Optimizer
         public AboutForm()
         {
             InitializeComponent();
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
 
-            pictureBox1.BackColor = Options.CurrentOptions.Theme;
+            pictureBox1.BackColor = OptionsHelper.CurrentOptions.Theme;
         }
 
         private void About_Load(object sender, EventArgs e)

+ 3 - 3
Optimizer/Forms/FileUnlockForm.cs

@@ -16,10 +16,10 @@ namespace Optimizer
         {
             InitializeComponent();
             CheckForIllegalCrossThreadCalls = false;
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
 
-            radioFile.Text = Options.TranslationList["radioFile"].ToString();
-            btnKill.Text = Options.TranslationList["btnKill"].ToString();
+            radioFile.Text = OptionsHelper.TranslationList["radioFile"].ToString();
+            btnKill.Text = OptionsHelper.TranslationList["btnKill"].ToString();
         }
 
         private void FileUnlockForm_Load(object sender, EventArgs e)

+ 181 - 115
Optimizer/Forms/FirstRunForm.Designer.cs

@@ -75,6 +75,10 @@ namespace Optimizer
             this.pictureBox18 = new System.Windows.Forms.PictureBox();
             this.radioNepali = new Optimizer.MoonRadio();
             this.pictureBox19 = new System.Windows.Forms.PictureBox();
+            this.radioUkrainian = new Optimizer.MoonRadio();
+            this.pictureBox20 = new System.Windows.Forms.PictureBox();
+            this.radioBulgarian = new Optimizer.MoonRadio();
+            this.pictureBox21 = new System.Windows.Forms.PictureBox();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox88)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox87)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox86)).BeginInit();
@@ -97,15 +101,16 @@ namespace Optimizer
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox17)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox18)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox19)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox20)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox21)).BeginInit();
             this.SuspendLayout();
             // 
             // pictureBox88
             // 
             this.pictureBox88.Image = global::Optimizer.Properties.Resources.greece;
-            this.pictureBox88.Location = new System.Drawing.Point(20, 108);
-            this.pictureBox88.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox88.Location = new System.Drawing.Point(13, 72);
             this.pictureBox88.Name = "pictureBox88";
-            this.pictureBox88.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox88.Size = new System.Drawing.Size(32, 19);
             this.pictureBox88.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox88.TabIndex = 83;
             this.pictureBox88.TabStop = false;
@@ -114,10 +119,9 @@ namespace Optimizer
             // pictureBox87
             // 
             this.pictureBox87.Image = global::Optimizer.Properties.Resources.russia;
-            this.pictureBox87.Location = new System.Drawing.Point(20, 64);
-            this.pictureBox87.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox87.Location = new System.Drawing.Point(13, 43);
             this.pictureBox87.Name = "pictureBox87";
-            this.pictureBox87.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox87.Size = new System.Drawing.Size(32, 19);
             this.pictureBox87.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox87.TabIndex = 82;
             this.pictureBox87.TabStop = false;
@@ -126,10 +130,9 @@ namespace Optimizer
             // pictureBox86
             // 
             this.pictureBox86.Image = global::Optimizer.Properties.Resources.united_kingdom;
-            this.pictureBox86.Location = new System.Drawing.Point(20, 21);
-            this.pictureBox86.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox86.Location = new System.Drawing.Point(13, 14);
             this.pictureBox86.Name = "pictureBox86";
-            this.pictureBox86.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox86.Size = new System.Drawing.Size(32, 19);
             this.pictureBox86.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox86.TabIndex = 81;
             this.pictureBox86.TabStop = false;
@@ -148,9 +151,10 @@ namespace Optimizer
             this.btnStart.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
             this.btnStart.Font = new System.Drawing.Font("Segoe UI Semibold", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.btnStart.ForeColor = System.Drawing.Color.White;
-            this.btnStart.Location = new System.Drawing.Point(16, 537);
+            this.btnStart.Location = new System.Drawing.Point(11, 401);
+            this.btnStart.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.btnStart.Name = "btnStart";
-            this.btnStart.Size = new System.Drawing.Size(471, 46);
+            this.btnStart.Size = new System.Drawing.Size(314, 31);
             this.btnStart.TabIndex = 86;
             this.btnStart.Tag = "themeable";
             this.btnStart.Text = "✓";
@@ -160,10 +164,9 @@ namespace Optimizer
             // pictureBox1
             // 
             this.pictureBox1.Image = global::Optimizer.Properties.Resources.turkey;
-            this.pictureBox1.Location = new System.Drawing.Point(272, 18);
-            this.pictureBox1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox1.Location = new System.Drawing.Point(181, 12);
             this.pictureBox1.Name = "pictureBox1";
-            this.pictureBox1.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox1.Size = new System.Drawing.Size(32, 19);
             this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox1.TabIndex = 87;
             this.pictureBox1.TabStop = false;
@@ -172,10 +175,9 @@ namespace Optimizer
             // pictureBox2
             // 
             this.pictureBox2.Image = global::Optimizer.Properties.Resources.germany;
-            this.pictureBox2.Location = new System.Drawing.Point(20, 152);
-            this.pictureBox2.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox2.Location = new System.Drawing.Point(13, 101);
             this.pictureBox2.Name = "pictureBox2";
-            this.pictureBox2.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox2.Size = new System.Drawing.Size(32, 19);
             this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox2.TabIndex = 89;
             this.pictureBox2.TabStop = false;
@@ -184,10 +186,9 @@ namespace Optimizer
             // pictureBox3
             // 
             this.pictureBox3.Image = global::Optimizer.Properties.Resources.spain;
-            this.pictureBox3.Location = new System.Drawing.Point(272, 62);
-            this.pictureBox3.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox3.Location = new System.Drawing.Point(181, 41);
             this.pictureBox3.Name = "pictureBox3";
-            this.pictureBox3.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox3.Size = new System.Drawing.Size(32, 19);
             this.pictureBox3.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox3.TabIndex = 91;
             this.pictureBox3.TabStop = false;
@@ -196,10 +197,9 @@ namespace Optimizer
             // pictureBox4
             // 
             this.pictureBox4.Image = global::Optimizer.Properties.Resources.brazil;
-            this.pictureBox4.Location = new System.Drawing.Point(272, 105);
-            this.pictureBox4.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox4.Location = new System.Drawing.Point(181, 70);
             this.pictureBox4.Name = "pictureBox4";
-            this.pictureBox4.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox4.Size = new System.Drawing.Size(32, 19);
             this.pictureBox4.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox4.TabIndex = 93;
             this.pictureBox4.TabStop = false;
@@ -208,10 +208,9 @@ namespace Optimizer
             // pictureBox5
             // 
             this.pictureBox5.Image = global::Optimizer.Properties.Resources.france;
-            this.pictureBox5.Location = new System.Drawing.Point(273, 148);
-            this.pictureBox5.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox5.Location = new System.Drawing.Point(182, 99);
             this.pictureBox5.Name = "pictureBox5";
-            this.pictureBox5.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox5.Size = new System.Drawing.Size(32, 19);
             this.pictureBox5.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox5.TabIndex = 95;
             this.pictureBox5.TabStop = false;
@@ -220,10 +219,9 @@ namespace Optimizer
             // pictureBox6
             // 
             this.pictureBox6.Image = global::Optimizer.Properties.Resources.italy;
-            this.pictureBox6.Location = new System.Drawing.Point(20, 195);
-            this.pictureBox6.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox6.Location = new System.Drawing.Point(13, 130);
             this.pictureBox6.Name = "pictureBox6";
-            this.pictureBox6.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox6.Size = new System.Drawing.Size(32, 19);
             this.pictureBox6.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox6.TabIndex = 97;
             this.pictureBox6.TabStop = false;
@@ -232,10 +230,9 @@ namespace Optimizer
             // pictureBox7
             // 
             this.pictureBox7.Image = global::Optimizer.Properties.Resources.china;
-            this.pictureBox7.Location = new System.Drawing.Point(273, 195);
-            this.pictureBox7.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox7.Location = new System.Drawing.Point(182, 130);
             this.pictureBox7.Name = "pictureBox7";
-            this.pictureBox7.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox7.Size = new System.Drawing.Size(32, 19);
             this.pictureBox7.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox7.TabIndex = 99;
             this.pictureBox7.TabStop = false;
@@ -244,10 +241,9 @@ namespace Optimizer
             // pictureBox8
             // 
             this.pictureBox8.Image = global::Optimizer.Properties.Resources.czech;
-            this.pictureBox8.Location = new System.Drawing.Point(20, 238);
-            this.pictureBox8.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox8.Location = new System.Drawing.Point(13, 159);
             this.pictureBox8.Name = "pictureBox8";
-            this.pictureBox8.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox8.Size = new System.Drawing.Size(32, 19);
             this.pictureBox8.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox8.TabIndex = 101;
             this.pictureBox8.TabStop = false;
@@ -256,10 +252,9 @@ namespace Optimizer
             // pictureBox9
             // 
             this.pictureBox9.Image = global::Optimizer.Properties.Resources.china;
-            this.pictureBox9.Location = new System.Drawing.Point(273, 240);
-            this.pictureBox9.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox9.Location = new System.Drawing.Point(182, 160);
             this.pictureBox9.Name = "pictureBox9";
-            this.pictureBox9.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox9.Size = new System.Drawing.Size(32, 19);
             this.pictureBox9.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox9.TabIndex = 103;
             this.pictureBox9.TabStop = false;
@@ -268,10 +263,9 @@ namespace Optimizer
             // pictureBox10
             // 
             this.pictureBox10.Image = global::Optimizer.Properties.Resources.korea;
-            this.pictureBox10.Location = new System.Drawing.Point(273, 284);
-            this.pictureBox10.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox10.Location = new System.Drawing.Point(182, 189);
             this.pictureBox10.Name = "pictureBox10";
-            this.pictureBox10.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox10.Size = new System.Drawing.Size(32, 19);
             this.pictureBox10.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox10.TabIndex = 105;
             this.pictureBox10.TabStop = false;
@@ -282,9 +276,10 @@ namespace Optimizer
             this.radioKorean.AutoSize = true;
             this.radioKorean.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioKorean.ForeColor = System.Drawing.Color.White;
-            this.radioKorean.Location = new System.Drawing.Point(333, 279);
+            this.radioKorean.Location = new System.Drawing.Point(222, 186);
+            this.radioKorean.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioKorean.Name = "radioKorean";
-            this.radioKorean.Size = new System.Drawing.Size(111, 36);
+            this.radioKorean.Size = new System.Drawing.Size(76, 25);
             this.radioKorean.TabIndex = 106;
             this.radioKorean.Tag = "";
             this.radioKorean.Text = "한국어";
@@ -296,9 +291,10 @@ namespace Optimizer
             this.radioTaiwan.AutoSize = true;
             this.radioTaiwan.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioTaiwan.ForeColor = System.Drawing.Color.White;
-            this.radioTaiwan.Location = new System.Drawing.Point(333, 236);
+            this.radioTaiwan.Location = new System.Drawing.Point(222, 157);
+            this.radioTaiwan.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioTaiwan.Name = "radioTaiwan";
-            this.radioTaiwan.Size = new System.Drawing.Size(139, 36);
+            this.radioTaiwan.Size = new System.Drawing.Size(96, 25);
             this.radioTaiwan.TabIndex = 104;
             this.radioTaiwan.Tag = "";
             this.radioTaiwan.Text = "繁體中文";
@@ -310,9 +306,10 @@ namespace Optimizer
             this.radioCzech.AutoSize = true;
             this.radioCzech.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioCzech.ForeColor = System.Drawing.Color.White;
-            this.radioCzech.Location = new System.Drawing.Point(80, 234);
+            this.radioCzech.Location = new System.Drawing.Point(53, 156);
+            this.radioCzech.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioCzech.Name = "radioCzech";
-            this.radioCzech.Size = new System.Drawing.Size(119, 36);
+            this.radioCzech.Size = new System.Drawing.Size(81, 25);
             this.radioCzech.TabIndex = 102;
             this.radioCzech.Tag = "";
             this.radioCzech.Text = "Čeština";
@@ -324,9 +321,10 @@ namespace Optimizer
             this.radioChinese.AutoSize = true;
             this.radioChinese.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioChinese.ForeColor = System.Drawing.Color.White;
-            this.radioChinese.Location = new System.Drawing.Point(333, 190);
+            this.radioChinese.Location = new System.Drawing.Point(222, 127);
+            this.radioChinese.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioChinese.Name = "radioChinese";
-            this.radioChinese.Size = new System.Drawing.Size(139, 36);
+            this.radioChinese.Size = new System.Drawing.Size(96, 25);
             this.radioChinese.TabIndex = 100;
             this.radioChinese.Tag = "";
             this.radioChinese.Text = "简体中文";
@@ -338,9 +336,10 @@ namespace Optimizer
             this.radioItalian.AutoSize = true;
             this.radioItalian.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioItalian.ForeColor = System.Drawing.Color.White;
-            this.radioItalian.Location = new System.Drawing.Point(80, 190);
+            this.radioItalian.Location = new System.Drawing.Point(53, 127);
+            this.radioItalian.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioItalian.Name = "radioItalian";
-            this.radioItalian.Size = new System.Drawing.Size(121, 36);
+            this.radioItalian.Size = new System.Drawing.Size(82, 25);
             this.radioItalian.TabIndex = 98;
             this.radioItalian.Tag = "";
             this.radioItalian.Text = "Italiano";
@@ -352,9 +351,10 @@ namespace Optimizer
             this.radioFrench.AutoSize = true;
             this.radioFrench.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioFrench.ForeColor = System.Drawing.Color.White;
-            this.radioFrench.Location = new System.Drawing.Point(333, 144);
+            this.radioFrench.Location = new System.Drawing.Point(222, 96);
+            this.radioFrench.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioFrench.Name = "radioFrench";
-            this.radioFrench.Size = new System.Drawing.Size(127, 36);
+            this.radioFrench.Size = new System.Drawing.Size(86, 25);
             this.radioFrench.TabIndex = 96;
             this.radioFrench.Tag = "";
             this.radioFrench.Text = "Français";
@@ -366,9 +366,10 @@ namespace Optimizer
             this.radioPortuguese.AutoSize = true;
             this.radioPortuguese.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioPortuguese.ForeColor = System.Drawing.Color.White;
-            this.radioPortuguese.Location = new System.Drawing.Point(332, 100);
+            this.radioPortuguese.Location = new System.Drawing.Point(221, 67);
+            this.radioPortuguese.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioPortuguese.Name = "radioPortuguese";
-            this.radioPortuguese.Size = new System.Drawing.Size(150, 36);
+            this.radioPortuguese.Size = new System.Drawing.Size(102, 25);
             this.radioPortuguese.TabIndex = 94;
             this.radioPortuguese.Tag = "";
             this.radioPortuguese.Text = "Português";
@@ -380,9 +381,10 @@ namespace Optimizer
             this.radioSpanish.AutoSize = true;
             this.radioSpanish.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioSpanish.ForeColor = System.Drawing.Color.White;
-            this.radioSpanish.Location = new System.Drawing.Point(332, 57);
+            this.radioSpanish.Location = new System.Drawing.Point(221, 38);
+            this.radioSpanish.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioSpanish.Name = "radioSpanish";
-            this.radioSpanish.Size = new System.Drawing.Size(122, 36);
+            this.radioSpanish.Size = new System.Drawing.Size(84, 25);
             this.radioSpanish.TabIndex = 92;
             this.radioSpanish.Tag = "";
             this.radioSpanish.Text = "Español";
@@ -394,9 +396,10 @@ namespace Optimizer
             this.radioGerman.AutoSize = true;
             this.radioGerman.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioGerman.ForeColor = System.Drawing.Color.White;
-            this.radioGerman.Location = new System.Drawing.Point(80, 147);
+            this.radioGerman.Location = new System.Drawing.Point(53, 98);
+            this.radioGerman.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioGerman.Name = "radioGerman";
-            this.radioGerman.Size = new System.Drawing.Size(127, 36);
+            this.radioGerman.Size = new System.Drawing.Size(87, 25);
             this.radioGerman.TabIndex = 90;
             this.radioGerman.Tag = "";
             this.radioGerman.Text = "Deutsch";
@@ -408,9 +411,10 @@ namespace Optimizer
             this.radioTurkish.AutoSize = true;
             this.radioTurkish.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioTurkish.ForeColor = System.Drawing.Color.White;
-            this.radioTurkish.Location = new System.Drawing.Point(332, 14);
+            this.radioTurkish.Location = new System.Drawing.Point(221, 9);
+            this.radioTurkish.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioTurkish.Name = "radioTurkish";
-            this.radioTurkish.Size = new System.Drawing.Size(110, 36);
+            this.radioTurkish.Size = new System.Drawing.Size(76, 25);
             this.radioTurkish.TabIndex = 88;
             this.radioTurkish.Tag = "";
             this.radioTurkish.Text = "Türkçe";
@@ -422,9 +426,10 @@ namespace Optimizer
             this.radioHellenic.AutoSize = true;
             this.radioHellenic.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioHellenic.ForeColor = System.Drawing.Color.White;
-            this.radioHellenic.Location = new System.Drawing.Point(80, 104);
+            this.radioHellenic.Location = new System.Drawing.Point(53, 69);
+            this.radioHellenic.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioHellenic.Name = "radioHellenic";
-            this.radioHellenic.Size = new System.Drawing.Size(140, 36);
+            this.radioHellenic.Size = new System.Drawing.Size(94, 25);
             this.radioHellenic.TabIndex = 84;
             this.radioHellenic.Tag = "";
             this.radioHellenic.Text = "Ελληνικά";
@@ -437,9 +442,10 @@ namespace Optimizer
             this.radioEnglish.Checked = true;
             this.radioEnglish.Font = new System.Drawing.Font("Segoe UI Semibold", 12F, System.Drawing.FontStyle.Underline);
             this.radioEnglish.ForeColor = System.Drawing.Color.MediumOrchid;
-            this.radioEnglish.Location = new System.Drawing.Point(80, 16);
+            this.radioEnglish.Location = new System.Drawing.Point(53, 11);
+            this.radioEnglish.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioEnglish.Name = "radioEnglish";
-            this.radioEnglish.Size = new System.Drawing.Size(115, 36);
+            this.radioEnglish.Size = new System.Drawing.Size(79, 25);
             this.radioEnglish.TabIndex = 80;
             this.radioEnglish.TabStop = true;
             this.radioEnglish.Tag = "themeable";
@@ -452,9 +458,10 @@ namespace Optimizer
             this.radioRussian.AutoSize = true;
             this.radioRussian.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioRussian.ForeColor = System.Drawing.Color.White;
-            this.radioRussian.Location = new System.Drawing.Point(80, 60);
+            this.radioRussian.Location = new System.Drawing.Point(53, 40);
+            this.radioRussian.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioRussian.Name = "radioRussian";
-            this.radioRussian.Size = new System.Drawing.Size(128, 36);
+            this.radioRussian.Size = new System.Drawing.Size(90, 25);
             this.radioRussian.TabIndex = 79;
             this.radioRussian.Tag = "";
             this.radioRussian.Text = "русский";
@@ -466,9 +473,10 @@ namespace Optimizer
             this.radioPolish.AutoSize = true;
             this.radioPolish.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioPolish.ForeColor = System.Drawing.Color.White;
-            this.radioPolish.Location = new System.Drawing.Point(80, 278);
+            this.radioPolish.Location = new System.Drawing.Point(53, 185);
+            this.radioPolish.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioPolish.Name = "radioPolish";
-            this.radioPolish.Size = new System.Drawing.Size(101, 36);
+            this.radioPolish.Size = new System.Drawing.Size(69, 25);
             this.radioPolish.TabIndex = 108;
             this.radioPolish.Tag = "";
             this.radioPolish.Text = "Polski";
@@ -478,10 +486,9 @@ namespace Optimizer
             // pictureBox11
             // 
             this.pictureBox11.Image = global::Optimizer.Properties.Resources.poland;
-            this.pictureBox11.Location = new System.Drawing.Point(20, 282);
-            this.pictureBox11.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox11.Location = new System.Drawing.Point(13, 188);
             this.pictureBox11.Name = "pictureBox11";
-            this.pictureBox11.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox11.Size = new System.Drawing.Size(32, 19);
             this.pictureBox11.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox11.TabIndex = 107;
             this.pictureBox11.TabStop = false;
@@ -492,9 +499,10 @@ namespace Optimizer
             this.radioArabic.AutoSize = true;
             this.radioArabic.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioArabic.ForeColor = System.Drawing.Color.White;
-            this.radioArabic.Location = new System.Drawing.Point(80, 321);
+            this.radioArabic.Location = new System.Drawing.Point(53, 214);
+            this.radioArabic.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioArabic.Name = "radioArabic";
-            this.radioArabic.Size = new System.Drawing.Size(105, 36);
+            this.radioArabic.Size = new System.Drawing.Size(71, 25);
             this.radioArabic.TabIndex = 110;
             this.radioArabic.Tag = "";
             this.radioArabic.Text = "العربية";
@@ -504,10 +512,9 @@ namespace Optimizer
             // pictureBox12
             // 
             this.pictureBox12.Image = global::Optimizer.Properties.Resources.egypt;
-            this.pictureBox12.Location = new System.Drawing.Point(20, 326);
-            this.pictureBox12.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox12.Location = new System.Drawing.Point(13, 217);
             this.pictureBox12.Name = "pictureBox12";
-            this.pictureBox12.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox12.Size = new System.Drawing.Size(32, 19);
             this.pictureBox12.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox12.TabIndex = 109;
             this.pictureBox12.TabStop = false;
@@ -518,9 +525,10 @@ namespace Optimizer
             this.radioKurdish.AutoSize = true;
             this.radioKurdish.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioKurdish.ForeColor = System.Drawing.Color.White;
-            this.radioKurdish.Location = new System.Drawing.Point(333, 321);
+            this.radioKurdish.Location = new System.Drawing.Point(222, 214);
+            this.radioKurdish.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioKurdish.Name = "radioKurdish";
-            this.radioKurdish.Size = new System.Drawing.Size(101, 36);
+            this.radioKurdish.Size = new System.Drawing.Size(70, 25);
             this.radioKurdish.TabIndex = 112;
             this.radioKurdish.Tag = "";
             this.radioKurdish.Text = "کوردی";
@@ -530,10 +538,9 @@ namespace Optimizer
             // pictureBox13
             // 
             this.pictureBox13.Image = global::Optimizer.Properties.Resources.kurdish;
-            this.pictureBox13.Location = new System.Drawing.Point(273, 326);
-            this.pictureBox13.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox13.Location = new System.Drawing.Point(182, 217);
             this.pictureBox13.Name = "pictureBox13";
-            this.pictureBox13.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox13.Size = new System.Drawing.Size(32, 19);
             this.pictureBox13.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox13.TabIndex = 111;
             this.pictureBox13.TabStop = false;
@@ -544,9 +551,10 @@ namespace Optimizer
             this.radioHungarian.AutoSize = true;
             this.radioHungarian.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioHungarian.ForeColor = System.Drawing.Color.White;
-            this.radioHungarian.Location = new System.Drawing.Point(80, 363);
+            this.radioHungarian.Location = new System.Drawing.Point(53, 242);
+            this.radioHungarian.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioHungarian.Name = "radioHungarian";
-            this.radioHungarian.Size = new System.Drawing.Size(122, 36);
+            this.radioHungarian.Size = new System.Drawing.Size(83, 25);
             this.radioHungarian.TabIndex = 114;
             this.radioHungarian.Tag = "";
             this.radioHungarian.Text = "Magyar";
@@ -556,10 +564,9 @@ namespace Optimizer
             // pictureBox14
             // 
             this.pictureBox14.Image = global::Optimizer.Properties.Resources.hungary;
-            this.pictureBox14.Location = new System.Drawing.Point(20, 368);
-            this.pictureBox14.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox14.Location = new System.Drawing.Point(13, 245);
             this.pictureBox14.Name = "pictureBox14";
-            this.pictureBox14.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox14.Size = new System.Drawing.Size(32, 19);
             this.pictureBox14.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox14.TabIndex = 113;
             this.pictureBox14.TabStop = false;
@@ -570,9 +577,10 @@ namespace Optimizer
             this.radioRomanian.AutoSize = true;
             this.radioRomanian.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioRomanian.ForeColor = System.Drawing.Color.White;
-            this.radioRomanian.Location = new System.Drawing.Point(333, 364);
+            this.radioRomanian.Location = new System.Drawing.Point(222, 243);
+            this.radioRomanian.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioRomanian.Name = "radioRomanian";
-            this.radioRomanian.Size = new System.Drawing.Size(128, 36);
+            this.radioRomanian.Size = new System.Drawing.Size(87, 25);
             this.radioRomanian.TabIndex = 116;
             this.radioRomanian.Tag = "";
             this.radioRomanian.Text = "Română";
@@ -582,10 +590,9 @@ namespace Optimizer
             // pictureBox15
             // 
             this.pictureBox15.Image = global::Optimizer.Properties.Resources.romania;
-            this.pictureBox15.Location = new System.Drawing.Point(273, 369);
-            this.pictureBox15.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox15.Location = new System.Drawing.Point(182, 246);
             this.pictureBox15.Name = "pictureBox15";
-            this.pictureBox15.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox15.Size = new System.Drawing.Size(32, 19);
             this.pictureBox15.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox15.TabIndex = 115;
             this.pictureBox15.TabStop = false;
@@ -596,9 +603,10 @@ namespace Optimizer
             this.radioDutch.AutoSize = true;
             this.radioDutch.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioDutch.ForeColor = System.Drawing.Color.White;
-            this.radioDutch.Location = new System.Drawing.Point(80, 406);
+            this.radioDutch.Location = new System.Drawing.Point(53, 271);
+            this.radioDutch.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioDutch.Name = "radioDutch";
-            this.radioDutch.Size = new System.Drawing.Size(163, 36);
+            this.radioDutch.Size = new System.Drawing.Size(112, 25);
             this.radioDutch.TabIndex = 118;
             this.radioDutch.Tag = "";
             this.radioDutch.Text = "Nederlands";
@@ -608,10 +616,9 @@ namespace Optimizer
             // pictureBox16
             // 
             this.pictureBox16.Image = global::Optimizer.Properties.Resources.dutch;
-            this.pictureBox16.Location = new System.Drawing.Point(20, 411);
-            this.pictureBox16.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox16.Location = new System.Drawing.Point(13, 274);
             this.pictureBox16.Name = "pictureBox16";
-            this.pictureBox16.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox16.Size = new System.Drawing.Size(32, 19);
             this.pictureBox16.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox16.TabIndex = 117;
             this.pictureBox16.TabStop = false;
@@ -620,10 +627,9 @@ namespace Optimizer
             // pictureBox17
             // 
             this.pictureBox17.Image = global::Optimizer.Properties.Resources.japan;
-            this.pictureBox17.Location = new System.Drawing.Point(273, 411);
-            this.pictureBox17.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox17.Location = new System.Drawing.Point(182, 274);
             this.pictureBox17.Name = "pictureBox17";
-            this.pictureBox17.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox17.Size = new System.Drawing.Size(32, 19);
             this.pictureBox17.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox17.TabIndex = 119;
             this.pictureBox17.TabStop = false;
@@ -634,9 +640,10 @@ namespace Optimizer
             this.radioJapanese.AutoSize = true;
             this.radioJapanese.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioJapanese.ForeColor = System.Drawing.Color.White;
-            this.radioJapanese.Location = new System.Drawing.Point(333, 408);
+            this.radioJapanese.Location = new System.Drawing.Point(222, 272);
+            this.radioJapanese.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioJapanese.Name = "radioJapanese";
-            this.radioJapanese.Size = new System.Drawing.Size(114, 36);
+            this.radioJapanese.Size = new System.Drawing.Size(79, 25);
             this.radioJapanese.TabIndex = 120;
             this.radioJapanese.Tag = "";
             this.radioJapanese.Text = "日本語";
@@ -648,9 +655,10 @@ namespace Optimizer
             this.radioFarsi.AutoSize = true;
             this.radioFarsi.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioFarsi.ForeColor = System.Drawing.Color.White;
-            this.radioFarsi.Location = new System.Drawing.Point(80, 450);
+            this.radioFarsi.Location = new System.Drawing.Point(53, 300);
+            this.radioFarsi.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioFarsi.Name = "radioFarsi";
-            this.radioFarsi.Size = new System.Drawing.Size(99, 36);
+            this.radioFarsi.Size = new System.Drawing.Size(69, 25);
             this.radioFarsi.TabIndex = 122;
             this.radioFarsi.Tag = "";
             this.radioFarsi.Text = "فارسی";
@@ -660,10 +668,9 @@ namespace Optimizer
             // pictureBox18
             // 
             this.pictureBox18.Image = global::Optimizer.Properties.Resources.iran;
-            this.pictureBox18.Location = new System.Drawing.Point(20, 453);
-            this.pictureBox18.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+            this.pictureBox18.Location = new System.Drawing.Point(13, 302);
             this.pictureBox18.Name = "pictureBox18";
-            this.pictureBox18.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox18.Size = new System.Drawing.Size(32, 19);
             this.pictureBox18.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox18.TabIndex = 121;
             this.pictureBox18.TabStop = false;
@@ -674,9 +681,10 @@ namespace Optimizer
             this.radioNepali.AutoSize = true;
             this.radioNepali.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
             this.radioNepali.ForeColor = System.Drawing.Color.White;
-            this.radioNepali.Location = new System.Drawing.Point(333, 453);
+            this.radioNepali.Location = new System.Drawing.Point(222, 302);
+            this.radioNepali.Margin = new System.Windows.Forms.Padding(2, 2, 2, 2);
             this.radioNepali.Name = "radioNepali";
-            this.radioNepali.Size = new System.Drawing.Size(97, 36);
+            this.radioNepali.Size = new System.Drawing.Size(67, 25);
             this.radioNepali.TabIndex = 124;
             this.radioNepali.Tag = "";
             this.radioNepali.Text = "नेपाली";
@@ -686,23 +694,76 @@ namespace Optimizer
             // pictureBox19
             // 
             this.pictureBox19.Image = global::Optimizer.Properties.Resources.nepal;
-            this.pictureBox19.Location = new System.Drawing.Point(273, 456);
-            this.pictureBox19.Margin = new System.Windows.Forms.Padding(4);
+            this.pictureBox19.Location = new System.Drawing.Point(182, 304);
             this.pictureBox19.Name = "pictureBox19";
-            this.pictureBox19.Size = new System.Drawing.Size(48, 28);
+            this.pictureBox19.Size = new System.Drawing.Size(32, 19);
             this.pictureBox19.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox19.TabIndex = 123;
             this.pictureBox19.TabStop = false;
             this.pictureBox19.Click += new System.EventHandler(this.pictureBox19_Click);
             // 
+            // radioUkrainian
+            // 
+            this.radioUkrainian.AutoSize = true;
+            this.radioUkrainian.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
+            this.radioUkrainian.ForeColor = System.Drawing.Color.White;
+            this.radioUkrainian.Location = new System.Drawing.Point(222, 331);
+            this.radioUkrainian.Margin = new System.Windows.Forms.Padding(2);
+            this.radioUkrainian.Name = "radioUkrainian";
+            this.radioUkrainian.Size = new System.Drawing.Size(67, 25);
+            this.radioUkrainian.TabIndex = 128;
+            this.radioUkrainian.Tag = "";
+            this.radioUkrainian.Text = "नेपाली";
+            this.radioUkrainian.UseVisualStyleBackColor = true;
+            this.radioUkrainian.CheckedChanged += new System.EventHandler(this.radioUkrainian_CheckedChanged);
+            // 
+            // pictureBox20
+            // 
+            this.pictureBox20.Image = global::Optimizer.Properties.Resources.ukraine;
+            this.pictureBox20.Location = new System.Drawing.Point(182, 333);
+            this.pictureBox20.Name = "pictureBox20";
+            this.pictureBox20.Size = new System.Drawing.Size(32, 19);
+            this.pictureBox20.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+            this.pictureBox20.TabIndex = 127;
+            this.pictureBox20.TabStop = false;
+            // 
+            // radioBulgarian
+            // 
+            this.radioBulgarian.AutoSize = true;
+            this.radioBulgarian.Font = new System.Drawing.Font("Segoe UI Semibold", 12F);
+            this.radioBulgarian.ForeColor = System.Drawing.Color.White;
+            this.radioBulgarian.Location = new System.Drawing.Point(53, 329);
+            this.radioBulgarian.Margin = new System.Windows.Forms.Padding(2);
+            this.radioBulgarian.Name = "radioBulgarian";
+            this.radioBulgarian.Size = new System.Drawing.Size(69, 25);
+            this.radioBulgarian.TabIndex = 126;
+            this.radioBulgarian.Tag = "";
+            this.radioBulgarian.Text = "فارسی";
+            this.radioBulgarian.UseVisualStyleBackColor = true;
+            this.radioBulgarian.CheckedChanged += new System.EventHandler(this.radioBulgarian_CheckedChanged);
+            // 
+            // pictureBox21
+            // 
+            this.pictureBox21.Image = global::Optimizer.Properties.Resources.bulgaria;
+            this.pictureBox21.Location = new System.Drawing.Point(13, 331);
+            this.pictureBox21.Name = "pictureBox21";
+            this.pictureBox21.Size = new System.Drawing.Size(32, 19);
+            this.pictureBox21.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+            this.pictureBox21.TabIndex = 125;
+            this.pictureBox21.TabStop = false;
+            // 
             // FirstRunForm
             // 
             this.AcceptButton = this.btnStart;
-            this.AutoScaleDimensions = new System.Drawing.SizeF(144F, 144F);
+            this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
             this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
             this.CancelButton = this.btnStart;
-            this.ClientSize = new System.Drawing.Size(504, 600);
+            this.ClientSize = new System.Drawing.Size(336, 443);
+            this.Controls.Add(this.radioUkrainian);
+            this.Controls.Add(this.pictureBox20);
+            this.Controls.Add(this.radioBulgarian);
+            this.Controls.Add(this.pictureBox21);
             this.Controls.Add(this.radioNepali);
             this.Controls.Add(this.pictureBox19);
             this.Controls.Add(this.radioFarsi);
@@ -753,7 +814,6 @@ namespace Optimizer
             this.ForeColor = System.Drawing.Color.White;
             this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
             this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
-            this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
             this.MaximizeBox = false;
             this.MinimizeBox = false;
             this.Name = "FirstRunForm";
@@ -783,6 +843,8 @@ namespace Optimizer
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox17)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox18)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox19)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox20)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox21)).EndInit();
             this.ResumeLayout(false);
             this.PerformLayout();
 
@@ -835,5 +897,9 @@ namespace Optimizer
         private System.Windows.Forms.PictureBox pictureBox18;
         private MoonRadio radioNepali;
         private System.Windows.Forms.PictureBox pictureBox19;
+        private MoonRadio radioUkrainian;
+        private System.Windows.Forms.PictureBox pictureBox20;
+        private MoonRadio radioBulgarian;
+        private System.Windows.Forms.PictureBox pictureBox21;
     }
 }

+ 105 - 68
Optimizer/Forms/FirstRunForm.cs

@@ -9,7 +9,7 @@ namespace Optimizer
         {
             InitializeComponent();
             this.DoubleBuffered = true;
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
         }
 
         private void btnStart_Click(object sender, EventArgs e)
@@ -19,7 +19,30 @@ namespace Optimizer
 
         private void FirstRunForm_Load(object sender, EventArgs e)
         {
-
+            radioArabic.Text = Constants.ARABIC;
+            radioPortuguese.Text = Constants.PORTUGUESE;
+            radioChinese.Text = Constants.CHINESE;
+            radioCzech.Text = Constants.CZECH;
+            radioDutch.Text = Constants.DUTCH;
+            radioFrench.Text = Constants.FRENCH;
+            radioGerman.Text = Constants.GERMAN;
+            radioHellenic.Text = Constants.HELLENIC;
+            radioHungarian.Text = Constants.HUNGARIAN;
+            radioFarsi.Text = Constants.PERSIAN;
+            radioItalian.Text = Constants.ITALIAN;
+            radioJapanese.Text = Constants.JAPANESE;
+            radioKorean.Text = Constants.KOREAN;
+            radioKurdish.Text = Constants.KURDISH;
+            radioNepali.Text = Constants.NEPALI;
+            radioPolish.Text = Constants.POLISH;
+            radioRomanian.Text = Constants.ROMANIAN;
+            radioRussian.Text = Constants.RUSSIAN;
+            radioSpanish.Text = Constants.SPANISH;
+            radioTaiwan.Text = Constants.TAIWANESE;
+            radioTurkish.Text = Constants.TURKISH;
+            radioUkrainian.Text = Constants.UKRAINIAN;
+            radioBulgarian.Text = Constants.BULGARIAN;
+            radioEnglish.Text = Constants.ENGLISH;
         }
 
         private void pictureBox86_Click(object sender, EventArgs e)
@@ -39,23 +62,23 @@ namespace Optimizer
 
         private void radioEnglish_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.EN;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.EN;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void radioRussian_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.RU;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.RU;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void radioHellenic_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.EL;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.EL;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox1_Click(object sender, EventArgs e)
@@ -65,16 +88,16 @@ namespace Optimizer
 
         private void radioTurkish_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.TR;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.TR;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void radioGerman_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.DE;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.DE;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox2_Click(object sender, EventArgs e)
@@ -89,16 +112,16 @@ namespace Optimizer
 
         private void radioSpanish_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.ES;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.ES;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void radioPortuguese_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.PT;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.PT;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox4_Click(object sender, EventArgs e)
@@ -108,9 +131,9 @@ namespace Optimizer
 
         private void radioFrench_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.FR;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.FR;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox5_Click(object sender, EventArgs e)
@@ -120,9 +143,9 @@ namespace Optimizer
 
         private void radioitalian_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.IT;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.IT;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox6_Click(object sender, EventArgs e)
@@ -137,9 +160,9 @@ namespace Optimizer
 
         private void radioChinese_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.CN;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.CN;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox8_Click(object sender, EventArgs e)
@@ -149,16 +172,16 @@ namespace Optimizer
 
         private void radioCzech_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.CZ;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.CZ;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void radioTaiwan_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.TW;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.TW;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox9_Click(object sender, EventArgs e)
@@ -168,9 +191,9 @@ namespace Optimizer
 
         private void radioKorean_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.KO;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.KO;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox10_Click(object sender, EventArgs e)
@@ -185,16 +208,16 @@ namespace Optimizer
 
         private void radioPolish_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.PL;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.PL;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void radioArabic_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.AR;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.AR;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox12_Click(object sender, EventArgs e)
@@ -209,9 +232,9 @@ namespace Optimizer
 
         private void radioKurdish_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.KU;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.KU;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox14_Click(object sender, EventArgs e)
@@ -221,16 +244,16 @@ namespace Optimizer
 
         private void radioHungarian_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.HU;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.HU;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void radioRomanian_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.RO;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.RO;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox15_Click(object sender, EventArgs e)
@@ -240,9 +263,9 @@ namespace Optimizer
 
         private void radioDutch_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.NL;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.NL;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox16_Click(object sender, EventArgs e)
@@ -252,9 +275,9 @@ namespace Optimizer
 
         private void radioJapanese_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.JA;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.JA;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox17_Click(object sender, EventArgs e)
@@ -264,9 +287,9 @@ namespace Optimizer
 
         private void radioFarsi_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.FA;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.FA;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
 
         private void pictureBox18_Click(object sender, EventArgs e)
@@ -281,9 +304,23 @@ namespace Optimizer
 
         private void radioNepali_CheckedChanged(object sender, EventArgs e)
         {
-            Options.CurrentOptions.LanguageCode = LanguageCode.NE;
-            Options.SaveSettings();
-            Options.LoadTranslation();
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.NE;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
+        }
+
+        private void radioBulgarian_CheckedChanged(object sender, EventArgs e)
+        {
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.BG;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
+        }
+
+        private void radioUkrainian_CheckedChanged(object sender, EventArgs e)
+        {
+            OptionsHelper.CurrentOptions.LanguageCode = LanguageCode.UA;
+            OptionsHelper.SaveSettings();
+            OptionsHelper.LoadTranslation();
         }
     }
 }

+ 5 - 5
Optimizer/Forms/HelperForm.cs

@@ -22,7 +22,7 @@ namespace Optimizer
             }
             if (_type == MessageType.Restart)
             {
-                Options.SaveSettings();
+                OptionsHelper.SaveSettings();
                 Utilities.Reboot();
             }
             if (_type == MessageType.Hosts)
@@ -38,7 +38,7 @@ namespace Optimizer
         internal HelperForm(MainForm main, MessageType m, string text)
         {
             InitializeComponent();
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
 
             _main = main;
             _type = m;
@@ -48,7 +48,7 @@ namespace Optimizer
             if (_type == MessageType.Error)
             {
                 btnNo.Visible = false;
-                btnYes.Text = Options.TranslationList["btnOk"];
+                btnYes.Text = OptionsHelper.TranslationList["btnOk"];
 
                 this.AcceptButton = btnNo;
                 this.AcceptButton = btnYes;
@@ -57,7 +57,7 @@ namespace Optimizer
             }
 
             // translate UI elements
-            if (Options.CurrentOptions.LanguageCode != LanguageCode.EN) Translate();
+            if (OptionsHelper.CurrentOptions.LanguageCode != LanguageCode.EN) Translate();
         }
 
         private void btnNo_Click(object sender, EventArgs e)
@@ -79,7 +79,7 @@ namespace Optimizer
 
         private void Translate()
         {
-            Dictionary<string, string> translationList = Options.TranslationList.ToObject<Dictionary<string, string>>();
+            Dictionary<string, string> translationList = OptionsHelper.TranslationList.ToObject<Dictionary<string, string>>();
 
             Control element;
 

+ 4 - 4
Optimizer/Forms/HostsEditorForm.cs

@@ -12,7 +12,7 @@ namespace Optimizer
         public HostsEditorForm()
         {
             InitializeComponent();
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
 
             if (HostsHelper.GetReadOnly())
             {
@@ -20,7 +20,7 @@ namespace Optimizer
             }
 
             // translate UI elements
-            if (Options.CurrentOptions.LanguageCode != LanguageCode.EN) Translate();
+            if (OptionsHelper.CurrentOptions.LanguageCode != LanguageCode.EN) Translate();
         }
 
         private void HostsEditor_Load(object sender, EventArgs e)
@@ -37,8 +37,8 @@ namespace Optimizer
 
         private void Translate()
         {
-            this.Text = Options.TranslationList["HostsEditorForm"];
-            Dictionary<string, string> translationList = Options.TranslationList.ToObject<Dictionary<string, string>>();
+            this.Text = OptionsHelper.TranslationList["HostsEditorForm"];
+            Dictionary<string, string> translationList = OptionsHelper.TranslationList.ToObject<Dictionary<string, string>>();
 
             Control element;
 

+ 3 - 3
Optimizer/Forms/InfoForm.cs

@@ -12,17 +12,17 @@ namespace Optimizer
             InitializeComponent();
             CheckForIllegalCrossThreadCalls = false;
 
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
 
             txtInfo.Text = info;
 
             // translate UI elements
-            if (Options.CurrentOptions.LanguageCode != LanguageCode.EN) Translate();
+            if (OptionsHelper.CurrentOptions.LanguageCode != LanguageCode.EN) Translate();
         }
 
         private void Translate()
         {
-            Dictionary<string, string> translationList = Options.TranslationList.ToObject<Dictionary<string, string>>();
+            Dictionary<string, string> translationList = OptionsHelper.TranslationList.ToObject<Dictionary<string, string>>();
 
             Control element;
 

+ 80 - 64
Optimizer/Forms/MainForm.Designer.cs

@@ -93,6 +93,7 @@ namespace Optimizer
             this.label15 = new System.Windows.Forms.Label();
             this.label14 = new System.Windows.Forms.Label();
             this.panelWin11Tweaks = new System.Windows.Forms.Panel();
+            this.copilotSw = new Optimizer.ToggleCard();
             this.label20 = new System.Windows.Forms.Label();
             this.label19 = new System.Windows.Forms.Label();
             this.stickersSw = new Optimizer.ToggleCard();
@@ -387,6 +388,7 @@ namespace Optimizer
             this.listFonts = new Optimizer.MoonList();
             this.fontSetTitle = new System.Windows.Forms.Label();
             this.optionsTab = new System.Windows.Forms.TabPage();
+            this.btnReinforce = new System.Windows.Forms.Button();
             this.linkLabel6 = new System.Windows.Forms.LinkLabel();
             this.linkLabel4 = new System.Windows.Forms.LinkLabel();
             this.pictureBox6 = new System.Windows.Forms.PictureBox();
@@ -742,7 +744,7 @@ namespace Optimizer
             this.universalTab.Margin = new System.Windows.Forms.Padding(2);
             this.universalTab.Name = "universalTab";
             this.universalTab.Padding = new System.Windows.Forms.Padding(2);
-            this.universalTab.Size = new System.Drawing.Size(1273, 611);
+            this.universalTab.Size = new System.Drawing.Size(1273, 628);
             this.universalTab.TabIndex = 0;
             this.universalTab.Text = "General";
             // 
@@ -1222,7 +1224,7 @@ namespace Optimizer
             this.windows10Tab.Margin = new System.Windows.Forms.Padding(2);
             this.windows10Tab.Name = "windows10Tab";
             this.windows10Tab.Padding = new System.Windows.Forms.Padding(2);
-            this.windows10Tab.Size = new System.Drawing.Size(1273, 611);
+            this.windows10Tab.Size = new System.Drawing.Size(1273, 628);
             this.windows10Tab.TabIndex = 1;
             this.windows10Tab.Text = "Windows 10";
             // 
@@ -1342,6 +1344,7 @@ namespace Optimizer
             // panelWin11Tweaks
             // 
             this.panelWin11Tweaks.AutoScroll = true;
+            this.panelWin11Tweaks.Controls.Add(this.copilotSw);
             this.panelWin11Tweaks.Controls.Add(this.label20);
             this.panelWin11Tweaks.Controls.Add(this.label19);
             this.panelWin11Tweaks.Controls.Add(this.stickersSw);
@@ -1357,6 +1360,22 @@ namespace Optimizer
             this.panelWin11Tweaks.TabIndex = 80;
             this.panelWin11Tweaks.Visible = false;
             // 
+            // copilotSw
+            // 
+            this.copilotSw.AccessibleName = "Disable CoPilot AI";
+            this.copilotSw.AccessibleRole = System.Windows.Forms.AccessibleRole.CheckButton;
+            this.copilotSw.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+            this.copilotSw.Font = new System.Drawing.Font("Segoe UI Semibold", 10F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+            this.copilotSw.ForeColor = System.Drawing.Color.White;
+            this.copilotSw.LabelText = "Disable CoPilot AI";
+            this.copilotSw.Location = new System.Drawing.Point(465, 126);
+            this.copilotSw.Margin = new System.Windows.Forms.Padding(6);
+            this.copilotSw.Name = "copilotSw";
+            this.copilotSw.Size = new System.Drawing.Size(414, 24);
+            this.copilotSw.TabIndex = 179;
+            this.copilotSw.Tag = "themeable";
+            this.copilotSw.ToggleChecked = false;
+            // 
             // label20
             // 
             this.label20.AutoSize = true;
@@ -1874,7 +1893,7 @@ namespace Optimizer
             this.windows8Tab.Margin = new System.Windows.Forms.Padding(2);
             this.windows8Tab.Name = "windows8Tab";
             this.windows8Tab.Padding = new System.Windows.Forms.Padding(2);
-            this.windows8Tab.Size = new System.Drawing.Size(1273, 611);
+            this.windows8Tab.Size = new System.Drawing.Size(1273, 628);
             this.windows8Tab.TabIndex = 2;
             this.windows8Tab.Text = "Windows 8.1";
             // 
@@ -1920,7 +1939,7 @@ namespace Optimizer
             this.advancedTab.Margin = new System.Windows.Forms.Padding(2);
             this.advancedTab.Name = "advancedTab";
             this.advancedTab.Padding = new System.Windows.Forms.Padding(2);
-            this.advancedTab.Size = new System.Drawing.Size(1273, 611);
+            this.advancedTab.Size = new System.Drawing.Size(1273, 628);
             this.advancedTab.TabIndex = 15;
             this.advancedTab.Text = "Advanced";
             // 
@@ -2021,7 +2040,7 @@ namespace Optimizer
             this.modernAppsTab.Location = new System.Drawing.Point(4, 26);
             this.modernAppsTab.Name = "modernAppsTab";
             this.modernAppsTab.Padding = new System.Windows.Forms.Padding(3);
-            this.modernAppsTab.Size = new System.Drawing.Size(1273, 611);
+            this.modernAppsTab.Size = new System.Drawing.Size(1273, 628);
             this.modernAppsTab.TabIndex = 11;
             this.modernAppsTab.Text = "UWP Apps";
             // 
@@ -2145,7 +2164,7 @@ namespace Optimizer
             this.startupTab.Location = new System.Drawing.Point(4, 26);
             this.startupTab.Margin = new System.Windows.Forms.Padding(2);
             this.startupTab.Name = "startupTab";
-            this.startupTab.Size = new System.Drawing.Size(1273, 611);
+            this.startupTab.Size = new System.Drawing.Size(1273, 628);
             this.startupTab.TabIndex = 7;
             this.startupTab.Text = "Startup";
             // 
@@ -2402,7 +2421,7 @@ namespace Optimizer
             this.appsTab.Location = new System.Drawing.Point(4, 26);
             this.appsTab.Name = "appsTab";
             this.appsTab.Padding = new System.Windows.Forms.Padding(3);
-            this.appsTab.Size = new System.Drawing.Size(1273, 611);
+            this.appsTab.Size = new System.Drawing.Size(1273, 628);
             this.appsTab.TabIndex = 12;
             this.appsTab.Text = "Apps";
             // 
@@ -2414,7 +2433,7 @@ namespace Optimizer
             this.txtFeedError.ForeColor = System.Drawing.Color.Gold;
             this.txtFeedError.Location = new System.Drawing.Point(3, 47);
             this.txtFeedError.Name = "txtFeedError";
-            this.txtFeedError.Size = new System.Drawing.Size(1267, 441);
+            this.txtFeedError.Size = new System.Drawing.Size(1267, 458);
             this.txtFeedError.TabIndex = 171;
             this.txtFeedError.Text = "No internet connection, try refreshing links again";
             this.txtFeedError.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
@@ -2563,7 +2582,7 @@ namespace Optimizer
             this.panelCommonApps.Controls.Add(this.bitPref);
             this.panelCommonApps.Controls.Add(this.goToDownloadsB);
             this.panelCommonApps.Dock = System.Windows.Forms.DockStyle.Bottom;
-            this.panelCommonApps.Location = new System.Drawing.Point(3, 488);
+            this.panelCommonApps.Location = new System.Drawing.Point(3, 505);
             this.panelCommonApps.Name = "panelCommonApps";
             this.panelCommonApps.Size = new System.Drawing.Size(1267, 120);
             this.panelCommonApps.TabIndex = 162;
@@ -2762,7 +2781,7 @@ namespace Optimizer
             this.cleanerTab.Margin = new System.Windows.Forms.Padding(2);
             this.cleanerTab.Name = "cleanerTab";
             this.cleanerTab.Padding = new System.Windows.Forms.Padding(2);
-            this.cleanerTab.Size = new System.Drawing.Size(1273, 611);
+            this.cleanerTab.Size = new System.Drawing.Size(1273, 628);
             this.cleanerTab.TabIndex = 5;
             this.cleanerTab.Text = "Cleaner";
             // 
@@ -2773,7 +2792,7 @@ namespace Optimizer
             this.panel14.Dock = System.Windows.Forms.DockStyle.Fill;
             this.panel14.Location = new System.Drawing.Point(221, 2);
             this.panel14.Name = "panel14";
-            this.panel14.Size = new System.Drawing.Size(1050, 546);
+            this.panel14.Size = new System.Drawing.Size(1050, 563);
             this.panel14.TabIndex = 51;
             // 
             // listCleanPreview
@@ -2787,7 +2806,7 @@ namespace Optimizer
             this.listCleanPreview.HorizontalScrollbar = true;
             this.listCleanPreview.Location = new System.Drawing.Point(0, 0);
             this.listCleanPreview.Name = "listCleanPreview";
-            this.listCleanPreview.Size = new System.Drawing.Size(1048, 544);
+            this.listCleanPreview.Size = new System.Drawing.Size(1048, 561);
             this.listCleanPreview.TabIndex = 1;
             // 
             // panel13
@@ -2801,7 +2820,7 @@ namespace Optimizer
             this.panel13.Controls.Add(this.cleanDriveB);
             this.panel13.Controls.Add(this.lblFootprint);
             this.panel13.Dock = System.Windows.Forms.DockStyle.Bottom;
-            this.panel13.Location = new System.Drawing.Point(221, 548);
+            this.panel13.Location = new System.Drawing.Point(221, 565);
             this.panel13.Name = "panel13";
             this.panel13.Size = new System.Drawing.Size(1050, 61);
             this.panel13.TabIndex = 50;
@@ -2949,7 +2968,7 @@ namespace Optimizer
             this.panel1.Location = new System.Drawing.Point(2, 2);
             this.panel1.Margin = new System.Windows.Forms.Padding(2);
             this.panel1.Name = "panel1";
-            this.panel1.Size = new System.Drawing.Size(219, 607);
+            this.panel1.Size = new System.Drawing.Size(219, 624);
             this.panel1.TabIndex = 47;
             // 
             // bravePasswords
@@ -3383,7 +3402,7 @@ namespace Optimizer
             this.pingerTab.Location = new System.Drawing.Point(4, 26);
             this.pingerTab.Name = "pingerTab";
             this.pingerTab.Padding = new System.Windows.Forms.Padding(3);
-            this.pingerTab.Size = new System.Drawing.Size(1273, 611);
+            this.pingerTab.Size = new System.Drawing.Size(1273, 628);
             this.pingerTab.TabIndex = 13;
             this.pingerTab.Text = "Pinger";
             // 
@@ -3399,7 +3418,7 @@ namespace Optimizer
             this.netTools.Name = "netTools";
             this.netTools.Padding = new System.Drawing.Point(0, 0);
             this.netTools.SelectedIndex = 0;
-            this.netTools.Size = new System.Drawing.Size(1267, 605);
+            this.netTools.Size = new System.Drawing.Size(1267, 622);
             this.netTools.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
             this.netTools.TabIndex = 104;
             // 
@@ -3430,7 +3449,7 @@ namespace Optimizer
             this.tabPage2.Location = new System.Drawing.Point(4, 4);
             this.tabPage2.Name = "tabPage2";
             this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
-            this.tabPage2.Size = new System.Drawing.Size(1259, 575);
+            this.tabPage2.Size = new System.Drawing.Size(1259, 592);
             this.tabPage2.TabIndex = 1;
             this.tabPage2.Text = "DNS";
             // 
@@ -3742,7 +3761,7 @@ namespace Optimizer
             this.tabPage1.Location = new System.Drawing.Point(4, 4);
             this.tabPage1.Name = "tabPage1";
             this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
-            this.tabPage1.Size = new System.Drawing.Size(1259, 575);
+            this.tabPage1.Size = new System.Drawing.Size(1259, 592);
             this.tabPage1.TabIndex = 0;
             this.tabPage1.Text = "Pinger";
             // 
@@ -3921,7 +3940,7 @@ namespace Optimizer
             this.hostsEditorTab.Margin = new System.Windows.Forms.Padding(2);
             this.hostsEditorTab.Name = "hostsEditorTab";
             this.hostsEditorTab.Padding = new System.Windows.Forms.Padding(2);
-            this.hostsEditorTab.Size = new System.Drawing.Size(1273, 611);
+            this.hostsEditorTab.Size = new System.Drawing.Size(1273, 628);
             this.hostsEditorTab.TabIndex = 9;
             this.hostsEditorTab.Text = "Hosts";
             // 
@@ -4233,7 +4252,7 @@ namespace Optimizer
             this.registryFixerTab.Margin = new System.Windows.Forms.Padding(2);
             this.registryFixerTab.Name = "registryFixerTab";
             this.registryFixerTab.Padding = new System.Windows.Forms.Padding(2);
-            this.registryFixerTab.Size = new System.Drawing.Size(1273, 611);
+            this.registryFixerTab.Size = new System.Drawing.Size(1273, 628);
             this.registryFixerTab.TabIndex = 8;
             this.registryFixerTab.Text = "Registry";
             // 
@@ -4443,7 +4462,7 @@ namespace Optimizer
             this.indiciumTab.Location = new System.Drawing.Point(4, 26);
             this.indiciumTab.Name = "indiciumTab";
             this.indiciumTab.Padding = new System.Windows.Forms.Padding(3);
-            this.indiciumTab.Size = new System.Drawing.Size(1273, 611);
+            this.indiciumTab.Size = new System.Drawing.Size(1273, 628);
             this.indiciumTab.TabIndex = 14;
             this.indiciumTab.Text = "Hardware";
             // 
@@ -4454,7 +4473,7 @@ namespace Optimizer
             this.panel12.Dock = System.Windows.Forms.DockStyle.Fill;
             this.panel12.Location = new System.Drawing.Point(3, 38);
             this.panel12.Name = "panel12";
-            this.panel12.Size = new System.Drawing.Size(1267, 570);
+            this.panel12.Size = new System.Drawing.Size(1267, 587);
             this.panel12.TabIndex = 2;
             // 
             // specsTree
@@ -4509,7 +4528,7 @@ namespace Optimizer
             treeNode6,
             treeNode7,
             treeNode8});
-            this.specsTree.Size = new System.Drawing.Size(1265, 568);
+            this.specsTree.Size = new System.Drawing.Size(1265, 585);
             this.specsTree.TabIndex = 0;
             this.specsTree.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.specsTree_NodeMouseClick);
             // 
@@ -4632,7 +4651,7 @@ namespace Optimizer
             this.integratorTab.Margin = new System.Windows.Forms.Padding(2);
             this.integratorTab.Name = "integratorTab";
             this.integratorTab.Padding = new System.Windows.Forms.Padding(2);
-            this.integratorTab.Size = new System.Drawing.Size(1273, 599);
+            this.integratorTab.Size = new System.Drawing.Size(1273, 628);
             this.integratorTab.TabIndex = 10;
             this.integratorTab.Text = "Integrator";
             // 
@@ -4652,7 +4671,7 @@ namespace Optimizer
             this.synapse.Name = "synapse";
             this.synapse.Padding = new System.Drawing.Point(0, 0);
             this.synapse.SelectedIndex = 0;
-            this.synapse.Size = new System.Drawing.Size(1269, 595);
+            this.synapse.Size = new System.Drawing.Size(1269, 624);
             this.synapse.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
             this.synapse.TabIndex = 0;
             // 
@@ -4671,7 +4690,7 @@ namespace Optimizer
             this.integratorInfoTab.Margin = new System.Windows.Forms.Padding(2);
             this.integratorInfoTab.Name = "integratorInfoTab";
             this.integratorInfoTab.Padding = new System.Windows.Forms.Padding(2);
-            this.integratorInfoTab.Size = new System.Drawing.Size(1261, 565);
+            this.integratorInfoTab.Size = new System.Drawing.Size(1261, 594);
             this.integratorInfoTab.TabIndex = 0;
             this.integratorInfoTab.Text = "Info";
             // 
@@ -4780,7 +4799,7 @@ namespace Optimizer
             this.tabPage8.Margin = new System.Windows.Forms.Padding(2);
             this.tabPage8.Name = "tabPage8";
             this.tabPage8.Padding = new System.Windows.Forms.Padding(2);
-            this.tabPage8.Size = new System.Drawing.Size(1261, 619);
+            this.tabPage8.Size = new System.Drawing.Size(1261, 594);
             this.tabPage8.TabIndex = 1;
             this.tabPage8.Text = "Add/Modify";
             // 
@@ -5125,7 +5144,7 @@ namespace Optimizer
             this.tabPage9.Margin = new System.Windows.Forms.Padding(2);
             this.tabPage9.Name = "tabPage9";
             this.tabPage9.Padding = new System.Windows.Forms.Padding(2);
-            this.tabPage9.Size = new System.Drawing.Size(1261, 619);
+            this.tabPage9.Size = new System.Drawing.Size(1261, 594);
             this.tabPage9.TabIndex = 2;
             this.tabPage9.Text = "Remove";
             // 
@@ -5236,7 +5255,7 @@ namespace Optimizer
             this.tabPage10.Margin = new System.Windows.Forms.Padding(2);
             this.tabPage10.Name = "tabPage10";
             this.tabPage10.Padding = new System.Windows.Forms.Padding(2);
-            this.tabPage10.Size = new System.Drawing.Size(1261, 619);
+            this.tabPage10.Size = new System.Drawing.Size(1261, 594);
             this.tabPage10.TabIndex = 3;
             this.tabPage10.Text = "Ready Menus";
             // 
@@ -5384,7 +5403,7 @@ namespace Optimizer
             this.tabPage11.Margin = new System.Windows.Forms.Padding(2);
             this.tabPage11.Name = "tabPage11";
             this.tabPage11.Padding = new System.Windows.Forms.Padding(2);
-            this.tabPage11.Size = new System.Drawing.Size(1261, 619);
+            this.tabPage11.Size = new System.Drawing.Size(1261, 594);
             this.tabPage11.TabIndex = 4;
             this.tabPage11.Text = "Run Dialog";
             // 
@@ -5574,7 +5593,7 @@ namespace Optimizer
             this.tabPage3.Controls.Add(this.fontSetTitle);
             this.tabPage3.Location = new System.Drawing.Point(4, 4);
             this.tabPage3.Name = "tabPage3";
-            this.tabPage3.Size = new System.Drawing.Size(1261, 619);
+            this.tabPage3.Size = new System.Drawing.Size(1261, 594);
             this.tabPage3.TabIndex = 5;
             this.tabPage3.Text = "Fonts";
             // 
@@ -5738,6 +5757,7 @@ namespace Optimizer
             // 
             this.optionsTab.AutoScroll = true;
             this.optionsTab.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
+            this.optionsTab.Controls.Add(this.btnReinforce);
             this.optionsTab.Controls.Add(this.linkLabel6);
             this.optionsTab.Controls.Add(this.linkLabel4);
             this.optionsTab.Controls.Add(this.pictureBox6);
@@ -5773,6 +5793,24 @@ namespace Optimizer
             this.optionsTab.TabIndex = 6;
             this.optionsTab.Text = "Options";
             // 
+            // btnReinforce
+            // 
+            this.btnReinforce.BackColor = System.Drawing.Color.DodgerBlue;
+            this.btnReinforce.FlatAppearance.BorderColor = System.Drawing.Color.RoyalBlue;
+            this.btnReinforce.FlatAppearance.BorderSize = 0;
+            this.btnReinforce.FlatAppearance.MouseDownBackColor = System.Drawing.Color.RoyalBlue;
+            this.btnReinforce.FlatAppearance.MouseOverBackColor = System.Drawing.Color.RoyalBlue;
+            this.btnReinforce.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+            this.btnReinforce.ForeColor = System.Drawing.Color.White;
+            this.btnReinforce.Location = new System.Drawing.Point(34, 487);
+            this.btnReinforce.Margin = new System.Windows.Forms.Padding(2);
+            this.btnReinforce.Name = "btnReinforce";
+            this.btnReinforce.Size = new System.Drawing.Size(261, 31);
+            this.btnReinforce.TabIndex = 103;
+            this.btnReinforce.Text = "Reinforce policies";
+            this.btnReinforce.UseVisualStyleBackColor = false;
+            this.btnReinforce.Click += new System.EventHandler(this.btnReinforce_Click);
+            // 
             // linkLabel6
             // 
             this.linkLabel6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
@@ -5970,30 +6008,6 @@ namespace Optimizer
             this.boxLang.Font = new System.Drawing.Font("Segoe UI Semibold", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.boxLang.ForeColor = System.Drawing.Color.White;
             this.boxLang.FormattingEnabled = true;
-            this.boxLang.Items.AddRange(new object[] {
-            "English",
-            "Русский",
-            "Ελληνικά",
-            "Deutsch",
-            "Italiano",
-            "Čeština",
-            "Türkçe",
-            "Español",
-            "Português",
-            "Français",
-            "Polski",
-            "简体中文",
-            "繁體中文",
-            "한국어",
-            "العربية",
-            "کوردی",
-            "Magyar",
-            "Română",
-            "Nederlands",
-            "українська",
-            "日本語",
-            "فارسی",
-            "नेपाली"});
             this.boxLang.Location = new System.Drawing.Point(92, 3);
             this.boxLang.Name = "boxLang";
             this.boxLang.Size = new System.Drawing.Size(212, 29);
@@ -6050,12 +6064,12 @@ namespace Optimizer
             this.btnOpenConf.FlatAppearance.MouseOverBackColor = System.Drawing.Color.RoyalBlue;
             this.btnOpenConf.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
             this.btnOpenConf.ForeColor = System.Drawing.Color.White;
-            this.btnOpenConf.Location = new System.Drawing.Point(34, 452);
+            this.btnOpenConf.Location = new System.Drawing.Point(34, 417);
             this.btnOpenConf.Margin = new System.Windows.Forms.Padding(2);
             this.btnOpenConf.Name = "btnOpenConf";
             this.btnOpenConf.Size = new System.Drawing.Size(261, 31);
             this.btnOpenConf.TabIndex = 63;
-            this.btnOpenConf.Text = "Show config folder";
+            this.btnOpenConf.Text = "Show configuration folder";
             this.btnOpenConf.UseVisualStyleBackColor = false;
             this.btnOpenConf.Click += new System.EventHandler(this.btnOpenConf_Click);
             // 
@@ -6064,7 +6078,7 @@ namespace Optimizer
             this.lblTroubleshoot.AutoSize = true;
             this.lblTroubleshoot.Font = new System.Drawing.Font("Segoe UI Semibold", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.lblTroubleshoot.ForeColor = System.Drawing.Color.DodgerBlue;
-            this.lblTroubleshoot.Location = new System.Drawing.Point(17, 379);
+            this.lblTroubleshoot.Location = new System.Drawing.Point(17, 344);
             this.lblTroubleshoot.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
             this.lblTroubleshoot.Name = "lblTroubleshoot";
             this.lblTroubleshoot.Size = new System.Drawing.Size(150, 25);
@@ -6077,7 +6091,7 @@ namespace Optimizer
             this.lblUpdating.AutoSize = true;
             this.lblUpdating.Font = new System.Drawing.Font("Segoe UI Semibold", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.lblUpdating.ForeColor = System.Drawing.Color.DodgerBlue;
-            this.lblUpdating.Location = new System.Drawing.Point(17, 283);
+            this.lblUpdating.Location = new System.Drawing.Point(17, 244);
             this.lblUpdating.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
             this.lblUpdating.Name = "lblUpdating";
             this.lblUpdating.Size = new System.Drawing.Size(142, 25);
@@ -6093,7 +6107,7 @@ namespace Optimizer
             this.btnViewLog.FlatAppearance.MouseOverBackColor = System.Drawing.Color.RoyalBlue;
             this.btnViewLog.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
             this.btnViewLog.ForeColor = System.Drawing.Color.White;
-            this.btnViewLog.Location = new System.Drawing.Point(34, 417);
+            this.btnViewLog.Location = new System.Drawing.Point(34, 382);
             this.btnViewLog.Margin = new System.Windows.Forms.Padding(2);
             this.btnViewLog.Name = "btnViewLog";
             this.btnViewLog.Size = new System.Drawing.Size(261, 31);
@@ -6128,7 +6142,7 @@ namespace Optimizer
             this.btnUpdate.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
             this.btnUpdate.Font = new System.Drawing.Font("Segoe UI Semibold", 10F);
             this.btnUpdate.ForeColor = System.Drawing.Color.White;
-            this.btnUpdate.Location = new System.Drawing.Point(34, 317);
+            this.btnUpdate.Location = new System.Drawing.Point(34, 278);
             this.btnUpdate.Margin = new System.Windows.Forms.Padding(2);
             this.btnUpdate.Name = "btnUpdate";
             this.btnUpdate.Size = new System.Drawing.Size(261, 31);
@@ -6146,7 +6160,7 @@ namespace Optimizer
             this.btnResetConfig.FlatAppearance.MouseOverBackColor = System.Drawing.Color.RoyalBlue;
             this.btnResetConfig.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
             this.btnResetConfig.ForeColor = System.Drawing.Color.White;
-            this.btnResetConfig.Location = new System.Drawing.Point(34, 487);
+            this.btnResetConfig.Location = new System.Drawing.Point(34, 452);
             this.btnResetConfig.Margin = new System.Windows.Forms.Padding(2);
             this.btnResetConfig.Name = "btnResetConfig";
             this.btnResetConfig.Size = new System.Drawing.Size(261, 31);
@@ -6160,7 +6174,7 @@ namespace Optimizer
             this.lblTheming.AutoSize = true;
             this.lblTheming.Font = new System.Drawing.Font("Segoe UI Semibold", 13F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.lblTheming.ForeColor = System.Drawing.Color.DodgerBlue;
-            this.lblTheming.Location = new System.Drawing.Point(17, 123);
+            this.lblTheming.Location = new System.Drawing.Point(17, 95);
             this.lblTheming.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0);
             this.lblTheming.Name = "lblTheming";
             this.lblTheming.Size = new System.Drawing.Size(174, 25);
@@ -6188,7 +6202,7 @@ namespace Optimizer
             // colorPicker1
             // 
             this.colorPicker1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(0)))), ((int)(((byte)(0)))));
-            this.colorPicker1.Location = new System.Drawing.Point(22, 151);
+            this.colorPicker1.Location = new System.Drawing.Point(22, 123);
             this.colorPicker1.Name = "colorPicker1";
             this.colorPicker1.Size = new System.Drawing.Size(139, 98);
             this.colorPicker1.TabIndex = 97;
@@ -6974,6 +6988,8 @@ namespace Optimizer
         private TextBox txtDns4A;
         private Label label10;
         private Button btnSetDns;
+        private Button btnReinforce;
+        private ToggleCard copilotSw;
     }
 }
 

File diff suppressed because it is too large
+ 294 - 244
Optimizer/Forms/MainForm.cs


File diff suppressed because it is too large
+ 511 - 511
Optimizer/Forms/MainForm.resx


+ 1 - 1
Optimizer/Forms/SplashForm.cs

@@ -13,7 +13,7 @@ namespace Optimizer
 
             LoadingStatus.Font = FontHelper.Poppins15;
 
-            pictureBox2.BackColor = Options.CurrentOptions.Theme;
+            pictureBox2.BackColor = OptionsHelper.CurrentOptions.Theme;
         }
     }
 }

+ 6 - 6
Optimizer/Forms/StartupPreviewForm.cs

@@ -10,17 +10,17 @@ namespace Optimizer
     {
         string _token = string.Empty;
 
-        public StartupPreviewForm(List<StartupBackupItem> items)
+        public StartupPreviewForm(List<BackupStartupItem> items)
         {
             InitializeComponent();
 
             CheckForIllegalCrossThreadCalls = false;
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
 
             // translate UI elements
-            if (Options.CurrentOptions.LanguageCode != LanguageCode.EN) Translate();
+            if (OptionsHelper.CurrentOptions.LanguageCode != LanguageCode.EN) Translate();
 
-            foreach (StartupBackupItem x in items)
+            foreach (BackupStartupItem x in items)
             {
                 if (File.Exists(SanitizePath(x.FileLocation)))
                 {
@@ -37,9 +37,9 @@ namespace Optimizer
 
         private void Translate()
         {
-            this.Text = Options.TranslationList["StartupPreviewForm"];
+            this.Text = OptionsHelper.TranslationList["StartupPreviewForm"];
 
-            Dictionary<string, string> translationList = Options.TranslationList.ToObject<Dictionary<string, string>>();
+            Dictionary<string, string> translationList = OptionsHelper.TranslationList.ToObject<Dictionary<string, string>>();
 
             Control element;
 

+ 7 - 7
Optimizer/Forms/StartupRestoreForm.cs

@@ -17,10 +17,10 @@ namespace Optimizer
             InitializeComponent();
 
             CheckForIllegalCrossThreadCalls = false;
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
 
             // translate UI elements
-            if (Options.CurrentOptions.LanguageCode != LanguageCode.EN) Translate();
+            if (OptionsHelper.CurrentOptions.LanguageCode != LanguageCode.EN) Translate();
 
             RefreshBackups();
         }
@@ -43,9 +43,9 @@ namespace Optimizer
 
         private void Translate()
         {
-            this.Text = Options.TranslationList["StartupRestoreForm"];
+            this.Text = OptionsHelper.TranslationList["StartupRestoreForm"];
 
-            Dictionary<string, string> translationList = Options.TranslationList.ToObject<Dictionary<string, string>>();
+            Dictionary<string, string> translationList = OptionsHelper.TranslationList.ToObject<Dictionary<string, string>>();
 
             Control element;
 
@@ -90,7 +90,7 @@ namespace Optimizer
         {
             if (listRestoreItems.SelectedIndex > -1)
             {
-                List<StartupBackupItem> backup = JsonConvert.DeserializeObject<List<StartupBackupItem>>(File.ReadAllText(_backups[listRestoreItems.SelectedIndex]));
+                List<BackupStartupItem> backup = JsonConvert.DeserializeObject<List<BackupStartupItem>>(File.ReadAllText(_backups[listRestoreItems.SelectedIndex]));
                 StartupPreviewForm f = new StartupPreviewForm(backup);
                 f.ShowDialog(this);
             }
@@ -111,12 +111,12 @@ namespace Optimizer
         {
             if (listRestoreItems.SelectedIndex > -1)
             {
-                List<StartupBackupItem> backup = JsonConvert.DeserializeObject<List<StartupBackupItem>>(File.ReadAllText(_backups[listRestoreItems.SelectedIndex]));
+                List<BackupStartupItem> backup = JsonConvert.DeserializeObject<List<BackupStartupItem>>(File.ReadAllText(_backups[listRestoreItems.SelectedIndex]));
 
                 string keyPath = string.Empty;
                 RegistryKey hive = null;
 
-                foreach (StartupBackupItem x in backup)
+                foreach (BackupStartupItem x in backup)
                 {
                     if (x.RegistryLocation == StartupItemLocation.HKLM.ToString())
                     {

+ 4 - 4
Optimizer/Forms/SubForm.Designer.cs

@@ -50,7 +50,7 @@
             this.txtInfo.ReadOnly = true;
             this.txtInfo.ScrollBars = System.Windows.Forms.RichTextBoxScrollBars.Vertical;
             this.txtInfo.ShortcutsEnabled = false;
-            this.txtInfo.Size = new System.Drawing.Size(391, 372);
+            this.txtInfo.Size = new System.Drawing.Size(391, 321);
             this.txtInfo.TabIndex = 0;
             this.txtInfo.Text = "";
             // 
@@ -62,7 +62,7 @@
             this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
             this.panel1.Location = new System.Drawing.Point(0, 0);
             this.panel1.Name = "panel1";
-            this.panel1.Size = new System.Drawing.Size(415, 396);
+            this.panel1.Size = new System.Drawing.Size(415, 345);
             this.panel1.TabIndex = 1;
             // 
             // btnStart
@@ -77,7 +77,7 @@
             this.btnStart.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
             this.btnStart.Font = new System.Drawing.Font("Segoe UI Semibold", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.btnStart.ForeColor = System.Drawing.Color.White;
-            this.btnStart.Location = new System.Drawing.Point(336, 352);
+            this.btnStart.Location = new System.Drawing.Point(336, 301);
             this.btnStart.Margin = new System.Windows.Forms.Padding(2);
             this.btnStart.Name = "btnStart";
             this.btnStart.Size = new System.Drawing.Size(67, 31);
@@ -94,7 +94,7 @@
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
             this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(30)))), ((int)(((byte)(30)))), ((int)(((byte)(30)))));
             this.CancelButton = this.btnStart;
-            this.ClientSize = new System.Drawing.Size(415, 396);
+            this.ClientSize = new System.Drawing.Size(415, 345);
             this.ControlBox = false;
             this.Controls.Add(this.panel1);
             this.DoubleBuffered = true;

+ 2 - 2
Optimizer/Forms/SubForm.cs

@@ -11,7 +11,7 @@ namespace Optimizer
 
             CheckForIllegalCrossThreadCalls = false;
             this.DoubleBuffered = true;
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
 
             btnStart.Focus();
             btnStart.Select();
@@ -31,7 +31,7 @@ namespace Optimizer
 
         private void SubForm_Load(object sender, EventArgs e)
         {
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
         }
     }
 }

+ 5 - 5
Optimizer/Forms/UpdateForm.cs

@@ -10,17 +10,17 @@ namespace Optimizer
         {
             InitializeComponent();
             CheckForIllegalCrossThreadCalls = false;
-            Options.ApplyTheme(this);
+            OptionsHelper.ApplyTheme(this);
 
             txtMessage.Text = message;
 
             if (newUpdate)
             {
                 this.Size = new Size(600, 545);
-                btnOK.Text = Options.TranslationList["btnYes"].ToString();
-                btnNo.Text = Options.TranslationList["btnNo"].ToString();
+                btnOK.Text = OptionsHelper.TranslationList["btnYes"].ToString();
+                btnNo.Text = OptionsHelper.TranslationList["btnNo"].ToString();
                 btnNo.Visible = true;
-                txtChanges.Text = Options.TranslationList["btnChangelog"].ToString();
+                txtChanges.Text = OptionsHelper.TranslationList["btnChangelog"].ToString();
                 txtVersions.Text = $"{Program.GetCurrentVersionTostring()} → {latestVersion}";
                 txtVersions.Visible = true;
 
@@ -34,7 +34,7 @@ namespace Optimizer
             else
             {
                 this.Size = new Size(600, 188);
-                btnOK.Text = Options.TranslationList["btnAbout"].ToString();
+                btnOK.Text = OptionsHelper.TranslationList["btnAbout"].ToString();
                 btnNo.Visible = false;
                 txtVersions.Visible = false;
 

+ 5 - 6
Optimizer/HostsHelper.cs

@@ -27,7 +27,7 @@ namespace Optimizer
             catch (Exception ex)
             {
                 Logger.LogError("HostsHelper.RestoreDefaultHosts", ex.Message, ex.StackTrace);
-                MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "Optimizer", MessageBoxButtons.OK, MessageBoxIcon.Information);
+                MessageBox.Show(OptionsHelper.TranslationList("dnsCacheM").ToString(), "Optimizer", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
 
@@ -93,7 +93,7 @@ namespace Optimizer
             catch (Exception ex)
             {
                 Logger.LogError("HostsHelper.SaveHosts", ex.Message, ex.StackTrace);
-                MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
+                MessageBox.Show(OptionsHelper.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
 
@@ -124,7 +124,7 @@ namespace Optimizer
             catch (Exception ex)
             {
                 Logger.LogError("HostsHelper.AddEntry", ex.Message, ex.StackTrace);
-                MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
+                MessageBox.Show(OptionsHelper.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
 
@@ -137,7 +137,7 @@ namespace Optimizer
             catch (Exception ex)
             {
                 Logger.LogError("HostsHelper.RemoveEntry", ex.Message, ex.StackTrace);
-                MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
+                MessageBox.Show(OptionsHelper.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
 
@@ -165,7 +165,7 @@ namespace Optimizer
             catch (Exception ex)
             {
                 Logger.LogError("HostsHelper.RemoveAllEntries", ex.Message, ex.StackTrace);
-                MessageBox.Show(Options.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
+                MessageBox.Show(OptionsHelper.TranslationList("dnsCacheM").ToString(), "DNS Cache is running", MessageBoxButtons.OK, MessageBoxIcon.Information);
             }
         }
 
@@ -188,7 +188,6 @@ namespace Optimizer
             }
         }
 
-        // edit read-only attibute
         internal static void ReadOnly(bool enable)
         {
             try

+ 0 - 5
Optimizer/IntegratorHelper.cs

@@ -13,11 +13,6 @@ namespace Optimizer
     {
         internal static string FolderDefaultIcon = @"%systemroot%\system32\imageres.dll,-112";
 
-        private static T DirectCast<T>(object o)
-        {
-            return (T)o;
-        }
-
         internal static void CreateCustomCommand(string file, string keyword)
         {
             if (!keyword.EndsWith(".exe"))

+ 1 - 1
Optimizer/FeedApp.cs → Optimizer/Models/AppInfo.cs

@@ -1,6 +1,6 @@
 namespace Optimizer
 {
-    public sealed class FeedApp
+    public sealed class AppInfo
     {
         public string Title { get; set; }
         public string Link64 { get; set; }

+ 5 - 13
Optimizer/Enums.cs → Optimizer/Models/Enums.cs

@@ -17,7 +17,8 @@
 
     public enum StartupItemLocation
     {
-        Folder,
+        LMStartupFolder,
+        CUStartupFolder,
         HKLM,
         HKLMWoW,
         HKCU
@@ -107,17 +108,8 @@
         NL, // dutch
         UA, // ukrainian
         JA, // japanese
-        FA, //farsi
-        NE //nepali
-    }
-
-    public enum KnownFolder
-    {
-        Contacts,
-        Downloads,
-        Favorites,
-        Links,
-        SavedGames,
-        SavedSearches
+        FA, // farsi
+        NE, // nepali
+        BG // bulgarian
     }
 }

+ 0 - 0
Optimizer/HardwareModel.cs → Optimizer/Models/Hardware.cs


+ 102 - 0
Optimizer/Models/Options.cs

@@ -0,0 +1,102 @@
+using System;
+using System.Drawing;
+
+namespace Optimizer
+{
+    [Serializable]
+    public sealed class Options
+    {
+        public Color Theme { get; set; }
+        public string AppsFolder { get; set; }
+        public bool EnableTray { get; set; }
+        public bool AutoStart { get; set; }
+        public string InternalDNS { get; set; }
+        public bool DisableIndicium { get; set; }
+        public bool DisableAppsTool { get; set; }
+        public bool DisableHostsEditor { get; set; }
+        public bool DisableUWPApps { get; set; }
+        public bool DisableStartupTool { get; set; }
+        public bool DisableCleaner { get; set; }
+        public bool DisableIntegrator { get; set; }
+        public bool DisablePinger { get; set; }
+        //public string TelemetryClientID { get; set; }
+        //public bool DisableOptimizerTelemetry { get; set; }
+
+        public LanguageCode LanguageCode { get; set; }
+
+        // universal
+        public bool EnablePerformanceTweaks { get; set; }
+        public bool DisableNetworkThrottling { get; set; }
+        public bool DisableWindowsDefender { get; set; }
+        public bool DisableSystemRestore { get; set; }
+        public bool DisablePrintService { get; set; }
+        public bool DisableMediaPlayerSharing { get; set; }
+        public bool DisableErrorReporting { get; set; }
+        public bool DisableHomeGroup { get; set; }
+        public bool DisableSuperfetch { get; set; }
+        public bool DisableTelemetryTasks { get; set; }
+        public bool DisableCompatibilityAssistant { get; set; }
+        public bool DisableFaxService { get; set; }
+        public bool DisableSmartScreen { get; set; }
+        public bool DisableCloudClipboard { get; set; }
+        public bool DisableStickyKeys { get; set; }
+        public bool DisableHibernation { get; set; }
+        public bool DisableSMB1 { get; set; }
+        public bool DisableSMB2 { get; set; }
+        public bool DisableNTFSTimeStamp { get; set; }
+        public bool DisableSearch { get; set; }
+
+        // apps telemetry
+        public bool DisableOffice2016Telemetry { get; set; }
+        public bool DisableVisualStudioTelemetry { get; set; }
+        public bool DisableFirefoxTemeletry { get; set; }
+        public bool DisableChromeTelemetry { get; set; }
+        public bool DisableNVIDIATelemetry { get; set; }
+
+        // edge
+        public bool DisableEdgeDiscoverBar { get; set; }
+        public bool DisableEdgeTelemetry { get; set; }
+
+        // windows 8
+        public bool DisableOneDrive { get; set; }
+
+        // windows 10
+        public bool EnableLegacyVolumeSlider { get; set; }
+        public bool DisableQuickAccessHistory { get; set; }
+        public bool DisableStartMenuAds { get; set; }
+        public bool UninstallOneDrive { get; set; }
+        public bool DisableMyPeople { get; set; }
+        public bool DisableAutomaticUpdates { get; set; }
+        public bool ExcludeDrivers { get; set; }
+        public bool DisableTelemetryServices { get; set; }
+        public bool DisablePrivacyOptions { get; set; }
+        public bool DisableCortana { get; set; }
+        public bool DisableSensorServices { get; set; }
+        public bool DisableWindowsInk { get; set; }
+        public bool DisableSpellingTyping { get; set; }
+        public bool DisableXboxLive { get; set; }
+        public bool DisableGameBar { get; set; }
+        public bool DisableInsiderService { get; set; }
+        public bool DisableStoreUpdates { get; set; }
+        public bool EnableLongPaths { get; set; }
+        public bool RemoveCastToDevice { get; set; }
+        public bool EnableGamingMode { get; set; }
+        public bool RestoreClassicPhotoViewer { get; set; }
+
+        // windows 11
+        public bool TaskbarToLeft { get; set; }
+        public bool DisableSnapAssist { get; set; }
+        public bool DisableWidgets { get; set; }
+        public bool DisableChat { get; set; }
+        public bool ClassicMenu { get; set; }
+        public bool DisableTPMCheck { get; set; }
+        public bool CompactMode { get; set; }
+        public bool DisableStickers { get; set; }
+        public bool DisableVBS { get; set; }
+        public bool DisableCoPilotAI { get; set; }
+
+        // advanced
+        public bool DisableHPET { get; set; }
+        public bool EnableLoginVerbose { get; set; }
+    }
+}

+ 1 - 0
Optimizer/SilentConfig.cs → Optimizer/Models/SilentConfig.cs

@@ -279,5 +279,6 @@ namespace Optimizer
         public bool? CompactMode { get; set; }
         public bool? DisableStickers { get; set; }
         public bool? DisableVirtualizationBasedTechnology { get; set; }
+        public bool? DisableCoPilotAI { get; set; }
     }
 }

+ 21 - 0
Optimizer/Models/StartupBackupItem.cs

@@ -0,0 +1,21 @@
+using System;
+
+namespace Optimizer
+{
+    [Serializable]
+    public sealed class BackupStartupItem
+    {
+        public string Name { get; set; }
+        public string FileLocation { get; set; }
+        public string RegistryLocation { get; set; }
+        public string StartupType { get; set; }
+
+        public BackupStartupItem(string name, string fileLocation, string registryLocation, string startupType)
+        {
+            Name = name;
+            FileLocation = fileLocation;
+            RegistryLocation = registryLocation;
+            StartupType = startupType;
+        }
+    }
+}

+ 1 - 1
Optimizer/StartupItem.cs → Optimizer/Models/StartupItem.cs

@@ -17,7 +17,7 @@ namespace Optimizer
 
         public override string ToString()
         {
-            if (RegistryLocation == StartupItemLocation.Folder) return RegistryLocation.ToString();
+            if (RegistryLocation == StartupItemLocation.LMStartupFolder) return RegistryLocation.ToString();
             return string.Format("{0}:{1}", RegistryLocation, StartupType);
         }
     }

+ 0 - 0
Optimizer/TelemetryData.cs → Optimizer/Models/TelemetryData.cs


+ 33 - 11
Optimizer/OptimizeHelper.cs

@@ -15,8 +15,21 @@ namespace Optimizer
             Utilities.PreventProcessFromRunning("DeviceCensus.exe");
         }
 
-        internal static void EnablePerformanceTweaks()
+        internal static void EnablePerformanceTweaks(bool showAllTrayIcons = true, bool noDelayForMenus = true)
         {
+            // show all tray icons
+            if (showAllTrayIcons)
+            {
+                Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer", "EnableAutoTray", "0", RegistryValueKind.DWord);
+            }
+
+            // no delay when menus showing up
+            if (noDelayForMenus)
+            {
+                Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "MenuShowDelay", "0");
+                Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Mouse", "MouseHoverTime", "0");
+            }
+
             // enable auto-complete in Run Dialog 
             Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete", "Append Completion", "yes", RegistryValueKind.String);
             Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\AutoComplete", "AutoSuggest", "yes", RegistryValueKind.String);
@@ -24,9 +37,6 @@ namespace Optimizer
             // reduce dump file size
             Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl", "CrashDumpEnabled", 3, RegistryValueKind.DWord);
 
-            // show all tray icons
-            //Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer", "EnableAutoTray", "0", RegistryValueKind.DWord);
-
             // disable Remote Assistance
             Registry.SetValue(@"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Remote Assistance", "fAllowToGetHelp", "0", RegistryValueKind.DWord);
 
@@ -38,10 +48,8 @@ namespace Optimizer
 
             Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "AutoEndTasks", "1");
             Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "HungAppTimeout", "1000");
-            Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "MenuShowDelay", "0");
             Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "WaitToKillAppTimeout", "2000");
             Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Desktop", "LowLevelHooksTimeout", "1000");
-            Registry.SetValue("HKEY_CURRENT_USER\\Control Panel\\Mouse", "MouseHoverTime", "0");
             Registry.SetValue("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", "NoLowDiskSpaceChecks", "00000001", RegistryValueKind.DWord);
             Registry.SetValue("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", "LinkResolveIgnoreLinkInfo", "00000001", RegistryValueKind.DWord);
             Registry.SetValue("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer", "NoResolveSearch", "00000001", RegistryValueKind.DWord);
@@ -94,7 +102,7 @@ namespace Optimizer
                 Registry.SetValue(@"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl", "CrashDumpEnabled", 7, RegistryValueKind.DWord);
 
                 // hide tray icons
-                //Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer", true).DeleteValue("EnableAutoTray", false);
+                Utilities.TryDeleteRegistryValue(false, @"Software\Microsoft\Windows\CurrentVersion\Explorer", "EnableAutoTray");
 
                 // enable Remote Assistance
                 Registry.SetValue(@"HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Remote Assistance", "fAllowToGetHelp", "1", RegistryValueKind.DWord);
@@ -929,8 +937,13 @@ namespace Optimizer
             Utilities.ImportRegistryScript(CoreHelper.ScriptsFolder + "EnableOfficeTelemetryTasks.reg");
         }
 
-        internal static void EnhancePrivacy()
+        internal static void EnhancePrivacy(bool disableNewsAndInterest = true)
         {
+            if (disableNewsAndInterest)
+            {
+                Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Windows Feeds", "EnableFeeds", 0);
+            }
+
             Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager", "RotatingLockScreenOverlayEnabled", "0", RegistryValueKind.DWord);
             Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager", "RotatingLockScreenEnabled", "0", RegistryValueKind.DWord);
             Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager", "DisableWindowsSpotlightFeatures", "1", RegistryValueKind.DWord);
@@ -938,7 +951,6 @@ namespace Optimizer
 
             Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CloudContent", "DisableCloudOptimizedContent", 1);
             Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\DataCollection", "DoNotShowFeedbackNotifications", 1);
-            Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Windows Feeds", "EnableFeeds", 0);
             Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\AdvertisingInfo", "Enabled", 0);
             Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PolicyManager\current\device\Bluetooth", "AllowAdvertising", 0);
 
@@ -1618,7 +1630,7 @@ namespace Optimizer
 
         internal static void EnableWidgets()
         {
-            Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "TaskbarDa", "1", RegistryValueKind.DWord);
+            Utilities.TryDeleteRegistryValue(false, @"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "TaskbarDa");
         }
 
         internal static void DisableChat()
@@ -1628,7 +1640,7 @@ namespace Optimizer
 
         internal static void EnableChat()
         {
-            Registry.SetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "TaskbarMn", "1", RegistryValueKind.DWord);
+            Utilities.TryDeleteRegistryValue(false, @"Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced", "TaskbarMn");
         }
 
         // DEPRECATED
@@ -1759,6 +1771,16 @@ namespace Optimizer
             Utilities.TryDeleteRegistryValue(false, @"SOFTWARE\Policies\Microsoft\Edge", "SpotlightExperiencesAndRecommendationsEnabled");
         }
 
+        internal static void DisableCoPilotAI()
+        {
+            Registry.SetValue(@"HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\WindowsCopilot", "TurnOffWindowsCopilot", "1", RegistryValueKind.DWord);
+        }
+
+        internal static void EnableCoPilotAI()
+        {
+            Utilities.TryDeleteRegistryValue(false, @"Software\Policies\Microsoft\Windows\WindowsCopilot", "TurnOffWindowsCopilot");
+        }
+
         /* Apps-specific tweaks */
 
         // VISUAL STUDIO TELEMETRY

+ 13 - 10
Optimizer/Optimizer.csproj

@@ -112,6 +112,7 @@
     <Compile Include="Controls\ToggleCard.Designer.cs">
       <DependentUpon>ToggleCard.cs</DependentUpon>
     </Compile>
+    <Compile Include="DebugHelper.cs" />
     <Compile Include="FileHandleHelper.cs" />
     <Compile Include="FontHelper.cs" />
     <Compile Include="Forms\AboutForm.cs">
@@ -134,7 +135,7 @@
     </Compile>
     <Compile Include="Controls\MoonMenuRenderer.cs" />
     <Compile Include="ErrorLogger.cs" />
-    <Compile Include="FeedApp.cs" />
+    <Compile Include="Models\AppInfo.cs" />
     <Compile Include="ByteSize\BinaryByteSize.cs" />
     <Compile Include="ByteSize\ByteSize.cs" />
     <Compile Include="ByteSize\DecimalByteSize.cs" />
@@ -146,7 +147,7 @@
       <SubType>Component</SubType>
     </Compile>
     <Compile Include="EmbeddedAssembly.cs" />
-    <Compile Include="Enums.cs" />
+    <Compile Include="Models\Enums.cs" />
     <Compile Include="Forms\FileUnlockForm.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -177,7 +178,7 @@
     <Compile Include="Forms\UpdateForm.Designer.cs">
       <DependentUpon>UpdateForm.cs</DependentUpon>
     </Compile>
-    <Compile Include="HardwareModel.cs" />
+    <Compile Include="Models\Hardware.cs" />
     <Compile Include="Forms\HostsEditorForm.cs">
       <SubType>Form</SubType>
     </Compile>
@@ -201,10 +202,11 @@
       <DependentUpon>MainForm.cs</DependentUpon>
     </Compile>
     <Compile Include="Constants.cs" />
+    <Compile Include="Models\Options.cs" />
     <Compile Include="NetworkAdapter.cs" />
     <Compile Include="NetworkMonitor.cs" />
     <Compile Include="OptimizeHelper.cs" />
-    <Compile Include="Options.cs" />
+    <Compile Include="OptionsHelper.cs" />
     <Compile Include="PingerHelper.cs" />
     <Compile Include="Program.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -214,7 +216,7 @@
       <DependentUpon>Resources.resx</DependentUpon>
     </Compile>
     <Compile Include="CoreHelper.cs" />
-    <Compile Include="SilentConfig.cs" />
+    <Compile Include="Models\SilentConfig.cs" />
     <Compile Include="SilentOps.cs" />
     <Compile Include="Forms\SplashForm.cs">
       <SubType>Form</SubType>
@@ -234,13 +236,12 @@
     <Compile Include="Forms\StartupRestoreForm.Designer.cs">
       <DependentUpon>StartupRestoreForm.cs</DependentUpon>
     </Compile>
-    <Compile Include="StartupBackupItem.cs" />
+    <Compile Include="Models\StartupBackupItem.cs" />
     <Compile Include="StartupHelper.cs" />
-    <Compile Include="StartupItem.cs" />
-    <Compile Include="TelemetryData.cs" />
+    <Compile Include="Models\StartupItem.cs" />
+    <Compile Include="Models\TelemetryData.cs" />
     <Compile Include="TelemetryHelper.cs" />
-    <Compile Include="TokenPrivilege.cs" />
-    <Compile Include="UserFoldersHelper.cs" />
+    <Compile Include="TokenPrivilegeHelper.cs" />
     <Compile Include="Utilities.cs" />
     <Compile Include="UWPHelper.cs" />
     <EmbeddedResource Include="Controls\ToggleCard.resx">
@@ -303,6 +304,7 @@
       <DesignTimeSharedInput>True</DesignTimeSharedInput>
     </Compile>
     <None Include="Resources\i18n\AR.json" />
+    <None Include="Resources\i18n\BG.json" />
     <None Include="Resources\i18n\FA.json" />
     <None Include="Resources\i18n\HU.json" />
     <None Include="Resources\i18n\JA.json" />
@@ -379,6 +381,7 @@
     </COMReference>
   </ItemGroup>
   <ItemGroup>
+    <None Include="Resources\Flags\bulgaria.png" />
     <None Include="Resources\Flags\nepal.png" />
     <None Include="Resources\Flags\iran.png" />
     <None Include="Resources\Flags\japan.png" />

+ 12 - 110
Optimizer/Options.cs → Optimizer/OptionsHelper.cs

@@ -8,123 +8,24 @@ using System.Windows.Forms;
 
 namespace Optimizer
 {
-    [Serializable]
-    public sealed class SettingsJson
+    internal static class OptionsHelper
     {
-        public Color Theme { get; set; }
-        public string AppsFolder { get; set; }
-        public bool EnableTray { get; set; }
-        public bool AutoStart { get; set; }
-        public string InternalDNS { get; set; }
-        public bool DisableIndicium { get; set; }
-        public bool DisableAppsTool { get; set; }
-        public bool DisableHostsEditor { get; set; }
-        public bool DisableUWPApps { get; set; }
-        public bool DisableStartupTool { get; set; }
-        public bool DisableCleaner { get; set; }
-        public bool DisableIntegrator { get; set; }
-        public bool DisablePinger { get; set; }
-        //public string TelemetryClientID { get; set; }
-        //public bool DisableOptimizerTelemetry { get; set; }
-
-        public LanguageCode LanguageCode { get; set; }
-
-        // universal
-        public bool EnablePerformanceTweaks { get; set; }
-        public bool DisableNetworkThrottling { get; set; }
-        public bool DisableWindowsDefender { get; set; }
-        public bool DisableSystemRestore { get; set; }
-        public bool DisablePrintService { get; set; }
-        public bool DisableMediaPlayerSharing { get; set; }
-        public bool DisableErrorReporting { get; set; }
-        public bool DisableHomeGroup { get; set; }
-        public bool DisableSuperfetch { get; set; }
-        public bool DisableTelemetryTasks { get; set; }
-        public bool DisableCompatibilityAssistant { get; set; }
-        public bool DisableFaxService { get; set; }
-        public bool DisableSmartScreen { get; set; }
-        public bool DisableCloudClipboard { get; set; }
-        public bool DisableStickyKeys { get; set; }
-        public bool DisableHibernation { get; set; }
-        public bool DisableSMB1 { get; set; }
-        public bool DisableSMB2 { get; set; }
-        public bool DisableNTFSTimeStamp { get; set; }
-        public bool DisableSearch { get; set; }
-
-        // apps telemetry
-        public bool DisableOffice2016Telemetry { get; set; }
-        public bool DisableVisualStudioTelemetry { get; set; }
-        public bool DisableFirefoxTemeletry { get; set; }
-        public bool DisableChromeTelemetry { get; set; }
-        public bool DisableNVIDIATelemetry { get; set; }
-
-        // edge
-        public bool DisableEdgeDiscoverBar { get; set; }
-        public bool DisableEdgeTelemetry { get; set; }
-
-        // windows 8
-        public bool DisableOneDrive { get; set; }
-
-        // windows 10
-        public bool EnableLegacyVolumeSlider { get; set; }
-        public bool DisableQuickAccessHistory { get; set; }
-        public bool DisableStartMenuAds { get; set; }
-        public bool UninstallOneDrive { get; set; }
-        public bool DisableMyPeople { get; set; }
-        public bool DisableAutomaticUpdates { get; set; }
-        public bool ExcludeDrivers { get; set; }
-        public bool DisableTelemetryServices { get; set; }
-        public bool DisablePrivacyOptions { get; set; }
-        public bool DisableCortana { get; set; }
-        public bool DisableSensorServices { get; set; }
-        public bool DisableWindowsInk { get; set; }
-        public bool DisableSpellingTyping { get; set; }
-        public bool DisableXboxLive { get; set; }
-        public bool DisableGameBar { get; set; }
-        public bool DisableInsiderService { get; set; }
-        public bool DisableStoreUpdates { get; set; }
-        public bool EnableLongPaths { get; set; }
-        public bool RemoveCastToDevice { get; set; }
-        public bool EnableGamingMode { get; set; }
-        public bool RestoreClassicPhotoViewer { get; set; }
-
-        // windows 11
-        public bool TaskbarToLeft { get; set; }
-        public bool DisableSnapAssist { get; set; }
-        public bool DisableWidgets { get; set; }
-        public bool DisableChat { get; set; }
-        public bool ClassicMenu { get; set; }
-        public bool DisableTPMCheck { get; set; }
-        public bool CompactMode { get; set; }
-        public bool DisableStickers { get; set; }
-        public bool DisableVBS { get; set; }
-
-        // advanced
-        public bool DisableHPET { get; set; }
-        public bool EnableLoginVerbose { get; set; }
-    }
-
-    internal static class Options
-    {
-        const int CONTRAST_THRESHOLD = 149;
-
         internal static Color ForegroundColor = Color.FromArgb(153, 102, 204);
         internal static Color ForegroundAccentColor = Color.FromArgb(134, 89, 179);
         internal static Color BackgroundColor = Color.FromArgb(10, 10, 10);
         internal static Color BackAccentColor = Color.FromArgb(40, 40, 40);
         internal static Color TextColor;
 
-        readonly static string _themeFlag = "themeable";
         internal readonly static string SettingsFile = CoreHelper.CoreFolder + "\\Optimizer.json";
 
-        internal static SettingsJson CurrentOptions = new SettingsJson();
+        internal static Options CurrentOptions = new Options();
 
         internal static dynamic TranslationList;
 
         internal static Color GetContrastColor(Color c)
         {
             double brightness = c.R * 0.299 + c.G * 0.587 + c.B * 0.114;
-            return brightness > CONTRAST_THRESHOLD ? Color.Black : Color.White;
+            return brightness > Constants.CONTRAST_THRESHOLD ? Color.Black : Color.White;
         }
 
         internal static void ApplyTheme(Form f)
@@ -155,7 +56,7 @@ namespace Optimizer
 
                 if (x is LinkLabel)
                 {
-                    if ((string)c.Tag == _themeFlag)
+                    if ((string)c.Tag == Constants.THEME_FLAG)
                     {
                         c.LinkColor = c1;
                         c.VisitedLinkColor = c1;
@@ -165,7 +66,7 @@ namespace Optimizer
 
                 if (x is CheckBox || x is RadioButton || x is Label)
                 {
-                    if ((string)c.Tag == _themeFlag)
+                    if ((string)c.Tag == Constants.THEME_FLAG)
                     {
                         c.ForeColor = c1;
                     }
@@ -217,20 +118,19 @@ namespace Optimizer
                 // settings migration for new color picker
                 if (File.Exists(SettingsFile) && File.ReadAllText(SettingsFile).Contains("\"Color\":"))
                 {
-                    SettingsJson tmpJson = JsonConvert.DeserializeObject<SettingsJson>(File.ReadAllText(SettingsFile));
+                    Options tmpJson = JsonConvert.DeserializeObject<Options>(File.ReadAllText(SettingsFile));
                     tmpJson.Theme = Color.FromArgb(153, 102, 204);
                     CurrentOptions = tmpJson;
                 }
                 else
                 {
                     // DEFAULT OPTIONS
-
                     CurrentOptions.Theme = Color.FromArgb(153, 102, 204);
-                    CurrentOptions.AppsFolder = Path.Combine(KnownFolders.GetPath(KnownFolder.Downloads), Constants.DOWNLOADS_FOLDER);
-                    Directory.CreateDirectory(Options.CurrentOptions.AppsFolder);
+                    CurrentOptions.AppsFolder = Path.Combine(Utilities.GetUserDownloadsFolder(), Constants.DOWNLOADS_FOLDER);
+                    Directory.CreateDirectory(OptionsHelper.CurrentOptions.AppsFolder);
                     CurrentOptions.EnableTray = false;
                     CurrentOptions.AutoStart = false;
-                    CurrentOptions.InternalDNS = Constants.InternalDNS;
+                    CurrentOptions.InternalDNS = Constants.INTERNAL_DNS;
                     CurrentOptions.DisableIndicium = false;
                     CurrentOptions.DisableAppsTool = false;
                     CurrentOptions.DisableHostsEditor = false;
@@ -306,6 +206,7 @@ namespace Optimizer
                     CurrentOptions.CompactMode = false;
                     CurrentOptions.DisableStickers = false;
                     CurrentOptions.DisableVBS = false;
+                    CurrentOptions.DisableCoPilotAI = false;
 
                     CurrentOptions.DisableHPET = false;
                     CurrentOptions.EnableLoginVerbose = false;
@@ -323,7 +224,7 @@ namespace Optimizer
             }
             else
             {
-                CurrentOptions = JsonConvert.DeserializeObject<SettingsJson>(File.ReadAllText(SettingsFile));
+                CurrentOptions = JsonConvert.DeserializeObject<Options>(File.ReadAllText(SettingsFile));
             }
 
             // prevent options from corruption
@@ -369,6 +270,7 @@ namespace Optimizer
                 if (CurrentOptions.LanguageCode == LanguageCode.JA) TranslationList = JObject.Parse(Properties.Resources.JA);
                 if (CurrentOptions.LanguageCode == LanguageCode.FA) TranslationList = JObject.Parse(Properties.Resources.FA);
                 if (CurrentOptions.LanguageCode == LanguageCode.NE) TranslationList = JObject.Parse(Properties.Resources.NE);
+                if (CurrentOptions.LanguageCode == LanguageCode.BG) TranslationList = JObject.Parse(Properties.Resources.BG);
             }
             catch (Exception ex)
             {

+ 1 - 1
Optimizer/PingerHelper.cs

@@ -154,7 +154,7 @@ namespace Optimizer
         internal static bool IsInternetAvailable()
         {
             const int timeout = 1000;
-            string host = Options.CurrentOptions.InternalDNS ?? Constants.InternalDNS;
+            string host = OptionsHelper.CurrentOptions.InternalDNS ?? Constants.INTERNAL_DNS;
 
             var ping = new Ping();
             var buffer = new byte[32];

+ 16 - 18
Optimizer/Program.cs

@@ -13,7 +13,7 @@ namespace Optimizer
         /* VERSION PROPERTIES */
         /* DO NOT LEAVE THEM EMPTY */
         internal readonly static float Major = 15;
-        internal readonly static float Minor = 8;
+        internal readonly static float Minor = 9;
         internal readonly static bool EXPERIMENTAL_BUILD = false;
         /* END OF VERSION PROPERTIES */
 
@@ -30,7 +30,8 @@ namespace Optimizer
         internal static bool SILENT_MODE = false;
         internal static int DPI_PREFERENCE;
 
-        // Enables the corresponding Windows tab for Windows Server machines
+        // Enables the corresponding Windows tab for Windows Server machines,
+        // as well as the Advanced tweaks tab
         internal static bool UNSAFE_MODE = false;
 
         const string _jsonAssembly = @"Optimizer.Newtonsoft.Json.dll";
@@ -41,8 +42,6 @@ namespace Optimizer
         static string _adminMissingMessage = "Optimizer needs to be run as administrator!\nApp will now close...";
         static string _unsupportedMessage = "Optimizer works with Windows 7 and higher!\nApp will now close...";
 
-        //static string _renameAppMessage = "It's recommended to rename the app from '{0}' to 'Optimizer' for a better experience.\n\nApp will now close...";
-
         static string _confInvalidVersionMsg = "Windows version does not match!";
         static string _confInvalidFormatMsg = "Config file is in invalid format!";
         static string _confNotFoundMsg = "Config file does not exist!";
@@ -60,9 +59,8 @@ namespace Optimizer
         static void Main(string[] switches)
         {
             AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
-
-            EmbeddedAssembly.Load(_jsonAssembly, _jsonAssembly.Replace("Optimizer.", string.Empty));
             AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
+            EmbeddedAssembly.Load(_jsonAssembly, _jsonAssembly.Replace("Optimizer.", string.Empty));
 
             DPI_PREFERENCE = Convert.ToInt32(Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager", "LastLoadedDPI", "96"));
             if (Environment.OSVersion.Version.Major >= 6) SetProcessDPIAware();
@@ -261,7 +259,7 @@ namespace Optimizer
                     SILENT_MODE = true;
                     LoadSettings();
                     SilentOps.ProcessAllActions();
-                    Options.SaveSettings();
+                    OptionsHelper.SaveSettings();
                 }
             }
             else
@@ -279,15 +277,15 @@ namespace Optimizer
         private static void LoadSettings()
         {
             // for backward compatibility (legacy)
-            Options.LegacyCheck();
+            OptionsHelper.LegacyCheck();
 
             // load settings, if there is no settings, load defaults
             try
             {
                 // show FirstRunForm/Language Selector if app is running first time
-                if (!File.Exists(Options.SettingsFile))
+                if (!File.Exists(OptionsHelper.SettingsFile))
                 {
-                    Options.LoadSettings();
+                    OptionsHelper.LoadSettings();
                     if (!SILENT_MODE)
                     {
                         FirstRunForm frf = new FirstRunForm();
@@ -296,7 +294,7 @@ namespace Optimizer
                 }
                 else
                 {
-                    Options.LoadSettings();
+                    OptionsHelper.LoadSettings();
                 }
 
                 //if (!Options.CurrentOptions.DisableOptimizerTelemetry)
@@ -305,13 +303,13 @@ namespace Optimizer
                 //}
 
                 // ideal place to replace internal messages from translation list
-                _adminMissingMessage = Options.TranslationList["adminMissingMsg"];
-                _unsupportedMessage = Options.TranslationList["unsupportedMsg"];
-                _confInvalidFormatMsg = Options.TranslationList["confInvalidFormatMsg"];
-                _confInvalidVersionMsg = Options.TranslationList["confInvalidVersionMsg"];
-                _confNotFoundMsg = Options.TranslationList["confNotFoundMsg"];
-                _argInvalidMsg = Options.TranslationList["argInvalidMsg"];
-                _alreadyRunningMsg = Options.TranslationList["alreadyRunningMsg"];
+                _adminMissingMessage = OptionsHelper.TranslationList["adminMissingMsg"];
+                _unsupportedMessage = OptionsHelper.TranslationList["unsupportedMsg"];
+                _confInvalidFormatMsg = OptionsHelper.TranslationList["confInvalidFormatMsg"];
+                _confInvalidVersionMsg = OptionsHelper.TranslationList["confInvalidVersionMsg"];
+                _confNotFoundMsg = OptionsHelper.TranslationList["confNotFoundMsg"];
+                _argInvalidMsg = OptionsHelper.TranslationList["argInvalidMsg"];
+                _alreadyRunningMsg = OptionsHelper.TranslationList["alreadyRunningMsg"];
             }
             catch (Exception ex)
             {

+ 126 - 90
Optimizer/Properties/Resources.Designer.cs

@@ -61,25 +61,25 @@ namespace Optimizer.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Windows Registry Editor Version 5.00
-        ///
-        ///[HKEY_CLASSES_ROOT\Directory\shell\OpenWithCMD]
-        ///@=&quot;Open Command Prompt here&quot;
-        ///&quot;Icon&quot;=&quot;cmd.exe&quot;
-        ///&quot;NoWorkingDirectory&quot;=&quot;&quot;
-        ///
-        ///[HKEY_CLASSES_ROOT\Directory\shell\OpenWithCMD\command]
-        ///@=&quot;cmd.exe /s /k pushd \&quot;%V\&quot;&quot;
-        ///
-        ///[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenWithCMD]
-        ///@=&quot;Open Command Prompt here&quot;
-        ///&quot;Icon&quot;=&quot;cmd.exe&quot;
-        ///&quot;NoWorkingDirectory&quot;=&quot;&quot;
-        ///
-        ///[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenWithCMD\command]
-        ///@=&quot;cmd.exe /s /k pushd \&quot;%V\&quot;&quot;
-        ///
-        ///[HKEY_CLASSES_ROOT\D [rest of string was truncated]&quot;;.
+        ///   Looks up a localized string similar to Windows Registry Editor Version 5.00
+        ///
+        ///[HKEY_CLASSES_ROOT\Directory\shell\OpenWithCMD]
+        ///@=&quot;Open Command Prompt here&quot;
+        ///&quot;Icon&quot;=&quot;cmd.exe&quot;
+        ///&quot;NoWorkingDirectory&quot;=&quot;&quot;
+        ///
+        ///[HKEY_CLASSES_ROOT\Directory\shell\OpenWithCMD\command]
+        ///@=&quot;cmd.exe /s /k pushd \&quot;%V\&quot;&quot;
+        ///
+        ///[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenWithCMD]
+        ///@=&quot;Open Command Prompt here&quot;
+        ///&quot;Icon&quot;=&quot;cmd.exe&quot;
+        ///&quot;NoWorkingDirectory&quot;=&quot;&quot;
+        ///
+        ///[HKEY_CLASSES_ROOT\Directory\Background\shell\OpenWithCMD\command]
+        ///@=&quot;cmd.exe /s /k pushd \&quot;%V\&quot;&quot;
+        ///
+        ///[HKEY_CLASSES_ROOT\Drive\shell\OpenWit [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string AddOpenWithCMD {
             get {
@@ -121,6 +121,31 @@ namespace Optimizer.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized string similar to {
+        ///	&quot;subSystem&quot;: &quot;Система&quot;,
+        ///	&quot;subPrivacy&quot;: &quot;Анонимност&quot;,
+        ///	&quot;subGaming&quot;: &quot;Гейминг&quot;,
+        ///	&quot;subTouch&quot;: &quot;Пипане&quot;,
+        ///	&quot;subTaskbar&quot;: &quot;Лента за задачи&quot;,
+        ///	&quot;subExtras&quot;: &quot;Екстри&quot;,
+        ///	&quot;btnAbout&quot;: &quot;ОК&quot;,
+        ///	&quot;restartButton&quot;: &quot;Рестартирай Сега&quot;,
+        ///	&quot;restartButton8&quot;: &quot;Рестартирай Сега&quot;,
+        ///	&quot;restartButton10&quot;: &quot;Рестартирай Сега&quot;,
+        ///	&quot;btnFind&quot;: &quot;Намери&quot;,
+        ///	&quot;btnKill&quot;: &quot;Убий&quot;,
+        ///	&quot;trayUnlocker&quot;: &quot;Файлови Управители&quot;,
+        ///	&quot;restartAndApply&quot;: &quot;Рестартирай, за да приложиш промените&quot;,
+        ///	&quot;txtVersion&quot;: &quot;Версия: {VN}&quot;,
+        ///	&quot;txtBitness&quot;: &quot;Работиш с [rest of string was truncated]&quot;;.
+        /// </summary>
+        internal static string BG {
+            get {
+                return ResourceManager.GetString("BG", resourceCulture);
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized resource of type System.Drawing.Bitmap.
         /// </summary>
@@ -131,6 +156,16 @@ namespace Optimizer.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap bulgaria {
+            get {
+                object obj = ResourceManager.GetObject("bulgaria", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized resource of type System.Drawing.Bitmap.
         /// </summary>
@@ -278,13 +313,14 @@ namespace Optimizer.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to rem USE AT OWN RISK AS IS WITHOUT WARRANTY OF ANY KIND !!!!!
-        ///
-        ///rem https://docs.microsoft.com/en-us/windows-hardware/customize/desktop/unattend/security-malware-windows-defender-disableantispyware
-        ///rem &quot;DisableAntiSpyware&quot; is discontinued and will be ignored on client devices, as of the August 2020 (version 4.18.2007.8) update to Microsoft Defender Antivirus.
-        ///
-        ///rem Disable Tamper Protection First !!!!!
-        ///rem https://www.tenforums.com/tutorials/123792-turn-off-tamper-protection-windows-defender-antivirus.ht [rest of string was truncated]&quot;;.
+        ///   Looks up a localized string similar to rem USE AT OWN RISK AS IS WITHOUT WARRANTY OF ANY KIND !!!!!
+        ///
+        ///rem https://docs.microsoft.com/en-us/windows-hardware/customize/desktop/unattend/security-malware-windows-defender-disableantispyware
+        ///rem &quot;DisableAntiSpyware&quot; is discontinued and will be ignored on client devices, as of the August 2020 (version 4.18.2007.8) update to Microsoft Defender Antivirus.
+        ///
+        ///rem Disable Tamper Protection First !!!!!
+        ///rem https://www.tenforums.com/tutorials/123792-turn-off-tamper-protection-windows-defender-antivirus.html
+        ///reg [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string DisableDefenderSafeMode1903Plus {
             get {
@@ -305,9 +341,9 @@ namespace Optimizer.Properties {
         ///&quot;visiosolution&quot;=dword:00000001
         ///&quot;wdsolution&quot;=dword:00000001
         ///&quot;xlsolution&quot;=dword:00000001
-        /// 
+        ///
         ///[HKEY_CURRENT_USER\Software\Policies\microsoft\office\16.0\osm\preventedsolutiontypes]
-        ///&quot;agave&quot; [rest of string was truncated]&quot;;.
+        ///&quot;agave&quot;= [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string DisableOfficeTelemetry {
             get {
@@ -316,14 +352,14 @@ namespace Optimizer.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to schtasks /end /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack2016&quot;
-        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack2016&quot; /disable
-        ///schtasks /end /tn &quot;\Microsoft\Office\OfficeTelemetryAgentLogOn2016&quot;
-        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentLogOn2016&quot; /disable
-        ///
-        ///schtasks /end /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack&quot;
-        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack&quot; /disable
-        ///schtasks /end /tn &quot;\Microsoft\Office\OfficeTelemetryAgen [rest of string was truncated]&quot;;.
+        ///   Looks up a localized string similar to schtasks /end /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack2016&quot;
+        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack2016&quot; /disable
+        ///schtasks /end /tn &quot;\Microsoft\Office\OfficeTelemetryAgentLogOn2016&quot;
+        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentLogOn2016&quot; /disable
+        ///
+        ///schtasks /end /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack&quot;
+        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack&quot; /disable
+        ///schtasks /end /tn &quot;\Microsoft\Office\OfficeTelemetryAgentLogOn&quot; [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string DisableOfficeTelemetryTasks {
             get {
@@ -332,12 +368,12 @@ namespace Optimizer.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to schtasks /end /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\Consolidator&quot;
-        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\Consolidator&quot; /disable
-        ///schtasks /end /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\BthSQM&quot;
-        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\BthSQM&quot; /disable
-        ///schtasks /end /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask&quot;
-        ///schtasks /change /tn &quot;\Microsoft\ [rest of string was truncated]&quot;;.
+        ///   Looks up a localized string similar to schtasks /end /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\Consolidator&quot;
+        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\Consolidator&quot; /disable
+        ///schtasks /end /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\BthSQM&quot;
+        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\BthSQM&quot; /disable
+        ///schtasks /end /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask&quot;
+        ///schtasks /change /tn &quot;\Microsoft\Windo [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string DisableTelemetryTasks {
             get {
@@ -346,10 +382,10 @@ namespace Optimizer.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to schtasks /end /tn &quot;\Microsoft\XblGameSave\XblGameSaveTask&quot;
-        ///schtasks /change /tn &quot;\Microsoft\XblGameSave\XblGameSaveTask&quot; /disable
-        ///schtasks /end /tn &quot;\Microsoft\XblGameSave\XblGameSaveTaskLogon&quot;
-        ///schtasks /change /tn &quot;\Microsoft\XblGameSave\XblGameSaveTaskLogon&quot; /disable
+        ///   Looks up a localized string similar to schtasks /end /tn &quot;\Microsoft\XblGameSave\XblGameSaveTask&quot;
+        ///schtasks /change /tn &quot;\Microsoft\XblGameSave\XblGameSaveTask&quot; /disable
+        ///schtasks /end /tn &quot;\Microsoft\XblGameSave\XblGameSaveTaskLogon&quot;
+        ///schtasks /change /tn &quot;\Microsoft\XblGameSave\XblGameSaveTaskLogon&quot; /disable
         ///.
         /// </summary>
         internal static string DisableXboxTasks {
@@ -459,7 +495,7 @@ namespace Optimizer.Properties {
         ///&quot;visiosolution&quot;=-
         ///&quot;wdsolution&quot;=-
         ///&quot;xlsolution&quot;=-
-        /// 
+        ///
         ///[HKEY_CURRENT_USER\Software\Policies\microsoft\office\16.0\osm\preventedsolutiontypes]
         ///&quot;agave&quot;=-
         ///&quot;appaddins&quot;=-
@@ -475,14 +511,14 @@ namespace Optimizer.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack2016&quot; /enable
-        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentLogOn2016&quot; /enable
-        ///
-        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack&quot; /enable
-        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentLogOn&quot; /enable
-        ///
-        ///reg add &quot;HKCU\SOFTWARE\Microsoft\Office\15.0\Outlook\Options\Mail&quot; /v &quot;EnableLogging&quot; /t REG_DWORD /d 1 /f
-        ///reg add &quot;HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\Options\Mail&quot; /v &quot;EnableLoggi [rest of string was truncated]&quot;;.
+        ///   Looks up a localized string similar to schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack2016&quot; /enable
+        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentLogOn2016&quot; /enable
+        ///
+        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentFallBack&quot; /enable
+        ///schtasks /change /tn &quot;\Microsoft\Office\OfficeTelemetryAgentLogOn&quot; /enable
+        ///
+        ///reg add &quot;HKCU\SOFTWARE\Microsoft\Office\15.0\Outlook\Options\Mail&quot; /v &quot;EnableLogging&quot; /t REG_DWORD /d 1 /f
+        ///reg add &quot;HKCU\SOFTWARE\Microsoft\Office\16.0\Outlook\Options\Mail&quot; /v &quot;EnableLogging&quot; /t  [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string EnableOfficeTelemetryTasks {
             get {
@@ -491,12 +527,12 @@ namespace Optimizer.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\Consolidator&quot; /enable
-        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\BthSQM&quot; /enable
-        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask&quot; /enable
-        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip&quot; /enable
-        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\Uploader&quot; /enable
-        ///schta [rest of string was truncated]&quot;;.
+        ///   Looks up a localized string similar to schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\Consolidator&quot; /enable
+        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\BthSQM&quot; /enable
+        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\KernelCeipTask&quot; /enable
+        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\UsbCeip&quot; /enable
+        ///schtasks /change /tn &quot;\Microsoft\Windows\Customer Experience Improvement Program\Uploader&quot; /enable
+        ///schtasks / [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string EnableTelemetryTasks {
             get {
@@ -505,8 +541,8 @@ namespace Optimizer.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to schtasks /change /tn &quot;\Microsoft\XblGameSave\XblGameSaveTask&quot; /enable
-        ///schtasks /change /tn &quot;\Microsoft\XblGameSave\XblGameSaveTaskLogon&quot; /enable
+        ///   Looks up a localized string similar to schtasks /change /tn &quot;\Microsoft\XblGameSave\XblGameSaveTask&quot; /enable
+        ///schtasks /change /tn &quot;\Microsoft\XblGameSave\XblGameSaveTaskLogon&quot; /enable
         ///.
         /// </summary>
         internal static string EnableXboxTasks {
@@ -610,11 +646,11 @@ namespace Optimizer.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to @echo off 
-        ///pushd &quot;%~dp0&quot; 
-        ///dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum &gt;List.txt 
-        ///dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum &gt;&gt;List.txt 
-        ///for /f %%i in (&apos;findstr /i . List.txt 2^&gt;nul&apos;) do dism /online /norestart /add-package:&quot;%SystemRoot%\servicing\Packages\%%i&quot; 
+        ///   Looks up a localized string similar to @echo off
+        ///pushd &quot;%~dp0&quot;
+        ///dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum &gt;List.txt
+        ///dir /b %SystemRoot%\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientTools-Package~3*.mum &gt;&gt;List.txt
+        ///for /f %%i in (&apos;findstr /i . List.txt 2^&gt;nul&apos;) do dism /online /norestart /add-package:&quot;%SystemRoot%\servicing\Packages\%%i&quot;
         ///.
         /// </summary>
         internal static string GPEditEnablerInHome {
@@ -677,22 +713,22 @@ namespace Optimizer.Properties {
         }
         
         /// <summary>
-        ///   Looks up a localized string similar to Windows Registry Editor Version 5.00
-        ///
-        ///[HKEY_CLASSES_ROOT\*\shell\runas]
-        ///@=&quot;Take Ownership&quot;
-        ///&quot;NoWorkingDirectory&quot;=&quot;&quot;
-        ///
-        ///[HKEY_CLASSES_ROOT\*\shell\runas\command]
-        ///@=&quot;cmd.exe /c takeown /f \&quot;%1\&quot; &amp;&amp; icacls \&quot;%1\&quot; /grant administrators:F&quot;
-        ///&quot;IsolatedCommand&quot;=&quot;cmd.exe /c takeown /f \&quot;%1\&quot; &amp;&amp; icacls \&quot;%1\&quot; /grant administrators:F&quot;
-        ///
-        ///[HKEY_CLASSES_ROOT\Directory\shell\runas]
-        ///@=&quot;Take Ownership&quot;
-        ///&quot;NoWorkingDirectory&quot;=&quot;&quot;
-        ///
-        ///[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
-        ///@=&quot;cmd.exe /c takeown /f \&quot;%1\&quot; /r /d  [rest of string was truncated]&quot;;.
+        ///   Looks up a localized string similar to Windows Registry Editor Version 5.00
+        ///
+        ///[HKEY_CLASSES_ROOT\*\shell\runas]
+        ///@=&quot;Take Ownership&quot;
+        ///&quot;NoWorkingDirectory&quot;=&quot;&quot;
+        ///
+        ///[HKEY_CLASSES_ROOT\*\shell\runas\command]
+        ///@=&quot;cmd.exe /c takeown /f \&quot;%1\&quot; &amp;&amp; icacls \&quot;%1\&quot; /grant administrators:F&quot;
+        ///&quot;IsolatedCommand&quot;=&quot;cmd.exe /c takeown /f \&quot;%1\&quot; &amp;&amp; icacls \&quot;%1\&quot; /grant administrators:F&quot;
+        ///
+        ///[HKEY_CLASSES_ROOT\Directory\shell\runas]
+        ///@=&quot;Take Ownership&quot;
+        ///&quot;NoWorkingDirectory&quot;=&quot;&quot;
+        ///
+        ///[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
+        ///@=&quot;cmd.exe /c takeown /f \&quot;%1\&quot; /r /d y &amp;&amp; icacls \&quot;% [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string InstallTakeOwnership {
             get {
@@ -790,7 +826,7 @@ namespace Optimizer.Properties {
         ///	&quot;subGaming&quot;: &quot;게이밍&quot;,
         ///	&quot;subTouch&quot;: &quot;터치&quot;,
         ///	&quot;subTaskbar&quot;: &quot;작업 표시줄&quot;,
-        ///	&quot;subExtras&quot;: &quot;추가&quot;,	
+        ///	&quot;subExtras&quot;: &quot;추가&quot;,
         ///	&quot;btnAbout&quot;: &quot;확인&quot;,
         ///	&quot;restartButton&quot;: &quot;지금 다시 시작&quot;,
         ///	&quot;restartButton8&quot;: &quot;지금 다시 시작&quot;,
@@ -803,7 +839,7 @@ namespace Optimizer.Properties {
         ///	&quot;txtBitness&quot;: &quot;{BITS}로 작업중 - 한국어: 비너스걸&quot;,
         ///	&quot;linkUpdate&quot;: &quot;업데이트 가능&quot;,
         ///	&quot;lblLab&quot;: &quot;실험 빌드\n(테스트 후 삭제)&quot;,
-        ///	&quot;performanceSw&quot;:  [rest of string was truncated]&quot;;.
+        ///	&quot;performanceSw&quot;: &quot; [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string KO {
             get {
@@ -837,8 +873,8 @@ namespace Optimizer.Properties {
         ///	&quot;btnKill&quot;: &quot;بیکوژە (دایبخە)&quot;,
         ///	&quot;trayUnlocker&quot;: &quot;دەسکەکانی فایل&quot;,
         ///	&quot;restartAndApply&quot;: &quot;ڕیستارتی ئەکەیتەوە بۆ بینینی گۆڕانکاریەکان&quot;,
-        ///	&quot;txtVersion&quot;: &quot;وەشان : &quot;,
-        ///	&quot; [rest of string was truncated]&quot;;.
+        ///	&quot;txtVersion&quot;: &quot;وەشان :&quot;,
+        ///	&quot;t [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string KU {
             get {
@@ -1256,7 +1292,7 @@ namespace Optimizer.Properties {
         ///	&quot;subGaming&quot;: &quot;Ігри&quot;,
         ///	&quot;subTouch&quot;: &quot;Дотик&quot;,
         ///	&quot;subTaskbar&quot;: &quot;Панель задач&quot;,
-        ///	&quot;subExtras&quot;: &quot; Доповнення&quot;,
+        ///	&quot;subExtras&quot;: &quot;Доповнення&quot;,
         ///	&quot;btnAbout&quot;: &quot;OK&quot;,
         ///	&quot;restartButton&quot;: &quot;Перезапустити зараз&quot;,
         ///	&quot;restartButton8&quot;: &quot;Перезапустити зараз&quot;,
@@ -1266,7 +1302,7 @@ namespace Optimizer.Properties {
         ///	&quot;trayUnlocker&quot;: &quot;Дескриптор файлів&quot;,
         ///	&quot;restartAndApply&quot;: &quot;Перезапустити для застосування змін&quot;,
         ///	&quot;txtVersion&quot;: &quot;Версія: {VN}&quot;,
-        ///	 [rest of string was truncated]&quot;;.
+        ///	&quot; [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string UA {
             get {

+ 6 - 0
Optimizer/Properties/Resources.resx

@@ -334,4 +334,10 @@
   <data name="nepal" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Flags\nepal.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="BG" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\i18n\BG.json;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
+  </data>
+  <data name="bulgaria" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Flags\bulgaria.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
 </root>

BIN
Optimizer/Resources/Flags/bulgaria.png


+ 5 - 1
Optimizer/Resources/i18n/AR.json

@@ -461,5 +461,9 @@
 	"btnRefreshFonts": "تحديث",
 	"chkAllNics": "تعيين لجميع محولات الشبكة",
 	"chkCustomDns": "قم بتعيين DNS المخصص",
-	"btnSetDns": "تعيين DNS"
+	"btnSetDns": "تعيين DNS",
+	"copilotSw": "تعطيل ميزة CoPilot AI تمامًا",
+    "copilotTip": "يعطل ميزة CoPilot AI تمامًا.",
+	"btnReinforce": "تعزيز السياسات",
+	"msgReinforce": "هل أنت متأكد من رغبتك في إعادة تطبيق السياسات الحالية؟"
 }

+ 5 - 1
Optimizer/Resources/i18n/BG.json

@@ -461,5 +461,9 @@
 	"btnRefreshFonts": "Обнови",
 	"chkAllNics": "Приложи за всички мрежови адаптери",
 	"chkCustomDns": "Сложи персонализиран DNS",
-	"btnSetDns": "Сложи DNS"
+	"btnSetDns": "Сложи DNS",
+	"copilotSw": "Изключете CoPilot AI",
+	"copilotTip": "Изцяло изключва функцията CoPilot AI",
+	"btnReinforce": "Укрепете политиките",
+	"msgReinforce": "Сигурни ли сте, че искате да приложите отново текущите си политики?"
 }

+ 5 - 1
Optimizer/Resources/i18n/CN.json

@@ -460,5 +460,9 @@
 	"btnRefreshFonts": "刷新",
 	"chkAllNics": "为所有网络适配器设置",
 	"chkCustomDns": "设置自定义 DNS",
-	"btnSetDns": "设置DNS"
+	"btnSetDns": "设置DNS",
+	"copilotSw": "禁用 CoPilot AI",
+    "copilotTip": "完全关闭 CoPilot AI 功能。",
+	"btnReinforce": "强化政策",
+	"msgReinforce": "您确定要重新应用当前的政策吗?"
 }

+ 5 - 1
Optimizer/Resources/i18n/CZ.json

@@ -461,5 +461,9 @@ Má to negativní vliv na výkon.",
 	"btnRefreshFonts": "Obnovit",
 	"chkAllNics": "Nastavení pro všechny síťové adaptéry",
 	"chkCustomDns": "Nastavte vlastní DNS",
-	"btnSetDns": "Nastavte DNS"
+	"btnSetDns": "Nastavte DNS",
+	"copilotSw": "Vypnout funkci CoPilot AI",
+    "copilotTip": "Úplně vypne funkci CoPilot AI.",
+	"btnReinforce": "Posílit politiky",
+	"msgReinforce": "Opravdu si přejete znovu použít své stávající politiky?"
 }

+ 5 - 1
Optimizer/Resources/i18n/DE.json

@@ -435,5 +435,9 @@
 	"btnRefreshFonts": "Aktualisieren",
 	"chkAllNics": "Für alle Netzwerkadapter festgelegt",
 	"chkCustomDns": "Legen Sie benutzerdefiniertes DNS fest",
-	"btnSetDns": "DNS einstellen"
+	"btnSetDns": "DNS einstellen",
+	"copilotSw": "CoPilot AI deaktivieren",
+    "copilotTip": "Deaktiviert die CoPilot AI-Funktion vollständig.",
+	"btnReinforce": "Richtlinien verstärken",
+	"msgReinforce": "Sind Sie sicher, dass Sie Ihre aktuellen Richtlinien erneut anwenden möchten?"
 }

+ 5 - 1
Optimizer/Resources/i18n/EL.json

@@ -456,5 +456,9 @@
 	"btnRefreshFonts": "Ανανέωση",
 	"chkAllNics": "Εφαρμογή για όλους τους προσαρμογείς δικτύου",
 	"chkCustomDns": "Ορισμός προσαρμοσμένου DNS",
-	"btnSetDns": "Εφαρμογή DNS"
+	"btnSetDns": "Εφαρμογή DNS",
+	"copilotSw": "Απενεργοποίηση CoPilot AI",
+    "copilotTip": "Απενεργοποιεί πλήρως το χαρακτηριστικό CoPilot AI.",
+	"btnReinforce": "Ενίσχυση των πολιτικών",
+	"msgReinforce": "Είστε σίγουροι ότι θέλετε να ξαναεφαρμόσετε τις τρέχουσες πολιτικές σας;"
 }

+ 6 - 2
Optimizer/Resources/i18n/EN.json

@@ -171,7 +171,7 @@
 	"lblUpdateDisabled": "Disabled in experimental builds",
 	"lblTroubleshoot": "Troubleshooting",
 	"btnViewLog": "View errors",
-	"btnOpenConf": "Show config folder",
+	"btnOpenConf": "Show configuration folder",
 	"btnResetConfig": "Repair",
 	"integrator1": "Integrator is able to add fully-customized\nitems in Desktop right-click menu:",
 	"integrator2": "• Any program",
@@ -461,5 +461,9 @@ It has negative effect on performance.",
 	"btnRefreshFonts": "Refresh",
 	"chkAllNics": "Set for all network adapters",
 	"chkCustomDns": "Set custom DNS",
-	"btnSetDns": "Set DNS"
+	"btnSetDns": "Set DNS",
+	"copilotSw": "Disable CoPilot AI",
+	"copilotTip": "Completely turns off CoPilot AI feature.",
+	"btnReinforce": "Reinforce policies",
+	"msgReinforce": "Are you sure you want to re-apply your current policies?"
 }

+ 5 - 1
Optimizer/Resources/i18n/ES.json

@@ -458,5 +458,9 @@ Tiene un efecto negativo en el rendimiento.",
 	"btnRefreshFonts": "Actualizar",
 	"chkAllNics": "Configurado para todos los adaptadores de red.",
 	"chkCustomDns": "Establecer DNS personalizado",
-	"btnSetDns": "Establecer DNS"
+	"btnSetDns": "Establecer DNS",
+	"copilotSw": "Desactivar CoPilot AI",
+    "copilotTip": "Desactiva por completo la función de CoPilot AI.",
+	"btnReinforce": "Reforzar Políticas",
+	"msgReinforce": "¿Estás seguro de que deseas volver a aplicar tus políticas actuales?"
 }

+ 5 - 1
Optimizer/Resources/i18n/FA.json

@@ -448,5 +448,9 @@
 	"btnRefreshFonts": "بارگذاری مجدد",
 	"chkAllNics": "تنظیم برای همه آداپتورهای شبکه",
 	"chkCustomDns": "DNS سفارشی را تنظیم کنید",
-	"btnSetDns": "DNS را تنظیم کنید"
+	"btnSetDns": "DNS را تنظیم کنید",
+	"copilotSw": "غیرفعال کردن ویژگی CoPilot AI به طور کامل",
+    "copilotTip": "ویژگی CoPilot AI به طور کامل غیرفعال می‌شود.",
+	"btnReinforce": "تقویت سیاست‌ها",
+	"msgReinforce": "آیا مطمئن هستید که می‌خواهید سیاست‌های فعلی را مجدداً اعمال کنید؟"
 }

+ 5 - 1
Optimizer/Resources/i18n/FR.json

@@ -435,5 +435,9 @@ Necessite l'ouverture d'un compte Microsoft.",
 	"btnRefreshFonts": "Rafraichir",
 	"chkAllNics": "Définir pour toutes les cartes réseau",
 	"chkCustomDns": "Définir un DNS personnalisé",
-	"btnSetDns": "Définir le DNS"
+	"btnSetDns": "Définir le DNS",
+	"copilotSw": "Désactiver CoPilot AI",
+    "copilotTip": "Désactive complètement la fonctionnalité CoPilot AI.",
+	"btnReinforce": "Renforcer les politiques",
+	"msgReinforce": "Êtes-vous sûr de vouloir réappliquer vos politiques actuelles?"
 }

+ 5 - 1
Optimizer/Resources/i18n/HU.json

@@ -461,5 +461,9 @@ Negatív hatással van a teljesítményre.",
 	"btnRefreshFonts": "Frissítés",
 	"chkAllNics": "Minden hálózati adapterhez beállítva",
 	"chkCustomDns": "Állítsa be az egyéni DNS",
-	"btnSetDns": "Állítsa be a DNS"
+	"btnSetDns": "Állítsa be a DNS",
+	"copilotSw": "CoPilot AI kikapcsolása",
+    "copilotTip": "Teljesen kikapcsolja a CoPilot AI funkciót.",
+	"btnReinforce": "Iránypontok erősítése",
+	"msgReinforce": "Biztos vagy benne, hogy újra alkalmazod az aktuális iránypontokat?"
 }

+ 5 - 1
Optimizer/Resources/i18n/IT.json

@@ -455,5 +455,9 @@ Ha un effetto negativo sulle prestazioni.",
 	"btnRefreshFonts": "Aggiorna",
 	"chkAllNics": "Impostato per tutti gli adattatori di rete",
 	"chkCustomDns": "Imposta DNS personalizzati",
-	"btnSetDns": "Imposta DNS"
+	"btnSetDns": "Imposta DNS",
+	"copilotSw": "Disabilita CoPilot AI",
+    "copilotTip": "Disattiva completamente la funzionalità CoPilot AI.",
+	"btnReinforce": "Rafforzare le Politiche",
+	"msgReinforce": "Sei sicuro di voler riapplicare le tue attuali politiche?"
 }

+ 5 - 1
Optimizer/Resources/i18n/JA.json

@@ -452,5 +452,9 @@ SMBv3に置き換えられており、そちらのほうがより安全です。
 	"btnRefreshFonts": "更新",
 	"chkAllNics": "すべてのネットワークアダプターに設定",
 	"chkCustomDns": "カスタムDNSを設定する",
-	"btnSetDns": "DNSの設定"
+	"btnSetDns": "DNSの設定",
+	"copilotSw": "CoPilot AI を無効にする",
+    "copilotTip": "CoPilot AI の機能を完全に無効にします.",
+	"btnReinforce": "ポリシーを強化する",
+	"msgReinforce": "現在のポリシーを再適用してもよろしいですか?"
 }

+ 5 - 1
Optimizer/Resources/i18n/KO.json

@@ -463,5 +463,9 @@ Microsoft 계정 로그인이 필요합니다.",
 	"btnRefreshFonts": "새로 고침",
 	"chkAllNics": "모든 네트워크 어댑터에 대해 설정",
 	"chkCustomDns": "맞춤 DNS 설정",
-	"btnSetDns": "DNS 설정"
+	"btnSetDns": "DNS 설정",
+	"copilotSw": "CoPilot AI 기능 완전히 비활성화",
+    "copilotTip": "CoPilot AI 기능을 완전히 비활성화합니다.",
+	"btnReinforce": "정책 강화",
+	"msgReinforce": "현재 정책을 다시 적용하시겠습니까?"
 }

+ 5 - 1
Optimizer/Resources/i18n/KU.json

@@ -460,5 +460,9 @@
 	"btnRefreshFonts": "ڕیفرێش",
 	"chkAllNics": "بۆ هەموو ئەداپتەرەکانی تۆڕ ڕێکبخە",
 	"chkCustomDns": "DNS تایبەت بەخۆت دابنێ",
-	"btnSetDns": "DNS دابنێ"
+	"btnSetDns": "DNS دابنێ",
+	"copilotSw": "CoPilot AI تایبه‌تییه‌کرن",
+    "copilotTip": "ویژگی CoPilot AI تایبه‌تییه‌کرنەوەکی ته‌مامی.",
+	"btnReinforce": "سیاسهٔ بیشکوچین",
+	"msgReinforce": "داکۆ پێشەنگەتیە پێوستییە کرییە مە یانو دابەزەکیی نو رە بکە؟"
 }

+ 5 - 1
Optimizer/Resources/i18n/NE.json

@@ -411,5 +411,9 @@
 	"btnRefreshFonts": "रिफ्रेस गर्नुहोस्",
 	"chkAllNics": "सबै नेटवर्क एडेप्टरहरूको लागि सेट गर्नुहोस्",
 	"chkCustomDns": "अनुकूलन DNS सेट गर्नुहोस्",
-	"btnSetDns": "DNS सेट गर्नुहोस्"
+	"btnSetDns": "DNS सेट गर्नुहोस्",
+	"copilotSw": "CoPilot AI बिल्कुल बन्द गर्दछ।",
+    "copilotTip": "CoPilot AI कुरा पूरा बन्द गर्दछ।",
+	"btnReinforce": "नीत",
+	"msgReinforce": "तपाईंले आफ्ना हालका नीत"
 }

+ 5 - 1
Optimizer/Resources/i18n/NL.json

@@ -412,5 +412,9 @@ Het heeft een negatief effect op de prestaties.",
 	"btnRefreshFonts": "Ververs",
 	"chkAllNics": "Instellen voor alle netwerkadapters",
 	"chkCustomDns": "Aangepaste DNS instellen",
-	"btnSetDns": "DNS instellen"
+	"btnSetDns": "DNS instellen",
+   "copilotSw": "Schakel CoPilot AI uit",
+   "copilotTip": "Schakelt de CoPilot AI-functie volledig uit.",
+	"btnReinforce": "Beleid versterken",
+	"msgReinforce": "Weet u zeker dat u uw huidige beleid opnieuw wilt toepassen?"
 }

+ 5 - 1
Optimizer/Resources/i18n/PL.json

@@ -430,5 +430,9 @@
 	"btnRefreshFonts": "Odśwież",
 	"chkAllNics": "Ustaw dla wszystkich kart sieciowych",
 	"chkCustomDns": "Ustaw niestandardowy DNS",
-	"btnSetDns": "Ustaw DNS"
+	"btnSetDns": "Ustaw DNS",
+	"copilotSw": "Wyłącz funkcję CoPilot AI",
+    "copilotTip": "Całkowicie wyłącza funkcję CoPilot AI.",
+	"btnReinforce": "Wzmocnienie polityk",
+	"msgReinforce": "Czy na pewno chcesz ponownie zastosować obecne polityki?"
 }

+ 5 - 1
Optimizer/Resources/i18n/PT.json

@@ -458,5 +458,9 @@ Tem efeito negativo no desempenho.",
 	"btnRefreshFonts": "Atualizar",
 	"chkAllNics": "Definido para todos os adaptadores de rede",
 	"chkCustomDns": "Definir DNS personalizado",
-	"btnSetDns": "Definir DNS"
+	"btnSetDns": "Definir DNS",
+	"copilotSw": "Desativar CoPilot AI",
+    "copilotTip": "Desativa completamente a funcionalidade CoPilot AI.",
+	"btnReinforce": "Reforçar Políticas",
+	"msgReinforce": "Tem certeza de que deseja reaplicar suas políticas atuais?"
 }

+ 5 - 1
Optimizer/Resources/i18n/RO.json

@@ -443,5 +443,9 @@
 	"btnRefreshFonts": "Reîmprospăteaza",
 	"chkAllNics": "Setați pentru toate adaptoarele de rețea",
 	"chkCustomDns": "Setați DNS personalizat",
-	"btnSetDns": "Setați DNS"
+	"btnSetDns": "Setați DNS",
+	"copilotSw": "Dezactivează funcția CoPilot AI",
+    "copilotTip": "Dezactivează complet funcționalitatea CoPilot AI.",
+	"btnReinforce": "Consolidarea politicilor",
+	"msgReinforce": "Sunteți sigur că doriți să reaplicați politicile actuale?"
 }

+ 5 - 1
Optimizer/Resources/i18n/RU.json

@@ -431,5 +431,9 @@
 	"btnRefreshFonts": "Обновить",
 	"chkAllNics": "Установить для всех сетевых адаптеров",
 	"chkCustomDns": "Установить собственный DNS",
-	"btnSetDns": "Установить DNS"
+	"btnSetDns": "Установить DNS",
+	"copilotSw": "Отключить CoPilot AI",
+    "copilotTip": "Полностью отключает функцию CoPilot AI.",
+	"btnReinforce": "Укрепить политику",
+	"msgReinforce": "Вы уверены, что хотите повторно применить текущие политики?"
 }

+ 5 - 1
Optimizer/Resources/i18n/TR.json

@@ -459,5 +459,9 @@ Performansa olumsuz etkisi vardır.",
 	"btnRefreshFonts": "Yenile",
 	"chkAllNics": "Tüm ağ bağdaştırıcıları için ayarla",
 	"chkCustomDns": "Özel DNS ayarla",
-	"btnSetDns": "DNS ayarla"
+	"btnSetDns": "DNS ayarla",
+	"copilotSw": "CoPilot AI'yı Devre Dışı Bırak",
+    "copilotTip": "CoPilot AI özelliğini tamamen kapatır.",
+	"btnReinforce": "Politikaları Güçlendir",
+	"msgReinforce": "Şu anki politikalarınızı tekrar uygulamak istediğinizden emin misiniz?"
 }

+ 5 - 1
Optimizer/Resources/i18n/TW.json

@@ -457,5 +457,9 @@
 	"btnRefreshFonts": "重新整理",
 	"chkAllNics": "為所有網絡適配器設置",
 	"chkCustomDns": "設置自定義 DNS",
-	"btnSetDns": "設置DNS"
+	"btnSetDns": "設置DNS",
+	"copilotSw": "停用 CoPilot AI",
+	"copilotTip": "完全關閉 CoPilot AI 功能。",
+	"btnReinforce": "加強政策",
+	"msgReinforce": "您確定要重新應用目前的政策嗎?"
 }

+ 5 - 1
Optimizer/Resources/i18n/UA.json

@@ -462,5 +462,9 @@
 	"btnRefreshFonts": "Оновити",
 	"chkAllNics": "Набір для всіх мережевих адаптерів",
 	"chkCustomDns": "Встановити спеціальний DNS",
-	"btnSetDns": "Встановити DNS"
+	"btnSetDns": "Встановити DNS",
+	"copilotSw": "Повністю вимкнути функцію CoPilot AI",
+    "copilotTip": "Повністю вимикає функцію CoPilot AI.",
+	"btnReinforce": "Підсилити політику",
+	"msgReinforce": "Ви впевнені, що хочете повторно застосувати поточну політику?"
 }

+ 76 - 65
Optimizer/SilentOps.cs

@@ -26,7 +26,7 @@ namespace Optimizer
 
         internal static void ProcessAllActions()
         {
-            Logger.InitSilentReport();
+            Logger.InitializeSilentReport();
 
             if (Utilities.CurrentWindowsVersion == WindowsVersion.Windows7)
             {
@@ -358,7 +358,7 @@ namespace Optimizer
                 {
                     Utilities.EnableHPET();
                 }
-                Options.CurrentOptions.DisableHPET = CurrentSilentConfig.AdvancedTweaks.DisableHPET.Value;
+                OptionsHelper.CurrentOptions.DisableHPET = CurrentSilentConfig.AdvancedTweaks.DisableHPET.Value;
             }
 
             if (CurrentSilentConfig.AdvancedTweaks.EnableLoginVerbose.HasValue)
@@ -371,7 +371,7 @@ namespace Optimizer
                 {
                     Utilities.DisableLoginVerbose();
                 }
-                Options.CurrentOptions.EnableLoginVerbose = CurrentSilentConfig.AdvancedTweaks.EnableLoginVerbose.Value;
+                OptionsHelper.CurrentOptions.EnableLoginVerbose = CurrentSilentConfig.AdvancedTweaks.EnableLoginVerbose.Value;
             }
         }
 
@@ -389,7 +389,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.DisablePerformanceTweaks();
                 }
-                Options.CurrentOptions.EnablePerformanceTweaks = CurrentSilentConfig.Tweaks.EnablePerformanceTweaks.Value;
+                OptionsHelper.CurrentOptions.EnablePerformanceTweaks = CurrentSilentConfig.Tweaks.EnablePerformanceTweaks.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableNetworkThrottling.HasValue)
@@ -402,7 +402,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableNetworkThrottling();
                 }
-                Options.CurrentOptions.DisableNetworkThrottling = CurrentSilentConfig.Tweaks.DisableNetworkThrottling.Value;
+                OptionsHelper.CurrentOptions.DisableNetworkThrottling = CurrentSilentConfig.Tweaks.DisableNetworkThrottling.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableWindowsDefender.HasValue)
@@ -415,7 +415,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableDefender();
                 }
-                Options.CurrentOptions.DisableWindowsDefender = CurrentSilentConfig.Tweaks.DisableWindowsDefender.Value;
+                OptionsHelper.CurrentOptions.DisableWindowsDefender = CurrentSilentConfig.Tweaks.DisableWindowsDefender.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSystemRestore.HasValue)
@@ -428,7 +428,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSystemRestore();
                 }
-                Options.CurrentOptions.DisableSystemRestore = CurrentSilentConfig.Tweaks.DisableSystemRestore.Value;
+                OptionsHelper.CurrentOptions.DisableSystemRestore = CurrentSilentConfig.Tweaks.DisableSystemRestore.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisablePrintService.HasValue)
@@ -441,7 +441,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnablePrintService();
                 }
-                Options.CurrentOptions.DisablePrintService = CurrentSilentConfig.Tweaks.DisablePrintService.Value;
+                OptionsHelper.CurrentOptions.DisablePrintService = CurrentSilentConfig.Tweaks.DisablePrintService.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableMediaPlayerSharing.HasValue)
@@ -454,7 +454,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableMediaPlayerSharing();
                 }
-                Options.CurrentOptions.DisableMediaPlayerSharing = CurrentSilentConfig.Tweaks.DisableMediaPlayerSharing.Value;
+                OptionsHelper.CurrentOptions.DisableMediaPlayerSharing = CurrentSilentConfig.Tweaks.DisableMediaPlayerSharing.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableErrorReporting.HasValue)
@@ -467,7 +467,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableErrorReporting();
                 }
-                Options.CurrentOptions.DisableErrorReporting = CurrentSilentConfig.Tweaks.DisableErrorReporting.Value;
+                OptionsHelper.CurrentOptions.DisableErrorReporting = CurrentSilentConfig.Tweaks.DisableErrorReporting.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableHomeGroup.HasValue)
@@ -480,7 +480,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableHomeGroup();
                 }
-                Options.CurrentOptions.DisableHomeGroup = CurrentSilentConfig.Tweaks.DisableHomeGroup.Value;
+                OptionsHelper.CurrentOptions.DisableHomeGroup = CurrentSilentConfig.Tweaks.DisableHomeGroup.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSuperfetch.HasValue)
@@ -493,7 +493,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSuperfetch();
                 }
-                Options.CurrentOptions.DisableSuperfetch = CurrentSilentConfig.Tweaks.DisableSuperfetch.Value;
+                OptionsHelper.CurrentOptions.DisableSuperfetch = CurrentSilentConfig.Tweaks.DisableSuperfetch.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableTelemetryTasks.HasValue)
@@ -506,7 +506,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableTelemetryTasks();
                 }
-                Options.CurrentOptions.DisableTelemetryTasks = CurrentSilentConfig.Tweaks.DisableTelemetryTasks.Value;
+                OptionsHelper.CurrentOptions.DisableTelemetryTasks = CurrentSilentConfig.Tweaks.DisableTelemetryTasks.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableOffice2016Telemetry.HasValue)
@@ -519,7 +519,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableOffice2016Telemetry();
                 }
-                Options.CurrentOptions.DisableOffice2016Telemetry = CurrentSilentConfig.Tweaks.DisableOffice2016Telemetry.Value;
+                OptionsHelper.CurrentOptions.DisableOffice2016Telemetry = CurrentSilentConfig.Tweaks.DisableOffice2016Telemetry.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableCompatibilityAssistant.HasValue)
@@ -532,7 +532,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableCompatibilityAssistant();
                 }
-                Options.CurrentOptions.DisableCompatibilityAssistant = CurrentSilentConfig.Tweaks.DisableCompatibilityAssistant.Value;
+                OptionsHelper.CurrentOptions.DisableCompatibilityAssistant = CurrentSilentConfig.Tweaks.DisableCompatibilityAssistant.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableFaxService.HasValue)
@@ -545,7 +545,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableFaxService();
                 }
-                Options.CurrentOptions.DisableFaxService = CurrentSilentConfig.Tweaks.DisableFaxService.Value;
+                OptionsHelper.CurrentOptions.DisableFaxService = CurrentSilentConfig.Tweaks.DisableFaxService.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSmartScreen.HasValue)
@@ -558,7 +558,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSmartScreen();
                 }
-                Options.CurrentOptions.DisableSmartScreen = CurrentSilentConfig.Tweaks.DisableSmartScreen.Value;
+                OptionsHelper.CurrentOptions.DisableSmartScreen = CurrentSilentConfig.Tweaks.DisableSmartScreen.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableStickyKeys.HasValue)
@@ -571,7 +571,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableStickyKeys();
                 }
-                Options.CurrentOptions.DisableStickyKeys = CurrentSilentConfig.Tweaks.DisableStickyKeys.Value;
+                OptionsHelper.CurrentOptions.DisableStickyKeys = CurrentSilentConfig.Tweaks.DisableStickyKeys.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableHibernation.HasValue)
@@ -584,7 +584,7 @@ namespace Optimizer
                 {
                     Utilities.EnableHibernation();
                 }
-                Options.CurrentOptions.DisableHibernation = CurrentSilentConfig.Tweaks.DisableHibernation.Value;
+                OptionsHelper.CurrentOptions.DisableHibernation = CurrentSilentConfig.Tweaks.DisableHibernation.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSMB1.HasValue)
@@ -597,7 +597,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSMB("1");
                 }
-                Options.CurrentOptions.DisableSMB1 = CurrentSilentConfig.Tweaks.DisableSMB1.Value;
+                OptionsHelper.CurrentOptions.DisableSMB1 = CurrentSilentConfig.Tweaks.DisableSMB1.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSMB2.HasValue)
@@ -610,7 +610,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSMB("2");
                 }
-                Options.CurrentOptions.DisableSMB2 = CurrentSilentConfig.Tweaks.DisableSMB2.Value;
+                OptionsHelper.CurrentOptions.DisableSMB2 = CurrentSilentConfig.Tweaks.DisableSMB2.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableNTFSTimeStamp.HasValue)
@@ -623,7 +623,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableNTFSTimeStamp();
                 }
-                Options.CurrentOptions.DisableNTFSTimeStamp = CurrentSilentConfig.Tweaks.DisableNTFSTimeStamp.Value;
+                OptionsHelper.CurrentOptions.DisableNTFSTimeStamp = CurrentSilentConfig.Tweaks.DisableNTFSTimeStamp.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSearch.HasValue)
@@ -636,7 +636,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSearch();
                 }
-                Options.CurrentOptions.DisableSearch = CurrentSilentConfig.Tweaks.DisableSearch.Value;
+                OptionsHelper.CurrentOptions.DisableSearch = CurrentSilentConfig.Tweaks.DisableSearch.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableChromeTelemetry.HasValue)
@@ -649,7 +649,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableChromeTelemetry();
                 }
-                Options.CurrentOptions.DisableChromeTelemetry = CurrentSilentConfig.Tweaks.DisableChromeTelemetry.Value;
+                OptionsHelper.CurrentOptions.DisableChromeTelemetry = CurrentSilentConfig.Tweaks.DisableChromeTelemetry.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableFirefoxTemeletry.HasValue)
@@ -662,7 +662,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableFirefoxTelemetry();
                 }
-                Options.CurrentOptions.DisableFirefoxTemeletry = CurrentSilentConfig.Tweaks.DisableFirefoxTemeletry.Value;
+                OptionsHelper.CurrentOptions.DisableFirefoxTemeletry = CurrentSilentConfig.Tweaks.DisableFirefoxTemeletry.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableVisualStudioTelemetry.HasValue)
@@ -675,7 +675,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableVisualStudioTelemetry();
                 }
-                Options.CurrentOptions.DisableVisualStudioTelemetry = CurrentSilentConfig.Tweaks.DisableVisualStudioTelemetry.Value;
+                OptionsHelper.CurrentOptions.DisableVisualStudioTelemetry = CurrentSilentConfig.Tweaks.DisableVisualStudioTelemetry.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableNVIDIATelemetry.HasValue)
@@ -688,7 +688,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableNvidiaTelemetry();
                 }
-                Options.CurrentOptions.DisableNVIDIATelemetry = CurrentSilentConfig.Tweaks.DisableNVIDIATelemetry.Value;
+                OptionsHelper.CurrentOptions.DisableNVIDIATelemetry = CurrentSilentConfig.Tweaks.DisableNVIDIATelemetry.Value;
             }
         }
         #endregion
@@ -706,7 +706,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableOneDrive();
                 }
-                Options.CurrentOptions.DisableOneDrive = CurrentSilentConfig.Tweaks.DisableOneDrive.Value;
+                OptionsHelper.CurrentOptions.DisableOneDrive = CurrentSilentConfig.Tweaks.DisableOneDrive.Value;
             }
         }
         #endregion
@@ -724,7 +724,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.DisableGamingMode();
                 }
-                Options.CurrentOptions.EnableGamingMode = CurrentSilentConfig.Tweaks.EnableGamingMode.Value;
+                OptionsHelper.CurrentOptions.EnableGamingMode = CurrentSilentConfig.Tweaks.EnableGamingMode.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.EnableLegacyVolumeSlider.HasValue)
@@ -737,7 +737,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.DisableLegacyVolumeSlider();
                 }
-                Options.CurrentOptions.EnableLegacyVolumeSlider = CurrentSilentConfig.Tweaks.EnableLegacyVolumeSlider.Value;
+                OptionsHelper.CurrentOptions.EnableLegacyVolumeSlider = CurrentSilentConfig.Tweaks.EnableLegacyVolumeSlider.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableQuickAccessHistory.HasValue)
@@ -750,7 +750,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableQuickAccessHistory();
                 }
-                Options.CurrentOptions.DisableQuickAccessHistory = CurrentSilentConfig.Tweaks.DisableQuickAccessHistory.Value;
+                OptionsHelper.CurrentOptions.DisableQuickAccessHistory = CurrentSilentConfig.Tweaks.DisableQuickAccessHistory.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableStartMenuAds.HasValue)
@@ -763,7 +763,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableStartMenuAds();
                 }
-                Options.CurrentOptions.DisableStartMenuAds = CurrentSilentConfig.Tweaks.DisableStartMenuAds.Value;
+                OptionsHelper.CurrentOptions.DisableStartMenuAds = CurrentSilentConfig.Tweaks.DisableStartMenuAds.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.UninstallOneDrive.HasValue)
@@ -776,7 +776,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.InstallOneDrive();
                 }
-                Options.CurrentOptions.UninstallOneDrive = CurrentSilentConfig.Tweaks.UninstallOneDrive.Value;
+                OptionsHelper.CurrentOptions.UninstallOneDrive = CurrentSilentConfig.Tweaks.UninstallOneDrive.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableMyPeople.HasValue)
@@ -789,7 +789,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableMyPeople();
                 }
-                Options.CurrentOptions.DisableMyPeople = CurrentSilentConfig.Tweaks.DisableMyPeople.Value;
+                OptionsHelper.CurrentOptions.DisableMyPeople = CurrentSilentConfig.Tweaks.DisableMyPeople.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.EnableLongPaths.HasValue)
@@ -802,7 +802,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.DisableLongPaths();
                 }
-                Options.CurrentOptions.EnableLongPaths = CurrentSilentConfig.Tweaks.EnableLongPaths.Value;
+                OptionsHelper.CurrentOptions.EnableLongPaths = CurrentSilentConfig.Tweaks.EnableLongPaths.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableAutomaticUpdates.HasValue)
@@ -815,7 +815,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableAutomaticUpdates();
                 }
-                Options.CurrentOptions.DisableAutomaticUpdates = CurrentSilentConfig.Tweaks.DisableAutomaticUpdates.Value;
+                OptionsHelper.CurrentOptions.DisableAutomaticUpdates = CurrentSilentConfig.Tweaks.DisableAutomaticUpdates.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.ExcludeDrivers.HasValue)
@@ -828,7 +828,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.IncludeDrivers();
                 }
-                Options.CurrentOptions.ExcludeDrivers = CurrentSilentConfig.Tweaks.ExcludeDrivers.Value;
+                OptionsHelper.CurrentOptions.ExcludeDrivers = CurrentSilentConfig.Tweaks.ExcludeDrivers.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableTelemetryServices.HasValue)
@@ -841,7 +841,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableTelemetryServices();
                 }
-                Options.CurrentOptions.DisableTelemetryServices = CurrentSilentConfig.Tweaks.DisableTelemetryServices.Value;
+                OptionsHelper.CurrentOptions.DisableTelemetryServices = CurrentSilentConfig.Tweaks.DisableTelemetryServices.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisablePrivacyOptions.HasValue)
@@ -854,7 +854,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.CompromisePrivacy();
                 }
-                Options.CurrentOptions.DisablePrivacyOptions = CurrentSilentConfig.Tweaks.DisablePrivacyOptions.Value;
+                OptionsHelper.CurrentOptions.DisablePrivacyOptions = CurrentSilentConfig.Tweaks.DisablePrivacyOptions.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableCortana.HasValue)
@@ -867,7 +867,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableCortana();
                 }
-                Options.CurrentOptions.DisableCortana = CurrentSilentConfig.Tweaks.DisableCortana.Value;
+                OptionsHelper.CurrentOptions.DisableCortana = CurrentSilentConfig.Tweaks.DisableCortana.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSensorServices.HasValue)
@@ -880,7 +880,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSensorServices();
                 }
-                Options.CurrentOptions.DisableSensorServices = CurrentSilentConfig.Tweaks.DisableSensorServices.Value;
+                OptionsHelper.CurrentOptions.DisableSensorServices = CurrentSilentConfig.Tweaks.DisableSensorServices.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableWindowsInk.HasValue)
@@ -893,7 +893,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableWindowsInk();
                 }
-                Options.CurrentOptions.DisableWindowsInk = CurrentSilentConfig.Tweaks.DisableWindowsInk.Value;
+                OptionsHelper.CurrentOptions.DisableWindowsInk = CurrentSilentConfig.Tweaks.DisableWindowsInk.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSpellingTyping.HasValue)
@@ -906,7 +906,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSpellingAndTypingFeatures();
                 }
-                Options.CurrentOptions.DisableSpellingTyping = CurrentSilentConfig.Tweaks.DisableSpellingTyping.Value;
+                OptionsHelper.CurrentOptions.DisableSpellingTyping = CurrentSilentConfig.Tweaks.DisableSpellingTyping.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableXboxLive.HasValue)
@@ -919,7 +919,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableXboxLive();
                 }
-                Options.CurrentOptions.DisableXboxLive = CurrentSilentConfig.Tweaks.DisableXboxLive.Value;
+                OptionsHelper.CurrentOptions.DisableXboxLive = CurrentSilentConfig.Tweaks.DisableXboxLive.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableGameBar.HasValue)
@@ -932,7 +932,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableGameBar();
                 }
-                Options.CurrentOptions.DisableGameBar = CurrentSilentConfig.Tweaks.DisableGameBar.Value;
+                OptionsHelper.CurrentOptions.DisableGameBar = CurrentSilentConfig.Tweaks.DisableGameBar.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableInsiderService.HasValue)
@@ -945,7 +945,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableInsiderService();
                 }
-                Options.CurrentOptions.DisableInsiderService = CurrentSilentConfig.Tweaks.DisableInsiderService.Value;
+                OptionsHelper.CurrentOptions.DisableInsiderService = CurrentSilentConfig.Tweaks.DisableInsiderService.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableStoreUpdates.HasValue)
@@ -958,7 +958,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableStoreUpdates();
                 }
-                Options.CurrentOptions.DisableStoreUpdates = CurrentSilentConfig.Tweaks.DisableStoreUpdates.Value;
+                OptionsHelper.CurrentOptions.DisableStoreUpdates = CurrentSilentConfig.Tweaks.DisableStoreUpdates.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableCloudClipboard.HasValue)
@@ -971,7 +971,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableCloudClipboard();
                 }
-                Options.CurrentOptions.DisableCloudClipboard = CurrentSilentConfig.Tweaks.DisableCloudClipboard.Value;
+                OptionsHelper.CurrentOptions.DisableCloudClipboard = CurrentSilentConfig.Tweaks.DisableCloudClipboard.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.RemoveCastToDevice.HasValue)
@@ -984,7 +984,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.AddCastToDevice();
                 }
-                Options.CurrentOptions.RemoveCastToDevice = CurrentSilentConfig.Tweaks.RemoveCastToDevice.Value;
+                OptionsHelper.CurrentOptions.RemoveCastToDevice = CurrentSilentConfig.Tweaks.RemoveCastToDevice.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableEdgeTelemetry.HasValue)
@@ -997,7 +997,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableEdgeTelemetry();
                 }
-                Options.CurrentOptions.DisableEdgeTelemetry = CurrentSilentConfig.Tweaks.DisableEdgeTelemetry.Value;
+                OptionsHelper.CurrentOptions.DisableEdgeTelemetry = CurrentSilentConfig.Tweaks.DisableEdgeTelemetry.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableEdgeDiscoverBar.HasValue)
@@ -1010,7 +1010,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableEdgeDiscoverBar();
                 }
-                Options.CurrentOptions.DisableEdgeDiscoverBar = CurrentSilentConfig.Tweaks.DisableEdgeDiscoverBar.Value;
+                OptionsHelper.CurrentOptions.DisableEdgeDiscoverBar = CurrentSilentConfig.Tweaks.DisableEdgeDiscoverBar.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.RestoreClassicPhotoViewer.HasValue)
@@ -1023,7 +1023,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.DisableClassicPhotoViewer();
                 }
-                Options.CurrentOptions.RestoreClassicPhotoViewer = CurrentSilentConfig.Tweaks.RestoreClassicPhotoViewer.Value;
+                OptionsHelper.CurrentOptions.RestoreClassicPhotoViewer = CurrentSilentConfig.Tweaks.RestoreClassicPhotoViewer.Value;
             }
         }
         #endregion
@@ -1041,7 +1041,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.AlignTaskbarToCenter();
                 }
-                Options.CurrentOptions.TaskbarToLeft = CurrentSilentConfig.Tweaks.TaskbarToLeft.Value;
+                OptionsHelper.CurrentOptions.TaskbarToLeft = CurrentSilentConfig.Tweaks.TaskbarToLeft.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableStickers.HasValue)
@@ -1054,7 +1054,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableStickers();
                 }
-                Options.CurrentOptions.DisableStickers = CurrentSilentConfig.Tweaks.DisableStickers.Value;
+                OptionsHelper.CurrentOptions.DisableStickers = CurrentSilentConfig.Tweaks.DisableStickers.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.CompactMode.HasValue)
@@ -1067,7 +1067,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.DisableFilesCompactMode();
                 }
-                Options.CurrentOptions.CompactMode = CurrentSilentConfig.Tweaks.CompactMode.Value;
+                OptionsHelper.CurrentOptions.CompactMode = CurrentSilentConfig.Tweaks.CompactMode.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableSnapAssist.HasValue)
@@ -1080,7 +1080,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableSnapAssist();
                 }
-                Options.CurrentOptions.DisableSnapAssist = CurrentSilentConfig.Tweaks.DisableSnapAssist.Value;
+                OptionsHelper.CurrentOptions.DisableSnapAssist = CurrentSilentConfig.Tweaks.DisableSnapAssist.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableWidgets.HasValue)
@@ -1093,7 +1093,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableWidgets();
                 }
-                Options.CurrentOptions.DisableWidgets = CurrentSilentConfig.Tweaks.DisableWidgets.Value;
+                OptionsHelper.CurrentOptions.DisableWidgets = CurrentSilentConfig.Tweaks.DisableWidgets.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableChat.HasValue)
@@ -1106,22 +1106,20 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableChat();
                 }
-                Options.CurrentOptions.DisableChat = CurrentSilentConfig.Tweaks.DisableChat.Value;
+                OptionsHelper.CurrentOptions.DisableChat = CurrentSilentConfig.Tweaks.DisableChat.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableVirtualizationBasedTechnology.HasValue)
             {
                 if (CurrentSilentConfig.Tweaks.DisableVirtualizationBasedTechnology.Value)
                 {
-                    MessageBox.Show("no vbs");
-                    // OptimizeHelper.DisableVirtualizationBasedSecurity();
+                    OptimizeHelper.DisableVirtualizationBasedSecurity();
                 }
                 else
                 {
-                    MessageBox.Show("OK vbs");
-                    //OptimizeHelper.EnableVirtualizationBasedSecurity();
+                    OptimizeHelper.EnableVirtualizationBasedSecurity();
                 }
-                Options.CurrentOptions.DisableVBS = CurrentSilentConfig.Tweaks.DisableVirtualizationBasedTechnology.Value;
+                OptionsHelper.CurrentOptions.DisableVBS = CurrentSilentConfig.Tweaks.DisableVirtualizationBasedTechnology.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.ClassicMenu.HasValue)
@@ -1134,7 +1132,7 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableShowMoreOptions();
                 }
-                Options.CurrentOptions.ClassicMenu = CurrentSilentConfig.Tweaks.ClassicMenu.Value;
+                OptionsHelper.CurrentOptions.ClassicMenu = CurrentSilentConfig.Tweaks.ClassicMenu.Value;
             }
 
             if (CurrentSilentConfig.Tweaks.DisableTPMCheck.HasValue)
@@ -1147,7 +1145,20 @@ namespace Optimizer
                 {
                     OptimizeHelper.EnableTPMCheck();
                 }
-                Options.CurrentOptions.DisableTPMCheck = CurrentSilentConfig.Tweaks.DisableTPMCheck.Value;
+                OptionsHelper.CurrentOptions.DisableTPMCheck = CurrentSilentConfig.Tweaks.DisableTPMCheck.Value;
+            }
+
+            if (CurrentSilentConfig.Tweaks.DisableCoPilotAI.HasValue)
+            {
+                if (CurrentSilentConfig.Tweaks.DisableCoPilotAI.Value)
+                {
+                    OptimizeHelper.DisableCoPilotAI();
+                }
+                else
+                {
+                    OptimizeHelper.EnableCoPilotAI();
+                }
+                OptionsHelper.CurrentOptions.DisableCoPilotAI = CurrentSilentConfig.Tweaks.DisableCoPilotAI.Value;
             }
         }
         #endregion

+ 0 - 21
Optimizer/StartupBackupItem.cs

@@ -1,21 +0,0 @@
-using System;
-
-namespace Optimizer
-{
-    [Serializable]
-    public sealed class StartupBackupItem
-    {
-        public string Name { get; set; }
-        public string FileLocation { get; set; }
-        public string RegistryLocation { get; set; }
-        public string StartupType { get; set; }
-
-        public StartupBackupItem(string n, string fl, string rl, string st)
-        {
-            Name = n;
-            FileLocation = fl;
-            RegistryLocation = rl;
-            StartupType = st;
-        }
-    }
-}

+ 15 - 11
Optimizer/StartupHelper.cs

@@ -100,7 +100,7 @@ namespace Optimizer
             }
         }
 
-        private static void GetFolderStartupItemsHelper(ref List<StartupItem> list, string[] files, string[] shortcuts)
+        private static void GetFolderStartupItemsHelper(ref List<StartupItem> list, IEnumerable<string> files, IEnumerable<string> shortcuts, StartupItemLocation folderOrigin)
         {
             foreach (string file in files)
             {
@@ -110,7 +110,7 @@ namespace Optimizer
                     item.Name = Path.GetFileNameWithoutExtension(file);
                     item.FileLocation = file;
                     item.Shortcut = file;
-                    item.RegistryLocation = StartupItemLocation.Folder;
+                    item.RegistryLocation = folderOrigin;
 
                     list.Add(item);
                 }
@@ -128,7 +128,7 @@ namespace Optimizer
                     item.Name = Path.GetFileNameWithoutExtension(shortcut);
                     item.FileLocation = Utilities.GetShortcutTargetFile(shortcut);
                     item.Shortcut = shortcut;
-                    item.RegistryLocation = StartupItemLocation.Folder;
+                    item.RegistryLocation = folderOrigin;
 
                     list.Add(item);
                 }
@@ -157,18 +157,22 @@ namespace Optimizer
 
             if (Directory.Exists(CurrentUserStartupFolder))
             {
-                string[] currentUserFiles = Directory.EnumerateFiles(CurrentUserStartupFolder, "*.*", SearchOption.AllDirectories)
-                .Where(s => s.EndsWith(".exe") || s.EndsWith(".bat")).ToArray();
-                string[] currentUserShortcuts = Directory.GetFiles(CurrentUserStartupFolder, "*.lnk", SearchOption.AllDirectories);
-                GetFolderStartupItemsHelper(ref startupItems, currentUserFiles, currentUserShortcuts);
+                IEnumerable<string> currentUserFiles = Directory.EnumerateFiles(CurrentUserStartupFolder, "*.*", SearchOption.AllDirectories)
+                    .Where(s => s.EndsWith(".exe") || s.EndsWith(".bat") || s.EndsWith(".cmd"));
+
+                IEnumerable<string> currentUserShortcuts = Directory.GetFiles(CurrentUserStartupFolder, "*.lnk", SearchOption.AllDirectories);
+
+                GetFolderStartupItemsHelper(ref startupItems, currentUserFiles, currentUserShortcuts, StartupItemLocation.CUStartupFolder);
             }
 
             if (Directory.Exists(LocalMachineStartupFolder))
             {
-                string[] localMachineFiles = Directory.EnumerateFiles(LocalMachineStartupFolder, "*.*", SearchOption.AllDirectories)
-                .Where(s => s.EndsWith(".exe") || s.EndsWith(".bat")).ToArray();
-                string[] localMachineShortcuts = Directory.GetFiles(LocalMachineStartupFolder, "*.lnk", SearchOption.AllDirectories);
-                GetFolderStartupItemsHelper(ref startupItems, localMachineFiles, localMachineShortcuts);
+                IEnumerable<string> localMachineFiles = Directory.EnumerateFiles(LocalMachineStartupFolder, "*.*", SearchOption.AllDirectories)
+                    .Where(s => s.EndsWith(".exe") || s.EndsWith(".bat") || s.EndsWith(".cmd"));
+
+                IEnumerable<string> localMachineShortcuts = Directory.GetFiles(LocalMachineStartupFolder, "*.lnk", SearchOption.AllDirectories);
+
+                GetFolderStartupItemsHelper(ref startupItems, localMachineFiles, localMachineShortcuts, StartupItemLocation.LMStartupFolder);
             }
 
             return startupItems;

+ 5 - 5
Optimizer/TokenPrivilege.cs → Optimizer/TokenPrivilegeHelper.cs

@@ -7,7 +7,7 @@ namespace Optimizer
     /*
      *  Allows clients to obtain a Windows token privilege for a well-defined scope simply by "using" an instance of this class.
      */
-    sealed class TokenPrivilege : IDisposable
+    sealed class TokenPrivilegeHelper : IDisposable
     {
         private enum PrivilegeAction : uint
         {
@@ -15,13 +15,13 @@ namespace Optimizer
             Enable = 0x2
         }
 
-        public static TokenPrivilege Backup => new TokenPrivilege("SeBackupPrivilege");
-        public static TokenPrivilege Restore => new TokenPrivilege("SeRestorePrivilege");
-        public static TokenPrivilege TakeOwnership => new TokenPrivilege("SeTakeOwnershipPrivilege");
+        public static TokenPrivilegeHelper Backup => new TokenPrivilegeHelper("SeBackupPrivilege");
+        public static TokenPrivilegeHelper Restore => new TokenPrivilegeHelper("SeRestorePrivilege");
+        public static TokenPrivilegeHelper TakeOwnership => new TokenPrivilegeHelper("SeTakeOwnershipPrivilege");
 
         private readonly string privilegeName;
 
-        private TokenPrivilege(string privilegeName)
+        private TokenPrivilegeHelper(string privilegeName)
         {
             this.privilegeName = privilegeName;
             Apply(PrivilegeAction.Enable);

+ 0 - 30
Optimizer/UserFoldersHelper.cs

@@ -1,30 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Runtime.InteropServices;
-
-namespace Optimizer
-{
-    internal static class KnownFolders
-    {
-        private static readonly Dictionary<KnownFolder, Guid> _guids = new Dictionary<KnownFolder, Guid>
-        {
-            [KnownFolder.Contacts] = new Guid("56784854-C6CB-462B-8169-88E350ACB882"),
-            [KnownFolder.Downloads] = new Guid("374DE290-123F-4565-9164-39C4925E467B"),
-            [KnownFolder.Favorites] = new Guid("1777F761-68AD-4D8A-87BD-30B759FA33DD"),
-            [KnownFolder.Links] = new Guid("BFB9D5E0-C6A9-404C-B2B2-AE6DB6AF4968"),
-            [KnownFolder.SavedGames] = new Guid("4C5C32FF-BB9D-43B0-B5B4-2D72E54EAAA4"),
-            [KnownFolder.SavedSearches] = new Guid("7D1D3A04-DEBB-4115-95CF-2F29DA2920DA")
-        };
-
-        internal static string GetPath(KnownFolder knownFolder)
-        {
-            return SHGetKnownFolderPath(_guids[knownFolder], 0);
-        }
-
-        [DllImport("shell32",
-            CharSet = CharSet.Unicode, ExactSpelling = true, PreserveSig = false)]
-        private static extern string SHGetKnownFolderPath(
-            [MarshalAs(UnmanagedType.LPStruct)] Guid rfid, uint dwFlags,
-            uint hToken = 0);
-    }
-}

+ 105 - 19
Optimizer/Utilities.cs

@@ -1,5 +1,4 @@
 using Microsoft.Win32;
-using Newtonsoft.Json.Linq;
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
@@ -10,7 +9,6 @@ using System.Reflection;
 using System.Security.AccessControl;
 using System.Security.Principal;
 using System.ServiceProcess;
-using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Windows.Forms;
@@ -236,7 +234,7 @@ namespace Optimizer
 
         internal static void Reboot()
         {
-            Options.SaveSettings();
+            OptionsHelper.SaveSettings();
             Process.Start("shutdown.exe", "/r /t 0");
         }
 
@@ -511,7 +509,7 @@ namespace Optimizer
 
         internal static void DisableProtectedService(string serviceName)
         {
-            using (TokenPrivilege.TakeOwnership)
+            using (TokenPrivilegeHelper.TakeOwnership)
             {
                 using (RegistryKey allServicesKey = Registry.LocalMachine.OpenSubKeyWritable(@"SYSTEM\CurrentControlSet\Services"))
                 {
@@ -558,7 +556,7 @@ namespace Optimizer
 
         internal static void EnableProtectedService(string serviceName)
         {
-            using (TokenPrivilege.TakeOwnership)
+            using (TokenPrivilegeHelper.TakeOwnership)
             {
                 using (RegistryKey allServicesKey = Registry.LocalMachine.OpenSubKeyWritable(@"SYSTEM\CurrentControlSet\Services"))
                 {
@@ -840,23 +838,111 @@ namespace Optimizer
             }
         }
 
-        // for debugging purposes
-        internal static void FindDiffInTwoJsons()
+        internal static string GetUserDownloadsFolder()
         {
-            JObject file1 = JObject.Parse(Properties.Resources.EN);
-            JObject file2 = JObject.Parse(Properties.Resources.NE);
-
-            var p1 = file1.Properties().ToList();
-            var p2 = file2.Properties().ToList();
-
-            var missingProps = p1.Where(expected => p2.Where(actual => actual.Name == expected.Name).Count() == 0);
-
-            StringBuilder sb = new StringBuilder();
-            foreach (var x in missingProps)
+            try
+            {
+                return Registry.GetValue(@"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", "{374DE290-123F-4565-9164-39C4925E467B}", string.Empty).ToString();
+            }
+            catch (Exception ex)
             {
-                sb.Append(x.Name + Environment.NewLine);
+                Logger.LogError("Utilities.GetUserDownloadsFolder", ex.Message, ex.StackTrace);
+                return string.Empty;
+            }
+        }
+
+        internal static void ReinforceCurrentTweaks()
+        {
+            SilentConfig silentConfig = new SilentConfig();
+            #region Windows General
+            silentConfig.Tweaks.EnablePerformanceTweaks = OptionsHelper.CurrentOptions.EnablePerformanceTweaks;
+            silentConfig.Tweaks.DisableNetworkThrottling = OptionsHelper.CurrentOptions.DisableNetworkThrottling;
+            silentConfig.Tweaks.DisableWindowsDefender = OptionsHelper.CurrentOptions.DisableWindowsDefender;
+            silentConfig.Tweaks.DisableSystemRestore = OptionsHelper.CurrentOptions.DisableSystemRestore;
+            silentConfig.Tweaks.DisablePrintService = OptionsHelper.CurrentOptions.DisablePrintService;
+            silentConfig.Tweaks.DisableMediaPlayerSharing = OptionsHelper.CurrentOptions.DisableMediaPlayerSharing;
+            silentConfig.Tweaks.DisableErrorReporting = OptionsHelper.CurrentOptions.DisableErrorReporting;
+            silentConfig.Tweaks.DisableHomeGroup = OptionsHelper.CurrentOptions.DisableHomeGroup;
+            silentConfig.Tweaks.DisableSuperfetch = OptionsHelper.CurrentOptions.DisableSuperfetch;
+            silentConfig.Tweaks.DisableTelemetryTasks = OptionsHelper.CurrentOptions.DisableTelemetryTasks;
+            silentConfig.Tweaks.DisableOffice2016Telemetry = OptionsHelper.CurrentOptions.DisableOffice2016Telemetry;
+            silentConfig.Tweaks.DisableCompatibilityAssistant = OptionsHelper.CurrentOptions.DisableCompatibilityAssistant;
+            silentConfig.Tweaks.DisableHibernation = OptionsHelper.CurrentOptions.DisableHibernation;
+            silentConfig.Tweaks.DisableSMB1 = OptionsHelper.CurrentOptions.DisableSMB1;
+            silentConfig.Tweaks.DisableSMB2 = OptionsHelper.CurrentOptions.DisableSMB2;
+            silentConfig.Tweaks.DisableNTFSTimeStamp = OptionsHelper.CurrentOptions.DisableNTFSTimeStamp;
+            silentConfig.Tweaks.DisableFaxService = OptionsHelper.CurrentOptions.DisableFaxService;
+            silentConfig.Tweaks.DisableSmartScreen = OptionsHelper.CurrentOptions.DisableSmartScreen;
+            silentConfig.Tweaks.DisableStickyKeys = OptionsHelper.CurrentOptions.DisableStickyKeys;
+            silentConfig.Tweaks.DisableVisualStudioTelemetry = OptionsHelper.CurrentOptions.DisableVisualStudioTelemetry;
+            silentConfig.Tweaks.DisableFirefoxTemeletry = OptionsHelper.CurrentOptions.DisableFirefoxTemeletry;
+            silentConfig.Tweaks.DisableChromeTelemetry = OptionsHelper.CurrentOptions.DisableChromeTelemetry;
+            silentConfig.Tweaks.DisableNVIDIATelemetry = OptionsHelper.CurrentOptions.DisableNVIDIATelemetry;
+            silentConfig.Tweaks.DisableSearch = OptionsHelper.CurrentOptions.DisableSearch;
+            #endregion
+            #region Windows 8.1
+            silentConfig.Tweaks.DisableOneDrive = OptionsHelper.CurrentOptions.DisableOneDrive;
+            #endregion
+            #region Windows 10
+            silentConfig.Tweaks.DisableCloudClipboard = OptionsHelper.CurrentOptions.DisableCloudClipboard;
+            silentConfig.Tweaks.EnableLegacyVolumeSlider = OptionsHelper.CurrentOptions.EnableLegacyVolumeSlider;
+            silentConfig.Tweaks.DisableQuickAccessHistory = OptionsHelper.CurrentOptions.DisableQuickAccessHistory;
+            silentConfig.Tweaks.DisableStartMenuAds = OptionsHelper.CurrentOptions.DisableStartMenuAds;
+            silentConfig.Tweaks.UninstallOneDrive = OptionsHelper.CurrentOptions.UninstallOneDrive;
+            silentConfig.Tweaks.DisableMyPeople = OptionsHelper.CurrentOptions.DisableMyPeople;
+            silentConfig.Tweaks.DisableAutomaticUpdates = OptionsHelper.CurrentOptions.DisableAutomaticUpdates;
+            silentConfig.Tweaks.ExcludeDrivers = OptionsHelper.CurrentOptions.ExcludeDrivers;
+            silentConfig.Tweaks.DisableTelemetryServices = OptionsHelper.CurrentOptions.DisableTelemetryServices;
+            silentConfig.Tweaks.DisablePrivacyOptions = OptionsHelper.CurrentOptions.DisablePrivacyOptions;
+            silentConfig.Tweaks.DisableCortana = OptionsHelper.CurrentOptions.DisableCortana;
+            silentConfig.Tweaks.DisableSensorServices = OptionsHelper.CurrentOptions.DisableSensorServices;
+            silentConfig.Tweaks.DisableWindowsInk = OptionsHelper.CurrentOptions.DisableWindowsInk;
+            silentConfig.Tweaks.DisableSpellingTyping = OptionsHelper.CurrentOptions.DisableSpellingTyping;
+            silentConfig.Tweaks.DisableXboxLive = OptionsHelper.CurrentOptions.DisableXboxLive;
+            silentConfig.Tweaks.DisableGameBar = OptionsHelper.CurrentOptions.DisableGameBar;
+            silentConfig.Tweaks.DisableInsiderService = OptionsHelper.CurrentOptions.DisableInsiderService;
+            silentConfig.Tweaks.DisableStoreUpdates = OptionsHelper.CurrentOptions.DisableStoreUpdates;
+            silentConfig.Tweaks.EnableLongPaths = OptionsHelper.CurrentOptions.EnableLongPaths;
+            silentConfig.Tweaks.RemoveCastToDevice = OptionsHelper.CurrentOptions.RemoveCastToDevice;
+            silentConfig.Tweaks.EnableGamingMode = OptionsHelper.CurrentOptions.EnableGamingMode;
+            silentConfig.Tweaks.DisableTPMCheck = OptionsHelper.CurrentOptions.DisableTPMCheck;
+            silentConfig.Tweaks.DisableVirtualizationBasedTechnology = OptionsHelper.CurrentOptions.DisableVBS;
+            silentConfig.Tweaks.DisableEdgeDiscoverBar = OptionsHelper.CurrentOptions.DisableEdgeDiscoverBar;
+            silentConfig.Tweaks.DisableEdgeTelemetry = OptionsHelper.CurrentOptions.DisableEdgeTelemetry;
+            silentConfig.Tweaks.RestoreClassicPhotoViewer = OptionsHelper.CurrentOptions.RestoreClassicPhotoViewer;
+            #endregion
+            #region Windows 11
+            silentConfig.Tweaks.TaskbarToLeft = OptionsHelper.CurrentOptions.TaskbarToLeft;
+            silentConfig.Tweaks.DisableStickers = OptionsHelper.CurrentOptions.DisableStickers;
+            silentConfig.Tweaks.CompactMode = OptionsHelper.CurrentOptions.CompactMode;
+            silentConfig.Tweaks.DisableSnapAssist = OptionsHelper.CurrentOptions.DisableSnapAssist;
+            silentConfig.Tweaks.DisableWidgets = OptionsHelper.CurrentOptions.DisableWidgets;
+            silentConfig.Tweaks.DisableChat = OptionsHelper.CurrentOptions.DisableChat;
+            silentConfig.Tweaks.ClassicMenu = OptionsHelper.CurrentOptions.ClassicMenu;
+            silentConfig.Tweaks.DisableCoPilotAI = OptionsHelper.CurrentOptions.DisableCoPilotAI;
+            #endregion
+            SilentOps.CurrentSilentConfig = silentConfig;
+
+            if (CurrentWindowsVersion == WindowsVersion.Windows7)
+            {
+                SilentOps.ProcessTweaksGeneral();
+            }
+            if (CurrentWindowsVersion == WindowsVersion.Windows8)
+            {
+                SilentOps.ProcessTweaksGeneral();
+                SilentOps.ProcessTweaksWindows8();
+            }
+            if (CurrentWindowsVersion == WindowsVersion.Windows10)
+            {
+                SilentOps.ProcessTweaksGeneral();
+                SilentOps.ProcessTweaksWindows10();
+            }
+            if (CurrentWindowsVersion == WindowsVersion.Windows11)
+            {
+                SilentOps.ProcessTweaksGeneral();
+                SilentOps.ProcessTweaksWindows10();
+                SilentOps.ProcessTweaksWindows11();
             }
-            MessageBox.Show(sb.ToString());
         }
     }
 }

+ 7 - 4
README.md

@@ -3,7 +3,7 @@
 </p>
 
 <p align="center">
-	<a href="https://github.com/hellzerg/optimizer/releases/download/15.8/Optimizer-15.8.exe" target="_blank">
+	<a href="https://github.com/hellzerg/optimizer/releases/download/15.9/Optimizer-15.9.exe" target="_blank">
 		<img src="https://raw.githubusercontent.com/hellzerg/optimizer/master/download-button.png">
 		<br>
 		<img src="https://raw.githubusercontent.com/hellzerg/optimizer/master/flags.png">
@@ -20,13 +20,14 @@ Welcome to Optimizer, an advanced configuration utility designed to enhance your
 <h2> 🏗️ Key Features:</h2> 
 </center>
 
-- Full multilingual support (22 languages available)
+- Full multilingual support (24 languages available)
 - Enhance system and network performance
 - Disable unnecessary Windows services
 - Turn off Windows telemetry, Cortana, and more
 - Disable Office telemetry (works with Office 2016 or newer)
 - Stop automatic Windows 10 updates
 - Download multiple useful apps quickly
+- Disable CoPilot AI in Windows 11
 - Uninstall UWP apps
 - Clean system drive and browser profiles
 - Fix common registry issues
@@ -104,8 +105,8 @@ Learn about our security measures in the [Security Policy](https://github.com/he
 <h2> 📊 Details</h2> 
 </center>
 
-- Latest version: 15.8 (Released: August 26, 2023)
-- SHA256: 2839B3E6F7BD5B3F530C2C4283CA5B16F6231358660A3AC05066FD432EAB9BC9
+- Latest version: 15.9 (Released: October 14, 2023)
+- SHA256: 3708EC060E9DAF200F8B97950D210467951FC6FEAB214E679B4FE59601F14811
 
 <center>
 <h2> ☕ Buy me a delicious espresso</h2>
@@ -153,6 +154,8 @@ We'd like to extend our gratitude to the following contributors for their transl
 - Hungarian: Zan
 - Farsi: MjavadH
 - Nepali: chapagetti
+- Hellenic
+- Bulgarian
 
 <center>
 <h2> ❤️ Contribute with a translation</h2>

+ 1 - 0
templates/template-windows11.json

@@ -134,6 +134,7 @@
         "DisableSearch": null,
         "DisableEdgeDiscoverBar": null,
         "DisableEdgeTelemetry": null,
+        "DisableCoPilotAI": null,
         "RestoreClassicPhotoViewer": null
     }
 }

+ 1 - 1
version.txt

@@ -1 +1 @@
-15.8
+15.9

Some files were not shown because too many files changed in this diff