diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f16d882..20057c1 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -23,7 +23,7 @@ on: jobs: analyze: name: Analyze - runs-on: windows-2019 + runs-on: windows-2022 permissions: actions: read contents: read diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ba5e6aa..3dbac44 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,7 +1,6 @@ -# This is a basic workflow to help you get started with Actions name: CI -# Controls when the workflow will run + on: # Triggers the workflow on push or pull request events but only for the master branch push: @@ -10,92 +9,251 @@ on: # Allows you to run this workflow manually from the Actions tab workflow_dispatch: -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: # This workflow contains a single job called "build" build: - # The type of runner that the job will run on - runs-on: windows-2019 + permissions: + contents: write + runs-on: windows-2022 # Steps represent a sequence of tasks that will be executed as part of the job steps: - - name: Check Commit and Install 7Zip PowerShell Module + # Step to check if the commit message contains #GITBUILD + - name: Check Commit Message shell: powershell run: | - # cancel early, if not build commit - $strVal ='${{ github.event.commits[0].message }}' + # Get the commit message + $strVal = '${{ github.event.commits[0].message }}' # Convert commit message to a single line if multiline $singleLineStrVal = $strVal -replace "`r`n", " " -replace "`n", " " - if($singleLineStrVal -match '#GITBUILD') - { - Write-Host 'True' + if ($singleLineStrVal -match '#GITBUILD') { + Write-Host 'Build commit detected. Proceeding with build...' + echo "build_trigger=true" >> $env:GITHUB_ENV } else { - Write-Host 'False' - exit(1) + Write-Host 'No build commit. Skipping build steps...' + echo "build_trigger=false" >> $env:GITHUB_ENV } - Install-Module 7Zip4PowerShell -Force -Verbose - - uses: actions/checkout@v2 + # Step to ensure the repository is checked out + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + fetch-tags: true + # Inform if build steps are skipped + - name: Inform Skipped Build Steps + if: env.build_trigger != 'true' + shell: powershell + run: | + Write-Host "Skipping build steps because the commit message does not contain #GITBUILD." + + # Install 7Zip PowerShell module + - name: Install 7Zip PowerShell Module + if: env.build_trigger == 'true' + shell: powershell + run: Install-Module 7Zip4PowerShell -Force -Verbose + + # Restore NuGet packages - name: Restore NuGet packages + if: env.build_trigger == 'true' run: nuget restore UnityLauncherPro.sln - + + # Build the binary - name: Build Binary + if: env.build_trigger == 'true' shell: cmd run: call .\Build.cmd - + + # Build the artifact - name: Build Artifact + if: env.build_trigger == 'true' shell: cmd run: call .\ArtifactBuild.cmd - - name: Get current date and time - id: datetime + # Check that output exists + - name: Validate UnityLauncherPro.exe exists + if: env.build_trigger == 'true' + shell: cmd + run: | + if not exist "UnityLauncherPro\bin\Release\UnityLauncherPro.exe" ( + echo ERROR: UnityLauncherPro.exe not found. + exit /b 1 + ) + echo Found UnityLauncherPro.exe + + # 1) Compute a wrapped major.minor.build from the run number + - name: Compute installer version + if: env.build_trigger == 'true' + shell: bash + run: | + TOTAL=${{ github.run_number }} + BUILD=$(( TOTAL % 65536 )) + MINOR_TOTAL=$(( TOTAL / 65536 )) + MINOR=$(( MINOR_TOTAL % 256 )) + MAJOR=$(( MINOR_TOTAL / 256 )) + echo "INSTALLER_MAJOR=$MAJOR" >> $GITHUB_ENV + echo "INSTALLER_MINOR=$MINOR" >> $GITHUB_ENV + echo "INSTALLER_BUILD=$BUILD" >> $GITHUB_ENV + echo "INSTALLER_VER=$MAJOR.$MINOR.$BUILD" >> $GITHUB_ENV + echo "Computed installer version → $MAJOR.$MINOR.$BUILD (run #${{ github.run_number }})" + + # 2) Patch your .vdproj in place (inject ProductVersion and a new GUID) + - name: Patch .vdproj ProductVersion & ProductCode + if: env.build_trigger == 'true' + shell: pwsh + run: | + $proj = 'UnityLauncherProInstaller\UnityLauncherProInstaller.vdproj' + $ver = "${{ env.INSTALLER_VER }}" # e.g. 0.0.118 + $guid = [Guid]::NewGuid().ToString("B").ToUpper() # e.g. {E821A3F5-1F84-4A4B-BE9D-115D93E9E6F0} + + # Read & rewrite line-by-line + $fixed = Get-Content $proj | ForEach-Object { + if ($_ -match '^(\s*)"ProductVersion"') { + # preserve indentation, then inject exactly one pair of braces + "$($Matches[1])""ProductVersion"" = ""8:$ver""" + } + elseif ($_ -match '^(\s*)"ProductCode"') { + "$($Matches[1])""ProductCode"" = ""8:$guid""" + } + else { + $_ + } + } + + # Overwrite the project + Set-Content -Path $proj -Value $fixed + + Write-Host "→ ProductVersion patched to 8:$ver" + Write-Host "→ ProductCode patched to 8:$guid" + + + # 3) **DEBUG**: print out the patched .vdproj so you can inspect it + - name: Show patched .vdproj + if: env.build_trigger == 'true' + shell: pwsh + run: | + $proj = 'UnityLauncherProInstaller\UnityLauncherProInstaller.vdproj' + Write-Host "=== BEGIN .vdproj CONTENT ===" + Get-Content $proj + Write-Host "=== END .vdproj CONTENT ===" + + # locate VS 2022 + - name: Locate Visual Studio 2022 + id: vswhere + shell: pwsh + run: | + $installPath = vswhere -latest -products * -requires Microsoft.Component.MSBuild ` + -property installationPath + if (-not $installPath) { throw 'VS 2022 not found' } + "installPath=$installPath" >> $env:GITHUB_OUTPUT + + # download vs installer builder (v2.0.1) + - name: Download Installer-Projects VSIX + shell: pwsh run: | - echo "current_datetime=$(date +'%d/%m/%Y %H:%M')" >> $GITHUB_ENV + $vsixUrl = "https://marketplace.visualstudio.com/_apis/public/gallery/publishers/VisualStudioClient/vsextensions/MicrosoftVisualStudio2022InstallerProjects/2.0.1/vspackage" + Invoke-WebRequest $vsixUrl -OutFile installerprojects.vsix - # Step to get previous tag and commits - - name: Get commits since last release + # install vs installer builder + - name: Install Installer-Projects extension + shell: pwsh + run: | + $vsixInstaller = Join-Path "${{ steps.vswhere.outputs.installPath }}" 'Common7\IDE\VSIXInstaller.exe' + Write-Host "Running: $vsixInstaller installerprojects.vsix /quiet" + & $vsixInstaller installerprojects.vsix /quiet + + # Build MSI installer project using Visual Studio 2022 workaround + - name: Build Installer MSI + if: env.build_trigger == 'true' + shell: cmd + run: | + echo === Running BuildInstaller.bat === + call .\BuildInstaller.bat || echo WARNING: BuildInstaller.bat exited with %ERRORLEVEL%, continuing... + echo === Verifying MSI === + if exist "UnityLauncherProInstaller\Release\UnityLauncherPro-Installer.msi" ( + echo Success: MSI found at UnityLauncherProInstaller\Release\UnityLauncherPro-Installer.msi + exit /b 0 + ) else ( + echo ERROR: MSI not found in UnityLauncherProInstaller\Release + exit /b 1 + ) + + # Get the current date and time + - name: Get current date and time (Helsinki) + if: env.build_trigger == 'true' + shell: pwsh + run: | + $nowUtc = Get-Date -AsUTC + $tz = [TimeZoneInfo]::FindSystemTimeZoneById('FLE Standard Time') # Europe/Helsinki + $now = [TimeZoneInfo]::ConvertTimeFromUtc($nowUtc, $tz) + + "current_datetime=$($now.ToString('dd/MM/yyyy HH:mm'))" >> $env:GITHUB_ENV + "build_timestamp=$($now.ToString('HH:mm:ss - dd/MM/yyyy'))" >> $env:GITHUB_ENV + - name: Echo timestamp (debug) + if: env.build_trigger == 'true' + shell: pwsh + run: echo "build_timestamp=${env:build_timestamp}" + + # Get commits since last build + - name: Get commits since last numeric CI tag id: get_commits + if: env.build_trigger == 'true' shell: bash run: | - # Get the most recent tag - PREV_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "none") - if [ "$PREV_TAG" = "none" ]; then - echo "No previous tag found, listing all commits" - COMMITS=$(git log --pretty=format:"* %s" --no-merges) + set -euo pipefail + + # Defensive: fetch tags + git fetch --tags --force + + # Collect numeric-only tags (e.g., 145, 143...) and sort ascending numerically + mapfile -t NUM_TAGS < <(git tag --list '[0-9]*' | sort -n) + + PREV_TAG="" + # Walk from newest to oldest and pick the newest tag that is an ancestor of HEAD + for (( idx=${#NUM_TAGS[@]}-1 ; idx>=0 ; idx-- )); do + t="${NUM_TAGS[$idx]}" + if git merge-base --is-ancestor "$t" HEAD; then + PREV_TAG="$t" + break + fi + done + + if [ -z "$PREV_TAG" ]; then + echo "No previous numeric CI tag reachable from HEAD → listing all commits" + RANGE="--all" else - echo "Previous tag: $PREV_TAG" - # List commits since last tag - COMMITS=$(git log $PREV_TAG..HEAD --pretty=format:"* %s" --no-merges) + echo "Previous CI tag: $PREV_TAG" + RANGE="$PREV_TAG..HEAD" fi - echo "Commits since last release: $COMMITS" - - # Save commits to environment file for later use - echo "commits=$COMMITS" >> $GITHUB_ENV - - - name: Create Release - id: create_release - uses: actions/create-release@latest - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # Nicely formatted bullets; add --date=short if you want dates + COMMITS=$(git log $RANGE --no-merges --pretty='* %h %s (by %an)') + + if [ -z "$COMMITS" ]; then + COMMITS="* No code changes since last CI tag." + fi + + { + echo 'commits<> "$GITHUB_OUTPUT" + + - name: Create GitHub Release + Upload Assets + if: env.build_trigger == 'true' + uses: softprops/action-gh-release@v2 with: - tag_name: ${{github.run_number}} - release_name: ${{ env.current_datetime }} (${{ github.run_number }}) + tag_name: ${{ github.run_number }} + name: ${{ env.current_datetime }} (${{ github.run_number }}) body: | - Automated Release by GitHub Action CI - - ### Commits in this release: - ${{ env.commits }} + Automated Release by GitHub Action CI. + **Build time:** ${{ env.build_timestamp }} + NOTE: Installer is experimental (and it loses settings from previous version) + + ### Commits in this release + ${{ steps.get_commits.outputs.commits }} draft: false - prerelease: false - - - name: Upload Release Asset - id: upload-release-asset - uses: actions/upload-release-asset@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: ./UnityLauncherPro.zip - asset_name: UnityLauncherPro.zip - asset_content_type: application/zip + prerelease: false + files: | + ./UnityLauncherPro.zip + ./UnityLauncherProInstaller/Release/UnityLauncherPro-Installer.msi diff --git a/Build.cmd b/Build.cmd index 96f1597..80288d1 100644 --- a/Build.cmd +++ b/Build.cmd @@ -1,10 +1,10 @@ @echo off REM Default VS paths to check if no Paths.cmd file exists -set VISUAL_STUDIO_PATH_0="%programfiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\msbuild.exe" -set VISUAL_STUDIO_PATH_1="%programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" -set VISUAL_STUDIO_PATH_2="%programfiles(x86)%\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\msbuild.exe" -set VISUAL_STUDIO_PATH_3="%programfiles(x86)%\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\msbuild.exe" +set VISUAL_STUDIO_PATH_0="%programfiles%\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\msbuild.exe" +set VISUAL_STUDIO_PATH_1="%programfiles%\Microsoft Visual Studio\2022\Enterprise\MSBuild\Current\Bin\msbuild.exe" +set VISUAL_STUDIO_PATH_2="%programfiles(x86)%\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\msbuild.exe" +set VISUAL_STUDIO_PATH_3="%programfiles(x86)%\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\msbuild.exe" pushd "%~dp0" if exist Debug rd /s /q Debug diff --git a/BuildInstaller.bat b/BuildInstaller.bat new file mode 100644 index 0000000..97b0d01 --- /dev/null +++ b/BuildInstaller.bat @@ -0,0 +1,75 @@ +@ECHO OFF +SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION + +ECHO: +ECHO === Starting Installer Build Workaround === + +REM Store current directory +SET "current_path=%CD%" + +REM Try all known editions of Visual Studio 2022 +SET "vs_base_path=%ProgramFiles%\Microsoft Visual Studio\2022" +FOR %%E IN (Community Professional Enterprise) DO ( + IF EXIST "%vs_base_path%\%%E\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild\DisableOutOfProcBuild.exe" ( + SET "buildfix_path=%vs_base_path%\%%E\Common7\IDE\CommonExtensions\Microsoft\VSI\DisableOutOfProcBuild" + SET "devenv_path=%vs_base_path%\%%E\Common7\IDE\devenv.exe" + SET "vs_edition=%%E" + GOTO :FoundEdition + ) +) + +ECHO [ERROR] Could not find DisableOutOfProcBuild.exe in any known VS2022 edition. +EXIT /B 1 + +:FoundEdition +ECHO Found Visual Studio 2022 Edition: %vs_edition% +CD /D "%buildfix_path%" +CALL DisableOutOfProcBuild.exe + +REM Restore previous directory +CD /D "%current_path%" + +REM === Validate required files === +ECHO: +ECHO === Checking required files === + +SET "error=0" + +IF NOT EXIST "UnityLauncherPro\bin\Release\UnityLauncherPro.exe" ( + ECHO [ERROR] Missing file: UnityLauncherPro\bin\Release\UnityLauncherPro.exe + SET "error=1" +) +IF NOT EXIST "UnityLauncherPro\Images\icon.ico" ( + ECHO [ERROR] Missing file: UnityLauncherPro\Images\icon.ico + SET "error=1" +) + +IF %error% NEQ 0 ( + ECHO [ERROR] Required files are missing. Aborting installer build. + EXIT /B 1 +) + + +ECHO: +ECHO === Building Installer === +"%devenv_path%" UnityLauncherPro.sln /Rebuild Release /Project UnityLauncherProInstaller > build_output.log 2>&1 +SET "exitCode=%ERRORLEVEL%" + +TYPE build_output.log +ECHO: +ECHO === devenv.exe exit code: %exitCode% === + +IF NOT "%exitCode%"=="0" ( + ECHO [ERROR] Installer build failed. Check build_output.log for details. + EXIT /B %exitCode% +) + + +ECHO: +ECHO === Build Complete === + +REM Optional cleanup: disable workaround +REG DELETE "HKCU\Software\Microsoft\VisualStudio\Setup" /v VSDisableOutOfProcBuild /f >NUL 2>&1 + +ENDLOCAL +EXIT /B %exitCode% diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..6b201eb --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,41 @@ +# Contributing to UnityLauncherPro + +Thanks for your interest in contributing! +Here’s how you can help: + +## How to Contribute + +0. **Open Issue** Describe your idea first (if its useful, it might get accepted) OR check existing issues and comment there +1. **Fork** the repository +2. **Clone** your fork: `git clone https://github.com/YOURUSERNAME/UnityLauncherPro.git` +3. Optional: **Create a new branch**: `git checkout -b feature-name` +4. **Make your changes** +5. **Commit**: `git commit -m "Add feature XYZ"` +6. **Push**: `git push origin feature-name` +7. **Open a Pull Request** from your fork + +## Reporting Bugs + +- Use the **Issues** tab +- Include **steps to reproduce**, screenshots, and error messages + +## Suggesting Features + +- Open an issue with `[Feature]` in the title +- Describe the problem your feature solves +- Note: Not all features get merged! *i'd like to keep workflows and UI something close to my own preferences (Sorry!), but you can of course make your own forks with additional features! + +## Code Style & External Libraries + +- Style is not enforced +- Simple code is good and functions can be as long as they need, to do the task (but can extract commonly used parts/methods into Tools or other helper libraries) +- Avoid using external packages/nugets/dependencies (to keep this as a small single exe build) +- Try to keep main features fast (or even improve existing features to make this more lightweight and faster to start etc.) + +## Need Help? + +Feel free to open an issue or post in discussion. + +--- + +Thanks for contributing! diff --git a/README.md b/README.md index c6af1d1..f7540b8 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ -# UnityLauncherPro -[![Build Status](https://ci.appveyor.com/api/projects/status/hajcaavcsg7904rx?svg=true)](https://github.com/unitycoder/UnityLauncherPro/releases/latest/download/UnityLauncherPro.zip) [![Downloads](https://img.shields.io/github/downloads/unitycoder/unitylauncherpro/total)](https://github.com/unitycoder/UnityLauncherPro/releases/latest/download/UnityLauncherPro.zip) [![GitHub license](https://img.shields.io/github/license/unitycoder/UnityLauncherPro)](https://github.com/unitycoder/UnityLauncherPro/blob/master/LICENSE) [](https://discord.gg/cXT97hU) [![VirusTotal scan now](https://img.shields.io/static/v1?label=VirusTotal&message=Scan)](https://www.virustotal.com/gui/url/e123b616cf4cbe3d3f7ba13b0d88cf5fff4638f72d5b9461088d0b11e9a41de3?nocache=1) [![CodeQL](https://github.com/unitycoder/UnityLauncherPro/actions/workflows/codeql.yml/badge.svg)](https://github.com/unitycoder/UnityLauncherPro/actions/workflows/codeql.yml) +# Disclaimer +This is un-official, alternative Project launcher for Unity Editor. +These materials are not sponsored by or affiliated with Unity Technologies or its affiliates. “Unity” is a trademark or registered trademark of Unity Technologies or its affiliates in the U.S. and elsewhere. +# Project Launcher For Unity +[![Build Status](https://github.com/unitycoder/UnityLauncherPro/actions/workflows/main.yml/badge.svg)](https://github.com/unitycoder/UnityLauncherPro/releases/latest/download/UnityLauncherPro.zip) [![Downloads](https://img.shields.io/github/downloads/unitycoder/unitylauncherpro/total)](https://github.com/unitycoder/UnityLauncherPro/releases/latest/download/UnityLauncherPro.zip) [![GitHub license](https://img.shields.io/github/license/unitycoder/UnityLauncherPro)](https://github.com/unitycoder/UnityLauncherPro/blob/master/LICENSE) [](https://discord.gg/cXT97hU) [![VirusTotal scan now](https://img.shields.io/static/v1?label=VirusTotal&message=Scan)](https://www.virustotal.com/gui/url/e123b616cf4cbe3d3f7ba13b0d88cf5fff4638f72d5b9461088d0b11e9a41de3?nocache=1) [![CodeQL](https://github.com/unitycoder/UnityLauncherPro/actions/workflows/codeql.yml/badge.svg)](https://github.com/unitycoder/UnityLauncherPro/actions/workflows/codeql.yml) Handle all your Unity versions and Projects easily! @@ -27,6 +30,9 @@ Handle all your Unity versions and Projects easily! - Select template for new project (template based on selected unity version) - And more: https://github.com/unitycoder/UnityLauncherPro/wiki/Launcher-Comparison +### Powered by +[![JetBrains logo.](https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg)](https://jb.gg/OpenSourceSupport) + ### Forum Thread https://forum.unity.com/threads/unity-launcher-launch-correct-unity-versions-for-each-project-automatically.488718/ @@ -37,17 +43,20 @@ https://github.com/unitycoder/UnityLauncherPro/wiki See DEV branch for latest commits https://github.com/unitycoder/UnityLauncherPro/tree/dev
Pre-releases are sometimes available from dev branch: https://github.com/unitycoder/UnityLauncherPro/releases +### Contributing +See https://github.com/unitycoder/UnityLauncherPro/blob/master/CONTRIBUTING.md + ### Screenshots -![image](https://user-images.githubusercontent.com/5438317/71485879-184b3a00-281c-11ea-97db-73c5dfa9bb4e.png) +image -![image](https://github.com/unitycoder/UnityLauncherPro/assets/5438317/21eb1fcd-3cb1-4dea-8133-9ce440de77d8) +image -![image](https://github.com/unitycoder/UnityLauncherPro/assets/5438317/2942c1d7-2006-4dee-8b68-e1f6f2e0fbf4) +image -![image](https://github.com/unitycoder/UnityLauncherPro/assets/5438317/6f8dce07-c640-42db-a1ef-d8bcc7a80cc2) +image -![image](https://user-images.githubusercontent.com/5438317/206923022-4b4bb8ed-0351-408f-b1d3-82bd6eefbc45.png) +image ### Perform tasks on selected project ![image](https://github.com/unitycoder/UnityLauncherPro/assets/5438317/a0b468ba-e3a6-420b-8155-78bc32814752) @@ -64,8 +73,10 @@ Pre-releases are sometimes available from dev branch: https://github.com/unityco ### View and Select current platform ![unitylauncherpro_platform](https://user-images.githubusercontent.com/5438317/132997691-5ed50f1d-e285-4c83-b356-46c1e3f431e4.gif) -### Rename Project title -![pro-rename](https://user-images.githubusercontent.com/5438317/193453048-aa5527c6-a345-4f93-b934-f68ac2524cac.gif) -
Old (winforms) version is here: https://github.com/unitycoder/UnityLauncher + + + + + diff --git a/UnityLauncherPro.sln b/UnityLauncherPro.sln index 63fd938..2314601 100644 --- a/UnityLauncherPro.sln +++ b/UnityLauncherPro.sln @@ -1,14 +1,13 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.28307.539 +# Visual Studio Version 17 +VisualStudioVersion = 17.13.35931.197 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityLauncherPro", "UnityLauncherPro\UnityLauncherPro.csproj", "{EC78D91A-3E63-4CAA-8BC3-9673A30FDA45}" EndProject +Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "UnityLauncherProInstaller", "UnityLauncherProInstaller\UnityLauncherProInstaller.vdproj", "{249180EF-BFC1-9DD7-48CC-E2B9253A64E0}" +EndProject Global - GlobalSection(Performance) = preSolution - HasPerformanceSessions = true - EndGlobalSection GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU @@ -18,6 +17,9 @@ Global {EC78D91A-3E63-4CAA-8BC3-9673A30FDA45}.Debug|Any CPU.Build.0 = Debug|Any CPU {EC78D91A-3E63-4CAA-8BC3-9673A30FDA45}.Release|Any CPU.ActiveCfg = Release|Any CPU {EC78D91A-3E63-4CAA-8BC3-9673A30FDA45}.Release|Any CPU.Build.0 = Release|Any CPU + {249180EF-BFC1-9DD7-48CC-E2B9253A64E0}.Debug|Any CPU.ActiveCfg = Debug + {249180EF-BFC1-9DD7-48CC-E2B9253A64E0}.Release|Any CPU.ActiveCfg = Release + {249180EF-BFC1-9DD7-48CC-E2B9253A64E0}.Release|Any CPU.Build.0 = Release EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -28,4 +30,7 @@ Global GlobalSection(Performance) = preSolution HasPerformanceSessions = true EndGlobalSection + GlobalSection(Performance) = preSolution + HasPerformanceSessions = true + EndGlobalSection EndGlobal diff --git a/UnityLauncherPro/App.xaml b/UnityLauncherPro/App.xaml index 1d882de..adfad5f 100644 --- a/UnityLauncherPro/App.xaml +++ b/UnityLauncherPro/App.xaml @@ -136,7 +136,7 @@ - + @@ -530,9 +530,6 @@ - - - diff --git a/UnityLauncherPro/App.xaml.cs b/UnityLauncherPro/App.xaml.cs index 180b5f2..d14e416 100644 --- a/UnityLauncherPro/App.xaml.cs +++ b/UnityLauncherPro/App.xaml.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Threading.Tasks; -using System.Windows; +using System.Windows; namespace UnityLauncherPro { diff --git a/UnityLauncherPro/Converters/LastModifiedConverter.cs b/UnityLauncherPro/Converters/LastModifiedConverter.cs index 710dd14..a0f2b45 100644 --- a/UnityLauncherPro/Converters/LastModifiedConverter.cs +++ b/UnityLauncherPro/Converters/LastModifiedConverter.cs @@ -23,5 +23,23 @@ public object ConvertBack(object value, Type targetType, object parameter, Cultu return DateTime.ParseExact((string)value, MainWindow.currentDateFormat, culture); } + } + + // just for tooltip + [ValueConversion(typeof(DateTime), typeof(String))] + public class LastModifiedConverterTooltip : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value == null) return null; + DateTime date = (DateTime)value; + return date.ToString(MainWindow.currentDateFormat); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return DateTime.ParseExact((string)value, MainWindow.currentDateFormat, culture); + } + } } diff --git a/UnityLauncherPro/Converters/ThumbnailConverter.cs b/UnityLauncherPro/Converters/ThumbnailConverter.cs new file mode 100644 index 0000000..d389489 --- /dev/null +++ b/UnityLauncherPro/Converters/ThumbnailConverter.cs @@ -0,0 +1,58 @@ +using System; +using System.Globalization; +using System.IO; +using System.Windows.Data; +using System.Windows.Media.Imaging; + +namespace UnityLauncherPro.Converters +{ + public class ThumbnailConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (value is Project project) + { + if (!string.IsNullOrEmpty(project.Path)) + { + string thumbnailPath = Path.Combine(project.Path, "ProjectSettings", "icon.png"); + + if (File.Exists(thumbnailPath)) + { + try + { + var bitmap = new BitmapImage(); + bitmap.BeginInit(); + bitmap.CacheOption = BitmapCacheOption.OnLoad; + bitmap.CreateOptions = BitmapCreateOptions.IgnoreImageCache; + bitmap.UriSource = new Uri(thumbnailPath, UriKind.Absolute); + bitmap.DecodePixelWidth = 64; // Match your display size + bitmap.DecodePixelHeight = 64; + + bitmap.EndInit(); + + // Freeze for cross-thread access + if (bitmap.CanFreeze) + { + bitmap.Freeze(); + } + + return bitmap; + } + catch + { + // Ignore and fall back to null + } + } + } + return null; + } + + return null; + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/UnityLauncherPro/Data/MessageType.cs b/UnityLauncherPro/Data/MessageType.cs new file mode 100644 index 0000000..febb9be --- /dev/null +++ b/UnityLauncherPro/Data/MessageType.cs @@ -0,0 +1,9 @@ +namespace UnityLauncherPro.Data +{ + public enum MessageType + { + Info, + Warning, + Error + } +} diff --git a/UnityLauncherPro/Data/OnlineTemplateItem.cs b/UnityLauncherPro/Data/OnlineTemplateItem.cs new file mode 100644 index 0000000..078f3dc --- /dev/null +++ b/UnityLauncherPro/Data/OnlineTemplateItem.cs @@ -0,0 +1,36 @@ +using System.ComponentModel; + +namespace UnityLauncherPro.Data +{ + public class OnlineTemplateItem : INotifyPropertyChanged + { + private bool _isDownloaded; + + public string Name { get; set; } + public string Description { get; set; } + public string RenderPipeline { get; set; } + public string Type { get; set; } // Core, Learning, Sample, + public string PreviewImageURL { get; set; } + public string TarBallURL { get; set; } + + public bool IsDownloaded + { + get { return _isDownloaded; } + set + { + if (_isDownloaded != value) + { + _isDownloaded = value; + OnPropertyChanged(nameof(IsDownloaded)); + } + } + } + + public event PropertyChangedEventHandler PropertyChanged; + + protected virtual void OnPropertyChanged(string propertyName) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } + } +} \ No newline at end of file diff --git a/UnityLauncherPro/Data/Project.cs b/UnityLauncherPro/Data/Project.cs index 6bf8621..7b221ee 100644 --- a/UnityLauncherPro/Data/Project.cs +++ b/UnityLauncherPro/Data/Project.cs @@ -1,10 +1,11 @@ using System; +using System.ComponentModel; using System.Globalization; using System.Windows.Data; namespace UnityLauncherPro { - public class Project : IValueConverter + public class Project : IValueConverter, INotifyPropertyChanged { public string Title { set; get; } public string Version { set; get; } @@ -16,6 +17,20 @@ public class Project : IValueConverter public string TargetPlatform { set; get; } // TODO rename to Platform public string[] TargetPlatforms { set; get; } public bool folderExists { set; get; } + public string SRP { set; get; } // Scriptable Render Pipeline, TODO add version info? + + //public string InfoLabel { set; get; } // this is additional info from Releases API (like vulnerabilities..) + private string _infoLabel; + public string InfoLabel + { + get => _infoLabel; + set + { + if (_infoLabel == value) return; + _infoLabel = value; + OnPropertyChanged(nameof(InfoLabel)); + } + } // WPF keeps calling this method from AppendFormatHelper, GetNameCore..? not sure if need to return something else or default would be faster? public override string ToString() @@ -40,5 +55,8 @@ public object ConvertBack(object value, Type targetType, object parameter, Cultu { throw new NotSupportedException(); } + + public event PropertyChangedEventHandler PropertyChanged; + protected void OnPropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } } \ No newline at end of file diff --git a/UnityLauncherPro/Data/TemplateGraphQLResponse.cs b/UnityLauncherPro/Data/TemplateGraphQLResponse.cs new file mode 100644 index 0000000..32bdd91 --- /dev/null +++ b/UnityLauncherPro/Data/TemplateGraphQLResponse.cs @@ -0,0 +1,49 @@ +namespace UnityLauncherPro.Data +{ + public class TemplateGraphQLResponse + { + public TemplateData data { get; set; } + } + + public class TemplateData + { + public GetTemplates getTemplates { get; set; } + } + + public class GetTemplates + { + public TemplateEdge[] edges { get; set; } + } + + public class TemplateEdge + { + public TemplateNode node { get; set; } + } + + public class TemplateNode + { + public string name { get; set; } + public string packageName { get; set; } + public string description { get; set; } + public string type { get; set; } + public string renderPipeline { get; set; } + public PreviewImage previewImage { get; set; } + public TemplateVersion[] versions { get; set; } + } + + public class PreviewImage + { + public string url { get; set; } + } + + public class TemplateVersion + { + public string name { get; set; } + public Tarball tarball { get; set; } + } + + public class Tarball + { + public string url { get; set; } + } +} \ No newline at end of file diff --git a/UnityLauncherPro/Data/ThemeColor.cs b/UnityLauncherPro/Data/ThemeColor.cs index 24a6232..2dcbd02 100644 --- a/UnityLauncherPro/Data/ThemeColor.cs +++ b/UnityLauncherPro/Data/ThemeColor.cs @@ -1,5 +1,4 @@ using System; -using System.ComponentModel; using System.Globalization; using System.Windows.Data; using System.Windows.Media; diff --git a/UnityLauncherPro/Data/UnityInstallation.cs b/UnityLauncherPro/Data/UnityInstallation.cs index 3647bf6..5f5d320 100644 --- a/UnityLauncherPro/Data/UnityInstallation.cs +++ b/UnityLauncherPro/Data/UnityInstallation.cs @@ -1,29 +1,60 @@ using System; +using System.ComponentModel; using System.Windows.Data; namespace UnityLauncherPro { - public class UnityInstallation : IValueConverter + public class UnityInstallation : IValueConverter, INotifyPropertyChanged { public string Version { set; get; } public long VersionCode { set; get; } // version as number, cached for sorting public string Path { set; get; } // exe path public DateTime? Installed { set; get; } - public string PlatformsCombined { set; get; } public string[] Platforms { set; get; } public int ProjectCount { set; get; } - public bool IsPreferred { set; get; } - public string ReleaseType { set; get; } // Alpha, Beta, LTS.. TODO could be enum + //public string InfoLabel { set; get; } // this is additional info from Releases API (like vulnerabilities..) + + private string _infoLabel; + public string InfoLabel + { + get => _infoLabel; + set + { + if (_infoLabel == value) return; + _infoLabel = value; + OnPropertyChanged(nameof(InfoLabel)); + } + } + // https://stackoverflow.com/a/5551986/5452781 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { string version = value as string; if (string.IsNullOrEmpty(version)) return null; - return MainWindow.unityInstalledVersions.ContainsKey(version); + + bool checkInfoLabel = true; + + if (MainWindow.unityInstalledVersions.ContainsKey(version)) + { + //Console.WriteLine("checking version: "+version); + if (checkInfoLabel && string.IsNullOrEmpty(InfoLabel) == false) + { + Console.WriteLine("Contains warning: " + version); + return -1; // has warning + } + else + { + return 1; // normal + } + } + else + { + return 0; // not installed + } } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) @@ -31,5 +62,9 @@ public object ConvertBack(object value, Type targetType, object parameter, Syste throw new NotSupportedException(); } + // status label results are ready + public event PropertyChangedEventHandler PropertyChanged; + protected void OnPropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); + } } diff --git a/UnityLauncherPro/Data/UnityVersion.cs b/UnityLauncherPro/Data/UnityVersion.cs index f616aaa..e4a0649 100644 --- a/UnityLauncherPro/Data/UnityVersion.cs +++ b/UnityLauncherPro/Data/UnityVersion.cs @@ -8,6 +8,7 @@ public class UnityVersion public string Version { get; set; } public UnityVersionStream Stream { get; set; } public DateTime ReleaseDate { get; set; } + public string directURL { get; set; } = null; // if found from unofficial releases list public static UnityVersion FromJson(string json) { diff --git a/UnityLauncherPro/GetProjects.cs b/UnityLauncherPro/GetProjects.cs index caa05a9..bb3ae29 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, bool searchGitbranchRecursivly = false) + public static List Scan(bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false, StringCollection AllProjectPaths = null, bool searchGitbranchRecursively = false, bool showSRP = false) { List projectsFound = new List(); @@ -53,17 +53,18 @@ public static List Scan(bool getGitBranch = false, bool getPlasticBranc projectPath = (string)key.GetValue(valueName); } - var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform, searchGitbranchRecursivly); + var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform, searchGitbranchRecursively, showSRP); //Console.WriteLine(projectPath+" "+p.TargetPlatform); // if want to hide project and folder path for screenshot - //p.Title = "Example Project "; - //p.Path = "C:/Projects/ExamplePath/MyProj"; + //p.Title = "Example Project"; + //p.Path = "C:/Projects/MyProj"; if (p != null) { projectsFound.Add(p); + // TODO FIXME, this gets called everytime for same projects? // add found projects to history also (gets added only if its not already there) Tools.AddProjectToHistory(p.Path); } @@ -94,7 +95,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, searchGitbranchRecursivly); + var p = GetProjectInfo(projectPath, getGitBranch, getPlasticBranch, getArguments, showMissingFolders, showTargetPlatform, searchGitbranchRecursively, showSRP); if (p != null) projectsFound.Add(p); } } @@ -117,11 +118,10 @@ public static List Scan(bool getGitBranch = false, bool getPlasticBranc //Console.WriteLine("Trimming projects list to " + MainWindow.maxProjectCount + " projects"); projectsFound.RemoveRange(MainWindow.maxProjectCount, projectsFound.Count - MainWindow.maxProjectCount); } - return projectsFound; } // Scan() - static Project GetProjectInfo(string projectPath, bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false, bool searchGitbranchRecursivly = false) + static Project GetProjectInfo(string projectPath, bool getGitBranch = false, bool getPlasticBranch = false, bool getArguments = false, bool showMissingFolders = false, bool showTargetPlatform = false, bool searchGitbranchRecursively = false, bool showSRP = false) { bool folderExists = Directory.Exists(projectPath); @@ -166,11 +166,12 @@ static Project GetProjectInfo(string projectPath, bool getGitBranch = false, boo string gitBranch = ""; if (getGitBranch == true) { - gitBranch = folderExists ? Tools.ReadGitBranchInfo(projectPath, searchGitbranchRecursivly) : null; + gitBranch = folderExists ? Tools.ReadGitBranchInfo(projectPath, searchGitbranchRecursively) : null; + // check for plastic, if enabled if (getPlasticBranch == true && gitBranch == null) { - gitBranch = folderExists ? Tools.ReadPlasticBranchInfo(projectPath) : null; + gitBranch = folderExists ? Tools.ReadPlasticBranchInfo(projectPath, searchGitbranchRecursively) : null; } } @@ -209,6 +210,9 @@ static Project GetProjectInfo(string projectPath, bool getGitBranch = false, boo // bubblegum(TM) solution, fill available platforms for this unity version, for this project p.TargetPlatforms = Tools.GetPlatformsForUnityVersion(projectVersion); p.folderExists = folderExists; + + if (showSRP == true) p.SRP = Tools.GetSRP(projectPath); + return p; } diff --git a/UnityLauncherPro/GetUnityInstallations.cs b/UnityLauncherPro/GetUnityInstallations.cs index f12bc77..28a0a31 100644 --- a/UnityLauncherPro/GetUnityInstallations.cs +++ b/UnityLauncherPro/GetUnityInstallations.cs @@ -11,7 +11,6 @@ public static class GetUnityInstallations { static Dictionary platformNames = new Dictionary { { "androidplayer", "Android" }, { "windowsstandalonesupport", "Win" }, { "linuxstandalonesupport", "Linux" }, { "LinuxStandalone", "Linux" }, { "OSXStandalone", "OSX" }, { "webglsupport", "WebGL" }, { "metrosupport", "UWP" }, { "iossupport", "iOS" } }; - // returns unity installations public static List Scan() { @@ -49,7 +48,23 @@ public static List Scan() var haveUninstaller = File.Exists(uninstallExe); var exePath = Path.Combine(editorFolder, "Unity.exe"); - if (File.Exists(exePath) == false) continue; + +// bool supportTuanjie = true; + if (File.Exists(exePath) == false) + { + //if (supportTuanjie == false) + { + continue; + } + //else + //{ + // exePath = Path.Combine(editorFolder, "Tuanjie.exe"); + // if (File.Exists(exePath) == false) + // { + // continue; + // } + //} + } // get full version number from uninstaller (or try exe, if no uninstaller) var version = Tools.GetFileVersionData(haveUninstaller ? uninstallExe : exePath); @@ -65,6 +80,9 @@ public static List Scan() unity.IsPreferred = (version == MainWindow.preferredVersion); unity.ProjectCount = GetProjectCountForUnityVersion(version); + // TODO here need to check for vulnerabilities from CACHED data, BUT if its cached, then it might be old + unity.InfoLabel = null; + if (Tools.IsAlpha(version)) { unity.ReleaseType = "Alpha"; diff --git a/UnityLauncherPro/GetUnityUpdates.cs b/UnityLauncherPro/GetUnityUpdates.cs index 3c614e0..8384fcd 100644 --- a/UnityLauncherPro/GetUnityUpdates.cs +++ b/UnityLauncherPro/GetUnityUpdates.cs @@ -16,22 +16,126 @@ public static class GetUnityUpdates private const int DelayBetweenBatches = 1000; // 1 second in milliseconds private const string CacheFileName = "UnityVersionCache.json"; private static readonly HttpClient Client = new HttpClient(); + public static string unofficalReleasesURL = "https://raw.githubusercontent.com/unitycoder/UnofficialUnityReleasesWatcher/refs/heads/main/unity-releases.md"; - public static async Task> FetchAll() + static Dictionary unofficialReleaseURLs = new Dictionary(); + + public static async Task> FetchAll(bool useUnofficialList = false) { var cachedVersions = LoadCachedVersions(); var newVersions = await FetchNewVersions(cachedVersions); var allVersions = newVersions.Concat(cachedVersions).ToList(); - if (newVersions.Count > 0) + if (useUnofficialList == true) + { + var unofficialVersions = await FetchUnofficialVersions(cachedVersions); + unofficialReleaseURLs.Clear(); + + // TODO modify FetchUnofficialVersions to put items in this dictionary directly + foreach (var version in unofficialVersions) + { + Console.WriteLine("version in unofficials: " + version); + // add only if not there yet + if (unofficialReleaseURLs.ContainsKey(version.Version) == false) + { + Console.WriteLine("added unofficial: " + version.Version + " , " + version.directURL); + unofficialReleaseURLs.Add(version.Version, version.directURL); + } + } + // combine + allVersions = unofficialVersions.Concat(allVersions).ToList(); + } + + if (newVersions.Count > 0 || (useUnofficialList && unofficialReleaseURLs.Count > 0)) { SaveCachedVersions(allVersions); } + return allVersions; } + public static async Task> FetchUnofficialVersions(List cachedVersions) + { + var unofficialVersions = new List(); + var existingVersions = new HashSet(cachedVersions.Select(v => v.Version)); + + try + { + var content = await Client.GetStringAsync(unofficalReleasesURL); + + // Parse the Markdown content + var lines = content.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var line in lines) + { + //Console.WriteLine(line); + + if (line.StartsWith("- ")) // Identify Markdown list items + { + var urlPart = line.Substring(4).Trim(); // bug in server, has double - + var version = ExtractVersionFromUrl(urlPart); + + //Console.WriteLine("VERSION: " + version); + //Console.WriteLine("IsNullOrEmpty: " + (string.IsNullOrEmpty(version)) + ", existingVersions:" + (existingVersions.Contains(version))); + + if (string.IsNullOrEmpty(version) == false && existingVersions.Contains(version) == false) + { + var stream = InferStreamFromVersion(version); + + Console.WriteLine(version + " , " + urlPart); + + unofficialVersions.Add(new UnityVersion + { + Version = version, + Stream = stream, + ReleaseDate = DateTime.Now, // NOTE not correct, but we don't have known release date for unofficial versions (its only when they are found..) + //ReleaseDate = DateTime.MinValue // Release date is unavailable in the MD format, TODO add to md as #2021-01-01 ? + directURL = urlPart, // this is available only for unofficial releases + }); + } + } + } + } + catch (Exception ex) + { + Console.WriteLine($"Error fetching unofficial versions: {ex.Message}"); + } + + return unofficialVersions; + } + + // TODO fixme, f is not always LTS + private static UnityVersionStream InferStreamFromVersion(string version) + { + if (Tools.IsAlpha(version)) return UnityVersionStream.Alpha; + if (Tools.IsBeta(version)) return UnityVersionStream.Beta; + if (Tools.IsLTS(version)) return UnityVersionStream.LTS; + + //if (version.Contains("a")) return UnityVersionStream.Alpha; + //if (version.Contains("b")) return UnityVersionStream.Beta; + //if (version.Contains("f")) return UnityVersionStream.LTS; + return UnityVersionStream.Tech; // Default to Tech if no identifier is found + } + + /// + /// Extracts the Unity version from the given URL. + /// + /// The URL to parse. + /// The Unity version string. + private static string ExtractVersionFromUrl(string url) + { + try + { + var versionStart = url.LastIndexOf('#') + 1; + return versionStart > 0 && versionStart < url.Length ? url.Substring(versionStart) : null; + } + catch + { + return null; + } + } + public static async Task FetchDownloadUrl(string unityVersion) { if (string.IsNullOrEmpty(unityVersion)) @@ -39,6 +143,7 @@ public static async Task FetchDownloadUrl(string unityVersion) return null; } + // unity release api string apiUrl = $"{BaseApiUrl}?limit=1&version={unityVersion}&architecture=X86_64&platform=WINDOWS"; try @@ -55,6 +160,32 @@ public static async Task FetchDownloadUrl(string unityVersion) private static async Task ExtractDownloadUrlAsync(string json, string unityVersion) { + //Console.WriteLine("json: " + json + " vers: " + unityVersion); + + if (json.Contains("\"results\":[]")) + { + Console.WriteLine("No results found from releases API, checking unofficial list (if enabled), v=" + unityVersion); + + // print unofficialReleaseURLs + foreach (var kvp in unofficialReleaseURLs) + { + Console.WriteLine($"Unofficial: {kvp.Key} => {kvp.Value}"); + } + + if (unofficialReleaseURLs.ContainsKey(unityVersion)) + { + Console.WriteLine("Unofficial release found in the list: "); + + string unityHash = Tools.ParseHashCodeFromURL(unofficialReleaseURLs[unityVersion]); + // Console.WriteLine(unityHash); + string downloadURL = Tools.ParseDownloadURLFromWebpage(unityVersion, unityHash, false, true); + // Console.WriteLine("direct download url: "+downloadURL); + return downloadURL; + } + + return null; + } + int resultsIndex = json.IndexOf("\"results\":"); if (resultsIndex == -1) return null; @@ -84,7 +215,7 @@ private static async Task ExtractDownloadUrlAsync(string json, string un if (await CheckAssistantUrl(assistantUrl)) { - Console.WriteLine("Assistant download URL found."); + //Console.WriteLine("ExtractDownloadUrlAsync: Assistant download URL found."); return assistantUrl; } else @@ -261,6 +392,8 @@ private static List LoadCachedVersions() string cacheFilePath = Path.Combine(configDirectory, CacheFileName); if (!File.Exists(cacheFilePath)) return new List(); + Console.WriteLine("cache file: " + cacheFilePath); + string json = File.ReadAllText(cacheFilePath); return ParseCachedUnityVersions(json); } @@ -279,7 +412,30 @@ private static void SaveCachedVersions(List versions) if (configDirectory == null) return; string cacheFilePath = Path.Combine(configDirectory, CacheFileName); + //Console.WriteLine("Saving cachedrelease: " + cacheFilePath); File.WriteAllText(cacheFilePath, json); } + + internal static async Task CheckUnofficialVersionList(string version) + { + // fetch md page from unofficalReleasesURL + var content = await Client.GetStringAsync(unofficalReleasesURL); + // parse lines + var lines = content.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries); + foreach (var line in lines) + { + if (line.StartsWith("- ")) // Identify Markdown list items + { + var urlPart = line.Substring(4).Trim(); // bug in server, has double - + var foundVersion = ExtractVersionFromUrl(urlPart); + if (foundVersion == version) + { + Console.WriteLine("Found unofficial version in the list: " + foundVersion + " , " + urlPart); + return urlPart; + } + } + } + return null; + } } } diff --git a/UnityLauncherPro/Libraries/ExtractTarGz.cs b/UnityLauncherPro/Libraries/ExtractTarGz.cs index 04517d1..e55e44a 100644 --- a/UnityLauncherPro/Libraries/ExtractTarGz.cs +++ b/UnityLauncherPro/Libraries/ExtractTarGz.cs @@ -1,6 +1,3 @@ -// source https://gist.github.com/Su-s/438be493ae692318c73e30367cbc5c2a -// updated source https://gist.github.com/Matheos96/da8990030dfe3e27b0a48722042d9c0b - using System; using System.IO; using System.IO.Compression; @@ -11,10 +8,8 @@ namespace TarLib public class Tar { /// - /// Extracts a .tar.gz archive to the specified directory. + /// Extracts a .tar.gz archive to the specified directory. /// - /// The .tar.gz to decompress and extract. - /// Output directory to write the files. public static void ExtractTarGz(string filename, string outputDir) { using (var stream = File.OpenRead(filename)) @@ -24,39 +19,29 @@ public static void ExtractTarGz(string filename, string outputDir) } /// - /// Extracts a .tar.gz archive stream to the specified directory. + /// Extracts a .tar.gz archive stream to the specified directory. /// - /// The .tar.gz to decompress and extract. - /// Output directory to write the files. public static void ExtractTarGz(Stream stream, string outputDir) { - int read; - const int chunk = 4096; + const int chunk = 4096*4; var buffer = new byte[chunk]; - // A GZipStream is not seekable, so copy it first to a MemoryStream using (var gzipStream = new GZipStream(stream, CompressionMode.Decompress)) + using (var memStream = new MemoryStream()) { - using (var memStream = new MemoryStream()) + int read; + while ((read = gzipStream.Read(buffer, 0, buffer.Length)) > 0) { - //For .NET 6+ - while ((read = gzipStream.Read(buffer, 0, buffer.Length)) > 0) - { - memStream.Write(buffer, 0, read); - } - memStream.Seek(0, SeekOrigin.Begin); - - //ExtractTar(gzip, outputDir); - ExtractTar(memStream, outputDir); + memStream.Write(buffer, 0, read); } + memStream.Seek(0, SeekOrigin.Begin); + ExtractTar(memStream, outputDir); } } /// - /// Extractes a tar archive to the specified directory. + /// Extracts a tar archive file. /// - /// The .tar to extract. - /// Output directory to write the files. public static void ExtractTar(string filename, string outputDir) { using (var stream = File.OpenRead(filename)) @@ -66,85 +51,206 @@ public static void ExtractTar(string filename, string outputDir) } /// - /// Extractes a tar archive to the specified directory. + /// Extracts a tar archive stream. + /// Fixes path loss caused by ignoring the POSIX 'prefix' field and wrong header offsets. /// - /// The .tar to extract. - /// Output directory to write the files. public static void ExtractTar(Stream stream, string outputDir) { - var buffer = new byte[100]; - var longFileName = string.Empty; + // Tar header constants + const int HeaderSize = 512; + byte[] header = new byte[HeaderSize]; + + string pendingLongName = null; // For GNU long name ('L') entries + while (true) { - stream.Read(buffer, 0, 100); - string name = string.IsNullOrEmpty(longFileName) ? Encoding.ASCII.GetString(buffer).Trim('\0') : longFileName; //Use longFileName if we have one read - - if (String.IsNullOrWhiteSpace(name)) break; - stream.Seek(24, SeekOrigin.Current); - stream.Read(buffer, 0, 12); - var size = Convert.ToInt64(Encoding.UTF8.GetString(buffer, 0, 12).Trim('\0').Trim(), 8); - stream.Seek(20, SeekOrigin.Current); //Move head to typeTag byte - var typeTag = stream.ReadByte(); - stream.Seek(355L, SeekOrigin.Current); //Move head to beginning of data (byte 512) - - if (typeTag == 'L') + int bytesRead = ReadExact(stream, header, 0, HeaderSize); + if (bytesRead == 0) break; // End of stream + if (bytesRead < HeaderSize) throw new EndOfStreamException("Unexpected end of tar stream."); + + // Detect two consecutive zero blocks (end of archive) + bool allZero = IsAllZero(header); + if (allZero) + { + // Peek next block; if also zero -> end + bytesRead = ReadExact(stream, header, 0, HeaderSize); + if (bytesRead == 0 || IsAllZero(header)) break; + if (bytesRead < HeaderSize) throw new EndOfStreamException("Unexpected end of tar stream."); + } + + // Parse fields (POSIX ustar) + string name = GetString(header, 0, 100); + string mode = GetString(header, 100, 8); + string uid = GetString(header, 108, 8); + string gid = GetString(header, 116, 8); + string sizeOctal = GetString(header, 124, 12); + string mtime = GetString(header, 136, 12); + string checksum = GetString(header, 148, 8); + char typeFlag = (char)header[156]; + string linkName = GetString(header, 157, 100); + string magic = GetString(header, 257, 6); // "ustar\0" or "ustar " + string version = GetString(header, 263, 2); + string uname = GetString(header, 265, 32); + string gname = GetString(header, 297, 32); + string prefix = GetString(header, 345, 155); + + // Compose full name using prefix (if present and not using GNU long name override) + if (!string.IsNullOrEmpty(prefix)) + { + name = prefix + "/" + name; + } + + // If we previously read a GNU long name block, override current name + if (!string.IsNullOrEmpty(pendingLongName)) { - //If Type Tag is 'L' we have a filename that is longer than the 100 bytes reserved for it in the header. - //We read it here and save it temporarily as it will be the file name of the next block where the actual data is - var buf = new byte[size]; - stream.Read(buf, 0, buf.Length); - longFileName = Encoding.ASCII.GetString(buf).Trim('\0'); + name = pendingLongName; + pendingLongName = null; } - else + + long size = ParseOctal(sizeOctal); + + // Handle GNU long name extension block: the data of this entry is the filename of next entry. + if (typeFlag == 'L') { - longFileName = string.Empty; //Reset longFileName if current entry is not indicating one + byte[] longNameData = new byte[size]; + ReadExact(stream, longNameData, 0, (int)size); + pendingLongName = Encoding.ASCII.GetString(longNameData).Trim('\0', '\r', '\n'); + SkipPadding(stream, size); + continue; // Move to next header + } + + // Skip PAX extended header (type 'x') - metadata only + if (typeFlag == 'x') + { + SkipData(stream, size); + SkipPadding(stream, size); + continue; + } + + // Normalize name + if (string.IsNullOrWhiteSpace(name)) continue; - var output = Path.Combine(outputDir, name); + // Directory? + bool isDirectory = typeFlag == '5' || name.EndsWith("/"); - // only include these folders - var include = (output.IndexOf("package/ProjectData~/Assets/") > -1); - include |= (output.IndexOf("package/ProjectData~/ProjectSettings/") > -1); - include |= (output.IndexOf("package/ProjectData~/Packages/") > -1); + // Inclusion filter (original logic) + string originalName = name; + bool include = + originalName.IndexOf("package/ProjectData~/Assets/", StringComparison.Ordinal) > -1 || + originalName.IndexOf("package/ProjectData~/ProjectSettings/", StringComparison.Ordinal) > -1 || + originalName.IndexOf("package/ProjectData~/Library/", StringComparison.Ordinal) > -1 || + originalName.IndexOf("package/ProjectData~/Packages/", StringComparison.Ordinal) > -1; - // rename output path from "package/ProjectData~/Assets/" into "Assets/" - output = output.Replace("package/ProjectData~/", ""); + // Strip leading prefix. + string cleanedName = originalName.StartsWith("package/ProjectData~/", StringComparison.Ordinal) + ? originalName.Substring("package/ProjectData~/".Length) + : originalName; + + string finalPath = Path.Combine(outputDir, cleanedName.Replace('/', Path.DirectorySeparatorChar)); + + if (isDirectory) + { + if (include && !Directory.Exists(finalPath)) + Directory.CreateDirectory(finalPath); + // No data to read for directory; continue to next header + SkipData(stream, size); // size should be 0 + SkipPadding(stream, size); + continue; + } + + // Ensure directory exists + if (include) + { + string dir = Path.GetDirectoryName(finalPath); + if (!string.IsNullOrEmpty(dir) && !Directory.Exists(dir)) + Directory.CreateDirectory(dir); + } - if (include == true && !Directory.Exists(Path.GetDirectoryName(output))) Directory.CreateDirectory(Path.GetDirectoryName(output)); + // Read file data (always advance stream even if not included) + byte[] fileData = new byte[size]; + ReadExact(stream, fileData, 0, (int)size); - // not folder - //if (name.Equals("./", StringComparison.InvariantCulture) == false) - if (name.EndsWith("/") == false) //Directories are zero size and don't need anything written + if (include) + { + using (var fs = File.Open(finalPath, FileMode.Create, FileAccess.Write)) { - if (include == true) - { - //Console.WriteLine("output=" + output); - using (var str = File.Open(output, FileMode.OpenOrCreate, FileAccess.ReadWrite)) - { - var buf = new byte[size]; - stream.Read(buf, 0, buf.Length); - // take only data from this folder - str.Write(buf, 0, buf.Length); - } - } - else - { - var buf = new byte[size]; - stream.Read(buf, 0, buf.Length); - } + fs.Write(fileData, 0, fileData.Length); } } - //Move head to next 512 byte block - var pos = stream.Position; - var offset = 512 - (pos % 512); - if (offset == 512) offset = 0; + // Skip padding to 512 boundary + SkipPadding(stream, size); + } + } - stream.Seek(offset, SeekOrigin.Current); + private static string GetString(byte[] buffer, int offset, int length) + { + var s = Encoding.ASCII.GetString(buffer, offset, length); + int nullIndex = s.IndexOf('\0'); + if (nullIndex >= 0) s = s.Substring(0, nullIndex); + return s.Trim(); + } + + private static long ParseOctal(string s) + { + s = s.Trim(); + if (string.IsNullOrEmpty(s)) return 0; + try + { + return Convert.ToInt64(s, 8); + } + catch + { + // Fallback: treat as decimal if malformed + long val; + return long.TryParse(s, out val) ? val : 0; } } - } // class Tar -} // namespace TarLib + private static bool IsAllZero(byte[] buffer) + { + for (int i = 0; i < buffer.Length; i++) + if (buffer[i] != 0) return false; + return true; + } + + private static int ReadExact(Stream stream, byte[] buffer, int offset, int count) + { + int total = 0; + while (total < count) + { + int read = stream.Read(buffer, offset + total, count - total); + if (read <= 0) break; + total += read; + } + return total; + } + + private static void SkipData(Stream stream, long size) + { + if (size <= 0) return; + const int chunk = 8192; + byte[] tmp = new byte[Math.Min(chunk, (int)size)]; + long remaining = size; + while (remaining > 0) + { + int toRead = (int)Math.Min(tmp.Length, remaining); + int read = stream.Read(tmp, 0, toRead); + if (read <= 0) throw new EndOfStreamException("Unexpected end while skipping data."); + remaining -= read; + } + } + + private static void SkipPadding(Stream stream, long size) + { + long padding = (512 - (size % 512)) % 512; + if (padding > 0) + { + stream.Seek(padding, SeekOrigin.Current); + } + } + } +} /* This software is available under 2 licenses-- choose whichever you prefer. @@ -184,4 +290,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ +*/ \ No newline at end of file diff --git a/UnityLauncherPro/MainWindow.xaml b/UnityLauncherPro/MainWindow.xaml index bf95317..766ee5b 100644 --- a/UnityLauncherPro/MainWindow.xaml +++ b/UnityLauncherPro/MainWindow.xaml @@ -7,10 +7,12 @@ xmlns:System="clr-namespace:System;assembly=mscorlib" xmlns:converters="clr-namespace:UnityLauncherPro.Converters" x:Class="UnityLauncherPro.MainWindow" mc:Ignorable="d" - Title="UnityLauncherPro" Height="650" Width="880" WindowStartupLocation="CenterScreen" Background="{DynamicResource ThemeDarkestBackground}" MinWidth="780" MinHeight="650" AllowsTransparency="True" WindowStyle="None" Margin="0" KeyDown="OnWindowKeyDown" Closing="Window_Closing" SizeChanged="Window_SizeChanged" Icon="Images/icon.ico" SourceInitialized="Window_SourceInitialized" MouseDown="Window_MouseDown"> + Title="UnityLauncherPro" Height="670" Width="880" WindowStartupLocation="CenterScreen" Background="{DynamicResource ThemeDarkestBackground}" MinWidth="780" MinHeight="650" AllowsTransparency="True" WindowStyle="None" Margin="0" KeyDown="OnWindowKeyDown" Closing="Window_Closing" SizeChanged="Window_SizeChanged" Icon="Images/icon.ico" SourceInitialized="Window_SourceInitialized" MouseDown="Window_MouseDown"> + + @@ -30,7 +32,7 @@ - + \r\n")] + [global::System.Configuration.DefaultSettingValueAttribute(@" + + C:\Program Files\Unity\Hub\Editor\ + C:\Program Files\ +")] public global::System.Collections.Specialized.StringCollection rootFolders { get { return ((global::System.Collections.Specialized.StringCollection)(this["rootFolders"])); @@ -575,5 +577,89 @@ public bool useAlphaReleaseNotes { this["useAlphaReleaseNotes"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool checkSRP { + get { + return ((bool)(this["checkSRP"])); + } + set { + this["checkSRP"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool useUnofficialReleaseList { + get { + return ((bool)(this["useUnofficialReleaseList"])); + } + set { + this["useUnofficialReleaseList"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool disableUnityHubLaunch { + get { + return ((bool)(this["disableUnityHubLaunch"])); + } + set { + this["disableUnityHubLaunch"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool registerExplorerMenuAPK { + get { + return ((bool)(this["registerExplorerMenuAPK"])); + } + set { + this["registerExplorerMenuAPK"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool fetchAdditionalInfo { + get { + return ((bool)(this["fetchAdditionalInfo"])); + } + set { + this["fetchAdditionalInfo"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool forceDX11 { + get { + return ((bool)(this["forceDX11"])); + } + set { + this["forceDX11"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("True")] + public bool fetchOnlineTemplates { + get { + return ((bool)(this["fetchOnlineTemplates"])); + } + set { + this["fetchOnlineTemplates"] = value; + } + } } } diff --git a/UnityLauncherPro/Properties/Settings.settings b/UnityLauncherPro/Properties/Settings.settings index 90c362e..f47925b 100644 --- a/UnityLauncherPro/Properties/Settings.settings +++ b/UnityLauncherPro/Properties/Settings.settings @@ -110,6 +110,7 @@ <?xml version="1.0" encoding="utf-16"?> <ArrayOfString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <string>C:\Program Files\Unity\Hub\Editor\</string> <string>C:\Program Files\</string> </ArrayOfString> @@ -144,5 +145,26 @@ True + + False + + + False + + + False + + + False + + + False + + + False + + + True + \ No newline at end of file diff --git a/UnityLauncherPro/Resources/Colors.xaml b/UnityLauncherPro/Resources/Colors.xaml index d6d27b1..5d5bd1a 100644 --- a/UnityLauncherPro/Resources/Colors.xaml +++ b/UnityLauncherPro/Resources/Colors.xaml @@ -66,5 +66,10 @@ + + + + + \ No newline at end of file diff --git a/UnityLauncherPro/Resources/UnityVersionCache.json b/UnityLauncherPro/Resources/UnityVersionCache.json index 8b7310c..50f65d5 100644 --- a/UnityLauncherPro/Resources/UnityVersionCache.json +++ b/UnityLauncherPro/Resources/UnityVersionCache.json @@ -1 +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 +[{"version":"6000.3.0b3","releaseDate":"2025-09-30T21:20:55.2365253+03:00","stream":"Beta"},{"version":"6000.3.0b4","releaseDate":"2025-09-30T21:20:55.2365253+03:00","stream":"Beta"},{"version":"6000.3.0b3","releaseDate":"2025-09-25T12:32:28.8700000+03:00","stream":"Tech"},{"version":"6000.2.6f1","releaseDate":"2025-09-25T12:31:26.1340000+03:00","stream":"Tech"},{"version":"6000.3.0b2","releaseDate":"2025-09-17T14:13:50.6420000+03:00","stream":"Tech"},{"version":"6000.2.5f1","releaseDate":"2025-09-17T08:28:37.0430000+03:00","stream":"Tech"},{"version":"6000.0.58f1","releaseDate":"2025-09-17T08:27:16.4870000+03:00","stream":"Tech"},{"version":"6000.2.4f1","releaseDate":"2025-09-12T12:50:41.4540000+03:00","stream":"Tech"},{"version":"6000.3.0b1","releaseDate":"2025-09-09T19:50:04.5110000+03:00","stream":"Tech"},{"version":"6000.2.3f1","releaseDate":"2025-09-04T18:48:31.8630000+03:00","stream":"Tech"},{"version":"6000.0.57f1","releaseDate":"2025-09-03T12:18:47.7990000+03:00","stream":"Tech"},{"version":"6000.2.2f1","releaseDate":"2025-08-26T23:57:12.7490000+03:00","stream":"Tech"},{"version":"6000.3.0a5","releaseDate":"2025-08-21T12:46:22.7360000+03:00","stream":"Tech"},{"version":"6000.2.1f1","releaseDate":"2025-08-20T21:26:03.3440000+03:00","stream":"Tech"},{"version":"6000.0.56f1","releaseDate":"2025-08-20T10:31:57.0100000+03:00","stream":"Tech"},{"version":"6000.1.16f1","releaseDate":"2025-08-13T13:01:50.9500000+03:00","stream":"Tech"},{"version":"6000.2.0f1","releaseDate":"2025-08-12T21:26:22.1900000+03:00","stream":"Tech"},{"version":"6000.2.0b13","releaseDate":"2025-08-08T01:59:59.6800000+03:00","stream":"Tech"},{"version":"6000.1.15f1","releaseDate":"2025-08-05T17:09:59.1050000+03:00","stream":"Tech"},{"version":"6000.0.55f1","releaseDate":"2025-08-05T16:33:24.7270000+03:00","stream":"Tech"},{"version":"6000.1.14f1","releaseDate":"2025-07-30T11:28:59.4950000+03:00","stream":"Tech"},{"version":"6000.2.0b12","releaseDate":"2025-07-29T20:28:17.2950000+03:00","stream":"Tech"},{"version":"6000.2.0b11","releaseDate":"2025-07-24T18:28:42.3790000+03:00","stream":"Tech"},{"version":"6000.3.0a3","releaseDate":"2025-07-23T18:26:41.8870000+03:00","stream":"Tech"},{"version":"6000.0.54f1","releaseDate":"2025-07-23T14:28:35.7140000+03:00","stream":"Tech"},{"version":"6000.1.13f1","releaseDate":"2025-07-23T09:54:37.0260000+03:00","stream":"Tech"},{"version":"6000.3.0a2","releaseDate":"2025-07-17T13:48:27.7620000+03:00","stream":"Tech"},{"version":"6000.2.0b10","releaseDate":"2025-07-16T16:54:47.1060000+03:00","stream":"Tech"},{"version":"6000.1.12f1","releaseDate":"2025-07-15T17:19:15.7530000+03:00","stream":"Tech"},{"version":"6000.2.0b9","releaseDate":"2025-07-09T19:49:32.8200000+03:00","stream":"Tech"},{"version":"6000.1.11f1","releaseDate":"2025-07-09T13:28:05.7180000+03:00","stream":"Tech"},{"version":"6000.0.53f1","releaseDate":"2025-07-09T09:34:27.5310000+03:00","stream":"Tech"},{"version":"6000.1.10f1","releaseDate":"2025-07-02T20:01:29.6990000+03:00","stream":"Tech"},{"version":"6000.2.0b8","releaseDate":"2025-07-02T19:48:35.9940000+03:00","stream":"Tech"},{"version":"6000.0.52f1","releaseDate":"2025-07-02T08:11:11.7010000+03:00","stream":"Tech"},{"version":"6000.2.0b7","releaseDate":"2025-06-24T18:49:01.1870000+03:00","stream":"Tech"},{"version":"6000.1.9f1","releaseDate":"2025-06-24T16:56:32.8380000+03:00","stream":"Tech"},{"version":"6000.1.8f1","releaseDate":"2025-06-18T08:09:52.6810000+03:00","stream":"Tech"},{"version":"6000.2.0b6","releaseDate":"2025-06-14T00:10:42.6505176+03:00","stream":"Beta"},{"version":"6000.1.7f1","releaseDate":"2025-06-11T16:28:11.0210000+03:00","stream":"Tech"},{"version":"6000.0.51f1","releaseDate":"2025-06-11T12:43:13.5700000+03:00","stream":"Tech"},{"version":"6000.2.0b5","releaseDate":"2025-06-05T21:43:56.6458275+03:00","stream":"Beta"},{"version":"6000.1.6f1","releaseDate":"2025-06-05T12:52:49.5640000+03:00","stream":"Tech"},{"version":"6000.2.0b4","releaseDate":"2025-06-04T08:33:17.6990000+03:00","stream":"Tech"},{"version":"6000.0.50f1","releaseDate":"2025-05-28T18:00:23.5230000+03:00","stream":"Tech"},{"version":"6000.1.5f1","releaseDate":"2025-05-28T17:09:19.2710000+03:00","stream":"Tech"},{"version":"6000.2.0b3","releaseDate":"2025-05-23T10:48:51.3054783+03:00","stream":"Beta"},{"version":"6000.1.4f1","releaseDate":"2025-05-21T12:38:18.0710000+03:00","stream":"Tech"},{"version":"6000.2.0b2","releaseDate":"2025-05-20T17:11:12.0840000+03:00","stream":"Tech"},{"version":"6000.2.0b1","releaseDate":"2025-05-15T12:05:37.2680000+03:00","stream":"Tech"},{"version":"6000.0.49f1","releaseDate":"2025-05-14T06:30:14.3260000+03:00","stream":"Tech"},{"version":"6000.1.3f1","releaseDate":"2025-05-14T06:29:42.5580000+03:00","stream":"Tech"},{"version":"2022.3.62f1","releaseDate":"2025-05-07T09:24:12.5330000+03:00","stream":"Tech"},{"version":"6000.1.2f1","releaseDate":"2025-05-06T20:34:03.1050000+03:00","stream":"Tech"},{"version":"6000.2.0a10","releaseDate":"2025-05-01T12:14:47.8870000+03:00","stream":"Tech"},{"version":"6000.1.1f1","releaseDate":"2025-04-29T19:39:51.9700000+03:00","stream":"Tech"},{"version":"6000.0.48f1","releaseDate":"2025-04-29T17:35:44.5230000+03:00","stream":"Tech"},{"version":"6000.1.0f1","releaseDate":"2025-04-23T19:39:14.5990000+03:00","stream":"Tech"},{"version":"6000.0.47f1","releaseDate":"2025-04-16T06:29:12.0920000+03:00","stream":"Tech"},{"version":"6000.1.0b15","releaseDate":"2025-04-16T06:28:31.9490000+03:00","stream":"Tech"},{"version":"6000.1.0b14","releaseDate":"2025-04-10T21:26:49.7290000+03:00","stream":"Tech"},{"version":"6000.0.46f1","releaseDate":"2025-04-10T05:59:39.0190000+03:00","stream":"Tech"},{"version":"6000.2.0a9","releaseDate":"2025-04-10T21:54:23.9518927+03:00","stream":"Alpha"},{"version":"2022.3.61f1","releaseDate":"2025-04-10T11:38:43.5390000+03:00","stream":"Tech"},{"version":"6000.1.0b13","releaseDate":"2025-04-03T17:02:05.1710000+03:00","stream":"Tech"},{"version":"6000.2.0a8","releaseDate":"2025-04-03T14:42:33.5640000+03:00","stream":"Tech"},{"version":"6000.0.45f1","releaseDate":"2025-04-02T20:28:25.2630000+03:00","stream":"Tech"},{"version":"6000.2.0a7","releaseDate":"2025-04-03T00:29:12.5673679+03:00","stream":"Alpha"},{"version":"6000.0.44f1","releaseDate":"2025-03-28T17:42:02.3830000+02:00","stream":"Tech"},{"version":"6000.1.0b12","releaseDate":"2025-03-28T17:41:15.4510000+02:00","stream":"Tech"},{"version":"6000.0.43f1","releaseDate":"2025-03-18T19:24:00.4850000+02:00","stream":"Tech"},{"version":"6000.1.0b11","releaseDate":"2025-03-13T23:12:53.3749487+02:00","stream":"Beta"},{"version":"6000.0.42f1","releaseDate":"2025-03-11T15:58:50.1000000+02:00","stream":"Tech"},{"version":"2022.3.60f1","releaseDate":"2025-03-12T12:34:20.8620000+02:00","stream":"Tech"},{"version":"6000.1.0b10","releaseDate":"2025-03-09T21:03:55.9859232+02:00","stream":"Beta"},{"version":"6000.2.0a6","releaseDate":"2025-03-05T12:38:42.7350000+02:00","stream":"Tech"},{"version":"6000.0.41f1","releaseDate":"2025-03-03T23:59:40.0490000+02:00","stream":"Tech"},{"version":"6000.1.0b9","releaseDate":"2025-02-26T20:38:37.1430029+02:00","stream":"Beta"},{"version":"2022.3.59f1","releaseDate":"2025-02-26T08:46:36.6070000+02:00","stream":"Tech"},{"version":"6000.0.40f1","releaseDate":"2025-02-25T18:31:05.0170000+02:00","stream":"Tech"},{"version":"6000.1.0b8","releaseDate":"2025-02-22T23:05:50.9086693+02:00","stream":"Beta"},{"version":"6000.2.0a4","releaseDate":"2025-02-19T16:48:33.1920000+02:00","stream":"Tech"},{"version":"6000.0.39f1","releaseDate":"2025-02-19T09:25:26.3610000+02:00","stream":"Tech"},{"version":"6000.1.0b7","releaseDate":"2025-02-19T09:25:03.6480000+02:00","stream":"Tech"},{"version":"2022.3.58f1","releaseDate":"2025-02-12T09:38:47.9230000+02:00","stream":"Tech"},{"version":"6000.1.0b6","releaseDate":"2025-02-11T17:27:26.4890000+02:00","stream":"Tech"},{"version":"6000.0.38f1","releaseDate":"2025-02-11T17:26:47.9610000+02:00","stream":"Tech"},{"version":"6000.1.0b5","releaseDate":"2025-02-04T18:57:33.9900000+02:00","stream":"Tech"},{"version":"6000.0.37f1","releaseDate":"2025-02-04T18:57:15.7990000+02:00","stream":"Tech"},{"version":"6000.2.0a1","releaseDate":"2025-01-29T12:20:51.8410000+02:00","stream":"Tech"},{"version":"2022.3.57f1","releaseDate":"2025-01-29T11:35:20.0040000+02:00","stream":"Tech"},{"version":"6000.1.0b4","releaseDate":"2025-01-28T20:18:53.6020000+02:00","stream":"Tech"},{"version":"6000.0.36f1","releaseDate":"2025-01-28T20:18:05.4190000+02:00","stream":"Tech"},{"version":"6000.0.35f1","releaseDate":"2025-01-22T20:20:41.5350000+02:00","stream":"Tech"},{"version":"6000.1.0b3","releaseDate":"2025-01-22T20:18:42.6480000+02:00","stream":"Tech"},{"version":"6000.1.0b2","releaseDate":"2025-01-16T14:57:55.2590000+02:00","stream":"Tech"},{"version":"6000.0.34f1","releaseDate":"2025-01-15T15:46:28.7450000+02:00","stream":"Tech"},{"version":"2022.3.56f1","releaseDate":"2025-01-15T09:37:15.3380000+02:00","stream":"Tech"},{"version":"6000.0.33f1","releaseDate":"2025-01-08T12:15:44.6480000+02:00","stream":"Tech"},{"version":"6000.1.0b1","releaseDate":"2025-01-07T23:50:17.2740000+02:00","stream":"Tech"},{"version":"6000.0.32f1","releaseDate":"2024-12-19T17:34:00.0720000+02:00","stream":"Tech"},{"version":"6000.1.0a9","releaseDate":"2024-12-18T10:40:10.1340000+02:00","stream":"Tech"},{"version":"2022.3.55f1","releaseDate":"2024-12-17T18:21:09.4100000+02:00","stream":"Tech"},{"version":"6000.1.0a8","releaseDate":"2024-12-15T18:28:59.7430639+02:00","stream":"Alpha"},{"version":"6000.0.31f1","releaseDate":"2024-12-10T22:18:02.5280000+02:00","stream":"Tech"},{"version":"6000.1.0a8","releaseDate":"2024-12-10T22:17:32.5920000+02:00","stream":"Tech"},{"version":"6000.1.0a7","releaseDate":"2024-12-05T08:33:50.3480000+02:00","stream":"Tech"},{"version":"6000.0.30f1","releaseDate":"2024-12-04T16:36:24.5510000+02:00","stream":"Tech"},{"version":"2022.3.54f1","releaseDate":"2024-12-04T16:24:52.8920000+02:00","stream":"Tech"},{"version":"6000.1.0a6","releaseDate":"2024-11-28T13:20:00.3060000+02:00","stream":"Tech"},{"version":"6000.0.29f1","releaseDate":"2024-11-28T11:51:13.4500000+02:00","stream":"Tech"},{"version":"6000.0.28f1","releaseDate":"2024-11-20T17:26:35.0740000+02:00","stream":"Tech"},{"version":"6000.1.0a5","releaseDate":"2024-11-20T06:47:45.8140000+02:00","stream":"Tech"},{"version":"2022.3.53f1","releaseDate":"2024-11-19T18:19:05.9770000+02:00","stream":"Tech"},{"version":"6000.0.27f1","releaseDate":"2024-11-14T09:07:52.6160000+02:00","stream":"Tech"},{"version":"6000.1.0a4","releaseDate":"2024-11-14T08:21:53.5470000+02:00","stream":"Tech"},{"version":"6000.1.0a3","releaseDate":"2024-10-31T02:09:14.4710000+02:00","stream":"Tech"},{"version":"6000.0.26f1","releaseDate":"2024-11-07T05:58:16.8120000+02:00","stream":"Tech"},{"version":"2022.3.52f1","releaseDate":"2024-11-06T08:44:56.0460000+02:00","stream":"Tech"},{"version":"6000.0.25f1","releaseDate":"2024-10-31T02:08:57.1640000+02:00","stream":"LTS"},{"version":"6000.1.0a2","releaseDate":"2024-10-31T01:18:23.1720000+02:00","stream":"Alpha"},{"version":"6000.0.24f1","releaseDate":"2024-10-24T07:50:49.7030000+03:00","stream":"LTS"},{"version":"2022.3.51f1","releaseDate":"2024-10-22T19:55:03.7950000+03:00","stream":"LTS"},{"version":"6000.0.23f1","releaseDate":"2024-10-17T02:50:12.5800000+03:00","stream":"LTS"},{"version":"2021.3.45f1","releaseDate":"2024-10-16T11:39:15.9770000+03:00","stream":"LTS"},{"version":"2022.3.50f1","releaseDate":"2024-10-09T12:22:48.6100000+03:00","stream":"LTS"},{"version":"6000.0.22f1","releaseDate":"2024-10-02T22:04:27.2050000+03:00","stream":"Tech"},{"version":"2022.3.49f1","releaseDate":"2024-10-01T17:05:21.8390000+03:00","stream":"LTS"},{"version":"2022.3.48f1","releaseDate":"2024-09-26T21:38:03.7600000+03:00","stream":"LTS"},{"version":"6000.0.21f1","releaseDate":"2024-09-24T19:11:20.5860000+03:00","stream":"Tech"},{"version":"2021.3.44f1","releaseDate":"2024-09-23T17:46:08.5310000+03:00","stream":"LTS"},{"version":"6000.0.20f1","releaseDate":"2024-09-19T18:22:09.9610000+03:00","stream":"Tech"},{"version":"2022.3.47f1","releaseDate":"2024-09-18T09:44:50.2140000+03:00","stream":"LTS"},{"version":"6000.0.19f1","releaseDate":"2024-09-12T04:29:34.6560000+03:00","stream":"Tech"},{"version":"2022.3.46f1","releaseDate":"2024-09-10T19:41:40.2330000+03:00","stream":"LTS"},{"version":"6000.0.18f1","releaseDate":"2024-09-04T09:08:14.6900000+03:00","stream":"Tech"},{"version":"2022.3.45f1","releaseDate":"2024-09-04T01:44:17.3580000+03:00","stream":"LTS"},{"version":"6000.0.17f1","releaseDate":"2024-08-27T19:52:36.7630000+03:00","stream":"Tech"},{"version":"2022.3.44f1","releaseDate":"2024-08-23T09:10:50.9750000+03:00","stream":"LTS"},{"version":"6000.0.16f1","releaseDate":"2024-08-22T21:12:19.7750000+03:00","stream":"Tech"},{"version":"2021.3.43f1","releaseDate":"2024-08-22T13:10:30.8490000+03:00","stream":"LTS"},{"version":"2022.3.43f1","releaseDate":"2024-08-21T17:11:42.7280000+03:00","stream":"LTS"},{"version":"6000.0.15f1","releaseDate":"2024-08-13T21:03:16.7920000+03:00","stream":"Tech"},{"version":"2022.3.42f1","releaseDate":"2024-08-13T12:26:14.2690000+03:00","stream":"LTS"},{"version":"6000.0.14f1","releaseDate":"2024-08-07T08:59:10.6590000+03:00","stream":"Tech"},{"version":"2022.3.41f1","releaseDate":"2024-08-06T13:07:06.8530000+03:00","stream":"LTS"},{"version":"2021.3.42f1","releaseDate":"2024-08-06T12:30:24.6020000+03:00","stream":"LTS"},{"version":"6000.0.13f1","releaseDate":"2024-07-31T21:30:12.3520000+03:00","stream":"Tech"},{"version":"2022.3.40f1","releaseDate":"2024-07-30T17:14:27.5360000+03:00","stream":"LTS"},{"version":"6000.0.12f1","releaseDate":"2024-07-25T19:59:55.9270000+03:00","stream":"Tech"},{"version":"2022.3.39f1","releaseDate":"2024-07-23T19:04:16.2020000+03:00","stream":"LTS"},{"version":"2021.3.41f1","releaseDate":"2024-07-23T17:54:58.7980000+03:00","stream":"LTS"},{"version":"6000.0.11f1","releaseDate":"2024-07-17T13:16:09.0230000+03:00","stream":"Tech"},{"version":"2022.3.38f1","releaseDate":"2024-07-16T16:52:35.9940000+03:00","stream":"LTS"},{"version":"6000.0.10f1","releaseDate":"2024-07-10T19:45:22.4880000+03:00","stream":"Tech"},{"version":"2022.3.37f1","releaseDate":"2024-07-09T15:05:40.0740000+03:00","stream":"LTS"},{"version":"6000.0.9f1","releaseDate":"2024-07-03T17:22:27.3520000+03:00","stream":"Tech"},{"version":"2022.3.36f1","releaseDate":"2024-07-02T20:23:09.1240000+03:00","stream":"LTS"},{"version":"6000.0.8f1","releaseDate":"2024-06-28T18:36:42.0980000+03:00","stream":"Tech"},{"version":"2022.3.35f1","releaseDate":"2024-06-27T20:06:27.0820000+03:00","stream":"LTS"},{"version":"2021.3.40f1","releaseDate":"2024-06-27T05:15:04.4950000+03:00","stream":"LTS"},{"version":"6000.0.7f1","releaseDate":"2024-06-20T19:04:46.2760000+03:00","stream":"Tech"},{"version":"2022.3.34f1","releaseDate":"2024-06-18T14:27:05.7060000+03:00","stream":"LTS"},{"version":"2022.3.33f1","releaseDate":"2024-06-12T09:22:11.9550000+03:00","stream":"LTS"},{"version":"6000.0.5f1","releaseDate":"2024-06-04T21:54:20.5720000+03:00","stream":"Tech"},{"version":"2022.3.32f1","releaseDate":"2024-06-04T20:45:52.3580000+03:00","stream":"LTS"},{"version":"6000.0.4f1","releaseDate":"2024-05-29T19:49:19.3410000+03:00","stream":"Tech"},{"version":"2022.3.31f1","releaseDate":"2024-05-28T20:19:07.2650000+03:00","stream":"LTS"},{"version":"2021.3.39f1","releaseDate":"2024-05-28T19:13:34.5600000+03:00","stream":"LTS"},{"version":"6000.0.3f1","releaseDate":"2024-05-21T19:15:54.9330000+03:00","stream":"Tech"},{"version":"2022.3.30f1","releaseDate":"2024-05-21T15:05:13.7390000+03:00","stream":"LTS"},{"version":"6000.0.2f1","releaseDate":"2024-05-14T22:54:04.4270000+03:00","stream":"Tech"},{"version":"2022.3.29f1","releaseDate":"2024-05-14T18:20:52.9280000+03:00","stream":"LTS"},{"version":"6000.0.1f1","releaseDate":"2024-05-08T18:11:21.9000000+03:00","stream":"Tech"},{"version":"2022.3.28f1","releaseDate":"2024-05-07T18:20:10.5920000+03:00","stream":"LTS"},{"version":"2021.3.38f1","releaseDate":"2024-05-02T21:42:56.7610000+03:00","stream":"LTS"},{"version":"2022.3.27f1","releaseDate":"2024-04-30T20:28:32.4380000+03:00","stream":"LTS"},{"version":"6000.0.0f1","releaseDate":"2024-04-29T21:37:33.4220000+03:00","stream":"Tech"},{"version":"2023.2.20f1","releaseDate":"2024-04-25T22:29:55.5280000+03:00","stream":"Tech"},{"version":"2022.3.26f1","releaseDate":"2024-04-23T20:47:02.1750000+03:00","stream":"LTS"},{"version":"6000.0.0b16","releaseDate":"2024-04-19T18:47:47.0120000+03:00","stream":"Beta"},{"version":"2023.2.19f1","releaseDate":"2024-04-18T11:21:36.2640000+03:00","stream":"Tech"},{"version":"2022.3.25f1","releaseDate":"2024-04-16T15:56:01.9400000+03:00","stream":"LTS"},{"version":"6000.0.0b15","releaseDate":"2024-04-13T03:46:31.3090000+03:00","stream":"Beta"},{"version":"2023.2.18f1","releaseDate":"2024-04-10T00:11:33.7860000+03:00","stream":"Tech"},{"version":"2022.3.24f1","releaseDate":"2024-04-09T14:12:12.5040000+03:00","stream":"LTS"},{"version":"2023.2.17f1","releaseDate":"2024-04-04T04:45:09.5450000+03:00","stream":"Tech"},{"version":"2022.3.23f1","releaseDate":"2024-04-02T18:24:02.3240000+03:00","stream":"LTS"},{"version":"2021.3.37f1","releaseDate":"2024-04-02T16:12:43.5310000+03:00","stream":"LTS"},{"version":"6000.0.0b13","releaseDate":"2024-03-27T03:28:00.3900000+02:00","stream":"Beta"},{"version":"2023.2.16f1","releaseDate":"2024-03-27T03:03:51.3150000+02:00","stream":"Tech"},{"version":"2023.2.15f1","releaseDate":"2024-03-19T23:07:34.0340000+02:00","stream":"Tech"},{"version":"6000.0.0b12","releaseDate":"2024-03-19T21:32:02.8890000+02:00","stream":"Beta"},{"version":"2022.3.22f1","releaseDate":"2024-03-19T13:06:29.3290000+02:00","stream":"LTS"},{"version":"6000.0.0b11","releaseDate":"2024-03-13T23:20:06.4030000+02:00","stream":"Beta"},{"version":"2023.2.14f1","releaseDate":"2024-03-12T20:27:41.7580000+02:00","stream":"Tech"},{"version":"2023.2.13f1","releaseDate":"2024-03-05T22:41:13.8390000+02:00","stream":"Tech"},{"version":"2023.3.0b10","releaseDate":"2024-03-05T21:08:01.4850000+02:00","stream":"Beta"},{"version":"2021.3.36f1","releaseDate":"2024-03-05T20:42:24.1710000+02:00","stream":"LTS"},{"version":"2022.3.21f1","releaseDate":"2024-03-05T18:04:04.8580000+02:00","stream":"LTS"},{"version":"2023.2.12f1","releaseDate":"2024-02-29T01:06:57.2790000+02:00","stream":"Tech"},{"version":"2023.3.0b9","releaseDate":"2024-02-28T23:32:42.6980000+02:00","stream":"Beta"},{"version":"2023.2.11f1","releaseDate":"2024-02-20T23:17:45.0260000+02:00","stream":"Tech"},{"version":"2023.3.0b8","releaseDate":"2024-02-20T21:40:27.1710000+02:00","stream":"Beta"},{"version":"2023.2.10f1","releaseDate":"2024-02-14T21:39:19.8910000+02:00","stream":"Tech"},{"version":"2022.3.20f1","releaseDate":"2024-02-14T13:25:56.5410000+02:00","stream":"LTS"},{"version":"2023.3.0b7","releaseDate":"2024-02-13T21:59:14.7140000+02:00","stream":"Beta"},{"version":"2023.3.0b6","releaseDate":"2024-02-07T09:24:40.2320000+02:00","stream":"Beta"},{"version":"2023.2.9f1","releaseDate":"2024-02-07T08:56:57.6470000+02:00","stream":"Tech"},{"version":"2021.3.35f1","releaseDate":"2024-02-06T17:40:15.5830000+02:00","stream":"LTS"},{"version":"2022.3.19f1","releaseDate":"2024-01-31T13:56:51.6340000+02:00","stream":"LTS"},{"version":"2023.3.0b5","releaseDate":"2024-01-31T02:28:33.7000000+02:00","stream":"Beta"},{"version":"2023.2.8f1","releaseDate":"2024-01-31T02:02:00.5870000+02:00","stream":"Tech"},{"version":"2023.2.7f1","releaseDate":"2024-01-23T22:43:04.8780000+02:00","stream":"Tech"},{"version":"2023.3.0b4","releaseDate":"2024-01-23T21:12:34.8720000+02:00","stream":"Beta"},{"version":"2022.3.18f1","releaseDate":"2024-01-20T18:00:12.2100000+02:00","stream":"LTS"},{"version":"2023.2.6f1","releaseDate":"2024-01-17T07:22:12.1160000+02:00","stream":"Tech"},{"version":"2023.3.0b3","releaseDate":"2024-01-15T07:07:54.4010000+02:00","stream":"Beta"},{"version":"2023.3.0b2","releaseDate":"2024-01-09T23:10:15.9440000+02:00","stream":"Beta"},{"version":"2021.3.34f1","releaseDate":"2024-01-09T17:33:57.0130000+02:00","stream":"LTS"},{"version":"2022.3.17f1","releaseDate":"2024-01-09T15:24:21.3090000+02:00","stream":"LTS"},{"version":"2023.2.5f1","releaseDate":"2024-01-09T10:49:30.8570000+02:00","stream":"Tech"},{"version":"2023.3.0b1","releaseDate":"2024-01-03T04:06:01.1860000+02:00","stream":"Beta"},{"version":"2023.2.4f1","releaseDate":"2023-12-22T13:24:31.4620000+02:00","stream":"Tech"},{"version":"2022.3.16f1","releaseDate":"2023-12-19T12:05:11.7210000+02:00","stream":"LTS"},{"version":"2023.3.0a18","releaseDate":"2023-12-13T23:40:57.5080000+02:00","stream":"Alpha"},{"version":"2023.2.3f1","releaseDate":"2023-12-06T00:03:42.7620000+02:00","stream":"Tech"},{"version":"2023.3.0a17","releaseDate":"2023-12-05T22:29:50.0710000+02:00","stream":"Alpha"},{"version":"2022.3.15f1","releaseDate":"2023-12-05T18:41:51.6760000+02:00","stream":"LTS"},{"version":"2023.2.2f1","releaseDate":"2023-11-28T22:28:30.9510000+02:00","stream":"Tech"},{"version":"2023.3.0a16","releaseDate":"2023-11-28T20:53:03.1050000+02:00","stream":"Alpha"},{"version":"2021.3.33f1","releaseDate":"2023-11-28T17:21:35.6330000+02:00","stream":"LTS"},{"version":"2023.2.1f1","releaseDate":"2023-11-22T00:09:38.4850000+02:00","stream":"Tech"},{"version":"2022.3.14f1","releaseDate":"2023-11-21T22:07:15.6700000+02:00","stream":"LTS"},{"version":"2023.3.0a15","releaseDate":"2023-11-21T19:46:47.0020000+02:00","stream":"Alpha"},{"version":"2023.2.0f1","releaseDate":"2023-11-15T01:22:44.2930000+02:00","stream":"Tech"},{"version":"2023.3.0a14","releaseDate":"2023-11-14T23:47:34.4680000+02:00","stream":"Alpha"},{"version":"2023.1.20f1","releaseDate":"2023-11-09T13:37:53.0800000+02:00","stream":"Tech"},{"version":"2022.3.13f1","releaseDate":"2023-11-07T19:33:11.8460000+02:00","stream":"LTS"},{"version":"2023.3.0a13","releaseDate":"2023-11-07T15:03:31.6360000+02:00","stream":"Alpha"},{"version":"2023.2.0b17","releaseDate":"2023-11-07T03:15:49.7360000+02:00","stream":"Beta"},{"version":"2021.3.32f1","releaseDate":"2023-11-01T17:47:25.8010000+02:00","stream":"LTS"},{"version":"2023.2.0b16","releaseDate":"2023-11-01T09:07:29.0190000+02:00","stream":"Beta"},{"version":"2023.3.0a12","releaseDate":"2023-10-31T22:54:47.4610000+02:00","stream":"Alpha"},{"version":"2023.1.19f1","releaseDate":"2023-10-31T16:12:27.1350000+02:00","stream":"Tech"},{"version":"2023.3.0a11","releaseDate":"2023-10-26T23:42:38.0140000+03:00","stream":"Alpha"},{"version":"2023.2.0b15","releaseDate":"2023-10-26T22:42:17.8000000+03:00","stream":"Beta"},{"version":"2022.3.12f1","releaseDate":"2023-10-26T17:00:14.6020000+03:00","stream":"LTS"},{"version":"2023.1.18f1","releaseDate":"2023-10-24T19:38:46.5580000+03:00","stream":"Tech"},{"version":"2023.1.17f1","releaseDate":"2023-10-17T16:06:27.2150000+03:00","stream":"Tech"},{"version":"2023.2.0b14","releaseDate":"2023-10-16T19:49:19.2110000+03:00","stream":"Beta"},{"version":"2023.3.0a10","releaseDate":"2023-10-16T18:53:09.4090000+03:00","stream":"Alpha"},{"version":"2023.2.0b13","releaseDate":"2023-10-11T02:43:50.4180000+03:00","stream":"Beta"},{"version":"2022.3.11f1","releaseDate":"2023-10-10T18:27:45.5750000+03:00","stream":"LTS"},{"version":"2023.2.0b12","releaseDate":"2023-10-05T08:35:01.2590000+03:00","stream":"Beta"},{"version":"2023.3.0a8","releaseDate":"2023-10-05T07:37:32.5410000+03:00","stream":"Alpha"},{"version":"2023.1.16f1","releaseDate":"2023-10-03T20:51:07.9240000+03:00","stream":"Tech"},{"version":"2021.3.31f1","releaseDate":"2023-10-03T18:50:59.1880000+03:00","stream":"LTS"},{"version":"2023.2.0b11","releaseDate":"2023-09-27T22:03:28.2830000+03:00","stream":"Beta"},{"version":"2023.1.15f1","releaseDate":"2023-09-26T16:26:57.1220000+03:00","stream":"Tech"},{"version":"2023.3.0a6","releaseDate":"2023-09-21T22:57:30.1720000+03:00","stream":"Alpha"},{"version":"2023.2.0b10","releaseDate":"2023-09-21T03:25:39.0680000+03:00","stream":"Beta"},{"version":"2023.3.0a7","releaseDate":"2023-09-21T02:32:03.4860000+03:00","stream":"Alpha"},{"version":"2023.1.14f1","releaseDate":"2023-09-19T16:45:02.8020000+03:00","stream":"Tech"},{"version":"2022.3.10f1","releaseDate":"2023-09-19T14:09:17.9240000+03:00","stream":"LTS"},{"version":"2023.2.0b9","releaseDate":"2023-09-13T19:47:50.2650000+03:00","stream":"Beta"},{"version":"2023.3.0a5","releaseDate":"2023-09-13T11:39:30.3420000+03:00","stream":"Alpha"},{"version":"2023.1.13f1","releaseDate":"2023-09-12T19:45:26.5060000+03:00","stream":"Tech"},{"version":"2023.2.0b8","releaseDate":"2023-09-07T03:06:06.6190000+03:00","stream":"Beta"},{"version":"2023.3.0a4","releaseDate":"2023-09-07T02:09:51.7610000+03:00","stream":"Alpha"},{"version":"2023.1.12f1","releaseDate":"2023-09-05T16:19:07.6000000+03:00","stream":"Tech"},{"version":"2022.3.9f1","releaseDate":"2023-09-05T14:20:42.5520000+03:00","stream":"LTS"},{"version":"2023.3.0a3","releaseDate":"2023-08-30T02:57:28.4560000+03:00","stream":"Alpha"},{"version":"2023.1.11f1","releaseDate":"2023-08-30T02:34:23.2510000+03:00","stream":"Tech"},{"version":"2023.2.0b7","releaseDate":"2023-08-30T01:05:40.2550000+03:00","stream":"Beta"},{"version":"2021.3.30f1","releaseDate":"2023-08-30T01:00:32.9160000+03:00","stream":"LTS"},{"version":"2023.2.0b6","releaseDate":"2023-08-23T19:37:08.1570000+03:00","stream":"Beta"},{"version":"2022.3.8f1","releaseDate":"2023-08-22T19:08:57.6900000+03:00","stream":"LTS"},{"version":"2023.1.10f1","releaseDate":"2023-08-22T12:04:56.8560000+03:00","stream":"Tech"},{"version":"2023.2.0b5","releaseDate":"2023-08-15T22:46:13.9610000+03:00","stream":"Beta"},{"version":"2023.1.9f1","releaseDate":"2023-08-15T11:51:07.4310000+03:00","stream":"Tech"},{"version":"2023.2.0b4","releaseDate":"2023-08-10T19:28:52.9540000+03:00","stream":"Beta"},{"version":"2023.1.8f1","releaseDate":"2023-08-08T13:46:36.3470000+03:00","stream":"Tech"},{"version":"2022.3.7f1","releaseDate":"2023-08-08T12:39:39.2500000+03:00","stream":"LTS"},{"version":"2023.2.0b3","releaseDate":"2023-08-02T00:20:07.9800000+03:00","stream":"Beta"},{"version":"2023.1.7f1","releaseDate":"2023-08-01T14:52:30.6880000+03:00","stream":"Tech"},{"version":"2022.3.6f1","releaseDate":"2023-07-31T21:44:28.3130000+03:00","stream":"LTS"},{"version":"2023.2.0b2","releaseDate":"2023-07-26T18:36:17.0900000+03:00","stream":"Beta"},{"version":"2023.1.6f1","releaseDate":"2023-07-25T17:07:19.6790000+03:00","stream":"Tech"},{"version":"2021.3.29f1","releaseDate":"2023-07-25T15:13:45.7210000+03:00","stream":"LTS"},{"version":"2023.2.0b1","releaseDate":"2023-07-19T20:48:18.0780000+03:00","stream":"Beta"},{"version":"2023.1.5f1","releaseDate":"2023-07-18T12:47:39.8830000+03:00","stream":"Tech"},{"version":"2022.3.5f1","releaseDate":"2023-07-13T19:12:49.1180000+03:00","stream":"LTS"},{"version":"2023.1.4f1","releaseDate":"2023-07-13T12:22:35.2840000+03:00","stream":"Tech"},{"version":"2023.2.0a22","releaseDate":"2023-07-10T13:49:24.5250000+03:00","stream":"Alpha"},{"version":"2023.1.3f1","releaseDate":"2023-07-05T13:38:33.7830000+03:00","stream":"Tech"},{"version":"2021.3.28f1","releaseDate":"2023-07-04T22:41:02.2050000+03:00","stream":"LTS"},{"version":"2023.1.2f1","releaseDate":"2023-06-26T20:35:53.2890000+03:00","stream":"Tech"},{"version":"2022.3.4f1","releaseDate":"2023-06-26T19:47:18.7050000+03:00","stream":"LTS"},{"version":"2023.2.0a20","releaseDate":"2023-06-21T22:58:23.5890000+03:00","stream":"Alpha"},{"version":"2022.3.3f1","releaseDate":"2023-06-21T18:21:19.0310000+03:00","stream":"LTS"},{"version":"2023.1.1f1","releaseDate":"2023-06-21T17:44:26.6940000+03:00","stream":"Tech"},{"version":"2023.2.0a19","releaseDate":"2023-06-13T20:56:46.9020000+03:00","stream":"Alpha"},{"version":"2022.3.2f1","releaseDate":"2023-06-13T20:35:17.0320000+03:00","stream":"LTS"},{"version":"2023.1.0f1","releaseDate":"2023-06-12T23:09:17.9400000+03:00","stream":"Tech"},{"version":"2021.3.27f1","releaseDate":"2023-06-07T19:35:21.2420000+03:00","stream":"LTS"},{"version":"2023.2.0a18","releaseDate":"2023-06-07T18:05:43.8610000+03:00","stream":"Alpha"},{"version":"2023.1.0b20","releaseDate":"2023-06-07T17:07:58.1050000+03:00","stream":"Beta"},{"version":"2022.3.1f1","releaseDate":"2023-06-07T14:44:18.6430000+03:00","stream":"LTS"},{"version":"2023.1.0b19","releaseDate":"2023-06-01T00:22:40.7160000+03:00","stream":"Beta"},{"version":"2023.2.0a17","releaseDate":"2023-05-31T22:36:57.5850000+03:00","stream":"Alpha"},{"version":"2022.3.0f1","releaseDate":"2023-05-30T13:40:13.8580000+03:00","stream":"LTS"},{"version":"2021.3.26f1","releaseDate":"2023-05-25T14:47:02.1500000+03:00","stream":"LTS"},{"version":"2023.2.0a16","releaseDate":"2023-05-24T23:32:01.9930000+03:00","stream":"Alpha"},{"version":"2023.1.0b18","releaseDate":"2023-05-24T17:12:55.4530000+03:00","stream":"Beta"},{"version":"2022.2.21f1","releaseDate":"2023-05-24T14:15:23.9850000+03:00","stream":"Tech"},{"version":"2022.2.20f1","releaseDate":"2023-05-18T12:58:25.7740000+03:00","stream":"Tech"},{"version":"2023.2.0a15","releaseDate":"2023-05-17T23:05:43.2150000+03:00","stream":"Alpha"},{"version":"2020.3.48f1","releaseDate":"2023-05-17T20:23:52.7840000+03:00","stream":"LTS"},{"version":"2023.1.0b17","releaseDate":"2023-05-17T19:32:57.0910000+03:00","stream":"Beta"},{"version":"2021.3.25f1","releaseDate":"2023-05-11T16:55:39.0570000+03:00","stream":"LTS"},{"version":"2022.2.19f1","releaseDate":"2023-05-11T15:02:51.9390000+03:00","stream":"Tech"},{"version":"2023.1.0b16","releaseDate":"2023-05-11T04:23:47.7980000+03:00","stream":"Beta"},{"version":"2023.2.0a14","releaseDate":"2023-05-10T22:50:11.4440000+03:00","stream":"Alpha"},{"version":"2023.1.0b15","releaseDate":"2023-05-04T18:09:21.8720000+03:00","stream":"Beta"},{"version":"2022.2.18f1","releaseDate":"2023-05-04T17:54:59.9510000+03:00","stream":"Tech"},{"version":"2023.2.0a13","releaseDate":"2023-05-03T22:08:00.7610000+03:00","stream":"Alpha"},{"version":"2022.2.17f1","releaseDate":"2023-04-27T20:55:43.2970000+03:00","stream":"Tech"},{"version":"2021.3.24f1","releaseDate":"2023-04-27T20:16:27.5610000+03:00","stream":"LTS"},{"version":"2023.2.0a12","releaseDate":"2023-04-27T17:39:10.7740000+03:00","stream":"Alpha"},{"version":"2023.1.0b14","releaseDate":"2023-04-26T20:38:33.8280000+03:00","stream":"Beta"},{"version":"2023.2.0a11","releaseDate":"2023-04-20T02:11:25.8420000+03:00","stream":"Alpha"},{"version":"2023.1.0b13","releaseDate":"2023-04-19T18:38:30.4380000+03:00","stream":"Beta"},{"version":"2022.2.16f1","releaseDate":"2023-04-19T17:00:29.7910000+03:00","stream":"Tech"},{"version":"2021.3.23f1","releaseDate":"2023-04-14T06:05:53.4110000+03:00","stream":"LTS"},{"version":"2022.2.15f1","releaseDate":"2023-04-13T16:56:06.9490000+03:00","stream":"Tech"},{"version":"2023.2.0a10","releaseDate":"2023-04-12T20:57:27.3950000+03:00","stream":"Alpha"},{"version":"2023.1.0b12","releaseDate":"2023-04-12T19:58:27.1750000+03:00","stream":"Beta"},{"version":"2022.2.14f1","releaseDate":"2023-04-06T01:20:20.9000000+03:00","stream":"Tech"},{"version":"2023.2.0a9","releaseDate":"2023-04-05T20:17:10.3830000+03:00","stream":"Alpha"},{"version":"2020.3.47f1","releaseDate":"2023-04-05T19:12:43.4140000+03:00","stream":"LTS"},{"version":"2023.1.0b11","releaseDate":"2023-04-05T00:58:08.4100000+03:00","stream":"Beta"},{"version":"2022.2.13f1","releaseDate":"2023-03-31T17:48:28.3060000+03:00","stream":"Tech"},{"version":"2021.3.22f1","releaseDate":"2023-03-29T23:44:06.1310000+03:00","stream":"LTS"},{"version":"2023.1.0b10","releaseDate":"2023-03-29T22:31:31.4270000+03:00","stream":"Beta"},{"version":"2023.2.0a8","releaseDate":"2023-03-29T20:45:36.7180000+03:00","stream":"Alpha"},{"version":"2023.2.0a7","releaseDate":"2023-03-22T23:21:49.2770000+02:00","stream":"Alpha"},{"version":"2022.2.12f1","releaseDate":"2023-03-22T21:38:11.7020000+02:00","stream":"Tech"},{"version":"2023.1.0b9","releaseDate":"2023-03-22T19:34:30.5930000+02:00","stream":"Beta"},{"version":"2023.2.0a6","releaseDate":"2023-03-15T19:05:39.9400000+02:00","stream":"Alpha"},{"version":"2023.1.0b8","releaseDate":"2023-03-15T17:20:07.0490000+02:00","stream":"Beta"},{"version":"2021.3.21f1","releaseDate":"2023-03-15T05:07:29.3970000+02:00","stream":"LTS"},{"version":"2022.2.11f1","releaseDate":"2023-03-15T04:33:37.4390000+02:00","stream":"Tech"},{"version":"2022.2.10f1","releaseDate":"2023-03-09T03:37:14.1860000+02:00","stream":"Tech"},{"version":"2020.3.46f1","releaseDate":"2023-03-08T18:13:10.8010000+02:00","stream":"LTS"},{"version":"2023.1.0b7","releaseDate":"2023-03-07T19:21:08.1180000+02:00","stream":"Beta"},{"version":"2022.2.9f1","releaseDate":"2023-03-03T03:54:20.1620000+02:00","stream":"Tech"},{"version":"2021.3.20f1","releaseDate":"2023-03-03T01:34:21.4780000+02:00","stream":"LTS"},{"version":"2023.1.0b6","releaseDate":"2023-03-02T19:05:36.6970000+02:00","stream":"Beta"},{"version":"2022.2.8f1","releaseDate":"2023-02-23T17:21:52.5810000+02:00","stream":"Tech"},{"version":"2023.1.0b5","releaseDate":"2023-02-22T16:43:31.6520000+02:00","stream":"Beta"},{"version":"2021.3.19f1","releaseDate":"2023-02-17T17:24:45.3250000+02:00","stream":"LTS"},{"version":"2023.1.0b4","releaseDate":"2023-02-16T18:12:27.2890000+02:00","stream":"Beta"},{"version":"2022.2.7f1","releaseDate":"2023-02-15T22:59:18.6940000+02:00","stream":"Tech"},{"version":"2020.3.45f1","releaseDate":"2023-02-14T23:48:56.7970000+02:00","stream":"LTS"},{"version":"2022.2.6f1","releaseDate":"2023-02-10T03:46:54.4290000+02:00","stream":"Tech"},{"version":"2023.1.0b3","releaseDate":"2023-02-08T18:02:45.1480000+02:00","stream":"Beta"},{"version":"2021.3.18f1","releaseDate":"2023-02-01T22:10:11.4750000+02:00","stream":"LTS"},{"version":"2023.1.0b2","releaseDate":"2023-02-01T16:26:56.9800000+02:00","stream":"Beta"},{"version":"2022.2.5f1","releaseDate":"2023-01-31T22:58:08.2060000+02:00","stream":"Tech"},{"version":"2022.2.4f1","releaseDate":"2023-01-27T16:41:48.2250000+02:00","stream":"Tech"},{"version":"2023.1.0b1","releaseDate":"2023-01-24T18:35:43.4020000+02:00","stream":"Beta"},{"version":"2021.3.17f1","releaseDate":"2023-01-24T18:26:13.7420000+02:00","stream":"LTS"},{"version":"2022.2.3f1","releaseDate":"2023-01-23T21:50:52.1750000+02:00","stream":"Tech"},{"version":"2023.1.0a26","releaseDate":"2023-01-18T19:32:21.5630000+02:00","stream":"Alpha"},{"version":"2020.3.44f1","releaseDate":"2023-01-18T19:25:53.1090000+02:00","stream":"LTS"},{"version":"2023.1.0a25","releaseDate":"2023-01-11T21:23:37.6860000+02:00","stream":"Alpha"},{"version":"2022.2.2f1","releaseDate":"2023-01-10T05:21:01.4250000+02:00","stream":"Tech"},{"version":"2023.1.0a24","releaseDate":"2022-12-22T03:56:32.4480000+02:00","stream":"Alpha"},{"version":"2020.3.43f1","releaseDate":"2022-12-16T00:02:25.8850000+02:00","stream":"LTS"},{"version":"2021.3.16f1","releaseDate":"2022-12-15T18:05:52.9180000+02:00","stream":"LTS"},{"version":"2023.1.0a23","releaseDate":"2022-12-14T20:58:53.9770000+02:00","stream":"Alpha"},{"version":"2022.2.1f1","releaseDate":"2022-12-12T17:26:11.2260000+02:00","stream":"Tech"},{"version":"2023.1.0a22","releaseDate":"2022-12-07T23:25:31.9420000+02:00","stream":"Alpha"},{"version":"2022.2.0f1","releaseDate":"2022-12-07T16:29:04.8310000+02:00","stream":"Tech"},{"version":"2022.1.24f1","releaseDate":"2022-12-06T20:33:08.7300000+02:00","stream":"Tech"},{"version":"2021.3.15f1","releaseDate":"2022-12-01T19:20:58.3010000+02:00","stream":"LTS"},{"version":"2023.1.0a21","releaseDate":"2022-11-30T17:35:08.6520000+02:00","stream":"Alpha"},{"version":"2023.1.0a20","releaseDate":"2022-11-24T16:54:00.0950000+02:00","stream":"Alpha"},{"version":"2022.2.0b16","releaseDate":"2022-11-18T17:21:52.7500000+02:00","stream":"Beta"},{"version":"2023.1.0a19","releaseDate":"2022-11-17T23:40:42.6370000+02:00","stream":"Alpha"},{"version":"2021.3.14f1","releaseDate":"2022-11-17T19:28:01.6800000+02:00","stream":"LTS"},{"version":"2020.3.42f1","releaseDate":"2022-11-17T18:42:55.7160000+02:00","stream":"LTS"},{"version":"2022.1.23f1","releaseDate":"2022-11-16T13:07:08.5870000+02:00","stream":"Tech"},{"version":"2022.2.0b15","releaseDate":"2022-11-16T11:42:02.4260000+02:00","stream":"Beta"},{"version":"2023.1.0a18","releaseDate":"2022-11-10T17:10:57.7810000+02:00","stream":"Alpha"},{"version":"2022.1.22f1","releaseDate":"2022-11-09T14:42:48.4520000+02:00","stream":"Tech"},{"version":"2022.2.0b14","releaseDate":"2022-11-07T16:57:36.8080000+02:00","stream":"Beta"},{"version":"2021.3.13f1","releaseDate":"2022-11-04T18:42:23.1680000+02:00","stream":"LTS"},{"version":"2023.1.0a17","releaseDate":"2022-11-04T17:52:07.0070000+02:00","stream":"Alpha"},{"version":"2023.1.0a16","releaseDate":"2022-10-27T18:51:25.6730000+03:00","stream":"Alpha"},{"version":"2022.1.21f1","releaseDate":"2022-10-27T17:14:42.0510000+03:00","stream":"Tech"},{"version":"2022.2.0b13","releaseDate":"2022-10-26T23:13:31.6270000+03:00","stream":"Beta"},{"version":"2021.3.12f1","releaseDate":"2022-10-25T18:16:10.9510000+03:00","stream":"LTS"},{"version":"2023.1.0a15","releaseDate":"2022-10-21T18:12:32.3200000+03:00","stream":"Alpha"},{"version":"2020.3.41f1","releaseDate":"2022-10-21T17:22:52.5630000+03:00","stream":"LTS"},{"version":"2022.2.0b12","releaseDate":"2022-10-20T18:21:30.9490000+03:00","stream":"Beta"},{"version":"2022.2.0b11","releaseDate":"2022-10-17T22:47:44.2460000+03:00","stream":"Beta"},{"version":"2023.1.0a14","releaseDate":"2022-10-13T22:56:48.3590000+03:00","stream":"Alpha"},{"version":"2022.1.20f1","releaseDate":"2022-10-12T14:42:58.6240000+03:00","stream":"Tech"},{"version":"2023.1.0a13","releaseDate":"2022-10-06T22:12:22.6230000+03:00","stream":"Alpha"},{"version":"2022.2.0b10","releaseDate":"2022-10-06T18:22:41.4710000+03:00","stream":"Beta"},{"version":"2022.1.19f1","releaseDate":"2022-10-05T15:57:27.6550000+03:00","stream":"Tech"},{"version":"2022.1.18f1","releaseDate":"2022-09-29T17:37:44.5850000+03:00","stream":"Tech"},{"version":"2021.3.11f1","releaseDate":"2022-09-29T13:18:44.5050000+03:00","stream":"LTS"},{"version":"2022.2.0b9","releaseDate":"2022-09-29T06:03:40.7910000+03:00","stream":"Beta"},{"version":"2023.1.0a12","releaseDate":"2022-09-28T22:55:37.0920000+03:00","stream":"Alpha"},{"version":"2020.3.40f1","releaseDate":"2022-09-27T13:08:51.4880000+03:00","stream":"LTS"},{"version":"2023.1.0a11","releaseDate":"2022-09-21T17:43:10.2830000+03:00","stream":"Alpha"},{"version":"2022.1.17f1","releaseDate":"2022-09-21T14:47:30.1360000+03:00","stream":"Tech"},{"version":"2021.3.10f1","releaseDate":"2022-09-16T18:49:10.5930000+03:00","stream":"LTS"},{"version":"2020.3.39f1","releaseDate":"2022-09-15T00:53:29.6050000+03:00","stream":"LTS"},{"version":"2023.1.0a10","releaseDate":"2022-09-12T21:11:46.9380000+03:00","stream":"Alpha"},{"version":"2022.2.0b8","releaseDate":"2022-09-09T19:13:00.3470000+03:00","stream":"Beta"},{"version":"2022.1.16f1","releaseDate":"2022-09-08T16:08:35.0830000+03:00","stream":"Tech"},{"version":"2023.1.0a9","releaseDate":"2022-09-06T21:57:38.9710000+03:00","stream":"Alpha"},{"version":"2021.3.9f1","releaseDate":"2022-09-01T19:32:11.5790000+03:00","stream":"LTS"},{"version":"2022.2.0b7","releaseDate":"2022-09-01T17:23:07.2070000+03:00","stream":"Beta"},{"version":"2022.1.15f1","releaseDate":"2022-09-01T13:40:40.3950000+03:00","stream":"Tech"},{"version":"2022.2.0b6","releaseDate":"2022-08-26T01:40:10.3100000+03:00","stream":"Beta"},{"version":"2022.2.0b5","releaseDate":"2022-08-22T16:46:29.2740000+03:00","stream":"Beta"},{"version":"2022.1.14f1","releaseDate":"2022-08-22T11:56:08.0450000+03:00","stream":"Tech"},{"version":"2023.1.0a6","releaseDate":"2022-08-18T19:45:55.0300000+03:00","stream":"Alpha"},{"version":"2020.3.38f1","releaseDate":"2022-08-17T16:37:37.9830000+03:00","stream":"LTS"},{"version":"2023.1.0a5","releaseDate":"2022-08-11T19:35:17.2190000+03:00","stream":"Alpha"},{"version":"2022.1.13f1","releaseDate":"2022-08-11T10:43:08.2790000+03:00","stream":"Tech"},{"version":"2021.3.8f1","releaseDate":"2022-08-08T18:26:36.9290000+03:00","stream":"LTS"},{"version":"2022.1.12f1","releaseDate":"2022-08-05T13:30:50.9200000+03:00","stream":"Tech"},{"version":"2022.2.0b4","releaseDate":"2022-08-05T05:14:17.7170000+03:00","stream":"Beta"},{"version":"2022.2.0b3","releaseDate":"2022-07-28T20:18:44.5910000+03:00","stream":"Beta"},{"version":"2021.3.7f1","releaseDate":"2022-07-28T12:50:46.7670000+03:00","stream":"LTS"},{"version":"2022.1.11f1","releaseDate":"2022-07-27T15:20:14.4870000+03:00","stream":"Tech"},{"version":"2023.1.0a4","releaseDate":"2022-07-26T19:55:38.5590000+03:00","stream":"Alpha"},{"version":"2022.2.0b2","releaseDate":"2022-07-22T16:54:37.0230000+03:00","stream":"Beta"},{"version":"2020.3.37f1","releaseDate":"2022-07-21T12:53:36.2240000+03:00","stream":"LTS"},{"version":"2022.1.10f1","releaseDate":"2022-07-20T14:35:58.8890000+03:00","stream":"Tech"},{"version":"2022.1.9f1","releaseDate":"2022-07-14T14:39:28.8090000+03:00","stream":"Tech"},{"version":"2022.2.0b1","releaseDate":"2022-07-13T02:24:29.9080000+03:00","stream":"Beta"},{"version":"2021.3.6f1","releaseDate":"2022-07-08T12:48:54.7110000+03:00","stream":"LTS"},{"version":"2022.1.8f1","releaseDate":"2022-07-07T18:05:53.6420000+03:00","stream":"Tech"},{"version":"2022.2.0a18","releaseDate":"2022-07-04T19:35:28.1410000+03:00","stream":"Alpha"},{"version":"2022.1.7f1","releaseDate":"2022-06-29T15:39:55.5870000+03:00","stream":"Tech"},{"version":"2022.1.6f1","releaseDate":"2022-06-23T14:07:14.8560000+03:00","stream":"Tech"},{"version":"2021.3.5f1","releaseDate":"2022-06-22T20:32:31.1470000+03:00","stream":"LTS"},{"version":"2019.4.40f1","releaseDate":"2022-06-16T23:44:08.7430000+03:00","stream":"LTS"},{"version":"2022.2.0a17","releaseDate":"2022-06-16T22:20:11.1080000+03:00","stream":"Alpha"},{"version":"2020.3.36f1","releaseDate":"2022-06-16T18:04:11.6550000+03:00","stream":"LTS"},{"version":"2022.1.5f1","releaseDate":"2022-06-15T19:47:55.4610000+03:00","stream":"Tech"},{"version":"2022.2.0a16","releaseDate":"2022-06-08T23:20:40.3790000+03:00","stream":"Alpha"},{"version":"2022.1.4f1","releaseDate":"2022-06-08T18:53:22.1510000+03:00","stream":"Tech"},{"version":"2022.1.3f1","releaseDate":"2022-05-31T19:42:45.9740000+03:00","stream":"Tech"},{"version":"2021.3.4f1","releaseDate":"2022-05-31T18:14:15.5590000+03:00","stream":"LTS"},{"version":"2020.3.35f1","releaseDate":"2022-05-27T02:30:47.9620000+03:00","stream":"LTS"},{"version":"2022.1.2f1","releaseDate":"2022-05-25T17:32:41.9670000+03:00","stream":"Tech"},{"version":"2021.3.3f1","releaseDate":"2022-05-19T13:01:53.9560000+03:00","stream":"LTS"},{"version":"2022.1.1f1","releaseDate":"2022-05-18T23:43:29.7780000+03:00","stream":"Tech"},{"version":"2022.2.0a13","releaseDate":"2022-05-13T01:47:12.2000000+03:00","stream":"Alpha"},{"version":"2019.4.39f1","releaseDate":"2022-05-12T01:31:15.5880000+03:00","stream":"LTS"},{"version":"2022.1.0f1","releaseDate":"2022-05-09T19:53:20.7220000+03:00","stream":"Tech"},{"version":"2022.2.0a12","releaseDate":"2022-05-05T15:15:24.2770000+03:00","stream":"Alpha"},{"version":"2021.3.2f1","releaseDate":"2022-05-05T13:42:14.7170000+03:00","stream":"LTS"},{"version":"2020.3.34f1","releaseDate":"2022-05-04T17:33:40.9940000+03:00","stream":"LTS"},{"version":"2022.2.0a11","releaseDate":"2022-04-25T17:28:41.0660000+03:00","stream":"Alpha"},{"version":"2021.3.1f1","releaseDate":"2022-04-21T21:19:43.4030000+03:00","stream":"LTS"},{"version":"2022.2.0a10","releaseDate":"2022-04-14T16:22:59.4940000+03:00","stream":"Alpha"},{"version":"2019.4.38f1","releaseDate":"2022-04-13T18:24:10.4100000+03:00","stream":"LTS"},{"version":"2022.1.0b16","releaseDate":"2022-04-12T21:11:34.7660000+03:00","stream":"Beta"},{"version":"2021.3.0f1","releaseDate":"2022-04-11T21:46:28.6540000+03:00","stream":"LTS"},{"version":"2020.3.33f1","releaseDate":"2022-04-07T16:58:00.7880000+03:00","stream":"LTS"},{"version":"2022.1.0b15","releaseDate":"2022-04-07T10:56:08.2280000+03:00","stream":"Beta"},{"version":"2021.2.19f1","releaseDate":"2022-04-05T20:15:08.0160000+03:00","stream":"Tech"},{"version":"2022.2.0a9","releaseDate":"2022-04-01T13:23:18.7140000+03:00","stream":"Alpha"},{"version":"2021.2.18f1","releaseDate":"2022-04-01T10:28:41.0490000+03:00","stream":"Tech"},{"version":"2022.1.0b14","releaseDate":"2022-03-30T12:56:12.7250000+03:00","stream":"Beta"},{"version":"2021.2.17f1","releaseDate":"2022-03-24T23:31:28.9800000+02:00","stream":"Tech"},{"version":"2020.3.32f1","releaseDate":"2022-03-23T17:39:23.9120000+02:00","stream":"LTS"},{"version":"2019.4.37f1","releaseDate":"2022-03-22T20:47:13.8460000+02:00","stream":"LTS"},{"version":"2022.1.0b13","releaseDate":"2022-03-22T19:02:39.2100000+02:00","stream":"Beta"},{"version":"2020.3.31f1","releaseDate":"2022-03-17T20:06:28.2220000+02:00","stream":"LTS"},{"version":"2021.2.16f1","releaseDate":"2022-03-17T19:27:16.4280000+02:00","stream":"Tech"},{"version":"2022.1.0b12","releaseDate":"2022-03-17T17:03:20.4980000+02:00","stream":"Beta"},{"version":"2021.2.15f1","releaseDate":"2022-03-11T19:03:49.6680000+02:00","stream":"Tech"},{"version":"2022.1.0b11","releaseDate":"2022-03-09T09:19:01.6160000+02:00","stream":"Beta"},{"version":"2021.2.14f1","releaseDate":"2022-03-03T19:20:56.9220000+02:00","stream":"Tech"},{"version":"2022.1.0b10","releaseDate":"2022-03-02T14:36:18.0430000+02:00","stream":"Beta"},{"version":"2020.3.30f1","releaseDate":"2022-02-24T19:26:14.6130000+02:00","stream":"LTS"},{"version":"2021.2.13f1","releaseDate":"2022-02-23T21:42:33.3400000+02:00","stream":"Tech"},{"version":"2022.1.0b9","releaseDate":"2022-02-23T15:13:56.5370000+02:00","stream":"Beta"},{"version":"2021.2.12f1","releaseDate":"2022-02-17T22:43:34.6210000+02:00","stream":"Tech"},{"version":"2019.4.36f1","releaseDate":"2022-02-17T18:41:01.3940000+02:00","stream":"LTS"},{"version":"2020.3.29f1","releaseDate":"2022-02-17T17:59:07.5210000+02:00","stream":"LTS"},{"version":"2022.1.0b8","releaseDate":"2022-02-16T13:35:02.2220000+02:00","stream":"Beta"},{"version":"2021.2.11f1","releaseDate":"2022-02-10T19:24:35.6120000+02:00","stream":"Tech"},{"version":"2020.3.28f1","releaseDate":"2022-02-09T23:48:58.6840000+02:00","stream":"LTS"},{"version":"2022.1.0b7","releaseDate":"2022-02-08T13:39:17.9160000+02:00","stream":"Beta"},{"version":"2022.1.0b6","releaseDate":"2022-02-02T10:30:32.4120000+02:00","stream":"Beta"},{"version":"2021.2.10f1","releaseDate":"2022-02-02T00:07:17.8640000+02:00","stream":"Tech"},{"version":"2020.3.27f1","releaseDate":"2022-02-01T01:06:41.6490000+02:00","stream":"LTS"},{"version":"2019.4.35f1","releaseDate":"2022-01-28T16:26:18.8910000+02:00","stream":"LTS"},{"version":"2022.1.0b5","releaseDate":"2022-01-27T19:44:54.5310000+02:00","stream":"Beta"},{"version":"2021.2.9f1","releaseDate":"2022-01-27T19:09:54.1410000+02:00","stream":"Tech"},{"version":"2022.1.0b4","releaseDate":"2022-01-19T13:50:18.8200000+02:00","stream":"Beta"},{"version":"2020.3.26f1","releaseDate":"2022-01-13T22:29:30.1460000+02:00","stream":"LTS"},{"version":"2021.2.8f1","releaseDate":"2022-01-13T18:36:04.5530000+02:00","stream":"Tech"},{"version":"2022.1.0b3","releaseDate":"2022-01-12T14:14:48.4210000+02:00","stream":"Beta"},{"version":"2020.3.25f1","releaseDate":"2021-12-16T20:21:47.6100000+02:00","stream":"LTS"},{"version":"2021.2.7f1","releaseDate":"2021-12-16T19:44:39.8370000+02:00","stream":"Tech"},{"version":"2019.4.34f1","releaseDate":"2021-12-15T19:52:49.4210000+02:00","stream":"LTS"},{"version":"2022.1.0b2","releaseDate":"2021-12-14T20:43:17.2160000+02:00","stream":"Beta"},{"version":"2021.2.6f1","releaseDate":"2021-12-10T18:38:19.6320000+02:00","stream":"Tech"},{"version":"2022.1.0b1","releaseDate":"2021-12-08T21:49:54.8000000+02:00","stream":"Beta"},{"version":"2020.3.24f1","releaseDate":"2021-12-02T22:30:57.1110000+02:00","stream":"LTS"},{"version":"2021.2.5f1","releaseDate":"2021-12-01T18:54:28.0590000+02:00","stream":"Tech"},{"version":"2022.1.0a16","releaseDate":"2021-11-29T14:23:09.8130000+02:00","stream":"Alpha"},{"version":"2019.4.33f1","releaseDate":"2021-11-25T20:53:15.4390000+02:00","stream":"LTS"},{"version":"2021.2.4f1","releaseDate":"2021-11-25T15:45:23.5490000+02:00","stream":"Tech"},{"version":"2020.3.23f1","releaseDate":"2021-11-19T22:08:31.1420000+02:00","stream":"LTS"},{"version":"2022.1.0a15","releaseDate":"2021-11-18T14:23:33.3050000+02:00","stream":"Alpha"},{"version":"2021.2.3f1","releaseDate":"2021-11-18T13:49:58.4170000+02:00","stream":"Tech"},{"version":"2021.2.2f1","releaseDate":"2021-11-11T13:54:38.2890000+02:00","stream":"Tech"},{"version":"2020.3.22f1","releaseDate":"2021-11-05T21:35:33.6640000+02:00","stream":"LTS"},{"version":"2021.1.28f1","releaseDate":"2021-11-04T21:43:00.6120000+02:00","stream":"Tech"},{"version":"2021.2.1f1","releaseDate":"2021-11-04T14:14:00.1790000+02:00","stream":"Tech"},{"version":"2019.4.32f1","releaseDate":"2021-10-28T19:49:13.4530000+03:00","stream":"LTS"},{"version":"2022.1.0a13","releaseDate":"2021-10-28T17:30:14.4590000+03:00","stream":"Alpha"},{"version":"2021.1.27f1","releaseDate":"2021-10-25T22:24:00.3960000+03:00","stream":"Tech"},{"version":"2021.2.0f1","releaseDate":"2021-10-25T17:52:13.0340000+03:00","stream":"Tech"},{"version":"2020.3.21f1","releaseDate":"2021-10-21T19:33:29.3350000+03:00","stream":"LTS"},{"version":"2021.1.26f1","releaseDate":"2021-10-20T18:42:50.4910000+03:00","stream":"Tech"},{"version":"2021.1.25f1","releaseDate":"2021-10-15T00:35:29.3880000+03:00","stream":"Tech"},{"version":"2022.1.0a12","releaseDate":"2021-10-13T22:34:46.2550000+03:00","stream":"Alpha"},{"version":"2021.2.0b16","releaseDate":"2021-10-12T19:42:06.0710000+03:00","stream":"Beta"},{"version":"2020.3.20f1","releaseDate":"2021-10-08T19:38:35.5420000+03:00","stream":"LTS"},{"version":"2021.1.24f1","releaseDate":"2021-10-06T21:29:11.4340000+03:00","stream":"Tech"},{"version":"2022.1.0a11","releaseDate":"2021-10-06T18:14:18.1140000+03:00","stream":"Alpha"},{"version":"2021.2.0b15","releaseDate":"2021-10-06T12:13:13.6910000+03:00","stream":"Beta"},{"version":"2022.1.0a10","releaseDate":"2021-10-01T22:35:39.3300000+03:00","stream":"Alpha"},{"version":"2021.2.0b14","releaseDate":"2021-10-01T14:27:08.4200000+03:00","stream":"Beta"},{"version":"2021.1.23f1","releaseDate":"2021-09-30T20:01:27.1780000+03:00","stream":"Tech"},{"version":"2019.4.31f1","releaseDate":"2021-09-30T19:11:12.7000000+03:00","stream":"LTS"},{"version":"2022.1.0a9","releaseDate":"2021-09-23T19:24:52.9250000+03:00","stream":"Alpha"},{"version":"2020.3.19f1","releaseDate":"2021-09-23T00:58:37.4230000+03:00","stream":"LTS"},{"version":"2021.2.0b13","releaseDate":"2021-09-22T16:58:46.5710000+03:00","stream":"Beta"},{"version":"2021.1.22f1","releaseDate":"2021-09-21T03:25:04.5570000+03:00","stream":"Tech"},{"version":"2021.2.0b12","releaseDate":"2021-09-16T14:41:11.3370000+03:00","stream":"Beta"},{"version":"2022.1.0a8","releaseDate":"2021-09-15T17:02:16.5010000+03:00","stream":"Alpha"},{"version":"2021.1.21f1","releaseDate":"2021-09-15T00:44:40.4000000+03:00","stream":"Tech"},{"version":"2020.3.18f1","releaseDate":"2021-09-09T12:35:05.2550000+03:00","stream":"LTS"},{"version":"2021.1.20f1","releaseDate":"2021-09-08T16:15:22.7130000+03:00","stream":"Tech"},{"version":"2021.2.0b11","releaseDate":"2021-09-07T14:45:52.4140000+03:00","stream":"Beta"},{"version":"2022.1.0a7","releaseDate":"2021-09-06T14:16:46.3500000+03:00","stream":"Alpha"},{"version":"2021.2.0b10","releaseDate":"2021-09-04T04:54:50.1580000+03:00","stream":"Beta"},{"version":"2019.4.30f1","releaseDate":"2021-09-04T01:17:29.3740000+03:00","stream":"LTS"},{"version":"2021.1.19f1","releaseDate":"2021-09-01T13:51:04.9530000+03:00","stream":"Tech"},{"version":"2020.3.17f1","releaseDate":"2021-08-25T21:28:14.2230000+03:00","stream":"LTS"},{"version":"2021.1.18f1","releaseDate":"2021-08-25T20:26:42.2380000+03:00","stream":"Tech"},{"version":"2021.2.0b9","releaseDate":"2021-08-25T14:31:02.2950000+03:00","stream":"Beta"},{"version":"2021.2.0b8","releaseDate":"2021-08-19T12:59:27.4650000+03:00","stream":"Beta"},{"version":"2021.1.17f1","releaseDate":"2021-08-13T21:37:59.3900000+03:00","stream":"Tech"},{"version":"2020.3.16f1","releaseDate":"2021-08-12T18:55:22.6880000+03:00","stream":"LTS"},{"version":"2021.2.0b7","releaseDate":"2021-08-10T13:33:56.9150000+03:00","stream":"Beta"},{"version":"2021.2.0b6","releaseDate":"2021-08-04T16:24:08.9160000+03:00","stream":"Beta"},{"version":"2021.2.0b5","releaseDate":"2021-08-02T18:15:23.1620000+03:00","stream":"Beta"},{"version":"2021.1.16f1","releaseDate":"2021-08-02T17:27:00.4890000+03:00","stream":"Tech"},{"version":"2020.3.15f2","releaseDate":"2021-07-30T19:23:30.2390000+03:00","stream":"LTS"},{"version":"2019.4.29f1","releaseDate":"2021-07-30T18:19:33.1520000+03:00","stream":"LTS"},{"version":"2021.2.0b4","releaseDate":"2021-07-15T13:53:43.7390000+03:00","stream":"Beta"},{"version":"2021.1.15f1","releaseDate":"2021-07-14T14:13:58.1820000+03:00","stream":"Tech"},{"version":"2020.3.14f1","releaseDate":"2021-07-13T19:58:10.4910000+03:00","stream":"LTS"},{"version":"2021.2.0b3","releaseDate":"2021-07-08T13:47:42.2000000+03:00","stream":"Beta"},{"version":"2021.1.14f1","releaseDate":"2021-07-07T04:08:43.8360000+03:00","stream":"Tech"},{"version":"2021.2.0b2","releaseDate":"2021-07-02T16:15:04.4120000+03:00","stream":"Beta"},{"version":"2020.3.13f1","releaseDate":"2021-06-30T21:40:12.8800000+03:00","stream":"LTS"},{"version":"2021.1.13f1","releaseDate":"2021-06-30T08:59:29.1870000+03:00","stream":"Tech"},{"version":"2021.2.0b1","releaseDate":"2021-06-18T22:27:35.5390000+03:00","stream":"Beta"},{"version":"2018.4.36f1","releaseDate":"2021-06-17T19:13:54.0080000+03:00","stream":"LTS"},{"version":"2021.1.12f1","releaseDate":"2021-06-17T18:00:50.5720000+03:00","stream":"Tech"},{"version":"2020.3.12f1","releaseDate":"2021-06-15T21:58:12.2770000+03:00","stream":"LTS"},{"version":"2021.2.0a21","releaseDate":"2021-06-15T19:37:53.0380000+03:00","stream":"Alpha"},{"version":"2021.1.11f1","releaseDate":"2021-06-10T13:04:24.2960000+03:00","stream":"Tech"},{"version":"2021.2.0a20","releaseDate":"2021-06-09T20:17:01.4260000+03:00","stream":"Alpha"},{"version":"2019.4.28f1","releaseDate":"2021-06-03T20:50:56.4390000+03:00","stream":"LTS"},{"version":"2021.1.10f1","releaseDate":"2021-06-03T19:53:09.2760000+03:00","stream":"Tech"},{"version":"2021.2.0a19","releaseDate":"2021-06-03T18:19:41.9870000+03:00","stream":"Alpha"},{"version":"2020.3.11f1","releaseDate":"2021-06-01T20:44:03.0610000+03:00","stream":"LTS"},{"version":"2021.1.9f1","releaseDate":"2021-05-28T15:13:35.9700000+03:00","stream":"Tech"},{"version":"2020.3.10f1","releaseDate":"2021-05-26T21:08:15.2460000+03:00","stream":"LTS"},{"version":"2019.4.27f1","releaseDate":"2021-05-20T16:45:43.0950000+03:00","stream":"LTS"},{"version":"2020.3.9f1","releaseDate":"2021-05-19T20:45:38.0840000+03:00","stream":"LTS"},{"version":"2021.1.7f1","releaseDate":"2021-05-13T17:00:02.5350000+03:00","stream":"Tech"},{"version":"2020.3.8f1","releaseDate":"2021-05-12T23:50:34.7750000+03:00","stream":"LTS"},{"version":"2021.2.0a17","releaseDate":"2021-05-12T21:15:13.4370000+03:00","stream":"Alpha"},{"version":"2018.4.35f1","releaseDate":"2021-05-12T18:16:04.9960000+03:00","stream":"LTS"},{"version":"2021.1.6f1","releaseDate":"2021-05-06T09:42:44.3860000+03:00","stream":"Tech"},{"version":"2019.4.26f1","releaseDate":"2021-05-05T21:28:43.0280000+03:00","stream":"LTS"},{"version":"2020.3.7f1","releaseDate":"2021-05-05T20:05:58.3680000+03:00","stream":"LTS"},{"version":"2021.2.0a16","releaseDate":"2021-05-05T18:00:27.2340000+03:00","stream":"Alpha"},{"version":"2020.3.6f1","releaseDate":"2021-04-28T21:33:45.0410000+03:00","stream":"LTS"},{"version":"2021.2.0a15","releaseDate":"2021-04-28T19:51:06.5220000+03:00","stream":"Alpha"},{"version":"2021.1.5f1","releaseDate":"2021-04-28T14:57:22.3140000+03:00","stream":"Tech"},{"version":"2019.4.25f1","releaseDate":"2021-04-22T21:56:19.4680000+03:00","stream":"LTS"},{"version":"2021.1.4f1","releaseDate":"2021-04-22T11:14:16.9190000+03:00","stream":"Tech"},{"version":"2021.2.0a14","releaseDate":"2021-04-21T19:58:34.0620000+03:00","stream":"Alpha"},{"version":"2020.3.5f1","releaseDate":"2021-04-21T18:58:44.8310000+03:00","stream":"LTS"},{"version":"2018.4.34f1","releaseDate":"2021-04-15T13:28:39.0470000+03:00","stream":"LTS"},{"version":"2021.2.0a13","releaseDate":"2021-04-14T19:07:25.9350000+03:00","stream":"Alpha"},{"version":"2020.3.4f1","releaseDate":"2021-04-13T20:59:16.5940000+03:00","stream":"LTS"},{"version":"2021.1.3f1","releaseDate":"2021-04-13T14:23:53.3800000+03:00","stream":"Tech"},{"version":"2019.4.24f1","releaseDate":"2021-04-09T02:33:06.9090000+03:00","stream":"LTS"},{"version":"2020.3.3f1","releaseDate":"2021-04-07T19:37:40.6130000+03:00","stream":"LTS"},{"version":"2021.1.2f1","releaseDate":"2021-04-07T17:35:36.8280000+03:00","stream":"Tech"},{"version":"2021.2.0a12","releaseDate":"2021-04-06T19:40:54.7470000+03:00","stream":"Alpha"},{"version":"2021.2.0a11","releaseDate":"2021-03-31T20:48:42.9770000+03:00","stream":"Alpha"},{"version":"2021.1.1f1","releaseDate":"2021-03-31T17:04:08.0250000+03:00","stream":"Tech"},{"version":"2020.3.2f1","releaseDate":"2021-03-29T21:24:30.6840000+03:00","stream":"LTS"},{"version":"2021.2.0a10","releaseDate":"2021-03-24T22:41:29.4570000+02:00","stream":"Alpha"},{"version":"2018.4.33f1","releaseDate":"2021-03-24T19:48:21.9510000+02:00","stream":"LTS"},{"version":"2019.4.23f1","releaseDate":"2021-03-24T18:44:56.5610000+02:00","stream":"LTS"},{"version":"2020.3.1f1","releaseDate":"2021-03-22T20:05:51.7280000+02:00","stream":"LTS"},{"version":"2021.1.0f1","releaseDate":"2021-03-22T13:13:57.9050000+02:00","stream":"Tech"},{"version":"2021.2.0a9","releaseDate":"2021-03-17T20:02:06.9710000+02:00","stream":"Alpha"},{"version":"2021.1.0b12","releaseDate":"2021-03-17T13:21:39.6870000+02:00","stream":"Beta"},{"version":"2020.3.0f1","releaseDate":"2021-03-11T01:09:00.0190000+02:00","stream":"LTS"},{"version":"2021.1.0b11","releaseDate":"2021-03-10T20:19:22.0910000+02:00","stream":"Beta"},{"version":"2019.4.22f1","releaseDate":"2021-03-10T18:07:28.3010000+02:00","stream":"LTS"},{"version":"2021.2.0a8","releaseDate":"2021-03-09T17:39:33.3380000+02:00","stream":"Alpha"},{"version":"2021.1.0b10","releaseDate":"2021-03-04T19:23:44.8170000+02:00","stream":"Beta"},{"version":"2020.2.7f1","releaseDate":"2021-03-04T18:43:17.8170000+02:00","stream":"LTS"},{"version":"2021.2.0a6","releaseDate":"2021-02-24T20:59:57.2080000+02:00","stream":"Alpha"},{"version":"2021.1.0b8","releaseDate":"2021-02-24T19:47:25.5060000+02:00","stream":"Beta"},{"version":"2019.4.21f1","releaseDate":"2021-02-24T19:14:33.4900000+02:00","stream":"LTS"},{"version":"2020.2.6f1","releaseDate":"2021-02-24T02:10:19.4960000+02:00","stream":"LTS"},{"version":"2020.2.5f1","releaseDate":"2021-02-19T01:17:13.0170000+02:00","stream":"LTS"},{"version":"2018.4.32f1","releaseDate":"2021-02-18T14:18:22.1450000+02:00","stream":"LTS"},{"version":"2021.2.0a5","releaseDate":"2021-02-17T18:45:52.4040000+02:00","stream":"Alpha"},{"version":"2021.1.0b7","releaseDate":"2021-02-17T17:33:40.3340000+02:00","stream":"Beta"},{"version":"2020.2.4f1","releaseDate":"2021-02-12T22:14:18.5720000+02:00","stream":"LTS"},{"version":"2019.4.20f1","releaseDate":"2021-02-10T19:06:33.6840000+02:00","stream":"LTS"},{"version":"2021.1.0b6","releaseDate":"2021-02-10T17:26:16.3810000+02:00","stream":"Beta"},{"version":"2020.2.3f1","releaseDate":"2021-02-03T22:51:44.0220000+02:00","stream":"LTS"},{"version":"2021.1.0b5","releaseDate":"2021-02-03T13:02:09.2570000+02:00","stream":"Beta"},{"version":"2019.4.19f1","releaseDate":"2021-02-01T19:49:54.7260000+02:00","stream":"LTS"},{"version":"2021.1.0b4","releaseDate":"2021-01-27T14:14:30.6700000+02:00","stream":"Beta"},{"version":"2018.4.31f1","releaseDate":"2021-01-22T16:08:18.4010000+02:00","stream":"LTS"},{"version":"2020.2.2f1","releaseDate":"2021-01-21T22:41:55.7470000+02:00","stream":"LTS"},{"version":"2021.1.0b3","releaseDate":"2021-01-20T18:49:58.0860000+02:00","stream":"Beta"},{"version":"2021.1.0b2","releaseDate":"2021-01-13T17:48:52.7690000+02:00","stream":"Beta"},{"version":"2019.4.18f1","releaseDate":"2021-01-13T17:13:41.1610000+02:00","stream":"LTS"},{"version":"2020.2.1f1","releaseDate":"2020-12-23T19:32:56.7940000+02:00","stream":"LTS"},{"version":"2021.1.0b1","releaseDate":"2020-12-23T17:53:59.2550000+02:00","stream":"Beta"},{"version":"2019.4.17f1","releaseDate":"2020-12-22T17:05:02.0370000+02:00","stream":"LTS"},{"version":"2020.2.0f1","releaseDate":"2020-12-14T22:24:28.6530000+02:00","stream":"LTS"},{"version":"2021.1.0a9","releaseDate":"2020-12-11T11:34:06.1400000+02:00","stream":"Alpha"},{"version":"2020.1.17f1","releaseDate":"2020-12-09T13:39:40.0550000+02:00","stream":"LTS"},{"version":"2020.2.0b14","releaseDate":"2020-12-02T19:45:40.0260000+02:00","stream":"Beta"},{"version":"2021.1.0a8","releaseDate":"2020-12-02T19:15:19.2560000+02:00","stream":"Alpha"},{"version":"2019.4.16f1","releaseDate":"2020-12-02T18:12:41.3440000+02:00","stream":"LTS"},{"version":"2018.4.30f1","releaseDate":"2020-12-01T22:09:28.0830000+02:00","stream":"LTS"},{"version":"2020.1.16f1","releaseDate":"2020-12-01T21:04:30.3740000+02:00","stream":"LTS"},{"version":"2021.1.0a7","releaseDate":"2020-11-25T20:59:24.1580000+02:00","stream":"Alpha"},{"version":"2020.2.0b13","releaseDate":"2020-11-25T19:57:21.5630000+02:00","stream":"Beta"},{"version":"2020.1.15f1","releaseDate":"2020-11-25T13:32:56.2470000+02:00","stream":"LTS"},{"version":"2020.2.0b12","releaseDate":"2020-11-19T20:01:22.4320000+02:00","stream":"Beta"},{"version":"2020.1.14f1","releaseDate":"2020-11-18T21:08:42.0520000+02:00","stream":"LTS"},{"version":"2019.4.15f1","releaseDate":"2020-11-18T20:02:15.0550000+02:00","stream":"LTS"},{"version":"2021.1.0a5","releaseDate":"2020-11-16T10:29:13.8620000+02:00","stream":"Alpha"},{"version":"2021.1.0a6","releaseDate":"2020-11-12T15:53:12.8280000+02:00","stream":"Alpha"},{"version":"2020.2.0b11","releaseDate":"2020-11-11T21:36:00.6590000+02:00","stream":"Beta"},{"version":"2018.4.29f1","releaseDate":"2020-11-11T12:56:28.8090000+02:00","stream":"LTS"},{"version":"2020.1.13f1","releaseDate":"2020-11-11T11:59:32.6030000+02:00","stream":"LTS"},{"version":"2019.4.14f1","releaseDate":"2020-11-05T19:37:50.1760000+02:00","stream":"LTS"},{"version":"2020.2.0b10","releaseDate":"2020-11-04T19:18:58.3930000+02:00","stream":"Beta"},{"version":"2021.1.0a4","releaseDate":"2020-11-04T13:36:41.3270000+02:00","stream":"Alpha"},{"version":"2020.1.12f1","releaseDate":"2020-11-04T13:19:05.1340000+02:00","stream":"LTS"},{"version":"2020.2.0b9","releaseDate":"2020-10-28T18:33:57.6480000+02:00","stream":"Beta"},{"version":"2020.1.11f1","releaseDate":"2020-10-28T13:19:45.3420000+02:00","stream":"LTS"},{"version":"2020.2.0b8","releaseDate":"2020-10-22T18:53:30.1610000+03:00","stream":"Beta"},{"version":"2021.1.0a2","releaseDate":"2020-10-22T13:37:27.7270000+03:00","stream":"Alpha"},{"version":"2019.4.13f1","releaseDate":"2020-10-21T17:49:14.4000000+03:00","stream":"LTS"},{"version":"2020.1.10f1","releaseDate":"2020-10-21T12:46:16.1030000+03:00","stream":"LTS"},{"version":"2020.2.0b7","releaseDate":"2020-10-15T23:12:00.7850000+03:00","stream":"Beta"},{"version":"2020.1.9f1","releaseDate":"2020-10-13T20:07:55.6420000+03:00","stream":"LTS"},{"version":"2020.2.0b6","releaseDate":"2020-10-08T20:11:41.8220000+03:00","stream":"Beta"},{"version":"2019.4.12f1","releaseDate":"2020-10-07T19:30:31.4100000+03:00","stream":"LTS"},{"version":"2020.1.8f1","releaseDate":"2020-10-06T13:51:55.4870000+03:00","stream":"LTS"},{"version":"2018.4.28f1","releaseDate":"2020-10-06T12:51:51.3680000+03:00","stream":"LTS"},{"version":"2020.2.0b5","releaseDate":"2020-10-01T20:28:10.4460000+03:00","stream":"Beta"},{"version":"2020.1.7f1","releaseDate":"2020-09-30T12:51:21.0060000+03:00","stream":"LTS"},{"version":"2020.2.0b4","releaseDate":"2020-09-28T18:04:05.0940000+03:00","stream":"Beta"},{"version":"2019.4.11f1","releaseDate":"2020-09-23T17:50:07.5230000+03:00","stream":"LTS"},{"version":"2020.1.6f1","releaseDate":"2020-09-16T13:37:08.4180000+03:00","stream":"LTS"},{"version":"2019.4.10f1","releaseDate":"2020-09-10T18:00:59.3550000+03:00","stream":"LTS"},{"version":"2020.1.5f1","releaseDate":"2020-09-10T15:29:36.7490000+03:00","stream":"LTS"},{"version":"2020.2.0b2","releaseDate":"2020-09-09T20:06:38.9020000+03:00","stream":"Beta"},{"version":"2018.4.27f1","releaseDate":"2020-09-09T12:04:26.6260000+03:00","stream":"LTS"},{"version":"2020.2.0b1","releaseDate":"2020-09-03T06:50:06.9580000+03:00","stream":"Beta"},{"version":"2020.1.4f1","releaseDate":"2020-08-27T16:54:15.2610000+03:00","stream":"LTS"},{"version":"2019.4.9f1","releaseDate":"2020-08-26T18:12:20.1780000+03:00","stream":"LTS"},{"version":"2020.1.3f1","releaseDate":"2020-08-21T20:25:52.4300000+03:00","stream":"LTS"},{"version":"2020.2.0a21","releaseDate":"2020-08-20T19:08:48.0150000+03:00","stream":"Alpha"},{"version":"2019.4.8f1","releaseDate":"2020-08-12T16:18:43.9270000+03:00","stream":"LTS"},{"version":"2018.4.26f1","releaseDate":"2020-08-12T14:59:47.8120000+03:00","stream":"LTS"},{"version":"2020.1.2f1","releaseDate":"2020-08-12T14:11:53.6620000+03:00","stream":"LTS"},{"version":"2019.4.7f1","releaseDate":"2020-08-05T18:02:13.5720000+03:00","stream":"LTS"},{"version":"2020.1.1f1","releaseDate":"2020-08-05T12:04:55.1630000+03:00","stream":"LTS"},{"version":"2019.4.6f1","releaseDate":"2020-07-30T23:31:02.8270000+03:00","stream":"LTS"},{"version":"2020.2.0a19","releaseDate":"2020-07-28T20:12:37.1260000+03:00","stream":"Alpha"},{"version":"2019.4.5f1","releaseDate":"2020-07-23T11:08:58.2940000+03:00","stream":"LTS"},{"version":"2020.1.0f1","releaseDate":"2020-07-20T13:15:38.9490000+03:00","stream":"LTS"},{"version":"2020.2.0a18","releaseDate":"2020-07-15T18:09:32.2040000+03:00","stream":"Alpha"},{"version":"2019.4.4f1","releaseDate":"2020-07-15T17:33:21.3420000+03:00","stream":"LTS"},{"version":"2018.4.25f1","releaseDate":"2020-07-14T18:59:51.1720000+03:00","stream":"LTS"},{"version":"2020.1.0b16","releaseDate":"2020-07-14T14:16:19.7360000+03:00","stream":"Beta"},{"version":"2019.4.3f1","releaseDate":"2020-07-08T20:17:30.7430000+03:00","stream":"LTS"},{"version":"2020.1.0b15","releaseDate":"2020-07-08T16:16:36.1440000+03:00","stream":"Beta"},{"version":"2020.2.0a17","releaseDate":"2020-07-07T20:13:29.0870000+03:00","stream":"Alpha"},{"version":"2018.4.24f1","releaseDate":"2020-07-02T15:50:59.9690000+03:00","stream":"LTS"},{"version":"2019.4.2f1","releaseDate":"2020-07-01T17:31:49.6530000+03:00","stream":"LTS"},{"version":"2020.2.0a16","releaseDate":"2020-06-30T20:30:06.4050000+03:00","stream":"Alpha"},{"version":"2020.1.0b14","releaseDate":"2020-06-30T16:03:30.1650000+03:00","stream":"Beta"},{"version":"2019.4.1f1","releaseDate":"2020-06-18T17:26:11.2500000+03:00","stream":"LTS"},{"version":"2020.2.0a15","releaseDate":"2020-06-17T01:26:34.6240000+03:00","stream":"Alpha"},{"version":"2020.1.0b13","releaseDate":"2020-06-16T18:13:24.1630000+03:00","stream":"Beta"},{"version":"2020.1.0b12","releaseDate":"2020-06-09T18:59:47.8410000+03:00","stream":"Beta"},{"version":"2019.4.0f1","releaseDate":"2020-06-07T19:09:39.2440000+03:00","stream":"LTS"},{"version":"2020.1.0b11","releaseDate":"2020-06-03T11:04:41.2780000+03:00","stream":"Beta"},{"version":"2020.2.0a13","releaseDate":"2020-06-02T21:22:41.6660000+03:00","stream":"Alpha"},{"version":"2019.3.15f1","releaseDate":"2020-05-28T18:28:05.9350000+03:00","stream":"LTS"},{"version":"2020.1.0b10","releaseDate":"2020-05-27T18:18:15.7610000+03:00","stream":"Beta"},{"version":"2020.2.0a12","releaseDate":"2020-05-27T04:46:13.7030000+03:00","stream":"Alpha"},{"version":"2020.1.0b9","releaseDate":"2020-05-18T22:30:07.6160000+03:00","stream":"Beta"},{"version":"2019.3.14f1","releaseDate":"2020-05-18T22:09:15.4130000+03:00","stream":"LTS"},{"version":"2020.2.0a11","releaseDate":"2020-05-18T20:28:51.3580000+03:00","stream":"Alpha"},{"version":"2018.4.23f1","releaseDate":"2020-05-18T19:26:44.5050000+03:00","stream":"LTS"},{"version":"2017.4.40f1","releaseDate":"2020-05-18T18:54:47.5130000+03:00","stream":"LTS"},{"version":"2019.3.13f1","releaseDate":"2020-05-06T19:28:06.4310000+03:00","stream":"LTS"},{"version":"2020.2.0a10","releaseDate":"2020-05-06T17:34:37.9180000+03:00","stream":"Alpha"},{"version":"2020.1.0b8","releaseDate":"2020-05-05T19:50:03.1040000+03:00","stream":"Beta"},{"version":"2019.3.12f1","releaseDate":"2020-04-29T20:04:13.3180000+03:00","stream":"LTS"},{"version":"2020.2.0a9","releaseDate":"2020-04-28T16:42:11.9750000+03:00","stream":"Alpha"},{"version":"2020.1.0b7","releaseDate":"2020-04-28T13:12:51.1350000+03:00","stream":"Beta"},{"version":"2018.4.22f1","releaseDate":"2020-04-24T14:56:23.0650000+03:00","stream":"LTS"},{"version":"2020.1.0b6","releaseDate":"2020-04-24T00:32:23.4180000+03:00","stream":"Beta"},{"version":"2020.2.0a8","releaseDate":"2020-04-23T23:39:25.3310000+03:00","stream":"Alpha"},{"version":"2019.3.11f1","releaseDate":"2020-04-23T23:12:30.9100000+03:00","stream":"LTS"},{"version":"2019.3.10f1","releaseDate":"2020-04-16T17:51:49.2210000+03:00","stream":"LTS"},{"version":"2020.2.0a7","releaseDate":"2020-04-14T17:50:07.5570000+03:00","stream":"Alpha"},{"version":"2018.4.21f1","releaseDate":"2020-04-09T13:24:27.7520000+03:00","stream":"LTS"},{"version":"2020.1.0b5","releaseDate":"2020-04-09T12:02:00.1780000+03:00","stream":"Beta"},{"version":"2019.3.9f1","releaseDate":"2020-04-08T20:27:11.2330000+03:00","stream":"LTS"},{"version":"2019.3.8f1","releaseDate":"2020-04-06T16:35:43.6360000+03:00","stream":"LTS"},{"version":"2017.4.39f1","releaseDate":"2020-04-03T11:51:34.4000000+03:00","stream":"LTS"},{"version":"2020.1.0b4","releaseDate":"2020-04-01T12:27:53.0680000+03:00","stream":"Beta"},{"version":"2019.3.7f1","releaseDate":"2020-03-26T15:25:09.7460000+02:00","stream":"LTS"},{"version":"2018.4.20f1","releaseDate":"2020-03-26T14:30:57.8620000+02:00","stream":"LTS"},{"version":"2020.1.0b3","releaseDate":"2020-03-26T10:40:28.9370000+02:00","stream":"Beta"},{"version":"2017.4.38f1","releaseDate":"2020-03-20T12:06:20.6150000+02:00","stream":"LTS"},{"version":"2019.3.6f1","releaseDate":"2020-03-19T15:48:25.4900000+02:00","stream":"LTS"},{"version":"2020.1.0b2","releaseDate":"2020-03-18T13:35:10.1890000+02:00","stream":"Beta"},{"version":"2018.4.19f1","releaseDate":"2020-03-13T12:43:07.0330000+02:00","stream":"LTS"},{"version":"2019.3.5f1","releaseDate":"2020-03-12T15:37:50.3680000+02:00","stream":"LTS"},{"version":"2020.1.0b1","releaseDate":"2020-03-11T14:36:55.5980000+02:00","stream":"Beta"},{"version":"2019.3.4f1","releaseDate":"2020-03-06T12:05:37.8940000+02:00","stream":"LTS"},{"version":"2020.1.0a25","releaseDate":"2020-02-27T14:18:33.9680000+02:00","stream":"Alpha"},{"version":"2018.4.18f1","releaseDate":"2020-02-27T13:32:09.7550000+02:00","stream":"LTS"},{"version":"2019.3.3f1","releaseDate":"2020-02-26T15:41:18.4700000+02:00","stream":"LTS"},{"version":"2020.1.0a24","releaseDate":"2020-02-21T12:47:26.5020000+02:00","stream":"Alpha"},{"version":"2019.3.2f1","releaseDate":"2020-02-19T18:29:42.6760000+02:00","stream":"LTS"},{"version":"2017.4.37f1","releaseDate":"2020-02-18T18:24:58.6090000+02:00","stream":"LTS"},{"version":"2020.1.0a23","releaseDate":"2020-02-12T17:20:34.1120000+02:00","stream":"Alpha"},{"version":"2019.3.1f1","releaseDate":"2020-02-12T15:41:59.0190000+02:00","stream":"LTS"},{"version":"2018.4.17f1","releaseDate":"2020-02-11T13:48:12.9240000+02:00","stream":"LTS"},{"version":"2019.2.21f1","releaseDate":"2020-02-08T01:29:05.9630000+02:00","stream":"LTS"},{"version":"2020.1.0a22","releaseDate":"2020-02-05T12:35:10.0980000+02:00","stream":"Alpha"},{"version":"2019.2.20f1","releaseDate":"2020-01-31T15:52:30.5640000+02:00","stream":"LTS"},{"version":"2020.1.0a21","releaseDate":"2020-01-30T13:45:07.1640000+02:00","stream":"Alpha"},{"version":"2018.4.16f1","releaseDate":"2020-01-27T16:58:33.6030000+02:00","stream":"LTS"},{"version":"2019.3.0f6","releaseDate":"2020-01-27T14:06:56.5750000+02:00","stream":"LTS"},{"version":"2020.1.0a20","releaseDate":"2020-01-23T12:37:53.2280000+02:00","stream":"Alpha"},{"version":"2019.2.19f1","releaseDate":"2020-01-22T21:01:38.0230000+02:00","stream":"LTS"},{"version":"2020.1.0a19","releaseDate":"2020-01-16T13:54:15.4740000+02:00","stream":"Alpha"},{"version":"2019.2.18f1","releaseDate":"2020-01-16T01:24:20.6510000+02:00","stream":"LTS"},{"version":"2019.3.0f5","releaseDate":"2020-01-13T19:38:10.2010000+02:00","stream":"LTS"},{"version":"2017.4.36f1","releaseDate":"2020-01-09T16:49:31.0200000+02:00","stream":"LTS"},{"version":"2018.4.15f1","releaseDate":"2020-01-09T16:09:30.0590000+02:00","stream":"LTS"},{"version":"2020.1.0a18","releaseDate":"2020-01-08T13:28:04.1620000+02:00","stream":"Alpha"},{"version":"2020.1.0a17","releaseDate":"2019-12-19T12:21:05.7530000+02:00","stream":"Alpha"},{"version":"2019.2.17f1","releaseDate":"2019-12-18T21:20:41.5950000+02:00","stream":"LTS"},{"version":"2019.2.16f1","releaseDate":"2019-12-13T20:41:32.6580000+02:00","stream":"LTS"},{"version":"2020.1.0a16","releaseDate":"2019-12-12T16:47:22.9460000+02:00","stream":"Alpha"},{"version":"2019.3.0f3","releaseDate":"2019-12-11T22:34:41.7010000+02:00","stream":"LTS"},{"version":"2018.4.14f1","releaseDate":"2019-12-10T13:15:45.5800000+02:00","stream":"LTS"},{"version":"2017.4.35f1","releaseDate":"2019-12-06T16:49:43.1000000+02:00","stream":"LTS"},{"version":"2020.1.0a15","releaseDate":"2019-12-06T12:23:44.0090000+02:00","stream":"Alpha"},{"version":"2019.2.15f1","releaseDate":"2019-12-04T21:50:05.0710000+02:00","stream":"LTS"},{"version":"2019.2.14f1","releaseDate":"2019-11-27T20:40:20.1350000+02:00","stream":"LTS"},{"version":"2019.3.0f1","releaseDate":"2019-11-27T18:46:18.6920000+02:00","stream":"LTS"},{"version":"2019.3.0b12","releaseDate":"2019-11-21T22:46:51.9600000+02:00","stream":"Beta"},{"version":"2020.1.0a14","releaseDate":"2019-11-21T19:18:32.5570000+02:00","stream":"Alpha"},{"version":"2018.4.13f1","releaseDate":"2019-11-21T17:42:03.5440000+02:00","stream":"LTS"},{"version":"2019.2.13f1","releaseDate":"2019-11-20T19:22:07.1550000+02:00","stream":"LTS"},{"version":"2020.1.0a13","releaseDate":"2019-11-15T14:47:40.5570000+02:00","stream":"Alpha"},{"version":"2019.3.0b11","releaseDate":"2019-11-14T23:50:47.1120000+02:00","stream":"Beta"},{"version":"2019.2.12f1","releaseDate":"2019-11-11T20:38:24.9000000+02:00","stream":"LTS"},{"version":"2020.1.0a12","releaseDate":"2019-11-08T12:46:31.2520000+02:00","stream":"Alpha"},{"version":"2019.3.0b10","releaseDate":"2019-11-06T19:42:42.1640000+02:00","stream":"Beta"},{"version":"2019.3.0b9","releaseDate":"2019-11-01T18:37:43.0620000+02:00","stream":"Beta"},{"version":"2019.2.11f1","releaseDate":"2019-11-01T14:01:07.4740000+02:00","stream":"LTS"},{"version":"2020.1.0a11","releaseDate":"2019-10-31T18:32:46.5520000+02:00","stream":"Alpha"},{"version":"2017.4.34f1","releaseDate":"2019-10-30T19:20:05.4810000+02:00","stream":"LTS"},{"version":"2018.4.12f1","releaseDate":"2019-10-28T13:35:32.8840000+02:00","stream":"LTS"},{"version":"2019.2.10f1","releaseDate":"2019-10-24T00:46:43.5750000+03:00","stream":"LTS"},{"version":"2019.3.0b8","releaseDate":"2019-10-23T20:20:42.4990000+03:00","stream":"Beta"},{"version":"2020.1.0a9","releaseDate":"2019-10-17T13:21:00.0530000+03:00","stream":"Alpha"},{"version":"2019.3.0b7","releaseDate":"2019-10-14T20:32:52.8980000+03:00","stream":"Beta"},{"version":"2019.2.9f1","releaseDate":"2019-10-11T21:05:30.4520000+03:00","stream":"LTS"},{"version":"2018.4.11f1","releaseDate":"2019-10-10T16:08:52.3110000+03:00","stream":"LTS"},{"version":"2020.1.0a8","releaseDate":"2019-10-10T12:24:32.0630000+03:00","stream":"Alpha"},{"version":"2017.4.33f1","releaseDate":"2019-10-07T11:27:32.7430000+03:00","stream":"LTS"},{"version":"2019.3.0b6","releaseDate":"2019-10-04T19:50:37.4470000+03:00","stream":"Beta"},{"version":"2019.2.8f1","releaseDate":"2019-10-04T01:11:03.8390000+03:00","stream":"LTS"},{"version":"2020.1.0a7","releaseDate":"2019-10-01T19:22:34.3760000+03:00","stream":"Alpha"},{"version":"2018.4.10f1","releaseDate":"2019-10-01T15:06:54.8160000+03:00","stream":"LTS"},{"version":"2019.2.7f2","releaseDate":"2019-09-30T21:04:28.7120000+03:00","stream":"LTS"},{"version":"2019.3.0b5","releaseDate":"2019-09-30T17:32:45.4310000+03:00","stream":"Beta"},{"version":"2020.1.0a5","releaseDate":"2019-09-25T17:28:57.7470000+03:00","stream":"Alpha"},{"version":"2019.3.0b4","releaseDate":"2019-09-20T18:43:52.3750000+03:00","stream":"Beta"},{"version":"2019.2.6f1","releaseDate":"2019-09-17T22:29:14.5200000+03:00","stream":"LTS"},{"version":"2018.4.9f1","releaseDate":"2019-09-13T15:05:02.2970000+03:00","stream":"LTS"},{"version":"2019.2.5f1","releaseDate":"2019-09-12T18:37:27.5480000+03:00","stream":"LTS"},{"version":"2019.3.0b3","releaseDate":"2019-09-10T19:31:30.3650000+03:00","stream":"Beta"},{"version":"2019.3.0b2","releaseDate":"2019-09-06T20:16:21.5300000+03:00","stream":"Beta"},{"version":"2020.1.0a3","releaseDate":"2019-09-05T18:08:44.2560000+03:00","stream":"Alpha"},{"version":"2019.2.4f1","releaseDate":"2019-09-05T17:17:26.6680000+03:00","stream":"LTS"},{"version":"2017.4.32f1","releaseDate":"2019-09-05T14:50:38.8620000+03:00","stream":"LTS"},{"version":"2018.4.8f1","releaseDate":"2019-08-30T12:24:35.8910000+03:00","stream":"LTS"},{"version":"2019.2.3f1","releaseDate":"2019-08-28T15:57:33.7170000+03:00","stream":"LTS"},{"version":"2019.3.0b1","releaseDate":"2019-08-26T18:03:03.4490000+03:00","stream":"Beta"},{"version":"2019.2.2f1","releaseDate":"2019-08-21T13:42:41.1150000+03:00","stream":"LTS"},{"version":"2018.4.7f1","releaseDate":"2019-08-19T13:07:37.5940000+03:00","stream":"LTS"},{"version":"2019.2.1f1","releaseDate":"2019-08-14T17:28:59.0190000+03:00","stream":"LTS"},{"version":"2019.3.0a12","releaseDate":"2019-08-13T17:24:35.2560000+03:00","stream":"Alpha"},{"version":"2018.4.6f1","releaseDate":"2019-08-08T12:30:29.8390000+03:00","stream":"LTS"},{"version":"2019.1.14f1","releaseDate":"2019-08-08T12:01:21.7260000+03:00","stream":"LTS"},{"version":"2017.4.31f1","releaseDate":"2019-08-02T13:02:34.0640000+03:00","stream":"LTS"},{"version":"2019.1.13f1","releaseDate":"2019-08-01T14:12:43.9510000+03:00","stream":"LTS"},{"version":"2019.3.0a11","releaseDate":"2019-07-31T21:32:46.9870000+03:00","stream":"Alpha"},{"version":"2019.2.0f1","releaseDate":"2019-07-29T13:48:07.1340000+03:00","stream":"LTS"},{"version":"2019.1.12f1","releaseDate":"2019-07-26T16:28:16.0830000+03:00","stream":"LTS"},{"version":"2018.4.5f1","releaseDate":"2019-07-26T14:33:58.8310000+03:00","stream":"LTS"},{"version":"2019.3.0a10","releaseDate":"2019-07-22T21:03:08.9830000+03:00","stream":"Alpha"},{"version":"2019.2.0b10","releaseDate":"2019-07-18T18:39:34.1320000+03:00","stream":"Beta"},{"version":"2019.1.11f1","releaseDate":"2019-07-18T15:29:11.3370000+03:00","stream":"LTS"},{"version":"2018.4.4f1","releaseDate":"2019-07-12T19:20:22.9020000+03:00","stream":"LTS"},{"version":"2019.1.10f1","releaseDate":"2019-07-12T18:54:54.0030000+03:00","stream":"LTS"},{"version":"2019.2.0b9","releaseDate":"2019-07-11T21:56:49.6310000+03:00","stream":"Beta"},{"version":"2017.4.30f1","releaseDate":"2019-07-05T17:27:47.0610000+03:00","stream":"LTS"},{"version":"2019.1.9f1","releaseDate":"2019-07-05T14:47:29.6410000+03:00","stream":"LTS"},{"version":"2019.3.0a8","releaseDate":"2019-07-03T20:30:44.9800000+03:00","stream":"Alpha"},{"version":"2018.4.3f1","releaseDate":"2019-06-28T16:03:41.3670000+03:00","stream":"LTS"},{"version":"2019.3.0a7","releaseDate":"2019-06-26T20:12:40.6830000+03:00","stream":"Alpha"},{"version":"2019.2.0b7","releaseDate":"2019-06-25T23:47:11.2540000+03:00","stream":"Beta"},{"version":"2019.1.8f1","releaseDate":"2019-06-22T11:48:33.7900000+03:00","stream":"LTS"},{"version":"2019.3.0a6","releaseDate":"2019-06-19T06:02:44.0090000+03:00","stream":"Alpha"},{"version":"2019.1.7f1","releaseDate":"2019-06-14T18:44:01.6130000+03:00","stream":"LTS"},{"version":"2019.2.0b6","releaseDate":"2019-06-12T12:40:00.7880000+03:00","stream":"Beta"},{"version":"2017.4.29f1","releaseDate":"2019-06-08T22:03:51.2520000+03:00","stream":"LTS"},{"version":"2018.4.2f1","releaseDate":"2019-06-08T21:07:32.0460000+03:00","stream":"LTS"},{"version":"2019.1.6f1","releaseDate":"2019-06-08T19:58:35.5350000+03:00","stream":"LTS"},{"version":"2019.3.0a5","releaseDate":"2019-06-06T15:22:57.5620000+03:00","stream":"Alpha"},{"version":"2019.2.0b5","releaseDate":"2019-06-05T17:32:16.2730000+03:00","stream":"Beta"},{"version":"2019.1.5f1","releaseDate":"2019-06-03T14:40:25.5010000+03:00","stream":"LTS"},{"version":"2017.4.28f1","releaseDate":"2019-05-30T20:27:14.6810000+03:00","stream":"LTS"},{"version":"2019.3.0a4","releaseDate":"2019-05-30T17:15:42.7070000+03:00","stream":"Alpha"},{"version":"2019.2.0b4","releaseDate":"2019-05-29T20:12:13.2450000+03:00","stream":"Beta"},{"version":"2018.4.1f1","releaseDate":"2019-05-28T19:24:03.8580000+03:00","stream":"LTS"},{"version":"2019.1.4f1","releaseDate":"2019-05-24T20:57:10.7780000+03:00","stream":"LTS"},{"version":"2019.2.0b3","releaseDate":"2019-05-22T17:03:19.4450000+03:00","stream":"Beta"},{"version":"2019.3.0a3","releaseDate":"2019-05-22T14:46:55.0550000+03:00","stream":"Alpha"},{"version":"2019.1.3f1","releaseDate":"2019-05-16T17:47:53.8260000+03:00","stream":"LTS"},{"version":"2019.2.0b2","releaseDate":"2019-05-15T18:44:17.7590000+03:00","stream":"Beta"},{"version":"2019.3.0a2","releaseDate":"2019-05-10T23:36:39.2540000+03:00","stream":"Alpha"},{"version":"2019.1.2f1","releaseDate":"2019-05-10T18:59:18.5200000+03:00","stream":"LTS"},{"version":"2017.4.27f1","releaseDate":"2019-05-10T16:21:41.1350000+03:00","stream":"LTS"},{"version":"2018.4.0f1","releaseDate":"2019-05-10T14:43:31.4210000+03:00","stream":"LTS"},{"version":"2019.2.0b1","releaseDate":"2019-05-09T12:44:58.3510000+03:00","stream":"Beta"},{"version":"2019.1.1f1","releaseDate":"2019-05-03T17:43:43.5970000+03:00","stream":"LTS"},{"version":"2019.2.0a14","releaseDate":"2019-05-01T20:59:12.6880000+03:00","stream":"Alpha"},{"version":"2018.3.14f1","releaseDate":"2019-04-26T14:50:27.0450000+03:00","stream":"LTS"},{"version":"2019.2.0a13","releaseDate":"2019-04-24T20:50:21.0670000+03:00","stream":"Alpha"},{"version":"2017.4.26f1","releaseDate":"2019-04-23T12:36:49.5910000+03:00","stream":"LTS"},{"version":"2018.3.13f1","releaseDate":"2019-04-18T12:14:47.6950000+03:00","stream":"LTS"},{"version":"2019.1.0f2","releaseDate":"2019-04-15T16:28:01.4440000+03:00","stream":"LTS"},{"version":"2019.2.0a11","releaseDate":"2019-04-11T19:48:43.1840000+03:00","stream":"Alpha"},{"version":"2019.1.0f1","releaseDate":"2019-04-08T21:51:36.4080000+03:00","stream":"LTS"},{"version":"2018.3.12f1","releaseDate":"2019-04-08T17:36:53.3460000+03:00","stream":"LTS"},{"version":"2017.4.25f1","releaseDate":"2019-04-08T16:39:05.1910000+03:00","stream":"LTS"},{"version":"2019.1.0b10","releaseDate":"2019-04-03T17:15:22.3850000+03:00","stream":"Beta"},{"version":"2018.3.11f1","releaseDate":"2019-03-29T14:15:27.9350000+02:00","stream":"LTS"},{"version":"2019.1.0b9","releaseDate":"2019-03-26T18:57:04.8470000+02:00","stream":"Beta"},{"version":"2018.3.10f1","releaseDate":"2019-03-25T19:27:03.0350000+02:00","stream":"LTS"},{"version":"2017.4.24f1","releaseDate":"2019-03-22T11:39:13.6670000+02:00","stream":"LTS"},{"version":"2019.2.0a9","releaseDate":"2019-03-20T17:45:22.3090000+02:00","stream":"Alpha"},{"version":"2019.1.0b8","releaseDate":"2019-03-18T19:17:39.0930000+02:00","stream":"Beta"},{"version":"2018.3.9f1","releaseDate":"2019-03-18T14:14:09.6120000+02:00","stream":"LTS"},{"version":"2019.1.0b7","releaseDate":"2019-03-13T18:10:13.3900000+02:00","stream":"Beta"},{"version":"2019.2.0a8","releaseDate":"2019-03-13T16:22:24.9240000+02:00","stream":"Alpha"},{"version":"2017.4.23f1","releaseDate":"2019-03-08T19:28:16.4670000+02:00","stream":"LTS"},{"version":"2019.1.0b6","releaseDate":"2019-03-08T18:41:08.1330000+02:00","stream":"Beta"},{"version":"2018.3.8f1","releaseDate":"2019-03-08T18:15:08.8060000+02:00","stream":"LTS"},{"version":"2019.2.0a7","releaseDate":"2019-03-04T15:52:19.7100000+02:00","stream":"Alpha"},{"version":"2019.1.0b5","releaseDate":"2019-03-01T18:44:15.4080000+02:00","stream":"Beta"},{"version":"5.6.7f1","releaseDate":"2019-02-28T20:35:23.8950000+02:00","stream":"LTS"},{"version":"2018.2.21f1","releaseDate":"2019-02-28T19:57:55.3450000+02:00","stream":"LTS"},{"version":"2017.4.22f1","releaseDate":"2019-02-28T19:01:39.7560000+02:00","stream":"LTS"},{"version":"2018.3.7f1","releaseDate":"2019-02-28T18:07:09.1890000+02:00","stream":"LTS"},{"version":"2019.2.0a6","releaseDate":"2019-02-27T09:50:11.0870000+02:00","stream":"Alpha"},{"version":"2017.4.21f1","releaseDate":"2019-02-21T17:15:49.2140000+02:00","stream":"LTS"},{"version":"2019.1.0b4","releaseDate":"2019-02-19T18:30:33.2540000+02:00","stream":"Beta"},{"version":"2018.3.6f1","releaseDate":"2019-02-15T18:45:14.6840000+02:00","stream":"LTS"},{"version":"2019.1.0b3","releaseDate":"2019-02-11T17:22:34.4640000+02:00","stream":"Beta"},{"version":"2017.4.20f2","releaseDate":"2019-02-11T12:07:10.8110000+02:00","stream":"LTS"},{"version":"2018.3.5f1","releaseDate":"2019-02-08T17:27:29.3790000+02:00","stream":"LTS"},{"version":"2019.2.0a4","releaseDate":"2019-02-06T16:46:04.4100000+02:00","stream":"Alpha"},{"version":"2019.1.0b2","releaseDate":"2019-02-04T15:55:05.8000000+02:00","stream":"Beta"},{"version":"2018.3.4f1","releaseDate":"2019-02-01T18:49:54.5170000+02:00","stream":"LTS"},{"version":"2019.1.0b1","releaseDate":"2019-01-28T17:21:41.6220000+02:00","stream":"Beta"},{"version":"2017.4.19f1","releaseDate":"2019-01-28T16:49:20.9630000+02:00","stream":"LTS"},{"version":"2018.3.3f1","releaseDate":"2019-01-25T16:37:01.8620000+02:00","stream":"LTS"},{"version":"2018.3.2f1","releaseDate":"2019-01-17T11:18:26.5460000+02:00","stream":"LTS"},{"version":"2019.1.0a14","releaseDate":"2019-01-15T20:45:50.0540000+02:00","stream":"Alpha"},{"version":"2018.3.1f1","releaseDate":"2019-01-10T14:42:52.5380000+02:00","stream":"LTS"},{"version":"2017.4.18f1","releaseDate":"2019-01-10T13:37:33.9090000+02:00","stream":"LTS"},{"version":"2019.1.0a13","releaseDate":"2019-01-03T03:39:26.4790000+02:00","stream":"Alpha"},{"version":"2019.1.0a12","releaseDate":"2018-12-14T20:20:29.2790000+02:00","stream":"Alpha"},{"version":"2018.2.20f1","releaseDate":"2018-12-14T13:15:42.9470000+02:00","stream":"LTS"},{"version":"2018.3.0f2","releaseDate":"2018-12-12T14:02:30.5550000+02:00","stream":"LTS"},{"version":"2018.3.0f1","releaseDate":"2018-12-11T17:41:14.3820000+02:00","stream":"LTS"},{"version":"2017.2.5f1","releaseDate":"2018-12-07T20:04:37.5790000+02:00","stream":"LTS"},{"version":"2018.2.19f1","releaseDate":"2018-12-07T18:44:08.5920000+02:00","stream":"LTS"},{"version":"2017.4.17f1","releaseDate":"2018-12-07T17:51:37.3080000+02:00","stream":"LTS"},{"version":"2019.1.0a11","releaseDate":"2018-12-04T22:58:06.1280000+02:00","stream":"Alpha"},{"version":"2018.2.18f1","releaseDate":"2018-11-30T17:10:33.2730000+02:00","stream":"LTS"},{"version":"2018.3.0b12","releaseDate":"2018-11-28T14:03:56.2160000+02:00","stream":"Beta"},{"version":"2019.1.0a10","releaseDate":"2018-11-23T18:56:21.7430000+02:00","stream":"Alpha"},{"version":"2017.4.16f1","releaseDate":"2018-11-23T12:14:00.4550000+02:00","stream":"LTS"},{"version":"2018.2.17f1","releaseDate":"2018-11-21T17:28:51.6180000+02:00","stream":"LTS"},{"version":"2018.3.0b11","releaseDate":"2018-11-21T15:58:06.3430000+02:00","stream":"Beta"},{"version":"2017.2.4p1","releaseDate":"2018-11-16T12:22:37.6740000+02:00","stream":"Tech"},{"version":"2018.2.16f1","releaseDate":"2018-11-15T13:01:20.6050000+02:00","stream":"LTS"},{"version":"2019.1.0a9","releaseDate":"2018-11-14T18:08:29.5040000+02:00","stream":"Alpha"},{"version":"2018.3.0b10","releaseDate":"2018-11-14T15:35:56.4560000+02:00","stream":"Beta"},{"version":"2017.4.15f1","releaseDate":"2018-11-12T16:08:59.6070000+02:00","stream":"LTS"},{"version":"2018.2.15f1","releaseDate":"2018-11-09T12:10:19.0780000+02:00","stream":"LTS"},{"version":"2018.3.0b9","releaseDate":"2018-11-07T13:26:23.7790000+02:00","stream":"Beta"},{"version":"2019.1.0a8","releaseDate":"2018-11-07T01:07:14.7810000+02:00","stream":"Alpha"},{"version":"2019.1.0a7","releaseDate":"2018-10-31T18:36:10.7410000+02:00","stream":"Alpha"},{"version":"2018.3.0b8","releaseDate":"2018-10-31T12:43:25.5420000+02:00","stream":"Beta"},{"version":"2018.2.14f1","releaseDate":"2018-10-26T18:36:58.3850000+03:00","stream":"LTS"},{"version":"2017.4.14f1","releaseDate":"2018-10-26T14:46:14.9670000+03:00","stream":"LTS"},{"version":"2018.3.0b7","releaseDate":"2018-10-24T12:18:44.7430000+03:00","stream":"Beta"},{"version":"2018.2.13f1","releaseDate":"2018-10-18T13:04:17.7440000+03:00","stream":"LTS"},{"version":"2018.3.0b6","releaseDate":"2018-10-18T10:28:58.7650000+03:00","stream":"Beta"},{"version":"2018.2.12f1","releaseDate":"2018-10-12T17:40:28.9550000+03:00","stream":"LTS"},{"version":"2017.4.13f1","releaseDate":"2018-10-12T15:12:23.4990000+03:00","stream":"LTS"},{"version":"2018.3.0b5","releaseDate":"2018-10-10T11:17:14.4800000+03:00","stream":"Beta"},{"version":"2018.2.11f1","releaseDate":"2018-10-04T13:36:18.2630000+03:00","stream":"LTS"},{"version":"2018.3.0b4","releaseDate":"2018-10-03T14:09:35.4250000+03:00","stream":"Beta"},{"version":"2017.2.4f1","releaseDate":"2018-10-03T13:10:22.6970000+03:00","stream":"LTS"},{"version":"2017.4.12f1","releaseDate":"2018-09-27T13:54:38.6660000+03:00","stream":"LTS"},{"version":"2018.2.10f1","releaseDate":"2018-09-26T17:32:56.4460000+03:00","stream":"LTS"},{"version":"2018.3.0b3","releaseDate":"2018-09-26T16:21:30.9390000+03:00","stream":"Beta"},{"version":"2018.2.9f1","releaseDate":"2018-09-21T15:47:59.5780000+03:00","stream":"LTS"},{"version":"2018.3.0b2","releaseDate":"2018-09-20T12:44:45.6210000+03:00","stream":"Beta"},{"version":"2018.2.8f1","releaseDate":"2018-09-14T13:03:11.1630000+03:00","stream":"LTS"},{"version":"2017.4.11f1","releaseDate":"2018-09-13T12:35:24.1460000+03:00","stream":"LTS"},{"version":"2018.3.0b1","releaseDate":"2018-09-11T16:07:05.2700000+03:00","stream":"Beta"},{"version":"2018.2.7f1","releaseDate":"2018-09-06T19:34:51.1710000+03:00","stream":"LTS"},{"version":"2018.2.6f1","releaseDate":"2018-08-30T14:26:23.2890000+03:00","stream":"LTS"},{"version":"2017.2.3p4","releaseDate":"2018-08-29T16:24:14.6370000+03:00","stream":"Tech"},{"version":"2018.1.9f2","releaseDate":"2018-08-29T13:25:53.0360000+03:00","stream":"LTS"},{"version":"2017.4.10f1","releaseDate":"2018-08-24T16:44:21.5260000+03:00","stream":"LTS"},{"version":"2018.2.5f1","releaseDate":"2018-08-22T18:12:22.7900000+03:00","stream":"LTS"},{"version":"2018.2.4f1","releaseDate":"2018-08-17T17:17:08.6950000+03:00","stream":"LTS"},{"version":"2018.2.3f1","releaseDate":"2018-08-10T19:45:34.0780000+03:00","stream":"LTS"},{"version":"2017.4.9f1","releaseDate":"2018-08-10T17:27:28.1310000+03:00","stream":"LTS"},{"version":"2017.2.3p3","releaseDate":"2018-08-03T17:58:35.3170000+03:00","stream":"Tech"},{"version":"2018.2.2f1","releaseDate":"2018-08-03T16:32:08.8780000+03:00","stream":"LTS"},{"version":"2017.4.8f1","releaseDate":"2018-07-26T14:30:32.4430000+03:00","stream":"LTS"},{"version":"2018.2.1f1","releaseDate":"2018-07-26T13:43:51.5190000+03:00","stream":"LTS"},{"version":"2017.1.5f1","releaseDate":"2018-07-23T19:24:20.2750000+03:00","stream":"LTS"},{"version":"2018.1.8f1","releaseDate":"2018-07-13T16:52:59.7910000+03:00","stream":"LTS"},{"version":"2017.4.7f1","releaseDate":"2018-07-13T13:22:49.0920000+03:00","stream":"LTS"},{"version":"2018.2.0f2","releaseDate":"2018-07-09T19:46:12.1340000+03:00","stream":"LTS"},{"version":"2018.2.0f1","releaseDate":"2018-07-06T18:20:59.9000000+03:00","stream":"LTS"},{"version":"2017.2.3p2","releaseDate":"2018-07-05T17:38:35.9270000+03:00","stream":"Tech"},{"version":"2018.1.7f1","releaseDate":"2018-07-05T17:17:37.5460000+03:00","stream":"LTS"},{"version":"2018.2.0b11","releaseDate":"2018-07-03T16:34:59.1560000+03:00","stream":"Beta"},{"version":"2018.2.0b10","releaseDate":"2018-06-26T16:53:45.0430000+03:00","stream":"Beta"},{"version":"2017.4.6f1","releaseDate":"2018-06-22T11:23:54.2190000+03:00","stream":"LTS"},{"version":"2018.1.6f1","releaseDate":"2018-06-21T18:02:57.3560000+03:00","stream":"LTS"},{"version":"2017.1.4p2","releaseDate":"2018-06-20T12:46:38.0700000+03:00","stream":"Tech"},{"version":"2018.2.0b9","releaseDate":"2018-06-19T16:54:09.0660000+03:00","stream":"Beta"},{"version":"2018.1.5f1","releaseDate":"2018-06-15T15:35:07.6220000+03:00","stream":"LTS"},{"version":"2018.2.0b8","releaseDate":"2018-06-13T16:54:30.1710000+03:00","stream":"Beta"},{"version":"2017.1.4p1","releaseDate":"2018-06-13T16:31:38.3930000+03:00","stream":"Tech"},{"version":"2018.1.4f1","releaseDate":"2018-06-11T17:59:27.4260000+03:00","stream":"LTS"},{"version":"2017.4.5f1","releaseDate":"2018-06-07T12:24:13.1100000+03:00","stream":"LTS"},{"version":"2018.2.0b7","releaseDate":"2018-06-06T20:13:56.2500000+03:00","stream":"Beta"},{"version":"2018.1.3f1","releaseDate":"2018-06-04T12:52:38.3090000+03:00","stream":"LTS"},{"version":"2017.2.3p1","releaseDate":"2018-05-31T13:04:31.7460000+03:00","stream":"Tech"},{"version":"2018.2.0b6","releaseDate":"2018-05-29T17:49:22.1680000+03:00","stream":"Beta"},{"version":"2018.1.2f1","releaseDate":"2018-05-25T18:39:42.9360000+03:00","stream":"LTS"},{"version":"2018.2.0b5","releaseDate":"2018-05-24T10:21:44.1020000+03:00","stream":"Beta"},{"version":"2017.1.4f1","releaseDate":"2018-05-23T18:53:36.9910000+03:00","stream":"LTS"},{"version":"2017.4.4f1","releaseDate":"2018-05-23T18:20:18.8730000+03:00","stream":"LTS"},{"version":"2017.2.3f1","releaseDate":"2018-05-18T16:26:34.7630000+03:00","stream":"LTS"},{"version":"2018.1.1f1","releaseDate":"2018-05-18T12:56:06.0720000+03:00","stream":"LTS"},{"version":"2018.2.0b4","releaseDate":"2018-05-11T22:14:37.6770000+03:00","stream":"Beta"},{"version":"2017.4.3f1","releaseDate":"2018-05-11T17:44:04.8180000+03:00","stream":"LTS"},{"version":"5.6.6f2","releaseDate":"2018-05-08T12:03:55.4790000+03:00","stream":"LTS"},{"version":"2017.1.3p4","releaseDate":"2018-05-06T13:03:23.7480000+03:00","stream":"Tech"},{"version":"2018.2.0b3","releaseDate":"2018-05-04T03:29:00.7830000+03:00","stream":"Beta"},{"version":"2018.1.0f2","releaseDate":"2018-05-02T12:32:53.1810000+03:00","stream":"LTS"},{"version":"2017.4.2f2","releaseDate":"2018-04-30T12:57:20.7740000+03:00","stream":"LTS"},{"version":"2017.2.2p4","releaseDate":"2018-04-27T11:09:34.6590000+03:00","stream":"Tech"},{"version":"2018.1.0f1","releaseDate":"2018-04-26T17:34:43.9320000+03:00","stream":"LTS"},{"version":"2018.2.0b2","releaseDate":"2018-04-25T18:46:41.7020000+03:00","stream":"Beta"},{"version":"2018.2.0b1","releaseDate":"2018-04-18T04:14:08.2100000+03:00","stream":"Beta"},{"version":"2017.4.1f1","releaseDate":"2018-04-12T15:46:45.4370000+03:00","stream":"LTS"},{"version":"5.6.5p4","releaseDate":"2018-04-12T13:47:59.7170000+03:00","stream":"Tech"},{"version":"2017.1.3p3","releaseDate":"2018-04-06T13:32:38.6350000+03:00","stream":"Tech"},{"version":"2017.2.2p3","releaseDate":"2018-04-05T13:16:10.2630000+03:00","stream":"Tech"},{"version":"2018.1.0b13","releaseDate":"2018-03-30T13:12:24.9220000+03:00","stream":"Beta"},{"version":"2017.2.2p2","releaseDate":"2018-03-23T15:33:23.0760000+02:00","stream":"Tech"},{"version":"2018.1.0b12","releaseDate":"2018-03-23T10:03:45.3420000+02:00","stream":"Beta"},{"version":"2017.4.0f1","releaseDate":"2018-03-19T13:40:15.8330000+02:00","stream":"LTS"},{"version":"2018.1.0b11","releaseDate":"2018-03-16T15:01:57.6520000+02:00","stream":"Beta"},{"version":"5.6.5p3","releaseDate":"2018-03-16T11:45:19.3630000+02:00","stream":"Tech"},{"version":"2017.3.1p4","releaseDate":"2018-03-13T13:06:06.2160000+02:00","stream":"Tech"},{"version":"2017.2.2p1","releaseDate":"2018-03-09T17:01:16.6870000+02:00","stream":"Tech"},{"version":"2018.1.0b10","releaseDate":"2018-03-08T17:30:14.4980000+02:00","stream":"Beta"},{"version":"2017.3.1p3","releaseDate":"2018-03-06T15:00:52.2380000+02:00","stream":"Tech"},{"version":"2017.1.3p2","releaseDate":"2018-03-02T13:14:31.1230000+02:00","stream":"Tech"},{"version":"2018.1.0b9","releaseDate":"2018-02-27T22:03:39.0920000+02:00","stream":"Beta"},{"version":"2017.3.1p2","releaseDate":"2018-02-26T13:20:31.2290000+02:00","stream":"Tech"},{"version":"2017.2.2f1","releaseDate":"2018-02-26T12:56:15.2980000+02:00","stream":"LTS"},{"version":"2018.1.0b8","releaseDate":"2018-02-21T01:19:54.4560000+02:00","stream":"Beta"},{"version":"5.6.5p2","releaseDate":"2018-02-15T12:54:22.5920000+02:00","stream":"Tech"},{"version":"2017.3.1p1","releaseDate":"2018-02-14T18:32:07.5630000+02:00","stream":"Tech"},{"version":"2018.1.0b7","releaseDate":"2018-02-14T13:12:33.8400000+02:00","stream":"Beta"},{"version":"2017.2.1p4","releaseDate":"2018-02-12T15:46:02.9250000+02:00","stream":"Tech"},{"version":"2018.1.0b6","releaseDate":"2018-02-08T01:26:06.8280000+02:00","stream":"Beta"},{"version":"2017.3.1f1","releaseDate":"2018-02-05T17:31:22.3830000+02:00","stream":"LTS"},{"version":"2017.1.3p1","releaseDate":"2018-02-02T18:03:25.9430000+02:00","stream":"Tech"},{"version":"2018.1.0b5","releaseDate":"2018-01-31T14:56:51.0850000+02:00","stream":"Beta"},{"version":"2017.2.1p3","releaseDate":"2018-01-30T18:14:38.4790000+02:00","stream":"Tech"},{"version":"2017.3.0p4","releaseDate":"2018-01-29T14:43:13.4400000+02:00","stream":"Tech"},{"version":"2018.1.0b4","releaseDate":"2018-01-22T21:10:28.0890000+02:00","stream":"Beta"},{"version":"5.6.5p1","releaseDate":"2018-01-22T12:15:55.2200000+02:00","stream":"Tech"},{"version":"2017.3.0p3","releaseDate":"2018-01-18T18:39:06.6310000+02:00","stream":"Tech"},{"version":"2018.1.0b3","releaseDate":"2018-01-17T14:06:15.8980000+02:00","stream":"Beta"},{"version":"2017.3.0p2","releaseDate":"2018-01-12T20:16:05.8470000+02:00","stream":"Tech"},{"version":"5.5.6f1","releaseDate":"2018-01-12T19:52:32.0940000+02:00","stream":"LTS"},{"version":"2017.2.1p2","releaseDate":"2018-01-12T12:39:16.7060000+02:00","stream":"Tech"},{"version":"2018.1.0b2","releaseDate":"2018-01-09T17:44:00.8450000+02:00","stream":"Beta"},{"version":"2017.1.3f1","releaseDate":"2018-01-04T19:14:40.6550000+02:00","stream":"LTS"},{"version":"2017.3.0p1","releaseDate":"2017-12-22T13:42:56.1700000+02:00","stream":"Tech"},{"version":"5.6.5f1","releaseDate":"2017-12-21T13:08:15.3130000+02:00","stream":"LTS"},{"version":"2017.2.1p1","releaseDate":"2017-12-20T15:53:25.0250000+02:00","stream":"Tech"},{"version":"2017.3.0f3","releaseDate":"2017-12-18T18:24:06.3520000+02:00","stream":"LTS"},{"version":"2017.2.1f1","releaseDate":"2017-12-11T17:44:05.8030000+02:00","stream":"LTS"},{"version":"2017.3.0f2","releaseDate":"2017-12-08T18:45:52.2440000+02:00","stream":"LTS"},{"version":"2017.1.2p4","releaseDate":"2017-12-08T17:51:33.8740000+02:00","stream":"Tech"},{"version":"5.6.4p4","releaseDate":"2017-12-07T14:26:50.5400000+02:00","stream":"Tech"},{"version":"2017.2.0p4","releaseDate":"2017-12-04T12:45:02.9910000+02:00","stream":"Tech"},{"version":"2017.3.0f1","releaseDate":"2017-12-01T20:31:55.9230000+02:00","stream":"LTS"},{"version":"5.5.5p2","releaseDate":"2017-11-28T18:57:54.6100000+02:00","stream":"Tech"},{"version":"2017.3.0b11","releaseDate":"2017-11-28T17:29:29.2860000+02:00","stream":"Beta"},{"version":"2017.2.0p3","releaseDate":"2017-11-27T15:27:46.2180000+02:00","stream":"Tech"},{"version":"2017.1.2p3","releaseDate":"2017-11-21T17:57:28.2100000+02:00","stream":"Tech"},{"version":"2017.3.0b10","releaseDate":"2017-11-20T17:18:14.5740000+02:00","stream":"Beta"},{"version":"5.6.4p3","releaseDate":"2017-11-20T15:49:56.7630000+02:00","stream":"Tech"},{"version":"2017.2.0p2","releaseDate":"2017-11-15T16:24:53.1850000+02:00","stream":"Tech"},{"version":"5.6.4p2","releaseDate":"2017-11-12T21:00:26.6870000+02:00","stream":"Tech"},{"version":"2017.3.0b9","releaseDate":"2017-11-10T19:33:11.8540000+02:00","stream":"Beta"},{"version":"2017.2.0p1","releaseDate":"2017-11-06T19:18:19.4960000+02:00","stream":"Tech"},{"version":"2017.3.0b8","releaseDate":"2017-11-03T17:21:00.7540000+02:00","stream":"Beta"},{"version":"2017.3.0b7","releaseDate":"2017-10-31T17:40:56.2350000+02:00","stream":"Beta"},{"version":"2017.1.2p2","releaseDate":"2017-10-27T14:03:41.0290000+03:00","stream":"Tech"},{"version":"2017.3.0b6","releaseDate":"2017-10-24T19:13:05.0440000+03:00","stream":"Beta"},{"version":"5.6.4p1","releaseDate":"2017-10-20T11:55:09.4280000+03:00","stream":"Tech"},{"version":"2017.3.0b5","releaseDate":"2017-10-17T17:14:21.2300000+03:00","stream":"Beta"},{"version":"5.6.4f1","releaseDate":"2017-10-16T00:45:41.6100000+03:00","stream":"LTS"},{"version":"5.5.5p1","releaseDate":"2017-10-13T18:41:22.6040000+03:00","stream":"Tech"},{"version":"2017.1.2p1","releaseDate":"2017-10-13T17:36:45.0300000+03:00","stream":"Tech"},{"version":"2017.2.0f3","releaseDate":"2017-10-11T20:12:25.4710000+03:00","stream":"LTS"},{"version":"2017.1.1p4","releaseDate":"2017-10-11T01:24:40.4590000+03:00","stream":"Tech"},{"version":"2017.3.0b4","releaseDate":"2017-10-10T18:09:12.8770000+03:00","stream":"Beta"},{"version":"2017.1.2f1","releaseDate":"2017-10-06T15:44:00.5700000+03:00","stream":"LTS"},{"version":"2017.3.0b3","releaseDate":"2017-10-05T17:33:00.3650000+03:00","stream":"Beta"},{"version":"5.5.5f1","releaseDate":"2017-10-03T21:12:06.1320000+03:00","stream":"LTS"},{"version":"2017.2.0f2","releaseDate":"2017-10-02T20:53:40.3960000+03:00","stream":"LTS"},{"version":"2017.3.0b2","releaseDate":"2017-09-26T17:46:30.1710000+03:00","stream":"Beta"},{"version":"2017.1.1p3","releaseDate":"2017-09-22T19:41:25.5110000+03:00","stream":"Tech"},{"version":"2017.2.0f1","releaseDate":"2017-09-22T18:33:23.3090000+03:00","stream":"LTS"},{"version":"5.6.3p4","releaseDate":"2017-09-22T16:54:29.4830000+03:00","stream":"Tech"},{"version":"2017.3.0b1","releaseDate":"2017-09-21T16:38:59.5970000+03:00","stream":"Beta"},{"version":"5.4.6f3","releaseDate":"2017-09-20T11:37:58.9140000+03:00","stream":"LTS"},{"version":"2017.1.1p2","releaseDate":"2017-09-15T13:24:31.5570000+03:00","stream":"Tech"},{"version":"5.5.4p5","releaseDate":"2017-09-14T17:25:05.9100000+03:00","stream":"Tech"},{"version":"2017.2.0b11","releaseDate":"2017-09-12T16:31:58.6150000+03:00","stream":"Beta"},{"version":"2017.1.1p1","releaseDate":"2017-09-08T19:32:50.0560000+03:00","stream":"Tech"},{"version":"5.6.3p3","releaseDate":"2017-09-08T16:29:05.0680000+03:00","stream":"Tech"},{"version":"2017.2.0b10","releaseDate":"2017-09-04T23:19:12.8220000+03:00","stream":"Beta"},{"version":"2017.1.1f1","releaseDate":"2017-09-04T14:34:13.9350000+03:00","stream":"LTS"},{"version":"5.6.3p2","releaseDate":"2017-09-01T19:44:02.7640000+03:00","stream":"Tech"},{"version":"5.5.4p4","releaseDate":"2017-08-31T20:24:23.0240000+03:00","stream":"Tech"},{"version":"2017.2.0b9","releaseDate":"2017-08-29T18:59:23.8640000+03:00","stream":"Beta"},{"version":"2017.1.0p5","releaseDate":"2017-08-25T14:26:12.4730000+03:00","stream":"Tech"},{"version":"2017.2.0b8","releaseDate":"2017-08-18T17:33:35.1850000+03:00","stream":"Beta"},{"version":"5.3.8p2","releaseDate":"2017-08-18T13:53:50.1590000+03:00","stream":"Tech"},{"version":"5.4.5p5","releaseDate":"2017-08-18T03:06:42.9010000+03:00","stream":"Tech"},{"version":"5.5.4p3","releaseDate":"2017-08-18T00:45:42.7300000+03:00","stream":"Tech"},{"version":"5.6.3p1","releaseDate":"2017-08-17T23:56:53.9060000+03:00","stream":"Tech"},{"version":"2017.1.0p4","releaseDate":"2017-08-17T10:16:35.4780000+03:00","stream":"Tech"},{"version":"2017.2.0b7","releaseDate":"2017-08-15T20:42:22.6120000+03:00","stream":"Beta"},{"version":"2017.1.0p3","releaseDate":"2017-08-11T17:09:22.9780000+03:00","stream":"Tech"},{"version":"2017.2.0b6","releaseDate":"2017-08-09T00:09:18.9660000+03:00","stream":"Beta"},{"version":"5.6.3f1","releaseDate":"2017-08-01T20:03:58.0440000+03:00","stream":"LTS"},{"version":"2017.2.0b5","releaseDate":"2017-08-01T12:24:10.5780000+03:00","stream":"Beta"},{"version":"2017.1.0p2","releaseDate":"2017-07-27T15:04:31.4330000+03:00","stream":"Tech"},{"version":"5.5.4p2","releaseDate":"2017-07-26T14:06:59.7850000+03:00","stream":"Tech"},{"version":"5.6.2p4","releaseDate":"2017-07-21T20:06:22.5790000+03:00","stream":"Tech"},{"version":"2017.1.0p1","releaseDate":"2017-07-21T19:18:52.6830000+03:00","stream":"Tech"},{"version":"2017.2.0b4","releaseDate":"2017-07-20T19:07:24.3140000+03:00","stream":"Beta"},{"version":"5.6.2p3","releaseDate":"2017-07-17T17:54:07.4300000+03:00","stream":"Tech"},{"version":"2017.2.0b3","releaseDate":"2017-07-14T16:58:24.2490000+03:00","stream":"Beta"},{"version":"2017.1.0f3","releaseDate":"2017-07-10T14:29:48.3440000+03:00","stream":"LTS"},{"version":"2017.2.0b2","releaseDate":"2017-07-06T17:42:46.1050000+03:00","stream":"Beta"},{"version":"5.6.2p2","releaseDate":"2017-07-06T15:05:04.2550000+03:00","stream":"Tech"},{"version":"2017.1.0f2","releaseDate":"2017-07-05T21:06:25.7100000+03:00","stream":"LTS"},{"version":"5.6.2p1","releaseDate":"2017-06-29T17:08:51.3150000+03:00","stream":"Tech"},{"version":"5.4.5p4","releaseDate":"2017-06-28T14:33:16.4010000+03:00","stream":"Tech"},{"version":"2017.1.0f1","releaseDate":"2017-06-26T21:35:00.1560000+03:00","stream":"LTS"},{"version":"5.5.4p1","releaseDate":"2017-06-22T17:02:21.4330000+03:00","stream":"Tech"},{"version":"5.6.2f1","releaseDate":"2017-06-21T16:10:00.3850000+03:00","stream":"LTS"},{"version":"2017.1.0b10","releaseDate":"2017-06-19T18:48:58.2720000+03:00","stream":"Beta"},{"version":"5.6.1p4","releaseDate":"2017-06-16T18:05:31.4130000+03:00","stream":"Tech"},{"version":"5.3.8f2","releaseDate":"2017-06-13T14:42:19.0780000+03:00","stream":"LTS"},{"version":"2017.1.0b9","releaseDate":"2017-06-09T22:19:53.7480000+03:00","stream":"Beta"},{"version":"5.4.5p3","releaseDate":"2017-06-09T22:08:09.9090000+03:00","stream":"Tech"},{"version":"5.6.1p3","releaseDate":"2017-06-09T20:34:47.4540000+03:00","stream":"Tech"},{"version":"5.5.4f1","releaseDate":"2017-06-06T19:31:53.0570000+03:00","stream":"LTS"},{"version":"2017.1.0b8","releaseDate":"2017-06-02T18:43:21.3940000+03:00","stream":"Beta"},{"version":"5.6.1p2","releaseDate":"2017-06-02T13:52:12.6100000+03:00","stream":"Tech"},{"version":"5.4.5p2","releaseDate":"2017-05-29T11:25:58.9590000+03:00","stream":"Tech"},{"version":"2017.1.0b7","releaseDate":"2017-05-26T19:22:45.2060000+03:00","stream":"Beta"},{"version":"5.5.3p4","releaseDate":"2017-05-24T19:03:02.5850000+03:00","stream":"Tech"},{"version":"2017.1.0b6","releaseDate":"2017-05-19T14:33:20.6370000+03:00","stream":"Beta"},{"version":"5.6.1p1","releaseDate":"2017-05-18T15:38:02.4330000+03:00","stream":"Tech"},{"version":"2017.1.0b5","releaseDate":"2017-05-11T15:55:57.6670000+03:00","stream":"Beta"},{"version":"5.6.1f1","releaseDate":"2017-05-11T13:42:26.0420000+03:00","stream":"LTS"},{"version":"5.5.3p3","releaseDate":"2017-05-10T18:53:39.6190000+03:00","stream":"Tech"},{"version":"2017.1.0b4","releaseDate":"2017-05-08T17:47:09.7280000+03:00","stream":"Beta"},{"version":"5.6.0p4","releaseDate":"2017-05-08T15:16:30.1560000+03:00","stream":"Tech"},{"version":"2017.1.0b3","releaseDate":"2017-05-03T16:29:05.2510000+03:00","stream":"Beta"},{"version":"5.6.0p3","releaseDate":"2017-04-27T22:02:39.4410000+03:00","stream":"Tech"},{"version":"2017.1.0b2","releaseDate":"2017-04-26T16:56:42.4410000+03:00","stream":"Beta"},{"version":"5.5.3p2","releaseDate":"2017-04-25T17:57:56.6830000+03:00","stream":"Tech"},{"version":"5.6.0p2","releaseDate":"2017-04-21T23:03:49.1450000+03:00","stream":"Tech"},{"version":"5.6.0p1","releaseDate":"2017-04-18T16:49:03.9820000+03:00","stream":"Tech"},{"version":"5.5.3p1","releaseDate":"2017-04-13T18:11:15.6120000+03:00","stream":"Tech"},{"version":"2017.1.0b1","releaseDate":"2017-04-11T17:05:40.0040000+03:00","stream":"Beta"},{"version":"5.6.0f3","releaseDate":"2017-03-31T18:00:22.4860000+03:00","stream":"LTS"},{"version":"5.5.3f1","releaseDate":"2017-03-31T13:51:39.1560000+03:00","stream":"LTS"},{"version":"5.4.5p1","releaseDate":"2017-03-30T17:45:22.1890000+03:00","stream":"Tech"},{"version":"5.6.0f2","releaseDate":"2017-03-27T19:28:45.6580000+03:00","stream":"LTS"},{"version":"5.5.2p4","releaseDate":"2017-03-23T12:35:50.2430000+02:00","stream":"Tech"},{"version":"5.5.2p3","releaseDate":"2017-03-17T20:58:40.1640000+02:00","stream":"Tech"},{"version":"5.6.0f1","releaseDate":"2017-03-17T18:41:48.6380000+02:00","stream":"LTS"},{"version":"5.4.5f1","releaseDate":"2017-03-10T16:21:03.7460000+02:00","stream":"LTS"},{"version":"5.6.0b11","releaseDate":"2017-03-08T19:05:35.2990000+02:00","stream":"Beta"},{"version":"5.5.2p2","releaseDate":"2017-03-08T18:29:03.3490000+02:00","stream":"Tech"},{"version":"5.5.2p1","releaseDate":"2017-03-03T14:06:12.3730000+02:00","stream":"Tech"},{"version":"5.6.0b10","releaseDate":"2017-03-02T19:57:00.6420000+02:00","stream":"Beta"},{"version":"5.4.4p4","releaseDate":"2017-03-01T13:11:30.9140000+02:00","stream":"Tech"},{"version":"5.5.2f1","releaseDate":"2017-02-24T11:54:27.4260000+02:00","stream":"LTS"},{"version":"5.5.1p4","releaseDate":"2017-02-17T18:08:36.9750000+02:00","stream":"Tech"},{"version":"5.6.0b9","releaseDate":"2017-02-17T16:41:26.8530000+02:00","stream":"Beta"},{"version":"5.6.0b8","releaseDate":"2017-02-13T17:54:50.1120000+02:00","stream":"Beta"},{"version":"5.5.1p3","releaseDate":"2017-02-09T14:22:29.2650000+02:00","stream":"Tech"},{"version":"5.4.4p3","releaseDate":"2017-02-08T19:25:47.9670000+02:00","stream":"Tech"},{"version":"5.3.7p4","releaseDate":"2017-02-07T19:01:05.9100000+02:00","stream":"Tech"},{"version":"5.6.0b7","releaseDate":"2017-02-07T17:05:04.8950000+02:00","stream":"Beta"},{"version":"5.5.1p2","releaseDate":"2017-02-03T15:27:39.9140000+02:00","stream":"Tech"},{"version":"5.6.0b6","releaseDate":"2017-02-01T17:38:41.3800000+02:00","stream":"Beta"},{"version":"5.5.1p1","releaseDate":"2017-02-01T16:22:21.4140000+02:00","stream":"Tech"},{"version":"5.6.0b5","releaseDate":"2017-01-26T11:26:16.7750000+02:00","stream":"Beta"},{"version":"5.4.4p2","releaseDate":"2017-01-25T17:10:44.2950000+02:00","stream":"Tech"},{"version":"5.5.1f1","releaseDate":"2017-01-24T12:32:21.5040000+02:00","stream":"LTS"},{"version":"5.6.0b4","releaseDate":"2017-01-17T22:17:27.6580000+02:00","stream":"Beta"},{"version":"5.4.4p1","releaseDate":"2017-01-13T18:46:40.7580000+02:00","stream":"Tech"},{"version":"5.5.0p4","releaseDate":"2017-01-11T18:18:53.9900000+02:00","stream":"Tech"},{"version":"5.4.4f1","releaseDate":"2017-01-05T17:53:15.0500000+02:00","stream":"LTS"},{"version":"5.5.0p3","releaseDate":"2017-01-05T11:04:18.8540000+02:00","stream":"Tech"},{"version":"5.6.0b3","releaseDate":"2016-12-23T19:38:00.2460000+02:00","stream":"Beta"},{"version":"5.3.7p3","releaseDate":"2016-12-21T18:13:38.5020000+02:00","stream":"Tech"},{"version":"5.6.0b2","releaseDate":"2016-12-20T15:32:52.8740000+02:00","stream":"Beta"},{"version":"5.5.0p2","releaseDate":"2016-12-16T22:23:56.1000000+02:00","stream":"Tech"},{"version":"5.4.3p4","releaseDate":"2016-12-16T15:59:43.9270000+02:00","stream":"Tech"},{"version":"5.6.0b1","releaseDate":"2016-12-13T12:35:25.7510000+02:00","stream":"Beta"},{"version":"5.4.3p3","releaseDate":"2016-12-07T18:18:47.8600000+02:00","stream":"Tech"},{"version":"5.5.0p1","releaseDate":"2016-12-07T17:25:41.5570000+02:00","stream":"Tech"},{"version":"5.4.3p2","releaseDate":"2016-12-01T15:54:47.9540000+02:00","stream":"Tech"},{"version":"5.5.0f3","releaseDate":"2016-11-30T13:49:48.4400000+02:00","stream":"LTS"},{"version":"5.3.7p2","releaseDate":"2016-11-28T18:06:22.4430000+02:00","stream":"Tech"},{"version":"5.4.3p1","releaseDate":"2016-11-28T12:09:25.4130000+02:00","stream":"Tech"},{"version":"5.5.0f2","releaseDate":"2016-11-25T12:16:50.2830000+02:00","stream":"LTS"},{"version":"5.5.0f1","releaseDate":"2016-11-22T18:14:01.1850000+02:00","stream":"LTS"},{"version":"5.4.3f1","releaseDate":"2016-11-17T14:51:02.0260000+02:00","stream":"LTS"},{"version":"5.3.7p1","releaseDate":"2016-11-11T17:32:03.0220000+02:00","stream":"Tech"},{"version":"5.5.0b11","releaseDate":"2016-11-09T20:04:57.2170000+02:00","stream":"Beta"},{"version":"5.5.0b10","releaseDate":"2016-11-09T17:40:05.1770000+02:00","stream":"Beta"},{"version":"5.4.2p4","releaseDate":"2016-11-09T14:35:14.5410000+02:00","stream":"Tech"},{"version":"5.3.7f1","releaseDate":"2016-11-08T15:22:26.8980000+02:00","stream":"LTS"},{"version":"5.4.2p3","releaseDate":"2016-11-02T17:35:46.0380000+02:00","stream":"Tech"},{"version":"5.4.2p2","releaseDate":"2016-10-28T15:33:11.6310000+03:00","stream":"Tech"},{"version":"5.4.2p1","releaseDate":"2016-10-24T18:58:28.0140000+03:00","stream":"Tech"},{"version":"5.5.0b9","releaseDate":"2016-10-24T18:06:57.1480000+03:00","stream":"Beta"},{"version":"5.3.6p8","releaseDate":"2016-10-24T17:31:38.0530000+03:00","stream":"Tech"},{"version":"5.4.2f2","releaseDate":"2016-10-21T12:41:39.1710000+03:00","stream":"LTS"},{"version":"5.5.0b8","releaseDate":"2016-10-20T16:10:07.3480000+03:00","stream":"Beta"},{"version":"5.5.0b7","releaseDate":"2016-10-11T17:19:07.1390000+03:00","stream":"Beta"},{"version":"5.3.6p7","releaseDate":"2016-10-07T15:14:33.7940000+03:00","stream":"Tech"},{"version":"5.4.1p4","releaseDate":"2016-10-05T19:04:22.6090000+03:00","stream":"Tech"},{"version":"5.5.0b6","releaseDate":"2016-10-03T19:33:15.7800000+03:00","stream":"Beta"},{"version":"5.4.1p3","releaseDate":"2016-09-28T17:50:34.1120000+03:00","stream":"Tech"},{"version":"5.5.0b5","releaseDate":"2016-09-27T11:31:35.7680000+03:00","stream":"Beta"},{"version":"5.3.6p6","releaseDate":"2016-09-23T13:03:44.0380000+03:00","stream":"Tech"},{"version":"5.4.1p2","releaseDate":"2016-09-22T21:37:12.2160000+03:00","stream":"Tech"},{"version":"5.5.0b4","releaseDate":"2016-09-19T18:28:43.2030000+03:00","stream":"Beta"},{"version":"5.3.6p5","releaseDate":"2016-09-16T10:03:24.6470000+03:00","stream":"Tech"},{"version":"5.4.1p1","releaseDate":"2016-09-15T14:18:34.2100000+03:00","stream":"Tech"},{"version":"5.5.0b3","releaseDate":"2016-09-12T16:01:26.0040000+03:00","stream":"Beta"},{"version":"5.4.1f1","releaseDate":"2016-09-07T14:02:30.4590000+03:00","stream":"LTS"},{"version":"5.5.0b2","releaseDate":"2016-09-05T17:30:09.8380000+03:00","stream":"Beta"},{"version":"5.3.6p4","releaseDate":"2016-09-02T17:39:02.8790000+03:00","stream":"Tech"},{"version":"5.4.0p4","releaseDate":"2016-08-31T18:12:19.9330000+03:00","stream":"Tech"},{"version":"5.5.0b1","releaseDate":"2016-08-30T01:26:28.1480000+03:00","stream":"Beta"},{"version":"5.4.0p3","releaseDate":"2016-08-25T19:23:33.9710000+03:00","stream":"Tech"},{"version":"5.3.6p3","releaseDate":"2016-08-23T18:52:41.7170000+03:00","stream":"Tech"},{"version":"5.4.0p2","releaseDate":"2016-08-18T18:13:53.4540000+03:00","stream":"Tech"},{"version":"5.4.0p1","releaseDate":"2016-08-11T19:41:23.0620000+03:00","stream":"Tech"},{"version":"5.3.6p2","releaseDate":"2016-08-03T16:49:58.6420000+03:00","stream":"Tech"},{"version":"5.4.0f3","releaseDate":"2016-07-27T18:33:32.0650000+03:00","stream":"LTS"},{"version":"5.3.6p1","releaseDate":"2016-07-27T16:49:40.4080000+03:00","stream":"Tech"},{"version":"5.4.0f2","releaseDate":"2016-07-21T17:37:50.4920000+03:00","stream":"LTS"},{"version":"5.3.6f1","releaseDate":"2016-07-20T12:42:16.5870000+03:00","stream":"LTS"},{"version":"5.4.0f1","releaseDate":"2016-07-14T17:14:28.9480000+03:00","stream":"LTS"},{"version":"5.3.5p8","releaseDate":"2016-07-13T15:31:43.9130000+03:00","stream":"Tech"},{"version":"5.4.0b25","releaseDate":"2016-07-11T17:27:32.5710000+03:00","stream":"Beta"},{"version":"5.3.5p7","releaseDate":"2016-07-08T12:46:28.2840000+03:00","stream":"Tech"},{"version":"5.4.0b24","releaseDate":"2016-07-01T18:47:18.2330000+03:00","stream":"Beta"},{"version":"5.3.5p6","releaseDate":"2016-06-29T19:20:44.0350000+03:00","stream":"Tech"},{"version":"5.4.0b23","releaseDate":"2016-06-28T14:35:44.6560000+03:00","stream":"Beta"},{"version":"5.4.0b22","releaseDate":"2016-06-20T12:50:01.9180000+03:00","stream":"Beta"},{"version":"5.3.5p5","releaseDate":"2016-06-20T11:56:54.1950000+03:00","stream":"Tech"},{"version":"5.3.5p4","releaseDate":"2016-06-20T11:17:44.2570000+03:00","stream":"Tech"},{"version":"5.3.5p3","releaseDate":"2016-06-10T12:28:48.9900000+03:00","stream":"Tech"},{"version":"5.4.0b21","releaseDate":"2016-06-09T13:10:18.5030000+03:00","stream":"Beta"},{"version":"5.1.5f1","releaseDate":"2016-06-06T14:04:12.1990000+03:00","stream":"LTS"},{"version":"5.3.5p2","releaseDate":"2016-06-03T17:52:11.1590000+03:00","stream":"Tech"},{"version":"5.4.0b20","releaseDate":"2016-06-03T16:53:41.3450000+03:00","stream":"Beta"},{"version":"5.2.5f1","releaseDate":"2016-06-01T14:51:51.5940000+03:00","stream":"LTS"},{"version":"5.3.5p1","releaseDate":"2016-05-31T10:40:56.6820000+03:00","stream":"Tech"},{"version":"5.4.0b19","releaseDate":"2016-05-25T12:23:12.8120000+03:00","stream":"Beta"},{"version":"5.4.0b18","releaseDate":"2016-05-19T18:44:13.0190000+03:00","stream":"Beta"},{"version":"5.3.5f1","releaseDate":"2016-05-19T18:29:29.7780000+03:00","stream":"LTS"},{"version":"5.3.4p6","releaseDate":"2016-05-06T18:28:15.3400000+03:00","stream":"Tech"},{"version":"5.4.0b17","releaseDate":"2016-05-04T01:24:49.7340000+03:00","stream":"Beta"},{"version":"5.3.4p5","releaseDate":"2016-04-27T18:20:06.9680000+03:00","stream":"Tech"},{"version":"5.4.0b16","releaseDate":"2016-04-27T14:25:25.9450000+03:00","stream":"Beta"},{"version":"5.3.4p4","releaseDate":"2016-04-20T13:50:41.9420000+03:00","stream":"Tech"},{"version":"5.4.0b15","releaseDate":"2016-04-18T13:10:26.2100000+03:00","stream":"Beta"},{"version":"5.3.4p3","releaseDate":"2016-04-13T13:24:45.5350000+03:00","stream":"Tech"},{"version":"5.4.0b14","releaseDate":"2016-04-11T14:55:25.2850000+03:00","stream":"Beta"},{"version":"5.3.4p2","releaseDate":"2016-04-08T16:41:06.6810000+03:00","stream":"Tech"},{"version":"5.4.0b13","releaseDate":"2016-04-04T12:27:37.0640000+03:00","stream":"Beta"},{"version":"5.4.0b12","releaseDate":"2016-03-29T19:39:18.7120000+03:00","stream":"Beta"},{"version":"5.3.4p1","releaseDate":"2016-03-24T00:30:26.0740000+02:00","stream":"Tech"},{"version":"5.4.0b11","releaseDate":"2016-03-21T13:52:03.7650000+02:00","stream":"Beta"},{"version":"5.4.0b10","releaseDate":"2016-03-15T15:45:23.9730000+02:00","stream":"Beta"},{"version":"5.3.4f1","releaseDate":"2016-03-15T15:33:58.4510000+02:00","stream":"LTS"},{"version":"5.3.3p3","releaseDate":"2016-03-14T19:48:02.2170000+02:00","stream":"Tech"},{"version":"5.4.0b9","releaseDate":"2016-03-08T12:03:52.2650000+02:00","stream":"Beta"},{"version":"5.3.3p2","releaseDate":"2016-03-04T18:05:49.8740000+02:00","stream":"Tech"},{"version":"5.4.0b8","releaseDate":"2016-03-02T14:14:56.5970000+02:00","stream":"Beta"},{"version":"5.3.3p1","releaseDate":"2016-02-24T18:53:39.5190000+02:00","stream":"Tech"},{"version":"5.3.3f1","releaseDate":"2016-02-23T14:53:03.4530000+02:00","stream":"LTS"},{"version":"5.4.0b7","releaseDate":"2016-02-22T16:29:51.4670000+02:00","stream":"Beta"},{"version":"5.3.2p4","releaseDate":"2016-02-20T21:48:43.6160000+02:00","stream":"Tech"},{"version":"5.4.0b6","releaseDate":"2016-02-15T18:11:52.0550000+02:00","stream":"Beta"},{"version":"5.3.2p3","releaseDate":"2016-02-12T11:22:27.9230000+02:00","stream":"Tech"},{"version":"5.4.0b5","releaseDate":"2016-02-09T18:00:54.0100000+02:00","stream":"Beta"},{"version":"5.3.2p2","releaseDate":"2016-02-03T20:16:50.7640000+02:00","stream":"Tech"},{"version":"5.4.0b4","releaseDate":"2016-01-30T16:05:07.6350000+02:00","stream":"Beta"},{"version":"5.3.2p1","releaseDate":"2016-01-28T18:05:44.7130000+02:00","stream":"Tech"},{"version":"5.3.2f1","releaseDate":"2016-01-27T17:27:25.9430000+02:00","stream":"LTS"},{"version":"5.3.1p4","releaseDate":"2016-01-23T14:12:30.0740000+02:00","stream":"Tech"},{"version":"5.4.0b3","releaseDate":"2016-01-22T19:00:02.9810000+02:00","stream":"Beta"},{"version":"5.4.0b2","releaseDate":"2016-01-15T13:09:43.6900000+02:00","stream":"Beta"},{"version":"5.3.1p3","releaseDate":"2016-01-14T19:48:48.7310000+02:00","stream":"Tech"},{"version":"5.4.0b1","releaseDate":"2016-01-13T00:10:16.2620000+02:00","stream":"Beta"},{"version":"5.3.1p2","releaseDate":"2016-01-08T14:16:04.4350000+02:00","stream":"Tech"},{"version":"5.3.1p1","releaseDate":"2016-01-08T14:10:16.3210000+02:00","stream":"Tech"},{"version":"5.3.1f1","releaseDate":"2015-12-18T16:23:10.2740000+02:00","stream":"LTS"},{"version":"5.2.4f1","releaseDate":"2015-12-15T18:37:45.1050000+02:00","stream":"LTS"},{"version":"5.2.3p3","releaseDate":"2015-12-10T12:23:24.9490000+02:00","stream":"Tech"},{"version":"5.3.0f4","releaseDate":"2015-12-08T00:12:35.0350000+02:00","stream":"LTS"},{"version":"5.2.3p2","releaseDate":"2015-12-03T14:16:45.5710000+02:00","stream":"Tech"},{"version":"5.2.3p1","releaseDate":"2015-11-27T17:42:46.6020000+02:00","stream":"Tech"},{"version":"5.3.0f2","releaseDate":"2015-11-23T17:08:26.3310000+02:00","stream":"LTS"},{"version":"5.2.3f1","releaseDate":"2015-11-19T12:38:36.6940000+02:00","stream":"LTS"},{"version":"5.2.2p4","releaseDate":"2015-11-18T13:12:41.1430000+02:00","stream":"Tech"},{"version":"5.3.0f1","releaseDate":"2015-11-14T17:28:15.8630000+02:00","stream":"LTS"},{"version":"5.2.2p3","releaseDate":"2015-11-10T18:44:28.0350000+02:00","stream":"Tech"},{"version":"5.3.0b6","releaseDate":"2015-11-09T17:44:01.7640000+02:00","stream":"Beta"},{"version":"5.3.0b5","releaseDate":"2015-11-02T19:19:46.6150000+02:00","stream":"Beta"},{"version":"5.2.2p2","releaseDate":"2015-10-30T18:26:48.9590000+02:00","stream":"Tech"},{"version":"5.2.2p1","releaseDate":"2015-10-24T20:00:34.5130000+03:00","stream":"Tech"},{"version":"5.3.0b4","releaseDate":"2015-10-23T15:11:59.0160000+03:00","stream":"Beta"},{"version":"5.2.2f1","releaseDate":"2015-10-21T16:11:59.7920000+03:00","stream":"LTS"},{"version":"5.3.0b3","releaseDate":"2015-10-16T23:48:22.9780000+03:00","stream":"Beta"},{"version":"5.2.1p4","releaseDate":"2015-10-15T09:00:51.3200000+03:00","stream":"Tech"},{"version":"5.3.0b2","releaseDate":"2015-10-10T16:11:44.6410000+03:00","stream":"Beta"},{"version":"5.2.1p3","releaseDate":"2015-10-09T17:49:17.0510000+03:00","stream":"Tech"},{"version":"5.1.4f1","releaseDate":"2015-10-06T11:17:42.7590000+03:00","stream":"LTS"},{"version":"5.3.0b1","releaseDate":"2015-10-02T22:38:07.8510000+03:00","stream":"Beta"},{"version":"5.2.1p2","releaseDate":"2015-10-01T16:15:11.2250000+03:00","stream":"Tech"},{"version":"5.2.1p1","releaseDate":"2015-09-25T16:13:16.8560000+03:00","stream":"Tech"},{"version":"5.2.1f1","releaseDate":"2015-09-22T15:24:32.4680000+03:00","stream":"LTS"},{"version":"5.2.0p1","releaseDate":"2015-09-18T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.1.3p3","releaseDate":"2015-09-11T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.1.3p2","releaseDate":"2015-09-04T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.2.0f3","releaseDate":"2015-09-03T12:33:57.1480000+03:00","stream":"LTS"},{"version":"5.1.3p1","releaseDate":"2015-08-27T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.1.3f1","releaseDate":"2015-08-24T12:50:04.1790000+03:00","stream":"LTS"},{"version":"5.2.0f2","releaseDate":"2015-08-21T18:46:49.9960000+03:00","stream":"LTS"},{"version":"5.2.0f1","releaseDate":"2015-08-16T18:50:39.4690000+03:00","stream":"LTS"},{"version":"5.2.0b6","releaseDate":"2015-08-07T22:27:28.2000000+03:00","stream":"Beta"},{"version":"5.1.2p3","releaseDate":"2015-08-06T18:11:03.9900000+03:00","stream":"Tech"},{"version":"5.2.0b5","releaseDate":"2015-07-31T13:58:16.6300000+03:00","stream":"Beta"},{"version":"5.1.2p2","releaseDate":"2015-07-30T19:04:41.2110000+03:00","stream":"Tech"},{"version":"5.2.0b4","releaseDate":"2015-07-23T18:55:44.2700000+03:00","stream":"Beta"},{"version":"5.1.2p1","releaseDate":"2015-07-23T18:20:51.9840000+03:00","stream":"Tech"},{"version":"5.2.0b3","releaseDate":"2015-07-17T22:58:20.5700000+03:00","stream":"Beta"},{"version":"5.1.2f1","releaseDate":"2015-07-16T11:54:11.0960000+03:00","stream":"LTS"},{"version":"5.2.0b2","releaseDate":"2015-07-10T21:37:49.5390000+03:00","stream":"Beta"},{"version":"5.1.1p4","releaseDate":"2015-07-10T12:08:40.1750000+03:00","stream":"Tech"},{"version":"5.0.4f1","releaseDate":"2015-07-06T15:10:34.2300000+03:00","stream":"LTS"},{"version":"5.1.1p3","releaseDate":"2015-07-03T19:18:12.6150000+03:00","stream":"Tech"},{"version":"5.2.0b1","releaseDate":"2015-07-01T19:26:20.9210000+03:00","stream":"Beta"},{"version":"5.1.1p2","releaseDate":"2015-06-26T00:27:14.0670000+03:00","stream":"Tech"},{"version":"5.0.3p3","releaseDate":"2015-06-24T18:55:13.6440000+03:00","stream":"Tech"},{"version":"5.1.1p1","releaseDate":"2015-06-23T18:05:55.5660000+03:00","stream":"Tech"},{"version":"5.1.1f1","releaseDate":"2015-06-18T13:20:02.2470000+03:00","stream":"LTS"},{"version":"5.0.3p2","releaseDate":"2015-06-18T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.1.0p1","releaseDate":"2015-06-12T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.3p1","releaseDate":"2015-06-11T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.3f2","releaseDate":"2015-06-09T18:36:46.8690000+03:00","stream":"LTS"},{"version":"5.1.0f3","releaseDate":"2015-06-04T00:31:28.2170000+03:00","stream":"LTS"},{"version":"5.0.2p4","releaseDate":"2015-06-03T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.2p3","releaseDate":"2015-05-28T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.2p2","releaseDate":"2015-05-20T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.2p1","releaseDate":"2015-05-15T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.2f1","releaseDate":"2015-05-13T17:05:42.7910000+03:00","stream":"LTS"},{"version":"5.0.1p4","releaseDate":"2015-05-08T13:25:56.9760000+03:00","stream":"Tech"},{"version":"5.0.1p3","releaseDate":"2015-04-29T03:00:00.0000000+03:00","stream":"Tech"},{"version":"5.0.1p2","releaseDate":"2015-04-24T17:14:44.9700000+03:00","stream":"Tech"},{"version":"5.0.1p1","releaseDate":"2015-04-16T11:21:07.0000000+03:00","stream":"Tech"},{"version":"5.0.1f1","releaseDate":"2015-03-31T19:55:08.3760000+03:00","stream":"LTS"},{"version":"5.0.0p3","releaseDate":"2015-03-26T14:03:56.0680000+02:00","stream":"Tech"},{"version":"5.0.0p2","releaseDate":"2015-03-20T18:38:49.5150000+02:00","stream":"Tech"},{"version":"5.0.0p1","releaseDate":"2015-03-16T17:20:13.6040000+02:00","stream":"Tech"},{"version":"5.0.0f4","releaseDate":"2015-02-25T17:49:05.8350000+02:00","stream":"LTS"}] \ No newline at end of file diff --git a/UnityLauncherPro/ThemeEditor.xaml.cs b/UnityLauncherPro/ThemeEditor.xaml.cs index a5da45a..a6b6686 100644 --- a/UnityLauncherPro/ThemeEditor.xaml.cs +++ b/UnityLauncherPro/ThemeEditor.xaml.cs @@ -109,35 +109,47 @@ private void GridThemeColors_SelectionChanged(object sender, SelectionChangedEve private void BtnSaveTheme_Click(object sender, RoutedEventArgs e) { - var themeFolder = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Themes"); - - if (Directory.Exists(themeFolder) == false) Directory.CreateDirectory(themeFolder); - - SaveFileDialog saveFileDialog = new SaveFileDialog(); - if (string.IsNullOrEmpty(previousSaveFileName)) - { - saveFileDialog.FileName = "custom"; - } - else + // 1) Determine the default filename (with .ini) + string defaultName = string.IsNullOrEmpty(previousSaveFileName) + ? "custom.ini" + : previousSaveFileName + ".ini"; + + // 2) Ask the helper for a safe full path + string initialFullPath = Tools.GetSafeFilePath("Themes", defaultName); + string initialDir = Path.GetDirectoryName(initialFullPath); + string initialFile = Path.GetFileNameWithoutExtension(initialFullPath); + + // 3) Configure the save dialog + var saveFileDialog = new SaveFileDialog { - saveFileDialog.FileName = previousSaveFileName; - } - saveFileDialog.DefaultExt = ".ini"; - saveFileDialog.Filter = "Theme files (.ini)|*.ini"; - saveFileDialog.InitialDirectory = themeFolder; - saveFileDialog.RestoreDirectory = true; - + FileName = initialFile, // no extension here + DefaultExt = ".ini", + Filter = "Theme files (.ini)|*.ini", + InitialDirectory = initialDir, + RestoreDirectory = true + }; + + // 4) Show and, if confirmed, write out the INI if (saveFileDialog.ShowDialog() == true) { - List iniRows = new List(); - iniRows.Add("# Created with UnityLauncherPro built-in theme editor " + DateTime.Now.ToString("dd/MM/yyyy")); + // Build INI lines + var iniRows = new List + { + "# Created with UnityLauncherPro built-in theme editor " + + DateTime.Now.ToString("dd/MM/yyyy") + }; + // original-style loop for (int i = 0; i < themeColors.Count; i++) { iniRows.Add(themeColors[i].Key + "=" + themeColors[i].Brush.ToString()); } - var themePath = saveFileDialog.FileName; + // Get the chosen path & ensure its folder exists + string themePath = saveFileDialog.FileName; previousSaveFileName = Path.GetFileNameWithoutExtension(themePath); + Directory.CreateDirectory(Path.GetDirectoryName(themePath)); + + // Write out File.WriteAllLines(themePath, iniRows); Console.WriteLine("Saved theme: " + themePath); } diff --git a/UnityLauncherPro/Tools.cs b/UnityLauncherPro/Tools.cs index 1722f9d..0c92fa3 100644 --- a/UnityLauncherPro/Tools.cs +++ b/UnityLauncherPro/Tools.cs @@ -1,6 +1,7 @@ using Microsoft.Win32; using System; using System.Collections.Generic; +using System.ComponentModel; using System.Diagnostics; using System.IO; using System.Linq; @@ -16,6 +17,7 @@ using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; +using System.Windows.Threading; using UnityLauncherPro.Helpers; namespace UnityLauncherPro @@ -224,7 +226,7 @@ public static void AddProjectToHistory(string projectPath) } // NOTE holding alt key (when using alt+o) brings up unity project selector - public static Process LaunchProject(Project proj, DataGrid dataGridRef = null, bool useInitScript = false, bool upgrade = false) + public static Process LaunchProject(Project proj, DataGrid dataGridRef = null, bool useInitScript = false, bool upgrade = false, bool cloneFromTemplate = false) { if (proj == null) return null; @@ -256,13 +258,6 @@ public static Process LaunchProject(Project proj, DataGrid dataGridRef = null, b Directory.CreateDirectory(assetsFolder); } - // when opening project, check for crashed backup scene first - var cancelLaunch = CheckCrashBackupScene(proj.Path); - if (cancelLaunch == true) - { - return null; - } - // if its upgrade, we dont want to check current version if (upgrade == false) { @@ -279,17 +274,31 @@ public static Process LaunchProject(Project proj, DataGrid dataGridRef = null, b var unityExePath = GetUnityExePath(proj.Version); if (unityExePath == null) { + // if no editors installed, show message + if (MainWindow.unityInstallationsSource.Count == 0) + { + MessageBox.Show($"No Unity versions installed. Please run {MainWindow.appName} first to setup root folders.", MainWindow.appName, MessageBoxButton.OK, MessageBoxImage.Warning); + return null; + } + DisplayUpgradeDialog(proj, null, useInitScript); return null; } + // when opening project, check for crashed backup scene first + var cancelLaunch = CheckCrashBackupScene(proj.Path); + if (cancelLaunch == true) + { + return null; + } + Process newProcess = new Process(); try { var cmd = "\"" + unityExePath + "\""; newProcess.StartInfo.FileName = cmd; - var unitycommandlineparameters = " -projectPath " + "\"" + proj.Path + "\""; + string unitycommandlineparameters = (cloneFromTemplate ? " -createproject " : " -projectPath ") + "\"" + proj.Path + "\""; string customArguments = proj.Arguments; if (string.IsNullOrEmpty(customArguments) == false) @@ -399,7 +408,7 @@ static bool CheckCrashBackupScene(string projectPath) var recoveryFile = Path.Combine(projectPath, "Temp", "__Backupscenes", "0.backup"); if (File.Exists(recoveryFile)) { - var result = MessageBox.Show("Crash recovery scene found, do you want to copy it into Assets/_Recovery/-folder?", "UnityLauncherPro - Scene Recovery", MessageBoxButton.YesNo, MessageBoxImage.Question); + var result = MessageBox.Show("Crash recovery scene found, do you want to MOVE it into Assets/_Recovery/-folder?", "UnityLauncherPro - Scene Recovery", MessageBoxButton.YesNo, MessageBoxImage.Question); if (result == MessageBoxResult.Yes) { var restoreFolder = Path.Combine(projectPath, "Assets", "_Recovery"); @@ -411,7 +420,22 @@ static bool CheckCrashBackupScene(string projectPath) { Int32 unixTimestamp = (Int32)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; var uniqueFileName = "Recovered_Scene" + unixTimestamp + ".unity"; - File.Copy(recoveryFile, Path.Combine(restoreFolder, uniqueFileName)); + + try + { + File.Move(recoveryFile, Path.Combine(restoreFolder, uniqueFileName)); + // remove folder, otherwise unity 6000.2 asks for recovery + Directory.Delete(Path.Combine(projectPath, "Temp", "__Backupscenes"), true); + + Console.WriteLine("moved file to " + uniqueFileName); + } + catch (IOException) + { + // if move failed, try copy + File.Copy(recoveryFile, Path.Combine(restoreFolder, uniqueFileName)); + Console.WriteLine("copied file"); + } + Console.WriteLine("Recovered crashed scene into: " + restoreFolder); } else @@ -438,6 +462,8 @@ public static string GetUnityExePath(string version) // opens Explorer to target folder public static bool LaunchExplorer(string folder) { + if (folder == null || folder.Length < 1) return false; + if (Directory.Exists(folder) == true) { Process.Start(folder); @@ -488,7 +514,7 @@ public static bool LaunchExplorerSelectFile(string fileName) } // run any exe, return process - public static Process LaunchExe(string path, string param = null) + public static Process LaunchExe(string path, string param = null, bool captureOutput = false) { if (string.IsNullOrEmpty(path)) return null; @@ -510,6 +536,12 @@ public static Process LaunchExe(string path, string param = null) newProcess = new Process(); newProcess.StartInfo.FileName = "\"" + path + "\""; newProcess.StartInfo.Arguments = param; + if (captureOutput) + { + newProcess.StartInfo.RedirectStandardError = true; + newProcess.StartInfo.RedirectStandardOutput = true; + newProcess.StartInfo.UseShellExecute = false; + } newProcess.EnableRaisingEvents = true; // needed to get Exited event newProcess.Start(); } @@ -520,8 +552,8 @@ public static Process LaunchExe(string path, string param = null) } return newProcess; } - // Console.WriteLine("Failed to run exe: " + path + " " + param); - // return null; + // Console.WriteLine("Failed to run exe: " + path + " " + param); + // return null; } @@ -667,6 +699,21 @@ public static async void DownloadInBrowser(string version, bool preferFullInstal if (version == null) return; string exeURL = await GetUnityUpdates.FetchDownloadUrl(version); + // null from unity api? then try direct download + // https://beta.unity3d.com/download/330fbefc18b7/UnityDownloadAssistant-6000.1.0a8.exe + if (exeURL == null) + { + // exe url not found, try unofficial list (TODO this is hack to avoid null url, because unofficial list items have been cached to local json, without download url..) + Console.WriteLine("Fixing null in DownloadInBrowser ,v=" + version); + var downloadURL = await GetUnityUpdates.CheckUnofficialVersionList(version); + if (string.IsNullOrEmpty(downloadURL) == false) + { + string unityHash = ParseHashCodeFromURL(downloadURL); + exeURL = ParseDownloadURLFromWebpage(version, unityHash, false, true); + } + return; + } + if (preferFullInstaller == true) { exeURL = exeURL.Replace("UnityDownloadAssistant-" + version + ".exe", "Windows64EditorInstaller/UnitySetup64-" + version + ".exe"); @@ -689,12 +736,26 @@ public static async void DownloadInBrowser(string version, bool preferFullInstal public static async void DownloadAndInstall(string version) { + string exeURL = await GetUnityUpdates.FetchDownloadUrl(version); + if (version == null) { Console.WriteLine("Error> Cannot download and install null version"); return; } - string exeURL = await GetUnityUpdates.FetchDownloadUrl(version); + + if (string.IsNullOrEmpty(exeURL) == true) + { + // exe url not found, try unofficial list (TODO this is hack to avoid null url, because unofficial list items have been cached to local json, without download url..) + Console.WriteLine("Fixing null in DownloadInBrowser ,v=" + version); + var downloadURL = await GetUnityUpdates.CheckUnofficialVersionList(version); + if (string.IsNullOrEmpty(downloadURL) == false) + { + string unityHash = ParseHashCodeFromURL(downloadURL); + exeURL = ParseDownloadURLFromWebpage(version, unityHash, false, true); + } + + } Console.WriteLine("download exeURL= (" + exeURL + ")"); @@ -729,11 +790,18 @@ public static async void DownloadAndInstall(string version) process.Exited += (sender, e) => DeleteTempFile(tempFile); process.Start(); } - catch (Exception) + catch (Win32Exception ex) when (ex.NativeErrorCode == 1223) // ERROR_CANCELLED + { + // User declined the UAC prompt + Console.WriteLine("User cancelled elevation (UAC)."); + DeleteTempFile(tempFile); + } + catch (Exception ex) { - Console.WriteLine("Failed to run exe: " + tempFile); + Console.WriteLine("Failed to run exe: " + tempFile + " - " + ex.Message); DeleteTempFile(tempFile); } + // TODO refresh upgrade dialog after installer finished } } @@ -750,6 +818,7 @@ public static async void DownloadAndInstall(string version) public static async Task DownloadInitScript(string currentInitScriptFullPath, string currentInitScriptLocationOrURL) { string currentInitScriptFolder = Path.GetDirectoryName(currentInitScriptFullPath); + string currentInitScriptFile = Path.GetFileName(currentInitScriptFullPath); string tempFile = Path.Combine(Path.GetTempPath(), currentInitScriptFile); bool isLocalFile = false; @@ -803,20 +872,24 @@ public static async Task DownloadInitScript(string currentInitScriptFullPath, st { File.Move(tempFile, currentInitScriptFullPath); } + SetStatus("Downloaded latest init script."); } else { Console.WriteLine("Invalid c# init file..(missing correct Namespace, Class or Method)"); + SetStatus("Invalid c# init file..(missing correct Namespace, Class or Method)"); } } catch (Exception e) { Console.WriteLine("File exception: " + e.Message); + SetStatus("File exception: " + e.Message); } } else { Console.WriteLine("Failed to download init script from: " + currentInitScriptLocationOrURL); + SetStatus("Failed to download init script from: " + currentInitScriptLocationOrURL); } } @@ -831,6 +904,8 @@ static void DeleteTempFile(string path) public static string DownloadHTML(string url) { + Console.WriteLine("DownloadHTML: " + url); + if (string.IsNullOrEmpty(url) == true) return null; using (WebClient client = new WebClient()) { @@ -853,19 +928,202 @@ public static string CleanVersionNumber(string version) var split = version.Split('.'); float parsedVersion = float.Parse($"{split[0]}.{split[1]}"); - // 2023.3 and newer Alpha releases, no replace - if (IsAlpha(version) && parsedVersion >= 2023.3) + + // For 2023.3 and newer pre-release (alpha or beta) versions, do not clean. + if ((IsAlpha(version) || version.Contains("b")) && parsedVersion >= 2023.3) { - // do nothing + // Do nothing; leave version unchanged. } else { - // note old patch versions still contains p## in the end - version = Regex.Replace(version, @"[f|a|b][0-9]{1,2}", "", RegexOptions.IgnoreCase); + // Remove the trailing patch/build indicator. + version = Regex.Replace(version, @"[fab][0-9]{1,2}", "", RegexOptions.IgnoreCase); } return version; } + + // TODO only hash version is used, cleanup the rest + public static string ParseDownloadURLFromWebpage(string version, string hash = null, bool preferFullInstaller = false, bool useHash = false) + { + string exeURL = ""; + + //Console.WriteLine("ParseDownloadURLFromWebpage: " + version + ", hash: " + useHash); + + if (string.IsNullOrEmpty(version)) return null; + + // NOTE no longer uses f# in the end + + string url = null; + if (useHash == false) + { + var cleanVersion = CleanVersionNumber(version); + // NOTE 2024 June, installs are now located on separate pages, like https://unity.com/releases/editor/whats-new/6000.0.5#installs + + // get correct page url + //url = "https://unity3d.com/get-unity/download/archive"; + // fix unity server problem, some pages says 404 found if no url params + url = "https://unity.com/releases/editor/whats-new/" + cleanVersion + "?unitylauncherpro#installs"; + //if (VersionIsPatch(version)) url = "https://unity3d.com/unity/qa/patch-releases"; + if (VersionIsBeta(version)) url = "https://unity.com/releases/editor/beta/" + version; + if (VersionIsAlpha(version)) url = "https://unity.com/releases/editor/alpha/" + version; + //url += "?unitylauncherpro"; + } + else + { + // NOTE version here is actually VERSION|HASH + //string hash = version; + url = $"https://beta.unity3d.com/download/{hash}/download.html"; + + //Console.WriteLine("hashurl: " + url); + + //version = FetchUnityVersionNumberFromHTML(url); + //Console.WriteLine(url); + //Console.WriteLine("got "+version); + if (string.IsNullOrEmpty(version)) + { + SetStatus("Failed to get version (" + version + ") number from hash: " + hash); + return null; + } + } + + //Console.WriteLine("scanning installers from url: " + url); + + //string sourceHTML = DownloadHTML(url); + + //if (string.IsNullOrEmpty(sourceHTML) == true) + //{ + // Console.WriteLine("Failed to download html from: " + url); + // return null; + //} + + //// parse changeset hash from html + //string pattern = $@"href=""unityhub://{version}/([^""]+)"""; + //Regex regex = new Regex(pattern); + //Match match = regex.Match(sourceHTML); + + //if (match.Success == true) + //{ + // string changeSet = match.Groups[1].Value; + // Console.WriteLine("changeSet: " + changeSet); + //} + + exeURL = $"https://beta.unity3d.com/download/{hash}/UnityDownloadAssistant-{version}.exe"; + //string[] lines = sourceHTML.Split(new[] { "\r\n", "\r", "\n" }, StringSplitOptions.None); + + // patch version download assistant finder + //if (useHash == false && VersionIsPatch(version)) + //{ + // for (int i = 0; i < lines.Length; i++) + // { + // //if (lines[i].Contains("UnityDownloadAssistant-" + version + ".exe")) + // if (lines[i].Contains("UnitySetup64-" + version + ".exe")) + // { + // int start = lines[i].IndexOf('"') + 1; + // int end = lines[i].IndexOf('"', start); + // exeURL = lines[i].Substring(start, end - start); + // break; + // } + // } + //} + //else if (useHash == false && VersionIsArchived(version)) + //{ + // // archived version download assistant finder + // for (int i = 0; i < lines.Length; i++) + // { + // // find line where full installer is (from archive page) + // if (lines[i].Contains("UnitySetup64-" + version)) + // { + + // Console.WriteLine(lines[i]); + + // // take full exe installer line, to have changeset hash, then replace with download assistant filepath + // string line = lines[i]; + // int start = line.IndexOf('"') + 1; + // int end = line.IndexOf('"', start); + // exeURL = line.Substring(start, end - start); + // exeURL = exeURL.Replace("Windows64EditorInstaller/UnitySetup64-", "UnityDownloadAssistant-"); + // break; + // } + // } + //} + //else // alpha or beta version download assistant finder + //{ + // // regular beta + // // + // // 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 sourceHTML = DownloadHTML(url); @@ -885,7 +1143,7 @@ private static string FetchUnityVersionNumberFromHTML(string url) } else { - Console.WriteLine("No match found."); + Console.WriteLine("FetchUnityVersionNumberFromHTML: No match found."); } return null; @@ -911,8 +1169,7 @@ public static string FindNearestVersion(string currentVersion, List allA string result = null; // add current version to list, to sort it with others - if (!allAvailable.Contains(currentVersion)) - allAvailable.Add(currentVersion); + if (!allAvailable.Contains(currentVersion)) allAvailable.Add(currentVersion); // sort list if (checkBelow) @@ -962,6 +1219,7 @@ public static long VersionAsLong(string version) multiplier *= 50; } } + return result; } @@ -1034,7 +1292,7 @@ public static void DisplayUpgradeDialog(Project proj, MainWindow owner, bool use // get selected version to upgrade for Console.WriteLine("Upgrade to " + upgradeToVersion); - // inject new version for this item, TODO inject version to ProjectSettings file, so then no alert from unity wrong version dialog + // inject new version for this item proj.Version = upgradeToVersion; SaveProjectVersion(proj); var proc = LaunchProject(proj, dataGridRef: null, useInitScript: false, upgrade: true); @@ -1082,6 +1340,56 @@ public static void AddContextMenuRegistry(string contextRegRoot) } } + public static void AddContextMenuRegistryAPKInstall(string contextRegRoot) + { + // Define the registry key path for .apk file association + string apkFileTypeRegPath = @"Software\Classes\.apk"; + + // Open or create the registry key for .apk files + RegistryKey apkKey = Registry.CurrentUser.OpenSubKey(apkFileTypeRegPath, true); + + if (apkKey == null) + { + apkKey = Registry.CurrentUser.CreateSubKey(apkFileTypeRegPath); + } + + if (apkKey != null) + { + // Create or open the Shell subkey for context menu options + RegistryKey shellKey = apkKey.CreateSubKey("shell", true); + + if (shellKey != null) + { + var appName = "UnityLauncherPro"; + // Create a subkey for the app's context menu item + RegistryKey appKey = shellKey.CreateSubKey(appName, true); + + if (appKey != null) + { + appKey.SetValue("", "Install with " + appName); // Display name in context menu + appKey.SetValue("Icon", "\"" + Process.GetCurrentProcess().MainModule.FileName + "\""); + appKey.SetValue("Position", "Bottom"); // Set position to adjust order + + // Create the command subkey to specify the action + RegistryKey commandKey = appKey.CreateSubKey("command", true); + + if (commandKey != null) + { + // Build the command string to launch with -install argument + var executeString = "\"" + Process.GetCurrentProcess().MainModule.FileName + "\" -install \"%1\""; + commandKey.SetValue("", executeString); + } + } + } + } + else + { + Console.WriteLine("Error> Cannot create or access registry key for .apk file association: " + apkFileTypeRegPath); + } + } + + + /// /// uninstall context menu item from registry /// @@ -1109,6 +1417,37 @@ public static void RemoveContextMenuRegistry(string contextRegRoot) } } + public static void RemoveContextMenuRegistryAPKInstall(string contextRegRoot) + { + // Define the registry key path for .apk file association + string apkFileTypeRegPath = @"Software\Classes\.apk\shell"; + + // Open the registry key for the shell context menu + RegistryKey shellKey = Registry.CurrentUser.OpenSubKey(apkFileTypeRegPath, true); + + if (shellKey != null) + { + var appName = "UnityLauncherPro"; + + // Check if the app's context menu key exists + RegistryKey appKey = shellKey.OpenSubKey(appName, false); + if (appKey != null) + { + // Delete the app's context menu key + shellKey.DeleteSubKeyTree(appName); + Console.WriteLine("Removed context menu for .apk files."); + } + else + { + Console.WriteLine("No context menu found for .apk files."); + } + } + else + { + Console.WriteLine("Error> Cannot find registry key for .apk shell context: " + apkFileTypeRegPath); + } + } + /// /// reads .git/HEAD file from the project to get current branch name /// @@ -1116,117 +1455,141 @@ public static void RemoveContextMenuRegistry(string contextRegRoot) /// public static string ReadGitBranchInfo(string projectPath, bool searchParentFolders) { - string results = null; - - if (searchParentFolders) + DirectoryInfo directoryInfo = new DirectoryInfo(projectPath); + while (directoryInfo != null) { - DirectoryInfo directoryInfo = new DirectoryInfo(projectPath); + string gitDir = Path.Combine(directoryInfo.FullName, ".git"); + string headFile = Path.Combine(gitDir, "HEAD"); - while (directoryInfo != null) + if (Directory.Exists(gitDir) && File.Exists(headFile)) { - string dirName = Path.Combine(directoryInfo.FullName, ".git"); + string headContent = File.ReadAllText(headFile).Trim(); + int pos = headContent.LastIndexOf('/') + 1; + return (pos < headContent.Length) ? headContent.Substring(pos) : headContent; + } - 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; + if (!searchParentFolders) + { + break; } + directoryInfo = directoryInfo.Parent; } - else - { - string dirName = Path.Combine(projectPath, ".git"); - if (Directory.Exists(dirName)) + return null; + } - { - 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); + public static string ReadPlasticBranchInfo(string projectPath, bool searchParentFolders) + { + string branchName = null; + DirectoryInfo directoryInfo = new DirectoryInfo(projectPath); + while (directoryInfo != null) + { + string plasticSelectorPath = Path.Combine(directoryInfo.FullName, ".plastic", "plastic.selector"); + if (File.Exists(plasticSelectorPath)) + { + branchName = ExtractPlasticBranch(plasticSelectorPath); + if (!string.IsNullOrEmpty(branchName)) + { + return branchName; } + } + if (!searchParentFolders) + { + break; } + + directoryInfo = directoryInfo.Parent; } - return results; + + return branchName; } - public static string ReadPlasticBranchInfo(string projectPath) + private static string ExtractPlasticBranch(string plasticSelectorPath) { - string results = null; - string dirName = Path.Combine(projectPath, ".plastic"); - if (Directory.Exists(dirName)) + string[] lines = File.ReadAllLines(plasticSelectorPath); + foreach (string line in lines) { - string branchFile = Path.Combine(dirName, "plastic.selector"); - if (File.Exists(branchFile)) + string trimmedLine = line.Trim(); + if (trimmedLine.StartsWith("br ") || trimmedLine.StartsWith("smartbranch ")) { - // removes extra end of line - results = string.Join(" ", File.ReadAllText(branchFile)); - // get branch only - int pos = results.LastIndexOf("\"/") + 1; - // -1 to remove last " - results = results.Substring(pos, results.Length - pos - 1); + // Extract the first quoted string + var match = Regex.Match(trimmedLine, "\"([^\"]+)\""); + if (match.Success) + { + string branchName = match.Groups[1].Value; + // Remove leading slash if present (e.g., "/main" becomes "main") + if (branchName.StartsWith("/")) + { + branchName = branchName.Substring(1); + } + return branchName; + } } } - return results; + return null; } - //public static Platform GetTargetPlatform(string projectPath) static string GetTargetPlatformRaw(string projectPath) { string results = null; - //Platform results = Platform.Unknown; // get buildtarget from .csproj // StandaloneWindows64:19 // get main csproj file var csproj = Path.Combine(projectPath, "Assembly-CSharp.csproj"); + // TODO check projname also, if no assembly-.., NOTE already checked above - //var csproj = Path.Combine(projectPath, projectName + ".csproj"); + // var csproj = Path.Combine(projectPath, projectName + ".csproj"); + if (File.Exists(csproj)) { - var csprojtxt = File.ReadAllText(csproj); - var csprojsplit = csprojtxt.Split(new[] { "" }, StringSplitOptions.None); - if (csprojsplit != null && csprojsplit.Length > 1) + // Read the file line by line for performance + using (var reader = new StreamReader(csproj)) { - var endrow = csprojsplit[1].IndexOf(":"); - if (endrow > -1) + string line; + while ((line = reader.ReadLine()) != null) { - //Console.WriteLine("build target: " + csprojsplit[1].Substring(0, endrow)); - // 5.6 : win32, win64, osx, linux, linux64, ios, android, web, webstreamed, webgl, xboxone, ps4, psp2, wsaplayer, tizen, samsungtv - // 2017: standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, PSP2, WindowsStoreApps, Switch, WiiU, N3DS, tvOS, PSM - // 2018: standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, N3DS, tvOS - // 2019: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS - // 2020: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS - // 2021: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS - results = csprojsplit[1].Substring(0, endrow); - //results = (Platform)Enum.Parse(typeof(Platform), csprojsplit[1].Substring(0, endrow)); + const string tagStart = ""; + const string tagEnd = ""; + + int startIdx = line.IndexOf(tagStart); + if (startIdx >= 0) + { + int endIdx = line.IndexOf(tagEnd, startIdx); + if (endIdx > startIdx) + { + string inner = line.Substring(startIdx + tagStart.Length, endIdx - startIdx - tagStart.Length); + int colonIndex = inner.IndexOf(':'); + if (colonIndex > -1) + { + //Console.WriteLine("build target: " + inner.Substring(0, colonIndex)); + // 5.6 : win32, win64, osx, linux, linux64, ios, android, web, webstreamed, webgl, xboxone, ps4, psp2, wsaplayer, tizen, samsungtv + // 2017: standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, PSP2, WindowsStoreApps, Switch, WiiU, N3DS, tvOS, PSM + // 2018: standalone, Win, Win64, OSXUniversal, Linux, Linux64, LinuxUniversal, iOS, Android, Web, WebStreamed, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, N3DS, tvOS + // 2019: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS + // 2020: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS + // 2021: Standalone, Win, Win64, OSXUniversal, Linux64, iOS, Android, WebGL, XboxOne, PS4, WindowsStoreApps, Switch, tvOS + results = inner.Substring(0, colonIndex); + //results = (Platform)Enum.Parse(typeof(Platform), inner.Substring(0, colonIndex)); + break; // we found it, exit early + } + } + } } } } else { - //Console.WriteLine("Missing csproj, cannot parse target platform: "+ projectPath); + //Console.WriteLine("Missing csproj, cannot parse target platform: " + projectPath); } return results; } + public static string GetTargetPlatform(string projectPath) { var rawPlatformName = GetTargetPlatformRaw(projectPath); @@ -1244,19 +1607,31 @@ public static string GetTargetPlatform(string projectPath) public static string ReadCustomProjectData(string projectPath, string customFile) { - string results = null; - customFile = Path.Combine(projectPath, "ProjectSettings", customFile); - if (File.Exists(customFile) == true) + // ProjectSettings is the old deprecated location (and current location from Hub 3.15.x, but later they will use UserSettings first too) + string[] directories = { "UserSettings", "ProjectSettings" }; + + foreach (var directory in directories) { - results = string.Join(" ", File.ReadAllLines(customFile)); + string filePath = Path.Combine(projectPath, directory, customFile); + if (File.Exists(filePath)) + { + return string.Join(" ", File.ReadAllLines(filePath)); + } } - return results; + + return null; } public static bool SaveCustomProjectData(string projectPath, string customFile, string data) { - customFile = Path.Combine(projectPath, "ProjectSettings", customFile); + // NOTE: now saving into UserSettings folder only (there might be old custom data is in ProjectSettings/ still..) + var customPath = Path.Combine(projectPath, "UserSettings"); + if (!Directory.Exists(customPath)) + { + Directory.CreateDirectory(customPath); + } + customFile = Path.Combine(customPath, customFile); try { File.WriteAllText(customFile, data); @@ -1264,6 +1639,7 @@ public static bool SaveCustomProjectData(string projectPath, string customFile, } catch (Exception) { + SetStatus("Failed to save custom project data to: " + customFile); } return false; @@ -1285,47 +1661,42 @@ public static bool HasFocus(DependencyObject obj, Control control, bool checkChi public static void SetFocusToGrid(DataGrid targetGrid, int index = -1) { - // set main component focus - //targetGrid.Focus(); - //Keyboard.Focus(targetGrid); - - // no items if (targetGrid.Items.Count < 1) return; - // keep current row selected if (index == -1 && targetGrid.SelectedIndex > -1) index = targetGrid.SelectedIndex; - - // if no item selected, pick first if (index == -1) index = 0; targetGrid.SelectedIndex = index; - // set full focus + // Try get the row, if not realized yet, defer DataGridRow row = (DataGridRow)targetGrid.ItemContainerGenerator.ContainerFromIndex(index); if (row == null) { - targetGrid.UpdateLayout(); - if (index < targetGrid.Items.Count) - { - // scroll selected into view - targetGrid.ScrollIntoView(targetGrid.Items[index]); - row = (DataGridRow)targetGrid.ItemContainerGenerator.ContainerFromIndex(index); - } - else + // clamp to max items + if (index >= targetGrid.Items.Count) index = targetGrid.Items.Count - 1; + + targetGrid.ScrollIntoView(targetGrid.Items[index]); + // Defer the focus once row is generated + targetGrid.Dispatcher.InvokeAsync(() => { - Console.WriteLine("selected row out of bounds: " + index); - } + var newRow = (DataGridRow)targetGrid.ItemContainerGenerator.ContainerFromIndex(index); + if (newRow != null) + { + newRow.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up)); + newRow.Focus(); + Keyboard.Focus(newRow); + } + }, DispatcherPriority.Background); } - // NOTE does this causes move below? - //row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next)); - if (row != null) + else { - row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up)); // works better than Up + row.MoveFocus(new TraversalRequest(FocusNavigationDirection.Up)); row.Focus(); Keyboard.Focus(row); } } + public static string BrowseForOutputFolder(string title, string initialDirectory = null) { // https://stackoverflow.com/a/50261723/5452781 @@ -1352,26 +1723,27 @@ public static string BrowseForOutputFolder(string title, string initialDirectory } // TODO too many params.. - public static Project FastCreateProject(string version, string baseFolder, string projectName = null, string templateZipPath = null, string[] platformsForThisUnity = null, string platform = null, bool useInitScript = false, string initScriptPath = null) + public static Project FastCreateProject(string version, string baseFolder, string projectName = null, string templateZipPath = null, string[] platformsForThisUnity = null, string platform = null, bool useInitScript = false, string initScriptPath = null, bool forceDX11 = false) { // check for base folders in settings tab if (string.IsNullOrEmpty(baseFolder) == true) { - Console.WriteLine("Missing baseFolder value"); + SetStatus("Missing baseFolder value"); return null; } // check if base folder exists if (Directory.Exists(baseFolder) == false) { - Console.WriteLine("Missing baseFolder: " + baseFolder); + // TODO add streaming filter + SetStatus("Missing baseFolder: " + baseFolder); return null; } // check selected unity version if (string.IsNullOrEmpty(version) == true) { - Console.WriteLine("Missing unity version string"); + SetStatus("Missing unity version string"); return null; } @@ -1388,10 +1760,38 @@ public static Project FastCreateProject(string version, string baseFolder, strin // create folder CreateEmptyProjectFolder(newPath, version); - // unzip template, if any + bool cloneFromTemplate = false; + // unzip or copy template if (templateZipPath != null) { - TarLib.Tar.ExtractTarGz(templateZipPath, newPath); + // Console.WriteLine(templateZipPath); + + if (File.Exists(templateZipPath)) + { + cloneFromTemplate = true; + try + { + // NOTE no need to extract, unity can handle it with -cloneFromTemplate + //TarLib.Tar.ExtractTarGz(templateZipPath, newPath); + } + catch (Exception ex) + { + SetStatus("Error extract template file:" + ex.Message); + } + } + else if (Directory.Exists(templateZipPath)) + { + // this is for folder templates, copy files + try + { + CopyDirectory(templateZipPath, newPath); + } + catch (Exception ex) + { + SetStatus("Error copying template folder: " + ex.Message); + } + } + } // copy init file into project @@ -1416,8 +1816,12 @@ public static Project FastCreateProject(string version, string baseFolder, strin proj.TargetPlatform = platform; proj.Modified = DateTime.Now; proj.folderExists = true; // have to set this value, so item is green on list - - var proc = LaunchProject(proj, null, useInitScript); + proj.Arguments = version.Contains("6000") ? (forceDX11 ? "-force-d3d11" : null) : null; // this gets erased later, since its not saved? would be nice to not add it at all though + if (cloneFromTemplate == true) + { + proj.Arguments += " -cloneFromTemplate \"" + templateZipPath + "\""; + } + var proc = LaunchProject(proj, null, useInitScript, false, cloneFromTemplate); ProcessHandler.Add(proj, proc); return proj; @@ -1457,6 +1861,8 @@ public static string GetSuggestedProjectName(string version, string baseFolder) static void CreateEmptyProjectFolder(string path, string version) { Console.WriteLine("Create new project folder: " + path); + // TODO add streaming filter + SetStatus("Creating new project folder: " + path); Directory.CreateDirectory(path); // create project version file, to avoid wrong version warning @@ -1511,24 +1917,38 @@ public static Dictionary ScanTemplates(string unityInstallPath) var templateFolder = Path.Combine(unityPath, "Data/Resources/PackageManager/ProjectTemplates/"); if (Directory.Exists(templateFolder) == false) return items; + // get all files in template folder var fileEntries = Directory.GetFiles(templateFolder).ToList(); // process found files - for (int i = fileEntries.Count - 1; i > -1; i--) + for (int i = 0; i < fileEntries.Count; i++) { + //Console.WriteLine(fileEntries[i]); // check if its tgz - if (fileEntries[i].IndexOf(".tgz") == -1) + if (fileEntries[i].ToLower().IndexOf(".tgz") > -1) { - fileEntries.RemoveAt(i); - } - else - { - // cleanup name + // cleanup displayed name var name = Path.GetFileName(fileEntries[i]).Replace("com.unity.template.", "").Replace(".tgz", ""); items.Add(name, fileEntries[i]); } } + // 2018.4 has folders instead of tgz files + // BUT do this for all versions, in case user has added custom template folders (that contain Assets/ folder) + var dirEntries = Directory.GetDirectories(templateFolder).ToList(); + for (int i = 0; i < dirEntries.Count; i++) + { + //Console.WriteLine(dirEntries[i]); + // if it has com.unity.template. prefix, then its a template + // if that directory contains Assets/ folder, then its a template + if (Directory.Exists(Path.Combine(dirEntries[i], "Assets")) == true) + { + //Console.WriteLine(dirEntries[i]); + var name = Path.GetFileName(dirEntries[i]).Replace("com.unity.template.", ""); + items.Add(name, dirEntries[i]); + } + } + return items; } @@ -1754,6 +2174,33 @@ static string[] GetScenes() } + public static void BuildProjectCustom(Project proj) + { + Console.WriteLine("Building " + proj.Title + " (custom)"); + SetStatus("Build process started: " + DateTime.Now.ToString("HH:mm:ss")); + + // get selected project unity exe path + var unityExePath = Tools.GetUnityExePath(proj.Version); + if (unityExePath == null) return; + + // create commandline string for building and launch it + //var buildcmd = $"\"{unityExePath}\" -quit -batchmode -nographics -projectPath \"{proj.Path}\" -executeMethod \"Builder.BuildAndroid\" -buildTarget android -logFile -"; + // TODO test without nographics : https://forum.unity.com/threads/batch-build-one-scene-is-black-works-in-normal-file-build.1282823/#post-9456524 + var buildParams = $" -quit -batchmode -nographics -projectPath \"{proj.Path}\" -executeMethod \"UnityLauncherProToolsCustom.BuildCustom\""; + Console.WriteLine("buildcmd= " + buildParams); + + // launch build + var proc = Tools.LaunchExe(unityExePath, buildParams); + + // wait for process exit then open output folder + proc.Exited += (o, i) => + { + SetStatus("Build process finished: " + DateTime.Now.ToString("HH:mm:ss")); + // TODO set color based on results + SetBuildStatus(Colors.Green); + }; + } + // runs unity SimpleWebServer.exe and launches default Browser into project build/ folder' public static void LaunchWebGL(Project proj, string relativeFolder) { @@ -2281,6 +2728,428 @@ private static async Task DownloadFileAsync(string fileUrl, string destina } return result; } + + internal static string GetSRP(string projectPath) + { + var settingsFile = Path.Combine(projectPath, "ProjectSettings", "GraphicsSettings.asset"); + if (!File.Exists(settingsFile)) return null; + + bool srpSectionFound = false; + + using (var reader = new StreamReader(settingsFile)) + { + string line; + while ((line = reader.ReadLine()) != null) + { + if (!srpSectionFound) + { + if (line.Contains("m_SRPDefaultSettings:") || line.Contains("m_RenderPipelineGlobalSettingsMap:")) + { + srpSectionFound = true; + } + continue; + } + + if (line.Contains("UniversalRenderPipeline")) + { + return "URP"; + } + else if (line.Contains("HDRenderPipeline")) + { + return "HDRP"; + } + } + } + return null; // BIRP or unknown + } + + internal static void InstallAPK(string ApkPath) + { + try + { + var cmd = "cmd.exe"; + var pars = $"/C adb install -r \"{ApkPath}\""; // Use /C to execute and close the window after finishing + + var processStartInfo = new ProcessStartInfo + { + FileName = cmd, + Arguments = pars, + RedirectStandardOutput = true, // Capture output to wait for completion + RedirectStandardError = true, + UseShellExecute = false, + CreateNoWindow = false + }; + + string installOutput = null; + string installError = null; + + using (var installProcess = Process.Start(processStartInfo)) + { + installOutput = installProcess.StandardOutput.ReadToEnd(); + installError = installProcess.StandardError.ReadToEnd(); + installProcess.WaitForExit(); + + if (installProcess.ExitCode != 0 || !string.IsNullOrEmpty(installError)) + { + SetStatus($"Error installing APK: {installError.Trim()}\n{installOutput.Trim()}"); + return; + } + } + + // Attempt to extract package name using aapt + var aaptCmd = $"aapt dump badging \"{ApkPath}\" | findstr package:"; + var aaptProcessStartInfo = new ProcessStartInfo + { + FileName = "cmd.exe", + Arguments = $"/C {aaptCmd}", + RedirectStandardOutput = true, + UseShellExecute = false, + CreateNoWindow = true + }; + + string packageName = null; + using (var process = Process.Start(aaptProcessStartInfo)) + { + var output = process.StandardOutput.ReadToEnd(); + process.WaitForExit(); + + var match = System.Text.RegularExpressions.Regex.Match(output, "package: name='(.*?)'"); + if (match.Success) + { + packageName = match.Groups[1].Value; + } + } + + if (!string.IsNullOrEmpty(packageName)) + { + // Run the application using adb + var runPars = $"/C adb shell monkey -p {packageName} 1"; + var runProcessStartInfo = new ProcessStartInfo + { + FileName = cmd, + Arguments = runPars, + UseShellExecute = true, + CreateNoWindow = false, + WindowStyle = ProcessWindowStyle.Normal + }; + Process.Start(runProcessStartInfo); + + SetStatus($"Installed and launched APK with package name: {packageName}"); + } + else + { + SetStatus("ADB install completed, but failed to extract package name. Application not launched."); + } + } + catch (Win32Exception ex) + { + // Handle case where adb or aapt is not found + SetStatus($"Error: Required tool not found. Ensure adb and aapt are installed and added to PATH. Details: {ex.Message}"); + } + catch (Exception ex) + { + // Handle other unexpected exceptions + SetStatus($"An unexpected error occurred: {ex.Message}"); + } + } + + // exclude folders from windows defender + internal static bool RunExclusionElevated(IEnumerable paths, bool silent = false) + { + var escapedPaths = new List(); + foreach (var rawPath in paths) + { + var path = rawPath.Trim(); + string safePath = path.Replace("'", "''"); + escapedPaths.Add($"'{safePath}'"); + } + + string joinedPaths = string.Join(", ", escapedPaths); + string psCommand = $"Add-MpPreference -ExclusionPath {joinedPaths}"; + + string fullCommand; + + if (silent) + { + // No output, just run the command silently + fullCommand = psCommand; + } + else + { + // Show command and keep window open + var quotedPathsForDisplay = string.Join(", ", escapedPaths.ConvertAll(p => $"'{p.Trim('\'')}'")); + string displayCommand = $"Add-MpPreference -ExclusionPath {quotedPathsForDisplay}"; + fullCommand = $"Write-Host 'Running: {displayCommand}'; {psCommand}; Write-Host ''; Write-Host 'Done. Press any key to exit...'; pause"; + } + + var startInfo = new ProcessStartInfo + { + FileName = "powershell.exe", + Arguments = silent + ? $"-WindowStyle Hidden -Command \"{fullCommand}\"" + : $"-NoExit -Command \"{fullCommand}\"", + UseShellExecute = true, + Verb = "runas", // Requires admin rights + WindowStyle = silent ? ProcessWindowStyle.Hidden : ProcessWindowStyle.Normal + }; + + try + { + Process.Start(startInfo); + } + catch (Win32Exception) + { + if (!silent) + { + MessageBox.Show("Operation cancelled or failed due to insufficient privileges.", "Cancelled", MessageBoxButton.OK, MessageBoxImage.Warning); + } + return false; + } + + return true; + } + + /// + /// Returns a full file path under either the application's install folder + /// or, if that isn't writable, under LocalAppData\UnityLauncherPro\. + /// + /// e.g. "Themes", "Scripts" + /// e.g. "custom.ini", "InitializeProject.cs" + public static string GetSafeFilePath(string subfolder, string fileName) + { + // 1) Preferred: under the app folder + string preferredDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, subfolder); + // 2) Fallback: in LocalAppData + string fallbackDir = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "UnityLauncherPro", subfolder); + + try + { + // Safe even if it already exists + Directory.CreateDirectory(preferredDir); + return Path.Combine(preferredDir, fileName); + } + catch (UnauthorizedAccessException) + { + // no write access under Program Files + } + catch (Exception ex) + { + // optional: log unexpected errors + Console.WriteLine($"Warning: couldn’t create {preferredDir}: {ex.Message}"); + } + + // Ensure fallback always exists + Directory.CreateDirectory(fallbackDir); + return Path.Combine(fallbackDir, fileName); + } + + // copy directory structure (for template folder) + public static void CopyDirectory(string sourceDir, string targetDir) + { + // Create the target directory if it doesn't exist + Directory.CreateDirectory(targetDir); + + // Copy all files + foreach (var file in Directory.GetFiles(sourceDir)) + { + var destFile = Path.Combine(targetDir, Path.GetFileName(file)); + File.Copy(file, destFile, overwrite: false); + } + + // Recursively copy subdirectories + foreach (var directory in Directory.GetDirectories(sourceDir)) + { + var destDir = Path.Combine(targetDir, Path.GetFileName(directory)); + CopyDirectory(directory, destDir); + } + } + + + + // test fetching + + // Reuse a single HttpClient + private static readonly HttpClient _http = new HttpClient + { + Timeout = TimeSpan.FromSeconds(15) + }; + + /// + /// Fire-and-forget entry; returns immediately. Keeps your UI thread free. + /// + internal static void FetchAdditionalInfoForEditors() + { + _ = FetchImplAsync(); // don't await -> no UI hang + } + + private static async Task FetchImplAsync() + { + try + { + foreach (var version in MainWindow.unityInstalledVersions.Keys) + { + //Console.WriteLine("******** Fetching " + version); + + var url = $"https://services.api.unity.com/unity/editor/release/v1/releases?order=RELEASE_DATE_DESC&limit=1&version={Uri.EscapeDataString(version)}"; + + string json; + try + { + json = await _http.GetStringAsync(url).ConfigureAwait(false); + } + catch (Exception ex) + { + Debug.WriteLine($"[FetchAdditionalInfo] {version}: HTTP error: {ex.Message}"); + continue; + } + + try + { + //Console.WriteLine("received: " + json); + UnityEditorInfoLabel label = ExtractLabelText(json); + if (label != null) + { + + // feed this info back to main window + if (string.IsNullOrEmpty(label.labelText) == false) + { + //Console.WriteLine(label.description); + + var u = MainWindow.unityInstallationsSource.FirstOrDefault(x => x.Version == version); + + string infoText = label.labelText + "\n" + label.description; ; + + u.InfoLabel = infoText; + + int index = MainWindow.unityInstallationsSource.IndexOf(u); + if (index >= 0) + { + MainWindow.unityInstallationsSource[index] = u; + } + + // update all projectsSource items with this version too + foreach (var p in MainWindow.projectsSource) + { + if (p.Version == version) + { + p.InfoLabel = infoText; + } + } + + + + //SetStatus($"Info for {version}: {label.labelText}"); + //Console.WriteLine("got infolabel for " + version); + } + } + + } + catch (Exception ex) + { + Debug.WriteLine($"[FetchAdditionalInfo] {version}: JSON parse error: {ex.Message}"); + } + + // delay + await Task.Delay(500).ConfigureAwait(false); + + } // foreach version + } + catch (Exception ex) + { + // Last-resort catch so fire-and-forget exceptions aren’t unobserved + Debug.WriteLine($"[FetchAdditionalInfo] Fatal: {ex}"); + } + } // FetchImplAsync() + + public class UnityEditorInfoLabel + { + public string description; // may contain HTML + public string labelText; + public string icon; + public string color; + } + + private static UnityEditorInfoLabel ExtractLabelText(string json) + { + var label = new UnityEditorInfoLabel(); + if (string.IsNullOrEmpty(json) || json.Contains("\"results\":[]")) return label; + + int resultsIndex = json.IndexOf("\"results\":", StringComparison.Ordinal); + if (resultsIndex == -1) return label; + + // Use the LAST "label": in the payload (the editor-level one) + int labelIndex = json.LastIndexOf("\"label\":", StringComparison.Ordinal); + if (labelIndex == -1 || labelIndex < resultsIndex) return label; + + // labelText + int ltIndex = json.IndexOf("\"labelText\":", labelIndex, StringComparison.Ordinal); + if (ltIndex != -1) + { + int vStart = json.IndexOf('\"', ltIndex + 12) + 1; // "labelText": => +12 + if (vStart > 0) + { + int vEnd = json.IndexOf('\"', vStart); + if (vEnd > vStart) label.labelText = json.Substring(vStart, vEnd - vStart); + } + } + + // icon + int iconIndex = json.IndexOf("\"icon\":", labelIndex, StringComparison.Ordinal); + if (iconIndex != -1) + { + int vStart = json.IndexOf('\"', iconIndex + 7) + 1; // "icon": => +7 + if (vStart > 0) + { + int vEnd = json.IndexOf('\"', vStart); + if (vEnd > vStart) label.icon = json.Substring(vStart, vEnd - vStart); + } + } + + // color + int colorIndex = json.IndexOf("\"color\":", labelIndex, StringComparison.Ordinal); + if (colorIndex != -1) + { + int vStart = json.IndexOf('\"', colorIndex + 8) + 1; // "color": => +8 + if (vStart > 0) + { + int vEnd = json.IndexOf('\"', vStart); + if (vEnd > vStart) label.color = json.Substring(vStart, vEnd - vStart); + } + } + + // description (may contain escaped quotes) + int descIndex = json.IndexOf("\"description\":", labelIndex, StringComparison.Ordinal); + if (descIndex != -1) + { + int qStart = json.IndexOf('\"', descIndex + 14) + 1; // "description": => +14 + if (qStart > 0) + { + int i = qStart; + for (; i < json.Length; i++) + if (json[i] == '\"' && json[i - 1] != '\\') break; + + if (i > qStart) + { + label.description = json.Substring(qStart, i - qStart).Replace("\\\"", "\"").Replace("\\n", "\n").Replace("\\r", "\r").Replace("\\t", "\t"); + // strip HTML tags for now + label.description = System.Text.RegularExpressions.Regex.Replace(label.description, "<.*?>", string.Empty); + } + } + } + + return label; + } + + public static string ParseHashCodeFromURL(string url) + { + // https://beta.unity3d.com/download/330fbefc18b7/download.html#6000.1.0a8 > 330fbefc18b7 + + int hashStart = url.IndexOf("download/") + 9; + int hashEnd = url.IndexOf("/download.html", hashStart); + return url.Substring(hashStart, hashEnd - hashStart); + } + + } // class } // namespace diff --git a/UnityLauncherPro/UnityLauncherPro.csproj b/UnityLauncherPro/UnityLauncherPro.csproj index 40c2ef4..821e8cc 100644 --- a/UnityLauncherPro/UnityLauncherPro.csproj +++ b/UnityLauncherPro/UnityLauncherPro.csproj @@ -85,11 +85,15 @@ + + + + diff --git a/UnityLauncherPro/UpgradeWindow.xaml b/UnityLauncherPro/UpgradeWindow.xaml index 1e5c437..c38280d 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="552" 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="540" Width="580" Background="{DynamicResource ThemeDarkestBackground}" MinWidth="319" MinHeight="555" ResizeMode="NoResize" WindowStartupLocation="CenterOwner" HorizontalAlignment="Left" VerticalAlignment="Top" PreviewKeyDown="Window_PreviewKeyDown" ShowInTaskbar="False"> diff --git a/UnityLauncherPro/UpgradeWindow.xaml.cs b/UnityLauncherPro/UpgradeWindow.xaml.cs index bc2ef62..22f9477 100644 --- a/UnityLauncherPro/UpgradeWindow.xaml.cs +++ b/UnityLauncherPro/UpgradeWindow.xaml.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; +using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Input; @@ -28,30 +26,35 @@ public UpgradeWindow(string currentVersion, string projectPath, string commandLi gridAvailableVersions.SelectedItem = null; - // we have current version info in project - // 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) + if (currentVersion == null || MainWindow.unityInstalledVersions.ContainsKey(currentVersion) == false) { txtCurrentVersion.BorderBrush = Brushes.Red; txtCurrentVersion.BorderThickness = new Thickness(1); } - // find nearest version - string nearestVersion = Tools.FindNearestVersion(currentVersion, MainWindow.unityInstalledVersions.Keys.ToList()); - if (nearestVersion != null) + if (currentVersion != null) { - // select nearest version - for (int i = 0; i < MainWindow.unityInstallationsSource.Count; i++) + // we know the version, enable buttons + btnOpenReleasePage.IsEnabled = true; + btnDownload.IsEnabled = true; + + // remove china c1 from version + if (currentVersion.Contains("c")) currentVersion = currentVersion.Replace("c1", ""); + // find nearest version + string nearestVersion = Tools.FindNearestVersion(currentVersion, MainWindow.unityInstalledVersions.Keys.ToList()); + + if (nearestVersion != null) { - if (MainWindow.unityInstallationsSource[i].Version == nearestVersion) + // select nearest version + for (int i = 0; i < MainWindow.unityInstallationsSource.Count; i++) { - gridAvailableVersions.SelectedIndex = i; - gridAvailableVersions.ScrollIntoView(gridAvailableVersions.SelectedItem); - break; + if (MainWindow.unityInstallationsSource[i].Version == nearestVersion) + { + gridAvailableVersions.SelectedIndex = i; + gridAvailableVersions.ScrollIntoView(gridAvailableVersions.SelectedItem); + break; + } } } } @@ -75,7 +78,7 @@ private void BtnOpenReleasePage_Click(object sender, RoutedEventArgs e) Tools.OpenReleaseNotes(txtCurrentVersion.Text); } - + private void BtnDownloadEditor_Click(object sender, RoutedEventArgs e) { Tools.DownloadInBrowser(txtCurrentVersion.Text); @@ -146,6 +149,13 @@ private void GridAvailableVersions_PreviewMouseDoubleClick(object sender, MouseB void Upgrade() { var k = (UnityInstallation)gridAvailableVersions.SelectedItem; + + if (k == null) + { + DialogResult = false; + return; + } + upgradeVersion = k.Version; DialogResult = true; } diff --git a/UnityLauncherProInstaller/UnityLauncherProInstaller.vdproj b/UnityLauncherProInstaller/UnityLauncherProInstaller.vdproj new file mode 100644 index 0000000..1faa96f --- /dev/null +++ b/UnityLauncherProInstaller/UnityLauncherProInstaller.vdproj @@ -0,0 +1,835 @@ +"DeployProject" +{ +"VSVersion" = "3:800" +"ProjectType" = "8:{978C614F-708E-4E1A-B201-565925725DBA}" +"IsWebType" = "8:FALSE" +"ProjectName" = "8:UnityLauncherProInstaller" +"LanguageId" = "3:1033" +"CodePage" = "3:1252" +"UILanguageId" = "3:1033" +"SccProjectName" = "8:" +"SccLocalPath" = "8:" +"SccAuxPath" = "8:" +"SccProvider" = "8:" + "Hierarchy" + { + "Entry" + { + "MsmKey" = "8:_56C1F622109E4E31983910358EA5BCB3" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + "OwnerKey" = "8:_UNDEFINED" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_B4800275BE183C6B5A0394F826FCA770" + "OwnerKey" = "8:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + "MsmSig" = "8:_UNDEFINED" + } + "Entry" + { + "MsmKey" = "8:_UNDEFINED" + "OwnerKey" = "8:_B4800275BE183C6B5A0394F826FCA770" + "MsmSig" = "8:_UNDEFINED" + } + } + "Configurations" + { + "Debug" + { + "DisplayName" = "8:Debug" + "IsDebugOnly" = "11:TRUE" + "IsReleaseOnly" = "11:FALSE" + "OutputFilename" = "8:Debug\\UnityLauncherProInstaller.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:1" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:TRUE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + "{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:{88EC2DC6-E1F3-4355-B2F4-CF0345A0D5AF}" + { + "Name" = "8:Microsoft .NET Framework 4.7.2 (x86 and x64)" + "ProductCode" = "8:{88EC2DC6-E1F3-4355-B2F4-CF0345A0D5AF}" + } + } + } + } + "Release" + { + "DisplayName" = "8:Release" + "IsDebugOnly" = "11:FALSE" + "IsReleaseOnly" = "11:TRUE" + "OutputFilename" = "8:Release\\UnityLauncherPro-Installer.msi" + "PackageFilesAs" = "3:2" + "PackageFileSize" = "3:-2147483648" + "CabType" = "3:1" + "Compression" = "3:2" + "SignOutput" = "11:FALSE" + "CertificateFile" = "8:" + "PrivateKeyFile" = "8:" + "TimeStampServer" = "8:" + "InstallerBootstrapper" = "3:1" + "BootstrapperCfg:{63ACBE69-63AA-4F98-B2B6-99F9E24495F2}" + { + "Enabled" = "11:FALSE" + "PromptEnabled" = "11:TRUE" + "PrerequisitesLocation" = "2:1" + "Url" = "8:" + "ComponentsUrl" = "8:" + "Items" + { + } + } + } + } + "Deployable" + { + "CustomAction" + { + } + "DefaultFeature" + { + "Name" = "8:DefaultFeature" + "Title" = "8:" + "Description" = "8:" + } + "ExternalPersistence" + { + "LaunchCondition" + { + "{A06ECF26-33A3-4562-8140-9B0E340D4F24}:_C6DAFA7E7FB6480FB6A878EC2AE20521" + { + "Name" = "8:.NET Framework" + "Message" = "8:[VSDNETMSG]" + "FrameworkVersion" = "8:.NETFramework,Version=v4.8" + "AllowLaterVersions" = "11:FALSE" + "InstallUrl" = "8:http://go.microsoft.com/fwlink/?LinkId=863262" + } + } + } + "File" + { + "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_56C1F622109E4E31983910358EA5BCB3" + { + "SourcePath" = "8:..\\UnityLauncherPro\\Images\\icon.ico" + "TargetName" = "8:icon.ico" + "Tag" = "8:" + "Folder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + } + "{9F6F8455-1EF1-4B85-886A-4223BCC8E7F7}:_B4800275BE183C6B5A0394F826FCA770" + { + "AssemblyRegister" = "3:1" + "AssemblyIsInGAC" = "11:FALSE" + "AssemblyAsmDisplayName" = "8:System.Net.Http, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" + "ScatterAssemblies" + { + "_B4800275BE183C6B5A0394F826FCA770" + { + "Name" = "8:System.Net.Http.dll" + "Attributes" = "3:512" + } + } + "SourcePath" = "8:System.Net.Http.dll" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:TRUE" + "IsDependency" = "11:TRUE" + "IsolateTo" = "8:" + } + } + "FileType" + { + } + "Folder" + { + "{1525181F-901A-416C-8A58-119130FE478E}:_19ED9D0C790D4F4D9166B197E25DE46F" + { + "Name" = "8:#1919" + "AlwaysCreate" = "11:TRUE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:ProgramMenuFolder" + "Folders" + { + } + } + "{1525181F-901A-416C-8A58-119130FE478E}:_2963B7ED2A0A442D83028448A89C2E88" + { + "Name" = "8:#1916" + "AlwaysCreate" = "11:TRUE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:DesktopFolder" + "Folders" + { + } + } + "{3C67513D-01DD-4637-8A68-80971EB9504F}:_68B52FAF3D0E46A7BB2DA063CB0BC570" + { + "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]" + "Name" = "8:#1925" + "AlwaysCreate" = "11:TRUE" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Property" = "8:TARGETDIR" + "Folders" + { + } + } + } + "LaunchCondition" + { + } + "Locator" + { + } + "MsiBootstrapper" + { + "LangId" = "3:1033" + "RequiresElevation" = "11:FALSE" + } + "Product" + { + "Name" = "8:Microsoft Visual Studio" + "ProductName" = "8:UnityLauncherPro" + "ProductCode" = "8:{904A3434-1B2D-42CB-AC64-C311F3956044}" + "PackageCode" = "8:{1E8EE2AB-7275-4599-9F22-E57650F33D2B}" + "UpgradeCode" = "8:{4F3ACBAF-4673-4808-9A4F-50ED1E82F59F}" + "AspNetVersion" = "8:2.0.50727.0" + "RestartWWWService" = "11:FALSE" + "RemovePreviousVersions" = "11:TRUE" + "DetectNewerInstalledVersion" = "11:TRUE" + "InstallAllUsers" = "11:FALSE" + "ProductVersion" = "8:0.0.2" + "Manufacturer" = "8:unitycoder.com" + "ARPHELPTELEPHONE" = "8:" + "ARPHELPLINK" = "8:https://github.com/unitycoder/UnityLauncherPro" + "Title" = "8:UnityLauncherPro" + "Subject" = "8:" + "ARPCONTACT" = "8:unitycoder.com" + "Keywords" = "8:unity" + "ARPCOMMENTS" = "8:Custom Unity Project Launcher" + "ARPURLINFOABOUT" = "8:" + "ARPPRODUCTICON" = "8:" + "ARPIconIndex" = "3:0" + "SearchPath" = "8:" + "UseSystemSearchPath" = "11:TRUE" + "TargetPlatform" = "3:0" + "PreBuildEvent" = "8:" + "PostBuildEvent" = "8:" + "RunPostBuildEvent" = "3:0" + } + "Registry" + { + "HKLM" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_BBC8E7EDED764786B28BA436E2F2E3FA" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_53F28CB8B5D5476E83FCE79B61696A5A" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCU" + { + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_7C8A921E5D854F9293E898B1E5D7903E" + { + "Name" = "8:Software" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + "{60EA8692-D2D5-43EB-80DC-7906BF13D6EF}:_00642DD831ED49BF966A3921B4EE13E6" + { + "Name" = "8:[Manufacturer]" + "Condition" = "8:" + "AlwaysCreate" = "11:FALSE" + "DeleteAtUninstall" = "11:FALSE" + "Transitive" = "11:FALSE" + "Keys" + { + } + "Values" + { + } + } + } + "Values" + { + } + } + } + } + "HKCR" + { + "Keys" + { + } + } + "HKU" + { + "Keys" + { + } + } + "HKPU" + { + "Keys" + { + } + } + } + "Sequences" + { + } + "Shortcut" + { + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_43C0E1ACE07D4DBEA0C42EC6C9AD587A" + { + "Name" = "8:UnityLauncherPro" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + "Folder" = "8:_19ED9D0C790D4F4D9166B197E25DE46F" + "WorkingFolder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Icon" = "8:_56C1F622109E4E31983910358EA5BCB3" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_C0602FC78BDC49EEBC2B8D63BF602DB2" + { + "Name" = "8:UnityLauncherPro" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Folder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "WorkingFolder" = "8:_19ED9D0C790D4F4D9166B197E25DE46F" + "Icon" = "8:_56C1F622109E4E31983910358EA5BCB3" + "Feature" = "8:" + } + "{970C0BB2-C7D0-45D7-ABFA-7EC378858BC0}:_DC1220A510594DA78B14B2A948B17BB5" + { + "Name" = "8:UnityLauncherPro" + "Arguments" = "8:" + "Description" = "8:" + "ShowCmd" = "3:1" + "IconIndex" = "3:0" + "Transitive" = "11:FALSE" + "Target" = "8:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + "Folder" = "8:_2963B7ED2A0A442D83028448A89C2E88" + "WorkingFolder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Icon" = "8:_56C1F622109E4E31983910358EA5BCB3" + "Feature" = "8:" + } + } + "UserInterface" + { + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_03C4E4CC62D94357B185E5414076DE3C" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdBasicDialogs.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_147ABB7D36884065B2CC6D33E436F4F1" + { + "Name" = "8:#1900" + "Sequence" = "3:1" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_2E594B7DED8F49399108B61F7333A382" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "InstallAllUsersVisible" + { + "Name" = "8:InstallAllUsersVisible" + "DisplayName" = "8:#1059" + "Description" = "8:#1159" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:0" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_AE9BBF03F4254EC78B72E1DA3A342CD2" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:This is open-source application from https://github.com/unitycoder/UnityLauncherPro" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C6CB2BBAEA624833A4382BCB39FA64B4" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_6FD98948481641629052D2D3CAF5F3EC" + { + "Name" = "8:#1901" + "Sequence" = "3:2" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_452D9579D991490E998DC755F1371F7B" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{2479F3F5-0309-486D-8047-8187E2CE5BA0}:_A6508805A9374BCB8029A844ED81291A" + { + "UseDynamicProperties" = "11:FALSE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdUserInterface.wim" + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_BA4BFC6354F84AF4B5DAA3D1002FD75E" + { + "Name" = "8:#1900" + "Sequence" = "3:2" + "Attributes" = "3:1" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_ACD96EE1DEDB42B59E67289A08B39190" + { + "Sequence" = "3:200" + "DisplayName" = "8:Installation Folder" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFolderDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_AEF9C7C83C86472088534BF4856BB7AB" + { + "Sequence" = "3:300" + "DisplayName" = "8:Confirm Installation" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminConfirmDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_DA356B2059B947B59EFF4A9037C11614" + { + "Sequence" = "3:100" + "DisplayName" = "8:Welcome" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminWelcomeDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "CopyrightWarning" + { + "Name" = "8:CopyrightWarning" + "DisplayName" = "8:#1002" + "Description" = "8:#1102" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:This is open-source application from https://github.com/unitycoder/UnityLauncherPro" + "DefaultValue" = "8:#1202" + "UsePlugInResources" = "11:TRUE" + } + "Welcome" + { + "Name" = "8:Welcome" + "DisplayName" = "8:#1003" + "Description" = "8:#1103" + "Type" = "3:3" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:1" + "Value" = "8:#1203" + "DefaultValue" = "8:#1203" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_D76F1CBBB8244A92B7828779EDBE19E0" + { + "Name" = "8:#1901" + "Sequence" = "3:1" + "Attributes" = "3:2" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_C84B873F85C44D4FA8E3AA32E8FB9A36" + { + "Sequence" = "3:100" + "DisplayName" = "8:Progress" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdProgressDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "ShowProgress" + { + "Name" = "8:ShowProgress" + "DisplayName" = "8:#1009" + "Description" = "8:#1109" + "Type" = "3:5" + "ContextData" = "8:1;True=1;False=0" + "Attributes" = "3:0" + "Setting" = "3:0" + "Value" = "3:1" + "DefaultValue" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_DABCB1736D1B4216B9E2922C80D06DC6" + { + "Name" = "8:#1902" + "Sequence" = "3:1" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E782EE25F33D462DAC7BFBC248F22B2A" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + "UpdateText" + { + "Name" = "8:UpdateText" + "DisplayName" = "8:#1058" + "Description" = "8:#1158" + "Type" = "3:15" + "ContextData" = "8:" + "Attributes" = "3:0" + "Setting" = "3:2" + "Value" = "8:Please use Windows Update to check for any critical updates to the .NET 4.8 Framework." + "DefaultValue" = "8:#1258" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + "{DF760B10-853B-4699-99F2-AFF7185B4A62}:_EA095038010E4A17BE1470B74EBD21B7" + { + "Name" = "8:#1902" + "Sequence" = "3:2" + "Attributes" = "3:3" + "Dialogs" + { + "{688940B3-5CA9-4162-8DEE-2993FA9D8CBC}:_E429B6085A7046E699D077EBC15B0E34" + { + "Sequence" = "3:100" + "DisplayName" = "8:Finished" + "UseDynamicProperties" = "11:TRUE" + "IsDependency" = "11:FALSE" + "SourcePath" = "8:\\VsdAdminFinishedDlg.wid" + "Properties" + { + "BannerBitmap" + { + "Name" = "8:BannerBitmap" + "DisplayName" = "8:#1001" + "Description" = "8:#1101" + "Type" = "3:8" + "ContextData" = "8:Bitmap" + "Attributes" = "3:4" + "Setting" = "3:1" + "UsePlugInResources" = "11:TRUE" + } + } + } + } + } + } + "MergeModule" + { + } + "ProjectOutput" + { + "{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_7E1343CBA8EB43B8864B8A7BBEB62BCA" + { + "SourcePath" = "8:..\\UnityLauncherPro\\bin\\Release\\UnityLauncherPro.exe" + "TargetName" = "8:" + "Tag" = "8:" + "Folder" = "8:_68B52FAF3D0E46A7BB2DA063CB0BC570" + "Condition" = "8:" + "Transitive" = "11:FALSE" + "Vital" = "11:TRUE" + "ReadOnly" = "11:FALSE" + "Hidden" = "11:FALSE" + "System" = "11:FALSE" + "Permanent" = "11:FALSE" + "SharedLegacy" = "11:FALSE" + "PackageAs" = "3:1" + "Register" = "3:1" + "Exclude" = "11:FALSE" + "IsDependency" = "11:FALSE" + "IsolateTo" = "8:" + "ProjectOutputGroupRegister" = "3:1" + "OutputConfiguration" = "8:" + "OutputGroupCanonicalName" = "8:Built" + "OutputProjectGuid" = "8:{EC78D91A-3E63-4CAA-8BC3-9673A30FDA45}" + "ShowKeyOutput" = "11:TRUE" + "ExcludeFilters" + { + } + } + } + } +}