From bbf6a643eb0b56bbe1ba676c8dc1ecb7c01951d8 Mon Sep 17 00:00:00 2001 From: thomasbousquet Date: Thu, 2 May 2024 17:39:58 +0200 Subject: [PATCH 001/123] - Add support for Alpah Release Notes on .f version of 6000 Unity. - Fix an issue with the alpha release notes website where the list included changes of the closest version, even though the user wants a strict diff. Thisi is done by adding a string list representation of the updatelist so as to be able to use Tools.FindNeatestVersion on that. --- UnityLauncherPro/GetUnityUpdates.cs | 7 ++++++- UnityLauncherPro/MainWindow.xaml.cs | 5 +++-- UnityLauncherPro/Tools.cs | 11 ++++++++--- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/UnityLauncherPro/GetUnityUpdates.cs b/UnityLauncherPro/GetUnityUpdates.cs index e5a9b89..f745a53 100644 --- a/UnityLauncherPro/GetUnityUpdates.cs +++ b/UnityLauncherPro/GetUnityUpdates.cs @@ -44,8 +44,12 @@ public static async Task Scan() return result; } - public static Updates[] Parse(string items) + public static Updates[] Parse(string items, ref List updatesAsString) { + if (updatesAsString == null) + updatesAsString = new List(); + updatesAsString.Clear(); + isDownloadingUnityList = false; //SetStatus("Downloading list of Unity versions ... done"); var receivedList = items.Split(new[] { Environment.NewLine }, StringSplitOptions.None); @@ -68,6 +72,7 @@ public static Updates[] Parse(string items) u.ReleaseDate = DateTime.ParseExact(row[3], "MM/dd/yyyy", CultureInfo.InvariantCulture); u.Version = versionTemp; releases.Add(versionTemp, u); + updatesAsString.Add(versionTemp); } prevVersion = versionTemp; diff --git a/UnityLauncherPro/MainWindow.xaml.cs b/UnityLauncherPro/MainWindow.xaml.cs index 407f963..9909639 100644 --- a/UnityLauncherPro/MainWindow.xaml.cs +++ b/UnityLauncherPro/MainWindow.xaml.cs @@ -46,6 +46,7 @@ public partial class MainWindow : Window System.Windows.Forms.NotifyIcon notifyIcon; Updates[] updatesSource; + public static List updatesAsStrings; string _filterString = null; bool multiWordSearch = false; @@ -744,7 +745,7 @@ async Task CallGetUnityUpdates() var items = await task; //Console.WriteLine("CallGetUnityUpdates=" + items == null); if (items == null) return; - updatesSource = GetUnityUpdates.Parse(items); + updatesSource = GetUnityUpdates.Parse(items, ref updatesAsStrings); if (updatesSource == null) return; dataGridUpdates.ItemsSource = updatesSource; } @@ -1034,7 +1035,7 @@ private async void OnTabSelectionChanged(object sender, SelectionChangedEventArg var items = await task; if (task.IsCompleted == false || task.IsFaulted == true) return; if (items == null) return; - updatesSource = GetUnityUpdates.Parse(items); + updatesSource = GetUnityUpdates.Parse(items, ref updatesAsStrings); if (updatesSource == null) return; dataGridUpdates.ItemsSource = updatesSource; } diff --git a/UnityLauncherPro/Tools.cs b/UnityLauncherPro/Tools.cs index 11ce175..cf53971 100644 --- a/UnityLauncherPro/Tools.cs +++ b/UnityLauncherPro/Tools.cs @@ -593,12 +593,17 @@ public static bool OpenReleaseNotes(string version) //var url = Tools.GetUnityReleaseURL(version); string url = null; - if (Properties.Settings.Default.useAlphaReleaseNotes && !version.Contains("6000")) + bool noAlphaReleaseNotesPage = version.Contains("6000") && !version.Contains("f"); + if (Properties.Settings.Default.useAlphaReleaseNotes && !noAlphaReleaseNotesPage) { + //with the alpha release notes, we want a diff between the 2 versions, but the site just shows all the changes inclusive of from + // so we need to compare the currently selected version to the one right after it that is available (installed or not) + var closestVersion = Tools.FindNearestVersion(version, MainWindow.unityInstalledVersions.Keys.ToList(), true); - if (closestVersion == null) closestVersion = version; + var getNextVersionToClosest = closestVersion == null ? null : Tools.FindNearestVersion(version, MainWindow.updatesAsStrings); + if (getNextVersionToClosest == null) getNextVersionToClosest = version; - url = "https://alpha.release-notes.ds.unity3d.com/search?fromVersion=" + closestVersion + "&toVersion=" + version; + url = "https://alpha.release-notes.ds.unity3d.com/search?fromVersion=" + getNextVersionToClosest + "&toVersion=" + version; } else { From fc07b4cbd31e344f5ed0caa0ee78defed351d5c2 Mon Sep 17 00:00:00 2001 From: thomasbousquet Date: Tue, 21 May 2024 21:43:21 +0200 Subject: [PATCH 002/123] Fix bug in FindNearest that would insert the queried version in the list even if it was already, thus creating the wrong behaviour when pressing ReleaseNotes for versions of the same major release. Make the logic for finding the comparison version for the alpha release notes more verbose. --- UnityLauncherPro/Tools.cs | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/UnityLauncherPro/Tools.cs b/UnityLauncherPro/Tools.cs index cf53971..f966954 100644 --- a/UnityLauncherPro/Tools.cs +++ b/UnityLauncherPro/Tools.cs @@ -582,7 +582,7 @@ public static bool VersionIsAlpha(string version) public static bool VersionIsChinese(string version) { - return version.Contains("c1"); + return version.Contains("c1"); } // open release notes page in browser @@ -596,14 +596,19 @@ public static bool OpenReleaseNotes(string version) bool noAlphaReleaseNotesPage = version.Contains("6000") && !version.Contains("f"); if (Properties.Settings.Default.useAlphaReleaseNotes && !noAlphaReleaseNotesPage) { - //with the alpha release notes, we want a diff between the 2 versions, but the site just shows all the changes inclusive of from - // so we need to compare the currently selected version to the one right after it that is available (installed or not) - - var closestVersion = Tools.FindNearestVersion(version, MainWindow.unityInstalledVersions.Keys.ToList(), true); - var getNextVersionToClosest = closestVersion == null ? null : Tools.FindNearestVersion(version, MainWindow.updatesAsStrings); - if (getNextVersionToClosest == null) getNextVersionToClosest = version; + //with the alpha release notes, we want a diff between an installed version and the one selected, but the site just shows all the changes inclusive of "fromVersion=vers" + //so if we find a good installed candidate, we need the version just above it (installed or not) + var comparisonVersion = version; + var closestInstalledVersion = Tools.FindNearestVersion(version, MainWindow.unityInstalledVersions.Keys.ToList(), true); + if (closestInstalledVersion != null) + { + comparisonVersion = closestInstalledVersion; + var nextVersionAfterInstalled = Tools.FindNearestVersion(closestInstalledVersion, MainWindow.updatesAsStrings); + if (nextVersionAfterInstalled != null) comparisonVersion = nextVersionAfterInstalled; + + } - url = "https://alpha.release-notes.ds.unity3d.com/search?fromVersion=" + getNextVersionToClosest + "&toVersion=" + version; + url = "https://alpha.release-notes.ds.unity3d.com/search?fromVersion=" + comparisonVersion + "&toVersion=" + version; } else { @@ -1004,7 +1009,8 @@ public static string FindNearestVersion(string currentVersion, List allA string result = null; // add current version to list, to sort it with others - allAvailable.Add(currentVersion); + if (!allAvailable.Contains(currentVersion)) + allAvailable.Add(currentVersion); // sort list if (checkBelow) From 196595eef2595695e1cfbcc7d2c20858ba2a0637 Mon Sep 17 00:00:00 2001 From: thomasbousquet Date: Tue, 21 May 2024 22:29:51 +0200 Subject: [PATCH 003/123] As of 21 May 2024, Alpha release notes doesn't support non-final version anymore; so change the url logic for that. Update the settings option text in UI --- UnityLauncherPro/MainWindow.xaml | 2 +- UnityLauncherPro/Tools.cs | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/UnityLauncherPro/MainWindow.xaml b/UnityLauncherPro/MainWindow.xaml index 3cf2ac4..a421396 100644 --- a/UnityLauncherPro/MainWindow.xaml +++ b/UnityLauncherPro/MainWindow.xaml @@ -790,7 +790,7 @@ - + + + + + - + @@ -84,10 +88,10 @@ - + + diff --git a/UnityLauncherPro/MainWindow.xaml.cs b/UnityLauncherPro/MainWindow.xaml.cs index 9909639..6ede019 100644 --- a/UnityLauncherPro/MainWindow.xaml.cs +++ b/UnityLauncherPro/MainWindow.xaml.cs @@ -46,7 +46,7 @@ public partial class MainWindow : Window System.Windows.Forms.NotifyIcon notifyIcon; Updates[] updatesSource; - public static List updatesAsStrings; + public static List updatesAsStrings = new List(); string _filterString = null; bool multiWordSearch = false; diff --git a/UnityLauncherPro/Tools.cs b/UnityLauncherPro/Tools.cs index 960c404..86b372b 100644 --- a/UnityLauncherPro/Tools.cs +++ b/UnityLauncherPro/Tools.cs @@ -1014,6 +1014,9 @@ private static string FetchUnityVersionNumberFromHTML(string url) public static string FindNearestVersion(string currentVersion, List allAvailable, bool checkBelow = false) { + if (allAvailable == null) + return null; + string result = null; // add current version to list, to sort it with others From e16e225f0b68ddaf7415dca8cc291f69b1099451 Mon Sep 17 00:00:00 2001 From: mika Date: Tue, 11 Jun 2024 00:29:41 +0300 Subject: [PATCH 005/123] Update Unity installer URL parser (fixes #155), #BUILD --- UnityLauncherPro/MainWindow.xaml | 2 +- UnityLauncherPro/MainWindow.xaml.cs | 11 +- UnityLauncherPro/Tools.cs | 297 ++++++++++++++++------------ 3 files changed, 179 insertions(+), 131 deletions(-) diff --git a/UnityLauncherPro/MainWindow.xaml b/UnityLauncherPro/MainWindow.xaml index 3cf2ac4..0c750fc 100644 --- a/UnityLauncherPro/MainWindow.xaml +++ b/UnityLauncherPro/MainWindow.xaml @@ -440,7 +440,7 @@ - + - - diff --git a/UnityLauncherPro/MainWindow.xaml.cs b/UnityLauncherPro/MainWindow.xaml.cs index 311331f..14c823b 100644 --- a/UnityLauncherPro/MainWindow.xaml.cs +++ b/UnityLauncherPro/MainWindow.xaml.cs @@ -140,6 +140,7 @@ void Start() // clear updates grid dataGridUpdates.Items.Clear(); + dataGridUpdates.SelectionChanged += DataGridUpdates_SelectionChanged; // clear buildreport grids gridBuildReport.Items.Clear(); @@ -177,6 +178,18 @@ void Start() isInitializing = false; } + private void DataGridUpdates_SelectionChanged(object sender, SelectionChangedEventArgs e) + { + var selectedUp = GetSelectedUpdate(); + bool showCumulative = false; + if (selectedUp != null) + { + var unityVer = GetSelectedUpdate().Version; + showCumulative = Tools.HasAlphaReleaseNotes(unityVer); + } + btnShowCumulatedReleaseNotes.IsEnabled = showCumulative; + } + // bring old window to front, but needs matching appname.. https://stackoverflow.com/a/36804161/5452781 private static void ActivateOtherWindow() { @@ -1542,6 +1555,12 @@ private void BtnOpenWebsite_Click(object sender, RoutedEventArgs e) Tools.OpenReleaseNotes(unity?.Version); } + private void BtnShowCumulatedReleaseNotes_Click(object sender, RoutedEventArgs e) + { + var unity = GetSelectedUpdate(); + Tools.OpenReleaseNotes_Cumulative(unity?.Version); + } + private void ChkMinimizeToTaskbar_CheckedChanged(object sender, RoutedEventArgs e) { if (this.IsActive == false) return; // dont run code on window init diff --git a/UnityLauncherPro/Tools.cs b/UnityLauncherPro/Tools.cs index e0c91a0..08f10bd 100644 --- a/UnityLauncherPro/Tools.cs +++ b/UnityLauncherPro/Tools.cs @@ -588,36 +588,20 @@ public static bool VersionIsChinese(string version) //as of 21 May 2021, only final 'f' versions are now available on the alpha release notes for Unity 2018 and newer. 2017 and 5 still have patch 'p' versions as well. - public static bool HasAlphaReleaseNotes(string version) => version.Contains("f") || version.Contains("p"); + public static bool HasAlphaReleaseNotes(string version) => VersionIsArchived(version) || VersionIsPatch(version); + + public static string GetAlphaReleaseNotesURL(string fromVersion, string toVersion = null) + => "https://alpha.release-notes.ds.unity3d.com/search?fromVersion=" + fromVersion + "&toVersion=" + (toVersion != null ? toVersion : fromVersion); // open release notes page in browser public static bool OpenReleaseNotes(string version) { bool result = false; if (string.IsNullOrEmpty(version)) return false; - string url = null; - if (Properties.Settings.Default.useAlphaReleaseNotes && HasAlphaReleaseNotes(version)) + if(Properties.Settings.Default.useAlphaReleaseNotes && HasAlphaReleaseNotes(version)) { - //with the alpha release notes, we want a diff between an installed version and the one selected, but the site just shows all the changes inclusive of "fromVersion=vers" - //so if we find a good installed candidate, we need the version just above it (installed or not) that has release notes page - var comparisonVersion = version; - var closestInstalledVersion = Tools.FindNearestVersion(version, MainWindow.unityInstalledVersions.Keys.ToList(), true); - if (closestInstalledVersion != null) - { - comparisonVersion = closestInstalledVersion; - string nextFinalVersionAfterInstalled = closestInstalledVersion; - - //wwe need a loop here, to find the nearest final version. It might be better to warn the user about this before opening the page. - do - nextFinalVersionAfterInstalled = Tools.FindNearestVersion(nextFinalVersionAfterInstalled, MainWindow.updatesAsStrings); - while (nextFinalVersionAfterInstalled != null && !HasAlphaReleaseNotes(nextFinalVersionAfterInstalled)); - - if (nextFinalVersionAfterInstalled != null) comparisonVersion = nextFinalVersionAfterInstalled; - - } - - url = "https://alpha.release-notes.ds.unity3d.com/search?fromVersion=" + comparisonVersion + "&toVersion=" + version; + url = GetAlphaReleaseNotesURL(version); } else { @@ -630,6 +614,36 @@ public static bool OpenReleaseNotes(string version) return result; } + public static bool OpenReleaseNotes_Cumulative(string version) + { + bool result = false; + if (string.IsNullOrEmpty(version)) return false; + + string url = null; + var comparisonVersion = version; + //with the alpha release notes, we want a diff between an installed version and the one selected, but the site just shows all the changes inclusive of "fromVersion=vers" + //so if we find a good installed candidate, we need the version just above it (installed or not) that has release notes page + var closestInstalledVersion = Tools.FindNearestVersion(version, MainWindow.unityInstalledVersions.Keys.ToList(), true); + if (closestInstalledVersion != null) + { + comparisonVersion = closestInstalledVersion; + string nextFinalVersionAfterInstalled = closestInstalledVersion; + + //wwe need a loop here, to find the nearest final version. It might be better to warn the user about this before opening the page. + do + nextFinalVersionAfterInstalled = Tools.FindNearestVersion(nextFinalVersionAfterInstalled, MainWindow.updatesAsStrings); + while (nextFinalVersionAfterInstalled != null && !HasAlphaReleaseNotes(nextFinalVersionAfterInstalled)); + + if (nextFinalVersionAfterInstalled != null) comparisonVersion = nextFinalVersionAfterInstalled; + + } + url = GetAlphaReleaseNotesURL(comparisonVersion,version); + + OpenURL(url); + result = true; + return result; + } + public static void OpenURL(string url) { Process.Start(url); From 30f774787bfdafe50c4bb8c6a0026e9084232ab1 Mon Sep 17 00:00:00 2001 From: mika Date: Sun, 11 Aug 2024 22:52:39 +0300 Subject: [PATCH 007/123] add null check for productname (#159), trim search string (leading/trailing spaces) --- UnityLauncherPro/MainWindow.xaml.cs | 2 +- UnityLauncherPro/Tools.cs | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/UnityLauncherPro/MainWindow.xaml.cs b/UnityLauncherPro/MainWindow.xaml.cs index c1ecc6a..f7e02cc 100644 --- a/UnityLauncherPro/MainWindow.xaml.cs +++ b/UnityLauncherPro/MainWindow.xaml.cs @@ -287,7 +287,7 @@ void FilterRecentProjects() void FilterUpdates() { - _filterString = txtSearchBoxUpdates.Text; + _filterString = txtSearchBoxUpdates.Text.Trim(); ICollectionView collection = CollectionViewSource.GetDefaultView(dataGridUpdates.ItemsSource); if (collection == null) return; diff --git a/UnityLauncherPro/Tools.cs b/UnityLauncherPro/Tools.cs index d673f0e..323af78 100644 --- a/UnityLauncherPro/Tools.cs +++ b/UnityLauncherPro/Tools.cs @@ -172,7 +172,14 @@ internal static string ReadProjectName(string projectPath) public static string GetFileVersionData(string path) { FileVersionInfo fvi = FileVersionInfo.GetVersionInfo(path); - var res = fvi.ProductName.Replace("(64-bit)", "").Replace("(32-bit)", "").Replace("Unity", "").Trim(); + var ver = fvi.ProductName; + if (string.IsNullOrEmpty(ver) == true) + { + ver = fvi.FileDescription; + if (string.IsNullOrEmpty(ver) == true) return null; + ver = ver.Replace("Installer", "").Trim(); + } + var res = ver.Replace("(64-bit)", "").Replace("(32-bit)", "").Replace("Unity", "").Trim(); return res; } From 052ea6fbfefda845e1655e1f9e8a3b2745c8ab43 Mon Sep 17 00:00:00 2001 From: mika Date: Mon, 12 Aug 2024 12:32:57 +0300 Subject: [PATCH 008/123] check if project settings file is old binary --- UnityLauncherPro/MainWindow.xaml.cs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/UnityLauncherPro/MainWindow.xaml.cs b/UnityLauncherPro/MainWindow.xaml.cs index c1ecc6a..793e2ac 100644 --- a/UnityLauncherPro/MainWindow.xaml.cs +++ b/UnityLauncherPro/MainWindow.xaml.cs @@ -2525,10 +2525,21 @@ private void MenuItemBrowsePersistentDataPath_Click(object sender, RoutedEventAr if (string.IsNullOrEmpty(projPath) == true) return; var psPath = Path.Combine(projPath, "ProjectSettings", "ProjectSettings.asset"); - if (File.Exists(psPath) == false) return; + if (File.Exists(psPath) == false) + { + Console.WriteLine("Project settings not found: " + psPath); + return; + } // read project settings var rows = File.ReadAllLines(psPath); + // NOTE old projects have binary version of this file, so cannot parse it, check if first line contains YAML + if (rows[0].IndexOf("YAML") == -1) + { + Console.WriteLine("Project settings file is binary, cannot parse: " + psPath); + return; + } + // search company and product name rows for (int i = 0, len = rows.Length; i < len; i++) { From d19848ff963b37f51d371e9c24b9ffab7d4e2577 Mon Sep 17 00:00:00 2001 From: Elias Hodel Date: Mon, 12 Aug 2024 11:49:58 +0200 Subject: [PATCH 009/123] Add option to search projects parent folders to get the current git branch --- UnityLauncherPro/GetProjects.cs | 10 +- UnityLauncherPro/MainWindow.xaml | 1 + UnityLauncherPro/MainWindow.xaml.cs | 20 +- .../Properties/Settings.Designer.cs | 529 +++++++----------- UnityLauncherPro/Properties/Settings.settings | 6 + UnityLauncherPro/Tools.cs | 53 +- 6 files changed, 272 insertions(+), 347 deletions(-) diff --git a/UnityLauncherPro/GetProjects.cs b/UnityLauncherPro/GetProjects.cs index 95f7051..caa05a9 100644 --- a/UnityLauncherPro/GetProjects.cs +++ b/UnityLauncherPro/GetProjects.cs @@ -15,7 +15,7 @@ public static class GetProjects // convert target platform name into valid buildtarget platform name, NOTE this depends on unity version, now only 2019 and later are supported public static Dictionary remapPlatformNames = new Dictionary { { "StandaloneWindows64", "Win64" }, { "StandaloneWindows", "Win" }, { "Android", "Android" }, { "WebGL", "WebGL" } }; - public static List Scan(bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false, StringCollection AllProjectPaths = null) + public static List Scan(bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false, StringCollection AllProjectPaths = null, bool searchGitbranchRecursivly = false) { List projectsFound = new List(); @@ -53,7 +53,7 @@ public static List Scan(bool getGitBranch = false, bool getPlasticBranc projectPath = (string)key.GetValue(valueName); } - var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform); + var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform, searchGitbranchRecursivly); //Console.WriteLine(projectPath+" "+p.TargetPlatform); // if want to hide project and folder path for screenshot @@ -94,7 +94,7 @@ public static List Scan(bool getGitBranch = false, bool getPlasticBranc // if not found from registry, add to recent projects list if (found == false) { - var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform); + var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform, searchGitbranchRecursivly); if (p != null) projectsFound.Add(p); } } @@ -121,7 +121,7 @@ public static List Scan(bool getGitBranch = false, bool getPlasticBranc return projectsFound; } // Scan() - static Project GetProjectInfo(string projectPath, bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false) + static Project GetProjectInfo(string projectPath, bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false, bool searchGitbranchRecursivly = false) { bool folderExists = Directory.Exists(projectPath); @@ -166,7 +166,7 @@ static Project GetProjectInfo(string projectPath, bool getGitBranch = false, boo string gitBranch = ""; if (getGitBranch == true) { - gitBranch = folderExists ? Tools.ReadGitBranchInfo(projectPath) : null; + gitBranch = folderExists ? Tools.ReadGitBranchInfo(projectPath, searchGitbranchRecursivly) : null; // check for plastic, if enabled if (getPlasticBranch == true && gitBranch == null) { diff --git a/UnityLauncherPro/MainWindow.xaml b/UnityLauncherPro/MainWindow.xaml index 0c750fc..c5a2e76 100644 --- a/UnityLauncherPro/MainWindow.xaml +++ b/UnityLauncherPro/MainWindow.xaml @@ -725,6 +725,7 @@ + diff --git a/UnityLauncherPro/MainWindow.xaml.cs b/UnityLauncherPro/MainWindow.xaml.cs index de8d78d..9afb601 100644 --- a/UnityLauncherPro/MainWindow.xaml.cs +++ b/UnityLauncherPro/MainWindow.xaml.cs @@ -131,7 +131,7 @@ void Start() //Properties.Settings.Default.projectPaths = null; //Properties.Settings.Default.Save(); - projectsSource = GetProjects.Scan(getGitBranch: (bool)chkShowGitBranchColumn.IsChecked, getPlasticBranch: (bool)chkCheckPlasticBranch.IsChecked, getArguments: (bool)chkShowLauncherArgumentsColumn.IsChecked, showMissingFolders: (bool)chkShowMissingFolderProjects.IsChecked, showTargetPlatform: (bool)chkShowPlatform.IsChecked, AllProjectPaths: Properties.Settings.Default.projectPaths); + projectsSource = GetProjects.Scan(getGitBranch: (bool)chkShowGitBranchColumn.IsChecked, getPlasticBranch: (bool)chkCheckPlasticBranch.IsChecked, getArguments: (bool)chkShowLauncherArgumentsColumn.IsChecked, showMissingFolders: (bool)chkShowMissingFolderProjects.IsChecked, showTargetPlatform: (bool)chkShowPlatform.IsChecked, AllProjectPaths: Properties.Settings.Default.projectPaths, searchGitbranchRecursivly: (bool)chkGetGitBranchRecursively.IsChecked); Console.WriteLine("projectsSource.Count: " + projectsSource.Count); @@ -408,6 +408,7 @@ void LoadSettings() chkQuitAfterOpen.IsChecked = Properties.Settings.Default.closeAfterProject; chkShowLauncherArgumentsColumn.IsChecked = Properties.Settings.Default.showArgumentsColumn; chkShowGitBranchColumn.IsChecked = Properties.Settings.Default.showGitBranchColumn; + chkGetGitBranchRecursively.IsChecked = Properties.Settings.Default.searchGitFolderRecursivly; chkCheckPlasticBranch.IsChecked = Properties.Settings.Default.checkPlasticBranch; chkShowMissingFolderProjects.IsChecked = Properties.Settings.Default.showProjectsMissingFolder; chkAllowSingleInstanceOnly.IsChecked = Properties.Settings.Default.AllowSingleInstanceOnly; @@ -777,7 +778,7 @@ public void RefreshRecentProjects() // take currently selected project row lastSelectedProjectIndex = gridRecent.SelectedIndex; // rescan recent projects - projectsSource = GetProjects.Scan(getGitBranch: (bool)chkShowGitBranchColumn.IsChecked, getPlasticBranch: (bool)chkCheckPlasticBranch.IsChecked, getArguments: (bool)chkShowLauncherArgumentsColumn.IsChecked, showMissingFolders: (bool)chkShowMissingFolderProjects.IsChecked, showTargetPlatform: (bool)chkShowPlatform.IsChecked, AllProjectPaths: Settings.Default.projectPaths); + projectsSource = GetProjects.Scan(getGitBranch: (bool)chkShowGitBranchColumn.IsChecked, getPlasticBranch: (bool)chkCheckPlasticBranch.IsChecked, getArguments: (bool)chkShowLauncherArgumentsColumn.IsChecked, showMissingFolders: (bool)chkShowMissingFolderProjects.IsChecked, showTargetPlatform: (bool)chkShowPlatform.IsChecked, AllProjectPaths: Settings.Default.projectPaths, searchGitbranchRecursivly: (bool)chkGetGitBranchRecursively.IsChecked); gridRecent.ItemsSource = projectsSource; // fix sorting on refresh @@ -852,7 +853,7 @@ Project GetNewProjectData(string folder) p.Version = Tools.GetProjectVersion(folder); p.Arguments = Tools.ReadCustomProjectData(folder, launcherArgumentsFile); if ((bool)chkShowPlatform.IsChecked == true) p.TargetPlatform = Tools.GetTargetPlatform(folder); - if ((bool)chkShowGitBranchColumn.IsChecked == true) p.GITBranch = Tools.ReadGitBranchInfo(folder); + if ((bool)chkShowGitBranchColumn.IsChecked == true) p.GITBranch = Tools.ReadGitBranchInfo(folder, (bool)chkGetGitBranchRecursively.IsChecked); return p; } @@ -1587,6 +1588,17 @@ private void ChkShowGitBranchColumn_CheckedChanged(object sender, RoutedEventArg RefreshRecentProjects(); } + private void ChkGetGitBranchRecursively_CheckedChanged(object sender, RoutedEventArgs e) + { + if (this.IsActive == false) + return; // dont run code on window init + + Settings.Default.searchGitFolderRecursivly = (bool)chkGetGitBranchRecursively.IsChecked; + Settings.Default.Save(); + RefreshRecentProjects(); + } + + private void ChkQuitAfterOpen_CheckedChanged(object sender, RoutedEventArgs e) { if (this.IsActive == false) return; // dont run code on window init @@ -2930,7 +2942,7 @@ public void ProcessExitedCallBack(Project proj) var tempProj = projectsSource[i]; tempProj.Modified = Tools.GetLastModifiedTime(proj.Path); tempProj.Version = Tools.GetProjectVersion(proj.Path); - tempProj.GITBranch = Tools.ReadGitBranchInfo(proj.Path); + tempProj.GITBranch = Tools.ReadGitBranchInfo(proj.Path, false); tempProj.TargetPlatform = Tools.GetTargetPlatform(proj.Path); projectsSource[i] = tempProj; gridRecent.Items.Refresh(); diff --git a/UnityLauncherPro/Properties/Settings.Designer.cs b/UnityLauncherPro/Properties/Settings.Designer.cs index ae6beea..146e05c 100644 --- a/UnityLauncherPro/Properties/Settings.Designer.cs +++ b/UnityLauncherPro/Properties/Settings.Designer.cs @@ -8,697 +8,570 @@ // //------------------------------------------------------------------------------ -namespace UnityLauncherPro.Properties -{ - - +namespace UnityLauncherPro.Properties { + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.4.0.0")] - internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase - { - + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); - - public static Settings Default - { - get - { + + public static Settings Default { + get { return defaultInstance; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("880")] - public int windowWidth - { - get - { + public int windowWidth { + get { return ((int)(this["windowWidth"])); } - set - { + set { this["windowWidth"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("650")] - public int windowHeight - { - get - { + public int windowHeight { + get { return ((int)(this["windowHeight"])); } - set - { + set { this["windowHeight"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool minimizeToTaskbar - { - get - { + public bool minimizeToTaskbar { + get { return ((bool)(this["minimizeToTaskbar"])); } - set - { + set { this["minimizeToTaskbar"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool registerExplorerMenu - { - get - { + public bool registerExplorerMenu { + get { return ((bool)(this["registerExplorerMenu"])); } - set - { + set { this["registerExplorerMenu"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool closeAfterProject - { - get - { + public bool closeAfterProject { + get { return ((bool)(this["closeAfterProject"])); } - set - { + set { this["closeAfterProject"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool closeAfterExplorer - { - get - { + public bool closeAfterExplorer { + get { return ((bool)(this["closeAfterExplorer"])); } - set - { + set { this["closeAfterExplorer"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool showArgumentsColumn - { - get - { + public bool showArgumentsColumn { + get { return ((bool)(this["showArgumentsColumn"])); } - set - { + set { this["showArgumentsColumn"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool showGitBranchColumn - { - get - { + public bool showGitBranchColumn { + get { return ((bool)(this["showGitBranchColumn"])); } - set - { + set { this["showGitBranchColumn"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public int[] gridColumnWidths - { - get - { + public int[] gridColumnWidths { + get { return ((int[])(this["gridColumnWidths"])); } - set - { + set { this["gridColumnWidths"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool showProjectsMissingFolder - { - get - { + public bool showProjectsMissingFolder { + get { return ((bool)(this["showProjectsMissingFolder"])); } - set - { + set { this["showProjectsMissingFolder"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool AllowSingleInstanceOnly - { - get - { + public bool AllowSingleInstanceOnly { + get { return ((bool)(this["AllowSingleInstanceOnly"])); } - set - { + set { this["AllowSingleInstanceOnly"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] - public string preferredVersion - { - get - { + public string preferredVersion { + get { return ((string)(this["preferredVersion"])); } - set - { + set { this["preferredVersion"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] - public string newProjectsRoot - { - get - { + public string newProjectsRoot { + get { return ((string)(this["newProjectsRoot"])); } - set - { + set { this["newProjectsRoot"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool askNameForQuickProject - { - get - { + public bool askNameForQuickProject { + get { return ((bool)(this["askNameForQuickProject"])); } - set - { + set { this["askNameForQuickProject"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool enableProjectRename - { - get - { + public bool enableProjectRename { + get { return ((bool)(this["enableProjectRename"])); } - set - { + set { this["enableProjectRename"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool streamerMode - { - get - { + public bool streamerMode { + get { return ((bool)(this["streamerMode"])); } - set - { + set { this["streamerMode"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool showTargetPlatform - { - get - { + public bool showTargetPlatform { + get { return ((bool)(this["showTargetPlatform"])); } - set - { + set { this["showTargetPlatform"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] - public string webglBuildPath - { - get - { + public string webglBuildPath { + get { return ((string)(this["webglBuildPath"])); } - set - { + set { this["webglBuildPath"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool useCustomTheme - { - get - { + public bool useCustomTheme { + get { return ((bool)(this["useCustomTheme"])); } - set - { + set { this["useCustomTheme"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("theme.ini")] - public string themeFile - { - get - { + public string themeFile { + get { return ((string)(this["themeFile"])); } - set - { + set { this["themeFile"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool enablePlatformSelection - { - get - { + public bool enablePlatformSelection { + get { return ((bool)(this["enablePlatformSelection"])); } - set - { + set { this["enablePlatformSelection"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool runAutomatically - { - get - { + public bool runAutomatically { + get { return ((bool)(this["runAutomatically"])); } - set - { + set { this["runAutomatically"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool useCustomLastModified - { - get - { + public bool useCustomLastModified { + get { return ((bool)(this["useCustomLastModified"])); } - set - { + set { this["useCustomLastModified"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("dd/MM/yyyy HH:mm:ss")] - public string customDateFormat - { - get - { + public string customDateFormat { + get { return ((string)(this["customDateFormat"])); } - set - { + set { this["customDateFormat"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool useHumandFriendlyLastModified - { - get - { + public bool useHumandFriendlyLastModified { + get { return ((bool)(this["useHumandFriendlyLastModified"])); } - set - { + set { this["useHumandFriendlyLastModified"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public int[] recentColumnsOrder - { - get - { + public int[] recentColumnsOrder { + get { return ((int[])(this["recentColumnsOrder"])); } - set - { + set { this["recentColumnsOrder"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - public int[] gridColumnWidthsBuildReport - { - get - { + public int[] gridColumnWidthsBuildReport { + get { return ((int[])(this["gridColumnWidthsBuildReport"])); } - set - { + set { this["gridColumnWidthsBuildReport"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool runAutomaticallyMinimized - { - get - { + public bool runAutomaticallyMinimized { + get { return ((bool)(this["runAutomaticallyMinimized"])); } - set - { + set { this["runAutomaticallyMinimized"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("-s Unity ActivityManager PackageManager dalvikvm DEBUG -v color")] - public string adbLogCatArgs - { - get - { + public string adbLogCatArgs { + get { return ((string)(this["adbLogCatArgs"])); } - set - { + set { this["adbLogCatArgs"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("0")] - public int projectName - { - get - { + public int projectName { + get { return ((int)(this["projectName"])); } - set - { + set { this["projectName"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] - public string templatePackagesFolder - { - get - { + public string templatePackagesFolder { + get { return ((string)(this["templatePackagesFolder"])); } - set - { + set { this["templatePackagesFolder"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("win64")] - public string newProjectPlatform - { - get - { + public string newProjectPlatform { + get { return ((string)(this["newProjectPlatform"])); } - set - { + set { this["newProjectPlatform"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool searchProjectPathAlso - { - get - { + public bool searchProjectPathAlso { + get { return ((bool)(this["searchProjectPathAlso"])); } - set - { + set { this["searchProjectPathAlso"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool checkPlasticBranch - { - get - { + public bool checkPlasticBranch { + get { return ((bool)(this["checkPlasticBranch"])); } - set - { + set { this["checkPlasticBranch"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] - public string shortcutBatchFileFolder - { - get - { + public string shortcutBatchFileFolder { + get { return ((string)(this["shortcutBatchFileFolder"])); } - set - { + set { this["shortcutBatchFileFolder"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("\r\n\r\n C:\\Program Files\\\r\n")] - public global::System.Collections.Specialized.StringCollection rootFolders - { - get - { + public global::System.Collections.Specialized.StringCollection rootFolders { + get { return ((global::System.Collections.Specialized.StringCollection)(this["rootFolders"])); } - set - { + set { this["rootFolders"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool useInitScript - { - get - { + public bool useInitScript { + get { return ((bool)(this["useInitScript"])); } - set - { + set { this["useInitScript"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("50000")] - public int webglPort - { - get - { + public int webglPort { + get { return ((int)(this["webglPort"])); } - set - { + set { this["webglPort"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("\r\n")] - public global::System.Collections.Specialized.StringCollection projectPaths - { - get - { + public global::System.Collections.Specialized.StringCollection projectPaths { + get { return ((global::System.Collections.Specialized.StringCollection)(this["projectPaths"])); } - set - { + set { this["projectPaths"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool override40ProjectCount - { - get - { + public bool override40ProjectCount { + get { return ((bool)(this["override40ProjectCount"])); } - set - { + set { this["override40ProjectCount"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("50")] - public int maxProjectCount - { - get - { + public int maxProjectCount { + get { return ((int)(this["maxProjectCount"])); } - set - { + set { this["maxProjectCount"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("https://raw.githubusercontent.com/unitycoder/UnityInitializeProject/main/Assets/E" + "ditor/InitializeProject.cs")] - public string customInitFileURL - { - get - { + public string customInitFileURL { + get { return ((string)(this["customInitFileURL"])); } - set - { + set { this["customInitFileURL"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] - public string currentSortColumn - { - get - { + public string currentSortColumn { + get { return ((string)(this["currentSortColumn"])); } - set - { + set { this["currentSortColumn"] = value; } } - + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool currentSortDirectionAscending - { - get - { + public bool currentSortDirectionAscending { + get { return ((bool)(this["currentSortDirectionAscending"])); } - set - { + set { this["currentSortDirectionAscending"] = value; } } - + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool searchGitFolderRecursivly { + get { + return ((bool)(this["searchGitFolderRecursivly"])); + } + set { + this["searchGitFolderRecursivly"] = value; + } + } + [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("True")] - public bool useAlphaReleaseNotes - { - get - { + public bool useAlphaReleaseNotes { + get { return ((bool)(this["useAlphaReleaseNotes"])); } - set - { + set { this["useAlphaReleaseNotes"] = value; } } diff --git a/UnityLauncherPro/Properties/Settings.settings b/UnityLauncherPro/Properties/Settings.settings index d434653..90c362e 100644 --- a/UnityLauncherPro/Properties/Settings.settings +++ b/UnityLauncherPro/Properties/Settings.settings @@ -138,5 +138,11 @@ True + + False + + + True + \ No newline at end of file diff --git a/UnityLauncherPro/Tools.cs b/UnityLauncherPro/Tools.cs index 323af78..c2ce790 100644 --- a/UnityLauncherPro/Tools.cs +++ b/UnityLauncherPro/Tools.cs @@ -1252,20 +1252,53 @@ public static void RemoveContextMenuRegistry(string contextRegRoot) /// /// /// - public static string ReadGitBranchInfo(string projectPath) + public static string ReadGitBranchInfo(string projectPath, bool searchParentFolders) { string results = null; - string dirName = Path.Combine(projectPath, ".git"); - if (Directory.Exists(dirName)) + + if (searchParentFolders) { - string branchFile = Path.Combine(dirName, "HEAD"); - if (File.Exists(branchFile)) + DirectoryInfo directoryInfo = new DirectoryInfo(projectPath); + + while (directoryInfo != null) { - // removes extra end of line - results = string.Join(" ", File.ReadAllLines(branchFile)); - // get branch only - int pos = results.LastIndexOf("/") + 1; - results = results.Substring(pos, results.Length - pos); + string dirName = Path.Combine(directoryInfo.FullName, ".git"); + + if (Directory.Exists(dirName)) + { + string branchFile = Path.Combine(dirName, "HEAD"); + if (File.Exists(branchFile)) + { + // removes extra end of line + results = string.Join(" ", File.ReadAllLines(branchFile)); + // get branch only + int pos = results.LastIndexOf("/") + 1; + results = results.Substring(pos, results.Length - pos); + return results; + } + } + directoryInfo = directoryInfo.Parent; + } + } + else + { + string dirName = Path.Combine(projectPath, ".git"); + if (Directory.Exists(dirName)) + + + { + string branchFile = Path.Combine(dirName, "HEAD"); + if (File.Exists(branchFile)) + + { + // removes extra end of line + results = string.Join(" ", File.ReadAllLines(branchFile)); + // get branch only + int pos = results.LastIndexOf("/") + 1; + results = results.Substring(pos, results.Length - pos); + + } + } } return results; From 1ab96fb00252b264368462a3a64fa017787dc1a2 Mon Sep 17 00:00:00 2001 From: mika Date: Thu, 15 Aug 2024 22:17:57 +0300 Subject: [PATCH 010/123] adjust git branch settings row texts (to make them shorter) --- UnityLauncherPro/MainWindow.xaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/UnityLauncherPro/MainWindow.xaml b/UnityLauncherPro/MainWindow.xaml index 98061ca..c4a5a04 100644 --- a/UnityLauncherPro/MainWindow.xaml +++ b/UnityLauncherPro/MainWindow.xaml @@ -732,9 +732,9 @@ - + - + From 77cb76eceb217d5807a7a11668caa3b8d7bd2911 Mon Sep 17 00:00:00 2001 From: thomasbousquet Date: Wed, 21 Aug 2024 22:23:00 +0200 Subject: [PATCH 011/123] Add "download editor in browser" button to the upgrade window. Changed 'Open Release Notes' button label to 'Release Notes' to save a bit of horizontal space so that the upgrade window isn't too wide. --- UnityLauncherPro/UpgradeWindow.xaml | 15 +++++++++------ UnityLauncherPro/UpgradeWindow.xaml.cs | 14 ++++++++++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/UnityLauncherPro/UpgradeWindow.xaml b/UnityLauncherPro/UpgradeWindow.xaml index 9f175a3..1e5c437 100644 --- a/UnityLauncherPro/UpgradeWindow.xaml +++ b/UnityLauncherPro/UpgradeWindow.xaml @@ -5,7 +5,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:UnityLauncherPro" mc:Ignorable="d" - Title="Upgrade Project Version" Height="533.165" Width="455" Background="{DynamicResource ThemeDarkestBackground}" MinWidth="319" MinHeight="555" ResizeMode="NoResize" WindowStartupLocation="CenterOwner" HorizontalAlignment="Left" VerticalAlignment="Top" PreviewKeyDown="Window_PreviewKeyDown" ShowInTaskbar="False"> + Title="Upgrade Project Version" Height="533.165" Width="552" Background="{DynamicResource ThemeDarkestBackground}" MinWidth="319" MinHeight="555" ResizeMode="NoResize" WindowStartupLocation="CenterOwner" HorizontalAlignment="Left" VerticalAlignment="Top" PreviewKeyDown="Window_PreviewKeyDown" ShowInTaskbar="False"> @@ -15,19 +15,22 @@ - // // https://beta.unity3d.com/download/21aeb48b6ed2/UnityDownloadAssistant.exe - - // // hidden beta - // // - // // https://beta.unity3d.com/download/8008bc0c1b74/UnityDownloadAssistant-6000.0.0b15.exe - - // // new 10.06.2024, no more downloadassistant.exe in html - - // // check html lines - // for (int i = 0; i < lines.Length; i++) - // { - // //Console.WriteLine(lines[i]); - // //if (lines[i].Contains("UnityDownloadAssistant")) - // if (lines[i].Contains("UnityDownloadAssistant")) - // { - // if (useHash == false) - // { - // string pattern = @"https://beta\.unity3d\.com/download/[a-zA-Z0-9]+/UnityDownloadAssistant\.exe"; - // Match match = Regex.Match(lines[i], pattern); - // if (match.Success) - // { - // exeURL = match.Value; - // } - // else - // { - // Console.WriteLine("No match found for download base url.."); - // } - // } - // else // hidden download page - // { - // string pattern = @"UnityDownloadAssistant(?:-\d+\.\d+\.\d+[bf]\d*)?\.exe"; - // Match match = Regex.Match(lines[i], pattern); - // if (match.Success) - // { - // // append base url - // Regex regex = new Regex(@"(https://beta\.unity3d\.com/download/[a-zA-Z0-9]+/)"); - // Match match2 = regex.Match(url); - - // //Console.WriteLine("source url: " + url); - - // if (match2.Success) - // { - // string capturedUrl = match2.Groups[1].Value; - // exeURL = capturedUrl + match.Value; - // } - // else - // { - // Console.WriteLine("No match found for download base url.."); - // } - // } - // break; - // } - // } - // } // for lines - //} // alpha or beta - - // download full installer instead, TODO probably not needed anymore? - if (useHash == false && preferFullInstaller == true) - { - exeURL = exeURL.Replace("UnityDownloadAssistant-" + version + ".exe", "Windows64EditorInstaller/UnitySetup64-" + version + ".exe"); - // handle alpha/beta - exeURL = exeURL.Replace("UnityDownloadAssistant.exe", "Windows64EditorInstaller/UnitySetup64-" + version + ".exe"); - } - - // didnt find installer - if (string.IsNullOrEmpty(exeURL)) - { - //SetStatus("Cannot find UnityDownloadAssistant.exe for this version."); - Console.WriteLine("Installer not found from URL: " + url); - } - return exeURL; - } - private static string FetchUnityVersionNumberFromHTML(string url) { string version = null; diff --git a/UnityLauncherPro/UpgradeWindow.xaml.cs b/UnityLauncherPro/UpgradeWindow.xaml.cs index 9015fe3..5097263 100644 --- a/UnityLauncherPro/UpgradeWindow.xaml.cs +++ b/UnityLauncherPro/UpgradeWindow.xaml.cs @@ -29,64 +29,33 @@ public UpgradeWindow(string currentVersion, string projectPath, string commandLi gridAvailableVersions.SelectedItem = null; // we have current version info in project - if (string.IsNullOrEmpty(currentVersion) == false) - { - // enable release and dl buttons - btnOpenReleasePage.IsEnabled = true; - btnDownload.IsEnabled = true; - - // if dont have exact version, show red outline - if (MainWindow.unityInstalledVersions.ContainsKey(currentVersion) == false) - { - txtCurrentVersion.BorderBrush = Brushes.Red; - txtCurrentVersion.BorderThickness = new Thickness(1); - } + // enable release and dl buttons + btnOpenReleasePage.IsEnabled = true; + btnDownload.IsEnabled = true; - // find nearest version - string nearestVersion = Tools.FindNearestVersion(currentVersion, MainWindow.unityInstalledVersions.Keys.ToList()); - if (nearestVersion != null) - { - // select nearest version - for (int i = 0; i < MainWindow.unityInstallationsSource.Count; i++) - { - if (MainWindow.unityInstallationsSource[i].Version == nearestVersion) - { - gridAvailableVersions.SelectedIndex = i; - gridAvailableVersions.ScrollIntoView(gridAvailableVersions.SelectedItem); - break; - } - } - } - } - else // we dont have current version info in project + // if dont have exact version, show red outline + if (MainWindow.unityInstalledVersions.ContainsKey(currentVersion) == false) { - btnOpenReleasePage.IsEnabled = false; - btnDownload.IsEnabled = false; - currentVersion = "None"; + txtCurrentVersion.BorderBrush = Brushes.Red; + txtCurrentVersion.BorderThickness = new Thickness(1); + } - // if we have preferred version, and current is null - if (string.IsNullOrEmpty(MainWindow.preferredVersion) == false) + // find nearest version + string nearestVersion = Tools.FindNearestVersion(currentVersion, MainWindow.unityInstalledVersions.Keys.ToList()); + if (nearestVersion != null) + { + // select nearest version + for (int i = 0; i < MainWindow.unityInstallationsSource.Count; i++) { - // get correct row for preferred version - var obj = Tools.GetEntry(MainWindow.unityInstalledVersions, MainWindow.preferredVersion); - int index = gridAvailableVersions.Items.IndexOf(obj); - if (index > -1) + if (MainWindow.unityInstallationsSource[i].Version == nearestVersion) { - gridAvailableVersions.SelectedIndex = index; - } - else - { - // just select first item then - gridAvailableVersions.SelectedIndex = 0; + gridAvailableVersions.SelectedIndex = i; + gridAvailableVersions.ScrollIntoView(gridAvailableVersions.SelectedItem); + break; } } - else - { - // just select first item then - if (gridAvailableVersions != null && gridAvailableVersions.Items.Count > 0) gridAvailableVersions.SelectedIndex = 0; - } - } + gridAvailableVersions.Focus(); } @@ -109,41 +78,17 @@ private void BtnOpenReleasePage_Click(object sender, RoutedEventArgs e) private void BtnDownloadEditor_Click(object sender, RoutedEventArgs e) { - string url = Tools.GetUnityReleaseURL(txtCurrentVersion.Text); - if (string.IsNullOrEmpty(url) == false) - { - Tools.DownloadInBrowser(url, txtCurrentVersion.Text, true); - } - else - { - Console.WriteLine("Failed getting Unity Installer URL for " + txtCurrentVersion.Text); - } + Tools.DownloadInBrowser(txtCurrentVersion.Text, true); } private void BtnDownload_Click(object sender, RoutedEventArgs e) { - string url = Tools.GetUnityReleaseURL(txtCurrentVersion.Text); - if (string.IsNullOrEmpty(url) == false) - { - Tools.DownloadInBrowser(url, txtCurrentVersion.Text); - } - else - { - Console.WriteLine("Failed getting Unity Installer URL for " + txtCurrentVersion.Text); - } + Tools.DownloadInBrowser(txtCurrentVersion.Text); } private void btnInstall_Click(object sender, RoutedEventArgs e) { - string url = Tools.GetUnityReleaseURL(txtCurrentVersion.Text); - if (string.IsNullOrEmpty(url) == false) - { - Tools.DownloadAndInstall(url, txtCurrentVersion.Text); - } - else - { - Console.WriteLine("Failed getting Unity Installer URL for " + txtCurrentVersion.Text); - } + Tools.DownloadAndInstall(txtCurrentVersion.Text); } private void Window_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e) From 4c63423ca6b08753f9e1d63f5e1e84b964324520 Mon Sep 17 00:00:00 2001 From: Marco Festini Date: Mon, 30 Sep 2024 16:21:22 +0200 Subject: [PATCH 017/123] Add prepared cached list of Unity versions --- UnityLauncherPro/Resources/UnityVersionCache.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 UnityLauncherPro/Resources/UnityVersionCache.json diff --git a/UnityLauncherPro/Resources/UnityVersionCache.json b/UnityLauncherPro/Resources/UnityVersionCache.json new file mode 100644 index 0000000..8b7310c --- /dev/null +++ b/UnityLauncherPro/Resources/UnityVersionCache.json @@ -0,0 +1 @@ +[{"version":"2022.3.48f1","stream":"LTS","releaseDate":"2024-09-26T18:38:03.76Z"},{"version":"6000.0.21f1","stream":"TECH","releaseDate":"2024-09-24T16:11:20.586Z"},{"version":"2021.3.44f1","stream":"LTS","releaseDate":"2024-09-23T14:46:08.531Z"},{"version":"6000.0.20f1","stream":"TECH","releaseDate":"2024-09-19T15:22:09.961Z"},{"version":"2022.3.47f1","stream":"LTS","releaseDate":"2024-09-18T06:44:50.214Z"},{"version":"6000.0.19f1","stream":"TECH","releaseDate":"2024-09-12T01:29:34.656Z"},{"version":"2022.3.46f1","stream":"LTS","releaseDate":"2024-09-10T16:41:40.233Z"},{"version":"6000.0.18f1","stream":"TECH","releaseDate":"2024-09-04T06:08:14.69Z"},{"version":"2022.3.45f1","stream":"LTS","releaseDate":"2024-09-03T22:44:17.358Z"},{"version":"6000.0.17f1","stream":"TECH","releaseDate":"2024-08-27T16:52:36.763Z"},{"version":"2022.3.44f1","stream":"LTS","releaseDate":"2024-08-23T06:10:50.975Z"},{"version":"6000.0.16f1","stream":"TECH","releaseDate":"2024-08-22T18:12:19.775Z"},{"version":"2021.3.43f1","stream":"LTS","releaseDate":"2024-08-22T10:10:30.849Z"},{"version":"2022.3.43f1","stream":"LTS","releaseDate":"2024-08-21T14:11:42.728Z"},{"version":"6000.0.15f1","stream":"TECH","releaseDate":"2024-08-13T18:03:16.792Z"},{"version":"2022.3.42f1","stream":"LTS","releaseDate":"2024-08-13T09:26:14.269Z"},{"version":"6000.0.14f1","stream":"TECH","releaseDate":"2024-08-07T05:59:10.659Z"},{"version":"2022.3.41f1","stream":"LTS","releaseDate":"2024-08-06T10:07:06.853Z"},{"version":"2021.3.42f1","stream":"LTS","releaseDate":"2024-08-06T09:30:24.602Z"},{"version":"6000.0.13f1","stream":"TECH","releaseDate":"2024-07-31T18:30:12.352Z"},{"version":"2022.3.40f1","stream":"LTS","releaseDate":"2024-07-30T14:14:27.536Z"},{"version":"6000.0.12f1","stream":"TECH","releaseDate":"2024-07-25T16:59:55.927Z"},{"version":"2022.3.39f1","stream":"LTS","releaseDate":"2024-07-23T16:04:16.202Z"},{"version":"2021.3.41f1","stream":"LTS","releaseDate":"2024-07-23T14:54:58.798Z"},{"version":"6000.0.11f1","stream":"TECH","releaseDate":"2024-07-17T10:16:09.023Z"},{"version":"2022.3.38f1","stream":"LTS","releaseDate":"2024-07-16T13:52:35.994Z"},{"version":"6000.0.10f1","stream":"TECH","releaseDate":"2024-07-10T16:45:22.488Z"},{"version":"2022.3.37f1","stream":"LTS","releaseDate":"2024-07-09T12:05:40.074Z"},{"version":"6000.0.9f1","stream":"TECH","releaseDate":"2024-07-03T14:22:27.352Z"},{"version":"2022.3.36f1","stream":"LTS","releaseDate":"2024-07-02T17:23:09.124Z"},{"version":"6000.0.8f1","stream":"TECH","releaseDate":"2024-06-28T15:36:42.098Z"},{"version":"2022.3.35f1","stream":"LTS","releaseDate":"2024-06-27T17:06:27.082Z"},{"version":"2021.3.40f1","stream":"LTS","releaseDate":"2024-06-27T02:15:04.495Z"},{"version":"6000.0.7f1","stream":"TECH","releaseDate":"2024-06-20T16:04:46.276Z"},{"version":"2022.3.34f1","stream":"LTS","releaseDate":"2024-06-18T11:27:05.706Z"},{"version":"2022.3.33f1","stream":"LTS","releaseDate":"2024-06-12T06:22:11.955Z"},{"version":"6000.0.5f1","stream":"TECH","releaseDate":"2024-06-04T18:54:20.572Z"},{"version":"2022.3.32f1","stream":"LTS","releaseDate":"2024-06-04T17:45:52.358Z"},{"version":"6000.0.4f1","stream":"TECH","releaseDate":"2024-05-29T16:49:19.341Z"},{"version":"2022.3.31f1","stream":"LTS","releaseDate":"2024-05-28T17:19:07.265Z"},{"version":"2021.3.39f1","stream":"LTS","releaseDate":"2024-05-28T16:13:34.56Z"},{"version":"6000.0.3f1","stream":"TECH","releaseDate":"2024-05-21T16:15:54.933Z"},{"version":"2022.3.30f1","stream":"LTS","releaseDate":"2024-05-21T12:05:13.739Z"},{"version":"6000.0.2f1","stream":"TECH","releaseDate":"2024-05-14T19:54:04.427Z"},{"version":"2022.3.29f1","stream":"LTS","releaseDate":"2024-05-14T15:20:52.928Z"},{"version":"6000.0.1f1","stream":"TECH","releaseDate":"2024-05-08T15:11:21.9Z"},{"version":"2022.3.28f1","stream":"LTS","releaseDate":"2024-05-07T15:20:10.592Z"},{"version":"2021.3.38f1","stream":"LTS","releaseDate":"2024-05-02T18:42:56.761Z"},{"version":"2022.3.27f1","stream":"LTS","releaseDate":"2024-04-30T17:28:32.438Z"},{"version":"6000.0.0f1","stream":"TECH","releaseDate":"2024-04-29T18:37:33.422Z"},{"version":"2023.2.20f1","stream":"TECH","releaseDate":"2024-04-25T19:29:55.528Z"},{"version":"2022.3.26f1","stream":"LTS","releaseDate":"2024-04-23T17:47:02.175Z"},{"version":"6000.0.0b16","stream":"BETA","releaseDate":"2024-04-19T15:47:47.012Z"},{"version":"2023.2.19f1","stream":"TECH","releaseDate":"2024-04-18T08:21:36.264Z"},{"version":"2022.3.25f1","stream":"LTS","releaseDate":"2024-04-16T12:56:01.94Z"},{"version":"6000.0.0b15","stream":"BETA","releaseDate":"2024-04-13T00:46:31.309Z"},{"version":"2023.2.18f1","stream":"TECH","releaseDate":"2024-04-09T21:11:33.786Z"},{"version":"2022.3.24f1","stream":"LTS","releaseDate":"2024-04-09T11:12:12.504Z"},{"version":"2023.2.17f1","stream":"TECH","releaseDate":"2024-04-04T01:45:09.545Z"},{"version":"2022.3.23f1","stream":"LTS","releaseDate":"2024-04-02T15:24:02.324Z"},{"version":"2021.3.37f1","stream":"LTS","releaseDate":"2024-04-02T13:12:43.531Z"},{"version":"6000.0.0b13","stream":"BETA","releaseDate":"2024-03-27T01:28:00.39Z"},{"version":"2023.2.16f1","stream":"TECH","releaseDate":"2024-03-27T01:03:51.315Z"},{"version":"2023.2.15f1","stream":"TECH","releaseDate":"2024-03-19T21:07:34.034Z"},{"version":"6000.0.0b12","stream":"BETA","releaseDate":"2024-03-19T19:32:02.889Z"},{"version":"2022.3.22f1","stream":"LTS","releaseDate":"2024-03-19T11:06:29.329Z"},{"version":"6000.0.0b11","stream":"BETA","releaseDate":"2024-03-13T21:20:06.403Z"},{"version":"2023.2.14f1","stream":"TECH","releaseDate":"2024-03-12T18:27:41.758Z"},{"version":"2023.2.13f1","stream":"TECH","releaseDate":"2024-03-05T20:41:13.839Z"},{"version":"2023.3.0b10","stream":"BETA","releaseDate":"2024-03-05T19:08:01.485Z"},{"version":"2021.3.36f1","stream":"LTS","releaseDate":"2024-03-05T18:42:24.171Z"},{"version":"2022.3.21f1","stream":"LTS","releaseDate":"2024-03-05T16:04:04.858Z"},{"version":"2023.2.12f1","stream":"TECH","releaseDate":"2024-02-28T23:06:57.279Z"},{"version":"2023.3.0b9","stream":"BETA","releaseDate":"2024-02-28T21:32:42.698Z"},{"version":"2023.2.11f1","stream":"TECH","releaseDate":"2024-02-20T21:17:45.026Z"},{"version":"2023.3.0b8","stream":"BETA","releaseDate":"2024-02-20T19:40:27.171Z"},{"version":"2023.2.10f1","stream":"TECH","releaseDate":"2024-02-14T19:39:19.891Z"},{"version":"2022.3.20f1","stream":"LTS","releaseDate":"2024-02-14T11:25:56.541Z"},{"version":"2023.3.0b7","stream":"BETA","releaseDate":"2024-02-13T19:59:14.714Z"},{"version":"2023.3.0b6","stream":"BETA","releaseDate":"2024-02-07T07:24:40.232Z"},{"version":"2023.2.9f1","stream":"TECH","releaseDate":"2024-02-07T06:56:57.647Z"},{"version":"2021.3.35f1","stream":"LTS","releaseDate":"2024-02-06T15:40:15.583Z"},{"version":"2022.3.19f1","stream":"LTS","releaseDate":"2024-01-31T11:56:51.634Z"},{"version":"2023.3.0b5","stream":"BETA","releaseDate":"2024-01-31T00:28:33.7Z"},{"version":"2023.2.8f1","stream":"TECH","releaseDate":"2024-01-31T00:02:00.587Z"},{"version":"2023.2.7f1","stream":"TECH","releaseDate":"2024-01-23T20:43:04.878Z"},{"version":"2023.3.0b4","stream":"BETA","releaseDate":"2024-01-23T19:12:34.872Z"},{"version":"2022.3.18f1","stream":"LTS","releaseDate":"2024-01-20T16:00:12.21Z"},{"version":"2023.2.6f1","stream":"TECH","releaseDate":"2024-01-17T05:22:12.116Z"},{"version":"2023.3.0b3","stream":"BETA","releaseDate":"2024-01-15T05:07:54.401Z"},{"version":"2023.3.0b2","stream":"BETA","releaseDate":"2024-01-09T21:10:15.944Z"},{"version":"2021.3.34f1","stream":"LTS","releaseDate":"2024-01-09T15:33:57.013Z"},{"version":"2022.3.17f1","stream":"LTS","releaseDate":"2024-01-09T13:24:21.309Z"},{"version":"2023.2.5f1","stream":"TECH","releaseDate":"2024-01-09T08:49:30.857Z"},{"version":"2023.3.0b1","stream":"BETA","releaseDate":"2024-01-03T02:06:01.186Z"},{"version":"2023.2.4f1","stream":"TECH","releaseDate":"2023-12-22T11:24:31.462Z"},{"version":"2022.3.16f1","stream":"LTS","releaseDate":"2023-12-19T10:05:11.721Z"},{"version":"2023.3.0a18","stream":"ALPHA","releaseDate":"2023-12-13T21:40:57.508Z"},{"version":"2023.2.3f1","stream":"TECH","releaseDate":"2023-12-05T22:03:42.762Z"},{"version":"2023.3.0a17","stream":"ALPHA","releaseDate":"2023-12-05T20:29:50.071Z"},{"version":"2022.3.15f1","stream":"LTS","releaseDate":"2023-12-05T16:41:51.676Z"},{"version":"2023.2.2f1","stream":"TECH","releaseDate":"2023-11-28T20:28:30.951Z"},{"version":"2023.3.0a16","stream":"ALPHA","releaseDate":"2023-11-28T18:53:03.105Z"},{"version":"2021.3.33f1","stream":"LTS","releaseDate":"2023-11-28T15:21:35.633Z"},{"version":"2023.2.1f1","stream":"TECH","releaseDate":"2023-11-21T22:09:38.485Z"},{"version":"2022.3.14f1","stream":"LTS","releaseDate":"2023-11-21T20:07:15.67Z"},{"version":"2023.3.0a15","stream":"ALPHA","releaseDate":"2023-11-21T17:46:47.002Z"},{"version":"2023.2.0f1","stream":"TECH","releaseDate":"2023-11-14T23:22:44.293Z"},{"version":"2023.3.0a14","stream":"ALPHA","releaseDate":"2023-11-14T21:47:34.468Z"},{"version":"2023.1.20f1","stream":"TECH","releaseDate":"2023-11-09T11:37:53.08Z"},{"version":"2022.3.13f1","stream":"LTS","releaseDate":"2023-11-07T17:33:11.846Z"},{"version":"2023.3.0a13","stream":"ALPHA","releaseDate":"2023-11-07T13:03:31.636Z"},{"version":"2023.2.0b17","stream":"BETA","releaseDate":"2023-11-07T01:15:49.736Z"},{"version":"2021.3.32f1","stream":"LTS","releaseDate":"2023-11-01T15:47:25.801Z"},{"version":"2023.2.0b16","stream":"BETA","releaseDate":"2023-11-01T07:07:29.019Z"},{"version":"2023.3.0a12","stream":"ALPHA","releaseDate":"2023-10-31T20:54:47.461Z"},{"version":"2023.1.19f1","stream":"TECH","releaseDate":"2023-10-31T14:12:27.135Z"},{"version":"2023.3.0a11","stream":"ALPHA","releaseDate":"2023-10-26T20:42:38.014Z"},{"version":"2023.2.0b15","stream":"BETA","releaseDate":"2023-10-26T19:42:17.8Z"},{"version":"2022.3.12f1","stream":"LTS","releaseDate":"2023-10-26T14:00:14.602Z"},{"version":"2023.1.18f1","stream":"TECH","releaseDate":"2023-10-24T16:38:46.558Z"},{"version":"2023.1.17f1","stream":"TECH","releaseDate":"2023-10-17T13:06:27.215Z"},{"version":"2023.2.0b14","stream":"BETA","releaseDate":"2023-10-16T16:49:19.211Z"},{"version":"2023.3.0a10","stream":"ALPHA","releaseDate":"2023-10-16T15:53:09.409Z"},{"version":"2023.2.0b13","stream":"BETA","releaseDate":"2023-10-10T23:43:50.418Z"},{"version":"2022.3.11f1","stream":"LTS","releaseDate":"2023-10-10T15:27:45.575Z"},{"version":"2023.2.0b12","stream":"BETA","releaseDate":"2023-10-05T05:35:01.259Z"},{"version":"2023.3.0a8","stream":"ALPHA","releaseDate":"2023-10-05T04:37:32.541Z"},{"version":"2023.1.16f1","stream":"TECH","releaseDate":"2023-10-03T17:51:07.924Z"},{"version":"2021.3.31f1","stream":"LTS","releaseDate":"2023-10-03T15:50:59.188Z"},{"version":"2023.2.0b11","stream":"BETA","releaseDate":"2023-09-27T19:03:28.283Z"},{"version":"2023.1.15f1","stream":"TECH","releaseDate":"2023-09-26T13:26:57.122Z"},{"version":"2023.3.0a6","stream":"ALPHA","releaseDate":"2023-09-21T19:57:30.172Z"},{"version":"2023.2.0b10","stream":"BETA","releaseDate":"2023-09-21T00:25:39.068Z"},{"version":"2023.3.0a7","stream":"ALPHA","releaseDate":"2023-09-20T23:32:03.486Z"},{"version":"2023.1.14f1","stream":"TECH","releaseDate":"2023-09-19T13:45:02.802Z"},{"version":"2022.3.10f1","stream":"LTS","releaseDate":"2023-09-19T11:09:17.924Z"},{"version":"2023.2.0b9","stream":"BETA","releaseDate":"2023-09-13T16:47:50.265Z"},{"version":"2023.3.0a5","stream":"ALPHA","releaseDate":"2023-09-13T08:39:30.342Z"},{"version":"2023.1.13f1","stream":"TECH","releaseDate":"2023-09-12T16:45:26.506Z"},{"version":"2023.2.0b8","stream":"BETA","releaseDate":"2023-09-07T00:06:06.619Z"},{"version":"2023.3.0a4","stream":"ALPHA","releaseDate":"2023-09-06T23:09:51.761Z"},{"version":"2023.1.12f1","stream":"TECH","releaseDate":"2023-09-05T13:19:07.6Z"},{"version":"2022.3.9f1","stream":"LTS","releaseDate":"2023-09-05T11:20:42.552Z"},{"version":"2023.3.0a3","stream":"ALPHA","releaseDate":"2023-08-29T23:57:28.456Z"},{"version":"2023.1.11f1","stream":"TECH","releaseDate":"2023-08-29T23:34:23.251Z"},{"version":"2023.2.0b7","stream":"BETA","releaseDate":"2023-08-29T22:05:40.255Z"},{"version":"2021.3.30f1","stream":"LTS","releaseDate":"2023-08-29T22:00:32.916Z"},{"version":"2023.2.0b6","stream":"BETA","releaseDate":"2023-08-23T16:37:08.157Z"},{"version":"2022.3.8f1","stream":"LTS","releaseDate":"2023-08-22T16:08:57.69Z"},{"version":"2023.1.10f1","stream":"TECH","releaseDate":"2023-08-22T09:04:56.856Z"},{"version":"2023.2.0b5","stream":"BETA","releaseDate":"2023-08-15T19:46:13.961Z"},{"version":"2023.1.9f1","stream":"TECH","releaseDate":"2023-08-15T08:51:07.431Z"},{"version":"2023.2.0b4","stream":"BETA","releaseDate":"2023-08-10T16:28:52.954Z"},{"version":"2023.1.8f1","stream":"TECH","releaseDate":"2023-08-08T10:46:36.347Z"},{"version":"2022.3.7f1","stream":"LTS","releaseDate":"2023-08-08T09:39:39.25Z"},{"version":"2023.2.0b3","stream":"BETA","releaseDate":"2023-08-01T21:20:07.98Z"},{"version":"2023.1.7f1","stream":"TECH","releaseDate":"2023-08-01T11:52:30.688Z"},{"version":"2022.3.6f1","stream":"LTS","releaseDate":"2023-07-31T18:44:28.313Z"},{"version":"2023.2.0b2","stream":"BETA","releaseDate":"2023-07-26T15:36:17.09Z"},{"version":"2023.1.6f1","stream":"TECH","releaseDate":"2023-07-25T14:07:19.679Z"},{"version":"2021.3.29f1","stream":"LTS","releaseDate":"2023-07-25T12:13:45.721Z"},{"version":"2023.2.0b1","stream":"BETA","releaseDate":"2023-07-19T17:48:18.078Z"},{"version":"2023.1.5f1","stream":"TECH","releaseDate":"2023-07-18T09:47:39.883Z"},{"version":"2022.3.5f1","stream":"LTS","releaseDate":"2023-07-13T16:12:49.118Z"},{"version":"2023.1.4f1","stream":"TECH","releaseDate":"2023-07-13T09:22:35.284Z"},{"version":"2023.2.0a22","stream":"ALPHA","releaseDate":"2023-07-10T10:49:24.525Z"},{"version":"2023.1.3f1","stream":"TECH","releaseDate":"2023-07-05T10:38:33.783Z"},{"version":"2021.3.28f1","stream":"LTS","releaseDate":"2023-07-04T19:41:02.205Z"},{"version":"2023.1.2f1","stream":"TECH","releaseDate":"2023-06-26T17:35:53.289Z"},{"version":"2022.3.4f1","stream":"LTS","releaseDate":"2023-06-26T16:47:18.705Z"},{"version":"2023.2.0a20","stream":"ALPHA","releaseDate":"2023-06-21T19:58:23.589Z"},{"version":"2022.3.3f1","stream":"LTS","releaseDate":"2023-06-21T15:21:19.031Z"},{"version":"2023.1.1f1","stream":"TECH","releaseDate":"2023-06-21T14:44:26.694Z"},{"version":"2023.2.0a19","stream":"ALPHA","releaseDate":"2023-06-13T17:56:46.902Z"},{"version":"2022.3.2f1","stream":"LTS","releaseDate":"2023-06-13T17:35:17.032Z"},{"version":"2023.1.0f1","stream":"TECH","releaseDate":"2023-06-12T20:09:17.94Z"},{"version":"2021.3.27f1","stream":"LTS","releaseDate":"2023-06-07T16:35:21.242Z"},{"version":"2023.2.0a18","stream":"ALPHA","releaseDate":"2023-06-07T15:05:43.861Z"},{"version":"2023.1.0b20","stream":"BETA","releaseDate":"2023-06-07T14:07:58.105Z"},{"version":"2022.3.1f1","stream":"LTS","releaseDate":"2023-06-07T11:44:18.643Z"},{"version":"2023.1.0b19","stream":"BETA","releaseDate":"2023-05-31T21:22:40.716Z"},{"version":"2023.2.0a17","stream":"ALPHA","releaseDate":"2023-05-31T19:36:57.585Z"},{"version":"2022.3.0f1","stream":"LTS","releaseDate":"2023-05-30T10:40:13.858Z"},{"version":"2021.3.26f1","stream":"LTS","releaseDate":"2023-05-25T11:47:02.15Z"},{"version":"2023.2.0a16","stream":"ALPHA","releaseDate":"2023-05-24T20:32:01.993Z"},{"version":"2023.1.0b18","stream":"BETA","releaseDate":"2023-05-24T14:12:55.453Z"},{"version":"2022.2.21f1","stream":"TECH","releaseDate":"2023-05-24T11:15:23.985Z"},{"version":"2022.2.20f1","stream":"TECH","releaseDate":"2023-05-18T09:58:25.774Z"},{"version":"2023.2.0a15","stream":"ALPHA","releaseDate":"2023-05-17T20:05:43.215Z"},{"version":"2020.3.48f1","stream":"LTS","releaseDate":"2023-05-17T17:23:52.784Z"},{"version":"2023.1.0b17","stream":"BETA","releaseDate":"2023-05-17T16:32:57.091Z"},{"version":"2021.3.25f1","stream":"LTS","releaseDate":"2023-05-11T13:55:39.057Z"},{"version":"2022.2.19f1","stream":"TECH","releaseDate":"2023-05-11T12:02:51.939Z"},{"version":"2023.1.0b16","stream":"BETA","releaseDate":"2023-05-11T01:23:47.798Z"},{"version":"2023.2.0a14","stream":"ALPHA","releaseDate":"2023-05-10T19:50:11.444Z"},{"version":"2023.1.0b15","stream":"BETA","releaseDate":"2023-05-04T15:09:21.872Z"},{"version":"2022.2.18f1","stream":"TECH","releaseDate":"2023-05-04T14:54:59.951Z"},{"version":"2023.2.0a13","stream":"ALPHA","releaseDate":"2023-05-03T19:08:00.761Z"},{"version":"2022.2.17f1","stream":"TECH","releaseDate":"2023-04-27T17:55:43.297Z"},{"version":"2021.3.24f1","stream":"LTS","releaseDate":"2023-04-27T17:16:27.561Z"},{"version":"2023.2.0a12","stream":"ALPHA","releaseDate":"2023-04-27T14:39:10.774Z"},{"version":"2023.1.0b14","stream":"BETA","releaseDate":"2023-04-26T17:38:33.828Z"},{"version":"2023.2.0a11","stream":"ALPHA","releaseDate":"2023-04-19T23:11:25.842Z"},{"version":"2023.1.0b13","stream":"BETA","releaseDate":"2023-04-19T15:38:30.438Z"},{"version":"2022.2.16f1","stream":"TECH","releaseDate":"2023-04-19T14:00:29.791Z"},{"version":"2021.3.23f1","stream":"LTS","releaseDate":"2023-04-14T03:05:53.411Z"},{"version":"2022.2.15f1","stream":"TECH","releaseDate":"2023-04-13T13:56:06.949Z"},{"version":"2023.2.0a10","stream":"ALPHA","releaseDate":"2023-04-12T17:57:27.395Z"},{"version":"2023.1.0b12","stream":"BETA","releaseDate":"2023-04-12T16:58:27.175Z"},{"version":"2022.2.14f1","stream":"TECH","releaseDate":"2023-04-05T22:20:20.9Z"},{"version":"2023.2.0a9","stream":"ALPHA","releaseDate":"2023-04-05T17:17:10.383Z"},{"version":"2020.3.47f1","stream":"LTS","releaseDate":"2023-04-05T16:12:43.414Z"},{"version":"2023.1.0b11","stream":"BETA","releaseDate":"2023-04-04T21:58:08.41Z"},{"version":"2022.2.13f1","stream":"TECH","releaseDate":"2023-03-31T14:48:28.306Z"},{"version":"2021.3.22f1","stream":"LTS","releaseDate":"2023-03-29T20:44:06.131Z"},{"version":"2023.1.0b10","stream":"BETA","releaseDate":"2023-03-29T19:31:31.427Z"},{"version":"2023.2.0a8","stream":"ALPHA","releaseDate":"2023-03-29T17:45:36.718Z"},{"version":"2023.2.0a7","stream":"ALPHA","releaseDate":"2023-03-22T21:21:49.277Z"},{"version":"2022.2.12f1","stream":"TECH","releaseDate":"2023-03-22T19:38:11.702Z"},{"version":"2023.1.0b9","stream":"BETA","releaseDate":"2023-03-22T17:34:30.593Z"},{"version":"2023.2.0a6","stream":"ALPHA","releaseDate":"2023-03-15T17:05:39.94Z"},{"version":"2023.1.0b8","stream":"BETA","releaseDate":"2023-03-15T15:20:07.049Z"},{"version":"2021.3.21f1","stream":"LTS","releaseDate":"2023-03-15T03:07:29.397Z"},{"version":"2022.2.11f1","stream":"TECH","releaseDate":"2023-03-15T02:33:37.439Z"},{"version":"2022.2.10f1","stream":"TECH","releaseDate":"2023-03-09T01:37:14.186Z"},{"version":"2020.3.46f1","stream":"LTS","releaseDate":"2023-03-08T16:13:10.801Z"},{"version":"2023.1.0b7","stream":"BETA","releaseDate":"2023-03-07T17:21:08.118Z"},{"version":"2022.2.9f1","stream":"TECH","releaseDate":"2023-03-03T01:54:20.162Z"},{"version":"2021.3.20f1","stream":"LTS","releaseDate":"2023-03-02T23:34:21.478Z"},{"version":"2023.1.0b6","stream":"BETA","releaseDate":"2023-03-02T17:05:36.697Z"},{"version":"2022.2.8f1","stream":"TECH","releaseDate":"2023-02-23T15:21:52.581Z"},{"version":"2023.1.0b5","stream":"BETA","releaseDate":"2023-02-22T14:43:31.652Z"},{"version":"2021.3.19f1","stream":"LTS","releaseDate":"2023-02-17T15:24:45.325Z"},{"version":"2023.1.0b4","stream":"BETA","releaseDate":"2023-02-16T16:12:27.289Z"},{"version":"2022.2.7f1","stream":"TECH","releaseDate":"2023-02-15T20:59:18.694Z"},{"version":"2020.3.45f1","stream":"LTS","releaseDate":"2023-02-14T21:48:56.797Z"},{"version":"2022.2.6f1","stream":"TECH","releaseDate":"2023-02-10T01:46:54.429Z"},{"version":"2023.1.0b3","stream":"BETA","releaseDate":"2023-02-08T16:02:45.148Z"},{"version":"2021.3.18f1","stream":"LTS","releaseDate":"2023-02-01T20:10:11.475Z"},{"version":"2023.1.0b2","stream":"BETA","releaseDate":"2023-02-01T14:26:56.98Z"},{"version":"2022.2.5f1","stream":"TECH","releaseDate":"2023-01-31T20:58:08.206Z"},{"version":"2022.2.4f1","stream":"TECH","releaseDate":"2023-01-27T14:41:48.225Z"},{"version":"2023.1.0b1","stream":"BETA","releaseDate":"2023-01-24T16:35:43.402Z"},{"version":"2021.3.17f1","stream":"LTS","releaseDate":"2023-01-24T16:26:13.742Z"},{"version":"2022.2.3f1","stream":"TECH","releaseDate":"2023-01-23T19:50:52.175Z"},{"version":"2023.1.0a26","stream":"ALPHA","releaseDate":"2023-01-18T17:32:21.563Z"},{"version":"2020.3.44f1","stream":"LTS","releaseDate":"2023-01-18T17:25:53.109Z"},{"version":"2023.1.0a25","stream":"ALPHA","releaseDate":"2023-01-11T19:23:37.686Z"},{"version":"2022.2.2f1","stream":"TECH","releaseDate":"2023-01-10T03:21:01.425Z"},{"version":"2023.1.0a24","stream":"ALPHA","releaseDate":"2022-12-22T01:56:32.448Z"},{"version":"2020.3.43f1","stream":"LTS","releaseDate":"2022-12-15T22:02:25.885Z"},{"version":"2021.3.16f1","stream":"LTS","releaseDate":"2022-12-15T16:05:52.918Z"},{"version":"2023.1.0a23","stream":"ALPHA","releaseDate":"2022-12-14T18:58:53.977Z"},{"version":"2022.2.1f1","stream":"TECH","releaseDate":"2022-12-12T15:26:11.226Z"},{"version":"2023.1.0a22","stream":"ALPHA","releaseDate":"2022-12-07T21:25:31.942Z"},{"version":"2022.2.0f1","stream":"TECH","releaseDate":"2022-12-07T14:29:04.831Z"},{"version":"2022.1.24f1","stream":"TECH","releaseDate":"2022-12-06T18:33:08.73Z"},{"version":"2021.3.15f1","stream":"LTS","releaseDate":"2022-12-01T17:20:58.301Z"},{"version":"2023.1.0a21","stream":"ALPHA","releaseDate":"2022-11-30T15:35:08.652Z"},{"version":"2023.1.0a20","stream":"ALPHA","releaseDate":"2022-11-24T14:54:00.095Z"},{"version":"2022.2.0b16","stream":"BETA","releaseDate":"2022-11-18T15:21:52.75Z"},{"version":"2023.1.0a19","stream":"ALPHA","releaseDate":"2022-11-17T21:40:42.637Z"},{"version":"2021.3.14f1","stream":"LTS","releaseDate":"2022-11-17T17:28:01.68Z"},{"version":"2020.3.42f1","stream":"LTS","releaseDate":"2022-11-17T16:42:55.716Z"},{"version":"2022.1.23f1","stream":"TECH","releaseDate":"2022-11-16T11:07:08.587Z"},{"version":"2022.2.0b15","stream":"BETA","releaseDate":"2022-11-16T09:42:02.426Z"},{"version":"2023.1.0a18","stream":"ALPHA","releaseDate":"2022-11-10T15:10:57.781Z"},{"version":"2022.1.22f1","stream":"TECH","releaseDate":"2022-11-09T12:42:48.452Z"},{"version":"2022.2.0b14","stream":"BETA","releaseDate":"2022-11-07T14:57:36.808Z"},{"version":"2021.3.13f1","stream":"LTS","releaseDate":"2022-11-04T16:42:23.168Z"},{"version":"2023.1.0a17","stream":"ALPHA","releaseDate":"2022-11-04T15:52:07.007Z"},{"version":"2023.1.0a16","stream":"ALPHA","releaseDate":"2022-10-27T15:51:25.673Z"},{"version":"2022.1.21f1","stream":"TECH","releaseDate":"2022-10-27T14:14:42.051Z"},{"version":"2022.2.0b13","stream":"BETA","releaseDate":"2022-10-26T20:13:31.627Z"},{"version":"2021.3.12f1","stream":"LTS","releaseDate":"2022-10-25T15:16:10.951Z"},{"version":"2023.1.0a15","stream":"ALPHA","releaseDate":"2022-10-21T15:12:32.32Z"},{"version":"2020.3.41f1","stream":"LTS","releaseDate":"2022-10-21T14:22:52.563Z"},{"version":"2022.2.0b12","stream":"BETA","releaseDate":"2022-10-20T15:21:30.949Z"},{"version":"2022.2.0b11","stream":"BETA","releaseDate":"2022-10-17T19:47:44.246Z"},{"version":"2023.1.0a14","stream":"ALPHA","releaseDate":"2022-10-13T19:56:48.359Z"},{"version":"2022.1.20f1","stream":"TECH","releaseDate":"2022-10-12T11:42:58.624Z"},{"version":"2023.1.0a13","stream":"ALPHA","releaseDate":"2022-10-06T19:12:22.623Z"},{"version":"2022.2.0b10","stream":"BETA","releaseDate":"2022-10-06T15:22:41.471Z"},{"version":"2022.1.19f1","stream":"TECH","releaseDate":"2022-10-05T12:57:27.655Z"},{"version":"2022.1.18f1","stream":"TECH","releaseDate":"2022-09-29T14:37:44.585Z"},{"version":"2021.3.11f1","stream":"LTS","releaseDate":"2022-09-29T10:18:44.505Z"},{"version":"2022.2.0b9","stream":"BETA","releaseDate":"2022-09-29T03:03:40.791Z"},{"version":"2023.1.0a12","stream":"ALPHA","releaseDate":"2022-09-28T19:55:37.092Z"},{"version":"2020.3.40f1","stream":"LTS","releaseDate":"2022-09-27T10:08:51.488Z"},{"version":"2023.1.0a11","stream":"ALPHA","releaseDate":"2022-09-21T14:43:10.283Z"},{"version":"2022.1.17f1","stream":"TECH","releaseDate":"2022-09-21T11:47:30.136Z"},{"version":"2021.3.10f1","stream":"LTS","releaseDate":"2022-09-16T15:49:10.593Z"},{"version":"2020.3.39f1","stream":"LTS","releaseDate":"2022-09-14T21:53:29.605Z"},{"version":"2023.1.0a10","stream":"ALPHA","releaseDate":"2022-09-12T18:11:46.938Z"},{"version":"2022.2.0b8","stream":"BETA","releaseDate":"2022-09-09T16:13:00.347Z"},{"version":"2022.1.16f1","stream":"TECH","releaseDate":"2022-09-08T13:08:35.083Z"},{"version":"2023.1.0a9","stream":"ALPHA","releaseDate":"2022-09-06T18:57:38.971Z"},{"version":"2021.3.9f1","stream":"LTS","releaseDate":"2022-09-01T16:32:11.579Z"},{"version":"2022.2.0b7","stream":"BETA","releaseDate":"2022-09-01T14:23:07.207Z"},{"version":"2022.1.15f1","stream":"TECH","releaseDate":"2022-09-01T10:40:40.395Z"},{"version":"2022.2.0b6","stream":"BETA","releaseDate":"2022-08-25T22:40:10.31Z"},{"version":"2022.2.0b5","stream":"BETA","releaseDate":"2022-08-22T13:46:29.274Z"},{"version":"2022.1.14f1","stream":"TECH","releaseDate":"2022-08-22T08:56:08.045Z"},{"version":"2023.1.0a6","stream":"ALPHA","releaseDate":"2022-08-18T16:45:55.03Z"},{"version":"2020.3.38f1","stream":"LTS","releaseDate":"2022-08-17T13:37:37.983Z"},{"version":"2023.1.0a5","stream":"ALPHA","releaseDate":"2022-08-11T16:35:17.219Z"},{"version":"2022.1.13f1","stream":"TECH","releaseDate":"2022-08-11T07:43:08.279Z"},{"version":"2021.3.8f1","stream":"LTS","releaseDate":"2022-08-08T15:26:36.929Z"},{"version":"2022.1.12f1","stream":"TECH","releaseDate":"2022-08-05T10:30:50.92Z"},{"version":"2022.2.0b4","stream":"BETA","releaseDate":"2022-08-05T02:14:17.717Z"},{"version":"2022.2.0b3","stream":"BETA","releaseDate":"2022-07-28T17:18:44.591Z"},{"version":"2021.3.7f1","stream":"LTS","releaseDate":"2022-07-28T09:50:46.767Z"},{"version":"2022.1.11f1","stream":"TECH","releaseDate":"2022-07-27T12:20:14.487Z"},{"version":"2023.1.0a4","stream":"ALPHA","releaseDate":"2022-07-26T16:55:38.559Z"},{"version":"2022.2.0b2","stream":"BETA","releaseDate":"2022-07-22T13:54:37.023Z"},{"version":"2020.3.37f1","stream":"LTS","releaseDate":"2022-07-21T09:53:36.224Z"},{"version":"2022.1.10f1","stream":"TECH","releaseDate":"2022-07-20T11:35:58.889Z"},{"version":"2022.1.9f1","stream":"TECH","releaseDate":"2022-07-14T11:39:28.809Z"},{"version":"2022.2.0b1","stream":"BETA","releaseDate":"2022-07-12T23:24:29.908Z"},{"version":"2021.3.6f1","stream":"LTS","releaseDate":"2022-07-08T09:48:54.711Z"},{"version":"2022.1.8f1","stream":"TECH","releaseDate":"2022-07-07T15:05:53.642Z"},{"version":"2022.2.0a18","stream":"ALPHA","releaseDate":"2022-07-04T16:35:28.141Z"},{"version":"2022.1.7f1","stream":"TECH","releaseDate":"2022-06-29T12:39:55.587Z"},{"version":"2022.1.6f1","stream":"TECH","releaseDate":"2022-06-23T11:07:14.856Z"},{"version":"2021.3.5f1","stream":"LTS","releaseDate":"2022-06-22T17:32:31.147Z"},{"version":"2019.4.40f1","stream":"LTS","releaseDate":"2022-06-16T20:44:08.743Z"},{"version":"2022.2.0a17","stream":"ALPHA","releaseDate":"2022-06-16T19:20:11.108Z"},{"version":"2020.3.36f1","stream":"LTS","releaseDate":"2022-06-16T15:04:11.655Z"},{"version":"2022.1.5f1","stream":"TECH","releaseDate":"2022-06-15T16:47:55.461Z"},{"version":"2022.2.0a16","stream":"ALPHA","releaseDate":"2022-06-08T20:20:40.379Z"},{"version":"2022.1.4f1","stream":"TECH","releaseDate":"2022-06-08T15:53:22.151Z"},{"version":"2022.1.3f1","stream":"TECH","releaseDate":"2022-05-31T16:42:45.974Z"},{"version":"2021.3.4f1","stream":"LTS","releaseDate":"2022-05-31T15:14:15.559Z"},{"version":"2020.3.35f1","stream":"LTS","releaseDate":"2022-05-26T23:30:47.962Z"},{"version":"2022.1.2f1","stream":"TECH","releaseDate":"2022-05-25T14:32:41.967Z"},{"version":"2021.3.3f1","stream":"LTS","releaseDate":"2022-05-19T10:01:53.956Z"},{"version":"2022.1.1f1","stream":"TECH","releaseDate":"2022-05-18T20:43:29.778Z"},{"version":"2022.2.0a13","stream":"ALPHA","releaseDate":"2022-05-12T22:47:12.2Z"},{"version":"2019.4.39f1","stream":"LTS","releaseDate":"2022-05-11T22:31:15.588Z"},{"version":"2022.1.0f1","stream":"TECH","releaseDate":"2022-05-09T16:53:20.722Z"},{"version":"2022.2.0a12","stream":"ALPHA","releaseDate":"2022-05-05T12:15:24.277Z"},{"version":"2021.3.2f1","stream":"LTS","releaseDate":"2022-05-05T10:42:14.717Z"},{"version":"2020.3.34f1","stream":"LTS","releaseDate":"2022-05-04T14:33:40.994Z"},{"version":"2022.2.0a11","stream":"ALPHA","releaseDate":"2022-04-25T14:28:41.066Z"},{"version":"2021.3.1f1","stream":"LTS","releaseDate":"2022-04-21T18:19:43.403Z"},{"version":"2022.2.0a10","stream":"ALPHA","releaseDate":"2022-04-14T13:22:59.494Z"},{"version":"2019.4.38f1","stream":"LTS","releaseDate":"2022-04-13T15:24:10.41Z"},{"version":"2022.1.0b16","stream":"BETA","releaseDate":"2022-04-12T18:11:34.766Z"},{"version":"2021.3.0f1","stream":"LTS","releaseDate":"2022-04-11T18:46:28.654Z"},{"version":"2020.3.33f1","stream":"LTS","releaseDate":"2022-04-07T13:58:00.788Z"},{"version":"2022.1.0b15","stream":"BETA","releaseDate":"2022-04-07T07:56:08.228Z"},{"version":"2021.2.19f1","stream":"TECH","releaseDate":"2022-04-05T17:15:08.016Z"},{"version":"2022.2.0a9","stream":"ALPHA","releaseDate":"2022-04-01T10:23:18.714Z"},{"version":"2021.2.18f1","stream":"TECH","releaseDate":"2022-04-01T07:28:41.049Z"},{"version":"2022.1.0b14","stream":"BETA","releaseDate":"2022-03-30T09:56:12.725Z"},{"version":"2021.2.17f1","stream":"TECH","releaseDate":"2022-03-24T21:31:28.98Z"},{"version":"2020.3.32f1","stream":"LTS","releaseDate":"2022-03-23T15:39:23.912Z"},{"version":"2019.4.37f1","stream":"LTS","releaseDate":"2022-03-22T18:47:13.846Z"},{"version":"2022.1.0b13","stream":"BETA","releaseDate":"2022-03-22T17:02:39.21Z"},{"version":"2020.3.31f1","stream":"LTS","releaseDate":"2022-03-17T18:06:28.222Z"},{"version":"2021.2.16f1","stream":"TECH","releaseDate":"2022-03-17T17:27:16.428Z"},{"version":"2022.1.0b12","stream":"BETA","releaseDate":"2022-03-17T15:03:20.498Z"},{"version":"2021.2.15f1","stream":"TECH","releaseDate":"2022-03-11T17:03:49.668Z"},{"version":"2022.1.0b11","stream":"BETA","releaseDate":"2022-03-09T07:19:01.616Z"},{"version":"2021.2.14f1","stream":"TECH","releaseDate":"2022-03-03T17:20:56.922Z"},{"version":"2022.1.0b10","stream":"BETA","releaseDate":"2022-03-02T12:36:18.043Z"},{"version":"2020.3.30f1","stream":"LTS","releaseDate":"2022-02-24T17:26:14.613Z"},{"version":"2021.2.13f1","stream":"TECH","releaseDate":"2022-02-23T19:42:33.34Z"},{"version":"2022.1.0b9","stream":"BETA","releaseDate":"2022-02-23T13:13:56.537Z"},{"version":"2021.2.12f1","stream":"TECH","releaseDate":"2022-02-17T20:43:34.621Z"},{"version":"2019.4.36f1","stream":"LTS","releaseDate":"2022-02-17T16:41:01.394Z"},{"version":"2020.3.29f1","stream":"LTS","releaseDate":"2022-02-17T15:59:07.521Z"},{"version":"2022.1.0b8","stream":"BETA","releaseDate":"2022-02-16T11:35:02.222Z"},{"version":"2021.2.11f1","stream":"TECH","releaseDate":"2022-02-10T17:24:35.612Z"},{"version":"2020.3.28f1","stream":"LTS","releaseDate":"2022-02-09T21:48:58.684Z"},{"version":"2022.1.0b7","stream":"BETA","releaseDate":"2022-02-08T11:39:17.916Z"},{"version":"2022.1.0b6","stream":"BETA","releaseDate":"2022-02-02T08:30:32.412Z"},{"version":"2021.2.10f1","stream":"TECH","releaseDate":"2022-02-01T22:07:17.864Z"},{"version":"2020.3.27f1","stream":"LTS","releaseDate":"2022-01-31T23:06:41.649Z"},{"version":"2019.4.35f1","stream":"LTS","releaseDate":"2022-01-28T14:26:18.891Z"},{"version":"2022.1.0b5","stream":"BETA","releaseDate":"2022-01-27T17:44:54.531Z"},{"version":"2021.2.9f1","stream":"TECH","releaseDate":"2022-01-27T17:09:54.141Z"},{"version":"2022.1.0b4","stream":"BETA","releaseDate":"2022-01-19T11:50:18.82Z"},{"version":"2020.3.26f1","stream":"LTS","releaseDate":"2022-01-13T20:29:30.146Z"},{"version":"2021.2.8f1","stream":"TECH","releaseDate":"2022-01-13T16:36:04.553Z"},{"version":"2022.1.0b3","stream":"BETA","releaseDate":"2022-01-12T12:14:48.421Z"},{"version":"2020.3.25f1","stream":"LTS","releaseDate":"2021-12-16T18:21:47.61Z"},{"version":"2021.2.7f1","stream":"TECH","releaseDate":"2021-12-16T17:44:39.837Z"},{"version":"2019.4.34f1","stream":"LTS","releaseDate":"2021-12-15T17:52:49.421Z"},{"version":"2022.1.0b2","stream":"BETA","releaseDate":"2021-12-14T18:43:17.216Z"},{"version":"2021.2.6f1","stream":"TECH","releaseDate":"2021-12-10T16:38:19.632Z"},{"version":"2022.1.0b1","stream":"BETA","releaseDate":"2021-12-08T19:49:54.8Z"},{"version":"2020.3.24f1","stream":"LTS","releaseDate":"2021-12-02T20:30:57.111Z"},{"version":"2021.2.5f1","stream":"TECH","releaseDate":"2021-12-01T16:54:28.059Z"},{"version":"2022.1.0a16","stream":"ALPHA","releaseDate":"2021-11-29T12:23:09.813Z"},{"version":"2019.4.33f1","stream":"LTS","releaseDate":"2021-11-25T18:53:15.439Z"},{"version":"2021.2.4f1","stream":"TECH","releaseDate":"2021-11-25T13:45:23.549Z"},{"version":"2020.3.23f1","stream":"LTS","releaseDate":"2021-11-19T20:08:31.142Z"},{"version":"2022.1.0a15","stream":"ALPHA","releaseDate":"2021-11-18T12:23:33.305Z"},{"version":"2021.2.3f1","stream":"TECH","releaseDate":"2021-11-18T11:49:58.417Z"},{"version":"2021.2.2f1","stream":"TECH","releaseDate":"2021-11-11T11:54:38.289Z"},{"version":"2020.3.22f1","stream":"LTS","releaseDate":"2021-11-05T19:35:33.664Z"},{"version":"2021.1.28f1","stream":"TECH","releaseDate":"2021-11-04T19:43:00.612Z"},{"version":"2021.2.1f1","stream":"TECH","releaseDate":"2021-11-04T12:14:00.179Z"},{"version":"2019.4.32f1","stream":"LTS","releaseDate":"2021-10-28T16:49:13.453Z"},{"version":"2022.1.0a13","stream":"ALPHA","releaseDate":"2021-10-28T14:30:14.459Z"},{"version":"2021.1.27f1","stream":"TECH","releaseDate":"2021-10-25T19:24:00.396Z"},{"version":"2021.2.0f1","stream":"TECH","releaseDate":"2021-10-25T14:52:13.034Z"},{"version":"2020.3.21f1","stream":"LTS","releaseDate":"2021-10-21T16:33:29.335Z"},{"version":"2021.1.26f1","stream":"TECH","releaseDate":"2021-10-20T15:42:50.491Z"},{"version":"2021.1.25f1","stream":"TECH","releaseDate":"2021-10-14T21:35:29.388Z"},{"version":"2022.1.0a12","stream":"ALPHA","releaseDate":"2021-10-13T19:34:46.255Z"},{"version":"2021.2.0b16","stream":"BETA","releaseDate":"2021-10-12T16:42:06.071Z"},{"version":"2020.3.20f1","stream":"LTS","releaseDate":"2021-10-08T16:38:35.542Z"},{"version":"2021.1.24f1","stream":"TECH","releaseDate":"2021-10-06T18:29:11.434Z"},{"version":"2022.1.0a11","stream":"ALPHA","releaseDate":"2021-10-06T15:14:18.114Z"},{"version":"2021.2.0b15","stream":"BETA","releaseDate":"2021-10-06T09:13:13.691Z"},{"version":"2022.1.0a10","stream":"ALPHA","releaseDate":"2021-10-01T19:35:39.33Z"},{"version":"2021.2.0b14","stream":"BETA","releaseDate":"2021-10-01T11:27:08.42Z"},{"version":"2021.1.23f1","stream":"TECH","releaseDate":"2021-09-30T17:01:27.178Z"},{"version":"2019.4.31f1","stream":"LTS","releaseDate":"2021-09-30T16:11:12.7Z"},{"version":"2022.1.0a9","stream":"ALPHA","releaseDate":"2021-09-23T16:24:52.925Z"},{"version":"2020.3.19f1","stream":"LTS","releaseDate":"2021-09-22T21:58:37.423Z"},{"version":"2021.2.0b13","stream":"BETA","releaseDate":"2021-09-22T13:58:46.571Z"},{"version":"2021.1.22f1","stream":"TECH","releaseDate":"2021-09-21T00:25:04.557Z"},{"version":"2021.2.0b12","stream":"BETA","releaseDate":"2021-09-16T11:41:11.337Z"},{"version":"2022.1.0a8","stream":"ALPHA","releaseDate":"2021-09-15T14:02:16.501Z"},{"version":"2021.1.21f1","stream":"TECH","releaseDate":"2021-09-14T21:44:40.4Z"},{"version":"2020.3.18f1","stream":"LTS","releaseDate":"2021-09-09T09:35:05.255Z"},{"version":"2021.1.20f1","stream":"TECH","releaseDate":"2021-09-08T13:15:22.713Z"},{"version":"2021.2.0b11","stream":"BETA","releaseDate":"2021-09-07T11:45:52.414Z"},{"version":"2022.1.0a7","stream":"ALPHA","releaseDate":"2021-09-06T11:16:46.35Z"},{"version":"2021.2.0b10","stream":"BETA","releaseDate":"2021-09-04T01:54:50.158Z"},{"version":"2019.4.30f1","stream":"LTS","releaseDate":"2021-09-03T22:17:29.374Z"},{"version":"2021.1.19f1","stream":"TECH","releaseDate":"2021-09-01T10:51:04.953Z"},{"version":"2020.3.17f1","stream":"LTS","releaseDate":"2021-08-25T18:28:14.223Z"},{"version":"2021.1.18f1","stream":"TECH","releaseDate":"2021-08-25T17:26:42.238Z"},{"version":"2021.2.0b9","stream":"BETA","releaseDate":"2021-08-25T11:31:02.295Z"},{"version":"2021.2.0b8","stream":"BETA","releaseDate":"2021-08-19T09:59:27.465Z"},{"version":"2021.1.17f1","stream":"TECH","releaseDate":"2021-08-13T18:37:59.39Z"},{"version":"2020.3.16f1","stream":"LTS","releaseDate":"2021-08-12T15:55:22.688Z"},{"version":"2021.2.0b7","stream":"BETA","releaseDate":"2021-08-10T10:33:56.915Z"},{"version":"2021.2.0b6","stream":"BETA","releaseDate":"2021-08-04T13:24:08.916Z"},{"version":"2021.2.0b5","stream":"BETA","releaseDate":"2021-08-02T15:15:23.162Z"},{"version":"2021.1.16f1","stream":"TECH","releaseDate":"2021-08-02T14:27:00.489Z"},{"version":"2020.3.15f2","stream":"LTS","releaseDate":"2021-07-30T16:23:30.239Z"},{"version":"2019.4.29f1","stream":"LTS","releaseDate":"2021-07-30T15:19:33.152Z"},{"version":"2021.2.0b4","stream":"BETA","releaseDate":"2021-07-15T10:53:43.739Z"},{"version":"2021.1.15f1","stream":"TECH","releaseDate":"2021-07-14T11:13:58.182Z"},{"version":"2020.3.14f1","stream":"LTS","releaseDate":"2021-07-13T16:58:10.491Z"},{"version":"2021.2.0b3","stream":"BETA","releaseDate":"2021-07-08T10:47:42.2Z"},{"version":"2021.1.14f1","stream":"TECH","releaseDate":"2021-07-07T01:08:43.836Z"},{"version":"2021.2.0b2","stream":"BETA","releaseDate":"2021-07-02T13:15:04.412Z"},{"version":"2020.3.13f1","stream":"LTS","releaseDate":"2021-06-30T18:40:12.88Z"},{"version":"2021.1.13f1","stream":"TECH","releaseDate":"2021-06-30T05:59:29.187Z"},{"version":"2021.2.0b1","stream":"BETA","releaseDate":"2021-06-18T19:27:35.539Z"},{"version":"2018.4.36f1","stream":"LTS","releaseDate":"2021-06-17T16:13:54.008Z"},{"version":"2021.1.12f1","stream":"TECH","releaseDate":"2021-06-17T15:00:50.572Z"},{"version":"2020.3.12f1","stream":"LTS","releaseDate":"2021-06-15T18:58:12.277Z"},{"version":"2021.2.0a21","stream":"ALPHA","releaseDate":"2021-06-15T16:37:53.038Z"},{"version":"2021.1.11f1","stream":"TECH","releaseDate":"2021-06-10T10:04:24.296Z"},{"version":"2021.2.0a20","stream":"ALPHA","releaseDate":"2021-06-09T17:17:01.426Z"},{"version":"2019.4.28f1","stream":"LTS","releaseDate":"2021-06-03T17:50:56.439Z"},{"version":"2021.1.10f1","stream":"TECH","releaseDate":"2021-06-03T16:53:09.276Z"},{"version":"2021.2.0a19","stream":"ALPHA","releaseDate":"2021-06-03T15:19:41.987Z"},{"version":"2020.3.11f1","stream":"LTS","releaseDate":"2021-06-01T17:44:03.061Z"},{"version":"2021.1.9f1","stream":"TECH","releaseDate":"2021-05-28T12:13:35.97Z"},{"version":"2020.3.10f1","stream":"LTS","releaseDate":"2021-05-26T18:08:15.246Z"},{"version":"2019.4.27f1","stream":"LTS","releaseDate":"2021-05-20T13:45:43.095Z"},{"version":"2020.3.9f1","stream":"LTS","releaseDate":"2021-05-19T17:45:38.084Z"},{"version":"2021.1.7f1","stream":"TECH","releaseDate":"2021-05-13T14:00:02.535Z"},{"version":"2020.3.8f1","stream":"LTS","releaseDate":"2021-05-12T20:50:34.775Z"},{"version":"2021.2.0a17","stream":"ALPHA","releaseDate":"2021-05-12T18:15:13.437Z"},{"version":"2018.4.35f1","stream":"LTS","releaseDate":"2021-05-12T15:16:04.996Z"},{"version":"2021.1.6f1","stream":"TECH","releaseDate":"2021-05-06T06:42:44.386Z"},{"version":"2019.4.26f1","stream":"LTS","releaseDate":"2021-05-05T18:28:43.028Z"},{"version":"2020.3.7f1","stream":"LTS","releaseDate":"2021-05-05T17:05:58.368Z"},{"version":"2021.2.0a16","stream":"ALPHA","releaseDate":"2021-05-05T15:00:27.234Z"},{"version":"2020.3.6f1","stream":"LTS","releaseDate":"2021-04-28T18:33:45.041Z"},{"version":"2021.2.0a15","stream":"ALPHA","releaseDate":"2021-04-28T16:51:06.522Z"},{"version":"2021.1.5f1","stream":"TECH","releaseDate":"2021-04-28T11:57:22.314Z"},{"version":"2019.4.25f1","stream":"LTS","releaseDate":"2021-04-22T18:56:19.468Z"},{"version":"2021.1.4f1","stream":"TECH","releaseDate":"2021-04-22T08:14:16.919Z"},{"version":"2021.2.0a14","stream":"ALPHA","releaseDate":"2021-04-21T16:58:34.062Z"},{"version":"2020.3.5f1","stream":"LTS","releaseDate":"2021-04-21T15:58:44.831Z"},{"version":"2018.4.34f1","stream":"LTS","releaseDate":"2021-04-15T10:28:39.047Z"},{"version":"2021.2.0a13","stream":"ALPHA","releaseDate":"2021-04-14T16:07:25.935Z"},{"version":"2020.3.4f1","stream":"LTS","releaseDate":"2021-04-13T17:59:16.594Z"},{"version":"2021.1.3f1","stream":"TECH","releaseDate":"2021-04-13T11:23:53.38Z"},{"version":"2019.4.24f1","stream":"LTS","releaseDate":"2021-04-08T23:33:06.909Z"},{"version":"2020.3.3f1","stream":"LTS","releaseDate":"2021-04-07T16:37:40.613Z"},{"version":"2021.1.2f1","stream":"TECH","releaseDate":"2021-04-07T14:35:36.828Z"},{"version":"2021.2.0a12","stream":"ALPHA","releaseDate":"2021-04-06T16:40:54.747Z"},{"version":"2021.2.0a11","stream":"ALPHA","releaseDate":"2021-03-31T17:48:42.977Z"},{"version":"2021.1.1f1","stream":"TECH","releaseDate":"2021-03-31T14:04:08.025Z"},{"version":"2020.3.2f1","stream":"LTS","releaseDate":"2021-03-29T18:24:30.684Z"},{"version":"2021.2.0a10","stream":"ALPHA","releaseDate":"2021-03-24T20:41:29.457Z"},{"version":"2018.4.33f1","stream":"LTS","releaseDate":"2021-03-24T17:48:21.951Z"},{"version":"2019.4.23f1","stream":"LTS","releaseDate":"2021-03-24T16:44:56.561Z"},{"version":"2020.3.1f1","stream":"LTS","releaseDate":"2021-03-22T18:05:51.728Z"},{"version":"2021.1.0f1","stream":"TECH","releaseDate":"2021-03-22T11:13:57.905Z"},{"version":"2021.2.0a9","stream":"ALPHA","releaseDate":"2021-03-17T18:02:06.971Z"},{"version":"2021.1.0b12","stream":"BETA","releaseDate":"2021-03-17T11:21:39.687Z"},{"version":"2020.3.0f1","stream":"LTS","releaseDate":"2021-03-10T23:09:00.019Z"},{"version":"2021.1.0b11","stream":"BETA","releaseDate":"2021-03-10T18:19:22.091Z"},{"version":"2019.4.22f1","stream":"LTS","releaseDate":"2021-03-10T16:07:28.301Z"},{"version":"2021.2.0a8","stream":"ALPHA","releaseDate":"2021-03-09T15:39:33.338Z"},{"version":"2021.1.0b10","stream":"BETA","releaseDate":"2021-03-04T17:23:44.817Z"},{"version":"2020.2.7f1","stream":"LTS","releaseDate":"2021-03-04T16:43:17.817Z"},{"version":"2021.2.0a6","stream":"ALPHA","releaseDate":"2021-02-24T18:59:57.208Z"},{"version":"2021.1.0b8","stream":"BETA","releaseDate":"2021-02-24T17:47:25.506Z"},{"version":"2019.4.21f1","stream":"LTS","releaseDate":"2021-02-24T17:14:33.49Z"},{"version":"2020.2.6f1","stream":"LTS","releaseDate":"2021-02-24T00:10:19.496Z"},{"version":"2020.2.5f1","stream":"LTS","releaseDate":"2021-02-18T23:17:13.017Z"},{"version":"2018.4.32f1","stream":"LTS","releaseDate":"2021-02-18T12:18:22.145Z"},{"version":"2021.2.0a5","stream":"ALPHA","releaseDate":"2021-02-17T16:45:52.404Z"},{"version":"2021.1.0b7","stream":"BETA","releaseDate":"2021-02-17T15:33:40.334Z"},{"version":"2020.2.4f1","stream":"LTS","releaseDate":"2021-02-12T20:14:18.572Z"},{"version":"2019.4.20f1","stream":"LTS","releaseDate":"2021-02-10T17:06:33.684Z"},{"version":"2021.1.0b6","stream":"BETA","releaseDate":"2021-02-10T15:26:16.381Z"},{"version":"2020.2.3f1","stream":"LTS","releaseDate":"2021-02-03T20:51:44.022Z"},{"version":"2021.1.0b5","stream":"BETA","releaseDate":"2021-02-03T11:02:09.257Z"},{"version":"2019.4.19f1","stream":"LTS","releaseDate":"2021-02-01T17:49:54.726Z"},{"version":"2021.1.0b4","stream":"BETA","releaseDate":"2021-01-27T12:14:30.67Z"},{"version":"2018.4.31f1","stream":"LTS","releaseDate":"2021-01-22T14:08:18.401Z"},{"version":"2020.2.2f1","stream":"LTS","releaseDate":"2021-01-21T20:41:55.747Z"},{"version":"2021.1.0b3","stream":"BETA","releaseDate":"2021-01-20T16:49:58.086Z"},{"version":"2021.1.0b2","stream":"BETA","releaseDate":"2021-01-13T15:48:52.769Z"},{"version":"2019.4.18f1","stream":"LTS","releaseDate":"2021-01-13T15:13:41.161Z"},{"version":"2020.2.1f1","stream":"LTS","releaseDate":"2020-12-23T17:32:56.794Z"},{"version":"2021.1.0b1","stream":"BETA","releaseDate":"2020-12-23T15:53:59.255Z"},{"version":"2019.4.17f1","stream":"LTS","releaseDate":"2020-12-22T15:05:02.037Z"},{"version":"2020.2.0f1","stream":"LTS","releaseDate":"2020-12-14T20:24:28.653Z"},{"version":"2021.1.0a9","stream":"ALPHA","releaseDate":"2020-12-11T09:34:06.14Z"},{"version":"2020.1.17f1","stream":"LTS","releaseDate":"2020-12-09T11:39:40.055Z"},{"version":"2020.2.0b14","stream":"BETA","releaseDate":"2020-12-02T17:45:40.026Z"},{"version":"2021.1.0a8","stream":"ALPHA","releaseDate":"2020-12-02T17:15:19.256Z"},{"version":"2019.4.16f1","stream":"LTS","releaseDate":"2020-12-02T16:12:41.344Z"},{"version":"2018.4.30f1","stream":"LTS","releaseDate":"2020-12-01T20:09:28.083Z"},{"version":"2020.1.16f1","stream":"LTS","releaseDate":"2020-12-01T19:04:30.374Z"},{"version":"2021.1.0a7","stream":"ALPHA","releaseDate":"2020-11-25T18:59:24.158Z"},{"version":"2020.2.0b13","stream":"BETA","releaseDate":"2020-11-25T17:57:21.563Z"},{"version":"2020.1.15f1","stream":"LTS","releaseDate":"2020-11-25T11:32:56.247Z"},{"version":"2020.2.0b12","stream":"BETA","releaseDate":"2020-11-19T18:01:22.432Z"},{"version":"2020.1.14f1","stream":"LTS","releaseDate":"2020-11-18T19:08:42.052Z"},{"version":"2019.4.15f1","stream":"LTS","releaseDate":"2020-11-18T18:02:15.055Z"},{"version":"2021.1.0a5","stream":"ALPHA","releaseDate":"2020-11-16T08:29:13.862Z"},{"version":"2021.1.0a6","stream":"ALPHA","releaseDate":"2020-11-12T13:53:12.828Z"},{"version":"2020.2.0b11","stream":"BETA","releaseDate":"2020-11-11T19:36:00.659Z"},{"version":"2018.4.29f1","stream":"LTS","releaseDate":"2020-11-11T10:56:28.809Z"},{"version":"2020.1.13f1","stream":"LTS","releaseDate":"2020-11-11T09:59:32.603Z"},{"version":"2019.4.14f1","stream":"LTS","releaseDate":"2020-11-05T17:37:50.176Z"},{"version":"2020.2.0b10","stream":"BETA","releaseDate":"2020-11-04T17:18:58.393Z"},{"version":"2021.1.0a4","stream":"ALPHA","releaseDate":"2020-11-04T11:36:41.327Z"},{"version":"2020.1.12f1","stream":"LTS","releaseDate":"2020-11-04T11:19:05.134Z"},{"version":"2020.2.0b9","stream":"BETA","releaseDate":"2020-10-28T16:33:57.648Z"},{"version":"2020.1.11f1","stream":"LTS","releaseDate":"2020-10-28T11:19:45.342Z"},{"version":"2020.2.0b8","stream":"BETA","releaseDate":"2020-10-22T15:53:30.161Z"},{"version":"2021.1.0a2","stream":"ALPHA","releaseDate":"2020-10-22T10:37:27.727Z"},{"version":"2019.4.13f1","stream":"LTS","releaseDate":"2020-10-21T14:49:14.4Z"},{"version":"2020.1.10f1","stream":"LTS","releaseDate":"2020-10-21T09:46:16.103Z"},{"version":"2020.2.0b7","stream":"BETA","releaseDate":"2020-10-15T20:12:00.785Z"},{"version":"2020.1.9f1","stream":"LTS","releaseDate":"2020-10-13T17:07:55.642Z"},{"version":"2020.2.0b6","stream":"BETA","releaseDate":"2020-10-08T17:11:41.822Z"},{"version":"2019.4.12f1","stream":"LTS","releaseDate":"2020-10-07T16:30:31.41Z"},{"version":"2020.1.8f1","stream":"LTS","releaseDate":"2020-10-06T10:51:55.487Z"},{"version":"2018.4.28f1","stream":"LTS","releaseDate":"2020-10-06T09:51:51.368Z"},{"version":"2020.2.0b5","stream":"BETA","releaseDate":"2020-10-01T17:28:10.446Z"},{"version":"2020.1.7f1","stream":"LTS","releaseDate":"2020-09-30T09:51:21.006Z"},{"version":"2020.2.0b4","stream":"BETA","releaseDate":"2020-09-28T15:04:05.094Z"},{"version":"2019.4.11f1","stream":"LTS","releaseDate":"2020-09-23T14:50:07.523Z"},{"version":"2020.1.6f1","stream":"LTS","releaseDate":"2020-09-16T10:37:08.418Z"},{"version":"2019.4.10f1","stream":"LTS","releaseDate":"2020-09-10T15:00:59.355Z"},{"version":"2020.1.5f1","stream":"LTS","releaseDate":"2020-09-10T12:29:36.749Z"},{"version":"2020.2.0b2","stream":"BETA","releaseDate":"2020-09-09T17:06:38.902Z"},{"version":"2018.4.27f1","stream":"LTS","releaseDate":"2020-09-09T09:04:26.626Z"},{"version":"2020.2.0b1","stream":"BETA","releaseDate":"2020-09-03T03:50:06.958Z"},{"version":"2020.1.4f1","stream":"LTS","releaseDate":"2020-08-27T13:54:15.261Z"},{"version":"2019.4.9f1","stream":"LTS","releaseDate":"2020-08-26T15:12:20.178Z"},{"version":"2020.1.3f1","stream":"LTS","releaseDate":"2020-08-21T17:25:52.43Z"},{"version":"2020.2.0a21","stream":"ALPHA","releaseDate":"2020-08-20T16:08:48.015Z"},{"version":"2019.4.8f1","stream":"LTS","releaseDate":"2020-08-12T13:18:43.927Z"},{"version":"2018.4.26f1","stream":"LTS","releaseDate":"2020-08-12T11:59:47.812Z"},{"version":"2020.1.2f1","stream":"LTS","releaseDate":"2020-08-12T11:11:53.662Z"},{"version":"2019.4.7f1","stream":"LTS","releaseDate":"2020-08-05T15:02:13.572Z"},{"version":"2020.1.1f1","stream":"LTS","releaseDate":"2020-08-05T09:04:55.163Z"},{"version":"2019.4.6f1","stream":"LTS","releaseDate":"2020-07-30T20:31:02.827Z"},{"version":"2020.2.0a19","stream":"ALPHA","releaseDate":"2020-07-28T17:12:37.126Z"},{"version":"2019.4.5f1","stream":"LTS","releaseDate":"2020-07-23T08:08:58.294Z"},{"version":"2020.1.0f1","stream":"LTS","releaseDate":"2020-07-20T10:15:38.949Z"},{"version":"2020.2.0a18","stream":"ALPHA","releaseDate":"2020-07-15T15:09:32.204Z"},{"version":"2019.4.4f1","stream":"LTS","releaseDate":"2020-07-15T14:33:21.342Z"},{"version":"2018.4.25f1","stream":"LTS","releaseDate":"2020-07-14T15:59:51.172Z"},{"version":"2020.1.0b16","stream":"BETA","releaseDate":"2020-07-14T11:16:19.736Z"},{"version":"2019.4.3f1","stream":"LTS","releaseDate":"2020-07-08T17:17:30.743Z"},{"version":"2020.1.0b15","stream":"BETA","releaseDate":"2020-07-08T13:16:36.144Z"},{"version":"2020.2.0a17","stream":"ALPHA","releaseDate":"2020-07-07T17:13:29.087Z"},{"version":"2018.4.24f1","stream":"LTS","releaseDate":"2020-07-02T12:50:59.969Z"},{"version":"2019.4.2f1","stream":"LTS","releaseDate":"2020-07-01T14:31:49.653Z"},{"version":"2020.2.0a16","stream":"ALPHA","releaseDate":"2020-06-30T17:30:06.405Z"},{"version":"2020.1.0b14","stream":"BETA","releaseDate":"2020-06-30T13:03:30.165Z"},{"version":"2019.4.1f1","stream":"LTS","releaseDate":"2020-06-18T14:26:11.25Z"},{"version":"2020.2.0a15","stream":"ALPHA","releaseDate":"2020-06-16T22:26:34.624Z"},{"version":"2020.1.0b13","stream":"BETA","releaseDate":"2020-06-16T15:13:24.163Z"},{"version":"2020.1.0b12","stream":"BETA","releaseDate":"2020-06-09T15:59:47.841Z"},{"version":"2019.4.0f1","stream":"LTS","releaseDate":"2020-06-07T16:09:39.244Z"},{"version":"2020.1.0b11","stream":"BETA","releaseDate":"2020-06-03T08:04:41.278Z"},{"version":"2020.2.0a13","stream":"ALPHA","releaseDate":"2020-06-02T18:22:41.666Z"},{"version":"2019.3.15f1","stream":"LTS","releaseDate":"2020-05-28T15:28:05.935Z"},{"version":"2020.1.0b10","stream":"BETA","releaseDate":"2020-05-27T15:18:15.761Z"},{"version":"2020.2.0a12","stream":"ALPHA","releaseDate":"2020-05-27T01:46:13.703Z"},{"version":"2020.1.0b9","stream":"BETA","releaseDate":"2020-05-18T19:30:07.616Z"},{"version":"2019.3.14f1","stream":"LTS","releaseDate":"2020-05-18T19:09:15.413Z"},{"version":"2020.2.0a11","stream":"ALPHA","releaseDate":"2020-05-18T17:28:51.358Z"},{"version":"2018.4.23f1","stream":"LTS","releaseDate":"2020-05-18T16:26:44.505Z"},{"version":"2017.4.40f1","stream":"LTS","releaseDate":"2020-05-18T15:54:47.513Z"},{"version":"2019.3.13f1","stream":"LTS","releaseDate":"2020-05-06T16:28:06.431Z"},{"version":"2020.2.0a10","stream":"ALPHA","releaseDate":"2020-05-06T14:34:37.918Z"},{"version":"2020.1.0b8","stream":"BETA","releaseDate":"2020-05-05T16:50:03.104Z"},{"version":"2019.3.12f1","stream":"LTS","releaseDate":"2020-04-29T17:04:13.318Z"},{"version":"2020.2.0a9","stream":"ALPHA","releaseDate":"2020-04-28T13:42:11.975Z"},{"version":"2020.1.0b7","stream":"BETA","releaseDate":"2020-04-28T10:12:51.135Z"},{"version":"2018.4.22f1","stream":"LTS","releaseDate":"2020-04-24T11:56:23.065Z"},{"version":"2020.1.0b6","stream":"BETA","releaseDate":"2020-04-23T21:32:23.418Z"},{"version":"2020.2.0a8","stream":"ALPHA","releaseDate":"2020-04-23T20:39:25.331Z"},{"version":"2019.3.11f1","stream":"LTS","releaseDate":"2020-04-23T20:12:30.91Z"},{"version":"2019.3.10f1","stream":"LTS","releaseDate":"2020-04-16T14:51:49.221Z"},{"version":"2020.2.0a7","stream":"ALPHA","releaseDate":"2020-04-14T14:50:07.557Z"},{"version":"2018.4.21f1","stream":"LTS","releaseDate":"2020-04-09T10:24:27.752Z"},{"version":"2020.1.0b5","stream":"BETA","releaseDate":"2020-04-09T09:02:00.178Z"},{"version":"2019.3.9f1","stream":"LTS","releaseDate":"2020-04-08T17:27:11.233Z"},{"version":"2019.3.8f1","stream":"LTS","releaseDate":"2020-04-06T13:35:43.636Z"},{"version":"2017.4.39f1","stream":"LTS","releaseDate":"2020-04-03T08:51:34.4Z"},{"version":"2020.1.0b4","stream":"BETA","releaseDate":"2020-04-01T09:27:53.068Z"},{"version":"2019.3.7f1","stream":"LTS","releaseDate":"2020-03-26T13:25:09.746Z"},{"version":"2018.4.20f1","stream":"LTS","releaseDate":"2020-03-26T12:30:57.862Z"},{"version":"2020.1.0b3","stream":"BETA","releaseDate":"2020-03-26T08:40:28.937Z"},{"version":"2017.4.38f1","stream":"LTS","releaseDate":"2020-03-20T10:06:20.615Z"},{"version":"2019.3.6f1","stream":"LTS","releaseDate":"2020-03-19T13:48:25.49Z"},{"version":"2020.1.0b2","stream":"BETA","releaseDate":"2020-03-18T11:35:10.189Z"},{"version":"2018.4.19f1","stream":"LTS","releaseDate":"2020-03-13T10:43:07.033Z"},{"version":"2019.3.5f1","stream":"LTS","releaseDate":"2020-03-12T13:37:50.368Z"},{"version":"2020.1.0b1","stream":"BETA","releaseDate":"2020-03-11T12:36:55.598Z"},{"version":"2019.3.4f1","stream":"LTS","releaseDate":"2020-03-06T10:05:37.894Z"},{"version":"2020.1.0a25","stream":"ALPHA","releaseDate":"2020-02-27T12:18:33.968Z"},{"version":"2018.4.18f1","stream":"LTS","releaseDate":"2020-02-27T11:32:09.755Z"},{"version":"2019.3.3f1","stream":"LTS","releaseDate":"2020-02-26T13:41:18.47Z"},{"version":"2020.1.0a24","stream":"ALPHA","releaseDate":"2020-02-21T10:47:26.502Z"},{"version":"2019.3.2f1","stream":"LTS","releaseDate":"2020-02-19T16:29:42.676Z"},{"version":"2017.4.37f1","stream":"LTS","releaseDate":"2020-02-18T16:24:58.609Z"},{"version":"2020.1.0a23","stream":"ALPHA","releaseDate":"2020-02-12T15:20:34.112Z"},{"version":"2019.3.1f1","stream":"LTS","releaseDate":"2020-02-12T13:41:59.019Z"},{"version":"2018.4.17f1","stream":"LTS","releaseDate":"2020-02-11T11:48:12.924Z"},{"version":"2019.2.21f1","stream":"LTS","releaseDate":"2020-02-07T23:29:05.963Z"},{"version":"2020.1.0a22","stream":"ALPHA","releaseDate":"2020-02-05T10:35:10.098Z"},{"version":"2019.2.20f1","stream":"LTS","releaseDate":"2020-01-31T13:52:30.564Z"},{"version":"2020.1.0a21","stream":"ALPHA","releaseDate":"2020-01-30T11:45:07.164Z"},{"version":"2018.4.16f1","stream":"LTS","releaseDate":"2020-01-27T14:58:33.603Z"},{"version":"2019.3.0f6","stream":"LTS","releaseDate":"2020-01-27T12:06:56.575Z"},{"version":"2020.1.0a20","stream":"ALPHA","releaseDate":"2020-01-23T10:37:53.228Z"},{"version":"2019.2.19f1","stream":"LTS","releaseDate":"2020-01-22T19:01:38.023Z"},{"version":"2020.1.0a19","stream":"ALPHA","releaseDate":"2020-01-16T11:54:15.474Z"},{"version":"2019.2.18f1","stream":"LTS","releaseDate":"2020-01-15T23:24:20.651Z"},{"version":"2019.3.0f5","stream":"LTS","releaseDate":"2020-01-13T17:38:10.201Z"},{"version":"2017.4.36f1","stream":"LTS","releaseDate":"2020-01-09T14:49:31.02Z"},{"version":"2018.4.15f1","stream":"LTS","releaseDate":"2020-01-09T14:09:30.059Z"},{"version":"2020.1.0a18","stream":"ALPHA","releaseDate":"2020-01-08T11:28:04.162Z"},{"version":"2020.1.0a17","stream":"ALPHA","releaseDate":"2019-12-19T10:21:05.753Z"},{"version":"2019.2.17f1","stream":"LTS","releaseDate":"2019-12-18T19:20:41.595Z"},{"version":"2019.2.16f1","stream":"LTS","releaseDate":"2019-12-13T18:41:32.658Z"},{"version":"2020.1.0a16","stream":"ALPHA","releaseDate":"2019-12-12T14:47:22.946Z"},{"version":"2019.3.0f3","stream":"LTS","releaseDate":"2019-12-11T20:34:41.701Z"},{"version":"2018.4.14f1","stream":"LTS","releaseDate":"2019-12-10T11:15:45.58Z"},{"version":"2017.4.35f1","stream":"LTS","releaseDate":"2019-12-06T14:49:43.1Z"},{"version":"2020.1.0a15","stream":"ALPHA","releaseDate":"2019-12-06T10:23:44.009Z"},{"version":"2019.2.15f1","stream":"LTS","releaseDate":"2019-12-04T19:50:05.071Z"},{"version":"2019.2.14f1","stream":"LTS","releaseDate":"2019-11-27T18:40:20.135Z"},{"version":"2019.3.0f1","stream":"LTS","releaseDate":"2019-11-27T16:46:18.692Z"},{"version":"2019.3.0b12","stream":"BETA","releaseDate":"2019-11-21T20:46:51.96Z"},{"version":"2020.1.0a14","stream":"ALPHA","releaseDate":"2019-11-21T17:18:32.557Z"},{"version":"2018.4.13f1","stream":"LTS","releaseDate":"2019-11-21T15:42:03.544Z"},{"version":"2019.2.13f1","stream":"LTS","releaseDate":"2019-11-20T17:22:07.155Z"},{"version":"2020.1.0a13","stream":"ALPHA","releaseDate":"2019-11-15T12:47:40.557Z"},{"version":"2019.3.0b11","stream":"BETA","releaseDate":"2019-11-14T21:50:47.112Z"},{"version":"2019.2.12f1","stream":"LTS","releaseDate":"2019-11-11T18:38:24.9Z"},{"version":"2020.1.0a12","stream":"ALPHA","releaseDate":"2019-11-08T10:46:31.252Z"},{"version":"2019.3.0b10","stream":"BETA","releaseDate":"2019-11-06T17:42:42.164Z"},{"version":"2019.3.0b9","stream":"BETA","releaseDate":"2019-11-01T16:37:43.062Z"},{"version":"2019.2.11f1","stream":"LTS","releaseDate":"2019-11-01T12:01:07.474Z"},{"version":"2020.1.0a11","stream":"ALPHA","releaseDate":"2019-10-31T16:32:46.552Z"},{"version":"2017.4.34f1","stream":"LTS","releaseDate":"2019-10-30T17:20:05.481Z"},{"version":"2018.4.12f1","stream":"LTS","releaseDate":"2019-10-28T11:35:32.884Z"},{"version":"2019.2.10f1","stream":"LTS","releaseDate":"2019-10-23T21:46:43.575Z"},{"version":"2019.3.0b8","stream":"BETA","releaseDate":"2019-10-23T17:20:42.499Z"},{"version":"2020.1.0a9","stream":"ALPHA","releaseDate":"2019-10-17T10:21:00.053Z"},{"version":"2019.3.0b7","stream":"BETA","releaseDate":"2019-10-14T17:32:52.898Z"},{"version":"2019.2.9f1","stream":"LTS","releaseDate":"2019-10-11T18:05:30.452Z"},{"version":"2018.4.11f1","stream":"LTS","releaseDate":"2019-10-10T13:08:52.311Z"},{"version":"2020.1.0a8","stream":"ALPHA","releaseDate":"2019-10-10T09:24:32.063Z"},{"version":"2017.4.33f1","stream":"LTS","releaseDate":"2019-10-07T08:27:32.743Z"},{"version":"2019.3.0b6","stream":"BETA","releaseDate":"2019-10-04T16:50:37.447Z"},{"version":"2019.2.8f1","stream":"LTS","releaseDate":"2019-10-03T22:11:03.839Z"},{"version":"2020.1.0a7","stream":"ALPHA","releaseDate":"2019-10-01T16:22:34.376Z"},{"version":"2018.4.10f1","stream":"LTS","releaseDate":"2019-10-01T12:06:54.816Z"},{"version":"2019.2.7f2","stream":"LTS","releaseDate":"2019-09-30T18:04:28.712Z"},{"version":"2019.3.0b5","stream":"BETA","releaseDate":"2019-09-30T14:32:45.431Z"},{"version":"2020.1.0a5","stream":"ALPHA","releaseDate":"2019-09-25T14:28:57.747Z"},{"version":"2019.3.0b4","stream":"BETA","releaseDate":"2019-09-20T15:43:52.375Z"},{"version":"2019.2.6f1","stream":"LTS","releaseDate":"2019-09-17T19:29:14.52Z"},{"version":"2018.4.9f1","stream":"LTS","releaseDate":"2019-09-13T12:05:02.297Z"},{"version":"2019.2.5f1","stream":"LTS","releaseDate":"2019-09-12T15:37:27.548Z"},{"version":"2019.3.0b3","stream":"BETA","releaseDate":"2019-09-10T16:31:30.365Z"},{"version":"2019.3.0b2","stream":"BETA","releaseDate":"2019-09-06T17:16:21.53Z"},{"version":"2020.1.0a3","stream":"ALPHA","releaseDate":"2019-09-05T15:08:44.256Z"},{"version":"2019.2.4f1","stream":"LTS","releaseDate":"2019-09-05T14:17:26.668Z"},{"version":"2017.4.32f1","stream":"LTS","releaseDate":"2019-09-05T11:50:38.862Z"},{"version":"2018.4.8f1","stream":"LTS","releaseDate":"2019-08-30T09:24:35.891Z"},{"version":"2019.2.3f1","stream":"LTS","releaseDate":"2019-08-28T12:57:33.717Z"},{"version":"2019.3.0b1","stream":"BETA","releaseDate":"2019-08-26T15:03:03.449Z"},{"version":"2019.2.2f1","stream":"LTS","releaseDate":"2019-08-21T10:42:41.115Z"},{"version":"2018.4.7f1","stream":"LTS","releaseDate":"2019-08-19T10:07:37.594Z"},{"version":"2019.2.1f1","stream":"LTS","releaseDate":"2019-08-14T14:28:59.019Z"},{"version":"2019.3.0a12","stream":"ALPHA","releaseDate":"2019-08-13T14:24:35.256Z"},{"version":"2018.4.6f1","stream":"LTS","releaseDate":"2019-08-08T09:30:29.839Z"},{"version":"2019.1.14f1","stream":"LTS","releaseDate":"2019-08-08T09:01:21.726Z"},{"version":"2017.4.31f1","stream":"LTS","releaseDate":"2019-08-02T10:02:34.064Z"},{"version":"2019.1.13f1","stream":"LTS","releaseDate":"2019-08-01T11:12:43.951Z"},{"version":"2019.3.0a11","stream":"ALPHA","releaseDate":"2019-07-31T18:32:46.987Z"},{"version":"2019.2.0f1","stream":"LTS","releaseDate":"2019-07-29T10:48:07.134Z"},{"version":"2019.1.12f1","stream":"LTS","releaseDate":"2019-07-26T13:28:16.083Z"},{"version":"2018.4.5f1","stream":"LTS","releaseDate":"2019-07-26T11:33:58.831Z"},{"version":"2019.3.0a10","stream":"ALPHA","releaseDate":"2019-07-22T18:03:08.983Z"},{"version":"2019.2.0b10","stream":"BETA","releaseDate":"2019-07-18T15:39:34.132Z"},{"version":"2019.1.11f1","stream":"LTS","releaseDate":"2019-07-18T12:29:11.337Z"},{"version":"2018.4.4f1","stream":"LTS","releaseDate":"2019-07-12T16:20:22.902Z"},{"version":"2019.1.10f1","stream":"LTS","releaseDate":"2019-07-12T15:54:54.003Z"},{"version":"2019.2.0b9","stream":"BETA","releaseDate":"2019-07-11T18:56:49.631Z"},{"version":"2017.4.30f1","stream":"LTS","releaseDate":"2019-07-05T14:27:47.061Z"},{"version":"2019.1.9f1","stream":"LTS","releaseDate":"2019-07-05T11:47:29.641Z"},{"version":"2019.3.0a8","stream":"ALPHA","releaseDate":"2019-07-03T17:30:44.98Z"},{"version":"2018.4.3f1","stream":"LTS","releaseDate":"2019-06-28T13:03:41.367Z"},{"version":"2019.3.0a7","stream":"ALPHA","releaseDate":"2019-06-26T17:12:40.683Z"},{"version":"2019.2.0b7","stream":"BETA","releaseDate":"2019-06-25T20:47:11.254Z"},{"version":"2019.1.8f1","stream":"LTS","releaseDate":"2019-06-22T08:48:33.79Z"},{"version":"2019.3.0a6","stream":"ALPHA","releaseDate":"2019-06-19T03:02:44.009Z"},{"version":"2019.1.7f1","stream":"LTS","releaseDate":"2019-06-14T15:44:01.613Z"},{"version":"2019.2.0b6","stream":"BETA","releaseDate":"2019-06-12T09:40:00.788Z"},{"version":"2017.4.29f1","stream":"LTS","releaseDate":"2019-06-08T19:03:51.252Z"},{"version":"2018.4.2f1","stream":"LTS","releaseDate":"2019-06-08T18:07:32.046Z"},{"version":"2019.1.6f1","stream":"LTS","releaseDate":"2019-06-08T16:58:35.535Z"},{"version":"2019.3.0a5","stream":"ALPHA","releaseDate":"2019-06-06T12:22:57.562Z"},{"version":"2019.2.0b5","stream":"BETA","releaseDate":"2019-06-05T14:32:16.273Z"},{"version":"2019.1.5f1","stream":"LTS","releaseDate":"2019-06-03T11:40:25.501Z"},{"version":"2017.4.28f1","stream":"LTS","releaseDate":"2019-05-30T17:27:14.681Z"},{"version":"2019.3.0a4","stream":"ALPHA","releaseDate":"2019-05-30T14:15:42.707Z"},{"version":"2019.2.0b4","stream":"BETA","releaseDate":"2019-05-29T17:12:13.245Z"},{"version":"2018.4.1f1","stream":"LTS","releaseDate":"2019-05-28T16:24:03.858Z"},{"version":"2019.1.4f1","stream":"LTS","releaseDate":"2019-05-24T17:57:10.778Z"},{"version":"2019.2.0b3","stream":"BETA","releaseDate":"2019-05-22T14:03:19.445Z"},{"version":"2019.3.0a3","stream":"ALPHA","releaseDate":"2019-05-22T11:46:55.055Z"},{"version":"2019.1.3f1","stream":"LTS","releaseDate":"2019-05-16T14:47:53.826Z"},{"version":"2019.2.0b2","stream":"BETA","releaseDate":"2019-05-15T15:44:17.759Z"},{"version":"2019.3.0a2","stream":"ALPHA","releaseDate":"2019-05-10T20:36:39.254Z"},{"version":"2019.1.2f1","stream":"LTS","releaseDate":"2019-05-10T15:59:18.52Z"},{"version":"2017.4.27f1","stream":"LTS","releaseDate":"2019-05-10T13:21:41.135Z"},{"version":"2018.4.0f1","stream":"LTS","releaseDate":"2019-05-10T11:43:31.421Z"},{"version":"2019.2.0b1","stream":"BETA","releaseDate":"2019-05-09T09:44:58.351Z"},{"version":"2019.1.1f1","stream":"LTS","releaseDate":"2019-05-03T14:43:43.597Z"},{"version":"2019.2.0a14","stream":"ALPHA","releaseDate":"2019-05-01T17:59:12.688Z"},{"version":"2018.3.14f1","stream":"LTS","releaseDate":"2019-04-26T11:50:27.045Z"},{"version":"2019.2.0a13","stream":"ALPHA","releaseDate":"2019-04-24T17:50:21.067Z"},{"version":"2017.4.26f1","stream":"LTS","releaseDate":"2019-04-23T09:36:49.591Z"},{"version":"2018.3.13f1","stream":"LTS","releaseDate":"2019-04-18T09:14:47.695Z"},{"version":"2019.1.0f2","stream":"LTS","releaseDate":"2019-04-15T13:28:01.444Z"},{"version":"2019.2.0a11","stream":"ALPHA","releaseDate":"2019-04-11T16:48:43.184Z"},{"version":"2019.1.0f1","stream":"LTS","releaseDate":"2019-04-08T18:51:36.408Z"},{"version":"2018.3.12f1","stream":"LTS","releaseDate":"2019-04-08T14:36:53.346Z"},{"version":"2017.4.25f1","stream":"LTS","releaseDate":"2019-04-08T13:39:05.191Z"},{"version":"2019.1.0b10","stream":"BETA","releaseDate":"2019-04-03T14:15:22.385Z"},{"version":"2018.3.11f1","stream":"LTS","releaseDate":"2019-03-29T12:15:27.935Z"},{"version":"2019.1.0b9","stream":"BETA","releaseDate":"2019-03-26T16:57:04.847Z"},{"version":"2018.3.10f1","stream":"LTS","releaseDate":"2019-03-25T17:27:03.035Z"},{"version":"2017.4.24f1","stream":"LTS","releaseDate":"2019-03-22T09:39:13.667Z"},{"version":"2019.2.0a9","stream":"ALPHA","releaseDate":"2019-03-20T15:45:22.309Z"},{"version":"2019.1.0b8","stream":"BETA","releaseDate":"2019-03-18T17:17:39.093Z"},{"version":"2018.3.9f1","stream":"LTS","releaseDate":"2019-03-18T12:14:09.612Z"},{"version":"2019.1.0b7","stream":"BETA","releaseDate":"2019-03-13T16:10:13.39Z"},{"version":"2019.2.0a8","stream":"ALPHA","releaseDate":"2019-03-13T14:22:24.924Z"},{"version":"2017.4.23f1","stream":"LTS","releaseDate":"2019-03-08T17:28:16.467Z"},{"version":"2019.1.0b6","stream":"BETA","releaseDate":"2019-03-08T16:41:08.133Z"},{"version":"2018.3.8f1","stream":"LTS","releaseDate":"2019-03-08T16:15:08.806Z"},{"version":"2019.2.0a7","stream":"ALPHA","releaseDate":"2019-03-04T13:52:19.71Z"},{"version":"2019.1.0b5","stream":"BETA","releaseDate":"2019-03-01T16:44:15.408Z"},{"version":"5.6.7f1","stream":"LTS","releaseDate":"2019-02-28T18:35:23.895Z"},{"version":"2018.2.21f1","stream":"LTS","releaseDate":"2019-02-28T17:57:55.345Z"},{"version":"2017.4.22f1","stream":"LTS","releaseDate":"2019-02-28T17:01:39.756Z"},{"version":"2018.3.7f1","stream":"LTS","releaseDate":"2019-02-28T16:07:09.189Z"},{"version":"2019.2.0a6","stream":"ALPHA","releaseDate":"2019-02-27T07:50:11.087Z"},{"version":"2017.4.21f1","stream":"LTS","releaseDate":"2019-02-21T15:15:49.214Z"},{"version":"2019.1.0b4","stream":"BETA","releaseDate":"2019-02-19T16:30:33.254Z"},{"version":"2018.3.6f1","stream":"LTS","releaseDate":"2019-02-15T16:45:14.684Z"},{"version":"2019.1.0b3","stream":"BETA","releaseDate":"2019-02-11T15:22:34.464Z"},{"version":"2017.4.20f2","stream":"LTS","releaseDate":"2019-02-11T10:07:10.811Z"},{"version":"2018.3.5f1","stream":"LTS","releaseDate":"2019-02-08T15:27:29.379Z"},{"version":"2019.2.0a4","stream":"ALPHA","releaseDate":"2019-02-06T14:46:04.41Z"},{"version":"2019.1.0b2","stream":"BETA","releaseDate":"2019-02-04T13:55:05.8Z"},{"version":"2018.3.4f1","stream":"LTS","releaseDate":"2019-02-01T16:49:54.517Z"},{"version":"2019.1.0b1","stream":"BETA","releaseDate":"2019-01-28T15:21:41.622Z"},{"version":"2017.4.19f1","stream":"LTS","releaseDate":"2019-01-28T14:49:20.963Z"},{"version":"2018.3.3f1","stream":"LTS","releaseDate":"2019-01-25T14:37:01.862Z"},{"version":"2018.3.2f1","stream":"LTS","releaseDate":"2019-01-17T09:18:26.546Z"},{"version":"2019.1.0a14","stream":"ALPHA","releaseDate":"2019-01-15T18:45:50.054Z"},{"version":"2018.3.1f1","stream":"LTS","releaseDate":"2019-01-10T12:42:52.538Z"},{"version":"2017.4.18f1","stream":"LTS","releaseDate":"2019-01-10T11:37:33.909Z"},{"version":"2019.1.0a13","stream":"ALPHA","releaseDate":"2019-01-03T01:39:26.479Z"},{"version":"2019.1.0a12","stream":"ALPHA","releaseDate":"2018-12-14T18:20:29.279Z"},{"version":"2018.2.20f1","stream":"LTS","releaseDate":"2018-12-14T11:15:42.947Z"},{"version":"2018.3.0f2","stream":"LTS","releaseDate":"2018-12-12T12:02:30.555Z"},{"version":"2018.3.0f1","stream":"LTS","releaseDate":"2018-12-11T15:41:14.382Z"},{"version":"2017.2.5f1","stream":"LTS","releaseDate":"2018-12-07T18:04:37.579Z"},{"version":"2018.2.19f1","stream":"LTS","releaseDate":"2018-12-07T16:44:08.592Z"},{"version":"2017.4.17f1","stream":"LTS","releaseDate":"2018-12-07T15:51:37.308Z"},{"version":"2019.1.0a11","stream":"ALPHA","releaseDate":"2018-12-04T20:58:06.128Z"},{"version":"2018.2.18f1","stream":"LTS","releaseDate":"2018-11-30T15:10:33.273Z"},{"version":"2018.3.0b12","stream":"BETA","releaseDate":"2018-11-28T12:03:56.216Z"},{"version":"2019.1.0a10","stream":"ALPHA","releaseDate":"2018-11-23T16:56:21.743Z"},{"version":"2017.4.16f1","stream":"LTS","releaseDate":"2018-11-23T10:14:00.455Z"},{"version":"2018.2.17f1","stream":"LTS","releaseDate":"2018-11-21T15:28:51.618Z"},{"version":"2018.3.0b11","stream":"BETA","releaseDate":"2018-11-21T13:58:06.343Z"},{"version":"2017.2.4p1","stream":"TECH","releaseDate":"2018-11-16T10:22:37.674Z"},{"version":"2018.2.16f1","stream":"LTS","releaseDate":"2018-11-15T11:01:20.605Z"},{"version":"2019.1.0a9","stream":"ALPHA","releaseDate":"2018-11-14T16:08:29.504Z"},{"version":"2018.3.0b10","stream":"BETA","releaseDate":"2018-11-14T13:35:56.456Z"},{"version":"2017.4.15f1","stream":"LTS","releaseDate":"2018-11-12T14:08:59.607Z"},{"version":"2018.2.15f1","stream":"LTS","releaseDate":"2018-11-09T10:10:19.078Z"},{"version":"2018.3.0b9","stream":"BETA","releaseDate":"2018-11-07T11:26:23.779Z"},{"version":"2019.1.0a8","stream":"ALPHA","releaseDate":"2018-11-06T23:07:14.781Z"},{"version":"2019.1.0a7","stream":"ALPHA","releaseDate":"2018-10-31T16:36:10.741Z"},{"version":"2018.3.0b8","stream":"BETA","releaseDate":"2018-10-31T10:43:25.542Z"},{"version":"2018.2.14f1","stream":"LTS","releaseDate":"2018-10-26T15:36:58.385Z"},{"version":"2017.4.14f1","stream":"LTS","releaseDate":"2018-10-26T11:46:14.967Z"},{"version":"2018.3.0b7","stream":"BETA","releaseDate":"2018-10-24T09:18:44.743Z"},{"version":"2018.2.13f1","stream":"LTS","releaseDate":"2018-10-18T10:04:17.744Z"},{"version":"2018.3.0b6","stream":"BETA","releaseDate":"2018-10-18T07:28:58.765Z"},{"version":"2018.2.12f1","stream":"LTS","releaseDate":"2018-10-12T14:40:28.955Z"},{"version":"2017.4.13f1","stream":"LTS","releaseDate":"2018-10-12T12:12:23.499Z"},{"version":"2018.3.0b5","stream":"BETA","releaseDate":"2018-10-10T08:17:14.48Z"},{"version":"2018.2.11f1","stream":"LTS","releaseDate":"2018-10-04T10:36:18.263Z"},{"version":"2018.3.0b4","stream":"BETA","releaseDate":"2018-10-03T11:09:35.425Z"},{"version":"2017.2.4f1","stream":"LTS","releaseDate":"2018-10-03T10:10:22.697Z"},{"version":"2017.4.12f1","stream":"LTS","releaseDate":"2018-09-27T10:54:38.666Z"},{"version":"2018.2.10f1","stream":"LTS","releaseDate":"2018-09-26T14:32:56.446Z"},{"version":"2018.3.0b3","stream":"BETA","releaseDate":"2018-09-26T13:21:30.939Z"},{"version":"2018.2.9f1","stream":"LTS","releaseDate":"2018-09-21T12:47:59.578Z"},{"version":"2018.3.0b2","stream":"BETA","releaseDate":"2018-09-20T09:44:45.621Z"},{"version":"2018.2.8f1","stream":"LTS","releaseDate":"2018-09-14T10:03:11.163Z"},{"version":"2017.4.11f1","stream":"LTS","releaseDate":"2018-09-13T09:35:24.146Z"},{"version":"2018.3.0b1","stream":"BETA","releaseDate":"2018-09-11T13:07:05.27Z"},{"version":"2018.2.7f1","stream":"LTS","releaseDate":"2018-09-06T16:34:51.171Z"},{"version":"2018.2.6f1","stream":"LTS","releaseDate":"2018-08-30T11:26:23.289Z"},{"version":"2017.2.3p4","stream":"TECH","releaseDate":"2018-08-29T13:24:14.637Z"},{"version":"2018.1.9f2","stream":"LTS","releaseDate":"2018-08-29T10:25:53.036Z"},{"version":"2017.4.10f1","stream":"LTS","releaseDate":"2018-08-24T13:44:21.526Z"},{"version":"2018.2.5f1","stream":"LTS","releaseDate":"2018-08-22T15:12:22.79Z"},{"version":"2018.2.4f1","stream":"LTS","releaseDate":"2018-08-17T14:17:08.695Z"},{"version":"2018.2.3f1","stream":"LTS","releaseDate":"2018-08-10T16:45:34.078Z"},{"version":"2017.4.9f1","stream":"LTS","releaseDate":"2018-08-10T14:27:28.131Z"},{"version":"2017.2.3p3","stream":"TECH","releaseDate":"2018-08-03T14:58:35.317Z"},{"version":"2018.2.2f1","stream":"LTS","releaseDate":"2018-08-03T13:32:08.878Z"},{"version":"2017.4.8f1","stream":"LTS","releaseDate":"2018-07-26T11:30:32.443Z"},{"version":"2018.2.1f1","stream":"LTS","releaseDate":"2018-07-26T10:43:51.519Z"},{"version":"2017.1.5f1","stream":"LTS","releaseDate":"2018-07-23T16:24:20.275Z"},{"version":"2018.1.8f1","stream":"LTS","releaseDate":"2018-07-13T13:52:59.791Z"},{"version":"2017.4.7f1","stream":"LTS","releaseDate":"2018-07-13T10:22:49.092Z"},{"version":"2018.2.0f2","stream":"LTS","releaseDate":"2018-07-09T16:46:12.134Z"},{"version":"2018.2.0f1","stream":"LTS","releaseDate":"2018-07-06T15:20:59.9Z"},{"version":"2017.2.3p2","stream":"TECH","releaseDate":"2018-07-05T14:38:35.927Z"},{"version":"2018.1.7f1","stream":"LTS","releaseDate":"2018-07-05T14:17:37.546Z"},{"version":"2018.2.0b11","stream":"BETA","releaseDate":"2018-07-03T13:34:59.156Z"},{"version":"2018.2.0b10","stream":"BETA","releaseDate":"2018-06-26T13:53:45.043Z"},{"version":"2017.4.6f1","stream":"LTS","releaseDate":"2018-06-22T08:23:54.219Z"},{"version":"2018.1.6f1","stream":"LTS","releaseDate":"2018-06-21T15:02:57.356Z"},{"version":"2017.1.4p2","stream":"TECH","releaseDate":"2018-06-20T09:46:38.07Z"},{"version":"2018.2.0b9","stream":"BETA","releaseDate":"2018-06-19T13:54:09.066Z"},{"version":"2018.1.5f1","stream":"LTS","releaseDate":"2018-06-15T12:35:07.622Z"},{"version":"2018.2.0b8","stream":"BETA","releaseDate":"2018-06-13T13:54:30.171Z"},{"version":"2017.1.4p1","stream":"TECH","releaseDate":"2018-06-13T13:31:38.393Z"},{"version":"2018.1.4f1","stream":"LTS","releaseDate":"2018-06-11T14:59:27.426Z"},{"version":"2017.4.5f1","stream":"LTS","releaseDate":"2018-06-07T09:24:13.11Z"},{"version":"2018.2.0b7","stream":"BETA","releaseDate":"2018-06-06T17:13:56.25Z"},{"version":"2018.1.3f1","stream":"LTS","releaseDate":"2018-06-04T09:52:38.309Z"},{"version":"2017.2.3p1","stream":"TECH","releaseDate":"2018-05-31T10:04:31.746Z"},{"version":"2018.2.0b6","stream":"BETA","releaseDate":"2018-05-29T14:49:22.168Z"},{"version":"2018.1.2f1","stream":"LTS","releaseDate":"2018-05-25T15:39:42.936Z"},{"version":"2018.2.0b5","stream":"BETA","releaseDate":"2018-05-24T07:21:44.102Z"},{"version":"2017.1.4f1","stream":"LTS","releaseDate":"2018-05-23T15:53:36.991Z"},{"version":"2017.4.4f1","stream":"LTS","releaseDate":"2018-05-23T15:20:18.873Z"},{"version":"2017.2.3f1","stream":"LTS","releaseDate":"2018-05-18T13:26:34.763Z"},{"version":"2018.1.1f1","stream":"LTS","releaseDate":"2018-05-18T09:56:06.072Z"},{"version":"2018.2.0b4","stream":"BETA","releaseDate":"2018-05-11T19:14:37.677Z"},{"version":"2017.4.3f1","stream":"LTS","releaseDate":"2018-05-11T14:44:04.818Z"},{"version":"5.6.6f2","stream":"LTS","releaseDate":"2018-05-08T09:03:55.479Z"},{"version":"2017.1.3p4","stream":"TECH","releaseDate":"2018-05-06T10:03:23.748Z"},{"version":"2018.2.0b3","stream":"BETA","releaseDate":"2018-05-04T00:29:00.783Z"},{"version":"2018.1.0f2","stream":"LTS","releaseDate":"2018-05-02T09:32:53.181Z"},{"version":"2017.4.2f2","stream":"LTS","releaseDate":"2018-04-30T09:57:20.774Z"},{"version":"2017.2.2p4","stream":"TECH","releaseDate":"2018-04-27T08:09:34.659Z"},{"version":"2018.1.0f1","stream":"LTS","releaseDate":"2018-04-26T14:34:43.932Z"},{"version":"2018.2.0b2","stream":"BETA","releaseDate":"2018-04-25T15:46:41.702Z"},{"version":"2018.2.0b1","stream":"BETA","releaseDate":"2018-04-18T01:14:08.21Z"},{"version":"2017.4.1f1","stream":"LTS","releaseDate":"2018-04-12T12:46:45.437Z"},{"version":"5.6.5p4","stream":"TECH","releaseDate":"2018-04-12T10:47:59.717Z"},{"version":"2017.1.3p3","stream":"TECH","releaseDate":"2018-04-06T10:32:38.635Z"},{"version":"2017.2.2p3","stream":"TECH","releaseDate":"2018-04-05T10:16:10.263Z"},{"version":"2018.1.0b13","stream":"BETA","releaseDate":"2018-03-30T10:12:24.922Z"},{"version":"2017.2.2p2","stream":"TECH","releaseDate":"2018-03-23T13:33:23.076Z"},{"version":"2018.1.0b12","stream":"BETA","releaseDate":"2018-03-23T08:03:45.342Z"},{"version":"2017.4.0f1","stream":"LTS","releaseDate":"2018-03-19T11:40:15.833Z"},{"version":"2018.1.0b11","stream":"BETA","releaseDate":"2018-03-16T13:01:57.652Z"},{"version":"5.6.5p3","stream":"TECH","releaseDate":"2018-03-16T09:45:19.363Z"},{"version":"2017.3.1p4","stream":"TECH","releaseDate":"2018-03-13T11:06:06.216Z"},{"version":"2017.2.2p1","stream":"TECH","releaseDate":"2018-03-09T15:01:16.687Z"},{"version":"2018.1.0b10","stream":"BETA","releaseDate":"2018-03-08T15:30:14.498Z"},{"version":"2017.3.1p3","stream":"TECH","releaseDate":"2018-03-06T13:00:52.238Z"},{"version":"2017.1.3p2","stream":"TECH","releaseDate":"2018-03-02T11:14:31.123Z"},{"version":"2018.1.0b9","stream":"BETA","releaseDate":"2018-02-27T20:03:39.092Z"},{"version":"2017.3.1p2","stream":"TECH","releaseDate":"2018-02-26T11:20:31.229Z"},{"version":"2017.2.2f1","stream":"LTS","releaseDate":"2018-02-26T10:56:15.298Z"},{"version":"2018.1.0b8","stream":"BETA","releaseDate":"2018-02-20T23:19:54.456Z"},{"version":"5.6.5p2","stream":"TECH","releaseDate":"2018-02-15T10:54:22.592Z"},{"version":"2017.3.1p1","stream":"TECH","releaseDate":"2018-02-14T16:32:07.563Z"},{"version":"2018.1.0b7","stream":"BETA","releaseDate":"2018-02-14T11:12:33.84Z"},{"version":"2017.2.1p4","stream":"TECH","releaseDate":"2018-02-12T13:46:02.925Z"},{"version":"2018.1.0b6","stream":"BETA","releaseDate":"2018-02-07T23:26:06.828Z"},{"version":"2017.3.1f1","stream":"LTS","releaseDate":"2018-02-05T15:31:22.383Z"},{"version":"2017.1.3p1","stream":"TECH","releaseDate":"2018-02-02T16:03:25.943Z"},{"version":"2018.1.0b5","stream":"BETA","releaseDate":"2018-01-31T12:56:51.085Z"},{"version":"2017.2.1p3","stream":"TECH","releaseDate":"2018-01-30T16:14:38.479Z"},{"version":"2017.3.0p4","stream":"TECH","releaseDate":"2018-01-29T12:43:13.44Z"},{"version":"2018.1.0b4","stream":"BETA","releaseDate":"2018-01-22T19:10:28.089Z"},{"version":"5.6.5p1","stream":"TECH","releaseDate":"2018-01-22T10:15:55.22Z"},{"version":"2017.3.0p3","stream":"TECH","releaseDate":"2018-01-18T16:39:06.631Z"},{"version":"2018.1.0b3","stream":"BETA","releaseDate":"2018-01-17T12:06:15.898Z"},{"version":"2017.3.0p2","stream":"TECH","releaseDate":"2018-01-12T18:16:05.847Z"},{"version":"5.5.6f1","stream":"LTS","releaseDate":"2018-01-12T17:52:32.094Z"},{"version":"2017.2.1p2","stream":"TECH","releaseDate":"2018-01-12T10:39:16.706Z"},{"version":"2018.1.0b2","stream":"BETA","releaseDate":"2018-01-09T15:44:00.845Z"},{"version":"2017.1.3f1","stream":"LTS","releaseDate":"2018-01-04T17:14:40.655Z"},{"version":"2017.3.0p1","stream":"TECH","releaseDate":"2017-12-22T11:42:56.17Z"},{"version":"5.6.5f1","stream":"LTS","releaseDate":"2017-12-21T11:08:15.313Z"},{"version":"2017.2.1p1","stream":"TECH","releaseDate":"2017-12-20T13:53:25.025Z"},{"version":"2017.3.0f3","stream":"LTS","releaseDate":"2017-12-18T16:24:06.352Z"},{"version":"2017.2.1f1","stream":"LTS","releaseDate":"2017-12-11T15:44:05.803Z"},{"version":"2017.3.0f2","stream":"LTS","releaseDate":"2017-12-08T16:45:52.244Z"},{"version":"2017.1.2p4","stream":"TECH","releaseDate":"2017-12-08T15:51:33.874Z"},{"version":"5.6.4p4","stream":"TECH","releaseDate":"2017-12-07T12:26:50.54Z"},{"version":"2017.2.0p4","stream":"TECH","releaseDate":"2017-12-04T10:45:02.991Z"},{"version":"2017.3.0f1","stream":"LTS","releaseDate":"2017-12-01T18:31:55.923Z"},{"version":"5.5.5p2","stream":"TECH","releaseDate":"2017-11-28T16:57:54.61Z"},{"version":"2017.3.0b11","stream":"BETA","releaseDate":"2017-11-28T15:29:29.286Z"},{"version":"2017.2.0p3","stream":"TECH","releaseDate":"2017-11-27T13:27:46.218Z"},{"version":"2017.1.2p3","stream":"TECH","releaseDate":"2017-11-21T15:57:28.21Z"},{"version":"2017.3.0b10","stream":"BETA","releaseDate":"2017-11-20T15:18:14.574Z"},{"version":"5.6.4p3","stream":"TECH","releaseDate":"2017-11-20T13:49:56.763Z"},{"version":"2017.2.0p2","stream":"TECH","releaseDate":"2017-11-15T14:24:53.185Z"},{"version":"5.6.4p2","stream":"TECH","releaseDate":"2017-11-12T19:00:26.687Z"},{"version":"2017.3.0b9","stream":"BETA","releaseDate":"2017-11-10T17:33:11.854Z"},{"version":"2017.2.0p1","stream":"TECH","releaseDate":"2017-11-06T17:18:19.496Z"},{"version":"2017.3.0b8","stream":"BETA","releaseDate":"2017-11-03T15:21:00.754Z"},{"version":"2017.3.0b7","stream":"BETA","releaseDate":"2017-10-31T15:40:56.235Z"},{"version":"2017.1.2p2","stream":"TECH","releaseDate":"2017-10-27T11:03:41.029Z"},{"version":"2017.3.0b6","stream":"BETA","releaseDate":"2017-10-24T16:13:05.044Z"},{"version":"5.6.4p1","stream":"TECH","releaseDate":"2017-10-20T08:55:09.428Z"},{"version":"2017.3.0b5","stream":"BETA","releaseDate":"2017-10-17T14:14:21.23Z"},{"version":"5.6.4f1","stream":"LTS","releaseDate":"2017-10-15T21:45:41.61Z"},{"version":"5.5.5p1","stream":"TECH","releaseDate":"2017-10-13T15:41:22.604Z"},{"version":"2017.1.2p1","stream":"TECH","releaseDate":"2017-10-13T14:36:45.03Z"},{"version":"2017.2.0f3","stream":"LTS","releaseDate":"2017-10-11T17:12:25.471Z"},{"version":"2017.1.1p4","stream":"TECH","releaseDate":"2017-10-10T22:24:40.459Z"},{"version":"2017.3.0b4","stream":"BETA","releaseDate":"2017-10-10T15:09:12.877Z"},{"version":"2017.1.2f1","stream":"LTS","releaseDate":"2017-10-06T12:44:00.57Z"},{"version":"2017.3.0b3","stream":"BETA","releaseDate":"2017-10-05T14:33:00.365Z"},{"version":"5.5.5f1","stream":"LTS","releaseDate":"2017-10-03T18:12:06.132Z"},{"version":"2017.2.0f2","stream":"LTS","releaseDate":"2017-10-02T17:53:40.396Z"},{"version":"2017.3.0b2","stream":"BETA","releaseDate":"2017-09-26T14:46:30.171Z"},{"version":"2017.1.1p3","stream":"TECH","releaseDate":"2017-09-22T16:41:25.511Z"},{"version":"2017.2.0f1","stream":"LTS","releaseDate":"2017-09-22T15:33:23.309Z"},{"version":"5.6.3p4","stream":"TECH","releaseDate":"2017-09-22T13:54:29.483Z"},{"version":"2017.3.0b1","stream":"BETA","releaseDate":"2017-09-21T13:38:59.597Z"},{"version":"5.4.6f3","stream":"LTS","releaseDate":"2017-09-20T08:37:58.914Z"},{"version":"2017.1.1p2","stream":"TECH","releaseDate":"2017-09-15T10:24:31.557Z"},{"version":"5.5.4p5","stream":"TECH","releaseDate":"2017-09-14T14:25:05.91Z"},{"version":"2017.2.0b11","stream":"BETA","releaseDate":"2017-09-12T13:31:58.615Z"},{"version":"2017.1.1p1","stream":"TECH","releaseDate":"2017-09-08T16:32:50.056Z"},{"version":"5.6.3p3","stream":"TECH","releaseDate":"2017-09-08T13:29:05.068Z"},{"version":"2017.2.0b10","stream":"BETA","releaseDate":"2017-09-04T20:19:12.822Z"},{"version":"2017.1.1f1","stream":"LTS","releaseDate":"2017-09-04T11:34:13.935Z"},{"version":"5.6.3p2","stream":"TECH","releaseDate":"2017-09-01T16:44:02.764Z"},{"version":"5.5.4p4","stream":"TECH","releaseDate":"2017-08-31T17:24:23.024Z"},{"version":"2017.2.0b9","stream":"BETA","releaseDate":"2017-08-29T15:59:23.864Z"},{"version":"2017.1.0p5","stream":"TECH","releaseDate":"2017-08-25T11:26:12.473Z"},{"version":"2017.2.0b8","stream":"BETA","releaseDate":"2017-08-18T14:33:35.185Z"},{"version":"5.3.8p2","stream":"TECH","releaseDate":"2017-08-18T10:53:50.159Z"},{"version":"5.4.5p5","stream":"TECH","releaseDate":"2017-08-18T00:06:42.901Z"},{"version":"5.5.4p3","stream":"TECH","releaseDate":"2017-08-17T21:45:42.73Z"},{"version":"5.6.3p1","stream":"TECH","releaseDate":"2017-08-17T20:56:53.906Z"},{"version":"2017.1.0p4","stream":"TECH","releaseDate":"2017-08-17T07:16:35.478Z"},{"version":"2017.2.0b7","stream":"BETA","releaseDate":"2017-08-15T17:42:22.612Z"},{"version":"2017.1.0p3","stream":"TECH","releaseDate":"2017-08-11T14:09:22.978Z"},{"version":"2017.2.0b6","stream":"BETA","releaseDate":"2017-08-08T21:09:18.966Z"},{"version":"5.6.3f1","stream":"LTS","releaseDate":"2017-08-01T17:03:58.044Z"},{"version":"2017.2.0b5","stream":"BETA","releaseDate":"2017-08-01T09:24:10.578Z"},{"version":"2017.1.0p2","stream":"TECH","releaseDate":"2017-07-27T12:04:31.433Z"},{"version":"5.5.4p2","stream":"TECH","releaseDate":"2017-07-26T11:06:59.785Z"},{"version":"5.6.2p4","stream":"TECH","releaseDate":"2017-07-21T17:06:22.579Z"},{"version":"2017.1.0p1","stream":"TECH","releaseDate":"2017-07-21T16:18:52.683Z"},{"version":"2017.2.0b4","stream":"BETA","releaseDate":"2017-07-20T16:07:24.314Z"},{"version":"5.6.2p3","stream":"TECH","releaseDate":"2017-07-17T14:54:07.43Z"},{"version":"2017.2.0b3","stream":"BETA","releaseDate":"2017-07-14T13:58:24.249Z"},{"version":"2017.1.0f3","stream":"LTS","releaseDate":"2017-07-10T11:29:48.344Z"},{"version":"2017.2.0b2","stream":"BETA","releaseDate":"2017-07-06T14:42:46.105Z"},{"version":"5.6.2p2","stream":"TECH","releaseDate":"2017-07-06T12:05:04.255Z"},{"version":"2017.1.0f2","stream":"LTS","releaseDate":"2017-07-05T18:06:25.71Z"},{"version":"5.6.2p1","stream":"TECH","releaseDate":"2017-06-29T14:08:51.315Z"},{"version":"5.4.5p4","stream":"TECH","releaseDate":"2017-06-28T11:33:16.401Z"},{"version":"2017.1.0f1","stream":"LTS","releaseDate":"2017-06-26T18:35:00.156Z"},{"version":"5.5.4p1","stream":"TECH","releaseDate":"2017-06-22T14:02:21.433Z"},{"version":"5.6.2f1","stream":"LTS","releaseDate":"2017-06-21T13:10:00.385Z"},{"version":"2017.1.0b10","stream":"BETA","releaseDate":"2017-06-19T15:48:58.272Z"},{"version":"5.6.1p4","stream":"TECH","releaseDate":"2017-06-16T15:05:31.413Z"},{"version":"5.3.8f2","stream":"LTS","releaseDate":"2017-06-13T11:42:19.078Z"},{"version":"2017.1.0b9","stream":"BETA","releaseDate":"2017-06-09T19:19:53.748Z"},{"version":"5.4.5p3","stream":"TECH","releaseDate":"2017-06-09T19:08:09.909Z"},{"version":"5.6.1p3","stream":"TECH","releaseDate":"2017-06-09T17:34:47.454Z"},{"version":"5.5.4f1","stream":"LTS","releaseDate":"2017-06-06T16:31:53.057Z"},{"version":"2017.1.0b8","stream":"BETA","releaseDate":"2017-06-02T15:43:21.394Z"},{"version":"5.6.1p2","stream":"TECH","releaseDate":"2017-06-02T10:52:12.61Z"},{"version":"5.4.5p2","stream":"TECH","releaseDate":"2017-05-29T08:25:58.959Z"},{"version":"2017.1.0b7","stream":"BETA","releaseDate":"2017-05-26T16:22:45.206Z"},{"version":"5.5.3p4","stream":"TECH","releaseDate":"2017-05-24T16:03:02.585Z"},{"version":"2017.1.0b6","stream":"BETA","releaseDate":"2017-05-19T11:33:20.637Z"},{"version":"5.6.1p1","stream":"TECH","releaseDate":"2017-05-18T12:38:02.433Z"},{"version":"2017.1.0b5","stream":"BETA","releaseDate":"2017-05-11T12:55:57.667Z"},{"version":"5.6.1f1","stream":"LTS","releaseDate":"2017-05-11T10:42:26.042Z"},{"version":"5.5.3p3","stream":"TECH","releaseDate":"2017-05-10T15:53:39.619Z"},{"version":"2017.1.0b4","stream":"BETA","releaseDate":"2017-05-08T14:47:09.728Z"},{"version":"5.6.0p4","stream":"TECH","releaseDate":"2017-05-08T12:16:30.156Z"},{"version":"2017.1.0b3","stream":"BETA","releaseDate":"2017-05-03T13:29:05.251Z"},{"version":"5.6.0p3","stream":"TECH","releaseDate":"2017-04-27T19:02:39.441Z"},{"version":"2017.1.0b2","stream":"BETA","releaseDate":"2017-04-26T13:56:42.441Z"},{"version":"5.5.3p2","stream":"TECH","releaseDate":"2017-04-25T14:57:56.683Z"},{"version":"5.6.0p2","stream":"TECH","releaseDate":"2017-04-21T20:03:49.145Z"},{"version":"5.6.0p1","stream":"TECH","releaseDate":"2017-04-18T13:49:03.982Z"},{"version":"5.5.3p1","stream":"TECH","releaseDate":"2017-04-13T15:11:15.612Z"},{"version":"2017.1.0b1","stream":"BETA","releaseDate":"2017-04-11T14:05:40.004Z"},{"version":"5.6.0f3","stream":"LTS","releaseDate":"2017-03-31T15:00:22.486Z"},{"version":"5.5.3f1","stream":"LTS","releaseDate":"2017-03-31T10:51:39.156Z"},{"version":"5.4.5p1","stream":"TECH","releaseDate":"2017-03-30T14:45:22.189Z"},{"version":"5.6.0f2","stream":"LTS","releaseDate":"2017-03-27T16:28:45.658Z"},{"version":"5.5.2p4","stream":"TECH","releaseDate":"2017-03-23T10:35:50.243Z"},{"version":"5.5.2p3","stream":"TECH","releaseDate":"2017-03-17T18:58:40.164Z"},{"version":"5.6.0f1","stream":"LTS","releaseDate":"2017-03-17T16:41:48.638Z"},{"version":"5.4.5f1","stream":"LTS","releaseDate":"2017-03-10T14:21:03.746Z"},{"version":"5.6.0b11","stream":"BETA","releaseDate":"2017-03-08T17:05:35.299Z"},{"version":"5.5.2p2","stream":"TECH","releaseDate":"2017-03-08T16:29:03.349Z"},{"version":"5.5.2p1","stream":"TECH","releaseDate":"2017-03-03T12:06:12.373Z"},{"version":"5.6.0b10","stream":"BETA","releaseDate":"2017-03-02T17:57:00.642Z"},{"version":"5.4.4p4","stream":"TECH","releaseDate":"2017-03-01T11:11:30.914Z"},{"version":"5.5.2f1","stream":"LTS","releaseDate":"2017-02-24T09:54:27.426Z"},{"version":"5.5.1p4","stream":"TECH","releaseDate":"2017-02-17T16:08:36.975Z"},{"version":"5.6.0b9","stream":"BETA","releaseDate":"2017-02-17T14:41:26.853Z"},{"version":"5.6.0b8","stream":"BETA","releaseDate":"2017-02-13T15:54:50.112Z"},{"version":"5.5.1p3","stream":"TECH","releaseDate":"2017-02-09T12:22:29.265Z"},{"version":"5.4.4p3","stream":"TECH","releaseDate":"2017-02-08T17:25:47.967Z"},{"version":"5.3.7p4","stream":"TECH","releaseDate":"2017-02-07T17:01:05.91Z"},{"version":"5.6.0b7","stream":"BETA","releaseDate":"2017-02-07T15:05:04.895Z"},{"version":"5.5.1p2","stream":"TECH","releaseDate":"2017-02-03T13:27:39.914Z"},{"version":"5.6.0b6","stream":"BETA","releaseDate":"2017-02-01T15:38:41.38Z"},{"version":"5.5.1p1","stream":"TECH","releaseDate":"2017-02-01T14:22:21.414Z"},{"version":"5.6.0b5","stream":"BETA","releaseDate":"2017-01-26T09:26:16.775Z"},{"version":"5.4.4p2","stream":"TECH","releaseDate":"2017-01-25T15:10:44.295Z"},{"version":"5.5.1f1","stream":"LTS","releaseDate":"2017-01-24T10:32:21.504Z"},{"version":"5.6.0b4","stream":"BETA","releaseDate":"2017-01-17T20:17:27.658Z"},{"version":"5.4.4p1","stream":"TECH","releaseDate":"2017-01-13T16:46:40.758Z"},{"version":"5.5.0p4","stream":"TECH","releaseDate":"2017-01-11T16:18:53.99Z"},{"version":"5.4.4f1","stream":"LTS","releaseDate":"2017-01-05T15:53:15.05Z"},{"version":"5.5.0p3","stream":"TECH","releaseDate":"2017-01-05T09:04:18.854Z"},{"version":"5.6.0b3","stream":"BETA","releaseDate":"2016-12-23T17:38:00.246Z"},{"version":"5.3.7p3","stream":"TECH","releaseDate":"2016-12-21T16:13:38.502Z"},{"version":"5.6.0b2","stream":"BETA","releaseDate":"2016-12-20T13:32:52.874Z"},{"version":"5.5.0p2","stream":"TECH","releaseDate":"2016-12-16T20:23:56.1Z"},{"version":"5.4.3p4","stream":"TECH","releaseDate":"2016-12-16T13:59:43.927Z"},{"version":"5.6.0b1","stream":"BETA","releaseDate":"2016-12-13T10:35:25.751Z"},{"version":"5.4.3p3","stream":"TECH","releaseDate":"2016-12-07T16:18:47.86Z"},{"version":"5.5.0p1","stream":"TECH","releaseDate":"2016-12-07T15:25:41.557Z"},{"version":"5.4.3p2","stream":"TECH","releaseDate":"2016-12-01T13:54:47.954Z"},{"version":"5.5.0f3","stream":"LTS","releaseDate":"2016-11-30T11:49:48.44Z"},{"version":"5.3.7p2","stream":"TECH","releaseDate":"2016-11-28T16:06:22.443Z"},{"version":"5.4.3p1","stream":"TECH","releaseDate":"2016-11-28T10:09:25.413Z"},{"version":"5.5.0f2","stream":"LTS","releaseDate":"2016-11-25T10:16:50.283Z"},{"version":"5.5.0f1","stream":"LTS","releaseDate":"2016-11-22T16:14:01.185Z"},{"version":"5.4.3f1","stream":"LTS","releaseDate":"2016-11-17T12:51:02.026Z"},{"version":"5.3.7p1","stream":"TECH","releaseDate":"2016-11-11T15:32:03.022Z"},{"version":"5.5.0b11","stream":"BETA","releaseDate":"2016-11-09T18:04:57.217Z"},{"version":"5.5.0b10","stream":"BETA","releaseDate":"2016-11-09T15:40:05.177Z"},{"version":"5.4.2p4","stream":"TECH","releaseDate":"2016-11-09T12:35:14.541Z"},{"version":"5.3.7f1","stream":"LTS","releaseDate":"2016-11-08T13:22:26.898Z"},{"version":"5.4.2p3","stream":"TECH","releaseDate":"2016-11-02T15:35:46.038Z"},{"version":"5.4.2p2","stream":"TECH","releaseDate":"2016-10-28T12:33:11.631Z"},{"version":"5.4.2p1","stream":"TECH","releaseDate":"2016-10-24T15:58:28.014Z"},{"version":"5.5.0b9","stream":"BETA","releaseDate":"2016-10-24T15:06:57.148Z"},{"version":"5.3.6p8","stream":"TECH","releaseDate":"2016-10-24T14:31:38.053Z"},{"version":"5.4.2f2","stream":"LTS","releaseDate":"2016-10-21T09:41:39.171Z"},{"version":"5.5.0b8","stream":"BETA","releaseDate":"2016-10-20T13:10:07.348Z"},{"version":"5.5.0b7","stream":"BETA","releaseDate":"2016-10-11T14:19:07.139Z"},{"version":"5.3.6p7","stream":"TECH","releaseDate":"2016-10-07T12:14:33.794Z"},{"version":"5.4.1p4","stream":"TECH","releaseDate":"2016-10-05T16:04:22.609Z"},{"version":"5.5.0b6","stream":"BETA","releaseDate":"2016-10-03T16:33:15.78Z"},{"version":"5.4.1p3","stream":"TECH","releaseDate":"2016-09-28T14:50:34.112Z"},{"version":"5.5.0b5","stream":"BETA","releaseDate":"2016-09-27T08:31:35.768Z"},{"version":"5.3.6p6","stream":"TECH","releaseDate":"2016-09-23T10:03:44.038Z"},{"version":"5.4.1p2","stream":"TECH","releaseDate":"2016-09-22T18:37:12.216Z"},{"version":"5.5.0b4","stream":"BETA","releaseDate":"2016-09-19T15:28:43.203Z"},{"version":"5.3.6p5","stream":"TECH","releaseDate":"2016-09-16T07:03:24.647Z"},{"version":"5.4.1p1","stream":"TECH","releaseDate":"2016-09-15T11:18:34.21Z"},{"version":"5.5.0b3","stream":"BETA","releaseDate":"2016-09-12T13:01:26.004Z"},{"version":"5.4.1f1","stream":"LTS","releaseDate":"2016-09-07T11:02:30.459Z"},{"version":"5.5.0b2","stream":"BETA","releaseDate":"2016-09-05T14:30:09.838Z"},{"version":"5.3.6p4","stream":"TECH","releaseDate":"2016-09-02T14:39:02.879Z"},{"version":"5.4.0p4","stream":"TECH","releaseDate":"2016-08-31T15:12:19.933Z"},{"version":"5.5.0b1","stream":"BETA","releaseDate":"2016-08-29T22:26:28.148Z"},{"version":"5.4.0p3","stream":"TECH","releaseDate":"2016-08-25T16:23:33.971Z"},{"version":"5.3.6p3","stream":"TECH","releaseDate":"2016-08-23T15:52:41.717Z"},{"version":"5.4.0p2","stream":"TECH","releaseDate":"2016-08-18T15:13:53.454Z"},{"version":"5.4.0p1","stream":"TECH","releaseDate":"2016-08-11T16:41:23.062Z"},{"version":"5.3.6p2","stream":"TECH","releaseDate":"2016-08-03T13:49:58.642Z"},{"version":"5.4.0f3","stream":"LTS","releaseDate":"2016-07-27T15:33:32.065Z"},{"version":"5.3.6p1","stream":"TECH","releaseDate":"2016-07-27T13:49:40.408Z"},{"version":"5.4.0f2","stream":"LTS","releaseDate":"2016-07-21T14:37:50.492Z"},{"version":"5.3.6f1","stream":"LTS","releaseDate":"2016-07-20T09:42:16.587Z"},{"version":"5.4.0f1","stream":"LTS","releaseDate":"2016-07-14T14:14:28.948Z"},{"version":"5.3.5p8","stream":"TECH","releaseDate":"2016-07-13T12:31:43.913Z"},{"version":"5.4.0b25","stream":"BETA","releaseDate":"2016-07-11T14:27:32.571Z"},{"version":"5.3.5p7","stream":"TECH","releaseDate":"2016-07-08T09:46:28.284Z"},{"version":"5.4.0b24","stream":"BETA","releaseDate":"2016-07-01T15:47:18.233Z"},{"version":"5.3.5p6","stream":"TECH","releaseDate":"2016-06-29T16:20:44.035Z"},{"version":"5.4.0b23","stream":"BETA","releaseDate":"2016-06-28T11:35:44.656Z"},{"version":"5.4.0b22","stream":"BETA","releaseDate":"2016-06-20T09:50:01.918Z"},{"version":"5.3.5p5","stream":"TECH","releaseDate":"2016-06-20T08:56:54.195Z"},{"version":"5.3.5p4","stream":"TECH","releaseDate":"2016-06-20T08:17:44.257Z"},{"version":"5.3.5p3","stream":"TECH","releaseDate":"2016-06-10T09:28:48.99Z"},{"version":"5.4.0b21","stream":"BETA","releaseDate":"2016-06-09T10:10:18.503Z"},{"version":"5.1.5f1","stream":"LTS","releaseDate":"2016-06-06T11:04:12.199Z"},{"version":"5.3.5p2","stream":"TECH","releaseDate":"2016-06-03T14:52:11.159Z"},{"version":"5.4.0b20","stream":"BETA","releaseDate":"2016-06-03T13:53:41.345Z"},{"version":"5.2.5f1","stream":"LTS","releaseDate":"2016-06-01T11:51:51.594Z"},{"version":"5.3.5p1","stream":"TECH","releaseDate":"2016-05-31T07:40:56.682Z"},{"version":"5.4.0b19","stream":"BETA","releaseDate":"2016-05-25T09:23:12.812Z"},{"version":"5.4.0b18","stream":"BETA","releaseDate":"2016-05-19T15:44:13.019Z"},{"version":"5.3.5f1","stream":"LTS","releaseDate":"2016-05-19T15:29:29.778Z"},{"version":"5.3.4p6","stream":"TECH","releaseDate":"2016-05-06T15:28:15.34Z"},{"version":"5.4.0b17","stream":"BETA","releaseDate":"2016-05-03T22:24:49.734Z"},{"version":"5.3.4p5","stream":"TECH","releaseDate":"2016-04-27T15:20:06.968Z"},{"version":"5.4.0b16","stream":"BETA","releaseDate":"2016-04-27T11:25:25.945Z"},{"version":"5.3.4p4","stream":"TECH","releaseDate":"2016-04-20T10:50:41.942Z"},{"version":"5.4.0b15","stream":"BETA","releaseDate":"2016-04-18T10:10:26.21Z"},{"version":"5.3.4p3","stream":"TECH","releaseDate":"2016-04-13T10:24:45.535Z"},{"version":"5.4.0b14","stream":"BETA","releaseDate":"2016-04-11T11:55:25.285Z"},{"version":"5.3.4p2","stream":"TECH","releaseDate":"2016-04-08T13:41:06.681Z"},{"version":"5.4.0b13","stream":"BETA","releaseDate":"2016-04-04T09:27:37.064Z"},{"version":"5.4.0b12","stream":"BETA","releaseDate":"2016-03-29T16:39:18.712Z"},{"version":"5.3.4p1","stream":"TECH","releaseDate":"2016-03-23T22:30:26.074Z"},{"version":"5.4.0b11","stream":"BETA","releaseDate":"2016-03-21T11:52:03.765Z"},{"version":"5.4.0b10","stream":"BETA","releaseDate":"2016-03-15T13:45:23.973Z"},{"version":"5.3.4f1","stream":"LTS","releaseDate":"2016-03-15T13:33:58.451Z"},{"version":"5.3.3p3","stream":"TECH","releaseDate":"2016-03-14T17:48:02.217Z"},{"version":"5.4.0b9","stream":"BETA","releaseDate":"2016-03-08T10:03:52.265Z"},{"version":"5.3.3p2","stream":"TECH","releaseDate":"2016-03-04T16:05:49.874Z"},{"version":"5.4.0b8","stream":"BETA","releaseDate":"2016-03-02T12:14:56.597Z"},{"version":"5.3.3p1","stream":"TECH","releaseDate":"2016-02-24T16:53:39.519Z"},{"version":"5.3.3f1","stream":"LTS","releaseDate":"2016-02-23T12:53:03.453Z"},{"version":"5.4.0b7","stream":"BETA","releaseDate":"2016-02-22T14:29:51.467Z"},{"version":"5.3.2p4","stream":"TECH","releaseDate":"2016-02-20T19:48:43.616Z"},{"version":"5.4.0b6","stream":"BETA","releaseDate":"2016-02-15T16:11:52.055Z"},{"version":"5.3.2p3","stream":"TECH","releaseDate":"2016-02-12T09:22:27.923Z"},{"version":"5.4.0b5","stream":"BETA","releaseDate":"2016-02-09T16:00:54.01Z"},{"version":"5.3.2p2","stream":"TECH","releaseDate":"2016-02-03T18:16:50.764Z"},{"version":"5.4.0b4","stream":"BETA","releaseDate":"2016-01-30T14:05:07.635Z"},{"version":"5.3.2p1","stream":"TECH","releaseDate":"2016-01-28T16:05:44.713Z"},{"version":"5.3.2f1","stream":"LTS","releaseDate":"2016-01-27T15:27:25.943Z"},{"version":"5.3.1p4","stream":"TECH","releaseDate":"2016-01-23T12:12:30.074Z"},{"version":"5.4.0b3","stream":"BETA","releaseDate":"2016-01-22T17:00:02.981Z"},{"version":"5.4.0b2","stream":"BETA","releaseDate":"2016-01-15T11:09:43.69Z"},{"version":"5.3.1p3","stream":"TECH","releaseDate":"2016-01-14T17:48:48.731Z"},{"version":"5.4.0b1","stream":"BETA","releaseDate":"2016-01-12T22:10:16.262Z"},{"version":"5.3.1p2","stream":"TECH","releaseDate":"2016-01-08T12:16:04.435Z"},{"version":"5.3.1p1","stream":"TECH","releaseDate":"2016-01-08T12:10:16.321Z"},{"version":"5.3.1f1","stream":"LTS","releaseDate":"2015-12-18T14:23:10.274Z"},{"version":"5.2.4f1","stream":"LTS","releaseDate":"2015-12-15T16:37:45.105Z"},{"version":"5.2.3p3","stream":"TECH","releaseDate":"2015-12-10T10:23:24.949Z"},{"version":"5.3.0f4","stream":"LTS","releaseDate":"2015-12-07T22:12:35.035Z"},{"version":"5.2.3p2","stream":"TECH","releaseDate":"2015-12-03T12:16:45.571Z"},{"version":"5.2.3p1","stream":"TECH","releaseDate":"2015-11-27T15:42:46.602Z"},{"version":"5.3.0f2","stream":"LTS","releaseDate":"2015-11-23T15:08:26.331Z"},{"version":"5.2.3f1","stream":"LTS","releaseDate":"2015-11-19T10:38:36.694Z"},{"version":"5.2.2p4","stream":"TECH","releaseDate":"2015-11-18T11:12:41.143Z"},{"version":"5.3.0f1","stream":"LTS","releaseDate":"2015-11-14T15:28:15.863Z"},{"version":"5.2.2p3","stream":"TECH","releaseDate":"2015-11-10T16:44:28.035Z"},{"version":"5.3.0b6","stream":"BETA","releaseDate":"2015-11-09T15:44:01.764Z"},{"version":"5.3.0b5","stream":"BETA","releaseDate":"2015-11-02T17:19:46.615Z"},{"version":"5.2.2p2","stream":"TECH","releaseDate":"2015-10-30T16:26:48.959Z"},{"version":"5.2.2p1","stream":"TECH","releaseDate":"2015-10-24T17:00:34.513Z"},{"version":"5.3.0b4","stream":"BETA","releaseDate":"2015-10-23T12:11:59.016Z"},{"version":"5.2.2f1","stream":"LTS","releaseDate":"2015-10-21T13:11:59.792Z"},{"version":"5.3.0b3","stream":"BETA","releaseDate":"2015-10-16T20:48:22.978Z"},{"version":"5.2.1p4","stream":"TECH","releaseDate":"2015-10-15T06:00:51.32Z"},{"version":"5.3.0b2","stream":"BETA","releaseDate":"2015-10-10T13:11:44.641Z"},{"version":"5.2.1p3","stream":"TECH","releaseDate":"2015-10-09T14:49:17.051Z"},{"version":"5.1.4f1","stream":"LTS","releaseDate":"2015-10-06T08:17:42.759Z"},{"version":"5.3.0b1","stream":"BETA","releaseDate":"2015-10-02T19:38:07.851Z"},{"version":"5.2.1p2","stream":"TECH","releaseDate":"2015-10-01T13:15:11.225Z"},{"version":"5.2.1p1","stream":"TECH","releaseDate":"2015-09-25T13:13:16.856Z"},{"version":"5.2.1f1","stream":"LTS","releaseDate":"2015-09-22T12:24:32.468Z"},{"version":"5.2.0p1","stream":"TECH","releaseDate":"2015-09-18T00:00:00Z"},{"version":"5.1.3p3","stream":"TECH","releaseDate":"2015-09-11T00:00:00Z"},{"version":"5.1.3p2","stream":"TECH","releaseDate":"2015-09-04T00:00:00Z"},{"version":"5.2.0f3","stream":"LTS","releaseDate":"2015-09-03T09:33:57.148Z"},{"version":"5.1.3p1","stream":"TECH","releaseDate":"2015-08-27T00:00:00Z"},{"version":"5.1.3f1","stream":"LTS","releaseDate":"2015-08-24T09:50:04.179Z"},{"version":"5.2.0f2","stream":"LTS","releaseDate":"2015-08-21T15:46:49.996Z"},{"version":"5.2.0f1","stream":"LTS","releaseDate":"2015-08-16T15:50:39.469Z"},{"version":"5.2.0b6","stream":"BETA","releaseDate":"2015-08-07T19:27:28.2Z"},{"version":"5.1.2p3","stream":"TECH","releaseDate":"2015-08-06T15:11:03.99Z"},{"version":"5.2.0b5","stream":"BETA","releaseDate":"2015-07-31T10:58:16.63Z"},{"version":"5.1.2p2","stream":"TECH","releaseDate":"2015-07-30T16:04:41.211Z"},{"version":"5.2.0b4","stream":"BETA","releaseDate":"2015-07-23T15:55:44.27Z"},{"version":"5.1.2p1","stream":"TECH","releaseDate":"2015-07-23T15:20:51.984Z"},{"version":"5.2.0b3","stream":"BETA","releaseDate":"2015-07-17T19:58:20.57Z"},{"version":"5.1.2f1","stream":"LTS","releaseDate":"2015-07-16T08:54:11.096Z"},{"version":"5.2.0b2","stream":"BETA","releaseDate":"2015-07-10T18:37:49.539Z"},{"version":"5.1.1p4","stream":"TECH","releaseDate":"2015-07-10T09:08:40.175Z"},{"version":"5.0.4f1","stream":"LTS","releaseDate":"2015-07-06T12:10:34.23Z"},{"version":"5.1.1p3","stream":"TECH","releaseDate":"2015-07-03T16:18:12.615Z"},{"version":"5.2.0b1","stream":"BETA","releaseDate":"2015-07-01T16:26:20.921Z"},{"version":"5.1.1p2","stream":"TECH","releaseDate":"2015-06-25T21:27:14.067Z"},{"version":"5.0.3p3","stream":"TECH","releaseDate":"2015-06-24T15:55:13.644Z"},{"version":"5.1.1p1","stream":"TECH","releaseDate":"2015-06-23T15:05:55.566Z"},{"version":"5.1.1f1","stream":"LTS","releaseDate":"2015-06-18T10:20:02.247Z"},{"version":"5.0.3p2","stream":"TECH","releaseDate":"2015-06-18T00:00:00Z"},{"version":"5.1.0p1","stream":"TECH","releaseDate":"2015-06-12T00:00:00Z"},{"version":"5.0.3p1","stream":"TECH","releaseDate":"2015-06-11T00:00:00Z"},{"version":"5.0.3f2","stream":"LTS","releaseDate":"2015-06-09T15:36:46.869Z"},{"version":"5.1.0f3","stream":"LTS","releaseDate":"2015-06-03T21:31:28.217Z"},{"version":"5.0.2p4","stream":"TECH","releaseDate":"2015-06-03T00:00:00Z"},{"version":"5.0.2p3","stream":"TECH","releaseDate":"2015-05-28T00:00:00Z"},{"version":"5.0.2p2","stream":"TECH","releaseDate":"2015-05-20T00:00:00Z"},{"version":"5.0.2p1","stream":"TECH","releaseDate":"2015-05-15T00:00:00Z"},{"version":"5.0.2f1","stream":"LTS","releaseDate":"2015-05-13T14:05:42.791Z"},{"version":"5.0.1p4","stream":"TECH","releaseDate":"2015-05-08T10:25:56.976Z"},{"version":"5.0.1p3","stream":"TECH","releaseDate":"2015-04-29T00:00:00Z"},{"version":"5.0.1p2","stream":"TECH","releaseDate":"2015-04-24T14:14:44.97Z"},{"version":"5.0.1p1","stream":"TECH","releaseDate":"2015-04-16T08:21:07Z"},{"version":"5.0.1f1","stream":"LTS","releaseDate":"2015-03-31T16:55:08.376Z"},{"version":"5.0.0p3","stream":"TECH","releaseDate":"2015-03-26T12:03:56.068Z"},{"version":"5.0.0p2","stream":"TECH","releaseDate":"2015-03-20T16:38:49.515Z"},{"version":"5.0.0p1","stream":"TECH","releaseDate":"2015-03-16T15:20:13.604Z"},{"version":"5.0.0f4","stream":"LTS","releaseDate":"2015-02-25T15:49:05.835Z"}] \ No newline at end of file From 3349e90b2503c810bb8dd2a1ffeda13cc3437dd1 Mon Sep 17 00:00:00 2001 From: Marco Festini Date: Mon, 30 Sep 2024 16:21:54 +0200 Subject: [PATCH 018/123] Add a new radio button to filter for Tech releases and unify spacing --- UnityLauncherPro/MainWindow.xaml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/UnityLauncherPro/MainWindow.xaml b/UnityLauncherPro/MainWindow.xaml index a3ce945..38b0658 100644 --- a/UnityLauncherPro/MainWindow.xaml +++ b/UnityLauncherPro/MainWindow.xaml @@ -438,11 +438,13 @@ - - - - - + + + + + + + From 4678cbf96f2eb5d3b60e8ef181bf3324dd22f328 Mon Sep 17 00:00:00 2001 From: Marco Festini Date: Sat, 5 Oct 2024 17:47:32 +0200 Subject: [PATCH 019/123] Add a download progress window to give feedback and allow cancelling downloads --- UnityLauncherPro/Data/DownloadProgress.cs | 14 ++++ UnityLauncherPro/DownloadProgressWindow.xaml | 22 ++++++ .../DownloadProgressWindow.xaml.cs | 56 ++++++++++++++ UnityLauncherPro/Tools.cs | 76 +++++++++++++------ UnityLauncherPro/UnityLauncherPro.csproj | 5 ++ 5 files changed, 151 insertions(+), 22 deletions(-) create mode 100644 UnityLauncherPro/Data/DownloadProgress.cs create mode 100644 UnityLauncherPro/DownloadProgressWindow.xaml create mode 100644 UnityLauncherPro/DownloadProgressWindow.xaml.cs diff --git a/UnityLauncherPro/Data/DownloadProgress.cs b/UnityLauncherPro/Data/DownloadProgress.cs new file mode 100644 index 0000000..cf4ba8e --- /dev/null +++ b/UnityLauncherPro/Data/DownloadProgress.cs @@ -0,0 +1,14 @@ +namespace UnityLauncherPro +{ + public readonly struct DownloadProgress + { + public long TotalRead { get; } + public long TotalBytes { get; } + + public DownloadProgress(long totalRead, long totalBytes) + { + TotalRead = totalRead; + TotalBytes = totalBytes; + } + } +} \ No newline at end of file diff --git a/UnityLauncherPro/DownloadProgressWindow.xaml b/UnityLauncherPro/DownloadProgressWindow.xaml new file mode 100644 index 0000000..538534d --- /dev/null +++ b/UnityLauncherPro/DownloadProgressWindow.xaml @@ -0,0 +1,22 @@ + + + + + + + + - +