From 84a00bd073672e12e605436d255dfc721dfc0e8c Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Fri, 2 Sep 2022 00:02:59 -0700 Subject: [PATCH 01/16] adding feature to changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 458b1ff..e49bafe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ * Added Get Command feature to list after media ingestion has started * Added write subs to file option * Updated authentication section UI in ingestion dialog +* Fix uninstaller missing some files # v0.8.0 From d544cee9f0fd0aadf687855b9f7541854b6786e6 Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Fri, 2 Sep 2022 00:05:37 -0700 Subject: [PATCH 02/16] adding feature to changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e49bafe..d65537f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,8 @@ * Added Get Command feature to list after media ingestion has started * Added write subs to file option * Updated authentication section UI in ingestion dialog -* Fix uninstaller missing some files +* Fix uninstaller missing some files' +* Add video thumbnail as icon in list items when downloading or transcoding # v0.8.0 From f6e15b1e7a773bc99cf66153fb7331bfe147ee64 Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Fri, 2 Sep 2022 00:08:31 -0700 Subject: [PATCH 03/16] adding feature to changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d65537f..0b498f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ * Updated authentication section UI in ingestion dialog * Fix uninstaller missing some files' * Add video thumbnail as icon in list items when downloading or transcoding +* Fixed issue with media not opening when double clicking item after it's completed # v0.8.0 From 4e21aec50c9cf9f745fe71b9dddaa9ea3d2ec025 Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Fri, 2 Sep 2022 00:17:56 -0700 Subject: [PATCH 04/16] adding feature to changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b498f0..c4f6269 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * Fix uninstaller missing some files' * Add video thumbnail as icon in list items when downloading or transcoding * Fixed issue with media not opening when double clicking item after it's completed +* Fixed update check issue when app starts up # v0.8.0 From 6a384a0473d32419e31d01793714dca58fa33ccd Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Fri, 2 Sep 2022 00:28:42 -0700 Subject: [PATCH 05/16] adding feature to changelog --- install/CREATE_INSTALLER.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/install/CREATE_INSTALLER.md b/install/CREATE_INSTALLER.md index 0fa99d3..a84a1d3 100644 --- a/install/CREATE_INSTALLER.md +++ b/install/CREATE_INSTALLER.md @@ -6,5 +6,7 @@ - [AtomicParsley.exe](http://atomicparsley.sourceforge.net/) - [vcredist_x86.exe](https://www.microsoft.com/en-us/download/details.aspx?id=5555) - [windowsdesktop-runtime-6.0.8-win-x64.exe](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) -* Compile Release version of app +* Compile and build Release version of app within Visual Studio +* Increment the version within installer.nsi, version file at root, and in AssemblyInfo in *.csproj * Use NSIS to compile `installer.nsi` +* Installer should be generated within install/ \ No newline at end of file From 3a20926e0be8ff53e61720e438e5a6615aa7d7be Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Fri, 2 Sep 2022 13:46:16 -0700 Subject: [PATCH 06/16] adding feature to changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4f6269..8901521 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,8 @@ * Add video thumbnail as icon in list items when downloading or transcoding * Fixed issue with media not opening when double clicking item after it's completed * Fixed update check issue when app starts up +* Use workspace area for files still being downloaded or transcoded +* Improved media ingestion format selection UI/UX # v0.8.0 From 5afaa4d8db2533e22c5f967cb0a00f388ae84629 Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Sat, 3 Sep 2022 14:06:06 -0700 Subject: [PATCH 07/16] moved settings out of winform. fixed yt-dlp not auto updating. added dialog when yt-dlp is auto updated --- CHANGELOG.md | 3 ++ src/Settings.cs | 31 ++++++++++++++++++++ src/YouTubeDL.cs | 12 +++++++- src/models/{Settings.cs => SettingsModel.cs} | 9 ++++-- views/FrameMain.cs | 24 +++++---------- views/FrameNewMedia.cs | 5 ++-- views/FrameNewMediaBatch.cs | 5 ++-- views/FrameSettings.cs | 16 +++++----- 8 files changed, 72 insertions(+), 33 deletions(-) create mode 100644 src/Settings.cs rename src/models/{Settings.cs => SettingsModel.cs} (75%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8901521..ebdb497 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,9 @@ # v0.8.0 +* Fixed issue with yt-dlp not auto updating +* Added dialog when yt-dlp is automatically updated +* Moved Settings into a centralized place and out of WinForms * Upgraded .NET framework to 6.x from 4.x. * Fixed various bugs in order to improve stability * Upgraded ffmpeg from 4.2.1 to 5.1 diff --git a/src/Settings.cs b/src/Settings.cs new file mode 100644 index 0000000..6c105c1 --- /dev/null +++ b/src/Settings.cs @@ -0,0 +1,31 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace JackTheVideoRipper.src +{ + internal class Settings + { + public static SettingsModel Data; + + public static void Save() + { + File.WriteAllText(SettingsModel.filePath, JsonConvert.SerializeObject(Data)); + } + + public static void Load() + { + if (!SettingsModel.Exists()) + { + Directory.CreateDirectory(SettingsModel.dir); + File.WriteAllText(SettingsModel.filePath, JsonConvert.SerializeObject(SettingsModel.generateDefaultSettings())); + } + + var json = File.ReadAllText(SettingsModel.filePath); + Data = JsonConvert.DeserializeObject(json); + } + } +} diff --git a/src/YouTubeDL.cs b/src/YouTubeDL.cs index 87dca8d..e8e6fbf 100644 --- a/src/YouTubeDL.cs +++ b/src/YouTubeDL.cs @@ -4,6 +4,7 @@ using System.IO; using System.Net; using System.Security.AccessControl; +using JackTheVideoRipper.src; using Newtonsoft.Json; using static System.Environment; @@ -53,7 +54,16 @@ public static void checkForUpdates() { if (isInstalled()) { - CLI.runCommand(binName + " -U"); + CLI.runCommand(binName + " -U", YouTubeDL.installPath); + var previousVersion = Settings.Data.lastVersionYouTubeDL; + var currentVersion = getVersion(); + + if (previousVersion != currentVersion) + { + Settings.Data.lastVersionYouTubeDL = currentVersion; + Settings.Save(); + MessageBox.Show(String.Format("Dependency yt-dlp has been upgraded from {0} to {1}!", previousVersion, currentVersion), "yt-dlp update", MessageBoxButtons.OK, MessageBoxIcon.Information); + } } } diff --git a/src/models/Settings.cs b/src/models/SettingsModel.cs similarity index 75% rename from src/models/Settings.cs rename to src/models/SettingsModel.cs index 47ad35c..e25ea26 100644 --- a/src/models/Settings.cs +++ b/src/models/SettingsModel.cs @@ -9,23 +9,26 @@ namespace JackTheVideoRipper { - public class Settings + public class SettingsModel { public static string dir = String.Format("{0}\\JackTheVideoRipper\\settings", Environment.GetFolderPath(SpecialFolder.CommonApplicationData)); public static string filePath = String.Format("{0}\\settings.json", dir); public string defaultDownloadPath { get; set; } public int maxConcurrentDownloads { get; set; } + public string lastVersionYouTubeDL { get; set; } public static bool Exists() { return File.Exists(filePath); } - public static Settings generateDefaultSettings() + public static SettingsModel generateDefaultSettings() { - var s = new Settings(); + var s = new SettingsModel(); s.defaultDownloadPath = YouTubeDL.defaultDownloadPath; s.maxConcurrentDownloads = 5; + s.lastVersionYouTubeDL = ""; + return s; } } diff --git a/views/FrameMain.cs b/views/FrameMain.cs index 029a1e7..ed8c235 100644 --- a/views/FrameMain.cs +++ b/views/FrameMain.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json; +using JackTheVideoRipper.src; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Diagnostics; @@ -12,8 +13,6 @@ namespace JackTheVideoRipper { public partial class FrameMain : Form { - public static Settings settings; - private static Dictionary dict = new Dictionary(); private static System.Threading.Timer listItemRowsUpdateTimer; @@ -55,14 +54,7 @@ private void checkDependencies() private void loadConfig() { - if (!Settings.Exists()) - { - Directory.CreateDirectory(Settings.dir); - File.WriteAllText(Settings.filePath, JsonConvert.SerializeObject(Settings.generateDefaultSettings())); - } - - var json = File.ReadAllText(Settings.filePath); - settings = JsonConvert.DeserializeObject(json); + Settings.Load(); } private void FrameMain_Load(object sender, EventArgs e) @@ -281,7 +273,7 @@ private void openFolderToolStripMenuItem_Click(object sender, EventArgs e) // couldn't find folder, rolling back to just the folder with no select Console.WriteLine(String.Format("couldn't find file to open at {0}", filePath)); - Common.openFolder(settings.defaultDownloadPath); + Common.openFolder(Settings.Data.defaultDownloadPath); } private void listItems_MouseClick(object sender, MouseEventArgs e) @@ -468,7 +460,7 @@ private void downloadVS2010RedistributableToolStripMenuItem_Click(object sender, private void openDownloadFolderToolStripMenuItem_Click(object sender, EventArgs e) { - Common.openFolder(settings.defaultDownloadPath); + Common.openFolder(Settings.Data.defaultDownloadPath); } private void downloadBatchManualToolStripMenuItem_Click(object sender, EventArgs e) @@ -498,7 +490,7 @@ private void downloadBatchManualToolStripMenuItem_Click(object sender, EventArgs private void queueBatchDownloads() { - for (int i = 0; i < settings.maxConcurrentDownloads; i++) + for (int i = 0; i < Settings.Data.maxConcurrentDownloads; i++) { Application.DoEvents(); System.Threading.Thread.Sleep(300); @@ -509,7 +501,7 @@ private void queueBatchDownloads() private void downloadBatchDocumentToolStripMenuItem_Click(object sender, EventArgs e) { var d = new OpenFileDialog(); - d.InitialDirectory = settings.defaultDownloadPath; + d.InitialDirectory = Settings.Data.defaultDownloadPath; d.Filter = "All Files (*.*)|*.*"; if (d.ShowDialog() == DialogResult.OK) @@ -583,7 +575,7 @@ private void timerProcessLimit_Tick(object sender, EventArgs e) if (total - done > 0) { - if (active < settings.maxConcurrentDownloads) + if (active < Settings.Data.maxConcurrentDownloads) { foreach (var pur in dict.Values) { diff --git a/views/FrameNewMedia.cs b/views/FrameNewMedia.cs index 361eb91..553386d 100644 --- a/views/FrameNewMedia.cs +++ b/views/FrameNewMedia.cs @@ -1,4 +1,5 @@ -using System; +using JackTheVideoRipper.src; +using System; using System.Collections.Generic; using System.Text.RegularExpressions; using System.Threading.Tasks; @@ -83,7 +84,7 @@ private void ingestMediaUrl() labelTitle.Text = info.title; labelDescription.Text = info.description; // TODO: may need to be revised now that using --restrict-filenames flag in youtube-dl - textLocation.Text = FrameMain.settings.defaultDownloadPath + "\\" + String.Format("{0}{1}", Common.stripIllegalFileNameChars(info.filename.Substring(0, info.filename.LastIndexOf('.'))), info.filename.Substring(info.filename.LastIndexOf('.'))); + textLocation.Text = Settings.Data.defaultDownloadPath + "\\" + String.Format("{0}{1}", Common.stripIllegalFileNameChars(info.filename.Substring(0, info.filename.LastIndexOf('.'))), info.filename.Substring(info.filename.LastIndexOf('.'))); if (info.formats != null && info.formats.Count > 0) { diff --git a/views/FrameNewMediaBatch.cs b/views/FrameNewMediaBatch.cs index 3e4df69..67f5227 100644 --- a/views/FrameNewMediaBatch.cs +++ b/views/FrameNewMediaBatch.cs @@ -1,4 +1,5 @@ -using System; +using JackTheVideoRipper.src; +using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; @@ -40,7 +41,7 @@ private void FrameNewMediaBatch_Load(object sender, EventArgs e) textUrls.Text = this.startUrls; } - textLocation.Text = FrameMain.settings.defaultDownloadPath; + textLocation.Text = Settings.Data.defaultDownloadPath; cbAudioQuality.SelectedIndex = 0; cbAudioEncoder.SelectedIndex = 0; diff --git a/views/FrameSettings.cs b/views/FrameSettings.cs index 0e7f6de..e5fb695 100644 --- a/views/FrameSettings.cs +++ b/views/FrameSettings.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json; +using JackTheVideoRipper.src; +using Newtonsoft.Json; using System; using System.Collections.Generic; using System.ComponentModel; @@ -32,17 +33,14 @@ private void buttonLocationBrowse_Click(object sender, EventArgs e) private void FrameSettings_Load(object sender, EventArgs e) { - var s = FrameMain.settings; - - numMaxConcurrent.Value = s.maxConcurrentDownloads; - textLocation.Text = s.defaultDownloadPath; + numMaxConcurrent.Value = Settings.Data.maxConcurrentDownloads; + textLocation.Text = Settings.Data.defaultDownloadPath; } private void buttonSave_Click(object sender, EventArgs e) { - var s = FrameMain.settings; - s.maxConcurrentDownloads = (int)numMaxConcurrent.Value; - s.defaultDownloadPath = textLocation.Text.Trim(); + Settings.Data.maxConcurrentDownloads = (int)numMaxConcurrent.Value; + Settings.Data.defaultDownloadPath = textLocation.Text.Trim(); save(); this.Close(); @@ -50,7 +48,7 @@ private void buttonSave_Click(object sender, EventArgs e) private void save() { - File.WriteAllText(Settings.filePath, JsonConvert.SerializeObject(FrameMain.settings)); + Settings.Save(); } } } From efc04724cb93af053396f64e85cb3e379e724dde Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Sat, 3 Sep 2022 14:06:31 -0700 Subject: [PATCH 08/16] fixed changelog --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ebdb497..386032d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # v0.9.0 - upcoming release +* Fixed issue with yt-dlp not auto updating +* Added dialog when yt-dlp is automatically updated +* Moved Settings into a centralized place and out of WinForms * Add transcoding options to media ingestion * Transcoding status update fixes * Add visual progress bar for download and transcoding @@ -17,9 +20,6 @@ # v0.8.0 -* Fixed issue with yt-dlp not auto updating -* Added dialog when yt-dlp is automatically updated -* Moved Settings into a centralized place and out of WinForms * Upgraded .NET framework to 6.x from 4.x. * Fixed various bugs in order to improve stability * Upgraded ffmpeg from 4.2.1 to 5.1 From 7064ebe5fc483a978ea496e629baf3c222930da5 Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Sat, 3 Sep 2022 14:06:54 -0700 Subject: [PATCH 09/16] fixed changelog --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 386032d..fd45c47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -# v0.9.0 - upcoming release +# v0.9.0 * Fixed issue with yt-dlp not auto updating * Added dialog when yt-dlp is automatically updated From b2495c988a91c9d54e3078992cf8661399e7d94c Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Sat, 3 Sep 2022 14:15:47 -0700 Subject: [PATCH 10/16] improved menu item organization --- CHANGELOG.md | 1 + views/FrameMain.Designer.cs | 168 ++++++++------- views/FrameMain.resx | 395 ++++++++++++++++++------------------ 3 files changed, 287 insertions(+), 277 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd45c47..768592a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ * Fixed issue with yt-dlp not auto updating * Added dialog when yt-dlp is automatically updated * Moved Settings into a centralized place and out of WinForms +* Improved menu item organization * Add transcoding options to media ingestion * Transcoding status update fixes * Add visual progress bar for download and transcoding diff --git a/views/FrameMain.Designer.cs b/views/FrameMain.Designer.cs index 37649fc..8059068 100644 --- a/views/FrameMain.Designer.cs +++ b/views/FrameMain.Designer.cs @@ -62,14 +62,7 @@ private void InitializeComponent() this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); this.openTaskManagerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.downloadVLCPlayerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.downloadHandbrakeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); - this.downloadVS2010RedistributableToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.downloadFFmpegToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.downloadAtomicParsleyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.downloadYtdlpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); this.openDependenciesFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuListItems = new System.Windows.Forms.ContextMenuStrip(this.components); this.convertMediaToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -89,6 +82,14 @@ private void InitializeComponent() this.timerCheckForUpdates = new System.Windows.Forms.Timer(this.components); this.timerProcessLimit = new System.Windows.Forms.Timer(this.components); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.recommendedUtilitiesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.vlcPlayerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.handbrakeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.bundledUtilitiesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.vS2010RedistributableToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.fFmpegToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.atomicParsleyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.ytdlpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.menuStrip.SuspendLayout(); this.contextMenuListItems.SuspendLayout(); this.toolBar.SuspendLayout(); @@ -298,17 +299,12 @@ private void InitializeComponent() this.toolStripSeparator1, this.checkForUpdatesToolStripMenuItem, this.toolStripSeparator6, - this.openTaskManagerToolStripMenuItem, + this.openDependenciesFolderToolStripMenuItem, this.toolStripSeparator2, - this.downloadVLCPlayerToolStripMenuItem, - this.downloadHandbrakeToolStripMenuItem, + this.recommendedUtilitiesToolStripMenuItem, + this.bundledUtilitiesToolStripMenuItem, this.toolStripSeparator4, - this.downloadVS2010RedistributableToolStripMenuItem, - this.downloadFFmpegToolStripMenuItem, - this.downloadAtomicParsleyToolStripMenuItem, - this.downloadYtdlpToolStripMenuItem, - this.toolStripSeparator7, - this.openDependenciesFolderToolStripMenuItem}); + this.openTaskManagerToolStripMenuItem}); this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; this.helpToolStripMenuItem.Size = new System.Drawing.Size(65, 29); this.helpToolStripMenuItem.Text = "Help"; @@ -316,95 +312,48 @@ private void InitializeComponent() // aboutToolStripMenuItem // this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; - this.aboutToolStripMenuItem.Size = new System.Drawing.Size(390, 34); + this.aboutToolStripMenuItem.Size = new System.Drawing.Size(329, 34); this.aboutToolStripMenuItem.Text = "About"; this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(387, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(326, 6); // // checkForUpdatesToolStripMenuItem // this.checkForUpdatesToolStripMenuItem.Name = "checkForUpdatesToolStripMenuItem"; - this.checkForUpdatesToolStripMenuItem.Size = new System.Drawing.Size(390, 34); + this.checkForUpdatesToolStripMenuItem.Size = new System.Drawing.Size(329, 34); this.checkForUpdatesToolStripMenuItem.Text = "Check For Updates"; this.checkForUpdatesToolStripMenuItem.Click += new System.EventHandler(this.checkForUpdatesToolStripMenuItem_Click); // // toolStripSeparator6 // this.toolStripSeparator6.Name = "toolStripSeparator6"; - this.toolStripSeparator6.Size = new System.Drawing.Size(387, 6); + this.toolStripSeparator6.Size = new System.Drawing.Size(326, 6); // // openTaskManagerToolStripMenuItem // this.openTaskManagerToolStripMenuItem.Name = "openTaskManagerToolStripMenuItem"; - this.openTaskManagerToolStripMenuItem.Size = new System.Drawing.Size(390, 34); + this.openTaskManagerToolStripMenuItem.Size = new System.Drawing.Size(329, 34); this.openTaskManagerToolStripMenuItem.Text = "Open Task Manager"; this.openTaskManagerToolStripMenuItem.Click += new System.EventHandler(this.openTaskManagerToolStripMenuItem_Click); // // toolStripSeparator2 // this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(387, 6); - // - // downloadVLCPlayerToolStripMenuItem - // - this.downloadVLCPlayerToolStripMenuItem.Name = "downloadVLCPlayerToolStripMenuItem"; - this.downloadVLCPlayerToolStripMenuItem.Size = new System.Drawing.Size(390, 34); - this.downloadVLCPlayerToolStripMenuItem.Text = "Download VLC Player"; - this.downloadVLCPlayerToolStripMenuItem.Click += new System.EventHandler(this.downloadVLCPlayerToolStripMenuItem_Click); - // - // downloadHandbrakeToolStripMenuItem - // - this.downloadHandbrakeToolStripMenuItem.Name = "downloadHandbrakeToolStripMenuItem"; - this.downloadHandbrakeToolStripMenuItem.Size = new System.Drawing.Size(390, 34); - this.downloadHandbrakeToolStripMenuItem.Text = "Download Handbrake"; - this.downloadHandbrakeToolStripMenuItem.Click += new System.EventHandler(this.downloadHandbrakeToolStripMenuItem_Click); + this.toolStripSeparator2.Size = new System.Drawing.Size(326, 6); // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(387, 6); - // - // downloadVS2010RedistributableToolStripMenuItem - // - this.downloadVS2010RedistributableToolStripMenuItem.Name = "downloadVS2010RedistributableToolStripMenuItem"; - this.downloadVS2010RedistributableToolStripMenuItem.Size = new System.Drawing.Size(390, 34); - this.downloadVS2010RedistributableToolStripMenuItem.Text = "Download VS 2010 Redistributable"; - this.downloadVS2010RedistributableToolStripMenuItem.Click += new System.EventHandler(this.downloadVS2010RedistributableToolStripMenuItem_Click); - // - // downloadFFmpegToolStripMenuItem - // - this.downloadFFmpegToolStripMenuItem.Name = "downloadFFmpegToolStripMenuItem"; - this.downloadFFmpegToolStripMenuItem.Size = new System.Drawing.Size(390, 34); - this.downloadFFmpegToolStripMenuItem.Text = "Download FFmpeg"; - this.downloadFFmpegToolStripMenuItem.Click += new System.EventHandler(this.downloadFFmpegToolStripMenuItem_Click); - // - // downloadAtomicParsleyToolStripMenuItem - // - this.downloadAtomicParsleyToolStripMenuItem.Name = "downloadAtomicParsleyToolStripMenuItem"; - this.downloadAtomicParsleyToolStripMenuItem.Size = new System.Drawing.Size(390, 34); - this.downloadAtomicParsleyToolStripMenuItem.Text = "Download AtomicParsley"; - this.downloadAtomicParsleyToolStripMenuItem.Click += new System.EventHandler(this.downloadAtomicParsleyToolStripMenuItem_Click); - // - // downloadYtdlpToolStripMenuItem - // - this.downloadYtdlpToolStripMenuItem.Name = "downloadYtdlpToolStripMenuItem"; - this.downloadYtdlpToolStripMenuItem.Size = new System.Drawing.Size(390, 34); - this.downloadYtdlpToolStripMenuItem.Text = "Download yt-dlp"; - this.downloadYtdlpToolStripMenuItem.Click += new System.EventHandler(this.downloadYtdlpToolStripMenuItem_Click); - // - // toolStripSeparator7 - // - this.toolStripSeparator7.Name = "toolStripSeparator7"; - this.toolStripSeparator7.Size = new System.Drawing.Size(387, 6); + this.toolStripSeparator4.Size = new System.Drawing.Size(326, 6); // // openDependenciesFolderToolStripMenuItem // this.openDependenciesFolderToolStripMenuItem.Name = "openDependenciesFolderToolStripMenuItem"; - this.openDependenciesFolderToolStripMenuItem.Size = new System.Drawing.Size(390, 34); + this.openDependenciesFolderToolStripMenuItem.Size = new System.Drawing.Size(329, 34); this.openDependenciesFolderToolStripMenuItem.Text = "Open Dependencies Folder"; this.openDependenciesFolderToolStripMenuItem.Click += new System.EventHandler(this.openDependenciesFolderToolStripMenuItem_Click); // @@ -560,6 +509,68 @@ private void InitializeComponent() this.splitContainer1.SplitterDistance = 769; this.splitContainer1.TabIndex = 4; // + // recommendedUtilitiesToolStripMenuItem + // + this.recommendedUtilitiesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.vlcPlayerToolStripMenuItem, + this.handbrakeToolStripMenuItem}); + this.recommendedUtilitiesToolStripMenuItem.Name = "recommendedUtilitiesToolStripMenuItem"; + this.recommendedUtilitiesToolStripMenuItem.Size = new System.Drawing.Size(329, 34); + this.recommendedUtilitiesToolStripMenuItem.Text = "Recommended Utilities"; + // + // vlcPlayerToolStripMenuItem + // + this.vlcPlayerToolStripMenuItem.Name = "vlcPlayerToolStripMenuItem"; + this.vlcPlayerToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.vlcPlayerToolStripMenuItem.Text = "VLC Player"; + this.vlcPlayerToolStripMenuItem.Click += new System.EventHandler(this.downloadVLCPlayerToolStripMenuItem_Click); + // + // handbrakeToolStripMenuItem + // + this.handbrakeToolStripMenuItem.Name = "handbrakeToolStripMenuItem"; + this.handbrakeToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.handbrakeToolStripMenuItem.Text = "Handbrake"; + this.handbrakeToolStripMenuItem.Click += new System.EventHandler(this.downloadHandbrakeToolStripMenuItem_Click); + // + // bundledUtilitiesToolStripMenuItem + // + this.bundledUtilitiesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.vS2010RedistributableToolStripMenuItem, + this.fFmpegToolStripMenuItem, + this.atomicParsleyToolStripMenuItem, + this.ytdlpToolStripMenuItem}); + this.bundledUtilitiesToolStripMenuItem.Name = "bundledUtilitiesToolStripMenuItem"; + this.bundledUtilitiesToolStripMenuItem.Size = new System.Drawing.Size(329, 34); + this.bundledUtilitiesToolStripMenuItem.Text = "Bundled Utilities"; + // + // vS2010RedistributableToolStripMenuItem + // + this.vS2010RedistributableToolStripMenuItem.Name = "vS2010RedistributableToolStripMenuItem"; + this.vS2010RedistributableToolStripMenuItem.Size = new System.Drawing.Size(303, 34); + this.vS2010RedistributableToolStripMenuItem.Text = "VS 2010 Redistributable"; + this.vS2010RedistributableToolStripMenuItem.Click += new System.EventHandler(this.downloadVS2010RedistributableToolStripMenuItem_Click); + // + // fFmpegToolStripMenuItem + // + this.fFmpegToolStripMenuItem.Name = "fFmpegToolStripMenuItem"; + this.fFmpegToolStripMenuItem.Size = new System.Drawing.Size(303, 34); + this.fFmpegToolStripMenuItem.Text = "FFmpeg"; + this.fFmpegToolStripMenuItem.Click += new System.EventHandler(this.downloadFFmpegToolStripMenuItem_Click); + // + // atomicParsleyToolStripMenuItem + // + this.atomicParsleyToolStripMenuItem.Name = "atomicParsleyToolStripMenuItem"; + this.atomicParsleyToolStripMenuItem.Size = new System.Drawing.Size(303, 34); + this.atomicParsleyToolStripMenuItem.Text = "AtomicParsley"; + this.atomicParsleyToolStripMenuItem.Click += new System.EventHandler(this.downloadAtomicParsleyToolStripMenuItem_Click); + // + // ytdlpToolStripMenuItem + // + this.ytdlpToolStripMenuItem.Name = "ytdlpToolStripMenuItem"; + this.ytdlpToolStripMenuItem.Size = new System.Drawing.Size(303, 34); + this.ytdlpToolStripMenuItem.Text = "yt-dlp"; + this.ytdlpToolStripMenuItem.Click += new System.EventHandler(this.downloadYtdlpToolStripMenuItem_Click); + // // FrameMain // this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 25F); @@ -624,9 +635,6 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripButton toolStripButtonDownloadVideo; private System.Windows.Forms.ToolStripButton toolStripButtonDownloadAudio; private System.Windows.Forms.ToolStripSeparator toolStripSeparator1; - private System.Windows.Forms.ToolStripMenuItem downloadFFmpegToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem downloadHandbrakeToolStripMenuItem; - private System.Windows.Forms.ToolStripMenuItem downloadVLCPlayerToolStripMenuItem; private System.Windows.Forms.StatusStrip statusBar; private System.Windows.Forms.ToolStripStatusLabel toolbarLabelStatus; private System.Windows.Forms.ToolStripStatusLabel toolBarLabelCpu; @@ -634,9 +642,7 @@ private void InitializeComponent() private System.Windows.Forms.Timer timerStatusBar; private System.Windows.Forms.ToolStripMenuItem checkForUpdatesToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; - private System.Windows.Forms.ToolStripMenuItem downloadAtomicParsleyToolStripMenuItem; private System.Windows.Forms.ToolStripStatusLabel toolBarLabelNetwork; - private System.Windows.Forms.ToolStripMenuItem downloadVS2010RedistributableToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; private System.Windows.Forms.ToolStripMenuItem openDownloadFolderToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator4; @@ -652,9 +658,15 @@ private void InitializeComponent() private ImageList imgList; private ToolStripSeparator toolStripSeparator6; private ToolStripMenuItem openTaskManagerToolStripMenuItem; - private ToolStripMenuItem downloadYtdlpToolStripMenuItem; - private ToolStripSeparator toolStripSeparator7; private ToolStripMenuItem openDependenciesFolderToolStripMenuItem; + private ToolStripMenuItem recommendedUtilitiesToolStripMenuItem; + private ToolStripMenuItem vlcPlayerToolStripMenuItem; + private ToolStripMenuItem handbrakeToolStripMenuItem; + private ToolStripMenuItem bundledUtilitiesToolStripMenuItem; + private ToolStripMenuItem vS2010RedistributableToolStripMenuItem; + private ToolStripMenuItem fFmpegToolStripMenuItem; + private ToolStripMenuItem atomicParsleyToolStripMenuItem; + private ToolStripMenuItem ytdlpToolStripMenuItem; } } diff --git a/views/FrameMain.resx b/views/FrameMain.resx index c2ea638..283e74c 100644 --- a/views/FrameMain.resx +++ b/views/FrameMain.resx @@ -64,8 +64,8 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAEZTeXN0ZW0uV2luZG93cy5Gb3JtcywgQ3VsdHVyZT1uZXV0cmFs LCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5BQEAAAAmU3lzdGVtLldpbmRvd3MuRm9ybXMu - SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAgjAAAAJNU0Z0AUkBTAIBAQIB - AAEwAQABMAEAAUABAAFAAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoBAABAQIAAUADAAEBAQABIAcAAQH/ + SW1hZ2VMaXN0U3RyZWFtZXIBAAAABERhdGEHAgIAAAAJAwAAAA8DAAAAqi8AAAJNU0Z0AUkBTAIBAQIB + AAE4AQABOAEAAUABAAFAAQAE/wEhAQAI/wFCAU0BNgcAATYDAAEoBAABAQIAAUADAAEBAQABIAcAAQH/ AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wBdAAQCAwcECQELAwkBCwMJAQsDCQELAwkBCwMJAQsDCQELAwkB CwMJAQsDCQELAwkBCwMJAQsDCQELAwkBCwMJAQsDCQELAwkBCwMJAQsDCQELAwkBCwMJAQsDCQELAwkB CwMJAQsDCQELAwkBCwMJAQsDCQELAwgBCgMCAQP/AP8A/wB7AAQBAxMBGQM2AVkCUQFQAZwBVAJSAagD @@ -73,205 +73,202 @@ UwGnA1MBpwNTAacDUwGnA1MBpwNTAacDUwGnA1MBpwNTAacDUwGnA1MBpwFUAlIBqANSAaADPQFoAxgB IQQCeAAEAQMJAQsDDAEPAwwBDwMMAQ8DDAEPAwwBDwMMAQ8DDAEPAwwBDwMMAQ8DDAEPAwwBDwMMAQ8D DAEPAwwBDwMMAQ8DDAEPAwwBDwMMAQ8DDAEPAwwBDwMMAQ8DDAEPAwwBDwMMAQ8DDAEPAwwBDwMMAQ8D - DAEPAwkBCwQB/wD/AHYAAwgBCgM6AWEBXAFaAVkBzAFaAUgBOwHyAVoBTAFFAe0BWgFQAUkB6QFaAVAB - SQHpAVoBUAFJAekBWgFQAUkB6QFaAVABSQHpAVoBUAFJAekBWgFQAUkB6QFaAVABSQHpAVoBUAFJAekB - WgFQAUkB6QFaAVABSQHpAVoBUAFJAekBWgFQAUkB6QFaAVABSQHpAVoBUAFJAekBWgFQAUkB6QFaAVAB - SQHpAVoBUAFJAekBWgFQAUkB6QFaAVABSQHpAVoBUAFJAekBWgFQAUkB6QFaAVABSQHpAVoBUAFJAekB - WgFQAUkB6QFaAVABSQHpAVoBUAFJAekBWwFTAUwB6AFbAU4BRgHsAVkBRQE6AfIBWwFZAVYB2ANDAXYD - DgESbAAEAgMgAS0DRAF6A1YBswJZAVgBwANZAb4DWQG+A1kBvgNZAb4DWQG+A1kBvgNZAb4DWQG+A1kB + DAEPAwkBCwQB/wD/AHYAAwgBCgM6AWEBXQFbAVoBzAFaAUoBQAHyAVwBUAFIAe0BWgFSAU4B6QFaAVIB + TgHpAVoBUgFOAekBWgFSAU4B6QFaAVIBTgHpAVoBUgFOAekBWgFSAU4B6QFaAVIBTgHpAVoBUgFOAekB + WgFSAU4B6QFaAVIBTgHpAVoBUgFOAekBWgFSAU4B6QFaAVIBTgHpAVoBUgFOAekBWgFSAU4B6QFaAVIB + TgHpAVoBUgFOAekBWgFSAU4B6QFaAVIBTgHpAVoBUgFOAekBWgFSAU4B6QFaAVIBTgHpAVoBUgFOAekB + WgFSAU4B6QFaAVIBTgHpAVoBUgFOAekBXQFWAU8B6AFcAVEBSwHsAVoBSAE+AfICWwFZAdgDQwF2Aw4B + EmwABAIDIAEtA0QBegNWAbMDWQHAA1kBvgNZAb4DWQG+A1kBvgNZAb4DWQG+A1kBvgNZAb4DWQG+A1kB vgNZAb4DWQG+A1kBvgNZAb4DWQG+A1kBvgNZAb4DWQG+A1kBvgNZAb4DWQG+A1kBvgNZAb4DWQG+A1kB - vgNZAb4DWQG+AVoBWQFYAb8DVgGzA0QBeQMeASoEAv8A/wBqAAMHAQkDRgF+AVEBQAE3AfMBXQFbAVkB - 1ANEAXkDKQE9Ax8BLAMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4B - KwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4B - KwMmATgDPQFoA1kBwQFRATkBLgH3A1EBngMPARRkAAMGAQcDPgFqAV0BVQFSAeABWQFJAT4B7wFbAVoB - WAHFA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8D - VQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1YBsAFbAVoB - WAHFAVgBSwFCAe4BWwFXAVMB3QM+AWsDBwEJ/wD/AGYAAzwBZQFTAT0BNAH0AVcCVQG0AxwBJ4AAAxAB - FQNLAYwBUwE5AScB+ANKAYkDBAEFXAADAwEEAUECQAFxAVIBQwE6AfADWAG6Ay0BRQMNAREDCAEKAwgB + vgNZAb4CWgFZAb8DVgGzA0QBeQMeASoEAv8A/wBqAAMHAQkDRgF+AVIBRAE6AfMCXQFbAdQDRAF5AykB + PQMfASwDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4B + KwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDHgErAx4BKwMeASsDJgE4Az0B + aANZAcEBUQE7ATIB9wNRAZ4DDwEUZAADBgEHAz4BagFfAVkBVQHgAVkBSwFCAe8CWwFaAcUDVQGvA1UB + rwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UB + rwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVgGwAlsBWgHFAVkBTQFHAe4B + XQFZAVcB3QM+AWsDBwEJ/wD/AGYAAzwBZQFTAT8BOAH0AVcCVQG0AxwBJ4AAAxABFQNLAYwBVQE6ASsB + +ANKAYkDBAEFXAADAwEEAUECQAFxAVMBRgE/AfADWAG6Ay0BRQMNAREDCAEKAwgBCgMIAQoDCAEKAwgB CgMIAQoDCAEKAwgBCgMIAQoDCAEKAwgBCgMIAQoDCAEKAwgBCgMIAQoDCAEKAwgBCgMIAQoDCAEKAwgB - CgMIAQoDCAEKAwgBCgMIAQoDCAEKAwgBCgMIAQoDCAEKAwgBCgMIAQoDCAEKAw0BEQMrAUIBWQJYAbsB - VgFEATsB8QFCAkEBcwMDAQT/AP8AXgADFQEcAV0BWwFaAc8BXAFZAVcB1gMdASmIAAMOARIDVgG2AVoB - TwFHAekDJQE3XAADKAE8AVgBTgFJAegDWAG3AxUBHIAAAxUBHANYAbcBWwFRAUkB5wMpAT7/AP8AXgAD - OAFcAUoBNgEvAfYDRgF+kAADNgFXAVEBOQEzAfcDRgF/WAADBAEFA04BlwFaAU8BRwHpAygBO4gAAycB - OQFYAU8BTAHoA1ABmgMEAQX/AP8AVgADBgEIA1IBowFaAUgBOwHyAysBQpAAAxsBJgFbAVQBUQHmAVQC - UwGmAwYBB1QAAxoBJAFfAVoBWQHaAlYBVQGwAwgBCogAAwgBCgNVAa8BXQFbAVkB1AMWAR7/AP8AVgAD - CQEMAVgCVgGzAVoBSwFDAe4DIwEykAADEQEWAV0CWwHUAVkCVwG5AwoBDVQAAysBQQFaAUgBQAHyA0kB - hZAAAUsCSgGKAVoBSwFDAe4DJwE6/wD/AFYAAwkBCwFYAlYBswFaAUsBQwHuAyMBMpAAAxABFQFbAloB - 0wJZAVgBuwMLAQ5UAAMsAUMBVwFJAUIB8QNDAXaQAANEAXkBWAFJAUAB8QMsAUP/AP8AVgADCQELAVgC - VgGzAVoBSwFDAe4DIwEykAADEAEVAVsCWgHTAlkBWAG7AwsBDlQAAysBQgFXAUkBQwHxA0MBdjwACAJM - AANEAXoBWQFJAT8B8QMrAUL/AP8AVgADCQELAVgCVgGzAVoBSwFDAe4DIwEyHAADBgEIAx4BKgMpAT0D - KAE8AygBPAMoATwDKAE8AygBPAMoATwDKAE8AygBPAMoATwDKQE9AyMBMwMMAQ84AAMQARUBWwJaAdMC - WQFYAbsDCwEOVAADKwFCAVcBSQFDAfEDQwF2OAADIwEzAU0CTAGRA0sBjQMfASxIAANEAXoBWQFJAT8B - 8QMrAUL/AP8AVgADCQELAVgCVgGzAVoBSwFDAe4DIwEyGAADEgEYA00BkgFfAVUBUQHlAVkBSwFEAe4B - XQFRAUcB7AFdAVEBRwHsAV0BUQFHAewBXQFRAUcB7AFdAVEBRwHsAV0BUQFHAewBXQFRAUcB7AFdAVEB - RwHsAV0BUQFHAewBXgFPAUUB7QFaAUwBRQHtAVcCVQG0AyMBMzQAAxABFQFbAloB0wJZAVgBuwMLAQ5U - AAMrAUIBVwFJAUMB8QNDAXY0AAMnAToBXQJaAc8BXgFVAU0B5QFYAUwBRQHtAVYCVQGuAwkBDBQAAwQB - BQMVARwDCAEKJAADRAF6AVkBSQE/AfEDKwFC/wD/AFYAAwkBCwFYAlYBswFaAUsBQwHuAyMBMhQABAIB - RwFGAUcBgQFNAS4BIAH6AVkCVwG5AkIBQQFzAz8BbQJAAT8BbgJAAT8BbgJAAT8BbgJAAT8BbgJAAT8B - bgJAAT8BbgJAAT8BbgJAAT8BbgNAAW8DUgGgAUoBOAEwAfYBWQJYAboDDQERCAADCQEMAzABSgFAAj8B - bgMiATEYAAMQARUBWwJaAdMCWQFYAbsDCwEOVAADKwFCAVcBSQFDAfEDQwF2MAADJwE6AVsCWQHSAV4B - WAFUAdcDKwFBA1ABnwFdAVcBUwHdAxUBHBQAAyMBMgFdAlkB0QNMAY4DDAEQIAADRAF6AVkBSQE/AfED - KwFC/wD/AFYAAwkBCwFYAlYBswFaAUsBQwHuAyMBMhQAAxABFQJbAVoBzQFeAVkBVwHXAxoBJCwAAwkB - CwFSAlEBoQFaAUYBOgHyAyoBQAMCAQMDKAE8AVQCUwGpAVcBRwE+AfEBRQErASEB/AFdAVsBWgHJAxYB - HhQAAxABFQFbAloB0wJZAVgBuwMLAQ5UAAMrAUIBVwFJAUMB8QNDAXYsAAMmATgBXAJZAdIBXQFZAVYB - 2wMrAUIEAANNAZIBXQFXAVIB3wMVARwUAAMSARgDVQGuAUoBNQEiAfkDSgGJAwcBCRwAA0QBegFZAUkB - PwHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWgFLAUMB7gMjATIUAAMYASABXgFWAVIB4gFUAlMBqQMGAQgw - AANCAXIBUQE6ATMB9wNGAX0DSQGIAVoBTgFJAekBUwFDAToB8ANOAZgDVwG5AVgBRgE/AfADJwE6FAAD - EAEVAVsCWgHTAlkBWAG7AwsBDlQAAysBQgFXAUkBQwHxA0MBdhgAAwYBBwMtAUUBRAJDAXcDRAF4A0UB - fAFdAlkB0QFdAVkBVgHbAywBQwQABAEDTQGTAV0BVwFSAd8DFQEcGAADFgEdA1gBuAFSAUABNgHzAzYB - VxwAA0QBegFZAUkBPwHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWgFLAUMB7gMjATIUAAMYASABXgFXAVUB - 4QFSAlEBpAMFAQYwAANAAW8BSgE4AScB/QFOAT0BMgH2AUoBNgEtAfYDWAG3Ay0BRQMIAQoDTgGVAVgB - SQE+AfEDJwE6FAADEAEVAVsCWgHTAlkBWAG7AwsBDlQAAysBQgFXAUkBQwHxA0MBdhgAAzYBWQFaAU4B - SQHpAVoBTwFIAesBWwFUAU4B5gFcAVMBTAHnAVsBWgFYAc0DLQFECAAEAQNNAZMBXQFXAVIB3wMVARwI - AAMSARcDIQEwAwMBBAgAAyMBMwFbAVYBVAHeA1oBxAMRARYYAANEAXoBWQFJAT8B8QMrAUL/AP8AVgAD - CQELAVgCVgGzAVoBSwFDAe4DIwEyFAADGAEgAV4BVwFVAeEBUwJSAaUDBgEHMAADQAFvAU0BKgEZAf8B - WwFaAVgB0wI7AToBYgMNAREEAAQBA00BkgFYAUkBPgHxAycBOhQAAxABFQFbAloB0wJZAVgBuwMLAQ5U - AAMrAUIBVwFJAUMB8QNDAXYUAAMGAQgDUwGpAVsBWgFYAdMDJQE2AxcBHwMZASIDEgEYBAIIAAQBA00B - kwFdAVcBUgHfAxUBHAgAA0IBdAFdAVUBUgHgAy4BRggABAIDSQGGAVIBQAE4AfMDMQFMGAADRAF6AVkB - SQE/AfEDKwFC/wD/AFYAAwkBCwFYAlYBswFaAUsBQwHuAyMBMhQAAxgBIAFeAVcBVQHhAVMCUgGlAwYB - BzAAA0EBcAFRATkBMQH3AzkBXxAAAUwCSwGPAVgBSQE+AfEDJwE6FAADEAEVAVsCWgHTAlkBWAG7AwsB - DlQAAysBQgFXAUkBQwHxA0MBdhQAAwkBDANYAbcBWQJYAbsDCgENGAAEAQNNAZMBXQFXAVIB3wMVARwI - AAMnAToBWwFTAU8B5AFUAlMBqQMHAQkIAAMpAT4BUwFGAUAB8ANJAYUYAANEAXoBWQFJAT8B8QMrAUL/ - AP8AVgADCQELAVgCVgGzAVoBSwFDAe4DIwEyFAADGAEgAV4BVwFVAeEBUwJSAaUDBgEHMAADQQFwAVMB - PwE1AfQDMwFREAADTAGQAVgBSQE+AfEDJwE6FAADEAEVAVsCWgHTAlkBWAG7AwsBDlQAAysBQgFXAUkB - QwHxA0MBdhQAAwkBDANWAbUBWQJXAbwDCwEOGAAEAQNNAZMBXQFXAVIB3wMVARwIAAMEAQUBUQJQAZ8B - WwFUAU4B5AMbASUIAAMUARsBWwFXAVUB3gNSAaMDBQEGFAADRAF6AVkBSQE/AfEDKwFC/wD/AFYAAwkB - CwFYAlYBswFaAUsBQwHuAyMBMhQAAxgBIAFeAVcBVQHhAVMCUgGlAwYBBzAAA0EBcAFTAT8BNQH0AzMB - UhAAA0wBkAFYAUkBPgHxAycBOhQAAxABFQFbAloB0wJZAVgBuwMLAQ5UAAMrAUIBVwFJAUMB8QNDAXYU - AAMJAQwDVgG1AVkCVwG8AwsBDhgABAEDTQGTAV0BVwFSAd8DFQEcDAABRwJGAYEBXgFMAUUB7QMiATEI - AAMSARcBWwJZAdgBVAJTAakDBgEIFAADRAF6AVkBSQE/AfEDKwFC/wD/AFYAAwkBCwFYAlYBswFaAUsB - QwHuAyMBMhQAAxgBIAFeAVcBVQHhAVMCUgGlAwYBBzAAA0EBcAFTAT8BNQH0AzMBUBAAA0wBkAFYAUkB - PgHxAycBOhQAAxABFQFbAloB0wJZAVgBuwMLAQ5UAAMrAUIBVwFJAUMB8QNDAXYUAAMJAQwDVgG1AVkC - VwG8AwsBDhgABAEDTQGTAV0BVwFSAd8DFQEcCAADBAEFAVECUAGfAV8BVQFQAeUDGwElCAADFAEbAVsB - WQFXAd0BUgJRAaQDBQEGFAADRAF6AVkBSQE/AfEDKwFC/wD/AFYAAwkBCwFYAlYBswFaAUsBQwHuAyMB - MhQAAxgBIAFeAVcBVQHhAVMCUgGlAwYBBzAAA0EBcAFMATgBJAH5AkEBQAFxAwUBBgwAA0wBkAFYAUkB - PgHxAycBOhQAAxABFQFbAloB0wJZAVgBuwMLAQ5UAAMrAUIBVwFJAUMB8QNDAXYUAAMJAQwDWAG3AVkC - WAG7AwoBDRgABAEDTQGTAV0BVwFSAd8DFQEcCAADJgE4AVoBUwFQAeMDVQGsAwgBCggAAygBPAFXAUkB - QQHvA0kBhhgAA0QBegFZAUkBPwHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWgFLAUMB7gMjATIUAAMYASAB - XgFXAVUB4QFTAlIBpQMGAQcwAANAAW8BTgErARsB/wFUAUYBPAHwAVACTwGbAyMBMwMDAQQEAANMAZAB - WAFJAT4B8QMnAToUAAMQARUBWwJaAdMCWQFYAbsDCwEOVAADKwFCAVcBSQFDAfEDQwF2FAADBwEJA1QB - qwFeAVkBVgHSAygBPAMeASoDHwEsAxQBGwQCCAAEAQNNAZMBXQFXAVIB3wMVARwIAAFEAkMBdwFdAVYB - UwHhAy4BRwgABAEDRwGCAVIBQQE4AfMDMgFPGAADRAF6AVkBSQE/AfEDKwFC/wD/AFYAAwkBCwFYAlYB - swFaAUsBQwHuAyMBMhQAAxgBIAFeAVcBVQHhAVICUQGkAwUBBjAAA0ABbwFVASwBIQH7AVsBWQFWAd4B - UwE/ATUB9AFbAVMBSwHkAUsCSgGLAxwBJwNLAY0BWAFJAT4B8QMnAToUAAMQARUBWwJaAdMCWQFYAbsD - CwEOVAADKwFCAVcBSQFDAfEDQwF2GAADOQFfAVoBTwFIAesBVgFLAUUB6gFbAVEBSwHnAVkBTgFFAekB - XQFaAVgBzwMuAUcIAAQBA00BkwFdAVcBUgHfAxUBHAgAAxMBGQMiATEDAwEECAADHwEsAV0BWQFWAdsB - XQFbAVoByQMTARkYAANEAXoBWQFJAT8B8QMrAUL/AP8AVgADCQELAVgCVgGzAVoBSwFDAe4DIwEyFAAD - FwEfAV4BVwFWAeEBVgJVAa4DCAEKMAADQwF1AVEBOgEzAfcDPAFkAzgBXAFdAVsBWgHJAU8BJwEhAfsB - XgFZAVcB1wFfAVsBWQHVAVkBSwFDAe4DJgE4FAADEAEVAVsCWgHTAlkBWAG7AwsBDlQAAysBQgFXAUkB - QwHxA0MBdhgAAwYBCAMwAUoCQAE/AW4DPwFtAUQCQwF3AV0BWwFZAdQBWwFXAVMB3QMrAUEEAAQBA00B - kwFdAVcBUgHfAxUBHBgAAxABFQNTAaoBUgFAATYB8wI5ATgBXRwAA0QBegFZAUkBPwHxAysBQv8A/wBW - AAMJAQsBWAJWAbMBWgFLAUMB7gMjATIUAAMNAREDVwHCAVsBVAFPAeQDKQE+AwQBBQMDAQQDAwEEAwMB - BAMDAQQDAwEEAwMBBAMDAQQDAwEEAwMBBAMDAQQDFgEeA1gBtwFcAUwBRQHtAyUBNwQAAxQBGwFEAkMB - dwFcAVkBVwHZAVMBQAE1AfQCVgFVAbADEAEVFAADEAEVAVsCWgHTAlkBWAG7AwsBDlQAAysBQgFXAUkB - QwHxA0MBdiwAAycBOQFdAlkB0QFeAVkBVgHVAygBPAQAA00BkgFdAVcBUgHfAxYBHRQAAwwBEANQAZ0B - SAE0ASEB+QFLAkoBigMHAQkcAANEAXoBWQFJAT8B8QMrAUL/AP8AVgADCQELAVgCVgGzAVoBSwFDAe4D - IwEyGAADPAFmAVkBRQE7AfIBXQFXAVIB3wFTAlIBpQFRAlABnAFRAlABnQFRAlABnQFRAlABnQFRAlAB - nQFRAlABnQFRAlABnQFRAlABnQFRAlABnQFRAlABnwFdAloBzAFQASoBIQH7A1EBngMIAQoIAAQCAxsB - JQMrAUEDEQEWGAADEAEVAVsCWgHTAlkBWAG7AwsBDlQAAysBQgFXAUkBQwHxA0MBdjAAAygBOwFcAVkB - VwHWAV0CWQHUAysBQQNQAZ0BXQFYAVUB3AMUARsUAAMiATEBXQJZAdEDTAGQAw0BESAAA0QBegFZAUkB - PwHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWgFLAUMB7gMjATIYAAMGAQgDOwFjA1cBvAFbAVkBVgHYAVsB - WQFWAdgBWwFZAVYB2AFbAVkBVgHYAVsBWQFWAdgBWwFZAVYB2AFbAVkBVgHYAVsBWQFWAdgBWwFZAVYB - 2AFbAVkBVgHYAVsBWQFWAdgBXAJbAcgDRwGCAxMBGTQAAxABFQFbAloB0wJZAVgBuwMLAQ5UAAMrAUIB - VwFJAUMB8QNDAXY0AAMqAUABXAFZAVcB1gFfAVUBTwHlAVgBTQFHAeoBVAJTAaYDCAEKFAADBQEGAxYB - HQMIAQokAANEAXoBWQFJAT8B8QMrAUL/AP8AVgADCQELAVgCVgGzAVoBSwFDAe4DIwEyHAAEAQMLAQ4D - EgEXAxIBFwMSARcDEgEXAxIBFwMSARcDEgEXAxIBFwMSARcDEgEXAxIBFwMOARIDAwEEOAADEAEVAVsC - WgHTAlkBWAG7AwsBDlQAAysBQgFXAUkBQwHxA0MBdjgAAyUBNwNOAZUDSQGHAxkBIkgAA0QBegFZAUkB - PwHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWgFLAUMB7gMjATKQAAMQARUBWwJaAdMCWQFYAbsDCwEOVAAD - KwFCAVcBSQFDAfEDQwF2PAADAgEDBAJMAANEAXoBWQFJAT8B8QMrAUL/AP8AVgADCQELAVgCVgGzAVoB - SwFDAe4DIwEykAADEAEVAVsCWgHTAlkBWAG7AwsBDlQAAysBQgFXAUkBQwHxA0MBdpAAA0QBegFZAUkB - PwHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWgFLAUMB7gMjATKQAAMQARUBWwJaAdMCWQFYAbsDCwEOVAAD - KwFCAVcBSQFDAfEDQwF2kAADRAF6AVkBSQE/AfEDKwFC/wD/AFYAAwkBCwFYAlYBswFaAUsBQwHuAyMB - MpAAAxABFQFbAloB0wJZAVgBuwMLAQ5UAAMrAUIBVwFJAUMB8QNDAXaQAANEAXoBWQFJAT8B8QMrAUL/ - AP8AVgADCQELAVgCVgGzAVoBSwFDAe4DIwEykAADEAEVAVsCWgHTAlkBWAG7AwsBDlQAAysBQgFXAUkB - QwHxA0MBdpAAA0QBegFZAUkBPwHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWgFLAUMB7gMjATKQAAMQARUB - WwJaAdMCWQFYAbsDCwEOVAADKwFCAVcBSQFDAfEDQwF2kAADRAF6AVkBSQE/AfEDKwFC/wD/AFYAAwkB - CwFYAlYBswFaAUsBQwHuAyMBMpAAAxABFQFdAVoBWQHSAlkBWAG7AwsBDlQAAysBQgFXAUkBQwHxA0MB - dpAAA0QBeAFZAUkBQAHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWgFLAUMB7gMjATJUAAQCAxoBIwM0AVMD - OgFgAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV4CQAE/AW4BXAFVAVIB - 5wFaAlgBugMLAQ5UAAMrAUIBVwFJAUMB8QNDAXZUAAMJAQsDKwFBAzsBYwM7AWIDOwFiAzsBYgM7AWID - OwFiAzsBYgM7AWIDOwFiAzsBYgM7AWIDOwFiAzkBXwFXAlUBtAFZAUkBQAHwAyoBP/8A/wBWAAMJAQsB - WAJWAbMBWgFLAUMB7gMjATJQAAMGAQgDPgFrAV8BWgFYAdoBUwFBATYB9AFZAUsBQQHvAVkBSwFBAe8B - WQFLAUEB7wFZAUsBQQHvAVkBSwFBAe8BWQFLAUEB7wFZAUsBQQHvAVkBSwFBAe8BWQFLAUEB7wFZAUsB - QQHvAVkBSwFBAe8BXAFNAUUB7QFRAT0BMwH3AU0BLAEYAf8DUwGnAwYBCFQAAysBQgFXAUkBQwHxA0MB - dlAAAxIBGANQAZoBWgFPAUkB6QFbAVkBVgHYAV0BWwFaAckBXAJbAcgBXAJbAcgBXAJbAcgBXAJbAcgB - XAJbAcgBXAJbAcgBXAJbAcgBXAJbAcgBXAJbAcgBWwJaAcUBXQFYAVcB3AFMASsBFwH/AV0BWwFZAdED - GAEh/wD/AFYAAwkBCwFYAlYBswFaAUsBQwHuAyMBMlAAAzwBZAFWAUYBPQHxAV0BWwFZAc4CQQFAAXED - NAFTAzMBUgMzAVIDMwFSAzMBUgMzAVIDMwFSAzMBUgMzAVIDMwFSAzIBTwM/AWwBXAFVAVIB5wFXAToB - KgH4AjwBOwFkWAADKwFCAVcBSQFDAfEDQwF2TAADBgEHA00BkgFYAUgBQAHuA0MBdgMXAR8DEAEVAxAB - FQMQARUDEAEVAxABFQMQARUDEAEVAxABFQMQARUDDwETAyEBLwNZAcABUQE5AS8B9wFBAkABcAQC/wD/ - AFYAAwkBCwFYAlYBswFaAUsBQwHuAyMBMkwAAxMBGgNbAdABXQFYAVYB3AMjATIsAAMXAR8DVQGxAUkB - NgEvAfYBSwJKAYsDCQELWAADKwFCAVcBSQFDAfEDQwF2TAADIwEyAVgBTwFMAegBUQJQAZwDBQEGKAAD - EwEaA1QBqwFTAT4BNQH0A0YBfwMIAQr/AP8AWgADCQELAVgCVgGzAVoBSwFDAe4DIwEyTAADJwE6AVcB - SQFDAfEDUQGeAwQBBSgAAxkBIgNYAbcBRwEyASIB+QNLAY0DCwEOXAADKwFCAVcBSQFDAfEDQwF2TAAD - MwFRAVkBRQE7AfICPgE9AWkoAAMUARsDVQGsAVMBPQE1AfQBRwJGAYADCQEL/wD/AF4AAwkBCwFYAlYB - swFaAUsBQwHuAyMBMkwAAyoBPwFaAUgBQAHyA0oBiSgAAxkBIgNYAbcBSAE0ASMB+QNLAYwDCwEOYAAD - KwFCAVcBSQFDAfEDQwF2TAADNAFTAVkBRgE+Ae8DOQFeJAADFAEbA1UBrAFPATkBMAH1AUcCRgGBAwgB - Cv8A/wBiAAMJAQsBWAJWAbMBWgFLAUMB7gMjATJMAAMpAT4BWgFIAUAB8gNJAYgkAAMZASIDWAG3AUcB - MgEhAfkDSwGMAwsBDmQAAysBQgFXAUkBQwHxA0MBdkwAAzMBUgFZAUYBPgHvAzkBXyAAAxQBGwNVAawB - TwE6ATEB9QNGAX8DCAEK/wD/AGYAAwkBCwFYAlYBswFaAUsBQwHuAyMBMkwAAykBPgFaAUgBQAHyA0kB - iCAAAxkBIgNYAbcBRwEyASIB+QNLAYwDCwEOaAADKwFCAVcBSQFDAfEDQwF2TAADMwFSAVkBRgE+Ae8D - OQFfHAADFAEbA1UBrAFTAT0BNQH0AUcCRgGAAwkBC/8A/wBqAAMJAQsBWAJWAbMBWgFLAUMB7gMjATJM - AAMpAT4BWgFIAUAB8gNJAYgcAAMZASIDWAG3AUgBNAEjAfkDSwGMAwsBDmwAAysBQgFXAUkBQwHxA0MB - dkwAAzMBUgFZAUYBPgHvAzkBXxgAAxQBGwNVAawBTwE5ATAB9QFHAkYBgQMIAQr/AP8AbgADCQELAVgC - VgGzAVoBSwFDAe4DIwEyTAADKQE+AVoBSAFAAfIDSQGIGAADGQEiA1gBtwFRATkBJgH4A0sBjAMLAQ5w - AAMrAUIBVwFJAUMB8QNDAXZMAAMzAVIBWQFGAT4B7wM5AV8UAAMUARsDVQGsAVMBPQE1AfQDRgF/AwgB - Cv8A/wByAAMJAQsBWAJWAbMBWgFLAUMB7gMjATJMAAMpAT4BWgFIAUAB8gNJAYgUAAMZASIDWAG3AUgB - NAEiAfkDSwGMAwsBDnQAAysBQgFXAUkBQwHxA0MBdkwAAzMBUgFZAUYBPgHvAzkBXxAAAxQBGwNVAawB - UwE9ATUB9AFHAkYBgAMJAQv/AP8AdgADCQELAVgCVgGzAVoBSwFDAe4DIwEyTAADKQE+AVoBSAFAAfID - SQGIEAADGQEiA1gBtwFTATkBKQH4A0sBjAMLAQ54AAMsAUMBVwFJAUIB8QNDAXZMAAMzAVIBWQFGAT4B - 7wM5AV8MAAMUARsDVQGsAVMBPQE0AfQBRwJGAYEDCAEK/wD/AHoAAwkBDAFXAlUBtAFaAUsBQwHuAyMB - MkwAAykBPgFaAUgBQAHyA0kBiAwAAxkBIgNYAbcBUQE5ASYB+ANLAYwDCwEOfAADKgE/AVcBSQFDAfEB - SAJHAYNMAAMzAVIBWQFGAT4B7wM5AV8IAAMUARsDVQGsAVMBPQE0AfQDRgF/AwgBCv8A/wB+AAMGAQgD - UgGkAVoBSAE7AfIDKwFCTAADKQE+AVoBSAFAAfIDSQGICAADGQEiA1gBtwFRATkBJwH4A0sBjAMLAQ6A - AAMWAR0CWwFaAdABVwJVAbEDCAEKSAADMwFSAVkBRgE+Ae8DOQFfBAADFAEbA1UBrAFTAT0BNAH0AUcC - RgGAAwkBC/8A/wCGAAM5AV0BSgE2AS8B9gNGAX5MAAMpAT4BWgFIAUAB8gNJAYgEAAMZASIDWAG3AVMB - OQEpAfgDSwGMAwsBDoQABAEDSQGGAVwBUgFLAecDKAE7SAADMwFSAVkBRgE+Ae8DOQFeAxIBFwNVAawB - UwE9ATQB9AFHAkYBgQMIAQr/AP8AigADFgEdAlsBWgHQAV0BWwFZAdQDHAEnSAADKQE+AVoBSAFAAfID - SAGEAxcBHwNYAbcBUQE5AScB+ANLAYwDCwEOjAADIAEtAVwBVwFWAdkBVwJWAbUDEwEaRAADMwFSAVsB - TAFGAewDQQFwA1IBpQFTAT0BNAH0A0YBfwMIAQr/AP8AkgADPAFlAVEBQAE4AfMDVQGtAxsBJkQAAygB - PAFZAUoBQgHvAVECUAGfA1UBrwFIATQBIgH5A0sBjAMLAQ6QAAQBAzMBUQFbAVIBTwHiA1cBvAMvAUkD - DwETAwcBCQMIAQoDCAEKAwgBCgMIAQoDCAEKAwgBCgMIAQoDCAEKAwgBCgMIAQoDCAEKAwgBCgMIAQoD - BQEGAzcCWgFIAT0B8gFeAVgBUgHiAVUBRgE+Ae8BRwJGAYADCQEL/wD/AJYAAwcBCQNGAX4BUgFAATYB - 8wFbAVoBWAHTA0QBeQMoATwDGgEjAxoBIwMaASMDGgEjAxoBIwMaASMDGgEjAxoBIwMaASMDGgEjAxoB - IwMaASMDGgEjAxoBIwMYASADOAFbAVgBSgFEAfEBUAFAASkB+QFRATkBMgH3A0sBjAMLAQ6YAAQBAy8B - SQFcAVsBWQHIAVoBTwFHAekBXAFbAVkByANVAa8DVgGwA1YBsANWAbADVgGwA1YBsANWAbADVgGwA1YB - sANWAbADVgGwA1YBsANWAbADVgGwA1UBrQFdAlsBzgFPAS4BGgH/AVgBRQE7AfIDRgF+AwgBCv8A/wCe - AAMIAQoDOwFiAVwBWgFZAcwBWgFGATsB8gFcAU8BRgHsAV0BVgFRAeMBXgFXAVIB4gFeAVcBUgHiAV4B - VwFSAeIBXgFXAVIB4gFeAVcBUgHiAV4BVwFSAeIBXgFXAVIB4gFeAVcBUgHiAV4BVwFSAeIBXgFXAVIB - 4gFeAVcBUgHiAV4BVwFSAeIBXgFXAVIB4gFeAVcBUgHiAV4BUAFGAe0BVQE0ASAB/gFUAUYBPgHwA0kB - iAMLAQ6kAAMTARkDNgFYA00BkgNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8D - VQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DUgGgAzMBUQMGAQj/AP8ApgAEAQMTARoDNgFXAVACTwGbA1gB - twNWAbYDVgG2A1YBtgNWAbYDVgG2A1YBtgNWAbYDVgG2A1YBtgNWAbYDVgG2A1YBtgNWAbYDVgG2A1gB - twFVAlMBqgM1AVYDCAEKsAADAgEDAwgBCgMHAQkDBwEJAwcBCQMHAQkDBwEJAwcBCQMHAQkDBwEJAwcB - CQMHAQkDBwEJAwcBCQMHAQkDBwEJAwgBCgMFAQb/AP8AtgAEAQMHAQkDCwEOAwsBDgMLAQ4DCwEOAwsB - DgMLAQ4DCwEOAwsBDgMLAQ4DCwEOAwsBDgMLAQ4DCwEOAwsBDgMLAQ4DCwEOAwkBDAQC/wD/AP8A/wD/ - AP8A/wD/AP8A/wD/AP8A/wD/AP8AfwABQgFNAT4HAAE+AwABKAQAAQECAAFAAwABAQEAAQEGAAEIFgAD - /wEAEP8QABD/EAAQ/xAAAv8EAAr/EAAB/wH8BAABPwP/BAAC/xAAAf8B+AQAAR8C/wH8BAABPwH/EAAB - /wHwBAABDwL/AfgEAAEfAf8QAAH/AfAE/wEHAv8B8AQAAQ8B/xAAAf8B4QT/AYcC/wHwBP8BDwH/EAAB - /wHjBP8BxwL/AeEE/wGHAf8QAAH/AcME/wHDAv8B4QT/AYcB/xAAAf8BwwT/AcMC/wHjBP8BxwH/EAAB - /wHDBP8BwwL/AeME/wHHAf8QAAH/AcME/wHDAv8B4wH/AfkC/wHHAf8QAAH/AcMB+AEAAQ8B/wHDAv8B - 4wH/AfAC/wHHAf8QAAH/AcMB8AEAAQcB/wHDAv8B4wH/AeABfAF/AccB/xAAAf8BwwHgAQABAwEPAcMC - /wHjAf8BwAF8AT8BxwH/EAAB/wHDAeEB/wHAAQcBwwL/AeMB/wGEAXwBHwHHAf8QAAH/AcMB4QH/AeAB - BwHDAv8B4wHwAQgBfgEfAccB/xAAAf8BwwHhAf8B4AEHAcMC/wHjAfABGAFjAQ8BxwH/EAAB/wHDAeEB - /wHgAYcBwwL/AeMB4AEYAWMBDwHHAf8QAAH/AcMB4QH/AeMBxwHDAv8B4wHhAfgBYQGPAccB/xAAAf8B - wwHhAf8B4wHHAcMC/wHjAeEB+AFhAYcBxwH/EAAB/wHDAeEB/wHjAccBwwL/AeMB4QH4AXEBhwHHAf8Q - AAH/AcMB4QH/AeMBxwHDAv8B4wHhAfgBYQGHAccB/xAAAf8BwwHhAf8B4QHHAcMC/wHjAeEB+AFhAY8B - xwH/EAAB/wHDAeEB/wHgAUcBwwL/AeMB4AEYAWMBDwHHAf8QAAH/AcMB4QH/AeABBwHDAv8B4wHwARgB - YwEPAccB/xAAAf8BwwHhAf8B4AEHAcMC/wHjAfABCAF+AR8BxwH/EAAB/wHDAeABAAECAQcBwwL/AeMB - /wGEAXwBHwHHAf8QAAH/AcMB8AEAAQMBDwHDAv8B4wH/AcABfAE/AccB/xAAAf8BwwHwAQABBwH/AcMC - /wHjAf8B4AF8AX8BxwH/EAAB/wHDAfgBAAEPAf8BwwL/AeMB/wHwAv8BxwH/EAAB/wHDBP8BwwL/AeMB - /wH5Av8BxwH/EAAB/wHDBP8BwwL/AeME/wHHAf8QAAH/AcME/wHDAv8B4wT/AccB/xAAAf8BwwT/AcMC - /wHjBP8BxwH/EAAB/wHDBP8BwwL/AeME/wHHAf8QAAH/AcME/wHDAv8B4wT/AccB/xAAAf8BwwT/AcMC - /wHjBP8BxwH/EAAB/wHDAv8B4AEAAQMC/wHjAv8B4AEAAQcB/xAAAf8BwwL/AcABAAEDAv8B4wL/AcAB - AAEHAf8QAAH/AcMC/wHAAQABBwL/AeMC/wGAAQABBwH/EAAB/wHDAv8BhwH/AQcC/wHjAv8BhwH+AQ8B - /xAAAf8BwwL/AYcB/gEPAv8B4wL/AY8B/AEfAf8QAAH/AcMC/wGPAfwBHwL/AeMC/wGPAfgBPwH/EAAB - /wHDAv8BjwH4AT8C/wHjAv8BjwHwAX8B/xAAAf8BwwL/AY8B8AF/Av8B4wL/AY8B4AL/EAAB/wHDAv8B - jwHgA/8B4wL/AY8BwQL/EAAB/wHDAv8BjwHBA/8B4wL/AY8BgwL/EAAB/wHDAv8BjwGDA/8B4wL/AY8B - BwL/EAAB/wHDAv8BjwEHA/8B4wL/AY4BDwL/EAAB/wHDAv8BjgEPA/8B4wL/AYwBHwL/EAAB/wHDAv8B - jAEfA/8B4QL/AYgBPwL/EAAB/wHjAv8BiAE/A/8B4QL/AYABfwL/EAAB/wHhAv8BgAF/A/8B8AL/AYAD - /xAAAf8B8AL/AYAE/wHwAgABAQP/EAAB/wHwAgABAQT/AfgCAAEDA/8QAAH/AfgCAAEDBP8B/gIAAQcD - /xAAAf8B/AIAAQcF/wGAAQABHwP/EAAC/wIAAQ8L/xAAEP8QABD/EAAQ/xAACw== + CgMIAQoDCAEKAwgBCgMIAQoDCAEKAwgBCgMIAQoDCAEKAw0BEQMrAUIDWQG7AVcBRwFAAfEBQgJBAXMD + AwEE/wD/AF4AAxUBHAJdAVsBzwFcAVsBWQHWAx0BKYgAAw4BEgNWAbYBWgFRAUwB6QMlATdcAAMoATwB + WQFSAU0B6ANYAbcDFQEcgAADFQEcA1gBtwFcAVMBTQHnAykBPv8A/wBeAAM4AVwBSgE4ATEB9gNGAX6Q + AAM2AVcBUQE7ATUB9wNGAX9YAAMEAQUDTgGXAVoBUQFMAekDKAE7iAADJwE5AVkBUwFPAegDUAGaAwQB + Bf8A/wBWAAMGAQgDUgGjAVoBSgFAAfIDKwFCkAADGwEmAVwBVwFUAeYBVAJTAaYDBgEHVAADGgEkAV8B + XAFbAdoDVgGwAwgBCogAAwgBCgNVAa8CXQFbAdQDFgEe/wD/AFYAAwkBDAFYAlYBswFbAU0BSAHuAyMB + MpAAAxEBFgNdAdQBWQJXAbkDCgENVAADKwFBAVoBSgFEAfIDSQGFkAABSwJKAYoBWwFNAUgB7gMnATr/ + AP8AVgADCQELAVgCVgGzAVsBTQFIAe4DIwEykAADEAEVA1sB0wNZAbsDCwEOVAADLAFDAVgBTQFFAfED + QwF2kAADRAF5AVkBTQFEAfEDLAFD/wD/AFYAAwkBCwFYAlYBswFbAU0BSAHuAyMBMpAAAxABFQNbAdMD + WQG7AwsBDlQAAysBQgFYAU0BRgHxA0MBdjwACAJMAANEAXoBWgFNAUQB8QMrAUL/AP8AVgADCQELAVgC + VgGzAVsBTQFIAe4DIwEyHAADBgEIAx4BKgMpAT0DKAE8AygBPAMoATwDKAE8AygBPAMoATwDKAE8AygB + PAMoATwDKQE9AyMBMwMMAQ84AAMQARUDWwHTA1kBuwMLAQ5UAAMrAUIBWAFNAUYB8QNDAXY4AAMjATMB + TQJMAZEDSwGNAx8BLEgAA0QBegFaAU0BRAHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWwFNAUgB7gMjATIY + AAMSARgDTQGSAV8BVwFVAeUBWgFNAUgB7gFdAVQBTAHsAV0BVAFMAewBXQFUAUwB7AFdAVQBTAHsAV0B + VAFMAewBXQFUAUwB7AFdAVQBTAHsAV0BVAFMAewBXQFUAUwB7AFeAVEBSAHtAVwBUAFIAe0BVwJVAbQD + IwEzNAADEAEVA1sB0wNZAbsDCwEOVAADKwFCAVgBTQFGAfEDQwF2NAADJwE6AV0CWwHPAV8BVwFRAeUB + WgFQAUgB7QFWAlUBrgMJAQwUAAMEAQUDFQEcAwgBCiQAA0QBegFaAU0BRAHxAysBQv8A/wBWAAMJAQsB + WAJWAbMBWwFNAUgB7gMjATIUAAQCAUcBRgFHAYEBTQEvASEB+gFZAlcBuQJCAUEBcwM/AW0CQAE/AW4C + QAE/AW4CQAE/AW4CQAE/AW4CQAE/AW4CQAE/AW4CQAE/AW4CQAE/AW4DQAFvA1IBoAFKAToBMgH2AVkC + WAG6Aw0BEQgAAwkBDAMwAUoBQAI/AW4DIgExGAADEAEVA1sB0wNZAbsDCwEOVAADKwFCAVgBTQFGAfED + QwF2MAADJwE6AVwCWgHSAV4BWQFYAdcDKwFBA1ABnwFeAVkBVwHdAxUBHBQAAyMBMgFdAlsB0QNMAY4D + DAEQIAADRAF6AVoBTQFEAfEDKwFC/wD/AFYAAwkBCwFYAlYBswFbAU0BSAHuAyMBMhQAAxABFQNbAc0B + XgFaAVkB1wMaASQsAAMJAQsBUgJRAaEBWgFIAT4B8gMqAUADAgEDAygBPAFUAlMBqQFYAUoBQwHxAUQB + KwEjAfwBXQFcAVsByQMWAR4UAAMQARUDWwHTA1kBuwMLAQ5UAAMrAUIBWAFNAUYB8QNDAXYsAAMmATgB + XQJaAdIBXgFbAVkB2wMrAUIEAANNAZIBXQFYAVYB3wMVARwUAAMSARgDVQGuAUoBOAEkAfkDSgGJAwcB + CRwAA0QBegFaAU0BRAHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWwFNAUgB7gMjATIUAAMYASABXgFYAVYB + 4gFUAlMBqQMGAQgwAANCAXIBUQE8ATUB9wNGAX0DSQGIAVoBUAFOAekBVAFGAT8B8ANOAZgDVwG5AVkB + SQFCAfADJwE6FAADEAEVA1sB0wNZAbsDCwEOVAADKwFCAVgBTQFGAfEDQwF2GAADBgEHAy0BRQFEAkMB + dwNEAXgDRQF8AV0CWwHRAV4BWwFZAdsDLAFDBAAEAQNNAZMBXQFYAVYB3wMVARwYAAMWAR0DWAG4AVMB + RAE6AfMDNgFXHAADRAF6AVoBTQFEAfEDKwFC/wD/AFYAAwkBCwFYAlYBswFbAU0BSAHuAyMBMhQAAxgB + IAFfAVoBVwHhAVICUQGkAwUBBjAAA0ABbwFJAToBKQH9AU4BQAE0AfYBSgE4AS8B9gNYAbcDLQFFAwgB + CgNOAZUBWQFNAUMB8QMnAToUAAMQARUDWwHTA1kBuwMLAQ5UAAMrAUIBWAFNAUYB8QNDAXYYAAM2AVkB + WgFQAU4B6QFcAVMBTAHrAVwBVwFRAeYBXAFVAVEB5wJbAVoBzQMtAUQIAAQBA00BkwFdAVgBVgHfAxUB + HAgAAxIBFwMhATADAwEECAADIwEzAVsBWQFWAd4DWgHEAxEBFhgAA0QBegFaAU0BRAHxAysBQv8A/wBW + AAMJAQsBWAJWAbMBWwFNAUgB7gMjATIUAAMYASABXwFaAVcB4QFTAlIBpQMGAQcwAANAAW8BTQEqARkB + /wJbAVoB0wI7AToBYgMNAREEAAQBA00BkgFZAU0BQwHxAycBOhQAAxABFQNbAdMDWQG7AwsBDlQAAysB + QgFYAU0BRgHxA0MBdhQAAwYBCANTAakCWwFaAdMDJQE2AxcBHwMZASIDEgEYBAIIAAQBA00BkwFdAVgB + VgHfAxUBHAgAA0IBdAFfAVkBVQHgAy4BRggABAIDSQGGAVMBRAE7AfMDMQFMGAADRAF6AVoBTQFEAfED + KwFC/wD/AFYAAwkBCwFYAlYBswFbAU0BSAHuAyMBMhQAAxgBIAFfAVoBVwHhAVMCUgGlAwYBBzAAA0EB + cAFRATsBMwH3AzkBXxAAAUwCSwGPAVkBTQFDAfEDJwE6FAADEAEVA1sB0wNZAbsDCwEOVAADKwFCAVgB + TQFGAfEDQwF2FAADCQEMA1gBtwNZAbsDCgENGAAEAQNNAZMBXQFYAVYB3wMVARwIAAMnAToBWwFVAVMB + 5AFUAlMBqQMHAQkIAAMpAT4BVAFJAUMB8ANJAYUYAANEAXoBWgFNAUQB8QMrAUL/AP8AVgADCQELAVgC + VgGzAVsBTQFIAe4DIwEyFAADGAEgAV8BWgFXAeEBUwJSAaUDBgEHMAADQQFwAVMBQQE5AfQDMwFREAAD + TAGQAVkBTQFDAfEDJwE6FAADEAEVA1sB0wNZAbsDCwEOVAADKwFCAVgBTQFGAfEDQwF2FAADCQEMA1YB + tQFZAlcBvAMLAQ4YAAQBA00BkwFdAVgBVgHfAxUBHAgAAwQBBQFRAlABnwFbAVYBUgHkAxsBJQgAAxQB + GwFbAVoBVwHeA1IBowMFAQYUAANEAXoBWgFNAUQB8QMrAUL/AP8AVgADCQELAVgCVgGzAVsBTQFIAe4D + IwEyFAADGAEgAV8BWgFXAeEBUwJSAaUDBgEHMAADQQFwAVMBQQE5AfQDMwFSEAADTAGQAVkBTQFDAfED + JwE6FAADEAEVA1sB0wNZAbsDCwEOVAADKwFCAVgBTQFGAfEDQwF2FAADCQEMA1YBtQFZAlcBvAMLAQ4Y + AAQBA00BkwFdAVgBVgHfAxUBHAwAAUcCRgGBAV4BUAFIAe0DIgExCAADEgEXA1sB2AFUAlMBqQMGAQgU + AANEAXoBWgFNAUQB8QMrAUL/AP8AVgADCQELAVgCVgGzAVsBTQFIAe4DIwEyFAADGAEgAV8BWgFXAeEB + UwJSAaUDBgEHMAADQQFwAVMBQQE5AfQDMwFQEAADTAGQAVkBTQFDAfEDJwE6FAADEAEVA1sB0wNZAbsD + CwEOVAADKwFCAVgBTQFGAfEDQwF2FAADCQEMA1YBtQFZAlcBvAMLAQ4YAAQBA00BkwFdAVgBVgHfAxUB + HAgAAwQBBQFRAlABnwFfAVcBVAHlAxsBJQgAAxQBGwFdAVoBWQHdAVICUQGkAwUBBhQAA0QBegFaAU0B + RAHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWwFNAUgB7gMjATIUAAMYASABXwFaAVcB4QFTAlIBpQMGAQcw + AANBAXABTAE7ASYB+QJBAUABcQMFAQYMAANMAZABWQFNAUMB8QMnAToUAAMQARUDWwHTA1kBuwMLAQ5U + AAMrAUIBWAFNAUYB8QNDAXYUAAMJAQwDWAG3A1kBuwMKAQ0YAAQBA00BkwFdAVgBVgHfAxUBHAgAAyYB + OAFbAVYBUwHjA1UBrAMIAQoIAAMoATwBWQFLAUUB7wNJAYYYAANEAXoBWgFNAUQB8QMrAUL/AP8AVgAD + CQELAVgCVgGzAVsBTQFIAe4DIwEyFAADGAEgAV8BWgFXAeEBUwJSAaUDBgEHMAADQAFvAU4BKwEbAf8B + VQFJAUAB8AFQAk8BmwMjATMDAwEEBAADTAGQAVkBTQFDAfEDJwE6FAADEAEVA1sB0wNZAbsDCwEOVAAD + KwFCAVgBTQFGAfEDQwF2FAADBwEJA1QBqwFeAVoBWQHSAygBPAMeASoDHwEsAxQBGwQCCAAEAQNNAZMB + XQFYAVYB3wMVARwIAAFEAkMBdwFeAVkBVgHhAy4BRwgABAEDRwGCAVMBRQE7AfMDMgFPGAADRAF6AVoB + TQFEAfEDKwFC/wD/AFYAAwkBCwFYAlYBswFbAU0BSAHuAyMBMhQAAxgBIAFfAVoBVwHhAVICUQGkAwUB + BjAAA0ABbwFWASwBIQH7AlsBWQHeAVMBQQE5AfQBWwFVAU8B5AFLAkoBiwMcAScDSwGNAVkBTQFDAfED + JwE6FAADEAEVA1sB0wNZAbsDCwEOVAADKwFCAVgBTQFGAfEDQwF2GAADOQFfAVwBUwFMAesBWAFPAUgB + 6gFcAVMBUAHnAVoBUAFJAekBXQFbAVoBzwMuAUcIAAQBA00BkwFdAVgBVgHfAxUBHAgAAxMBGQMiATED + AwEECAADHwEsAV4BWwFZAdsBXQFcAVsByQMTARkYAANEAXoBWgFNAUQB8QMrAUL/AP8AVgADCQELAVgC + VgGzAVsBTQFIAe4DIwEyFAADFwEfAV8BWgFZAeEBVgJVAa4DCAEKMAADQwF1AVEBPAE1AfcDPAFkAzgB + XAFdAVwBWwHJAVABJwEhAfsBXgFaAVkB1wFfAVwBWwHVAVoBTQFIAe4DJgE4FAADEAEVA1sB0wNZAbsD + CwEOVAADKwFCAVgBTQFGAfEDQwF2GAADBgEIAzABSgJAAT8BbgM/AW0BRAJDAXcCXQFbAdQBXQFZAVcB + 3QMrAUEEAAQBA00BkwFdAVgBVgHfAxUBHBgAAxABFQNTAaoBUwFEAToB8wI5ATgBXRwAA0QBegFaAU0B + RAHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWwFNAUgB7gMjATIUAAMNAREDVwHCAVsBVgFTAeQDKQE+AwQB + BQMDAQQDAwEEAwMBBAMDAQQDAwEEAwMBBAMDAQQDAwEEAwMBBAMDAQQDFgEeA1gBtwFeAVABSAHtAyUB + NwQAAxQBGwFEAkMBdwFcAVsBWQHZAVMBQgE5AfQDVgGwAxABFRQAAxABFQNbAdMDWQG7AwsBDlQAAysB + QgFYAU0BRgHxA0MBdiwAAycBOQFdAlsB0QFfAVsBWQHVAygBPAQAA00BkgFdAVgBVgHfAxYBHRQAAwwB + EANQAZ0BSAE3ASMB+QFLAkoBigMHAQkcAANEAXoBWgFNAUQB8QMrAUL/AP8AVgADCQELAVgCVgGzAVsB + TQFIAe4DIwEyGAADPAFmAVoBSAFAAfIBXQFYAVYB3wFTAlIBpQFRAlABnAFRAlABnQFRAlABnQFRAlAB + nQFRAlABnQFRAlABnQFRAlABnQFRAlABnQFRAlABnQFRAlABnwFdAlsBzAFRASoBIQH7A1EBngMIAQoI + AAQCAxsBJQMrAUEDEQEWGAADEAEVA1sB0wNZAbsDCwEOVAADKwFCAVgBTQFGAfEDQwF2MAADKAE7AVwB + WwFZAdYBXQJbAdQDKwFBA1ABnQFdAVsBVwHcAxQBGxQAAyIBMQFdAlsB0QNMAZADDQERIAADRAF6AVoB + TQFEAfEDKwFC/wD/AFYAAwkBCwFYAlYBswFbAU0BSAHuAyMBMhgAAwYBCAM7AWMDVwG8AlsBWQHYAlsB + WQHYAlsBWQHYAlsBWQHYAlsBWQHYAlsBWQHYAlsBWQHYAlsBWQHYAlsBWQHYAlsBWQHYAlsBWQHYA1wB + yANHAYIDEwEZNAADEAEVA1sB0wNZAbsDCwEOVAADKwFCAVgBTQFGAfEDQwF2NAADKgFAAVwBWwFZAdYB + XwFXAVQB5QFaAVEBSgHqAVQCUwGmAwgBChQAAwUBBgMWAR0DCAEKJAADRAF6AVoBTQFEAfEDKwFC/wD/ + AFYAAwkBCwFYAlYBswFbAU0BSAHuAyMBMhwABAEDCwEOAxIBFwMSARcDEgEXAxIBFwMSARcDEgEXAxIB + FwMSARcDEgEXAxIBFwMSARcDDgESAwMBBDgAAxABFQNbAdMDWQG7AwsBDlQAAysBQgFYAU0BRgHxA0MB + djgAAyUBNwNOAZUDSQGHAxkBIkgAA0QBegFaAU0BRAHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWwFNAUgB + 7gMjATKQAAMQARUDWwHTA1kBuwMLAQ5UAAMrAUIBWAFNAUYB8QNDAXY8AAMCAQMEAkwAA0QBegFaAU0B + RAHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWwFNAUgB7gMjATKQAAMQARUDWwHTA1kBuwMLAQ5UAAMrAUIB + WAFNAUYB8QNDAXaQAANEAXoBWgFNAUQB8QMrAUL/AP8AVgADCQELAVgCVgGzAVsBTQFIAe4DIwEykAAD + EAEVA1sB0wNZAbsDCwEOVAADKwFCAVgBTQFGAfEDQwF2kAADRAF6AVoBTQFEAfEDKwFC/wD/AFYAAwkB + CwFYAlYBswFbAU0BSAHuAyMBMpAAAxABFQNbAdMDWQG7AwsBDlQAAysBQgFYAU0BRgHxA0MBdpAAA0QB + egFaAU0BRAHxAysBQv8A/wBWAAMJAQsBWAJWAbMBWwFNAUgB7gMjATKQAAMQARUDWwHTA1kBuwMLAQ5U + AAMrAUIBWAFNAUYB8QNDAXaQAANEAXoBWgFNAUQB8QMrAUL/AP8AVgADCQELAVgCVgGzAVsBTQFIAe4D + IwEykAADEAEVA1sB0wNZAbsDCwEOVAADKwFCAVgBTQFGAfEDQwF2kAADRAF6AVoBTQFEAfEDKwFC/wD/ + AFYAAwkBCwFYAlYBswFbAU0BSAHuAyMBMpAAAxABFQFeAVsBWgHSA1kBuwMLAQ5UAAMrAUIBWAFNAUYB + 8QNDAXaQAANEAXgBWgFNAUQB8QMrAUL/AP8AVgADCQELAVgCVgGzAVsBTQFIAe4DIwEyVAAEAgMaASMD + NAFTAzoBYAM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFeAkABPwFuAVwB + VwFUAecBWgJYAboDCwEOVAADKwFCAVgBTQFGAfEDQwF2VAADCQELAysBQQM7AWMDOwFiAzsBYgM7AWID + OwFiAzsBYgM7AWIDOwFiAzsBYgM7AWIDOwFiAzsBYgM5AV8BVwJVAbQBWgFMAUMB8AMqAT//AP8AVgAD + CQELAVgCVgGzAVsBTQFIAe4DIwEyUAADBgEIAz4BawFfAVwBWgHaAVMBQwE6AfQBWQFNAUUB7wFZAU0B + RQHvAVkBTQFFAe8BWQFNAUUB7wFZAU0BRQHvAVkBTQFFAe8BWQFNAUUB7wFZAU0BRQHvAVkBTQFFAe8B + WQFNAUUB7wFZAU0BRQHvAV4BUQFIAe0BUQE/ATUB9wFNASwBGAH/A1MBpwMGAQhUAAMrAUIBWAFNAUYB + 8QNDAXZQAAMSARgDUAGaAVoBUQFOAekCWwFZAdgBXQFcAVsByQNcAcgDXAHIA1wByANcAcgDXAHIA1wB + yANcAcgDXAHIA1wByANbAcUBXQFbAVkB3AFMASsBFwH/Al0BWwHRAxgBIf8A/wBWAAMJAQsBWAJWAbMB + WwFNAUgB7gMjATJQAAM8AWQBVwFJAUIB8QJdAVsBzgJBAUABcQM0AVMDMwFSAzMBUgMzAVIDMwFSAzMB + UgMzAVIDMwFSAzMBUgMzAVIDMgFPAz8BbAFcAVcBVAHnAVkBOwEuAfgCPAE7AWRYAAMrAUIBWAFNAUYB + 8QNDAXZMAAMGAQcDTQGSAVkBSwFFAe4DQwF2AxcBHwMQARUDEAEVAxABFQMQARUDEAEVAxABFQMQARUD + EAEVAxABFQMPARMDIQEvA1kBwAFRATsBMwH3AUECQAFwBAL/AP8AVgADCQELAVgCVgGzAVsBTQFIAe4D + IwEyTAADEwEaA1sB0AFdAVsBWAHcAyMBMiwAAxcBHwNVAbEBSQE4ATEB9gFLAkoBiwMJAQtYAAMrAUIB + WAFNAUYB8QNDAXZMAAMjATIBWQFTAU8B6AFRAlABnAMFAQYoAAMTARoDVAGrAVMBQAE5AfQDRgF/AwgB + Cv8A/wBaAAMJAQsBWAJWAbMBWwFNAUgB7gMjATJMAAMnAToBWAFNAUYB8QNRAZ4DBAEFKAADGQEiA1gB + twFHATUBJAH5A0sBjQMLAQ5cAAMrAUIBWAFNAUYB8QNDAXZMAAMzAVEBWgFIAUAB8gI+AT0BaSgAAxQB + GwNVAawBUwE/ATkB9AFHAkYBgAMJAQv/AP8AXgADCQELAVgCVgGzAVsBTQFIAe4DIwEyTAADKgE/AVoB + SgFEAfIDSgGJKAADGQEiA1gBtwFIATcBJQH5A0sBjAMLAQ5gAAMrAUIBWAFNAUYB8QNDAXZMAAM0AVMB + WQFKAUIB7wM5AV4kAAMUARsDVQGsAVEBPQEzAfUBRwJGAYEDCAEK/wD/AGIAAwkBCwFYAlYBswFbAU0B + SAHuAyMBMkwAAykBPgFaAUoBRAHyA0kBiCQAAxkBIgNYAbcBRwE1ASMB+QNLAYwDCwEOZAADKwFCAVgB + TQFGAfEDQwF2TAADMwFSAVkBSgFCAe8DOQFfIAADFAEbA1UBrAFRAT0BNAH1A0YBfwMIAQr/AP8AZgAD + CQELAVgCVgGzAVsBTQFIAe4DIwEyTAADKQE+AVoBSgFEAfIDSQGIIAADGQEiA1gBtwFHATUBJAH5A0sB + jAMLAQ5oAAMrAUIBWAFNAUYB8QNDAXZMAAMzAVIBWQFKAUIB7wM5AV8cAAMUARsDVQGsAVMBPwE5AfQB + RwJGAYADCQEL/wD/AGoAAwkBCwFYAlYBswFbAU0BSAHuAyMBMkwAAykBPgFaAUoBRAHyA0kBiBwAAxkB + IgNYAbcBSAE3ASUB+QNLAYwDCwEObAADKwFCAVgBTQFGAfEDQwF2TAADMwFSAVkBSgFCAe8DOQFfGAAD + FAEbA1UBrAFRAT0BMwH1AUcCRgGBAwgBCv8A/wBuAAMJAQsBWAJWAbMBWwFNAUgB7gMjATJMAAMpAT4B + WgFKAUQB8gNJAYgYAAMZASIDWAG3AVMBOgEqAfgDSwGMAwsBDnAAAysBQgFYAU0BRgHxA0MBdkwAAzMB + UgFZAUoBQgHvAzkBXxQAAxQBGwNVAawBUwE/ATkB9ANGAX8DCAEK/wD/AHIAAwkBCwFYAlYBswFbAU0B + SAHuAyMBMkwAAykBPgFaAUoBRAHyA0kBiBQAAxkBIgNYAbcBSAE3ASQB+QNLAYwDCwEOdAADKwFCAVgB + TQFGAfEDQwF2TAADMwFSAVkBSgFCAe8DOQFfEAADFAEbA1UBrAFTAT8BOQH0AUcCRgGAAwkBC/8A/wB2 + AAMJAQsBWAJWAbMBWwFNAUgB7gMjATJMAAMpAT4BWgFKAUQB8gNJAYgQAAMZASIDWAG3AVUBOgEtAfgD + SwGMAwsBDngAAywBQwFYAU0BRQHxA0MBdkwAAzMBUgFZAUoBQgHvAzkBXwwAAxQBGwNVAawBUwE/ATgB + 9AFHAkYBgQMIAQr/AP8AegADCQEMAVcCVQG0AVsBTQFIAe4DIwEyTAADKQE+AVoBSgFEAfIDSQGIDAAD + GQEiA1gBtwFTAToBKgH4A0sBjAMLAQ58AAMqAT8BWAFNAUYB8QFIAkcBg0wAAzMBUgFZAUoBQgHvAzkB + XwgAAxQBGwNVAawBUwE/ATgB9ANGAX8DCAEK/wD/AH4AAwYBCANSAaQBWgFKAUAB8gMrAUJMAAMpAT4B + WgFKAUQB8gNJAYgIAAMZASIDWAG3AVMBOgErAfgDSwGMAwsBDoAAAxYBHQNbAdABVwJVAbEDCAEKSAAD + MwFSAVkBSgFCAe8DOQFfBAADFAEbA1UBrAFTAT8BOAH0AUcCRgGAAwkBC/8A/wCGAAM5AV0BSgE4ATEB + 9gNGAX5MAAMpAT4BWgFKAUQB8gNJAYgEAAMZASIDWAG3AVUBOgEtAfgDSwGMAwsBDoQABAEDSQGGAVwB + VAFQAecDKAE7SAADMwFSAVkBSgFCAe8DOQFeAxIBFwNVAawBUwE/ATgB9AFHAkYBgQMIAQr/AP8AigAD + FgEdA1sB0AJdAVsB1AMcASdIAAMpAT4BWgFKAUQB8gNIAYQDFwEfA1gBtwFTAToBKwH4A0sBjAMLAQ6M + AAMgAS0BXAFZAVgB2QFXAlYBtQMTARpEAAMzAVIBXAFPAUsB7ANBAXADUgGlAVMBPwE4AfQDRgF/AwgB + Cv8A/wCSAAM8AWUBUgFEATsB8wNVAa0DGwEmRAADKAE8AVkBTAFGAe8BUQJQAZ8DVQGvAUgBNwEkAfkD + SwGMAwsBDpAABAEDMwFRAV0BVgFSAeIDVwG8Ay8BSQMPARMDBwEJAwgBCgMIAQoDCAEKAwgBCgMIAQoD + CAEKAwgBCgMIAQoDCAEKAwgBCgMIAQoDCAEKAwgBCgMFAQYDNwJaAUoBQQHyAV4BWgFWAeIBVwFKAUIB + 7wFHAkYBgAMJAQv/AP8AlgADBwEJA0YBfgFTAUQBOgHzAlsBWgHTA0QBeQMoATwDGgEjAxoBIwMaASMD + GgEjAxoBIwMaASMDGgEjAxoBIwMaASMDGgEjAxoBIwMaASMDGgEjAxoBIwMYASADOAFbAVkBTgFHAfEB + UAFBASsB+QFRATsBNAH3A0sBjAMLAQ6YAAQBAy8BSQJcAVsByAFaAVEBTAHpAlwBWwHIA1UBrwNWAbAD + VgGwA1YBsANWAbADVgGwA1YBsANWAbADVgGwA1YBsANWAbADVgGwA1YBsANWAbADVQGtA10BzgFPAS4B + GgH/AVoBSAFAAfIDRgF+AwgBCv8A/wCeAAMIAQoDOwFiAV0BWwFaAcwBWgFIAUAB8gFdAVEBSwHsAV4B + WQFUAeMBXgFZAVYB4gFeAVkBVgHiAV4BWQFWAeIBXgFZAVYB4gFeAVkBVgHiAV4BWQFWAeIBXgFZAVYB + 4gFeAVkBVgHiAV4BWQFWAeIBXgFZAVYB4gFeAVkBVgHiAV4BWQFWAeIBXgFZAVYB4gFeAVkBVgHiAV4B + UgFJAe0BVgE1ASEB/gFVAUkBQQHwA0kBiAMLAQ6kAAMTARkDNgFYA00BkgNVAa8DVQGvA1UBrwNVAa8D + VQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DVQGvA1UBrwNVAa8DUgGgAzMBUQMGAQj/ + AP8ApgAEAQMTARoDNgFXAVACTwGbA1gBtwNWAbYDVgG2A1YBtgNWAbYDVgG2A1YBtgNWAbYDVgG2A1YB + tgNWAbYDVgG2A1YBtgNWAbYDVgG2A1gBtwFVAlMBqgM1AVYDCAEKsAADAgEDAwgBCgMHAQkDBwEJAwcB + CQMHAQkDBwEJAwcBCQMHAQkDBwEJAwcBCQMHAQkDBwEJAwcBCQMHAQkDBwEJAwgBCgMFAQb/AP8AtgAE + AQMHAQkDCwEOAwsBDgMLAQ4DCwEOAwsBDgMLAQ4DCwEOAwsBDgMLAQ4DCwEOAwsBDgMLAQ4DCwEOAwsB + DgMLAQ4DCwEOAwkBDAQC/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/AP8AfwABQgFNAT4HAAE+AwAB + KAQAAQECAAFAAwABAQEAAQEGAAEIFgAD/wEAEP8QABD/EAAQ/xAAAv8EAAr/EAAB/wH8BAABPwP/BAAC + /xAAAf8B+AQAAR8C/wH8BAABPwH/EAAB/wHwBAABDwL/AfgEAAEfAf8QAAH/AfAE/wEHAv8B8AQAAQ8B + /xAAAf8B4QT/AYcC/wHwBP8BDwH/EAAB/wHjBP8BxwL/AeEE/wGHAf8QAAH/AcME/wHDAv8B4QT/AYcB + /xAAAf8BwwT/AcMC/wHjBP8BxwH/EAAB/wHDBP8BwwL/AeME/wHHAf8QAAH/AcME/wHDAv8B4wH/AfkC + /wHHAf8QAAH/AcMB+AEAAQ8B/wHDAv8B4wH/AfAC/wHHAf8QAAH/AcMB8AEAAQcB/wHDAv8B4wH/AeAB + fAF/AccB/xAAAf8BwwHgAQABAwEPAcMC/wHjAf8BwAF8AT8BxwH/EAAB/wHDAeEB/wHAAQcBwwL/AeMB + /wGEAXwBHwHHAf8QAAH/AcMB4QH/AeABBwHDAv8B4wHwAQgBfgEfAccB/xAAAf8BwwHhAf8B4AEHAcMC + /wHjAfABGAFjAQ8BxwH/EAAB/wHDAeEB/wHgAYcBwwL/AeMB4AEYAWMBDwHHAf8QAAH/AcMB4QH/AeMB + xwHDAv8B4wHhAfgBYQGPAccB/xAAAf8BwwHhAf8B4wHHAcMC/wHjAeEB+AFhAYcBxwH/EAAB/wHDAeEB + /wHjAccBwwL/AeMB4QH4AXEBhwHHAf8QAAH/AcMB4QH/AeMBxwHDAv8B4wHhAfgBYQGHAccB/xAAAf8B + wwHhAf8B4QHHAcMC/wHjAeEB+AFhAY8BxwH/EAAB/wHDAeEB/wHgAUcBwwL/AeMB4AEYAWMBDwHHAf8Q + AAH/AcMB4QH/AeABBwHDAv8B4wHwARgBYwEPAccB/xAAAf8BwwHhAf8B4AEHAcMC/wHjAfABCAF+AR8B + xwH/EAAB/wHDAeABAAECAQcBwwL/AeMB/wGEAXwBHwHHAf8QAAH/AcMB8AEAAQMBDwHDAv8B4wH/AcAB + fAE/AccB/xAAAf8BwwHwAQABBwH/AcMC/wHjAf8B4AF8AX8BxwH/EAAB/wHDAfgBAAEPAf8BwwL/AeMB + /wHwAv8BxwH/EAAB/wHDBP8BwwL/AeMB/wH5Av8BxwH/EAAB/wHDBP8BwwL/AeME/wHHAf8QAAH/AcME + /wHDAv8B4wT/AccB/xAAAf8BwwT/AcMC/wHjBP8BxwH/EAAB/wHDBP8BwwL/AeME/wHHAf8QAAH/AcME + /wHDAv8B4wT/AccB/xAAAf8BwwT/AcMC/wHjBP8BxwH/EAAB/wHDAv8B4AEAAQMC/wHjAv8B4AEAAQcB + /xAAAf8BwwL/AcABAAEDAv8B4wL/AcABAAEHAf8QAAH/AcMC/wHAAQABBwL/AeMC/wGAAQABBwH/EAAB + /wHDAv8BhwH/AQcC/wHjAv8BhwH+AQ8B/xAAAf8BwwL/AYcB/gEPAv8B4wL/AY8B/AEfAf8QAAH/AcMC + /wGPAfwBHwL/AeMC/wGPAfgBPwH/EAAB/wHDAv8BjwH4AT8C/wHjAv8BjwHwAX8B/xAAAf8BwwL/AY8B + 8AF/Av8B4wL/AY8B4AL/EAAB/wHDAv8BjwHgA/8B4wL/AY8BwQL/EAAB/wHDAv8BjwHBA/8B4wL/AY8B + gwL/EAAB/wHDAv8BjwGDA/8B4wL/AY8BBwL/EAAB/wHDAv8BjwEHA/8B4wL/AY4BDwL/EAAB/wHDAv8B + jgEPA/8B4wL/AYwBHwL/EAAB/wHDAv8BjAEfA/8B4QL/AYgBPwL/EAAB/wHjAv8BiAE/A/8B4QL/AYAB + fwL/EAAB/wHhAv8BgAF/A/8B8AL/AYAD/xAAAf8B8AL/AYAE/wHwAgABAQP/EAAB/wHwAgABAQT/AfgC + AAEDA/8QAAH/AfgCAAEDBP8B/gIAAQcD/xAAAf8B/AIAAQcF/wGAAQABHwP/EAAC/wIAAQ8L/xAAEP8Q + ABD/EAAQ/xAACw== From 5e6cc2920217c2c70d3307749da21c05222398d8 Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Sat, 3 Sep 2022 14:18:56 -0700 Subject: [PATCH 11/16] Updated location for vcredist_x86.exe dependency --- CHANGELOG.md | 1 + install/CREATE_INSTALLER.md | 2 +- views/FrameMain.cs | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 768592a..3371353 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * Added dialog when yt-dlp is automatically updated * Moved Settings into a centralized place and out of WinForms * Improved menu item organization +* Updated location for vcredist_x86.exe dependency * Add transcoding options to media ingestion * Transcoding status update fixes * Add visual progress bar for download and transcoding diff --git a/install/CREATE_INSTALLER.md b/install/CREATE_INSTALLER.md index a84a1d3..dfa4102 100644 --- a/install/CREATE_INSTALLER.md +++ b/install/CREATE_INSTALLER.md @@ -4,7 +4,7 @@ * Download Dependencies and place them into deps/ - [ffmpeg.exe and ffprobe.exe](https://www.ffmpeg.org/download.html#build-windows) - [AtomicParsley.exe](http://atomicparsley.sourceforge.net/) - - [vcredist_x86.exe](https://www.microsoft.com/en-us/download/details.aspx?id=5555) + - [vcredist_x86.exe](https://www.microsoft.com/en-us/download/details.aspx?id=26999) - [windowsdesktop-runtime-6.0.8-win-x64.exe](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) * Compile and build Release version of app within Visual Studio * Increment the version within installer.nsi, version file at root, and in AssemblyInfo in *.csproj diff --git a/views/FrameMain.cs b/views/FrameMain.cs index ed8c235..303d282 100644 --- a/views/FrameMain.cs +++ b/views/FrameMain.cs @@ -455,7 +455,7 @@ private void FrameMain_Shown(object sender, EventArgs e) private void downloadVS2010RedistributableToolStripMenuItem_Click(object sender, EventArgs e) { - Process.Start(new ProcessStartInfo("https://www.microsoft.com/en-us/download/confirmation.aspx?id=5555") { UseShellExecute = true }); + Process.Start(new ProcessStartInfo("https://www.microsoft.com/en-us/download/details.aspx?id=26999") { UseShellExecute = true }); } private void openDownloadFolderToolStripMenuItem_Click(object sender, EventArgs e) From 15021cca7d42b38358d2f00e91ccdc15ac3a09dd Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Sat, 3 Sep 2022 14:28:53 -0700 Subject: [PATCH 12/16] Fixed update check issue when app starts up --- CHANGELOG.md | 3 ++- src/AppUpdate.cs | 2 +- src/Common.cs | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3371353..08c7ab6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ * Moved Settings into a centralized place and out of WinForms * Improved menu item organization * Updated location for vcredist_x86.exe dependency +* Fixed update check issue when app starts up + * Add transcoding options to media ingestion * Transcoding status update fixes * Add visual progress bar for download and transcoding @@ -16,7 +18,6 @@ * Fix uninstaller missing some files' * Add video thumbnail as icon in list items when downloading or transcoding * Fixed issue with media not opening when double clicking item after it's completed -* Fixed update check issue when app starts up * Use workspace area for files still being downloaded or transcoded * Improved media ingestion format selection UI/UX diff --git a/src/AppUpdate.cs b/src/AppUpdate.cs index f2ca17b..751a990 100644 --- a/src/AppUpdate.cs +++ b/src/AppUpdate.cs @@ -29,7 +29,7 @@ public static AppVersionModel checkForNewAppVersion() model.version = serverVersion; // substring(1) used to removed "v" from versions to compare - var dstVersion = new Version(serverVersion.Substring(1)); + var dstVersion = new Version(model.version.Substring(1)); var localVersion = new Version(Common.getAppVersion().Substring(1)); var result = dstVersion.CompareTo(localVersion); diff --git a/src/Common.cs b/src/Common.cs index 5afac57..3759055 100644 --- a/src/Common.cs +++ b/src/Common.cs @@ -46,7 +46,8 @@ public static string getAppVersion() System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly(); FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(assembly.Location); string version = fvi.FileVersion; - return String.Format("v{0}", version.Substring(0, version.LastIndexOf("."))); + + return String.Format("v{0}", version); } public static bool isValidURL(string URL) From 44f1fa2c0208e94dfa1c266f26363f1d9f88ce59 Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Sat, 3 Sep 2022 15:25:59 -0700 Subject: [PATCH 13/16] minor --- src/Common.cs | 11 +++++++++++ views/FrameNewMedia.cs | 21 ++++++++++++--------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/src/Common.cs b/src/Common.cs index 3759055..462b7ab 100644 --- a/src/Common.cs +++ b/src/Common.cs @@ -199,5 +199,16 @@ public static string RandomString(int length) return new string(Enumerable.Repeat(chars, length) .Select(s => s[random.Next(s.Length)]).ToArray()); } + + public static string RemoveAllNonNumericValuesFromString(string str) + { + var nums = Regex.Replace(str, @"[^\d]", String.Empty); + if (nums == "") + { + nums = "0"; + } + + return nums; + } } } diff --git a/views/FrameNewMedia.cs b/views/FrameNewMedia.cs index 553386d..6276f47 100644 --- a/views/FrameNewMedia.cs +++ b/views/FrameNewMedia.cs @@ -163,14 +163,17 @@ private void ingestMediaUrl() cbVideoFormat.Items.Add(recommendedVideoFormat); } - try - { - videoFormatList.Sort((x, y) => Int32.Parse(x.Trim().Split(' ')[0]).CompareTo(Int32.Parse(y.Trim().Split(' ')[0]))); - } - catch (FormatException ex) - { - Console.WriteLine(ex); - } + //try + //{ + // attempt to sort by bitrate but not sure it's necessary + //videoFormatList.Sort((x, y) => Int32.Parse(Common.RemoveAllNonNumericValuesFromString(x.Trim().Split('/')[0].Trim())) + // .CompareTo(Int32.Parse(Common.RemoveAllNonNumericValuesFromString(y.Trim().Split('/')[1].Trim())) + // )); + //} + //catch (FormatException ex) + //{ + // Console.WriteLine(ex); + //} videoFormatList.Reverse(); // TODO: optimze this out foreach (var item in videoFormatList) { @@ -187,7 +190,7 @@ private void ingestMediaUrl() try { - audioFormatList.Sort((x, y) => Int32.Parse(x.Trim().Split(' ')[0]).CompareTo(Int32.Parse(y.Trim().Split(' ')[0]))); + audioFormatList.Sort((x, y) => Double.Parse(x.Trim().Split(' ')[0]).CompareTo(Double.Parse(y.Trim().Split(' ')[0]))); } catch (Exception ex) { From a1444c4893aa29e57fee4ae7c236d9abddcff450 Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Sat, 3 Sep 2022 15:59:20 -0700 Subject: [PATCH 14/16] improved installer deps yt-dlp issue. Fixed uninstaller issues --- CHANGELOG.md | 25 ++++++++++++++----------- install/installer.nsi | 34 +++++++++++++++++----------------- src/YouTubeDL.cs | 7 +++++++ 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08c7ab6..f62d986 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,26 +1,29 @@ -# v0.9.0 - -* Fixed issue with yt-dlp not auto updating -* Added dialog when yt-dlp is automatically updated -* Moved Settings into a centralized place and out of WinForms -* Improved menu item organization -* Updated location for vcredist_x86.exe dependency -* Fixed update check issue when app starts up +# v0.9.0 - updating release * Add transcoding options to media ingestion * Transcoding status update fixes -* Add visual progress bar for download and transcoding * Remove old separate ingestion dialog choice * Updated app icon * Added Get Command feature to list after media ingestion has started * Added write subs to file option -* Updated authentication section UI in ingestion dialog -* Fix uninstaller missing some files' * Add video thumbnail as icon in list items when downloading or transcoding * Fixed issue with media not opening when double clicking item after it's completed * Use workspace area for files still being downloaded or transcoded * Improved media ingestion format selection UI/UX +# v0.8.1 + +* Fixed issue with yt-dlp not auto updating +* Added dialog when yt-dlp is automatically updated +* Moved Settings into a centralized place and out of WinForms +* Improved menu item organization +* Updated location for vcredist_x86.exe dependency +* Fixed update check issue when app starts up +* Fix uninstaller missing some files +* Fixed installer not attempting to install yt-dlp.exe +* Add visual progress bar for download and transcoding +* Updated authentication section UI in ingestion dialog + # v0.8.0 * Upgraded .NET framework to 6.x from 4.x. diff --git a/install/installer.nsi b/install/installer.nsi index bc6ed8f..ac64969 100644 --- a/install/installer.nsi +++ b/install/installer.nsi @@ -93,8 +93,9 @@ SectionEnd Section -Additional SetShellVarContext all -!define INSTDIR_DATA "$APPDATA\${APP_NAME}\bin" -SetOutPath "${INSTDIR_DATA}" +!define INSTDIR_DATA_BASE "$APPDATA\${APP_NAME}" +!define INSTDIR_DATA_BIN "$APPDATA\${APP_NAME}\bin" +SetOutPath "${INSTDIR_DATA_BIN}" File "deps\AtomicParsley.exe" File "deps\ffmpeg.exe" File "deps\ffprobe.exe" @@ -104,11 +105,11 @@ File "deps\windowsdesktop-runtime-6.0.8-win-x64.exe" # Download latest version of youtube-dl for end-user # TODO: This currently runs in background and silently. On computers with slow or spotty Internet connections may be an issue # This should wait until finished before continuing... -nsExec::ExecToStack 'powershell.exe -Command "(new-object System.Net.WebClient).DownloadFile(\"https://yt-dl.org/downloads/latest/youtube-dl.exe\", \"${INSTDIR_DATA}\youtube-dl.exe\")"' +nsExec::ExecToStack 'powershell.exe -Command "(new-object System.Net.WebClient).DownloadFile(\"https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp.exe\", \"${INSTDIR_DATA_BIN}\yt-dlp.exe\")"' # Run external installer -ExecWait "${INSTDIR_DATA}\vcredist_x86.exe" -ExecWait "${INSTDIR_DATA}\windowsdesktop-runtime-6.0.8-win-x64.exe" +ExecWait "${INSTDIR_DATA_BIN}\vcredist_x86.exe" +ExecWait "${INSTDIR_DATA_BIN}\windowsdesktop-runtime-6.0.8-win-x64.exe" SectionEnd @@ -157,26 +158,25 @@ SectionEnd Section Uninstall ${INSTALL_TYPE} Delete "$INSTDIR\JackTheVideoRipper.exe" +Delete "$INSTDIR\JackTheVideoRipper.dll" +Delete "$INSTDIR\JackTheVideoRipper.runtimeconfig.json" Delete "$INSTDIR\Newtonsoft.Json.dll" -Delete "$INSTDIR\Newtonsoft.Json.xml" -Delete "$INSTDIR\System.IO.Compression.dll" -Delete "$INSTDIR\System.IO.Compression.ZipFile.dll" +Delete "$INSTDIR\System.Management.dll" Delete "$INSTDIR\uninstall.exe" !ifdef WEB_SITE Delete "$INSTDIR\${APP_NAME} website.url" !endif -RmDir "$INSTDIR" +RmDir /r "$INSTDIR" -!ifndef NEVER_UNINSTALL -Delete "${INSTDIR_DATA}\AtomicParsley.exe" -Delete "${INSTDIR_DATA}\ffmpeg.exe" -Delete "${INSTDIR_DATA}\ffprobe.exe" -Delete "${INSTDIR_DATA}\vcredist_x86.exe" -Delete "${INSTDIR_DATA}\windowsdesktop-runtime-6.0.8-win-x64.exe" +Delete "${INSTDIR_DATA_BIN}\AtomicParsley.exe" +Delete "${INSTDIR_DATA_BIN}\ffmpeg.exe" +Delete "${INSTDIR_DATA_BIN}\ffprobe.exe" +Delete "${INSTDIR_DATA_BIN}\vcredist_x86.exe" +Delete "${INSTDIR_DATA_BIN}\windowsdesktop-runtime-6.0.8-win-x64.exe" -RmDir "$TEMP\${APP_NAME}" -!endif +RmDir /r "${INSTDIR_DATA_BASE}" +RmDir /r "$TEMP\${APP_NAME}" !ifdef REG_START_MENU !insertmacro MUI_STARTMENU_GETFOLDER "Application" $SM_Folder diff --git a/src/YouTubeDL.cs b/src/YouTubeDL.cs index e8e6fbf..fb99d0c 100644 --- a/src/YouTubeDL.cs +++ b/src/YouTubeDL.cs @@ -58,6 +58,13 @@ public static void checkForUpdates() var previousVersion = Settings.Data.lastVersionYouTubeDL; var currentVersion = getVersion(); + if (previousVersion == "") + { + Settings.Data.lastVersionYouTubeDL = currentVersion; + Settings.Save(); + return; + } + if (previousVersion != currentVersion) { Settings.Data.lastVersionYouTubeDL = currentVersion; From 9e75aa58a44685f6e2c65e8daf729dbf26ec6c03 Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Sat, 3 Sep 2022 16:05:19 -0700 Subject: [PATCH 15/16] minor --- CHANGELOG.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f62d986..da1af23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ * Fixed issue with media not opening when double clicking item after it's completed * Use workspace area for files still being downloaded or transcoded * Improved media ingestion format selection UI/UX +* Add visual progress bar for download and transcoding +* Updated authentication section UI in ingestion dialog # v0.8.1 @@ -21,8 +23,6 @@ * Fixed update check issue when app starts up * Fix uninstaller missing some files * Fixed installer not attempting to install yt-dlp.exe -* Add visual progress bar for download and transcoding -* Updated authentication section UI in ingestion dialog # v0.8.0 From df1f824fd3e8a22db0aaf0883a0058242b9e781c Mon Sep 17 00:00:00 2001 From: Dan Gillespie Date: Sat, 3 Sep 2022 16:06:39 -0700 Subject: [PATCH 16/16] increase app version --- JackTheVideoRipper.csproj | 4 ++-- install/installer.nsi | 2 +- version | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/JackTheVideoRipper.csproj b/JackTheVideoRipper.csproj index 86e26a8..5f8bc6b 100644 --- a/JackTheVideoRipper.csproj +++ b/JackTheVideoRipper.csproj @@ -8,8 +8,8 @@ enable JackTheVideoRipper.Program assets\app.ico - 0.8.0 - 0.8.0 + 0.8.1 + 0.8.1 diff --git a/install/installer.nsi b/install/installer.nsi index ac64969..fd8c31b 100644 --- a/install/installer.nsi +++ b/install/installer.nsi @@ -6,7 +6,7 @@ !define APP_NAME "JackTheVideoRipper" !define COMP_NAME "dantheman213" !define WEB_SITE "https://github.com/dantheman213/JackTheVideoRipper" -!define VERSION "0.8.0" +!define VERSION "0.8.1" !define COPYRIGHT "Dan � 2022" !define DESCRIPTION "Download media easily with a few point and clicks." !define LICENSE_TXT "..\LICENSE" diff --git a/version b/version index 4ea5caf..349ca0e 100644 --- a/version +++ b/version @@ -1 +1 @@ -v0.8.0 \ No newline at end of file +v0.8.1 \ No newline at end of file