From aab6303870dbd439a5c9368287c5dd97860a2580 Mon Sep 17 00:00:00 2001 From: Christoph Wille Date: Wed, 24 Jun 2026 06:09:29 +0200 Subject: [PATCH] Migrate the VS extension to an SDK-style VSIX (dotnet build) and retire the VS2017/2019 add-in (#3808) * Migrate ILSpy.AddIn.VS2022 to SDK-style VSIX project * Retire the legacy VS2017/2019 ILSpy add-in * Build the VS extension via dotnet build on the slnx * Inline ILSpy.AddIn.Shared into ILSpy.AddIn.VS2022 * Restore the VS add-in menus broken by the SDK-style migration --- .github/workflows/build-ilspy.yml | 14 +- BuildTools/ILSpy.AddIn.vsix.filelist | 111 -- BuildTools/update-assemblyinfo.ps1 | 1 - CLAUDE.md | 2 +- .../ILSpy.AddIn.Shared.projitems | 50 - ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.shproj | 13 - .../AssemblyFileFinder.cs | 0 .../Commands/AssemblyReferenceForILSpy.cs | 0 .../Commands/NuGetReferenceForILSpy.cs | 0 .../Commands/OpenCodeItemCommand.cs | 0 .../Commands/OpenILSpyCommand.cs | 0 .../Commands/OpenProjectOutputCommand.cs | 0 .../Commands/OpenReferenceCommand.cs | 0 .../Commands/ProjectItemForILSpy.cs | 0 .../Commands/ProjectReferenceForILSpy.cs | 0 .../GlobalSuppressions.cs | 0 .../Guids.cs | 0 ILSpy.AddIn.VS2022/ILSpy.AddIn.VS2022.csproj | 79 +- .../ILSpyAddInPackage.cs | 2 +- .../ILSpyInstance.cs | 0 .../PkgCmdID.cs | 0 .../Resources.Designer.cs | 0 .../Resources.resx | 0 ILSpy.AddIn.VS2022/Resources/Package.ico | Bin 18718 -> 0 bytes .../SyntaxNodeExtensions.cs | 0 .../Utils.cs | 0 .../VSPackage.en-US.resx | 0 .../VSPackage.resx | 4 - ILSpy.AddIn.VS2022/packages.lock.json | 41 +- ILSpy.AddIn/Decompiler/Dummy.cs | 30 - ILSpy.AddIn/ILSpy-Large.ico | Bin 58965 -> 0 bytes ILSpy.AddIn/ILSpy.AddIn.csproj | 167 --- ILSpy.AddIn/ILSpyAddIn.en-US.vsct | 89 -- ILSpy.AddIn/ILSpyAddIn.vsct | 109 -- ILSpy.AddIn/Key.snk | Bin 596 -> 0 bytes ILSpy.AddIn/NuGet.config | 13 - ILSpy.AddIn/Properties/AssemblyInfo.cs | 17 - ILSpy.AddIn/Properties/launchSettings.json | 8 - ILSpy.AddIn/README.md | 3 - ILSpy.AddIn/Resources/Images.png | Bin 1753 -> 0 bytes ILSpy.AddIn/Resources/Package.ico | Bin 18718 -> 0 bytes ILSpy.AddIn/packages.lock.json | 1066 ----------------- .../source.extension.vsixmanifest.template | 24 - ILSpy.VSExtensions.sln | 38 - ILSpy.VSExtensions.slnx | 5 + ILSpy/Commands/AboutCommand.cs | 12 + ILSpy/ILSpy.csproj | 1 - ILSpy/Properties/Resources.Designer.cs | 9 + ILSpy/Properties/Resources.resx | 3 + README.md | 4 +- publishlocaldev.ps1 | 16 +- 51 files changed, 115 insertions(+), 1816 deletions(-) delete mode 100644 BuildTools/ILSpy.AddIn.vsix.filelist delete mode 100644 ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.projitems delete mode 100644 ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.shproj rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/AssemblyFileFinder.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Commands/AssemblyReferenceForILSpy.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Commands/NuGetReferenceForILSpy.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Commands/OpenCodeItemCommand.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Commands/OpenILSpyCommand.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Commands/OpenProjectOutputCommand.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Commands/OpenReferenceCommand.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Commands/ProjectItemForILSpy.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Commands/ProjectReferenceForILSpy.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/GlobalSuppressions.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Guids.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/ILSpyAddInPackage.cs (98%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/ILSpyInstance.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/PkgCmdID.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Resources.Designer.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Resources.resx (100%) delete mode 100644 ILSpy.AddIn.VS2022/Resources/Package.ico rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/SyntaxNodeExtensions.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/Utils.cs (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/VSPackage.en-US.resx (100%) rename {ILSpy.AddIn.Shared => ILSpy.AddIn.VS2022}/VSPackage.resx (94%) delete mode 100644 ILSpy.AddIn/Decompiler/Dummy.cs delete mode 100644 ILSpy.AddIn/ILSpy-Large.ico delete mode 100644 ILSpy.AddIn/ILSpy.AddIn.csproj delete mode 100644 ILSpy.AddIn/ILSpyAddIn.en-US.vsct delete mode 100644 ILSpy.AddIn/ILSpyAddIn.vsct delete mode 100644 ILSpy.AddIn/Key.snk delete mode 100644 ILSpy.AddIn/NuGet.config delete mode 100644 ILSpy.AddIn/Properties/AssemblyInfo.cs delete mode 100644 ILSpy.AddIn/Properties/launchSettings.json delete mode 100644 ILSpy.AddIn/README.md delete mode 100644 ILSpy.AddIn/Resources/Images.png delete mode 100644 ILSpy.AddIn/Resources/Package.ico delete mode 100644 ILSpy.AddIn/packages.lock.json delete mode 100644 ILSpy.AddIn/source.extension.vsixmanifest.template delete mode 100644 ILSpy.VSExtensions.sln create mode 100644 ILSpy.VSExtensions.slnx diff --git a/.github/workflows/build-ilspy.yml b/.github/workflows/build-ilspy.yml index 2a6d2730c..8c0857899 100644 --- a/.github/workflows/build-ilspy.yml +++ b/.github/workflows/build-ilspy.yml @@ -144,11 +144,9 @@ jobs: dotnet msbuild ILSpy.Installer.sln /p:Configuration="Release" /p:Platform="Any CPU" dotnet msbuild ILSpy.Installer.sln /p:Configuration="Release" /p:Platform="Any CPU" /p:PlatformForInstaller="ARM64" - - name: Build VS Extensions (for 2017-2019 and 2022) + - name: Build VS Extension (for VS 2022) if: matrix.configuration == 'release' && env.BuildAndPublishVsix == 'true' - run: | - msbuild ILSpy.VSExtensions.sln /t:Restore /p:Configuration="Release" /p:Platform="Any CPU" - msbuild ILSpy.VSExtensions.sln /p:Configuration="Release" /p:Platform="Any CPU" + run: dotnet build ILSpy.VSExtensions.slnx -c Release - name: Verify package contents if: matrix.configuration == 'debug' @@ -157,14 +155,6 @@ jobs: git diff --exit-code # https://github.com/actions/upload-artifact - - name: Upload VSIX (VS 2019) release build artifacts - if: matrix.configuration == 'release' && env.BuildAndPublishVsix == 'true' - uses: actions/upload-artifact@v7 - with: - name: ILSpy VS Addin for VS 2017-2019 ${{ steps.version.outputs.ILSPY_VERSION_NUMBER }} (${{ matrix.configuration }}) - path: ILSpy.AddIn\bin\${{ matrix.configuration }}\net472\*.vsix - if-no-files-found: error - - name: Upload VSIX (VS 2022) release build artifacts if: matrix.configuration == 'release' && env.BuildAndPublishVsix == 'true' uses: actions/upload-artifact@v7 diff --git a/BuildTools/ILSpy.AddIn.vsix.filelist b/BuildTools/ILSpy.AddIn.vsix.filelist deleted file mode 100644 index 04889aaef..000000000 --- a/BuildTools/ILSpy.AddIn.vsix.filelist +++ /dev/null @@ -1,111 +0,0 @@ -[Content_Types].xml -catalog.json -en-US\ILSpy.AddIn.resources.dll -Esent.Interop.dll -extension.vsixmanifest -ILSpy-Large.ico -ILSpy.AddIn.dll -ILSpy.AddIn.pkgdef -LICENSE -manifest.json -Microsoft.VisualStudio.DpiAwareness.dll -Mono.Cecil.dll -Mono.Cecil.Mdb.dll -Mono.Cecil.Pdb.dll -Mono.Cecil.Rocks.dll -System.Text.Encoding.CodePages.dll -x64\ILSpy\av_libglesv2.dll -x64\ILSpy\Avalonia.Base.dll -x64\ILSpy\Avalonia.Controls.DataGrid.dll -x64\ILSpy\Avalonia.Controls.dll -x64\ILSpy\Avalonia.DesignerSupport.dll -x64\ILSpy\Avalonia.Desktop.dll -x64\ILSpy\Avalonia.Dialogs.dll -x64\ILSpy\Avalonia.dll -x64\ILSpy\Avalonia.FreeDesktop.AtSpi.dll -x64\ILSpy\Avalonia.FreeDesktop.dll -x64\ILSpy\Avalonia.HarfBuzz.dll -x64\ILSpy\Avalonia.Markup.dll -x64\ILSpy\Avalonia.Markup.Xaml.dll -x64\ILSpy\Avalonia.Metal.dll -x64\ILSpy\Avalonia.MicroCom.dll -x64\ILSpy\Avalonia.Native.dll -x64\ILSpy\Avalonia.OpenGL.dll -x64\ILSpy\Avalonia.Remote.Protocol.dll -x64\ILSpy\Avalonia.Skia.dll -x64\ILSpy\Avalonia.Themes.Simple.dll -x64\ILSpy\Avalonia.Vulkan.dll -x64\ILSpy\Avalonia.Win32.Automation.dll -x64\ILSpy\Avalonia.Win32.dll -x64\ILSpy\Avalonia.X11.dll -x64\ILSpy\AvaloniaEdit.dll -x64\ILSpy\AvaloniaEdit.TextMate.dll -x64\ILSpy\AvaloniaUI.DiagnosticsSupport.Avalonia.dll -x64\ILSpy\CommunityToolkit.Mvvm.dll -x64\ILSpy\Dock.Avalonia.dll -x64\ILSpy\Dock.Avalonia.Themes.Simple.dll -x64\ILSpy\Dock.Controls.DeferredContentControl.dll -x64\ILSpy\Dock.Controls.ProportionalStackPanel.dll -x64\ILSpy\Dock.Controls.Recycling.dll -x64\ILSpy\Dock.Controls.Recycling.Model.dll -x64\ILSpy\Dock.MarkupExtension.dll -x64\ILSpy\Dock.Model.dll -x64\ILSpy\Dock.Model.Mvvm.dll -x64\ILSpy\Dock.Serializer.SystemTextJson.dll -x64\ILSpy\Dock.Settings.dll -x64\ILSpy\ExCSS.dll -x64\ILSpy\HarfBuzzSharp.dll -x64\ILSpy\Iced.dll -x64\ILSpy\ICSharpCode.BamlDecompiler.dll -x64\ILSpy\ICSharpCode.Decompiler.dll -x64\ILSpy\ICSharpCode.ILSpyX.dll -x64\ILSpy\ILCompiler.Reflection.ReadyToRun.dll -x64\ILSpy\ILSpy.deps.json -x64\ILSpy\ILSpy.dll -x64\ILSpy\ILSpy.exe -x64\ILSpy\ILSpy.ReadyToRun.Plugin.deps.json -x64\ILSpy\ILSpy.ReadyToRun.Plugin.dll -x64\ILSpy\ILSpy.runtimeconfig.json -x64\ILSpy\K4os.Compression.LZ4.dll -x64\ILSpy\libHarfBuzzSharp.dll -x64\ILSpy\libonigwrap.dll -x64\ILSpy\libSkiaSharp.dll -x64\ILSpy\McMaster.Extensions.CommandLineUtils.dll -x64\ILSpy\MicroCom.Runtime.dll -x64\ILSpy\Microsoft.DiaSymReader.Converter.Xml.dll -x64\ILSpy\Microsoft.DiaSymReader.dll -x64\ILSpy\Microsoft.DiaSymReader.Native.amd64.dll -x64\ILSpy\Microsoft.DiaSymReader.PortablePdb.dll -x64\ILSpy\Microsoft.Extensions.DependencyInjection.Abstractions.dll -x64\ILSpy\Microsoft.Extensions.Logging.Abstractions.dll -x64\ILSpy\Microsoft.IO.RecyclableMemoryStream.dll -x64\ILSpy\Mono.Cecil.dll -x64\ILSpy\Mono.Cecil.Mdb.dll -x64\ILSpy\Mono.Cecil.Pdb.dll -x64\ILSpy\Mono.Cecil.Rocks.dll -x64\ILSpy\Onigwrap.dll -x64\ILSpy\ProDataGrid.FormulaEngine.dll -x64\ILSpy\ProDataGrid.FormulaEngine.Excel.dll -x64\ILSpy\ShimSkiaSharp.dll -x64\ILSpy\SkiaSharp.dll -x64\ILSpy\Svg.Animation.dll -x64\ILSpy\Svg.Controls.Skia.Avalonia.dll -x64\ILSpy\Svg.Custom.dll -x64\ILSpy\Svg.Model.dll -x64\ILSpy\Svg.SceneGraph.dll -x64\ILSpy\Svg.Skia.dll -x64\ILSpy\System.Composition.AttributedModel.dll -x64\ILSpy\System.Composition.Hosting.dll -x64\ILSpy\System.Composition.Runtime.dll -x64\ILSpy\System.Composition.TypedParts.dll -x64\ILSpy\System.Formats.Nrbf.dll -x64\ILSpy\TextMateSharp.dll -x64\ILSpy\TextMateSharp.Grammars.dll -x64\ILSpy\Tmds.DBus.Protocol.dll -x64\ILSpy\Xaml.Behaviors.Interactions.Custom.dll -x64\ILSpy\Xaml.Behaviors.Interactions.dll -x64\ILSpy\Xaml.Behaviors.Interactions.DragAndDrop.dll -x64\ILSpy\Xaml.Behaviors.Interactions.Draggable.dll -x64\ILSpy\Xaml.Behaviors.Interactions.Events.dll -x64\ILSpy\Xaml.Behaviors.Interactions.Responsive.dll -x64\ILSpy\Xaml.Behaviors.Interactivity.dll diff --git a/BuildTools/update-assemblyinfo.ps1 b/BuildTools/update-assemblyinfo.ps1 index a6cd4acdc..2a6b64a32 100644 --- a/BuildTools/update-assemblyinfo.ps1 +++ b/BuildTools/update-assemblyinfo.ps1 @@ -99,7 +99,6 @@ function gitBranch() { $templateFiles = ( @{Input=$decompilerVersionInfoTemplateFile; Output="ICSharpCode.Decompiler/Properties/DecompilerVersionInfo.cs"}, - @{Input="ILSpy.AddIn/source.extension.vsixmanifest.template"; Output = "ILSpy.AddIn/source.extension.vsixmanifest"}, @{Input="ILSpy.AddIn.VS2022/source.extension.vsixmanifest.template"; Output = "ILSpy.AddIn.VS2022/source.extension.vsixmanifest"} ); diff --git a/CLAUDE.md b/CLAUDE.md index 158d702f3..7c08db27a 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -43,7 +43,7 @@ Windows-only frontends, packaging, and tests: - `ILSpy.Installer/` — WiX installer (`net472`) - `ILSpy.BamlDecompiler.Tests/` — BAML-decompiler tests, still WPF/Windows-bound (`net11.0-windows`) -Solutions & filters: `ILSpy.sln` builds everything; `ILSpy.XPlat.slnf` is the decompiler libs + `ilspycmd` + their tests (no UI — the Linux CI target); `ILSpy.Desktop.slnf` is the UI plus its dependencies and tests; `ILSpy.Installer.sln` / `ILSpy.VSExtensions.sln` cover the legacy packaging. +Solutions & filters: `ILSpy.sln` builds everything; `ILSpy.XPlat.slnf` is the decompiler libs + `ilspycmd` + their tests (no UI — the Linux CI target); `ILSpy.Desktop.slnf` is the UI plus its dependencies and tests; `ILSpy.Installer.sln` covers the legacy packaging, and `ILSpy.VSExtensions.slnx` the VS 2022 extension (`dotnet build`-able). ## ILSpy-tests submodule diff --git a/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.projitems b/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.projitems deleted file mode 100644 index ad31d2f9b..000000000 --- a/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.projitems +++ /dev/null @@ -1,50 +0,0 @@ - - - - $(MSBuildAllProjects);$(MSBuildThisFileFullPath) - true - acab1e5d-b3df-4092-aa72-692f8341e520 - - - ILSpy.AddIn.Shared - - - - - - - - - - - - - - - - - - Resources.resx - True - True - - - - - - - Designer - Resources.Designer.cs - ResXFileCodeGenerator - - - VSPackage.resx - VSPackage.en-US.resources - true - - - true - VSPackage - - - \ No newline at end of file diff --git a/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.shproj b/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.shproj deleted file mode 100644 index 80c9f2877..000000000 --- a/ILSpy.AddIn.Shared/ILSpy.AddIn.Shared.shproj +++ /dev/null @@ -1,13 +0,0 @@ - - - - acab1e5d-b3df-4092-aa72-692f8341e520 - 14.0 - - - - - - - - diff --git a/ILSpy.AddIn.Shared/AssemblyFileFinder.cs b/ILSpy.AddIn.VS2022/AssemblyFileFinder.cs similarity index 100% rename from ILSpy.AddIn.Shared/AssemblyFileFinder.cs rename to ILSpy.AddIn.VS2022/AssemblyFileFinder.cs diff --git a/ILSpy.AddIn.Shared/Commands/AssemblyReferenceForILSpy.cs b/ILSpy.AddIn.VS2022/Commands/AssemblyReferenceForILSpy.cs similarity index 100% rename from ILSpy.AddIn.Shared/Commands/AssemblyReferenceForILSpy.cs rename to ILSpy.AddIn.VS2022/Commands/AssemblyReferenceForILSpy.cs diff --git a/ILSpy.AddIn.Shared/Commands/NuGetReferenceForILSpy.cs b/ILSpy.AddIn.VS2022/Commands/NuGetReferenceForILSpy.cs similarity index 100% rename from ILSpy.AddIn.Shared/Commands/NuGetReferenceForILSpy.cs rename to ILSpy.AddIn.VS2022/Commands/NuGetReferenceForILSpy.cs diff --git a/ILSpy.AddIn.Shared/Commands/OpenCodeItemCommand.cs b/ILSpy.AddIn.VS2022/Commands/OpenCodeItemCommand.cs similarity index 100% rename from ILSpy.AddIn.Shared/Commands/OpenCodeItemCommand.cs rename to ILSpy.AddIn.VS2022/Commands/OpenCodeItemCommand.cs diff --git a/ILSpy.AddIn.Shared/Commands/OpenILSpyCommand.cs b/ILSpy.AddIn.VS2022/Commands/OpenILSpyCommand.cs similarity index 100% rename from ILSpy.AddIn.Shared/Commands/OpenILSpyCommand.cs rename to ILSpy.AddIn.VS2022/Commands/OpenILSpyCommand.cs diff --git a/ILSpy.AddIn.Shared/Commands/OpenProjectOutputCommand.cs b/ILSpy.AddIn.VS2022/Commands/OpenProjectOutputCommand.cs similarity index 100% rename from ILSpy.AddIn.Shared/Commands/OpenProjectOutputCommand.cs rename to ILSpy.AddIn.VS2022/Commands/OpenProjectOutputCommand.cs diff --git a/ILSpy.AddIn.Shared/Commands/OpenReferenceCommand.cs b/ILSpy.AddIn.VS2022/Commands/OpenReferenceCommand.cs similarity index 100% rename from ILSpy.AddIn.Shared/Commands/OpenReferenceCommand.cs rename to ILSpy.AddIn.VS2022/Commands/OpenReferenceCommand.cs diff --git a/ILSpy.AddIn.Shared/Commands/ProjectItemForILSpy.cs b/ILSpy.AddIn.VS2022/Commands/ProjectItemForILSpy.cs similarity index 100% rename from ILSpy.AddIn.Shared/Commands/ProjectItemForILSpy.cs rename to ILSpy.AddIn.VS2022/Commands/ProjectItemForILSpy.cs diff --git a/ILSpy.AddIn.Shared/Commands/ProjectReferenceForILSpy.cs b/ILSpy.AddIn.VS2022/Commands/ProjectReferenceForILSpy.cs similarity index 100% rename from ILSpy.AddIn.Shared/Commands/ProjectReferenceForILSpy.cs rename to ILSpy.AddIn.VS2022/Commands/ProjectReferenceForILSpy.cs diff --git a/ILSpy.AddIn.Shared/GlobalSuppressions.cs b/ILSpy.AddIn.VS2022/GlobalSuppressions.cs similarity index 100% rename from ILSpy.AddIn.Shared/GlobalSuppressions.cs rename to ILSpy.AddIn.VS2022/GlobalSuppressions.cs diff --git a/ILSpy.AddIn.Shared/Guids.cs b/ILSpy.AddIn.VS2022/Guids.cs similarity index 100% rename from ILSpy.AddIn.Shared/Guids.cs rename to ILSpy.AddIn.VS2022/Guids.cs diff --git a/ILSpy.AddIn.VS2022/ILSpy.AddIn.VS2022.csproj b/ILSpy.AddIn.VS2022/ILSpy.AddIn.VS2022.csproj index f1297348e..d05cc8d5a 100644 --- a/ILSpy.AddIn.VS2022/ILSpy.AddIn.VS2022.csproj +++ b/ILSpy.AddIn.VS2022/ILSpy.AddIn.VS2022.csproj @@ -1,6 +1,5 @@ - - + net472 @@ -24,8 +23,24 @@ MSB3277; VSSDK1009 + + + true + true + true + + + + + + + + + full true @@ -41,13 +56,12 @@ - + - + all - runtime; build; native; contentfiles; analyzers; buildtransitive @@ -74,6 +88,48 @@ + + + + + + + + + + + + + + + + + + Resources.resx + True + True + + + + + + Designer + Resources.Designer.cs + ResXFileCodeGenerator + + + + VSPackage.resx + VSPackage.en-US.resources + true + + + VSPackage + true + @@ -102,7 +158,6 @@ true - @@ -146,18 +201,6 @@ ILSpy.AddIn for Visual Studio 2022 - - - - - - - - - True - - - diff --git a/ILSpy.AddIn.Shared/ILSpyAddInPackage.cs b/ILSpy.AddIn.VS2022/ILSpyAddInPackage.cs similarity index 98% rename from ILSpy.AddIn.Shared/ILSpyAddInPackage.cs rename to ILSpy.AddIn.VS2022/ILSpyAddInPackage.cs index f7420501a..1b897d037 100644 --- a/ILSpy.AddIn.Shared/ILSpyAddInPackage.cs +++ b/ILSpy.AddIn.VS2022/ILSpyAddInPackage.cs @@ -36,7 +36,7 @@ namespace ICSharpCode.ILSpy.AddIn [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)] // This attribute is used to register the information needed to show this package // in the Help/About dialog of Visual Studio. - [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] + [InstalledProductRegistration("#110", "#112", "1.0")] // This attribute is needed to let the shell know that this package exposes some menus. [ProvideMenuResource("Menus.ctmenu", 1)] [Guid(GuidList.guidILSpyAddInPkgString)] diff --git a/ILSpy.AddIn.Shared/ILSpyInstance.cs b/ILSpy.AddIn.VS2022/ILSpyInstance.cs similarity index 100% rename from ILSpy.AddIn.Shared/ILSpyInstance.cs rename to ILSpy.AddIn.VS2022/ILSpyInstance.cs diff --git a/ILSpy.AddIn.Shared/PkgCmdID.cs b/ILSpy.AddIn.VS2022/PkgCmdID.cs similarity index 100% rename from ILSpy.AddIn.Shared/PkgCmdID.cs rename to ILSpy.AddIn.VS2022/PkgCmdID.cs diff --git a/ILSpy.AddIn.Shared/Resources.Designer.cs b/ILSpy.AddIn.VS2022/Resources.Designer.cs similarity index 100% rename from ILSpy.AddIn.Shared/Resources.Designer.cs rename to ILSpy.AddIn.VS2022/Resources.Designer.cs diff --git a/ILSpy.AddIn.Shared/Resources.resx b/ILSpy.AddIn.VS2022/Resources.resx similarity index 100% rename from ILSpy.AddIn.Shared/Resources.resx rename to ILSpy.AddIn.VS2022/Resources.resx diff --git a/ILSpy.AddIn.VS2022/Resources/Package.ico b/ILSpy.AddIn.VS2022/Resources/Package.ico deleted file mode 100644 index 900abec819429604467863ee22abc7f1cf2b9ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18718 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 diff --git a/ILSpy.AddIn.Shared/SyntaxNodeExtensions.cs b/ILSpy.AddIn.VS2022/SyntaxNodeExtensions.cs similarity index 100% rename from ILSpy.AddIn.Shared/SyntaxNodeExtensions.cs rename to ILSpy.AddIn.VS2022/SyntaxNodeExtensions.cs diff --git a/ILSpy.AddIn.Shared/Utils.cs b/ILSpy.AddIn.VS2022/Utils.cs similarity index 100% rename from ILSpy.AddIn.Shared/Utils.cs rename to ILSpy.AddIn.VS2022/Utils.cs diff --git a/ILSpy.AddIn.Shared/VSPackage.en-US.resx b/ILSpy.AddIn.VS2022/VSPackage.en-US.resx similarity index 100% rename from ILSpy.AddIn.Shared/VSPackage.en-US.resx rename to ILSpy.AddIn.VS2022/VSPackage.en-US.resx diff --git a/ILSpy.AddIn.Shared/VSPackage.resx b/ILSpy.AddIn.VS2022/VSPackage.resx similarity index 94% rename from ILSpy.AddIn.Shared/VSPackage.resx rename to ILSpy.AddIn.VS2022/VSPackage.resx index 4cb6bb52e..72cb91911 100644 --- a/ILSpy.AddIn.Shared/VSPackage.resx +++ b/ILSpy.AddIn.VS2022/VSPackage.resx @@ -127,14 +127,10 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ILSpy.AddIn Integration of the ILSpy Decompiler into Visual Studio. - - ..\ILSpy.AddIn\Resources\Package.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - \ No newline at end of file diff --git a/ILSpy.AddIn.VS2022/packages.lock.json b/ILSpy.AddIn.VS2022/packages.lock.json index f1113ab49..72f801c97 100644 --- a/ILSpy.AddIn.VS2022/packages.lock.json +++ b/ILSpy.AddIn.VS2022/packages.lock.json @@ -21,15 +21,6 @@ "Microsoft.CodeAnalysis.Common": "[4.0.1]" } }, - "Microsoft.NETFramework.ReferenceAssemblies": { - "type": "Direct", - "requested": "[1.0.3, )", - "resolved": "1.0.3", - "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", - "dependencies": { - "Microsoft.NETFramework.ReferenceAssemblies.net472": "1.0.3" - } - }, "Microsoft.VisualStudio.LanguageServices": { "type": "Direct", "requested": "[4.0.1, )", @@ -118,12 +109,12 @@ }, "Microsoft.VSSDK.BuildTools": { "type": "Direct", - "requested": "[17.6.2164, )", - "resolved": "17.6.2164", - "contentHash": "SIyMfFGhGfJ4NLgbwW157ylbR0OCZJrxy7ge+jX14Fmhedj+SLQG9duqc0FRnIvMq4e1EmLNEAHE2wvXu1h+/w==", + "requested": "[18.5.40034, )", + "resolved": "18.5.40034", + "contentHash": "5g0HSWvzIunNqTlaHPRBnKo/zix5omWXBrJzLyrbJS9c7Xkpd34QMqVOk6WTqgt7yHqpGj4ajnBx82zGABdSew==", "dependencies": { - "Microsoft.VisualStudio.SDK.Analyzers": "16.10.10", - "Microsoft.VsSDK.CompatibilityAnalyzer": "17.6.2164" + "Microsoft.VisualStudio.SDK.Analyzers": "17.7.105", + "Microsoft.VsSDK.CompatibilityAnalyzer": "18.3.1108" } }, "Mono.Cecil": { @@ -226,11 +217,6 @@ "resolved": "3.3.0", "contentHash": "gyQ70pJ4T7hu/s0+QnEaXtYfeG/JrttGnxHJlrhpxsQjRIUGuRhVwNBtkHHYOrUAZ/l47L98/NiJX6QmTwAyrg==" }, - "Microsoft.CodeAnalysis.BannedApiAnalyzers": { - "type": "Transitive", - "resolved": "3.3.2", - "contentHash": "LlcsDRSYfkJFWOdDpysY/4Ph4llHc8DLOc3roFTz9+216vl+vwVGfbys2rcSmhZCTDv/0kxSs2oOdd9SX2NiVg==" - }, "Microsoft.CodeAnalysis.Common": { "type": "Transitive", "resolved": "4.0.1", @@ -341,11 +327,6 @@ "resolved": "1.1.3", "contentHash": "3Wrmi0kJDzClwAC+iBdUBpEKmEle8FQNsCs77fkiOIw/9oYA07bL1EZNX0kQ2OMN3xpwvl0vAtOCYY3ndDNlhQ==" }, - "Microsoft.NETFramework.ReferenceAssemblies.net472": { - "type": "Transitive", - "resolved": "1.0.3", - "contentHash": "0E7evZXHXaDYYiLRfpyXvCh+yzM2rNTyuZDI+ZO7UUqSc6GfjePiXTdqJGtgIKUwdI81tzQKmaWprnUiPj9hAw==" - }, "Microsoft.ServiceHub.Analyzers": { "type": "Transitive", "resolved": "3.0.3078", @@ -663,12 +644,8 @@ }, "Microsoft.VisualStudio.SDK.Analyzers": { "type": "Transitive", - "resolved": "16.10.10", - "contentHash": "LuhBHy7MJJ5SjpS7J2GuHqPyL1VeqXUwYc+mTagaUCzXbNwJmLcSUAioCyQyAzPIn6qtnzuM5Lz6ULOQS3ifUA==", - "dependencies": { - "Microsoft.CodeAnalysis.BannedApiAnalyzers": "3.3.2", - "Microsoft.VisualStudio.Threading.Analyzers": "16.10.56" - } + "resolved": "17.7.105", + "contentHash": "pQK/THPoNjzmfVGnjdP/13nR3bZViUwu4CsjPAFFvg2xMc6xhVcgprgKwrSDakTkd92n57iCy+AC58ZKKuoaKw==" }, "Microsoft.VisualStudio.Setup.Configuration.Interop": { "type": "Transitive", @@ -992,8 +969,8 @@ }, "Microsoft.VsSDK.CompatibilityAnalyzer": { "type": "Transitive", - "resolved": "17.6.2164", - "contentHash": "9BqGG+sMd6SAHz5DutKyMj8s/pmZwA8L6+dluoYZarRlNb5+1uv7vwREnJ3Wtisj6wNpLxrJn4ueE7LAsOPLLw==" + "resolved": "18.3.1108", + "contentHash": "ol/XAbRAkpZmpswNL1pV+Ey2dqcEZNe1tYT74lkD/+ow5r0rqC0XLq72rVyiz4w/oCIN+480PO1xO+7/4hrqKw==" }, "Microsoft.Win32.Primitives": { "type": "Transitive", diff --git a/ILSpy.AddIn/Decompiler/Dummy.cs b/ILSpy.AddIn/Decompiler/Dummy.cs deleted file mode 100644 index 74855f48a..000000000 --- a/ILSpy.AddIn/Decompiler/Dummy.cs +++ /dev/null @@ -1,30 +0,0 @@ -// Dummy types so that we can use compile some ICS.Decompiler classes in the AddIn context -// without depending on SRM etc. - -using System; -using System.Collections.Generic; -using System.Text; - -namespace ICSharpCode.Decompiler -{ - public class ReferenceLoadInfo - { - public void AddMessage(params object[] args) { } - } - - enum MessageKind { Warning } - - public static class MetadataExtensions - { - public static string ToHexString(this IEnumerable bytes, int estimatedLength) - { - if (bytes == null) - throw new ArgumentNullException(nameof(bytes)); - - StringBuilder sb = new StringBuilder(estimatedLength * 2); - foreach (var b in bytes) - sb.AppendFormat("{0:x2}", b); - return sb.ToString(); - } - } -} diff --git a/ILSpy.AddIn/ILSpy-Large.ico b/ILSpy.AddIn/ILSpy-Large.ico deleted file mode 100644 index 14a26f95a3aa8fa9e1f738502a482a9050d8b123..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58965 zcmeEt_ghkL{5K#PxK~l`Ju*j`S`IXKnWL<%9B7&|N4W=xnyWH3Gc{8*)3j8y+zZr7 z%M{CjngjP%+<>4DpX>X4|AXhphwD1mb?(FA+&Az0JzwwF0RVsiHo$)$AV2~jp9cWA zGtbr3{%2e&3jm}ruSrP!-!U%$pwaoiV+f!W0su@5006wq>;L`U6AS>vkN@u&0`O!7 z0MEmf7(8_Q3g5r` zb|JwNj8MnsyJ-*ZEn7zTKii!&;`xyFl>fqV>p_0nBt%lLrr*af(IDbN;89>(=2M8+7B}E6YBKk(rdfs<5Ki(f3?#R#j<_^gK9*H)B~>FXdX- z4X2Olwhym8ZEWeS9szpWx3ainC;LV}t*iMAX}YW1u`d8{<-EVe+|R*&bEBMI*1hbb-rO=|agO|5AGDMxC8Rw%^8GP%7 zhh(J6vAMQ9`TgnLde)iiBTMbboCb*mkItL`YLDSQC)2G!nKq|e`~U}lXLMb_3|bm z93?=)xV9~7v7%BA>hTJAT{2Jp7k=>S?vH3(!~zz>_&mFcY1yLZVp`Bo$w7&gj>m&8 zBUSq27_~4m>g-jlHQ4#WnideHvb)%U${=--5u*FH6jgRc)}ssDs8h5Z7u=;?50_&G zJBpJrAi?5~TrJVjH41C~{$!rFEuilFsG|xmLd($lSC2^=9g{anS=;;Q zbX2-yp^79MCvsna(#L{!5^i<-L+B2Zghje9n|?&}A zeO%wW^R)%>Zf7T4zlXXhNf`>)2TjRP&Tqn=9MwfISM^-?SR%@bB;Nf`fY4gKJz9y0 z9-yxKiNjOMfF>-WPLu--AK=L~vQITyksSD5T%MA{hReE7wtbHBCisicd$^KN?%^ot zA41xq78E7O0Jjq^Qr2t1`f{|bSd1cBSdj6XOiwV@S0woJ)3Xmhv*I*kF~<6mOi>@j zWW4DF)OZ}xekS!rAAj-as>Cp|c4PFVp)GiGgJD(_7dPc+Ht8b|s_ziXr+D=C-4vKY zZNZc=+|M2*;Qg;{!Qv1Vlp-Q7kZcPsxIzE!&D`zq@5~#t^O?fcGTXullNJS!HB1Gg zQ^v3-{#)QCc9qIX765W)H;Ck~)4uojMKj*pE#g8Bt9FDZCWq6|@3_Y;_|rHU@$aT= z8VS4VqfWFkpWCCv{jWhFbLx*g;p<2p#H4k?s z)!SszPE&#fqg_dM0)W_P{I`c>N}&IU1e7zf&Zpl0ye#GQU*KPGwwl6mqn5n$*yhy1cw>`i&ZRU3A%sM?@$snZi?b?NR6*FtUsTRMj zFgVCZg5y(LHxE_()i3HW(zhIM_b%&<+wIl1??m;&^GDMK7PD`^64mEO{P{93-l(e& zUs&Wpk{C@N2td~}GC!irXUJFG=M%fF49<+U3)n=EFTEDK#4YP~n0n>>z3=B0K3)1% zUPXs|MLsl>kkmL4(iqm6&})B%OkZgc*K1Ru97+RsF;$$}ty@3e^*J`DYz*%0psZbG z3_3{a(TswkckJWB^jybPT*$f*3nDV-^3%U!;DFD45K20ratDl$Ier7DoB>LZ!$JLM zrjKDmU5q0wLP^&%0Vo-O21WG=$xIz`WUEUF2a)j6R>E|104Lo{7Ecf`xNHr0MbgK| zi9-!oP%i-xx*O}mOdFf~&`1lO&dFDuLVuV_k`AC*-hFlhpF4RP_`4J0yglF_MPJ7t zsJqAcVT>Y}PLQ*u(UVRaogK8(hU)DN0o@G-xpbd4M-AUpU8epyR41gm_wNX^;7H7Y z@GkuUxd&We0-&0Ml!%XB?bCHB$$;+sW!m==EB|2oKg+$=X2B6Vv#J=>9;3cA(&i;- z>ZquIgKNU|GS*neh!W*KNt8i9=`>x%p z+=nSK;y~;c{q(j)JR|Ev$5GF@HIG7E{y`RmkrEy)xvTFbv#Yhhp!Q?pk3%nmBtYG& z@Na_AR=b^P2sKUyEBQbeCz#Lp2W!p`U*%}Fie^00d}V-pi4BcR1z%|kZpgbq21G~N zG8le-e%}4bz!4N7CH=V^QA>4dQ5V-9b^N92rLj7{@s5PAiZ{&F~-9PHT9^qW0+7GlqAJCGQxj)y#_I!5M)9MNe&6REba? zep8P=l-eDwhu5#{y4Pbc;j06in26cV`pf5Sjt2bXB{sG*ymuRes25=FQ!x|D9V9%V z?C|=uN5SH4)GZ1Z2zTeh_Kp)moL;*9IrAttz!FAp`GvhfV^5d! z2e^J8*U*#dv&&}?YAw!{&ZV?@b&sqW+zq+xpY?v?Shw*A=21?g|@Q7>TbbgPCTZ&5Ug;i6aqI@Jlo zv-fk=BH~C2NnYIOgy12RLkVEPfpuibYL?<@r~>)1VjnwaG_98af1r(~e`HwUN6{IS84D{~Q>K;kL$K_K~6AB2DN|ykm ztcT1nTf5lRkHJrQj6Ya`{O(YYn9ac0U>*IOF#jJ;D*9#Qx6Dho(Xizr9v&EYhw|cLg9OMg~mNtt-e=CEcNSq_>mf+ccA- znBV9k9H+8)sT2nUt}RuJIbiOuaU2iFL9jPHwu8`ty!d9d=thI}4?NCap9Pl<_<$$y z;q5LjF}`A!X_@ly`mlX}L`vks<^(Qmp+Xgr=`!|GUZVDo+4zh_!Qt)eSwYuh5wq)i zIJ)yNVfz16u66|@Dwj}N;kuYWtbj$I)wJKkWIm4oF1^}ZjfKg|? z0N$W54k!tG0a&ATbOv~Od_GYa85FptLv6ls;k@a^CX!v&-nW%Dt9yi7UW8k!xXNz% zjd?AZ?c_-6KZR{kTP3=wF}#`xqfv+0ac7G40*&Dr^Lk$CsXYhrX&4qbOEl`Tx+_T@ zw6r@6yPDU8N;e0iQ%~i&fjmRkzD65x(D^O&Ho)Z2Lmx|ys9LF*RMpjFi^%%iRiDg* zZ^6hL;nr(=ma*cw5l@@i08vaEU@pcH@u|iPY!m+0XNB)qWJ~wQ8x#}6DU^|+`0yTU zAyY*xUhii&sqWLVS2+yD7id55nCe7%0F+=&I-bflK^LSN@#8NPTn8MmQR%n`-bJYZ z?aoxgkB*W0>=}{#zu;59i*7L0hgR|werx}pEsrgwx)PgDQXlFKO`i(^ru%|qfKdWZ)moezY(sn`%Vpn zI<@VpB`!q#q(A#tiTudf-NE+q+9dT zm#9#>2+&h7x_VKb9IfvzDX|pS?FMS_=wCdNoCfi1X{&CTiWjCY5K)7x6Iu5MV+!o* z$wK#r3tOv<9L8on_PHXWwmP_zbC51BiQTh4Z$h$fQi3~>dw;nF*l}gkqJRE!|C|=R z8jo0-)^Z>cLAXjH42`j8FZ+G1=6|P+kPM1i4UF!agOKuX0{GC9rJ?Q6cbmVuC&tO()KNp;47YZdE){6W1 zB?}(q3dK)3%TH;zI1rQYiFr{&Kboi`@Tjk zDrY%TNOVeFnMATkO^MFa#yhx|MUhhJgprqUX(`Mw`Q`ca)Y|R0yj0GRoinGXHKrlO zKSH?9(%=6TLkz%(d*9jhS>UnxEGX!QPcaD2=C6OgJR9=Hy#*MPj;&q-P_nzT`aOK; zX$zg4CRA3hOyN@6%W!u6#jVTfsRy+3oGycV)_RqZqvS8#MI73}rXiM!^cB{;l0ZhC z>hf#v`T3HAU0CpGvC&L^+L!Qng#EngKq;MR;cWW+fF0UpU1l!(>g%(?d`x(>C^=fo z8>kyUt)G(y(v43su>O^YUbp5Z&gzx9&LYmA8c{VF9RR6VZgMpd_u` zrAG@IX{(sIdZw8$Gs~czt3!Li&D615W3%40h+yR2E34#(qVJXUns#V2C1QT)k1369 zq&=$H0`&}~7HYuDNCJ272ryIjmKZQPK^mWLjr-F(Q>F#agcdNSrwZc&9P0}s4?Q*B z+>=As=!wNYb}X{cu4!!xv*4MhE~u`kRll-V9oK4oW$&+CKj`i>k?#1F_(Yf~_T9}~ zu}MB4;!~x+!Q8+eWo|E{`vQj~pQY9&EbiDo2e839SbWR{YJ*cWnELa%YIDEn-iHSe z%6;}|`wrxm6?|OWYJEQZSSZCTNyo2pE!6>Ru8cDOu%;dcGtws}!f@rcz6+_sTanfqZTk<<_E z*n7Xcw8ypn{`kz+_Oywa@v~7(&N1y#l`Y!v2fTU5G{|Ue3kgtn4N*HLaLaC01v3PigIm z(f1_)fo&f{ya;I>{>F2*Q_b?V3HA>j5X{w6k2IasH>L!bcDga;DjaS(j*}njBsjLq z-WV&IhsfXapvd2=&-L_qjxN0bfNL?~sL4YC za!yM2M;K7I{S)8`xPN1iDG=|?RJ=Sn0}7yPi0`e?=-jBA`5GU&^my~F=@+W4bMgtnE z5bX3Gt>z~%r@EpXsZ$$ujtq`VHN=3OjL0S(ilxeO{}hg(ypqO-t4jDsIqUa_Rb_P9Px)X6c%|W1uSukpMQZxB%vf!ivknf~tz&#dfGxXA#cDBaVM5@5OQ#fyAf2 zcd4$B{QjMEtgkq^@jNl~sZafH=)w13B+GOgZJUeH8s*D#@SSn^o@s&8ZTVfQ&W7Sl zzu51C$E1SORG}z#29(~KNQjeH14$h2_+Y}|TS_JXQ=tC~&M?E%BYk&$v;3LW`1xIV zvO0(qI$OJZW27?hW9lOT)zBU8(C>BWf5oDy2^)@)4weYPjpu@>={CLfbzKE=+2&Y= z!fNtxfJNoZLNm4Dxh88c;%iFQ#)Q%|cJgeAvffSM@ZOu0lyfVjKxFTG?#GUZucb!V zN>!oB^LL4MapFd(^lo|X1J^&Z8AN%K+2+Faa!Ry%Y|kOH!WM%c*h!s)!)_jPwrN|PWtg}a4VZPV6Har(8G_CdRe1!G17HXjKN<7YzaX5~G_nJDb zzl2+AA%sof=gC~*NH`G|iDWx+`=aZ#PCTH4QRjiWeK!Fw0b)M#AWB<>LE8XviXc;E z_<^z-8(mh+VLR&IGw9OH+cx#1h_q+vRHOK~Q>EF*I%wzRBr=k1fBWkAm(O{NJHipW zDr1AdwrZdHpvqBA zm9d@e6^?py5Qz8KFOp;Rv;#HRN=*GEN<)L1#FGuy8Ns^xF_;&XHFrV@$+@27v#SFw zkBRpKr|U*W7SEs1kNc51+mM#$z8N3j6!u!`%>HE~lARKLMmQuKtICEe6b_-Xir##v zw?OS}d}#N8OY8IMXVrg#*qOEz`w;3q8ub1m|FT?d^b_0BO#+TY}A#z?wNb0p{YCc{`n6c0dL+ofy>;y-u+n&e9|*Y z>?hiZTmoiN7)z%dq`)zpA0SsEuO}K*LMjD-(27nuaD3nS8JQ9eCIhO{W zY{p0df%Mnx<#qc{_d?*#wbFpKcZSZ17MI)}7TLT`aFXCNYRPs;dhshEEiDMbe$B)p z29FnnKt{NZj+)yEs%N5*8Tc-FXiKX=J5d!1+R|v3^y1~q;W}U4n3i1w`u>+`7h%b(iH9Hxlrjx%9hazhlLRHoqZ)tOP(~4=Lg421# zi-jTv8{5pMJ@Uol;kAp_h9m)sK;UU+lIL83$U9KSGW#%~=+qD?^uIeafehOrJ9cD5*Zlf8M{_95Fe2i-+k?B9%-d{{f8t;#ZyP?|;@daBb2set{<;xQ-69~; z_sIp#q;EwEf_a_hvF};^H^BkHDL{`!g@BM`HW<;(U^8eR?T- zktLGOZCL1@NwJ=0OCa!KK0>!vo@trLp2~#;#~bRYx9+7Pew9VH*6kl5%igvPpY_ut zThwd`H9xdNj+UhR!THEu`r>wz0?AQq?f(UWJ7cq}v|D2X%%Wb;14K5O4MhJwO^M{p zBXvp+N}&yQl~o6xe1q}oF-8U%6jaXnI6+?qdfuhzbqS) zi2)N$w|Q!7!)$qk^l;%BoW#VPAINfU?|{6K`5rCO?(*{h3faq)cNbZtmLhS1ynPJ- zlL4A_K}KqoKp3-_tWe$O+7|*c1&bjc&b-5a5fy;d4hPgD<;8ubhyMLgV#B42(oIi< zUf-N!CQonwg?ff{b!+?m$&2*HV%r`K*c>1EK8tE0GLhjRGmK)qK1dHff9TLnV1@(w zBS=c;Yd%Yx!=ZffR(+A#(*yik%+J^(m)f5Mx#xlW)Xs zcv)u?VV3LAPMwlKq;IwLyUoNcCjet%v%9iJEapszC9Zngz| zdDtlvI614&FX~8fFf=^M+S&?Vec&3H@uyD$cu|ski}Lu?r>xf^CjEBOOIUTRrG&q? zcg&9;?(|4e(4mlsK1ytVQ$I#BS~h`lH@dG~?V^D2wf>@y9|XS$N?r~Zhi|xw7j0TR zHCzUm@R_CN$L%a))t*R5m6erw$OJC@mZi6Sl#nhGH2Hqf6s!}P&|c>&S%oxHXlVLg zH7Fzf8T^Y6eXFi0Mzk=6NY4!o8V)Qw*v@GRHyg*P0;9Hib=cYo@wC6}IA$)a*68u% zq!#hFYru^YxR>@{%Z<#IGQj#%ovN?*DFMv7&U&Ry5i8E0%i7+O+)kKhy!#ITQI+V>m8bV-Wb*d_|f2r1<9-$JaLou0cx-W$&_Pm3*HJq_BH>*l2u+SQ9X)B97 zFg~QpG*dr3L864QZT%lxOO5Q7W_9)NMD5}UOuTo=bzaYET1#;IbGvv3^or;8|N6aS zq~nOCbHVIn1%7-{r~yFrtpz|n{_SHOctpgZunaTw>H^1W|2hW*ki{=yF+^b~UQWf& znr~rGD;@A!X5pbnmSk0`I%%rmMwhN$xZAHG>%311EGMiDQAa>?Q){aNuIJq`_^K!} zyE1sOfPdu7U2g89lO)~%NJxSh$Yew^!0=x@Av9j>X#e6+FqE!j{2lzJv4(USJHAIZi0RD9=m zB@1y^xL^dy8uG)gv#->)N_kH0(Vil!4>77LxDV~y_mfnb^qp7#4K(((w$0fm^e~M9 zeueb{g&6SFPa>Btf#Wi3RY%5XaUGZWi((#ie~&+PqDnTacUhWmoLK+{an*aJTk}%x z=Bvt*mnXjTOw@hmqc(^gU9T%O`kHR%BaC(PN@c+{<(N5)WvonR-J%4Kh4q5<1*n5~ z;?u(`)$f?a&6eWIw4918Kp-IGzeaAIJVbHI40~*B z*fAL`HL@r#x8PAg#KjOY!RLN;ri$tH7++%FV@7J6!U59&PCaGW;%%>3vc+XCT?|Httrx| z2%tnLy>{@7DYxxS3v1wuO;>PG_irB_QF1;RAykf3!vE5Mm5YYPF)G7Gij!RC4L>Sl?7BIP=e)0KKGI@Fqk&=)a?pn*y!FM@M}>iI898nqv} z55DIk&TT)Qh;p#yv6~s#p+!|Pk@}cF*=PBI#t)f@Fnm#-U|q;8SU5XT(eA2`74hQ7 z+wBczW2b@HBHQ<>Bb1++-BN0+KP7;(&to@_iB=Aos;J#@mvbQcuKcyyQqjM^-WnbW zXb9^v^fcC9Sh>|qghUD6AriH&7#Rsj$GCR&soymJ(E^up7pIsA#@L6kKH|{lwwL~l z4?lPanF?ijM$qj1qf`-4VhSCCZ1?P4Ync4-G*|hoyM`w*_jUl+I{R3$+(`!moz#%J z8?5qMduCg!+|$G?gstIp@ty9D%`?GO!0|x;Sl_jWcNe2UnvJk__b$Pz39;w%g9>W` zNe{J|MkHGzd&w+dpI<~bjJ@>c6+N(~Ca@~}D-WFJ3g+Xws>o^+s|eKCT$-rz>9c~n zGTkQfc~zYCK>t931BS5Kd+%@I7LDH0maeQf#@v!UhYmkDOD8iJss8Epc-fs;h=Pc3 zd`-g;4xp6ZOl0^cz34BqE$2uM6~D042gSc5ALFM5=$s8|9Dej0FkNHqL(zI z`p>^aakkIAoPTCNNh%x*eYi7xWxA2=5{gAHDv!TXA{$#cVSpwky*N@~JAOz%G>LMo zO#)a6Krfb(z+=@BCq>F^+poM3e3s7n%!-Su`mr!}kv!+z$Hkr3N zwMe7vbp`kGQeVu|Vu@LA2VhT-yEI?i!z>)S^W9&u9SXAsFSC0bxZ1$Qy_qe&eWq;H zM-Zhl?jflk>%>A2ii&=`0L%FSL9?{g{THq^vLPho3qZdU4Iqs^_$LO;HUh+YkE2o( zpx=8lqydjdu=CWRNpaQHi$K)$B;0$pcI*s9>|#TJm`4bG^-7 zowyG+G1sCbpBlqrEWSxrap`dB@TUgAZC6S+Z$knGLvif0+_MTlx+ONh@V~OEHFUnmA{`qH z{OFu%%U35aA6x6Fu=Z^d@b-McC)Q$Cd8=DHidVD+n6#W-a8K`Km8*xsQ!{r%cxGES#@BHNgeP?7C8BpZi(>C)G^=$%;AG zm5*vuwvk`z(1?{uxCZ6VPKJaj>0=b;o9@lQ_!7}ityvEOt?x%bjo%Xwo++>#rny#W zG_mVG@iQ22*B%KiO76@DO`-w^Z>)V z&5@63!C~J5E?#C*ZJ=}zkQX|x0?b~cyV^R}yR2V1EdnH8#z6_H!TuOHWhW;VaX;ck z+2ZR}+Y@3M2WjXxHO-J%*Jt-~`h-|7C4Nxiy&EO)L~Rh;FwB{FV^AlS3AA4tC@=;T zH6-4N4*{<8`)8d$hUJnUM_6hcYwXr~^jj6?;WvXt)=zr_&HA~E#0(VisG28&92S2R z*cFVG4EVb{2PM{H`3;qFT~4qk_{8?Lf5|h+Uij82r?hec^04@d)McrdXU_y)fJ+Ul z{PJ|l9an#RYggE{VI2uG`bsqhznX}e+0K{P&B<8hm~DFGX4kdKad=Rj(?#jkF~zGk zJ+$*z#r&BT?fl$$akcS!QdD{3@xC!U8csZzH9~>(a;(G7s#lXfavbT%0cpHV9_<3=Elr$zJE7(+>(ZWzok9 zu{i#{r$*+06TI}3o(~~M{CvPQ6VOPYs5DR}=C{(dr0+HO;sU;5Q-_%1XDn46nykaV z+&@rg3C$K4a_dd7c6{HO0E* zPXQ>)Q_hp(mTL@){vBB1x{)-f+X&QsrN@xp9QRbQ{ful_mPUI?!)n#Yp2E56UI0fA z??}t{R7<{+;*(#UVrFKF9*y-6YXZ)lb8w!B2sH&kFFD>tOX@g&mAyBnzB(*=gF_Wp z8mF-bnb-T;iQM99_Wk!$UgOK>`t*9s>9%xDr?RHDw8iHuG+^mkMiZ8g_KmdI0?!FO zZH0ahorf!u>m$KcUeA@aSVMA4OvIvcms^ic4>gprhKTRa4D5@ZO}^1*EeYo$LiUhA zdUf)5(n%!bk<_PlzXMB%UO(q$SYukQu3Gp5kPI-ROtw5x7Y`_jtnUT2%sIqq~&Rv0PNBMHUj4D7_I$s{-`aFsdsl-I3}z+ zV=FFKdAssHs@Vm~e>B%jG?1~m74)>1|L*;W&QG`d&dJ(12TNS`6@NoM%j9D?b^4lW zVdh?O!v{T>ousUws=s3Py$|2lWcfzOW6E+vpK@IKW^q}=KB6i<%XgJeb1!L?cBxf9 zDQdNl(zob$Xjftm6HK=k^f36CUTMaMILeM=2o8e$Q1nnE%Y8H}f?3z^I z>6b?%KJR&HDCf5%S&VrhkUBQ>mY^a;Qp6|H)ISX;NJz>y~Id!)4?flGgGWAd4TwrX**o2PD{7{VQ%oX&`e}Im)WK0-s@eOfK~pxaCZAln_C7n>K#Ti>lH0HOqxS3ZZ|3Z)@C?DvpEDgRoJC(6?G~4RTzLz4 z-3wrmgLs^?jCto7zp zJyPa&aFH>{$FL=NPR7)ozELm12guR8!}h>N@WW#VKcm!JT9`}3tkP9x7tEIw_%FO6 z0C8)eOBOA2R9$?^SM2coUTU^_hL7mbl-;zZI*wd7G~(-KZ^s*A9DAmp-t{@Ut6Aa_q3qb|Qh4-P%OzX3>8f+k2C#a;J{=Au||-18b8_ zjMVngpKOo~*Z|CXw+#HTL+&o$4Ho@PUG6~5jf97%;O7nw4y@h1_|9nXq;ppVEnCTP zHZ^q_2z^?OtPW3Hq0We*DojN0&+EbGU{B%6_8}T1|4un4lycS`Jq)7Ti=R$ELM|)o zy-#;kuiNz;3#)CWUJ4fPYNh_oZzE;_;5`SdsaRl}PVAJPLK#vT4MQM%hHeQ;l!p$Z z<|;#)h$S4TGE?#Czg8A)b7sQ9KM!s5Em)Yuv-{so)OX9gWbZC^Y2L>bRpAdsMjkrE zEoG!EndC~&@|yrb(2GX!*ePD%s{W-MVu%5(x(|6nye+)Wgc_|4LX}?7(;IEt4Xn&9YOwO19 zW`EUWdsDHEzaklZhpWKK{2HrgbN{bQ_Pbx) zDmSyif=UCUD&y@|EA^yd{-yD7S1C;Obl&OS?v1>psB?phoyhjp<`eSg$<4J|z!qv> zqWyI~gUPlF!I7o?a%010Ui{PhKXQFa+EYQNq8+tbLlW)5K97s7^w}9+^qk|-om_UX*c$3m)H9}g7RyW3veMl1E6hMH#>oHqpu za=ms%08CiQuSv+Uz%MvEFJ>ZtZGE52ce0inq?L^(-sA$(XG+9DOq|ETiDIjCyu`@h z3OgnhU1Ksw@ds)A<2|pPGbbTmbye^eKTBnQ)fRk%4SHyKQ)<}?w}TRicz zYhjP8cI(>Ep6p3fWsQfzIIIN@oKjYUI5#!zE@Ao zt(-EyA`LRf4Ze`+=NyHgjAU%OKZ1?H;BkgANS6=dCIN7un`2ym;PTt7cn`nfiF@>$ zq>ug4S`pDVk7i98aU@1u|KXwdf)oJDxE3%@1bu$s?b0+Oa(ybBYsbzxa7ZY$&N|Kb zrjW>!&ddk5PB}CL=#;mcN~)H#e^`8d0smQt8uTW(w4IPhFYz1o{r8HSrC0a;W#slz z1V}u3{f+yL#M1Jvtb>cf;lWM+F;=~AB#y00Q@Db6sO;>x(n==3PYAo2z@%I>v(=~r zqy9#A-^u`^wb5ax=uY}t9P~>Q@(x5x8s4hj9AdPY8pwEbdf{90*%I1R(-3;L`s4Xs zRkq`$n^j~ux4Hu%*7pY&L~jhdwRm3*9vbWBNB!r=W}ABN3-Pk3xMO)b&C|f0vGx*A@R@P`a{(s8z3oy4sDKq!n94v@?$^YbfQB1vWKQ{Ge_ja) zbiz#i^eE5u$A&au?TG%X%FQ*&b|OqL*Z)%}Lchyyb6&u)qfj5KdVg4QbkNm&T1#qs z%Mc?szW4+wIVZnKz^5+!odlDo?HGqR`VXDL5_7z~n#f4&dZ=@~k;w8W>+c=)KRhOS zDvR?98e%XSdsbWDH((pBR+@#Y*>E05NBI z2UnSID%9dt=NRw%G2X{A^mu8C5oLTT_24KUf~seiZIA-4jT6~@_=QOF#OG>Ww!q&G zVt}4Im%iRYYs;4Dnm;!!Rdt@!jl5esmg5-p>Y1TP@AB7^j;762aQtzfP{b?B-~6lT zs+qYXv%exDjbXlT`6&%Hh=?#V4>zKLnRxA%_uGi;G2%l=r)k(C&HF!+xX;v|caQH6 z*|79GDzY5SGO+sLn_tDZ7B!J41hMo-zk$ccNLp`<6U)cf`y!W$-xInK+$#3X zjB-r$15xEInN4d;_^s_C<<^=eoip|1h=i=Oi#m3iFGF?1d$eaGijE5thRL&*ze+Pw zeq|4&{0dtmSmO6vW!|lgIu4=lVELtD&hbIhRH{yVzjB_>rWl>c8E(Tt(%kKC(Tjao z4yi~})#E3Z4R+zJTaN}el=kV`q|~mr(VU2V+r*>n!$a4N&A3J!EIb+%-N^sWLXAt| zR;*yzFb=4QXQ}Pi z#|waB93h*di@yQzJt{{mCVwV1Umx0us%Sxo&|EjHJH%P^!=u5>!{odffIISam1Z>` z>In`sd(MKi_z+kXkSxH#P-HDQg5KA%8bUV)uBVGQNJz-A{;f7j`vfYl#AW^a=@E3? z7Qv;ZJpUS?kNXg(w7E4AW#~91Lf*0S@fi-tZA`Wc0w#u?tS?j6TS<4kvZO9g?D`_c z^!2Uq1SZr5WAaWA)5Jb7+NTynKakgt+OCg|cK;$|ATuq>`^z$EBEc&?G22`w-(%4g zK#P&&g*QnVy~;N}zO{eQcd`Cko{!(v zQg6TZ*9Ef0O=TK;hPFQJrr;S*gJ%$hvl7-;ViVcW$^3X4WVh9m>N&T?O3GkT+v&Bx zkYH5$l6>ExQU8wZsI>^Kx#%FYogEN<>}Yarq}m#~PrWwsYKVQu$gllUvw+&D6sx;( z&<{BY*5(hd`_fd@9h-;q_y8tAoxBc7u~ucE)8|}k`6;cYWIN;^Ib5EZ_m#v50jzO& zsv>=y$*Qvw?+WH(!bdAJTq$3$6U|u1u}%lXrxdLYdV*MB2NJjoj*_3czS$7Ru+QH_eKRul((58M@{D&fzAAO1w zZnG#UnTxe=DwoHa4|tn{6Cnjnw6i^oPFMC@xh*_HsiUa<4o+MT?ADLOp-p_8jU}F6F98yVU(2$i#oH;iW)u zjRJ3=2`hLB`C!&4a;pp6@56j6$hxA{4IH&iGb~F5>)%;j3}jN5IY=Ji`mu-#n#I#2 zE67nEak3ZTXV_&bQ%Cx9_s2o2vy;_vbh`PF;>|MXEgqmFlGJL(ko<;#!b^ zmUqfZU1`uy2kW^AU?-j6aXt+uzAg9b*H#qh5k3vF#&DLbM=OXLuhMuJD|}DLkKx-= zUY5v|_-=lorjx(Z^ua6dCFa{E@A~CcHq$$-r7%Bc<<(LNF-%U6Ba?ur-Eur1s*3y* z8iWm@^hb~qtla3n>`e(3*)}Pkk&NIu{6W7lQ=>>bed~P8U1ke{4X>dAPxSk0mDhYK5*D%*Hv5gyojQ20g;*Qsm?G`s)S@MYb_ zcu{|^XO~9*K7H?O`#a}N$w;8G<<@Ow%j6+t%b&3RPr13Fc3QPIU(*Dcxs5^oxQMhr z?nI20g&vrsj!nhG3{gVl8(FllTFeua_uddl{~3yt9@UHJK2+S5pGQC#^)P2j>SVMM zKU#wyKQ`x1`CiXvYA+t2tTf}Y5XD;VwBAtzSSk3hH)D~d-SIo8u8Q|F$j|9ZDOOP@wf}zv$&~ANiC{Bl8ATolZ6mDpkGSY8|3}Sc0MVup24&fA>O}-L5?77vl?6mh$SFml zuHQNh(_nNj^l)WoA(GxKW{oXL57O*xHuM92wK3%k?{A&@z%s>ksOUO*A@?`F-~)%? zk?kx`ay0X$)JKi-jw5`cIO~Tnn|u1dHt6YFVnm*?MXiYdWq)5Xynl=oSz0Se3h*)N zPajU`FRI|0?y?t_vZ~cI&hzt4g8v)ijjXJdEc{e_o{#GgER+l>y_Obx8>A>zP>MDT zyTBFz6@U{Akz#bi2JAk~Fj0JJ&PY-}lg4a)c~S~riQ6)1ou_F^#)Zu6(s!pyQNbQ6 zJaFIT%3aYHqaoa;SS2*(R9FX{_4LN9_T#4F>^kV552SaOLw>J?ItQWu`7dkxcCI#l zkUI!V$EN5|Wz0hU)sz~s({JLnbQ`3_M&}bkDb_2Im%$5x-CHw8Fe zx;0cZwb}xj99PqMA`X!2&&7X4ZO?}m$<@Szmui2Wi5$BQ9*?^0krV#CWeodosWX!{ zI1g{@NyQ)Ez)E`kACk^Hp6d7g11aMN){QIOcQ|)$lz;l!XR|4qP5AozAbj$Uc!s zn~D&$p1u&Uoi1Ci8Juqya`f6BFqhaCxpQ?pAnzk^RGhaRdE3-79!%8&EDuPMz2ukA z$ZYy4UF4(NDltW=C}~iBm#RFB^5@{@5o7~slIo~y*8z68fFW~sxb;@qW#OumlmR%T zS2%$P!7l`%WaCJ$FZ}edS-7Qw4{?l}#`b&*H0;hY1BN35a$%NoqXkWZt<(|njL0gm zwNQa3f`9a_2mQ8Em^Nt4{yj#m=lqo!A7(k^uu>c+%1N37+D6%@aoa6l@NSCq-Ys6o#eq~J&v(bY zB94oWgZKNadLqb2`|B;)(2bK4%cQOL0C)KO>;u#L9o{MRNiv$2W#~j#X1Z@hH(3Wr zG4j+%&>0~SqeE^c?f-?Bi5x4>Xt*J6T*kKj~1e0X3E8c z!35T>KjzJFx{D7eGzVf4FhpEE=0^EtnLvu!6g?!|qu#RR4Bi|tcTsYS`$5aos>TX` zTZZ%)DX`~6J_m*1Zaty-1D5x+A7B&Ucy^NP@dyN1t7Mi~^n)oeK9v`La-V$C6I=sM z!Bf5b1jPemg`9pU|H#FvroMAP$znc_!Fy=SKg+j%Bhnu`mir@!g$Jk>CyqkWR9pmO;o zF)F{T`W(XigU&BWU$}9dJG!U~kq*v^>fO^+u8bfXwY#3Y%fJTp(k{xc`S~-`m}&^H z=TGRKY5usFNYm`Nn_mi^->Uw^ctntA_!oQQNOG;4q<#p}|IA9kS@A)VGk7$b5!CGzjz4;zSZmu-8 z&mM;~L44ff794oo8@a{MM-PVqSz4FmOJ^N@3T<6bljqzD*@K2@X=imfyenWX^vc>v zvo@SUr1P6?;K8y+XP|l1&yS&uO5u@L>t*LZjWF-|tKz@r`g!kTltPRWr)TT<2>Njv zPc}+E3K`Y!4@5*U;I96sNT%rP9gsg?)CJ{HsZG{8lFP$S-r((E;Nu3@?&%X({yA;P zUEFEXOsEf6Sh!CZJg}3%gQva|u=Nx1Ou_)fZq>UZzet|zvl6haSy*P{D-5t5B5y*> zI~sFsBPK|l#Y0ioq}0Z&Pg-h>^4Vscx`OJfJiRijp4ufspkC2kh#UWn<(uz!tYkIg z&y8T1CMQ?XQ$6=Y;hSd`DfLEZSqPcQ#DEN9q|P=B4HUob(rNbQrdM9@>{W9=18#YEeW9L`M8^HR%ZG3H_p%0o)fMdP zU69`@WYtOxNo0&T&cFSja9=&Ne<_^t&GFJAg;*r++uXkI&0J{e!lDQj!m)0T?OtTq zPjty3s)evNwP&_=0s*J^4r69u<^sB zL<)vcj(+wAM&1ZUSG2gFdBRmHpB?x1o}ulgQy0G7)r*VDF~G+Ve@}D&47fE9Unm`x z^y)p6l78u{zwb)@;9VVxCI3jy`>!QWrv%$a@(NNF?DYGkwkY)J0w3y64C4F|ea!-f ziPZKbhA%`RKNM)}|557_0Y^4*zyTMVu7kOcY?19F*?8fZDONlWJ_|6Cbs~zAA|s{h z^_OQ}p9YuAc)^7Ej_}?Lco%4RU#Z(%w3UrmF;ch2cWARB3xC_AEf=<|K0fFF~}+d1uF`qTz` z9?m6unvd}%i-^ahlD?w0FWR%5PL`^FNZJRuIX?MygI1xYg|ZHhUOOAF45%F6I1Fq| zE5}Cj%@BDPl1$Z~rX+GHKl%meg6i{kkO;-_9PRk~`R%u$;Cpj=`4L0V@&EP$+BovR zNU*+s{;17>jWD@361zlu1UKmUZBT=!FBM)TZr^ouw}G`l3?>Jx(fo4HF7$YwI5JYy zj`g9;#N8%;>E@|TupSYei!F4kWO<$2{Q22Xp7xE#U?KbZk7|XT9y1*H{r)=|-F<>b ze!p)%KS-#zmQU~dRCqehWVe_F(iA=fjJk2Z3NIb0Q2QhitQY_kD#e|L-K-(u~9(zS(+K?XNTV(5C^Lrw1s5w^mO5w za`}GRx0uL~9%A`P{)xmoT)o(S~Ib@8e{laI*~ zr-*#`5UDRzklG&#X)Qb`vRlVlPZ$IhrCuedVZU!z15FW4NumOfO_g=uQwB;&#{}(i zpxmshDT%A>Ggn3!OG&3Zig`nt1y{5|26kjom#UBC{6~~|kc#7nq71H?wCtYk{qtc= zqeoVBS}~VsqbEN4CY%{U)5cg?5(UHFGOCLnCk+r=7CuRJzt`~+FH+7A{fgT?a12+7 zIAe$-bd8sHW})Z%1Q)nmrpL?bHp_;@OR#~3n)m*lDP!m{A^yFCP%Y8%?g*TL1ltB_ zpn<#h+05Ucl*HVL3)xlnKU7TBn!mn;(>Lp< z1|TLvashU@9`+VDQtxp!oW1;HL$jHzFO^<-xn#4_zN$kHg881sJsC(2i#Tn%ASmL6 zdKZ2EPEFpvW7aa~sIGn;0`u&R#Qh)_1vb2o#=sxj7^U~y3}cOle19w`nEGDgwI zMYmnQwP7fqHn+tB7UpHiF#7yJzoe_~pokr0UOYpo5r6S|o8HCM;`~vas~xtC%T)|d z`wkBKS`=Lb)jU3zTFH02V{y$ixRXj`XnW53`nb>UH7mL2CmKBRbNoRd$KW>-te|FU zE1mJl%6zxef?Bs$b)Nf{AH>IfKAtknH>Avk0a`!lEmVEVb;o6;%ZI#O?lY#D=ARSh zKBLOtOnG^zH>13?{{cGp4wx|gS=hKdMr4DsY4C$0u9O++Uw@Klh*{VhD2ybJ+?I_x zAZ~ILKm%a1=9@f)%mfJl;230PQ9%B z3d|P$mO<{uC1x3(q>xc)Mpoi_x7yU*+@a9RvVMVzE=GhpSq7z00q@sY6;kA2#q>*IQeck}mPOZ6D)^(QW$n9w>e{polVh zY3#%f2FhWI#P$gT?Z$%uI+06V+=xpYw zF}>^jJEO8{p`f;E;F;Syv$`s#n_!v$#T`%?_%hoiHX!zJF=8PlN_%rS_1V;yN&>8S z5mvby7!eA(xk{r%ty)D$yIcR@!Oi1)f9AwPFD_}I#na7EV=EJbqBVi*|gBUtpu7^97> z8MRFJm`@Nnd$LKUB!#zxJTjx_Urx)fud-IK(260*LUMC#)YS-qRj$ zsh&0o#fqKmE4!`yTZ}EQ!+Q={clssX!QH0co{lhl+`6bE|D(Hgzqg2Nky>oNsqXza z9DO@WUTzS*^AmAjC7ifGb7*gk9{{qzF=mq})yCgmMDD0T^xh(Z@M14Y>~!yUNdJZP zCjo`Mmzj#}?7IwL>yj--Opgf$a=Yr@(h-CZYAo!8TQd$&C2z4voI z*>u|6+@7!r%D-U~^q6hjh`L3Dc1M?OHhvS7O?&mq_!S5`+0&^$-u5SS?*k*o$(s5O zWviPV$!s<{KVIF0zb~bxhP8gPfACO$9-aO^`pYt+f)e6?5{k*Rqk*~&18p(+{DEAg3)Hlr>rFgSff=)&`$dr|3s=j7rVBxG@-W$F+rP%V1I3cxb+jAuo&%(19-{iz%&^tFn?>(;Xv$C?>Fwus* zxae4VkFCG@Z(n|qvTq;RvV25-=?uiZ0QSx(r4I6X)FAxeEaWfgcjx}>j0Q3Iu&K<; zLG9&g<#krpH|qg3G&6{7)Yp_59 zznf+*78(i0%Ur3wH90|dN3XV_shG26wG|ollz!H8*%?{M=*DVCZ=&OeQd^Re8~Dp+ z8rTkE53w1*zq66^ya?l2^%qK*dly^MvhMcc=0}jNmphV%K*WY=nux|S>Vh)m++SVE zhrTyP=Gt{}foleGFoyGQmQMX$)w(9Wr6^4fsOlqSZDzQ2d*pUgltlG301p8Cc49}0 z`TX}p9o4s7E*g_|xwzDnNPt4O%|`XGR|9;BpMhU-hgp;X$Z1;w)BCbq_7}Z=^@cMS z;Pueptcw#Ng)mr5lu!$+BgRvRKk~UY8vL8m~jeY$;SfJ$AQqQ3p1@6CHnFa|NwaN`63?0exG}XC(dGKuh`^ z$tSmeJxcIxH*?FKqOq+!X}H?RHT`Wd&W3fy{n3z(J&!-{8r~`9P1_01%Wj^q?ZjwR zP~~3wfHPHxjVHwtBobZAL0b^prwekt^&Az6oB6ky&cx++>TkoMvX*=B2@8sQ|FW?7d$FqhtNfmc z7eFh^GEJ5V7Zi@0`k{93CegdOqki{HM7OXAcP_KcfPbhshNA^r=xT{-6>qCQxo40} z70w`lv&Dh`E^Xg*JDgFcHsyQqMXqHAX(W$5V-t-IqVbnHCd`GqGYWTi$?Joj=1GR0 zit(o^dcWnLKH==9y0Z|CY5mI7`!erBmQ1HZME44-7b3~Ol|;gOmIB8wijIW{O21&F zi72h|na&VID!_Pr^J`*4_@@|>E_gYS3ykNU=kttc+*nv`W(6{C$($<{PiyCEs~(7= z3?TgS)By zhH7WL<>NHc%$U)Bzb^V(=V^kAIX_Nh|xCQHGcK7om&9riv30it4KzQ+~5Ul z^t224?>RVxWb=RnDO#+>Hf!@C4XO{LCA<)od;I}o2!haF0<^~GRkUvGisV}j-?jem zNwc87Bng1y*un3OpZvYqQK7T`$}E7tzR};+`>$_co2=0M_3o_t-B?u>ND&|5?WaQf z<=o?Q2D~>-IHc!gpoG1Y_I^5zRsowuJW^{`uy5!y*p&VSO@&vnK@qLy@rKf#!RV?u z@VuXS)$oiCRJgHfxF$$-+TN#g1H^Zfuc9gSDWwhq9-;fJxZRfeM)xShOgBjbZJ8S< z7g2vAyaAXP2~RTUrXmr07s7i92-oAVwQM_$C;^|>=@tX8utzN5xCGBsI(idLVb1Iy z(++{qaXP?U7oV3WVC_l&l(AI@VsFW>G1~kF6zLoGswyp0i_QS@o|Zc8xqbEgbJ2IN&}XXZA!4nG@62@vR{lbOJUlXcL-tQ@X^8?0A`r z#+9Ae1^|k)t}uh9gnX&}_``Pii$%Vt6e%jt{T40j*Vy(~2Lhbmr6~SxtGlw3K`QaIWi(;7_IPNqRpFX`Ne zxt*gz2A1&eaacs;DRCpc1IJ6gX~WPXbjw`}O=3?x6;OBt)rXW_hw#jpH1t^+oCw`o z9TcJvXVzcsMbAVH;1^9l?{tN;jQ|^$Xk_fNW*O>c2#QKpn1)V>G4b6 zy~Q2*@%G;yau7s?PYT3H>$bZ_SU7}eEp$8~ID#p6_Q1;XQG_4bG#CWVMsc=ee#mg1 zP$UJO;tlm(b-o!!i&MbZt8bZ#gu-SyqIjnboD+gFbKMzVp|-|NQlUB2&R@2F$n?Wf zpnjLf# zQhRST#s>LA&b>dp!G530-Tqb9;5nm=;-^sb)<@I1pcDZ&c z<*#+K3A;^DD)g0usD)3XV^E;YtF8W5p{tp{S!*M{T__qb2RuC$s_+gLeD57B)K7tU zZ;%49qW#Jth+*IGx|Q80n|vd0)9G6*QSym-H=Sze+?!xV(Q7AsJ!^bDwmM8qo%Pob zS+c;aeO#$@iVqarl76D}VGz;iW?hJTuKN{08V*!j?L|?UDCry~>jx^phkwrN?)_td zayc+?VxT?mB}*0~ByEhB1yqeOYFaS*a$vvPXd7b<88K7mKTT_R<+da^O}Ljydb<6# z1QYa8@KMsUDEG(ak3$XW^JVFMF0^}O?|l_~V7xq-=^P{_>pG+4!|n%L>=FSL)o-UL z9z0G6`NAJA8mG~NDB4~&s7F^{%r(T@EsTm#^%^b!)SJj5^THyed5eb~Hi{p-ag+H# zIFyHRLC=+ zYE|wD{I5V;U@J}=Ia(t(wM@`cFrNp4%PP95g1Vs38d-|88lPEVVR*wE2W==!LXM4D zj^;=Qe8D0pQu$lCZ0iH{AVVwMfo~zb(SYv-+y0^8o=B&DAW?x8-@dE1=GysT;>RHK zUS8oJ`SH;QG(e+tpDWEwJ!WW-Hu7zTruDmh$G;ve_pxLyT9hXnworBLZX(r zrIHKt;DM>BOdWYmKf03jMMA7v?4e^$dy&da;Ka#np(8&#YnS+%o|NB@ben|&?y@d5 zdF`;s`&vFiTNIg5AvZ4w4Nbpy69vtZNu6&wbPBG|10v%Y;S^L6X09|(pu*ae`K~0? zPjjSQ;I`|SmL{6hjk=q2!b7f-j4v6WHEA2;V3XzST&VuoT~=v<23)rGzm!)``1 zz5;Dh=tA=EXFy@HB{IO4ugU;mi~hHDAybdp^3p6pnV<=Z45&Bftl>O`RwatXM-*H@ zxzYQHCxN&#K!Y4cLP^e@u)Ir#7-3DY2*?zy?LY0(l$nb@32^3F=n|Rl8Sp&$L5DkY zAkJ}~r8<3j5w8dNJhLc%%e=X7eKuRTrtT}Er~UH% z*IqtfQ~g&z6luRM|8~~Q<(4OWF_7lj>nF(P+&ed2G5#NolosecmBa7{+Z^%(|RNQzJSWWXq~K^2awcD*%D2x0iIqxGQo`z4L1meFW57f&Y7tj{PrOW=OJGFA2qkMTW3&{MM zE?#g&?(;m(J^r4DM`=%gdvN>BcLUh4pr~5^BKouTKEd6^C^MaOcdUH0`M=%v|Ng0r zp^m=td#rfLiO!A7e}6hfT3T9&iNTc2(YK$@?^8Fir@{xWtMx@zRY_%J+az~xAEN&3 zyZw;slzLS3^a;&QQ`1#W#~2*L>{J1E;q)7-F!<#j5AQ9XXjg&5vYDcP04@Sbs`1ah z@ABFB`e3s_ca(DY#WVY%Sa?zhuk^{)SdSi$24w;WH~_zQonmtkoLxU7PfLG_kVBS_ z3h^r8>Y30?NG5eAO(vKX(AG%9Fjf>?jF)Kbn~cG)Kqk~cFjhf|vY2LqfaCF%*3HqQ zy8dA;&MmM_9$i6V<=Fal&RdC)te1V8 zqM`91(G}jP4{1Pdwz0d7*dn^FD`l~2LFKQ;7jd8E_4|c$wt6zQDyOJ0?5@g}V)F&} zQd*B*{0W&t%>dS=?hCes$c_){w=qEVh!UG9mu@bGL~uSG=#b@$-s5uHKgC^!(9jLz zHKDyaT3W+b{y13yUYK2q;%Ap?Dd_1&;(bXT%~`?De~!*RCLo{Y^Amboe2>Y$s($X8 zZ0oNVw!EYRKt+j!jT5g+_;uYXjw4or1Wc0a5}rFeX8?A53MF{Z5LV$H4G`ZC2;Led ziN9KDZaBRo5vevh(!-0;zvMf@Ra^<~u;;*k@vXF9*Bv4YRs_uB63X;edCm z6JVLL9oHPgQ=cF4{vI!Ln2a`4U$L2gVp{~zYJ9si-aggn4sh;PbOG?6qqv(t)P5=V zaPA)fPkuCTeRL^$GLfdWAs<>`3i@V90TQC4GY)6(>xCrRjJd0z!ol7mEZ3k{Wi`Pi z?hXwjetrW^IC{=*Uw&;3C)fSMN{=#mHY6lT>)@q&Jn^N|nCu}y`L-G|#~2(~M3v_F?tvxwR^t|?y#+ylMUV$$W& zrQ*15@leY$nuYb2mkYT3SV}_SnJ7j}G$Rh!nIJt#9#c(v*NZFtDGe(BAT=~SAQK8B z<_dkwjJwg28l1P%ZK4Bbh5ebVfGwH<(*N@=+C3*5fTYri4Ept*xGFwTZHU#O>6CbW zLm$ckmPR?o1h*SphhU}y0l;bN+_(-H0&h)oLf$j^XFRXBBE-Bs=MFtL8o zH!)%^N9C1=r{t)bBCH;<~+dU>@B6tt}=0|npog$&nwK8i~ zBjM}7-sN0iC3Nrdagy0l<}t!WfLvng4BqxCo&IBiAQ^ zzA1`Zt5>FtVLI`3U&8o}*%xbh&uL;(>a}PbzH`!Cn^HQz6;d$*YCC8>^1|$MkOsQqui$IwuN)Ad{|4INYw`C0~ z16}6KE4`Iy34{ZdehCywfzZ|nffK&c>!&#+D)$P`{-FYZ6fDWna}HeM~gHqxar$fu~%&ukT0|QCUB|nRQt|Pz@aAu2bj3^Yd7R)llgY9;0P?Q;^3FJNe=4V?y|cKu&jK>=h(4Im$0H!H_`%fx?D*W5WA6C#ma@{Fz$Q z9;r|n5n88&-A>sDD*n7J_c;LTa8f4fTSZC(lV0CVcWw)gF3D36c?)O9=?ZYKR4QvFswF7PPoE)>XZ_ z{_5_g-@mE$IGs=VXst)+e_}414pHumt&5UR0V(6Vry38mg%uAsvQMG)vd<5VUZ1o9 zXW7xzvIaB!?fYHL$X5;+@qM!YdPpG4F*v;o3B~p!-U-8(yFHkDu}iFiE_n2yU?F*i zemA=HVlUz@2NFYOsc%gFx|-eU9Y9$NDT@Gm%e{!xB4bQvmtF5_&ivKxW1i!Sr2J{l z2$wuLxCysio1oN8Ak0d?M}c8f@OhEqhEZ>9!TQ_WdMb@*A>Tksg|S?z#JATFSqoa} z1RK)VhW=KboG|VO%_Tfi%zE~4>HfP9Sx2oo+_~?ww!paiUhl@s{p?}+=DR>$=6l*l zBV~P}#ErtdjBrPtcaMkoYDD&`2=_Q-GOOqAM(>#%Vp8-XFx&CUav)VuqWL@>d&6RH zWIMYE@+H6eZy{u6nQb37Q_6j#EnCj}7afm67$t*f{^x?dz{)sHJvzDRpA3GrNd^|F9@iAE7pl%7Z3{XHS; zN4(2J&9V5x(KRi!dtfnj)9=w9A<0?k4GrCfH=Y#ZueD|tixBuT^2f{rC7Wdc*d1^8{B{O~<)Fz)60 zY`MG3dQ20!U2y~YoR^|gFlIp`O+GPntmV4YvUD9(Ahap{8d$ZEgNOGLD+})vCRu%$ z#J7!7p0d>Y_OYT3Dj=i(yq)DVM#Y9jPyuDOyslanvDy9DMn`(L*Fj*0rMn=VYxHj8 z3EkreXAOc|Ci7D5AByhW{b(T*7J>9n}wy0g~uvyu<}Nw6}N*)L!x=rFEPw` zHm{4)uZz7W&$p!%&fOL@xw zYE9`=20?o$VhT|`BGIj1?#>$JSob@WehU_TjS9XYO8Fn7@JVS(rbY5~VAWm}^OQy3 zx0lU8B3ShydIGee$%d$Q8hC(YOi>2(3VP%@&q zv^BoEAii(X&@#vz&v-li9RCHewVIugnj*zdL1E>-)H5K>*cREI;LNo0x2WpRrt54& z|9<3mi5V(#-|P~)gCKFtodj>Hm>jGonqt}GiEYwx(ZcndR<}5t+f+Cg4;SBrC_i`h zhxge+d!hu!K$kXJ**AD+O)R0(@y_2rU_R&9KsmgRC1&gXu@ThxUd4!*Go;e2q-4@0 zUw?f8GID8uI_Y7uw!_J0f6@C(?1`6AJjdwOy+%`~3wl5!MQ(VMFD?baxF;UYQ? z)Qf8o*Xd?cEVX)UIkZHvy&k{ioB@gn*Q#1Uqnkgj$ezj>zPOzJ*a9wWPqFaJg`?Tw$g3I_v|1rVF#%O`_> zD130Mxc3UEIn_-wQILT-8c*NWW31DM;|xeZee}u)sOw-B#jEHCcdzTyd^HsP%EQX>;IT#Oqj)Wdo*_gp z6*>)t(PA@EcSWOt??;)?H97TSmJ_6QUQ3xp7F~mcn=CiwlVO8vmxRyjzEdYdNQvPn zl*gl*Gp~PnjMyWz?T)@1e?DlM4ERotNFvvdg~b_3V5&fP6dGaIhdzXB{5SX{@2L6+ z{s2>SGWY%L3d$ThzTA$e-NWv5va39Yw~Di&R0Rve%jF>_>9{NQbK8m9g2hd_cJtQr z_pDNNiy7!g9-fhF9ZyneHpW09^`cY327VJ?tM;!yfJF(s;{U{c0%i)$r0+%nQ*53L`gueTrZn#@UtR!0jQR`j{*y2-xVZ zJO)t#-q)bli2WNXC4E#Iua^>xY;G2w0Kw0` zQt7|E$EeBV3f9pV0bAfTEk)0l1G6v&Kh0SPf9T+1=Owe{*Zvz)WrRIi1cr5?xoF{l zJYzeKsLg?NL3kwIArsnl%0teBH}GQ@g21RKI$=^Z&hs<(+FtekHim^P9)gR*U5C&F zg{0S)Z`b@{wYRIAe|X>RcHd}fu^=y(Nr@^|I#VT6cl#=c`r$pSQG~FyUy9GUu)Gr8?-xmqcSFKMa z)xX^Ersg~vp6dKKz*WO23#EPNi&D5icL8zVjgBmS2~T^>LE;CLTcjwxWQ5~?;$)Xy zB}P(M!5=@<10@h?PY2GQOdde{KsCX5=Abi8N9&8+GBcnp_iOnLB3K6#;<4E4Go!g+ zhw0+hWcUCU5^9uPxjF6g^G@;AO4Cbn6v+?qdW$=mx2^O%93+ER})FNj~$Z+&Q|>uEf`9b(J2#Ja2@7v zEZP6M*f0fJ1538x`C@oUw~RVNqHVJCzXiWzu+ zJ<_BK-Z)OLm)j>(v!POe1QS;j5H0NZ28SZv7Q~=sWDbZ<&JWlFqHNd~9%jA0_vIX1 z=UN|6AjD!4J+#HsCv6jpW2dS`{63B)S%kmBl`Fb#9g9o>fE?S6bj+YHimr=WE7~qm z3ftmFMQRI_q+A4V6gW-oKfI5F3VK^k&&$a zqX?@GHwm?E_VBhnNhq$_3IaP!RY%EJ+ub z_b}}SyMwc8;lR`3LFM$69dkUvygu^vQF$-$Ceg$kC=})JWPhD-@bv<1@f+Qr)}tW$ zpM}K55rmZFWFpnbB^> zn}6OVkk&}csP)fX4y{L^1uj!1n$C{F*fPJTvCflc!ycAqB}b*!G98OW@uUr6{CLqJ z+*ODWs?z|Y>MOFZz5Cwj?$uv1t!)pTo<29P?%B+Gc4}<#>wDGEtd4jV%$UiGiu3jE z5n84S`$MAQ*!YL)@|(9Ie;$OKD&rP@+ZaNp9vV_jr82M(9^Nqob&dzaXrH8fuWCux zXM3T`rUkReLLxj*Bt@fF7vD^oWI)$CJ#Epq+45FjI}j(vMz^lc-KZ9afm55m*9bLV zDLWrD0nJdQZV6wi?IN2|v112jJa%r*cMfMC_vJkH!!9O3+QlQ3dc zWQ=rZsR(iPH3a?s-ybYOlb;sTBVV)o;2pW!`k0Vp2+2fj92Uy5p~ezb$V>M|&%7EM ziU6-B`M|DmxAn-1xd1E9xgx>w)4Z)+kGQcT@NR8K;5YIuNK|}(panDX#5m(4Wu@uH zznqFcy!MfTGtbxSQ|-=W%`B9+!^whq7e4W%Jlx+OsATU$09+woU&#@6Q}S!!TdrIJ z|I58FyQk+5ZJg;%Rc!<_BmX^*B#=ZN{ro`vOoVQjUgyYoIOd2Bm-uf-mFIQyzQ5aP z&oF8<#u%ZXsQ{xDR@gs|F*a8SQBYFIos2Oa{6`oTOghUxJvhs5xqg=ISb8X>l(1@7 zNB_OvN$|C6d%tY&vqp3HDkPmSto-yWTb|=ATT^+>?#^PSt8yRQe08HXLeju~w^HC! znE5J_F)W)ny(Yx_>GJ;0kjGCY1JmCh1(Y8%I^xW@5f=DffP|29!OX9}h*++b?R|5X zG=n>jgW=VGZu`v5EvOe6=T9de{V-D5yl1*Yv^!CnJ(~#fV zEk9k7lc$ne!_=mJYtz&*eSLKK)8bh_tV+Ps0J{6}p<^JGV{p zv6Q49Qw+kd*4Wai{w~Kct9t0`jyLuL!UdFTYvYjG@DTjE9JeR#lwEB&q%_dwx&Y;{GoR1&Y^a0 z>S4e0qt*DikX){(FJ-TNPL{g%IaTu7Jd5Q$Z`OPF+SD38`!^yUEkpKy_5a@c5HIg! zLSL?&&2{Iw^fiH|+Ry%9reF2DD_+qXXyp*%=~O)F-*7F+*H3k+E^Tq`0KY)>2G^>J z#IlOm_KlaAIKnqnakCdi>BnKKu1ilN4;Bi!&{^F_&4unzw}bhm?>%?tn($7(&Ie&L zvUw%zGqbJ-%6}#hyB~f1FiT+(hcC^qeFlE6YlY*V(hv5%>m#2WbwZ(cixsa@F~KbTC7HTd=Y*ZAF^cbNo?%vY{GC1)Pb9*S&QdS`kV{Iaw% zWR}!;wP*KSbirpo^Lgw1@N+#|kMpt5!_O064?oX;KYaWnAbWGWRC2;D(dMHpeVwT* zhy5E3bnA_%k6s?<3a!J(M#;m+2c44g-=1oI_IedWYCJe1J~l|5d(Rgu2oGGFZEQgN z)%V*u4|H=z=p@S6x$hw=*KwK#Jw$i1vTVGua%@9~v&7cm5qegZYF zeb&i2^q&Y-auc=B;U)nWVqcj)2^Yhwqm+BCp{QM&p$Gw0iipeD*bLCqUoxsSbPdhR z>toKhEwNNNl+3Z|=4?C9lWmpHSErT53e*AB7e`VnRVVGRW;Rg*H^W96zbG%pach&K zU|8WNmRHk?1@%;?=U1M6Zv44x=={!W^<}9QFp~_9 zq2!-*KTk_oE&si%Odi%BQL*97hJTWjq+|?=ufRXBvHY2BW4TOST?!egE+rUOm8#KI zmpUC*mj-*-=_vy;<=-D|^c=)&^lHx*-5rl2@DSRX6nf?uhBh)_z@p6v1i6)|CAI{ zL*KN=ccH4GOcS#m%RnA6Zz40Et@`b4@s)uj2TlZ}`EIaFq3DkFgr=y8R zc#-|0*hPeFID(EiGJYYfwU5Z7CL4V)4xrjCpsW4xb@fSL%J%PX`naQ$6CtmsQ(^Dg z!$vNSf8=Y3*DW23s3rt+)Uxef`UCz<_xV@#P54FKB!0DQx83@0ZeZg#+3t>SvS&^& zT?w0fy+aRf!Y?QK5C}|@_^_O5d^^_^es{F~pp2I?f0VD+?CMRp&#T7-z^snHme#S^ zDtG*N)@eqhU9&c&UPykb$K#*({I1g1S5xO#kIPLo@j4V-i{Ci^eP!g;huGG`4C)P8Ba7(%(ZKMBIRqUF~0(Bg^}QrvKa2 ztNu$YU=A)W(sdOToM6}0&?}4F_Q^V0j1}kA{tp_$tFQSoN?ub3yhU6I7B(ne+=5?7 zvW*HQr&FL&t)%UaFI}Hc>%wFZLi!@}(A+~a=i;cp=rv9=4W;=twwI3<1N+1I*~fe4 z=VQ^-|EO+27t=sBR$uoS$IBP1AifVgUkw%CD`%W)@j+SHl3wXra8zcv-2S2m)wf~z zC9n8U^4+yp`RaC1n=9z1A1bN`+=Cx8Z|&&7mhL;@jS3OOaPtXsn&pm*SA82vDZmj3ucN2G9bszoeqs2baSSbK6YfFlscikbT zix|EEsAF3(MMwmFEmy6}!{h5WVAQZ^6T-~hW38n`n)qLIFfa`Ci|<8f#i5q2Zk+BH zT_|Uq4c*pV(G?ivlHh=t`DWME=AT|>__N9QQ-|`8qd|}OZU%QhCWJm+P^!Iv{cR!E ztm}|hm4F9~>&0sCqE6yigcDcZUJ&@`rnnqngD?|N#(HmS17Yiu&hg0 z-yx!7A$Ty&qH9@aK18Ig(cUnJUILKt1SmoOv)JN>GH+CYA<{)$7kqr83(=K0j*6E+ z(j@8{z%Ko|T)})997Oxrw3OvKmrqL_qM(tQqW61UKtLoDdia=d z#|{b@lYI1G7S>O#U}GECHv`I;Nw`O1cC1^ZC6P1{~T2F4bq*<-^#gD z_?)t$dLMq5*&#LQVy(XWg{cFRYKw21tTPFAte7oxtu1{)^bmB0#kJHyh7j2@Ge%~# zvCj1dG4*bHqr#q!bCnTdy#G?)<-CR9&Ip`_G;^Ux=_P(1I#YM4hTWFaae>x~D;njnh{4kPP||MaNhhRVQ}-sJ|msA||q2qD7Bi40Tl<4|jfe z_ED~2m8=HdNJelBTe+AQe`EosblqoTDFwk8oUb91q6xh^Q&hL9E$E{wC^A@h!nHTo z92YVBdA8YI->Wf0T{lTL*~=YTe<9KTzVrWnQUBozHCz%0NQXR&R%u8c;+AJi@o3Gp zBhu0!zc%TbPz^igBczg5qLhD(qHQG(!w6AZC2)WRG$N@6;{sNgPC$Qxn}U2m05{SV zv>>S~YH1r>P|G@()VgdxN3}x9!+Py$-){gbbw|KR)iUdC$Oq-(hC7?KixtnrAeZ)~ z$H?(m*GnLsMORbMYayC@NDgoYYUnx0`ErIN*v5FKBI}0>>5398>qSNHv~i2qo3$#b*Xr>ChJPW)@{0>uWuiQ{Jfuf6vGiz?aH zhDnO3D2j?XD=I1&QIViBq9Vb7h$xsbAxW~(2qG#HOdt}P3<^jVkkAcC&XPfL5&>z+ zbXs54MrItxGk4Da-*fLd-#7g{i|XCI*}JM%t*TY)eOK?aSWEH1f|%=z>>sjC*7qN= zTT<73LA$4Dw{%^zdfkLjS zN$Ak)DqOPYr{Oq?}S&DKgv>j6iU;Utw^jKDHm|7RXKJC2_@dh6BA z;nbRTs$an&@u}r!l(}{1RI+VnS?x|*%AWUu>7NFACW)~)K(p|e-w zfe#d-9sBKVm-D%EB@N8OSzD$R8A`_vCMXEs@R}ldv+ftY{LiC% z+7^&W%j$d?D^@c37tCSu)=avq!Q@|QMV=ArX5w~fLwn!rhYz2ImI=2G#fw;7( zQ0(Vt@M4;bhS%Y!bd)}oZ7Gm#o zr9SxHs@4n|SeH~W>!nfiHGSnTk8fu=fAm}M_LnoBarp^X`(g@S>&0h3-D^IRo{fGa z_G-`)!;zBn)2}g?(O{&dZx;_~t#!k-Z0Ff^7ikSa945}B^?fuR%RYKgoROZ?)!Mf1 zP3|3^9dDX`>GLT#lQv~L^THDbJwa0ZP2C`WdtAetQ*9rnCy(qkXEd(A!3qdTQ+ZZ; zjE|P-V78sx*)gj}4L81W*6E%d6)fLaz5BR0ieBY~E z;rj%pNOJ5QRf^+TV*+_2r&i8TT`Aam!EnQ!*_B-@3=}mEJzBftWsCdqBvPX0sq$U! z&gurPJGLvmj8Z$8%qR_1YZh=?gntaja{34H`^8tHMXz%B$*GH>$i5E0wX}Iv#3gxN z{!>HYD5dR}F29RKfM|l2j5_pqZ^KU?TVl=#xjt1-^pLy0GctC{@l%FJzBH7zW!CfS zbnw1eB6L0W=JnjyDvGa0_7`bHXAZ7Wj45y4$f0uci)97J@nh&A3E}l=U1{hM&CVR6 zt?ZTTBZsVd(nFbYbyj6__i0Do5}dXn!#{9YAA59^_r;C_M>x05ZnE_^xuCd)yL#70 zFZ+w$F)@8QMz4LfD0%qMFY?F#v1@=NNSE#|pSssRh73^onr2P}B3qN-!7`TEuL z#1jn*Pn8BweSP)BM2+j{@s@A2CrQ|nCGuBJ;t*D*-~=N4K_E zDV0Z@%e&yr5$OGCST%oiNpb_bw~gGvDb2ZUq-Ph&!K-2R9g-uJblF@e*vNuYac9a@ z-nb<1bsBJfU-P@0al5w{hDXQMsKix&2w7ZtGVbhFZ(oJCJj#<9uVUmHg$>Eet*4$Y zJ7_AMd@o6o^WL2M$g+53Bxoh}+gG@iy;1L|I3z3MvsHzE&4#5tRxS^Vw=UZ@6Y(TD z0~aiuvGh}gZvVnRV&il(^{TMvUAw#5H&&HwH5jU> zAd@0bC_v8Sz^2)CTeNDTjxJ_Rn>(n>f7t(6V}nprLGr8_#p`+>uTXs@z!Wd(Um{DB zIF}7Q_h;m3IHTXE)b*}&qNGe4saw-6eXcfOu-kE?Zh7yjD+lNcK0YK(S4>RdZ*vh% z_u3Y|uc9KwSukqR(UxP&)^FusC^m2=Hg{g0#^i~Uj`m$$HTMpw$cy`MYkG<5Dh)F= z`^qzCesLCWED%35+3o6dDYMdhI}N%;zIGjR=5bUz8DDmOTETs*L-%AC`!8s1KM|3+ zjP8YMsx2$Ka@K5tgkqIb$Ia9qNatP4Pu)-v|GFa7KqvNOSN$U=1!S<>-kj-GqZrv} z)x8}2!XHxcZu6LqZmn1vtvr7C_Lj;%(>2~4q_t8(@&4$qz42sh$YN@_?FKgrriAq`>7D2i$ zq)lT`coeSc*t{N*S9Y0xPhD+aP4q*BCA4oSmbg92F<_#gGQ1~^5TQ{Es{OYa3uOa_2r+h z6G$Q_vG4I~gu0TAhLv8%%rK^_3((Xf5_@az&k&iS>k}k7lS)msQB5keW9p}X)rFoE z#^8ilvJmrh>~3jm%BI<=ntiLNB{Mj*gsl3yCkC%Q#U*EvVwc=iZ}o8-$;SFjy3fLc z-oC+e^`r7$h-)N#aN~TWZ#MIb*zTLZa4a9u-fKzE(a&zqsD-{2EDhPV(cMz z_KWAXJhPl4X&rXfqj?fuvPx{Bm3FYt!Y>lCTC_UMsLOPQ;> zCOb##{F1edxrG<5-q>=lsP>utoSvk+=Wb2f&tbD#>8-__Jzv*6v=cqIQF7KX>)9uz z+^xJuwdp(97pKp-a=Ac%0Jd|3KPu_N2gyBhJOO+!Y$8o>?YFqt^jjxskt1yZg<|}9&XFoM)mjwqD(YPg} zDqWk5z|%_Om6Iw%tx#tYb1;=7OpPP={FP+4iK-8`?@RC%@)srXKXFasyZUzDG7%FY zf8k3q2XxnQ^KYjF7he-AbCl(pyH#f~w{+KPe>o`8R zZtX93NafSx-4YfW_a_HSJWgW|cGaoP)2ZLh>#|tcft<$V6RbEFT~ssYbiLjp1J)rP z(q=9af(>IHuW%*hbCTCGH`974amh@JXOOIguPe8#ZR5M}Md>i*@V1IL>`2EP6UVY+=t->%obqrfjIC2JhAO&wpByb%579 z$&;#JDrMVuJY8rj=LhcKB)LIzE=j{)1&?eOld^NJn%nB@R39uOO?xT*&@68g*C)x_ z@fizRvea)q>7s8=`N9w^KE@b5N^Tr=u+~(`yhB+fbnFg~@)zzga=yRJ^|jgn()Ky~mm0o^7H2V|W1sBa#b-P)BKVqF z8W|(5T@!esyHrPpTB-OlrfFi$s^bG8Vr9~{RB5rBAL$owrwFFA)edkqJX(15YvHGo zJWXH4l-gCX40geCu%d(uiklZDLB;c zMZQC+nb7FJfqHI=vP+>YJ-_obkfAM%6XOi zME+CkqYO@7v5w1kY1u{65>i{t-?FYxq8rn`u2^Zc_|sR)9jsaQhpSza z7Gxf_p{z2WyEW)GuR|m`)xnBHMTpj(=8uYv+lJ;>H8xsQ{Ju=8t^SLP=cb zEzM@0mNT+OiL8}1{ASxfyd`DrspXZjea_*=^Cf423|nsTN5T01qnfp;nnJX7WoAa! z^MmA?e0$QBqq=8InhRQ0JL8{zxJljOs?9JydUDu;zQX?8qSk})yu)E@(L-J=xQwIA zf<#96c2Wd}rg&*`z=jMz<>;Pe@z?4&r-hl!OV$Ls4kc zOp#Rdwve|lh|I~FO7m;X(zn#BQrZcy>n3{2vl~h67KycK9<%2wx_S}1`mODwSByqt zFTE~0Yeyb!l=k7aoHLZyNb+uQ?-Ok(6xP)Wkh1iTTVBYOi`X-qBn$IPVCfEdo+4oN_6q5}wpLx6g_Dii$#5%^u`5OTAZ0 z6G;-uoUJ;HMlY(TEB%UFRvjnh^k;M32D?5TwulFHQ4dY9!ekzgw8OwlpP~M9=u5`z zdX7Hn(MB&TwE(GO63j2u{^(s}|73;!sSDj@?O>f{m8ccGpWm}fI&Tyz^^!w}z^s>l zRFmyVrY?HLipjRwKufZqxubz^NB-E_FF_K_rPPNTaA|XaX;Mtfe2p5P#CHtER8d#D zr6=4T)wGCEk_jr)V!nHmIGOF}Em@w$KQ!r>h5oDFR7=fV3QKawo$b%*b4Pkg`t5YZ zhh7|KI2eu`w9)kXoX88EebURw9G)`nhb&Gt7H#KdW*)LwIFfM<)%$6~(>}hB>4IX% zKR-=+BhSxP9$>axHNja$jR*U6b(i zq3qscqdYZVc@)(swDyCw9d8%KebN6CtRhtIwx}rGfkxSTy{UskZa+uN+75Bi?n*1o zjf1f*q%dY!o1mBlmz}nT*_RguQv}y(v!57W$(!OJ7bi7crCw)`_K>*u?wxj`gKjHE z+$Ms8r4A*DS~>vs%*mr@F5sKBPHN1LR^jMqxKQ@)Vdsq-oT~@2wc!R2?8**b> zOg(MWK0MLfx@s4Zt`yuKJ;AH0R#cRhBn)kR(#y$K?L5{t!_qGoyE4yRK73_wN<*$o zvv!@&#nS7_=lbV(Ozxa6?zD67^$T8)>)Ey36f<0dW0n%R!Zb9RzSP++5c<`J)52mCIj^-C8jaM=8yOwaNGKcbVh!g( zpN%EgxpN6ccD9$;Gv~RfJbs*_6iZnuG%cfckIz1(s_1rws_Ua0k58Ot*VR^0e5!|E zxoxWMhdGV93#e%5Egpz-V=@}Tg#{LRuze|{K5K99XZx;R{pGa{uVZ>il!fwQZEo`$ zW-{#$E0-D9H8feNYQ{f_n|sRfr1fk5M)8h!8xzWmDJc@I;flhV*EA z=9yuK4`kb=r5#$cZWq@C^Wl9O*XH}1o|IvJ7F}jGByxZ!Tqf0plxj*T^4{Ke;mRZs z))g{*NY(K!6aHAWqM>{^(NaE#@=>RgXZ?EXC3R659TxKP;gdu}8q72sR%U0fxs#N{ za&|w)sWvaedA|E3K1Gpb`qdo*yIN-7_Zpnp`o@A=QRLlThawT>u4Vj|NR{el!r9VY z+@@SR^1<2Gwkz*SSFs{Wfmy@Nb#&>@1dgM}>^bu8IzMyf)$@5Q&=fJtTIlw~JEa=; zBFOJ#+M_y}Mk*Y23%(xl9@5Zz>ZDkRHJfeh%9MxIiqy2dU*AVvQcRw+@#EsR7az22 zkeAn){m@!q_H%yp{AYnhp4>BYyaoxud%Il!p-YiHhBZnsfPJe8n?Vzv9fSPu-gp;RzhfXld#gDWN`25 z(P6fN7snIoiqatUlugJ@B(GMec_C%^xm~@#L+98VwU&v&{8l#m1a34e<{DDxrd|t^ zyzz3=oEvhiDMr(}xNfc>bM=-u+2lEqCMI$&TF^Sdi;@#(#oQOsBq47_#xY z9=V|E;H6s11?~misR~kkXNzpuH=mH8p_T7e@6E5-FE-67nm#Wow6ZZ(zJh;#%np63 z)hct|X{VzoB>3eyi~e}Sj;gpKk7gg~M@na^AboBK=b6c&45M8a%Hv9Od?goHFpj7Nc8a8pX-&nRyv&1v7XX3a<6>)8I72^6-`GH;$ZkISrq2<@ns7y zC0pI*`t=RPPH==I=(x#k?nR3#4)i+si=ynCy=Sf0p!Z@(&LZLDSc?9l*MYI(XMeBD z%Fe$jE4z4>+}(LU`~KhgvnTrc5!BF7SaE?2JlB$7+Wvbh|DEgmW8I2VQ(@ihWH^(> zfLXo+z;itrrpwzc|M9$k*W*?8rSybRHoW=*s0~aIB--$wqlZ}zjjkKh>F{n8er?0J z9{y9t(rkwYH{6DVKeQp~KV~eAwPEz9ZQz%GuzpwMtTeo&P>*&-v-ncRJ=*A7O zy?AlJMpHAJbmq+J@6Y?+dQXfc>L~1W$OPYe_aN`xJMbWpnjae&yzsWQWffDY5cd2z zyd+t&pPLxbpWZS6k2`lD(B2+Mr%ut$RaIB~Z`FPLzJibH74iF^M~}P{0|O!2(-X?G zvLMjm5qxRNrm$F@ZfrIK2@6TL8;f4~vNXY~@c!k?fYx;|Iez?iIvc<4|8$uV9bKIh z7YFTib&%rg+K)(jZtT%gROb#PBS=P(ptdk7+}NL!+*ltx+#g)fV7eF?f$5PW$N#76 z`{Vs$+}+ofWoAN>*Yja^j_t)bqn&ruN{#b zyrLvAsHL!L@S^;V!3zhs|3f*nd2xg2Y|fyyGdK?YGi{(yC_Lra+3+FIp_}1#!i^QB z=f+OE?^YdiKfgG}35w&MK@pZ{M<@)r3kAL=P~dVEav!Qemc;>hbXJwnf!TRwFg>RT zCYp!A=*%Iwb@~7poRR~*lfQtj>OQ!svIn$}NyCk!QhzF9LR|4{W^w#wKR+cfQ2c9m zH}pHmg^xJNx-opz-B=MiZY93PP!ePbJ$Zphf}khc4|>wwq3fM9bVk@fhyN{Tb-M@| zw~qta#s<=2LLmKZD5S=`0!m~Mq=frJQkXBidrgM;U=Mg3_!46LT_MWnIYg45z#C5| z2y=IUkQWc(mCJqbakL`ZwRtX2;O03KHvBkdq@|^KROQ5%Y8~Id{i4Di5p+BWpF;@? z)9vl*f{`b3R95`$0eaB+c&vw#=a-=&gakb)&&MS33EI%vLl>%hXP^+0q^6&P+MLDH7XcVA_5`#jUOb2ctgS~FNh0rhu8o&i1u@VNbjc* z;q@5acsN4n%SZ6q^}#=^|55l6X*>whPJ1tq2+-R zG}tOYthYC0#79C-atvf8MxyuOgf7yekuIWsu8Uaz7ZB}>bb;Ct?&(bE0*|d9`~SS+ z9^rr|cftR$4fs0UL3$zq`H=;9J-iJUlw@8#C7D_d&}cCDL_VFJ_jHh5?mft^4IZS| zhXJEG23YNJz-o;JR#POfYF`7Z%o|t*F2G8E05o4MD6l#Xk?!u0oAMU&sqv_ch3v$r z-*gch0@UbWpp5Gx^fz6+MY@Rb!(-|hM35i1Jqhwt6CjWB7IKo1F5Y2Xy!mDquL-+I{+(TTj*Y2ry7;mG zZ)zy(;JO#*yodVAlHW-tHIdMRrh;^1dUO=4DlZQP3OpDi%`vReP72VwGl1Ef53H|6 zz@il*$wuu+L;8qEZ3qF@2TvG?G=q3wUwCP00i`+VP?AMO?MQ~gw8U?^c#Cuq{Y@9B z9Y`0cXiQO&eJ8&`_8sc;JNy2z{^Nb$SX~CcN=-R5ev^Qw_Xs@%Jhp}Iwl*jWaRqv3 z3aWcH(0ft6`zwJpP%~EceL!u<0~Xdv3mR9I{@`zE1R+nJKv`Y}R1{>QG95l-r$TWi z(#88EC_uW%{Z1E|3E}Ym?YMnoy9gMYqe95YzCHgie#YzH^05m3Aa&@o@1!V|3L`^9 z&=iTrMPCW925W&e)C{cQ7F0H&W7H1(d2be>gQ)waP=VHs#NYs^LF2NzI2S4lv!Fab z1L-1-&_xl_MM2s-$Rq3m=^_c~;$6hpnEIv*O60dW3hCk>^?zIANBB|N(Pw_n*5Hfg zU2g|VLJz4CZ(y*m4+>%)=yM z1AH$5F7||7|F}+M#l_t&NlynnClygrAQ$O1C)g9xeP2LkOf+=2wnD^<7w{qTJ+#)> zK=a2+G&akTZGC``o6tpBE*?|JF7TL2M|SaTOkrL8YTvPF-9vVP*XXSa zcmp>t{B8a6cxdT9-i8P=S~HN0AM0OI*ZHyj_!vkeu28qfKnX+F4GV+!QBjcK=La!l zGF0T{z~}ZB_|)169Zhx6)=*1~!zN@?SQmBQ>!SEKT@Yg`6X^om1s+qBIAXoPb8QB; z3$*U(p4bc97Vrh`SUBa!^>^ZUoySX5&B;Hj`}k*`56sXwjeswoKm9>^Iy<2IQyYA4 zYbJEsj@t3PF2>qXjC4^5)g^gQS(FVG`N+NrU3{}|qzi1{#9WKlJv7(qosc8ot8k%eIm?|3^Q)NYjU10mJ!1j&i zsxkYOb|rrT%z*%TA7ke%hBGq!;?oXJ5Z`qn{P(1gwj$j#lXW zi7tpSh3ulP9P46yj>2}438mw9L9Bb&F5=;qx*Y6U${)C6*&oKwU+(wu6MY;=kc;|d zaG>vZGBnT+SO)rN(AV2T=mzVer?Y*m9atC5^?>KM*1F$x(SYq6>7o|RQGc9k$L1)* z(+6SKvgxS)0zZ!b@oN3$($~of@{w*whKGJC!-E4b(EkY+ggq{3m7mX;} z9NPu5Z?yi5=>pj|(#1z?7sYvFbM1F_VWc4sk}Cz`r2ZS~kJpAmG(PF0qd=$sQAS5c zh<1(X;wv$xu&wmsF@@}6Y)p;m0|Qk^1&tx$ zzueLP;6yx6;Wn^Xte*>$2@ECk@ze%i^acAK|4!(a-t-t*7Gt#ZO<88ouBkxCejlKZ^K92|DvN}F%xoo}Vpw~|W2Z#Xy_ zrN>IzlCg4R`dGI9qJF6MM1B9oCFW@@MIwXbSDqIB;3uzJ zN=j$tVVHpUNk6IHzw{%)2bKK#En^&`ov|YXN9tdC!=GFn z+oAYOjYy3R`x&o8rOyF%MWn({P}^`B+|s!Dk|L13=Nxn5Ld$2&JG@E zX@TX*liL5PiXo24V~^Xng+Dhp6Zl|7P7V|%hBdHQ{qAh`klSGIhameamspRkUk4Rb zw|`YVFs_edzyzj``3LN;Ncs^Mp~j8f9Od>g&>|IaUH)Y@+tbkj>`48W>=F;Rk@iHd zoK)Y+^!S$@Y2gkXsU8L$)O)HOo>xvVZYe8{O0SvoUTT%#dx;g(-|t+?|9<$N)OK!e@}(6h26A zPeAw^!VtR|0P2hH?~m{O z{#_IiFUL3x798)g(LMWVsJ|bEtAY^(g)q&Y9E4{g42_1c!QRX23;JGg-1S37I>PDDy}lw06=RXZ z7|W|eSQx@1zoY~0-9yMvO8OQ1!ts5KLE_l{cwZ10OWYfRSAcPB%!~N({&^W`M9dn; ze6bLCJBs^ZtUcvT2y`KQw3Fh4Fgc9JeFA1r5hS@hgo5PcU;FJN!r(Aog5#+eE5Xmf5X7E&X^5q^W>)HuG2uuzP7)KwG{cxDyGo-me)@z`%TCdT-)5T^1T^#y@7E#&?6 z{`el__YHV#V}*}@eBsz9j?0b<5o<ByFm{A6m*4sV;q%}6 zLLbcyXny+L{eQgQkHi!rL8OJ}yOB}cE>-|FD2N(mv*kDI<1A#^1F^#dbKlTNcm?L+unC|~$ z8~^Os5Ai?fDDFQd2opfq!05;b5LgDnV=#_^F{Q2!G*%G~gU2z^7YLgqFk;*nXk6gF z_!jGr__O={_#GY}Iqy?}&1MsV-FN(+!JrdZ1QEkW`oUNV(HGy1izYlS2n?tYGE?Hg z?3@zpTqYp@<30YXV_XN!gTeC?o+I7uOu)_7h={{Kx6&nI@XqGfiTJy{;UyyWZl|j` z7I(jXiio*eUOoukQ8t_kZ`m-#zeue-Ge!%n1pO)8H6QDw0Mdv~&PE3bn8~ zNI2BNjf9hlgo?xphZMdO8!88977`SD`ChnDYz7B!{`B?xI0Zqg|8fp>q^21vf;Nh){@W|*gIGQ5N)La{!&8{H~RT~^F^x%ns0X!w? zg4^xe;BBGNS(2R8J9wV z&oC1nS=zyD=VqAuv6e--msW4t^e5^-~55VsX`ToZiA z@HW^B`O2P<@Y)*^(Ow4ot(4be+&}EcrbNAhLN9Bmh_HkFcdk&G24tgT3 zp)=|cG$ptYd!@ASFv9OlMci8KgJK?DI`YjiKeC7t1~nAKFGT)j##_XhjERB5xJbxG zocs*LcgsS18tg;opt6X9O2li)O-O+JMC9iuzk{OWL}*M5f*Ps^K(-@%Nq+*}XrDIv z-kI1V(Q>_jUFw1St^mZn2_g74d5AlN{d3H5z}&8mv=A6B_5ns2+E-Nv!Pl}-7_EB) z-4#jD--LLdh;xYdKXkMY!TX=5uT#P2Ga&vB6-v?(UoVr2_6qL_UL5xGu+LeVi;nZ& z6MUJVm>6=3o*Xr5?s&r#yWyiHQZ4OgRSKR=a4>Bh9;74T*{$3 z!Z+(iK3X^O7cqAR^ER*_i}yCzw`I_~5x?du3=N{a7via49}mp~Ahugw?T7i`cZbI5 z=g*w_-6y|4xTN*|;+a3Wg66p^f8~Tfxdm~B)93^-QPJPu``ZyZ;j+f=t2#HYONst8 z2UGLxHGktfQI(A@+G5LodWo0*?uos0`j;eSvBguTOrFF$k%wmj4-Y5Tx3i7??ZZEiGiOepIdkSDJYD10iy(!Q_wENjII46=Oj2^!&h6W`Y*;U{b|Eh( zhrog*i)Q3JR8de0330SPc39f-sk60}g_)_5p}|Uio(00YcCA^I@hB|(b$miXsH(h- z4cX-hKEu?+Xca%tW?jq2hLShq!YP!tG)hv~iR->mQDl4xl7;DNexChzD=RB+?fdX1 zwF6OfC<(U4dATuBzW5B11^Qkux1puE+&8PHl{WIVr_I4UqqH#hZHzDZxwDPc8h)M| zUY(ttrUwrOe5~#6N_KV1s;($4&3pSc#@pq|<8}NK4(NNv-qw@g@bGXe$;{4f{@hem zSz20*E)hk3zJA(7jsv=SH*VlQ*gr5hh?rfUJL~HzOG^rJV`F?b%p_ti_*)JRxzW*4 z2HN8EeQv3*Dnk$IcpI}-@Vgc11{3jmn2g~;bV5T_Wm$24miVmi_=vh_TY$2T7^6c2 zeVr}!m1U*HJ7<6Q{f&U~GIZI3*w|=auV;_%T9Zsx&EOupH~uSoS()(}8n2a1IClf4s*g@&(YkhjRmPP5_Y$fMafG z9UkNSrxP51oM(Z33C!ikvDWeb$6RsD5y$PpoN&wq#~g6X{l;r4j)~y)7<0R^AAsYP zIBxqrcl-Ok_?`=lV=S0=jq8Xxj5y|p<9#@HBC$;>lx=$7*8Fa|G>mj-q{zisV{ie}m%ta9(LIv6pew(tx|#>R@;265u>#2a~Jd zbo(Z_8XG{I<#}+qYXmQB4B#b-F?l{PCt^;-J_GGFvK)1xB+vp_p;w_Xz?j%OOjjJ+ zKP6PCdkB8<2w?yy zm(9%q-k>~%Xb*RY@J2aeJ}waL?}l&;H;DH`cm~=RxV{Vq7ynp@|F$=vgrI!^-V>nQ zAe_rl6Zrtrg2_-4NrskW7s9quk>8&l`-Z?s-Xq_?CN7Y$JM7qQ zxcvnv4+-Zhl%=OYLwP)WO7n){>JS*J3Ik?+IDD;+hjJ7*C;V-~&(47Q!VDr`0NWGx zv1^f!jqMBj*Y${Z++31L*e&*{am@NlTPBekgL8A3{T0YJZiFsm-(!C9XT%9czmkpe zdXU=xmcRSpcVj?$?eBlKLS*Bb-~Betx(yqJSI-jsZN^x)US`KWNg+J9e0v=~t*5?h z2LIH_6DM+W@=c$nyj - - - - - net472 - ICSharpCode.ILSpy.AddIn - - IC#Code - ILSpy - 1.7.1.0 - 1.7.1.0 - 9.0 - - false - - False - true - TRACE;VSADDIN - - True - Key.snk - - MSB3277; - VSSDK1009 - - - - - full - true - - - - pdbonly - true - - - - - - - - - false - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ..\ILSpy\bin\$(Configuration)\net10.0\win-x64\publish\fwdependent\ - - - - - - \x64\ILSpy - - - - - - - true - \ - - - Always - true - - - - - - - - Designer - - - Designer - - - - Designer - - - - - Menus.ctmenu - Designer - ILSpyAddIn.vsct - - - - - - - - - - - - - Always - true - - - - - true - false - true - ILSpy.AddIn for Visual Studio 2017/2019 - - - - - - - - - - - True - - - - - - - - diff --git a/ILSpy.AddIn/ILSpyAddIn.en-US.vsct b/ILSpy.AddIn/ILSpyAddIn.en-US.vsct deleted file mode 100644 index 3972f5a9b..000000000 --- a/ILSpy.AddIn/ILSpyAddIn.en-US.vsct +++ /dev/null @@ -1,89 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ILSpy.AddIn/ILSpyAddIn.vsct b/ILSpy.AddIn/ILSpyAddIn.vsct deleted file mode 100644 index a7b479082..000000000 --- a/ILSpy.AddIn/ILSpyAddIn.vsct +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ILSpy.AddIn/Key.snk b/ILSpy.AddIn/Key.snk deleted file mode 100644 index 727377decbf377a3e2284e19560646f3a758654c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~N80ssI2Bme+XQ$aES1ONa50097HJW4T}) zsn$-qs`JbL!J&*od4b}k9aGh-0#j>sQ0FrDl@c5{psW3}g_bonCD1gw`R4Kcio~o3 zTBgBuO8tip8_Q+U1Yrov&zcF`=NvfcJ z-_Sqh+VXo&y-oJ2$HF?OEiCH5Cj!#ETAPzO6Hi~48_b?=E8=4;_S=f*0G0RSZ76NlF~F34^Vue0In3JN^BD5Xw-45a9ttTT zB%UT# - - - - - - - - - - - - diff --git a/ILSpy.AddIn/Properties/AssemblyInfo.cs b/ILSpy.AddIn/Properties/AssemblyInfo.cs deleted file mode 100644 index e244ff53e..000000000 --- a/ILSpy.AddIn/Properties/AssemblyInfo.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System; -using System.Reflection; -using System.Resources; -using System.Runtime.CompilerServices; -using System.Runtime.InteropServices; - -// General Information about an assembly is controlled through the following -// set of attributes. Change these attribute values to modify the information -// associated with an assembly. -[assembly: AssemblyCopyright("")] -[assembly: AssemblyTrademark("")] -[assembly: AssemblyCulture("")] -[assembly: ComVisible(false)] -[assembly: CLSCompliant(false)] -[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)] -[assembly: InternalsVisibleTo("ILSpy.AddIn_IntegrationTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100653c4a319be4f524972c3c5bba5fd243330f8e900287d9022d7821a63fd0086fd3801e3683dbe9897f2ecc44727023e9b40adcf180730af70c81c54476b3e5ba8b0f07f5132b2c3cc54347a2c1a9d64ebaaaf3cbffc1a18c427981e2a51d53d5ab02536b7550e732f795121c38a0abfdb38596353525d034baf9e6f1fd8ac4ac")] -[assembly: InternalsVisibleTo("ILSpy.AddIn_UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100653c4a319be4f524972c3c5bba5fd243330f8e900287d9022d7821a63fd0086fd3801e3683dbe9897f2ecc44727023e9b40adcf180730af70c81c54476b3e5ba8b0f07f5132b2c3cc54347a2c1a9d64ebaaaf3cbffc1a18c427981e2a51d53d5ab02536b7550e732f795121c38a0abfdb38596353525d034baf9e6f1fd8ac4ac")] diff --git a/ILSpy.AddIn/Properties/launchSettings.json b/ILSpy.AddIn/Properties/launchSettings.json deleted file mode 100644 index 36d38904b..000000000 --- a/ILSpy.AddIn/Properties/launchSettings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "profiles": { - "Visual Studio Extension": { - "executablePath": "$(DevEnvDir)devenv.exe", - "commandLineArgs": "/rootsuffix $(VSSDKTargetPlatformRegRootSuffix) /log" - } - } -} diff --git a/ILSpy.AddIn/README.md b/ILSpy.AddIn/README.md deleted file mode 100644 index 7c363f311..000000000 --- a/ILSpy.AddIn/README.md +++ /dev/null @@ -1,3 +0,0 @@ -Test cases for various types of projects as well as corresponding test plans are located in a separate repository. - -[https://github.com/icsharpcode/ILSpy-Addin-tests](https://github.com/icsharpcode/ILSpy-Addin-tests) \ No newline at end of file diff --git a/ILSpy.AddIn/Resources/Images.png b/ILSpy.AddIn/Resources/Images.png deleted file mode 100644 index 4a217fa719351140b0b35698415abfe86bc5a2a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1753 zcmV;~1}6E5P)AHIP00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGf3;+NN3;{ntBFF#$25w12K~z{ry_kDY zlvNbK&$sc~L13BD9J5gzi%imV)G?dMmd7+@Qlc|HhEynNYQ_jE|0tA4I{uO7COSpP z2&OXWsDRH=Oq5ddHDCoPJ{C|Q)7*vKWnaSWp6hqlZ$I|i7mmM~GxvVy-t+D5IrpA> z?h1qu2$sUaiimDvvI>GAY666Rbdcs~-!D9f-B^@s6g2@enBV_67*qg|&k8q_A(3jx zTrdm9j2a1a0&pH(W=wup#`3hXN}GrNJ*7f%j$iTFe%wu1tlU%u-wbBr&z^X9*s zNT2X`39OI0;Ov?6wT>R6{(9w>0xCM{%@kJ?`j=Ccd^Za-twaN6fOE~EKD9v!_xNC#3*my{I z?}T4L2z@G)a1m8*I;kEB5nDIb6z?QX=L2v!o#3tAyJfX2deR_xN=Hi0<8U3$@sy5y z*-N>$vlK=qzBPxg`a=4M!HL7bAg}5wAT&BAGcq!=ktr0|xAGbG+foXE950Hb{UoOM zg|p8o$eql=F|q3oo&!=jR)3N7T5U{>-6rzS-TS2N_8oHd#w~KW`6fBnaD|-u{ZEox zu!)J3n{AzB)i-6V6)l{h$nlTgLD10$M26RsQXSAsY#tdw#7#=shsjG zLEV|6&t1B<`s0KKC5QcJ5&9ahlALd*jps2X2~mX*6nWp1csv8_b_ZB`ZA{D-6e|-G zw!M$U6Y_Kv$jU`?Wbr2ViKzSeTeN0is_^g1XvEt{||T!1^>8^w}5veFOyh3DH9$MUDTU4c(+{n+9Vq zhrY+??a-BzQeYuVH`5;=_Prg#{BY$Ws@;&!;qz20v(tq=hw7nh2VH5iwa{S*fg6T? z(9^Hl{x3jX*KoGtE$Dc*1H_#`MG2lZ7N#XZR(h)6B`Sy8FG@>+MRSu~>Bt*c>6km( z%TF$w3&yK|F3~RAMYCEu7E6@Mlz=IbnppnBOz+q^CrX5L&X#`V@R7ADM)FYqA zc0hj4Vqrtka=~GDLhZ#qXgGHTdOD5p->rK952*9m>VKGaco6ih?XaP6`G60Q=WO|z z;0w7uPeAlc=7Oha!Uz5odytzges1<_JeXEvKBF@+ys5cDm7z+f(7 z@*wb)?*>1Sw~m@hiqH3vW{Zvd($Y!_YV;&4Yb_mmbZW~*TE!?;D+rFst0Q?8!p`8`WiP$Tirn$cb!yx zjq|EUDxUOwzN-pq(>+a`d3n%PRRX6gkHOi!ze0QU4k#`C(y!>tSFRjiJHeN|(oUea z+6-Lz{J_Pug9mZACN_;$Jk@r)J#lpE{0ePZ6*x>iaOR5-T$eOC{PN`u9LIU$;{c>7 zhKnaXn@nMy)(ykR=%t(BME+t(+U)Sl;T-%g=#%&7d3Bx?bRNH~ZQ8n*=>oC8+!}&AGnD0|VfHq=v;cdC1q{00000NkvXXu0mjf0W?vx diff --git a/ILSpy.AddIn/Resources/Package.ico b/ILSpy.AddIn/Resources/Package.ico deleted file mode 100644 index 900abec819429604467863ee22abc7f1cf2b9ebc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18718 zcmeHO2V7Lw(qEq?d7mkks7Z{8(ZmvyNbDLTmPD}xl_(bM1Xi@8x?*zUTEfp1p;8=bSlZ&iwzwVhvyoW=To0 zupG~F`;x_yXR%o0$9JC(W3fbdO?>_~%k6Cz%XJQmH4LxQ^9Kj9ShCWR^S4m&;3=;rA+ecJ)U-fTLZxM z$KHN|>+gTJ-4$jj8E!_&m5*-7_O zr=7MI*j>B`+PinxsLIR#>FeOAYvsRCTYHV^#`|E%`!{oSS8lk1O2O|v?cM2}=-`}-r`gr*z zUyYVsG%&FP6d}hs#pJvo-`*C{B)}`OpY+dqA&6Y*e zYBnvL@~a{#{BqZ<~3(l63*L~hZqisH}n+NDMf@R>H8HSV|SAMNJ0;z4mS zJTciA)^5DqTHvU_)FH=FS(N9YEow-2g@*K-(2(K;4e>TmA8{ROeYK&+6J?o{v-YEUmJNV3i zXb%tVD%8KtWL3NNd9i~8?eBRyrm+)sMiCwAv*9o=j;88E(o%1pfl+@ zJoPyb)i<_7)s=OScX2KFSXyFxyFqGHAS8$TVI6$X7M>6ra7%0p-&fee;Re>j7`)LI z)c$?-->_`nHyqvb51p@T1J~#xI9}5LdxHybL;Xb6-gS!|EiYd*sI9DkCdZ`wu%$)b^4b-1H zn_PkjFPEm0{45{|xoO*BuYUn7bk4RN*swgJqNoT;T=eR?^6gr?N<3P-9tO2_)`Wwg zJ{E+J6G7Mz55h;$Abc1M!ctFh9nwvqi+35k)eeI#uF2W)k&I-`7w4sIv&ASW>jvf?Aq7GY?M;FoMc^@w5W;Vd5CI4&f%=-dAG1{x1Y|MI)} zP=2rAB?)k{Xd*k@GS`Rd`}d*9+X6bPBcQWB89JZjfUx-v2wU!o%ck2{k8}`{O{xMx zaN8bybXCE}!UA%Wcu<&`1o`O+SdUmdkAdujNXU!}>$XJ@B%>{8d?$q992G=!lp93j zxOi?0yO-ME$ylq-MqjhJs0-J(FMqeh=2$;7bwolguA)va3?DT3Nn%)FD<^?7SUo` z@IuA)hPKGp`J9IYWUIvT=UT^QR^zbwhmhI_X&peQ>P zZIR5_;&uw!A{lLgeTv3K1}_BCqHuio*uopv3y*GFxWW-!-=rr$pFhpCRmYM3evYP{ z{HikOExwKx0-BSob)E8$*BJlqL!hk{@?$nkTA+^8_d$BS@v zg-l*FJh*=kDocu>0{doJQ67{QXDN~w!l7x<03sKxO;rlT#IuQ z*&^^3uF*?i@#K*&%>NFCn%AffB(Yf67=O1eCu40Pom*a3G48Fqb`K7SztIY z>5~R{QeTI4AX_}_u|-Wqcb{U$MWJ|H6y`ANrq~uK;<=XQs1zPE*Jj~dOSU+rumYBU z`!VW2?1lc*pMI~qMt(+GOenN8H}xyeo;E_$lgEs09@p`idOX5DMdN~BSq9Z)i_*JL zS=`qaIM+&Sk)Ft`dlFlm-nJ4}P9GPv@DI?RYorMoIOnyuwnBT`%hJ~JjHy>MQ;!C5 zJs$C)o=>)@689;IEwCOH_r$iiPvZi8n4WP#>mJTgc{oR%-M$)DN_`UlN9d1h2V~-W zC+O@z>3m5#J364FtqpqWL4E3ReXl;%J-#KjVCGt~MLv|hG%mz*l=99sAS3l@%G@tU zOnqJdc-?(RBh4mPQ(X`Wh5brbR~HBbozT(V4sES1(E6+i#C@vU7TBj4TU1x|%u%$C zR^hlHU#9PR;b?rhO$GOFE2KU(TrhIvyRXylb@wlxR9r^un-lun-0n4+<|LX|t#wtv zO6M$CUOEF7TBpEF^8}b`90QXJN^o734Myh=fuYJlFgU9S`e*jRl~a2_@5C;+e0&G! z9NiAuM-)Jdy#+K6Z36WJ8{xwKUqEf29Gp~GSvG6p@ZY?5d|e&z{y(q|Y_1`RCfnXX zm2G`a}rK8NY)IQBN*FMQM*F4U?p?;iwT~!H%%{DxDkZqu>$jH^x``EfC zce8bm?_}#7-^SKa+Q!yqZ)IyA+|1TIxRH(eAC+D7?RWIO-=Nc*N8Yr+n-+M}0&iO2 zO$)qffj2Gi|F#8yIan;+?ozwEyx3i8c9%R2`oUtAON-0K&%|Z>`{J_e{kQN3a+O#E zm=bs_NvT2Cp`0bnlss(8xA2@wL{NH4P4Rhocge$3x=*J)NQ(q<>8I3G>waEcTvmw0 zCH&qJb!GHJ?HPUlk4xfdjYnCG(!KkA*w{d7XeguxxfQjy)N_S`X1nT=gaE7ar&|q` zl!Pkl){X4CefuR!O{m{5WVx zOaI~XhP%7_!25Z5AP6{XFUqyyv{pyhXC=CpCP&)WB?X$)C2>{i67{#$*|X&Zr{&f* z$<3Rbws!6pX+O^#pSEhor)ev{9hg1%9 z?agfx*l*^DBGoy$o;rftAtu7Y2#eN&fUB+f&MK|9Z|rW((pb^TQBwom6TA4Aj_u%U zvA6Oy4sGJAEB?Y)-LsyLaT)&E9jj4R@z0=O`IxYh>7xc(^#1iQt@TveY_4c06!|+e3JdI8g%!T7 zoz-E8zafVBC`OFw7P*2j-3&T{&Vw&WY#!u<^V))T}Y zC751oDPnnuMgVK^BeB{C`OBMW{S^J zyuS=%%!K6;9!Z!B;lhMfFl~Vx1L8>#uV&7;p}oJ~_j50u+acagm_t+JbD@|w>GKFN z6b6%Huq<)Bp87IjScEqaJ}qer!a@lvnLqyB-}QY5#6()3HNPN)k2Iq`jfCYOuJ(wD zS9iAs_GyZ@_ihWq0;w&|AjfFogkd%>Rq_=VC>Gt>(T>v5OT_W>mZqoJHiRkFGI8_T zhlo!~+M>9S8P|kcNZNv8{Xcv$;^r$p_tGuu8!6GDZHRaB87V2^R}>fV%Zl>(#f3Ti zqTEdWovc(o+MAz~63fqukLG8@h4E9PgZYW!{`|OLZ$4tMd_S&L^SRw?VeW+CD_{D^ zYcALsXasYOGSw0gpJ>DE|THs9!{I|D28O9-uP$*7AF`8JEa+Jn+ zfKCjxh*%mF>KKSJpbI4dMH2we z=df(fG+6!pbXYg{3s^tzOW3erGW_!W6p;U6Dr}bi8n!N-4%>g60Sc>rfP=CNV7KgI zIJRab>|2lA*GI!`m1vQ|s^+#5T9WB_##K zIky4gg>duC4!FE`FX$;M!nGr8+9SZ_(+5EBS4I9rUZr; zP5^Pck&_CvuW(Q~2Cf=s!TjP0Fw;5<9Gx@3xqJ?+&>tZ@mbg>)xHgl|nxQQR5B24k zJ%PYs3#47&4SAfyz%w}u={MEkE^<=4T=#&`>oC-Ck3)moDQLWP5+G6?-j}@w!&YB~ zMcZ{@_VvS%=A6(&6iphz{#Kz*qz)6C+~GK zJVYIRJ8;(30Y}4&;Ax}-+-q0C&BzG-IV~VO+2w`~v;Xiw&Z?IUa#!t47#?e&oh`%7 z4REq#_A6nI_7IGIGI12cZXs6@{busvqr6=p#$C*vi}Ak&S$0}b;HwK6;TCWw(gN;< zUWaN=U1;#rf?9tAs0cHMhDZ~L^YLbUU*grqB8M<8$dloy5`QW?#tVvL&_6~$n(_z| zgZ&{Z#EHync|cnZ@oOD%Pvr!i1uh`G zdlR1KdqPL4H`EtKLURT3KC1$dn~3`#esJ)6O=0Osd@NpXMiL#OJQp)h-S{@WYdrcm*Kk01E#|eZu zl*m2AJqvNIh;voXuV#E!^3{mnL|h=^Dv}>5=xhM;<;c$@Zbv(EBgp5&c>tuo-@3Wa zeDK1la>DLyuX>DqIo_!-KO)ud11yfSbwoo)M}6d4sZWLu{pXM&g9i=7e*+|eYh_n` zpJ+c{-E}{IGycOdqeqV%G5kF|-jbvoS>9Z;>9U^NmG!bKrRL9{Gkey|Y15`m`Qqcj z16c2WG;Z9mw5z|Yk@fH})Zegrk-C|ww&sQNDk`T>PIzbFM_v~20(#q;OQnKkq4X;UUo z{Iu7fKmX8w)vq%2BK~YY1ykc$<57C>lzz-YIpdTo{;wK`a)v42nZW@5#g|YFo8G}- z8UMyRC^wLD0x1`easVm!@Atfpa>FPmjB>#!2aIyRDCdiEy_g&?%i$M7ckd^FwhYil^RS1F!Dz5vBsiOWy1 zR>|KJSDZNFR3GAm6BnE~;KcnV&NszG?jXmTVs*snPL4obki*?KcSq75y}7`|`F)7| zQd*yB4X5>;VxPpP{x$9{!v*c;ffDDFVn!4%qPQ7xIw^KY9L`_kZj$dt{v~n$i1SBW zKjQciw~sh|#N{InpG4pP=29A4;WHE?6dp>W24dT|{A$t?jPfB$doK}V!RX-Nvm{gS zvFGzl_XN{xb?DW$%zkLeLuFnmni{rho$as>2oKVqbI6f9IuLx}orFw;h!r}k-v?}^+= zutQOA|u6-O=Y diff --git a/ILSpy.AddIn/packages.lock.json b/ILSpy.AddIn/packages.lock.json deleted file mode 100644 index a0cc774d0..000000000 --- a/ILSpy.AddIn/packages.lock.json +++ /dev/null @@ -1,1066 +0,0 @@ -{ - "version": 1, - "dependencies": { - ".NETFramework,Version=v4.7.2": { - "Microsoft.CodeAnalysis": { - "type": "Direct", - "requested": "[2.4.0, )", - "resolved": "2.4.0", - "contentHash": "lfvTIlVYTlrSnf+Pwvucl+Sw8QcEAiO/0c4lG1ia5klcUKJCCeKpKBS5t+auMrVj0ECrI7Wucb8CVxFvGLhL6Q==", - "dependencies": { - "Microsoft.CodeAnalysis.CSharp.Workspaces": "[2.4.0]", - "Microsoft.CodeAnalysis.VisualBasic.Workspaces": "[2.4.0]" - } - }, - "Microsoft.CodeAnalysis.CSharp": { - "type": "Direct", - "requested": "[2.4.0, )", - "resolved": "2.4.0", - "contentHash": "X/YxFrTwEtLbd4X6Yb6Rws1dsFy+Zj0hmNies3Axwx8fep1BkuMG4WquWWSN6QA808ioJI+mGXkiRCuAf7GnFA==", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "[2.4.0]" - } - }, - "Microsoft.NETFramework.ReferenceAssemblies": { - "type": "Direct", - "requested": "[1.0.3, )", - "resolved": "1.0.3", - "contentHash": "vUc9Npcs14QsyOD01tnv/m8sQUnGTGOw1BCmKcv77LBJY7OxhJ+zJF7UD/sCL3lYNFuqmQEVlkfS4Quif6FyYg==", - "dependencies": { - "Microsoft.NETFramework.ReferenceAssemblies.net472": "1.0.3" - } - }, - "Microsoft.VisualStudio.LanguageServices": { - "type": "Direct", - "requested": "[2.4.0, )", - "resolved": "2.4.0", - "contentHash": "N3Gt5lsDKJv0QXFzkESsxfanp7aScCgqTCicrZX0Rh9XZKV6zmKL1BiGn9ZDRkZcK9IVpSdU5a3zent9Jfy0Vw==", - "dependencies": { - "Microsoft.CodeAnalysis": "[2.4.0]" - } - }, - "Microsoft.VisualStudio.SDK": { - "type": "Direct", - "requested": "[15.0.1, )", - "resolved": "15.0.1", - "contentHash": "gXRQicFwdaN2kK9LYJ+vBmSz4zhDvZkF2uCooSp2EMBmUbLW8/tgk+Zf6+qM0nmyhDs27Jzu3HN/XK2eV8Uyow==", - "dependencies": { - "EnvDTE100": "10.0.3", - "Microsoft.VisualStudio.CommandBars": "8.0.0", - "Microsoft.VisualStudio.ComponentModelHost": "15.0.26228", - "Microsoft.VisualStudio.CoreUtility": "15.0.26228", - "Microsoft.VisualStudio.Debugger.Engine": "15.0.26228", - "Microsoft.VisualStudio.Debugger.Interop.10.0": "10.0.30320", - "Microsoft.VisualStudio.Debugger.Interop.12.0": "12.0.21006", - "Microsoft.VisualStudio.Debugger.Interop.14.0": "14.3.25408", - "Microsoft.VisualStudio.Debugger.Interop.15.0": "15.0.26228", - "Microsoft.VisualStudio.Debugger.InteropA": "9.0.21023", - "Microsoft.VisualStudio.Designer.Interfaces": "1.1.4323", - "Microsoft.VisualStudio.DpiAwareness": "6.0.28727", - "Microsoft.VisualStudio.Editor": "15.0.26228", - "Microsoft.VisualStudio.ImageCatalog": "15.0.26228", - "Microsoft.VisualStudio.Imaging": "15.0.26228", - "Microsoft.VisualStudio.Language.Intellisense": "15.0.26228", - "Microsoft.VisualStudio.Language.NavigateTo.Interfaces": "15.0.26228", - "Microsoft.VisualStudio.Language.StandardClassification": "15.0.26228", - "Microsoft.VisualStudio.OLE.Interop": "7.10.6071", - "Microsoft.VisualStudio.Package.LanguageService.15.0": "15.0.26228", - "Microsoft.VisualStudio.ProjectAggregator": "8.0.50728", - "Microsoft.VisualStudio.SDK.Analyzers": "16.3.14", - "Microsoft.VisualStudio.SDK.EmbedInteropTypes": "15.0.27", - "Microsoft.VisualStudio.Setup.Configuration.Interop": "1.16.30", - "Microsoft.VisualStudio.Shell.15.0": "15.0.26228", - "Microsoft.VisualStudio.Shell.Design": "15.0.26228", - "Microsoft.VisualStudio.Shell.Embeddable": "15.0.26228", - "Microsoft.VisualStudio.Shell.Framework": "15.0.26228", - "Microsoft.VisualStudio.Shell.Interop": "7.10.6072", - "Microsoft.VisualStudio.Shell.Interop.12.1.DesignTime": "12.1.30329", - "Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime": "14.3.26929", - "Microsoft.VisualStudio.Shell.Interop.15.0.DesignTime": "15.0.26201", - "Microsoft.VisualStudio.TaskRunnerExplorer.14.0": "14.0.0", - "Microsoft.VisualStudio.Text.Logic": "15.0.26228", - "Microsoft.VisualStudio.TextManager.Interop.12.1.DesignTime": "12.1.30330", - "Microsoft.VisualStudio.TextTemplating.15.0": "15.0.26228", - "Microsoft.VisualStudio.TextTemplating.Interfaces.15.0": "15.0.26228", - "Microsoft.VisualStudio.TextTemplating.VSHost.15.0": "15.0.26228", - "Microsoft.VisualStudio.Threading": "15.0.240", - "Microsoft.VisualStudio.Web.BrowserLink.12.0": "12.0.0", - "Microsoft.Win32.Primitives": "4.3.0", - "Newtonsoft.Json": "8.0.3", - "System.Collections.Immutable": "1.3.1", - "System.ComponentModel.Composition": "4.5.0", - "VSLangProj100": "10.0.30320", - "VSLangProj110": "11.0.61031", - "VSLangProj140": "14.0.25030", - "VSLangProj150": "15.0.26229", - "VSLangProj2": "7.0.5001" - } - }, - "Microsoft.VSSDK.BuildTools": { - "type": "Direct", - "requested": "[17.6.2164, )", - "resolved": "17.6.2164", - "contentHash": "SIyMfFGhGfJ4NLgbwW157ylbR0OCZJrxy7ge+jX14Fmhedj+SLQG9duqc0FRnIvMq4e1EmLNEAHE2wvXu1h+/w==", - "dependencies": { - "Microsoft.VisualStudio.SDK.Analyzers": "16.10.10", - "Microsoft.VsSDK.CompatibilityAnalyzer": "17.6.2164" - } - }, - "Mono.Cecil": { - "type": "Direct", - "requested": "[0.11.5, )", - "resolved": "0.11.5", - "contentHash": "fxfX+0JGTZ8YQeu1MYjbBiK2CYTSzDyEeIixt+yqKKTn7FW8rv7JMY70qevup4ZJfD7Kk/VG/jDzQQTpfch87g==" - }, - "TunnelVisionLabs.ReferenceAssemblyAnnotator": { - "type": "Direct", - "requested": "[1.0.0-alpha.160, )", - "resolved": "1.0.0-alpha.160", - "contentHash": "ktxB8PGoPpIaYKjLk/+P94Fi2Qw2E1Dw7atBQRrKnHA57sk8WwmkI4RJmg6s5ph4k1RIaaAZMus05ah/AikEkA==" - }, - "EnvDTE": { - "type": "Transitive", - "resolved": "8.0.2", - "contentHash": "u8Blk4h4kYywOVR5kgApLe1gbEj5BDAhK1k21nYv1gDmmISS3efziVN1j6REoiqROk7XuMX2Kk87Kv0whFqLBA==", - "dependencies": { - "stdole": "7.0.3302" - } - }, - "EnvDTE100": { - "type": "Transitive", - "resolved": "10.0.3", - "contentHash": "s2HfFPFLn0MX/CeCX7QthpJrFqB8uzR3zC4VL+h7TTsmTVB1NpY5HCG/1tmH4XRzFlz12o5/8aPUgo0nA+Ge1Q==", - "dependencies": { - "EnvDTE90a": "9.0.3", - "Microsoft.VisualStudio.SDK.EmbedInteropTypes": "15.0.16" - } - }, - "EnvDTE80": { - "type": "Transitive", - "resolved": "8.0.3", - "contentHash": "31qmvJGDGgKAb4+1Kox54TfSwrGqd2HTiGGX/PiRDeVzK7EjgKhKAv/mvjO/CccVnH/xoIAGGk+K0mjHEndpTQ==", - "dependencies": { - "EnvDTE": "8.0.2", - "Microsoft.VisualStudio.SDK.EmbedInteropTypes": "15.0.16" - } - }, - "EnvDTE90": { - "type": "Transitive", - "resolved": "9.0.3", - "contentHash": "dYnEoZAp3xVmDhvGZxtXkgmv2OHetmIrkzGrvcMuyw/WUO5v2Spre/nZqd9CLjsgDaFE57D4CPKIGyZM4UD8Ew==", - "dependencies": { - "EnvDTE80": "8.0.3", - "Microsoft.VisualStudio.SDK.EmbedInteropTypes": "15.0.16" - } - }, - "EnvDTE90a": { - "type": "Transitive", - "resolved": "9.0.3", - "contentHash": "Kl7mDCzxPVbQZqMF5v00viFrgLdq+mYRXDZhFm9FQ5nZCEPbob7FbP0+sMfgYsCB9qYBr/AHdAB+pOnaS82RdQ==", - "dependencies": { - "EnvDTE90": "9.0.3", - "Microsoft.VisualStudio.SDK.EmbedInteropTypes": "15.0.16" - } - }, - "ManagedEsent": { - "type": "Transitive", - "resolved": "1.9.4", - "contentHash": "coNOIYTi8Nty9yvelOHlmnq+EP3mRE3lwDTfOeodznEVmuzybr/VUQaeAspAHIGJXUm483StJhXenBZ/28UY9g==" - }, - "Microsoft.CodeAnalysis.Analyzers": { - "type": "Transitive", - "resolved": "1.1.0", - "contentHash": "HS3iRWZKcUw/8eZ/08GXKY2Bn7xNzQPzf8gRPHGSowX7u7XXu9i9YEaBeBNKUXWfI7qjvT2zXtLUvbN0hds8vg==" - }, - "Microsoft.CodeAnalysis.BannedApiAnalyzers": { - "type": "Transitive", - "resolved": "3.3.2", - "contentHash": "LlcsDRSYfkJFWOdDpysY/4Ph4llHc8DLOc3roFTz9+216vl+vwVGfbys2rcSmhZCTDv/0kxSs2oOdd9SX2NiVg==" - }, - "Microsoft.CodeAnalysis.Common": { - "type": "Transitive", - "resolved": "2.4.0", - "contentHash": "L6S44+An50I8rbGhKnl8u4iKgutgctRKBgJhkffATt5z0l5xFp/4WLpLiBNiurkqdu3jKwHgs4gV7nkkQeLvFw==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "1.1.0", - "System.AppContext": "4.3.0", - "System.Collections": "4.3.0", - "System.Collections.Concurrent": "4.3.0", - "System.Collections.Immutable": "1.3.1", - "System.Console": "4.3.0", - "System.Diagnostics.Debug": "4.3.0", - "System.Diagnostics.FileVersionInfo": "4.3.0", - "System.Diagnostics.StackTrace": "4.3.0", - "System.Diagnostics.Tools": "4.3.0", - "System.Dynamic.Runtime": "4.3.0", - "System.Globalization": "4.3.0", - "System.IO.Compression": "4.3.0", - "System.IO.FileSystem": "4.3.0", - "System.IO.FileSystem.Primitives": "4.3.0", - "System.Linq": "4.3.0", - "System.Linq.Expressions": "4.3.0", - "System.Reflection": "4.3.0", - "System.Reflection.Metadata": "1.4.2", - "System.Resources.ResourceManager": "4.3.0", - "System.Runtime": "4.3.0", - "System.Runtime.Extensions": "4.3.0", - "System.Runtime.InteropServices": "4.3.0", - "System.Runtime.Numerics": "4.3.0", - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.X509Certificates": "4.3.0", - "System.Text.Encoding": "4.3.0", - "System.Text.Encoding.CodePages": "4.3.0", - "System.Text.Encoding.Extensions": "4.3.0", - "System.Threading": "4.3.0", - "System.Threading.Tasks": "4.3.0", - "System.Threading.Tasks.Parallel": "4.3.0", - "System.Threading.Thread": "4.3.0", - "System.ValueTuple": "4.3.0", - "System.Xml.ReaderWriter": "4.3.0", - "System.Xml.XDocument": "4.3.0", - "System.Xml.XPath.XDocument": "4.3.0", - "System.Xml.XmlDocument": "4.3.0" - } - }, - "Microsoft.CodeAnalysis.CSharp.Workspaces": { - "type": "Transitive", - "resolved": "2.4.0", - "contentHash": "T4ZfEWzMxBujZcb2oKWxDNRsG1Jtj+QoKVctrNhF6306pLmYwudiIMBYZ0FH5pTXL7aNWn8j/4ba/tZFzoS8Wg==", - "dependencies": { - "Microsoft.CodeAnalysis.CSharp": "[2.4.0]", - "Microsoft.CodeAnalysis.Workspaces.Common": "[2.4.0]" - } - }, - "Microsoft.CodeAnalysis.VisualBasic": { - "type": "Transitive", - "resolved": "2.4.0", - "contentHash": "slaffw+uYFRVzGaS43hprLEc4FfbiSaP3Pl47F9848JinN6E2mc8ZIBXuN51viFzaNtlMw+v74iGaFpdNrsytg==", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "2.4.0" - } - }, - "Microsoft.CodeAnalysis.VisualBasic.Workspaces": { - "type": "Transitive", - "resolved": "2.4.0", - "contentHash": "t4zBg8NaOPIiGZIqDWY3FhOP7BJrvuF0fzKFLHsSWFQkAK4jullmzvD2lf/P2g77EPMRd3VGl1c43CU63LRaFg==", - "dependencies": { - "Microsoft.CodeAnalysis.VisualBasic": "[2.4.0]", - "Microsoft.CodeAnalysis.Workspaces.Common": "[2.4.0]" - } - }, - "Microsoft.CodeAnalysis.Workspaces.Common": { - "type": "Transitive", - "resolved": "2.4.0", - "contentHash": "P6ZsV3DQGjUDNL4FxjWMNuc6qH66DJQkyLUg5yxWMGTrJkJ5ZLMFzJGSCxrS97xoZZFqsYOfw5OURKwGtyg30Q==", - "dependencies": { - "ManagedEsent": "1.9.4", - "Microsoft.CodeAnalysis.Common": "[2.4.0]", - "System.Composition": "1.0.31" - } - }, - "Microsoft.NETFramework.ReferenceAssemblies.net472": { - "type": "Transitive", - "resolved": "1.0.3", - "contentHash": "0E7evZXHXaDYYiLRfpyXvCh+yzM2rNTyuZDI+ZO7UUqSc6GfjePiXTdqJGtgIKUwdI81tzQKmaWprnUiPj9hAw==" - }, - "Microsoft.VisualStudio.CommandBars": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "U5u6Yvwg1p8+V9VkQ1RZAYAhMJIw+qB+sGrCuPl2R3HHYSmkJ39cCBIBXeDunkAOguKD+1th/ciWOcCPIYXgRQ==" - }, - "Microsoft.VisualStudio.ComponentModelHost": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "988RiP69R/zvzTUfm+rwZ/ugURZKONzVS4ttK+npBLx7PNQC2L6fmUzv3XQv7nwk9pvHkznaFYR78QWOwtgVRw==" - }, - "Microsoft.VisualStudio.CoreUtility": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "21w+zp70yYYpMNVufdMuMnzauIehkMCRoCe0APbkai4s3O9icMRipeWvvmGxJedZXMlYvRnZYOY15CHkw2KETw==" - }, - "Microsoft.VisualStudio.Debugger.Engine": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "RVxkXDQJhwQ0FKaPsdxljNKDijM1e4QxhF0dT54beCQREtSHAAuDZZawfi3m/dtzpl5uFwfy+SBsyeH+aanWpQ==", - "dependencies": { - "Microsoft.VisualStudio.Debugger.Interop.11.0": "11.0.50727", - "Microsoft.VisualStudio.Debugger.InteropA": "9.0.21022" - } - }, - "Microsoft.VisualStudio.Debugger.Interop.10.0": { - "type": "Transitive", - "resolved": "10.0.30320", - "contentHash": "sErGOQTd5MkBrpG02xUGDJA6IbHSUubQ3aE8d424QKMAlgZoyS4ewiCgfKQN12VcrHde3nTiL6gsY/HUOvkVRQ==", - "dependencies": { - "Microsoft.VisualStudio.Debugger.InteropA": "9.0.21023" - } - }, - "Microsoft.VisualStudio.Debugger.Interop.11.0": { - "type": "Transitive", - "resolved": "11.0.50728", - "contentHash": "+6jmYT+biLP69qsEKIHKehhoab+15PtQQHwGcLUGV+wgKIeNdyyInjL5lY1NYT1eiO2BTXBtBfv6UrsjM5BvUw==", - "dependencies": { - "Microsoft.VisualStudio.Debugger.InteropA": "9.0.21023" - } - }, - "Microsoft.VisualStudio.Debugger.Interop.12.0": { - "type": "Transitive", - "resolved": "12.0.21006", - "contentHash": "Zn9VnHBcu9gbxaSOeQJL4A5qs/G0/z670hE+DWTd3YBkanESuAxDyBKxYzEtHJDO84hfoWJQmqMm0GlT8cvHVQ==", - "dependencies": { - "Microsoft.VisualStudio.Debugger.InteropA": "9.0.21023" - } - }, - "Microsoft.VisualStudio.Debugger.Interop.14.0": { - "type": "Transitive", - "resolved": "14.3.25408", - "contentHash": "xMgjHZ2QAmsSfCLq8u72bx+5OmTO23inuwDtmBVpDk1m8iwD8wt1+QdrhFy69djpCqqb6To0jljYiqMZG2qajg==", - "dependencies": { - "Microsoft.VisualStudio.Debugger.Interop.11.0": "11.0.50728" - } - }, - "Microsoft.VisualStudio.Debugger.Interop.15.0": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "qHCJ/ADV7sq2ylscH9lw8CNstVMscf+gxBYtwg9dceNwUFC1/SHoblbC6M1skhfZb/oXPGvKtiH2ryk6thQK+A==", - "dependencies": { - "Microsoft.VisualStudio.Debugger.InteropA": "9.0.21022" - } - }, - "Microsoft.VisualStudio.Debugger.InteropA": { - "type": "Transitive", - "resolved": "9.0.21023", - "contentHash": "GUOG8vlZPDfUENsBbxasoSNtUmi6tS6VqeA0HF6vZ7Dk9HgeWAdICUZd1/Kiw4ujsMCPdC8+xjZcfXOnnQX0NQ==" - }, - "Microsoft.VisualStudio.Designer.Interfaces": { - "type": "Transitive", - "resolved": "1.1.4323", - "contentHash": "OPCJsu0Ashev1cyzdywOKdPggOwOCw+vhazBU9psA1GWjNHwrG77fDlrmVdJjs5y2Vx/jetyR6BQcN448fGZ8Q==" - }, - "Microsoft.VisualStudio.DpiAwareness": { - "type": "Transitive", - "resolved": "6.0.28727", - "contentHash": "MnsTIFgiy/UNf6O9/iVf/iJ31HYa2OZ8C+3MmkOuXsym95Urz6UfugBPKohudzegWDTHye1jnVuiR/38kZ09Kg==" - }, - "Microsoft.VisualStudio.Editor": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "iVyyBELkXlu+9biTLuc65D0ozrRFaZpRvpH1XnnZ7I4xdTbXXKKTQVtf0RBpKqIhqgi+r1Uf4tT73Vk+08cQHg==", - "dependencies": { - "Microsoft.VisualStudio.CoreUtility": "15.0.26228", - "Microsoft.VisualStudio.OLE.Interop": "7.10.6070", - "Microsoft.VisualStudio.Text.Data": "15.0.26228", - "Microsoft.VisualStudio.Text.Logic": "15.0.26228", - "Microsoft.VisualStudio.Text.UI": "15.0.26228", - "Microsoft.VisualStudio.Text.UI.Wpf": "15.0.26228", - "Microsoft.VisualStudio.TextManager.Interop": "7.10.6070", - "Microsoft.VisualStudio.TextManager.Interop.8.0": "8.0.50727" - } - }, - "Microsoft.VisualStudio.ImageCatalog": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "QULWo81bg8bmKyKjKD7LELLSFUlvViNbeP4HCCrbEAYkDUOJ+yyWVFZxFplyl8ptIcRAh2sPUE9N45m8P5WQFA==" - }, - "Microsoft.VisualStudio.Imaging": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "msJjqbs2cccoT6arcozmosjGji6i8m5f35Ndsq0OKT7U5gRUmzfcLPwu/dr6M+wzrqakV6l0ZHi8hSSpDCx33A==", - "dependencies": { - "Microsoft.VisualStudio.Utilities": "15.0.26228" - } - }, - "Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime": { - "type": "Transitive", - "resolved": "14.3.26930", - "contentHash": "5nwZt9F6INTWWU+NLWTp/SKKUv1y2/uZ1riLlkdIILWgBG1+BaaFjEfBO5PQK3aMl/sDLTmGa6qJib77dmqvww==", - "dependencies": { - "Microsoft.VisualStudio.SDK.EmbedInteropTypes": "15.0.16" - } - }, - "Microsoft.VisualStudio.Language.Intellisense": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "leVikeYIm+7jN6jjMXMh3e7+i9Ifo4r2CHwGRppv7OefBC993uMsJyR3yw5+tqk0ITqlt9cKWCUIyETbnRhCFw==", - "dependencies": { - "Microsoft.VisualStudio.CoreUtility": "15.0.26228", - "Microsoft.VisualStudio.Text.Data": "15.0.26228", - "Microsoft.VisualStudio.Text.UI": "15.0.26228" - } - }, - "Microsoft.VisualStudio.Language.NavigateTo.Interfaces": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "zx6Q0qMDJCbb6MLn6SuTmTmfSJ41lg9WLvOhMSDta5vAI+xSNLz0sOOybBBxA/cDeSaPJK/I+zeuJR3+PRV5UA==", - "dependencies": { - "Microsoft.VisualStudio.CoreUtility": "15.0.26228", - "Microsoft.VisualStudio.Text.Data": "15.0.26228" - } - }, - "Microsoft.VisualStudio.Language.StandardClassification": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "yhlqwNGcn/z/gGmcElF8KbCgduJW5m9qE5PxIUN2Hfrar1sYgNtXMRciKGTqJTWibsoz86jYRwsjcrLHgBTZHQ==", - "dependencies": { - "Microsoft.VisualStudio.Text.Logic": "15.0.26228" - } - }, - "Microsoft.VisualStudio.OLE.Interop": { - "type": "Transitive", - "resolved": "7.10.6071", - "contentHash": "PuINhJH41DbKfkNU+qcyC4Wlt/z0DgI/ViZv6gjUclylnFbUIpCdqm4fK+PKJDfiarHTKnGWkxjKuOIS1Bqs5Q==" - }, - "Microsoft.VisualStudio.Package.LanguageService.15.0": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "j8bJFOpPFsWomR1FyhDGA4vdIlkzXg3Rud/r9iev1lvb9UPcO2hvfHIDgH9g4tMHtChHBCsEM9WYLBlEy/bgxw==", - "dependencies": { - "Microsoft.VisualStudio.OLE.Interop": "7.10.6070", - "Microsoft.VisualStudio.Shell.15.0": "15.0.26228", - "Microsoft.VisualStudio.Shell.Interop": "7.10.6071", - "Microsoft.VisualStudio.TextManager.Interop": "7.10.6070", - "Microsoft.VisualStudio.TextManager.Interop.8.0": "8.0.50727" - } - }, - "Microsoft.VisualStudio.ProjectAggregator": { - "type": "Transitive", - "resolved": "8.0.50728", - "contentHash": "//wv15F1WjMkOWwdmhTktUtias6M4pWDDztVW9la14T2eKBbmw6niqiZL3bB23EZ4l0J5wafQcWgZusv4UI//w==" - }, - "Microsoft.VisualStudio.SDK.Analyzers": { - "type": "Transitive", - "resolved": "16.10.10", - "contentHash": "LuhBHy7MJJ5SjpS7J2GuHqPyL1VeqXUwYc+mTagaUCzXbNwJmLcSUAioCyQyAzPIn6qtnzuM5Lz6ULOQS3ifUA==", - "dependencies": { - "Microsoft.CodeAnalysis.BannedApiAnalyzers": "3.3.2", - "Microsoft.VisualStudio.Threading.Analyzers": "16.10.56" - } - }, - "Microsoft.VisualStudio.SDK.EmbedInteropTypes": { - "type": "Transitive", - "resolved": "15.0.27", - "contentHash": "rZNw+lD53U0DMFMiHEe3TnIr2RyWPaqr+kNVITrKVZHwI3y27KQ0sbj8w7o/BoMilR8dFJwzcKn60SXITYdkzA==" - }, - "Microsoft.VisualStudio.Setup.Configuration.Interop": { - "type": "Transitive", - "resolved": "1.16.30", - "contentHash": "lC6SqNkraWUSY7cyF5GUmXSECoTMwslBc/r1dguChjsi0D0BlF7G6PLsvXD0NFCwnpKlgVzUYrIq7DQakdGerw==" - }, - "Microsoft.VisualStudio.Shell.15.0": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "2hM2owplA4W0z9D/MkPQgLl07HoTaVuHOHjsLGPt5iTym1C1wspc/5fuWWZjL9pzaZXx2Q1tEZrwnPzX9gSaPA==", - "dependencies": { - "Microsoft.VisualStudio.Imaging": "15.0.26228", - "Microsoft.VisualStudio.OLE.Interop": "7.10.6070", - "Microsoft.VisualStudio.Shell.Framework": "15.0.26228", - "Microsoft.VisualStudio.Shell.Interop": "7.10.6071", - "Microsoft.VisualStudio.Shell.Interop.8.0": "8.0.50727", - "Microsoft.VisualStudio.Shell.Interop.9.0": "9.0.30729", - "Microsoft.VisualStudio.TextManager.Interop": "7.10.6070", - "Microsoft.VisualStudio.Threading": "15.0.240", - "Microsoft.VisualStudio.Utilities": "15.0.26228" - } - }, - "Microsoft.VisualStudio.Shell.Design": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "6fDy20wh2dyxZR/f7c8A485w/XXLPjcHJSEjxNZDKc+1xI0qVaocKM478/pcCVx/Bovah8YLNB4dU/NqZdLabg==", - "dependencies": { - "Microsoft.VisualStudio.Shell.Framework": "15.0.26228", - "Microsoft.VisualStudio.Shell.Interop": "7.10.6071", - "Microsoft.VisualStudio.Shell.Interop.8.0": "8.0.50727", - "Microsoft.VisualStudio.TextManager.Interop": "7.10.6070" - } - }, - "Microsoft.VisualStudio.Shell.Embeddable": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "FuEwL1Ju8ShsmxNm+X5Zzc9eYAUFdC0LXX5NgVCycC6gnHXyQYF59nsPWXR7Em7e6ubIayoMI8XbZnRUCP/TSA==" - }, - "Microsoft.VisualStudio.Shell.Framework": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "llNX2IqaxexoOF5vErKx4510Pmtm1bA9u7Nti3VLzmddMX3LjjyF4YXT0hLKn/ZMB2AlLWdC/PEsBAo1bXmmbw==", - "dependencies": { - "Microsoft.VisualStudio.CoreUtility": "15.0.26228", - "Microsoft.VisualStudio.OLE.Interop": "7.10.6070", - "Microsoft.VisualStudio.Utilities": "15.0.26228" - } - }, - "Microsoft.VisualStudio.Shell.Interop": { - "type": "Transitive", - "resolved": "7.10.6072", - "contentHash": "+7MhWXWaSYnTh56NVhMSMqDu7f1Xf7/yCPrM16QcBPyCTEV/l3/QPQG3xeVR9et81YeemlWFtAjA1hnskOkvVw==", - "dependencies": { - "Microsoft.VisualStudio.TextManager.Interop": "7.10.6071" - } - }, - "Microsoft.VisualStudio.Shell.Interop.10.0": { - "type": "Transitive", - "resolved": "10.0.30320", - "contentHash": "6pxD6MmXolmZBeTMnnB7rQHRap0S17fUM28odRxGNL/2XCa9w3Jn3pXUNBKmq8v0b5Ao43VOkQZfZAiP8t2gRg==", - "dependencies": { - "Microsoft.VisualStudio.Shell.Interop.8.0": "8.0.50728" - } - }, - "Microsoft.VisualStudio.Shell.Interop.11.0": { - "type": "Transitive", - "resolved": "11.0.61031", - "contentHash": "DBEBFtxFnLf7agWO/rgO/nSWZBUkTFdgHU07klrkNBbE65lKFc08sbm9hGe9LmLIoVDOAOhwiuCMphvB0wBIRg==", - "dependencies": { - "Microsoft.VisualStudio.Shell.Interop.10.0": "10.0.30320" - } - }, - "Microsoft.VisualStudio.Shell.Interop.12.0": { - "type": "Transitive", - "resolved": "12.0.30111", - "contentHash": "T7zNd9P55EbSEXDXztHTLoFeoxFYt1bq+qJdc9VwAESQk528Fm/QUy7GrtwCipJFOn0cgXUMAo6xjlT5JVJxJA==", - "dependencies": { - "Microsoft.VisualStudio.Shell.Interop.11.0": "11.0.61031" - } - }, - "Microsoft.VisualStudio.Shell.Interop.12.1.DesignTime": { - "type": "Transitive", - "resolved": "12.1.30329", - "contentHash": "RUfkSSRWVI6jC7+887uk4A2FQTBNO3XexNgCWap4ngGhjdAf4tSAmZRvja9hWHRPtJcbGdttPR6h+OQtip4Shw==", - "dependencies": { - "Microsoft.VisualStudio.SDK.EmbedInteropTypes": "15.0.16", - "Microsoft.VisualStudio.Shell.Interop.12.0": "12.0.30111" - } - }, - "Microsoft.VisualStudio.Shell.Interop.14.0.DesignTime": { - "type": "Transitive", - "resolved": "14.3.26929", - "contentHash": "MleLRfMCBppdh5vc4QTdJijbe6cdhcklu4yqzRYaEa2skvUTS1CgOykex/80gq1Iihz1hR0zRU72rUYxWxcReA==", - "dependencies": { - "Microsoft.VisualStudio.Imaging.Interop.14.0.DesignTime": "14.3.26930", - "Microsoft.VisualStudio.SDK.EmbedInteropTypes": "15.0.16", - "Microsoft.VisualStudio.Shell.Interop.12.0": "12.0.30111" - } - }, - "Microsoft.VisualStudio.Shell.Interop.15.0.DesignTime": { - "type": "Transitive", - "resolved": "15.0.26201", - "contentHash": "iq+pfcSJhwSdl3j75NrDRFqyrOIx5xJOW9yBV8sRXxyzJxihNoba/MbE0jO62ZMYGMG4+On6P7rROF8j1tMaKw==", - "dependencies": { - "Microsoft.VisualStudio.Shell.Interop": "7.10.6071", - "Microsoft.VisualStudio.Shell.Interop.12.0": "12.0.30110" - } - }, - "Microsoft.VisualStudio.Shell.Interop.8.0": { - "type": "Transitive", - "resolved": "8.0.50728", - "contentHash": "2F0OrBJg5bhw3ZPVji98I5bJSD7DWBmCfsGbl4SEoas0FPvQZCcLTrQgx5uX2WPLbjUd4ZY7Umk2JSYjDBfhtw==", - "dependencies": { - "Microsoft.VisualStudio.Shell.Interop": "7.10.6072", - "Microsoft.VisualStudio.TextManager.Interop.8.0": "8.0.50728" - } - }, - "Microsoft.VisualStudio.Shell.Interop.9.0": { - "type": "Transitive", - "resolved": "9.0.30729", - "contentHash": "Qolo2V47CYOwS44mlfCpC7ie+juK44MLBNtBxDSeImolTjvLdY8INv8PtQM1WX51XRcgQBV+g3QiSdScJTtOSQ==", - "dependencies": { - "Microsoft.VisualStudio.OLE.Interop": "7.10.6070", - "Microsoft.VisualStudio.Shell.Interop": "7.10.6071", - "Microsoft.VisualStudio.Shell.Interop.8.0": "8.0.50727", - "Microsoft.VisualStudio.TextManager.Interop": "7.10.6070" - } - }, - "Microsoft.VisualStudio.TaskRunnerExplorer.14.0": { - "type": "Transitive", - "resolved": "14.0.0", - "contentHash": "iZpAv8bEWjkyxFF1GIcSOfldqP/umopJKnJGKHa0vg8KR7ZY3u3dWtJmwO4w3abIx+176SIkQe78y5A+/Md7FA==" - }, - "Microsoft.VisualStudio.Text.Data": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "vOQc5YcN+gOUl9xRfCOXga0SEHiXz5JVKyEJZNBv4MLdNk+Bm/eFoE20pF5s4NMx5N6yg8KHn16tlfNiBPMfAw==", - "dependencies": { - "Microsoft.VisualStudio.CoreUtility": "15.0.26228" - } - }, - "Microsoft.VisualStudio.Text.Logic": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "gbpHH6z8IrQOzVlz+7S0RX1DB9Js1TtVkDIi0vtZA4OXqykBufyo21CuTGqe1A7k+kIDFV9IX9Baj+rxUqLZXA==", - "dependencies": { - "Microsoft.VisualStudio.CoreUtility": "15.0.26228", - "Microsoft.VisualStudio.Text.Data": "15.0.26228" - } - }, - "Microsoft.VisualStudio.Text.UI": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "Be6RLGQMjXwXzyEFTtohxj80cKCpNBBhbNq3Lo5Dj09J4pIsCG+ehpnZBoAKV7dOdSij5/2kc1GoKTVw9cm6/w==", - "dependencies": { - "Microsoft.VisualStudio.CoreUtility": "15.0.26228", - "Microsoft.VisualStudio.Text.Data": "15.0.26228", - "Microsoft.VisualStudio.Text.Logic": "15.0.26228" - } - }, - "Microsoft.VisualStudio.Text.UI.Wpf": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "G/GMgm2KOnsKRHcYOfJ3FeSW776JjBqaQyzjD1LTPXvf6lBWMNSFFLDjY3Q8MdoXCE28PvheP+3lWItssBy/jw==", - "dependencies": { - "Microsoft.VisualStudio.CoreUtility": "15.0.26228", - "Microsoft.VisualStudio.Text.Data": "15.0.26228", - "Microsoft.VisualStudio.Text.Logic": "15.0.26228", - "Microsoft.VisualStudio.Text.UI": "15.0.26228" - } - }, - "Microsoft.VisualStudio.TextManager.Interop": { - "type": "Transitive", - "resolved": "7.10.6071", - "contentHash": "2g+TsUdrY3ygz0j4NgPMWZWQGfFqoNYBU2RjWHQtyRxiruA6d3hsDXufY55PfvLI02gFplC5d1lG1r7JCMHQeA==", - "dependencies": { - "Microsoft.VisualStudio.OLE.Interop": "7.10.6071" - } - }, - "Microsoft.VisualStudio.TextManager.Interop.12.1.DesignTime": { - "type": "Transitive", - "resolved": "12.1.30330", - "contentHash": "dJPJ0wAv2XFLmiZdAVeZmJDnyjtudPWwDQdYV+M9VDNS2Uk4aG0EK39QTJtaPU3JkKjclK7VjF7NxKMJz+c6Sg==", - "dependencies": { - "Microsoft.VisualStudio.SDK.EmbedInteropTypes": "15.0.16" - } - }, - "Microsoft.VisualStudio.TextManager.Interop.8.0": { - "type": "Transitive", - "resolved": "8.0.50728", - "contentHash": "PmnaaYeARYBn3oJGG0w8jy6ICXKoqQMZ6xEJOiY9kMiHq28inhH0vqy1zK3U+YzgojHiGB4X2U0VJUaMKVtUaA==", - "dependencies": { - "Microsoft.VisualStudio.Shell.Interop": "7.10.6072" - } - }, - "Microsoft.VisualStudio.TextTemplating.15.0": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "OgFNoaYkp/uAizxjLQNm2KJKeV+xupcxqZfzrebxHRj4Dal3G6kDhTxwEABhgfOfJrR0BGuWKJdvn9NTH8KdEw==", - "dependencies": { - "Microsoft.VisualStudio.TextTemplating.Interfaces.10.0": "10.0.30319", - "Microsoft.VisualStudio.TextTemplating.Interfaces.11.0": "11.0.50727" - } - }, - "Microsoft.VisualStudio.TextTemplating.Interfaces.10.0": { - "type": "Transitive", - "resolved": "10.0.30319", - "contentHash": "+v2xDJNKbjOytR4ruf33T4jws+OT18EKfrx29XaFhThXbIT8n+mOh1NLL9nsmuGoEY7etBRgSIWkizVHS4W5MQ==" - }, - "Microsoft.VisualStudio.TextTemplating.Interfaces.11.0": { - "type": "Transitive", - "resolved": "11.0.50727", - "contentHash": "7352YCr0fJjylWC0RdTpQryRLAk7td/URkEsn1bMR8a2aCcedOgIeuexeKwjakWYvHnZX8W2beB66/2Xzt54+Q==", - "dependencies": { - "Microsoft.VisualStudio.TextTemplating.Interfaces.10.0": "10.0.30319" - } - }, - "Microsoft.VisualStudio.TextTemplating.Interfaces.15.0": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "GFoI+WPSw7SBtQXp1rEGMqpT6hOiC540AiSw5lKryZOqXRqeXM05Mala/nHRWPczIIDO7iy53OCouwEh430ufg==" - }, - "Microsoft.VisualStudio.TextTemplating.VSHost.15.0": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "6Ehp0Tgy74B13gz0nvpHsz7mZE7HymVaBILH8siuncuQGx51kXQrjV2MmaDz+4467q/x2g4M7Csu5+1qTSJ7vA==", - "dependencies": { - "Microsoft.VisualStudio.OLE.Interop": "7.10.6070", - "Microsoft.VisualStudio.Shell.15.0": "15.0.26228", - "Microsoft.VisualStudio.Shell.Framework": "15.0.26228", - "Microsoft.VisualStudio.Shell.Interop": "7.10.6071", - "Microsoft.VisualStudio.Shell.Interop.8.0": "8.0.50727", - "Microsoft.VisualStudio.TextTemplating.15.0": "15.0.26228", - "Microsoft.VisualStudio.TextTemplating.Interfaces.11.0": "11.0.50727" - } - }, - "Microsoft.VisualStudio.Threading": { - "type": "Transitive", - "resolved": "15.0.240", - "contentHash": "s73wFNWfQKAYZr6IhR7VIPDAHWuAGIpUeFTfSyDxtUIH7FOgGRvJZTe8hHQDvIT3OYYu50mKGUATdAuCKirr2Q==", - "dependencies": { - "Microsoft.VisualStudio.Validation": "15.0.82" - } - }, - "Microsoft.VisualStudio.Threading.Analyzers": { - "type": "Transitive", - "resolved": "16.10.56", - "contentHash": "uTvu9fbmHTtRFY5xUgG45waU+ARad0JxyG/2btOC9Su6RTo3PrGVXKU2vHDtVELqlJsnKImhMaPH3YR0XCVwDg==" - }, - "Microsoft.VisualStudio.Utilities": { - "type": "Transitive", - "resolved": "15.0.26228", - "contentHash": "sMo3p9QmkomisbvBWdbWgdbd1Y6xGLqvxG8HPjCsRKeK5x8EW8qkpo7D53Cumo2Q1cCaDSgb2si2Q2bCmZeaZg==" - }, - "Microsoft.VisualStudio.Validation": { - "type": "Transitive", - "resolved": "15.0.82", - "contentHash": "XwZyVCsHuEtnd6nYScJnA8XkXPzy4Ok0DV5/hqqAe5ccgOhJ6yap7Qh/sU/i6QxEzuYyECPYDQ7IOyEQ3yRQgQ==" - }, - "Microsoft.VisualStudio.Web.BrowserLink.12.0": { - "type": "Transitive", - "resolved": "12.0.0", - "contentHash": "HeuaZh8+wNVdwx7VF8guFGH2Z2zH+FYxWBsRNp+FjjlmrhCfM7GUQV5azaTv/bN5TPaK8ALJoP9UX5o1FB5k1A==" - }, - "Microsoft.VsSDK.CompatibilityAnalyzer": { - "type": "Transitive", - "resolved": "17.6.2164", - "contentHash": "9BqGG+sMd6SAHz5DutKyMj8s/pmZwA8L6+dluoYZarRlNb5+1uv7vwREnJ3Wtisj6wNpLxrJn4ueE7LAsOPLLw==" - }, - "Microsoft.Win32.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "9ZQKCWxH7Ijp9BfahvL2Zyf1cJIk8XYLF6Yjzr2yi0b2cOut/HQ31qf1ThHAgCc3WiZMdnWcfJCgN82/0UunxA==" - }, - "Newtonsoft.Json": { - "type": "Transitive", - "resolved": "8.0.3", - "contentHash": "KGsYQdS2zLH+H8x2cZaSI7e+YZ4SFIbyy1YJQYl6GYBWjf5o4H1A68nxyq+WTyVSOJQ4GqS/DiPE+UseUizgMg==" - }, - "stdole": { - "type": "Transitive", - "resolved": "7.0.3302", - "contentHash": "2314LjTYA+nRknLNzqKY/qrJH21jKhEp/bMTOCTPyidoVYI+3EtyI73Y91NOzCFP2OgzeYnk+uKbTWWuGIMLjA==" - }, - "System.AppContext": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "fKC+rmaLfeIzUhagxY17Q9siv/sPrjjKcfNg1Ic8IlQkZLipo8ljcaZQu4VtI4Jqbzjc2VTjzGLF6WmsRXAEgA==" - }, - "System.Collections": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3Dcj85/TBdVpL5Zr+gEEBUuFe2icOnLalmEh9hfck1PTYbbyWuZgh4fmm2ysCLTrqLQw6t3TgTyJ+VLp+Qb+Lw==" - }, - "System.Collections.Concurrent": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ztl69Xp0Y/UXCL+3v3tEU+lIy+bvjKNUmopn1wep/a291pVPK7dxBd6T7WnlQqRog+d1a/hSsgRsmFnIBKTPLQ==" - }, - "System.Collections.Immutable": { - "type": "Transitive", - "resolved": "1.3.1", - "contentHash": "n+AGX7zmiZumW9aggOkXaHzUeAS3EfeTErnkKCusyONUozbTv+kMb8VE36m+ldV6kF9g57G2c641KCdgH9E0pg==" - }, - "System.ComponentModel.Composition": { - "type": "Transitive", - "resolved": "4.5.0", - "contentHash": "+iB9FoZnfdqMEGq6np28X6YNSUrse16CakmIhV3h6PxEWt7jYxUN3Txs1D8MZhhf4QmyvK0F/EcIN0f4gGN0dA==" - }, - "System.Composition": { - "type": "Transitive", - "resolved": "1.0.31", - "contentHash": "I+D26qpYdoklyAVUdqwUBrEIckMNjAYnuPJy/h9dsQItpQwVREkDFs4b4tkBza0kT2Yk48Lcfsv2QQ9hWsh9Iw==", - "dependencies": { - "System.Composition.AttributedModel": "1.0.31", - "System.Composition.Convention": "1.0.31", - "System.Composition.Hosting": "1.0.31", - "System.Composition.Runtime": "1.0.31", - "System.Composition.TypedParts": "1.0.31" - } - }, - "System.Composition.AttributedModel": { - "type": "Transitive", - "resolved": "1.0.31", - "contentHash": "NHWhkM3ZkspmA0XJEsKdtTt1ViDYuojgSND3yHhTzwxepiwqZf+BCWuvCbjUt4fe0NxxQhUDGJ5km6sLjo9qnQ==" - }, - "System.Composition.Convention": { - "type": "Transitive", - "resolved": "1.0.31", - "contentHash": "GLjh2Ju71k6C0qxMMtl4efHa68NmWeIUYh4fkUI8xbjQrEBvFmRwMDFcylT8/PR9SQbeeL48IkFxU/+gd0nYEQ==", - "dependencies": { - "System.Composition.AttributedModel": "1.0.31" - } - }, - "System.Composition.Hosting": { - "type": "Transitive", - "resolved": "1.0.31", - "contentHash": "fN1bT4RX4vUqjbgoyuJFVUizAl2mYF5VAb+bVIxIYZSSc0BdnX+yGAxcavxJuDDCQ1K+/mdpgyEFc8e9ikjvrg==", - "dependencies": { - "System.Composition.Runtime": "1.0.31" - } - }, - "System.Composition.Runtime": { - "type": "Transitive", - "resolved": "1.0.31", - "contentHash": "0LEJN+2NVM89CE4SekDrrk5tHV5LeATltkp+9WNYrR+Huiyt0vaCqHbbHtVAjPyeLWIc8dOz/3kthRBj32wGQg==" - }, - "System.Composition.TypedParts": { - "type": "Transitive", - "resolved": "1.0.31", - "contentHash": "0Zae/FtzeFgDBBuILeIbC/T9HMYbW4olAmi8XqqAGosSOWvXfiQLfARZEhiGd0LVXaYgXr0NhxiU1LldRP1fpQ==", - "dependencies": { - "System.Composition.AttributedModel": "1.0.31", - "System.Composition.Hosting": "1.0.31", - "System.Composition.Runtime": "1.0.31" - } - }, - "System.Console": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "DHDrIxiqk1h03m6khKWV2X8p/uvN79rgSqpilL6uzpmSfxfU5ng8VcPtW4qsDsQDHiTv6IPV9TmD5M/vElPNLg==" - }, - "System.Diagnostics.Debug": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "ZUhUOdqmaG5Jk3Xdb8xi5kIyQYAA4PnTNlHx1mu9ZY3qv4ELIdKbnL/akbGaKi2RnNUWaZsAs31rvzFdewTj2g==" - }, - "System.Diagnostics.FileVersionInfo": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "omCF64wzQ3Q2CeIqkD6lmmxeMZtGHUmzgFMPjfVaOsyqpR66p/JaZzManMw1s33osoAb5gqpncsjie67+yUPHQ==" - }, - "System.Diagnostics.StackTrace": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "BiHg0vgtd35/DM9jvtaC1eKRpWZxr0gcQd643ABG7GnvSlf5pOkY2uyd42mMOJoOmKvnpNj0F4tuoS1pacTwYw==" - }, - "System.Diagnostics.Tools": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "UUvkJfSYJMM6x527dJg2VyWPSRqIVB0Z7dbjHst1zmwTXz5CcXSYJFWRpuigfbO1Lf7yfZiIaEUesfnl/g5EyA==" - }, - "System.Dynamic.Runtime": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "SNVi1E/vfWUAs/WYKhE9+qlS6KqK0YVhnlT0HQtr8pMIA8YX3lwy3uPMownDwdYISBdmAF/2holEIldVp85Wag==" - }, - "System.Globalization": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "kYdVd2f2PAdFGblzFswE4hkNANJBKRmsfa2X5LG2AcWE1c7/4t0pYae1L8vfZ5xvE2nK/R9JprtToA61OSHWIg==" - }, - "System.IO": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3qjaHvxQPDpSOYICjUoTsmoq5u6QJAFRUITgeT/4gqkF1bajbSmb1kwSxEA8AHlofqgcKJcM8udgieRNhaJ5Cg==" - }, - "System.IO.Compression": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "YHndyoiV90iu4iKG115ibkhrG+S3jBm8Ap9OwoUAzO5oPDAWcr0SFwQFm0HjM8WkEZWo0zvLTyLmbvTkW1bXgg==" - }, - "System.IO.FileSystem": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "3wEMARTnuio+ulnvi+hkRNROYwa1kylvYahhcLk4HSoVdl+xxTFVeVlYOfLwrDPImGls0mDqbMhrza8qnWPTdA==", - "dependencies": { - "System.IO.FileSystem.Primitives": "4.3.0" - } - }, - "System.IO.FileSystem.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "6QOb2XFLch7bEc4lIcJH49nJN2HV+OC3fHDgsLVsBVBk3Y4hFAnOBGzJ2lUu7CyDDFo9IBWkSsnbkT6IBwwiMw==" - }, - "System.Linq": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "5DbqIUpsDp0dFftytzuMmc0oeMdQwjcP/EWxsksIz/w1TcFRkZ3yKKz0PqiYFMmEwPSWw+qNVqD7PJ889JzHbw==" - }, - "System.Linq.Expressions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "PGKkrd2khG4CnlyJwxwwaWWiSiWFNBGlgXvJpeO0xCXrZ89ODrQ6tjEWS/kOqZ8GwEOUATtKtzp1eRgmYNfclg==" - }, - "System.Reflection": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "KMiAFoW7MfJGa9nDFNcfu+FpEdiHpWgTcS2HdMpDvt9saK3y/G4GwprPyzqjFH9NTaGPQeWNHU+iDlDILj96aQ==" - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "1.4.2", - "contentHash": "KYPNMDrLB2R+G5JJiJ2fjBpihtktKVIjsirmyyv+VDo5rQkIR9BWeCYM1wDSzbQatWNZ/NQfPsQyTB1Ui3qBfQ==", - "dependencies": { - "System.Collections.Immutable": "1.3.1" - } - }, - "System.Resources.ResourceManager": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "/zrcPkkWdZmI4F92gL/TPumP98AVDu/Wxr3CSJGQQ+XN6wbRZcyfSKVoPo17ilb3iOr0cCRqJInGwNMolqhS8A==" - }, - "System.Runtime": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "JufQi0vPQ0xGnAczR13AUFglDyVYt4Kqnz1AZaiKZ5+GICq0/1MH/mO/eAJHt/mHW1zjKBJd7kV26SrxddAhiw==" - }, - "System.Runtime.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "guW0uK0fn5fcJJ1tJVXYd7/1h5F+pea1r7FLSOz/f8vPEqbR2ZAknuRDvTQ8PzAilDveOxNjSfr0CHfIQfFk8g==" - }, - "System.Runtime.InteropServices": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "uv1ynXqiMK8mp1GM3jDqPCFN66eJ5w5XNomaK2XD+TuCroNTLFGeZ+WCmBMcBDyTFKou3P6cR6J/QsaqDp7fGQ==", - "dependencies": { - "System.Runtime": "4.3.0" - } - }, - "System.Runtime.Numerics": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "yMH+MfdzHjy17l2KESnPiF2dwq7T+xLnSJar7slyimAkUh/gTrS9/UQOtv7xarskJ2/XDSNvfLGOBQPjL7PaHQ==" - }, - "System.Security.Cryptography.Algorithms": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "W1kd2Y8mYSCgc3ULTAZ0hOP2dSdG5YauTb1089T0/kRcN2MpSAW1izOFROrJgxSlMn3ArsgHXagigyi+ibhevg==", - "dependencies": { - "System.IO": "4.3.0", - "System.Runtime": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0", - "System.Security.Cryptography.Primitives": "4.3.0" - } - }, - "System.Security.Cryptography.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "1DEWjZZly9ae9C79vFwqaO5kaOlI5q+3/55ohmq/7dpDyDfc8lYe7YVxJUZ5MF/NtbkRjwFRo14yM4OEo9EmDw==" - }, - "System.Security.Cryptography.Primitives": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "7bDIyVFNL/xKeFHjhobUAQqSpJq9YTOpbEs6mR233Et01STBMXNAc/V+BM6dwYGc95gVh/Zf+iVXWzj3mE8DWg==" - }, - "System.Security.Cryptography.X509Certificates": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "t2Tmu6Y2NtJ2um0RtcuhP7ZdNNxXEgUm2JeoA/0NvlMjAhKCnM1NX07TDl3244mVp3QU6LPEhT3HTtH1uF7IYw==", - "dependencies": { - "System.Security.Cryptography.Algorithms": "4.3.0", - "System.Security.Cryptography.Encoding": "4.3.0" - } - }, - "System.Text.Encoding": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "BiIg+KWaSDOITze6jGQynxg64naAPtqGHBwDrLaCtixsa5bKiR8dpPOHA7ge3C0JJQizJE+sfkz1wV+BAKAYZw==" - }, - "System.Text.Encoding.CodePages": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "IRiEFUa5b/Gs5Egg8oqBVoywhtOeaO2KOx3j0RfcYY/raxqBuEK7NXRDgOwtYM8qbi+7S4RPXUbNt+ZxyY0/NQ==" - }, - "System.Text.Encoding.Extensions": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "YVMK0Bt/A43RmwizJoZ22ei2nmrhobgeiYwFzC4YAN+nue8RF6djXDMog0UCn+brerQoYVyaS+ghy9P/MUVcmw==" - }, - "System.Threading": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "VkUS0kOBcUf3Wwm0TSbrevDDZ6BlM+b/HRiapRFWjM5O0NS0LviG0glKmFK+hhPDd1XFeSdU1GmlLhb2CoVpIw==" - }, - "System.Threading.Tasks": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "LbSxKEdOUhVe8BezB/9uOGGppt+nZf6e1VFyw6v3DN6lqitm0OSn2uXMOdtP0M3W4iMcqcivm2J6UgqiwwnXiA==" - }, - "System.Threading.Tasks.Parallel": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "cbjBNZHf/vQCfcdhzx7knsiygoCKgxL8mZOeocXZn5gWhCdzHIq6bYNKWX0LAJCWYP7bds4yBK8p06YkP0oa0g==" - }, - "System.Threading.Thread": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "OHmbT+Zz065NKII/ZHcH9XO1dEuLGI1L2k7uYss+9C1jLxTC9kTZZuzUOyXHayRk+dft9CiDf3I/QZ0t8JKyBQ==" - }, - "System.ValueTuple": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "cNLEvBX3d6MMQRZe3SMFNukVbitDAEpVZO17qa0/2FHxZ7Y7PpFRpr6m2615XYM/tYYYf0B+WyHNujqIw8Luwg==" - }, - "System.Xml.ReaderWriter": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "GrprA+Z0RUXaR4N7/eW71j1rgMnEnEVlgii49GZyAjTH7uliMnrOU3HNFBr6fEDBCJCIdlVNq9hHbaDR621XBA==" - }, - "System.Xml.XDocument": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "5zJ0XDxAIg8iy+t4aMnQAu0MqVbqyvfoUVl1yDV61xdo3Vth45oA2FoY4pPkxYAH5f8ixpmTqXeEIya95x0aCQ==" - }, - "System.Xml.XmlDocument": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "lJ8AxvkX7GQxpC6GFCeBj8ThYVyQczx2+f/cWHJU8tjS7YfI6Cv6bon70jVEgs2CiFbmmM8b9j1oZVx0dSI2Ww==" - }, - "System.Xml.XPath": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "v1JQ5SETnQusqmS3RwStF7vwQ3L02imIzl++sewmt23VGygix04pEH+FCj1yWb+z4GDzKiljr1W7Wfvrx0YwgA==" - }, - "System.Xml.XPath.XDocument": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "jw9oHHEIVW53mHY9PgrQa98Xo2IZ0ZjrpdOTmtvk+Rvg4tq7dydmxdNqUvJ5YwjDqhn75mBXWttWjiKhWP53LQ==", - "dependencies": { - "System.Xml.XPath": "4.3.0" - } - }, - "VSLangProj": { - "type": "Transitive", - "resolved": "7.0.3301", - "contentHash": "J4ehf4H38FQmgqda7d//s7n7sQb0q8X0u1PYN2nwTkgaIHK/+0u7LfCrgfa9t8VYueZbgSrtJNeeQHxGzXuIiQ==", - "dependencies": { - "EnvDTE": "8.0.2" - } - }, - "VSLangProj100": { - "type": "Transitive", - "resolved": "10.0.30320", - "contentHash": "c1t1WtXDuJQUHIIg4+8/jBdShIgAWWtbNiZKCFbwcZFpUlRo3ylrwaDmy72USPXcdDpjo9Uwjr49dd+cMASmdw==" - }, - "VSLangProj110": { - "type": "Transitive", - "resolved": "11.0.61031", - "contentHash": "YWY6SmLLB7tu19PVYAXPl7IsN7uY8DMMCp2AmQp6KThw6HO/c94ziqy6Z+dyVPL/u1ubj8qyiFowbYt85/QISA==", - "dependencies": { - "VSLangProj80": "8.0.50728", - "VSLangProj90": "9.0.30730" - } - }, - "VSLangProj140": { - "type": "Transitive", - "resolved": "14.0.25030", - "contentHash": "2q8fycwqph6KOU8z2z+gNf92H/OSdN3vl7U0Y9yw9kBhr95ZXux4bUpEEn2nf1T31RtRUfNDGO4fViLWeuZcfg==", - "dependencies": { - "VSLangProj80": "8.0.50728" - } - }, - "VSLangProj150": { - "type": "Transitive", - "resolved": "15.0.26229", - "contentHash": "CTziuvrAgyv0hHlfkKzP/vCDrMkFjianXSGsHjQWQWPT0gcjrduxGn5IK5LgmxHgMVI4f+7V1sPACbZBGle+WA==" - }, - "VSLangProj2": { - "type": "Transitive", - "resolved": "7.0.5001", - "contentHash": "M3/sA+tzxK9DPnE4VCaSM+tSrZEKj3WqnyEqxkukEmBWzBmf7obYnQgYAT3Rw1hNZjQ/KYeibnG+IrT+B4yKrg==", - "dependencies": { - "VSLangProj": "7.0.3301" - } - }, - "VSLangProj80": { - "type": "Transitive", - "resolved": "8.0.50728", - "contentHash": "LLC2ipldip9JJCkOCwRlX7IlBHZAVc6yDWgKVEgWfX/5tdsrod/gZ3NOh+2f4Omqo6VHcps9afoLTunHRISiEw==", - "dependencies": { - "VSLangProj2": "7.0.5001" - } - }, - "VSLangProj90": { - "type": "Transitive", - "resolved": "9.0.30730", - "contentHash": "3SXRUT8dV5zcHxED1e6vuPmBBj7rjPbOHBBHYVwDE+RADL2T2FBtKhx2kvbzxJU+Wlr7zdyjmkiGXn7thesIEg==" - } - } - } -} \ No newline at end of file diff --git a/ILSpy.AddIn/source.extension.vsixmanifest.template b/ILSpy.AddIn/source.extension.vsixmanifest.template deleted file mode 100644 index d5d86893c..000000000 --- a/ILSpy.AddIn/source.extension.vsixmanifest.template +++ /dev/null @@ -1,24 +0,0 @@ - - - - - ILSpy - Integrates the ILSpy decompiler into Visual Studio. - https://github.com/icsharpcode/ILSpy/ - LICENSE - ILSpy-Large.ico - - - - - - - - - - - - - - - diff --git a/ILSpy.VSExtensions.sln b/ILSpy.VSExtensions.sln deleted file mode 100644 index 7405a025e..000000000 --- a/ILSpy.VSExtensions.sln +++ /dev/null @@ -1,38 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.7.33808.371 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "ILSpy.AddIn.Shared", "ILSpy.AddIn.Shared\ILSpy.AddIn.Shared.shproj", "{ACAB1E5D-B3DF-4092-AA72-692F8341E520}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ILSpy.AddIn", "ILSpy.AddIn\ILSpy.AddIn.csproj", "{A1B6B501-15D4-4237-A4C3-5EFCB71B0F74}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ILSpy.AddIn.VS2022", "ILSpy.AddIn.VS2022\ILSpy.AddIn.VS2022.csproj", "{31E6E2B0-24B4-4D2C-AC17-3B44DAACC9D4}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {A1B6B501-15D4-4237-A4C3-5EFCB71B0F74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {A1B6B501-15D4-4237-A4C3-5EFCB71B0F74}.Debug|Any CPU.Build.0 = Debug|Any CPU - {A1B6B501-15D4-4237-A4C3-5EFCB71B0F74}.Release|Any CPU.ActiveCfg = Release|Any CPU - {A1B6B501-15D4-4237-A4C3-5EFCB71B0F74}.Release|Any CPU.Build.0 = Release|Any CPU - {31E6E2B0-24B4-4D2C-AC17-3B44DAACC9D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {31E6E2B0-24B4-4D2C-AC17-3B44DAACC9D4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {31E6E2B0-24B4-4D2C-AC17-3B44DAACC9D4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {31E6E2B0-24B4-4D2C-AC17-3B44DAACC9D4}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {84D734FE-9E9C-4593-8927-6F45FE3E460A} - EndGlobalSection - GlobalSection(SharedMSBuildProjectFiles) = preSolution - ILSpy.AddIn.Shared\ILSpy.AddIn.Shared.projitems*{31e6e2b0-24b4-4d2c-ac17-3b44daacc9d4}*SharedItemsImports = 5 - ILSpy.AddIn.Shared\ILSpy.AddIn.Shared.projitems*{a1b6b501-15d4-4237-a4c3-5efcb71b0f74}*SharedItemsImports = 5 - ILSpy.AddIn.Shared\ILSpy.AddIn.Shared.projitems*{acab1e5d-b3df-4092-aa72-692f8341e520}*SharedItemsImports = 13 - EndGlobalSection -EndGlobal diff --git a/ILSpy.VSExtensions.slnx b/ILSpy.VSExtensions.slnx new file mode 100644 index 000000000..4ff7e28e9 --- /dev/null +++ b/ILSpy.VSExtensions.slnx @@ -0,0 +1,5 @@ + + + + + diff --git a/ILSpy/Commands/AboutCommand.cs b/ILSpy/Commands/AboutCommand.cs index 35fa74f9e..bebc0c4f7 100644 --- a/ILSpy/Commands/AboutCommand.cs +++ b/ILSpy/Commands/AboutCommand.cs @@ -101,6 +101,7 @@ namespace ICSharpCode.ILSpy.Commands var output = new AvaloniaEditTextOutput { Title = Resources.About }; output.WriteLine(Resources.ILSpyVersion + DecompilerVersionInfo.FullVersionWithCommitHash); output.WriteLine(Resources.NETFrameworkVersion + GetDotnetProductVersion()); + output.WriteLine(Resources.ILSpyStartedFrom + GetStartupPath()); output.WriteLine(); output.AddUIElement(BuildUpdateSection); output.WriteLine(); @@ -224,6 +225,17 @@ namespace ICSharpCode.ILSpy.Commands return typeof(object).Assembly.GetName().Version?.ToString() ?? "UNKNOWN"; } + static string GetStartupPath() + { + // The full path of the executable that launched this process (ilspy.exe). On the rare + // host where Environment.ProcessPath is unavailable, fall back to the application's base + // directory (the folder ILSpy's binaries were published to). + var processPath = Environment.ProcessPath; + if (!string.IsNullOrWhiteSpace(processPath)) + return processPath; + return AppContext.BaseDirectory; + } + } /// diff --git a/ILSpy/ILSpy.csproj b/ILSpy/ILSpy.csproj index e31d6287c..86b8bb5ab 100644 --- a/ILSpy/ILSpy.csproj +++ b/ILSpy/ILSpy.csproj @@ -199,7 +199,6 @@ - diff --git a/ILSpy/Properties/Resources.Designer.cs b/ILSpy/Properties/Resources.Designer.cs index 05680eefe..11f9cb5cf 100644 --- a/ILSpy/Properties/Resources.Designer.cs +++ b/ILSpy/Properties/Resources.Designer.cs @@ -2046,6 +2046,15 @@ namespace ICSharpCode.ILSpy.Properties { } } + /// + /// Looks up a localized string similar to ILSpy started from . + /// + public static string ILSpyStartedFrom { + get { + return ResourceManager.GetString("ILSpyStartedFrom", resourceCulture); + } + } + /// /// Looks up a localized string similar to ILSpy version . /// diff --git a/ILSpy/Properties/Resources.resx b/ILSpy/Properties/Resources.resx index d8da3de50..80ff70b62 100644 --- a/ILSpy/Properties/Resources.resx +++ b/ILSpy/Properties/Resources.resx @@ -708,6 +708,9 @@ Are you sure you want to continue? ILSpyAboutPage.txt + + ILSpy started from + ILSpy version diff --git a/README.md b/README.md index 103a5c3c0..9b12df9a8 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ How to build - Execute `git submodule update --init --recursive` to download the ILSpy-Tests submodule (used by some test cases). - Install Visual Studio (documented version: 18.0/2026). You need the following workload components: - Workload ".NET Desktop Development". This workload includes the .NET Framework 4.8 SDK and the .NET Framework 4.7.2 targeting pack, as well as the [.NET 10.0 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) (ILSpy.csproj targets .NET 10.0, but we have net472 projects too). Our unit tests require [.NET 11.0 SDK](https://dotnet.microsoft.com/download/dotnet/11.0). - - Workload "Visual Studio extension development" (Note: ILSpy.VSExtensions.sln is separate from ILSpy.sln and thus this workload is optional) + - Workload "Visual Studio extension development" (Note: ILSpy.VSExtensions.slnx is separate from ILSpy.sln and thus this workload is optional) - Individual Component "MSVC v143 - VS 2022 C++ x64/x86 build tools" (or similar) - _The VC++ toolset is optional_; if present it is used for `editbin.exe` to modify the stack size used by ILSpy.exe from 1MB to 16MB, because the decompiler makes heavy use of recursion, where small stack sizes lead to problems in very complex methods. - Open ILSpy.sln in Visual Studio. @@ -59,7 +59,7 @@ How to build - If you are only interested in a specific subset of ILSpy, you can also use - ILSpy.Desktop.slnf: for the cross-platform Avalonia UI and its tests - ILSpy.XPlat.slnf: for the cross-platform CLI (ilspycmd) or PowerShell cmdlets - - ILSpy.VSExtensions.sln: for the Visual Studio extensions + - ILSpy.VSExtensions.slnx: for the Visual Studio extensions **Note:** Visual Studio includes a version of the .NET SDK that is managed by the Visual Studio installer - once you update, it may get upgraded too. Please note that ILSpy is only compatible with the .NET 11.0 SDK and Visual Studio will refuse to load some projects in the solution (and unit tests will fail). diff --git a/publishlocaldev.ps1 b/publishlocaldev.ps1 index 47dc31c0b..ce187d251 100644 --- a/publishlocaldev.ps1 +++ b/publishlocaldev.ps1 @@ -1,11 +1,15 @@ # For local development of the VSIX package - build and publish (VS2022 also needs arm64) -$output_x64 = "./ILSpy/bin/Release/net10.0/win-x64/publish/fwdependent" +$configuration = "Debug" -dotnet publish ./ILSpy/ILSpy.csproj -c Release --no-restore --no-self-contained -r win-x64 -o $output_x64 -dotnet publish ./ILSpy.ReadyToRun/ILSpy.ReadyToRun.csproj -c Release --no-restore --no-self-contained -r win-x64 -o $output_x64 +dotnet build ./ILSpy.sln -c $configuration -$output_arm64 = "./ILSpy/bin/Release/net10.0/win-arm64/publish/fwdependent" +$output_x64 = "./ILSpy/bin/$configuration/net10.0/win-x64/publish/fwdependent" -dotnet publish ./ILSpy/ILSpy.csproj -c Release --no-restore --no-self-contained -r win-arm64 -o $output_arm64 -dotnet publish ./ILSpy.ReadyToRun/ILSpy.ReadyToRun.csproj -c Release --no-restore --no-self-contained -r win-arm64 -o $output_arm64 \ No newline at end of file +dotnet publish ./ILSpy/ILSpy.csproj -c $configuration --no-restore --no-self-contained -r win-x64 -o $output_x64 +dotnet publish ./ILSpy.ReadyToRun/ILSpy.ReadyToRun.csproj -c $configuration --no-restore --no-self-contained -r win-x64 -o $output_x64 + +$output_arm64 = "./ILSpy/bin/$configuration/net10.0/win-arm64/publish/fwdependent" + +dotnet publish ./ILSpy/ILSpy.csproj -c $configuration --no-restore --no-self-contained -r win-arm64 -o $output_arm64 +dotnet publish ./ILSpy.ReadyToRun/ILSpy.ReadyToRun.csproj -c $configuration --no-restore --no-self-contained -r win-arm64 -o $output_arm64 \ No newline at end of file