Getting MVVM in

This commit is contained in:
Clint Rutkas
2024-09-17 12:17:14 -07:00
parent 355762629f
commit 40ef2547ee
27 changed files with 671 additions and 0 deletions

View File

@@ -0,0 +1,17 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using CommunityToolkit.Mvvm.ComponentModel;
namespace Microsoft.CmdPal.UI.ViewModels;
public partial class ListItemViewModel : ObservableObject
{
// Observable from MVVM Toolkit will auto create public properties that use inotifyproperty change
[ObservableProperty]
private string _header = string.Empty;
[ObservableProperty]
private string _subheader = string.Empty;
}

View File

@@ -0,0 +1,27 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System.Collections.ObjectModel;
using System.Diagnostics;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
namespace Microsoft.CmdPal.UI.ViewModels;
public partial class ListViewModel : ObservableObject
{
// Observable from MVVM Toolkit will auto create public properties that use inotifyproperty change
[ObservableProperty]
private ObservableCollection<ListItemViewModel> _items = [];
// InvokeItemCommand is what this will be in Xaml due to source generator
[RelayCommand]
private void InvokeItem(ListItemViewModel item)
{
WeakReferenceMessenger.Default.Send<NavigateToDetailsMessage>(new(item));
Debug.WriteLine("Hello!" + item.Header);
}
}

View File

@@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\Common.Dotnet.CsWinRT.props" />
<PropertyGroup>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CommunityToolkit.Mvvm" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,9 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
namespace Microsoft.CmdPal.UI.ViewModels;
public record NavigateBackMessage()
{
}

View File

@@ -0,0 +1,11 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
namespace Microsoft.CmdPal.UI.ViewModels;
// Want to know what a record is? here is a TLDR
// https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/record
public record NavigateToDetailsMessage(ListItemViewModel ListItem)
{
}

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<Application
x:Class="Microsoft.CmdPal.UI.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Microsoft.CmdPal.UI">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
<!-- Other merged dictionaries here -->
</ResourceDictionary.MergedDictionaries>
<!-- Other app resources here -->
</ResourceDictionary>
</Application.Resources>
</Application>

View File

@@ -0,0 +1,53 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using Microsoft.UI.Xaml.Shapes;
using Windows.ApplicationModel;
using Windows.ApplicationModel.Activation;
using Windows.Foundation;
using Windows.Foundation.Collections;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
namespace Microsoft.CmdPal.UI;
/// <summary>
/// Provides application-specific behavior to supplement the default Application class.
/// </summary>
public partial class App : Application
{
/// <summary>
/// Initializes a new instance of the <see cref="App"/> class.
/// Initializes the singleton application object. This is the first line of authored code
/// executed, and as such is the logical equivalent of main() or WinMain().
/// </summary>
public App()
{
this.InitializeComponent();
}
/// <summary>
/// Invoked when the application is launched.
/// </summary>
/// <param name="args">Details about the launch request and process.</param>
protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs args)
{
_window = new MainWindow();
_window.Activate();
}
private Window? _window;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 432 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 456 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<Page
x:Class="Microsoft.CmdPal.UI.ListDetailPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Microsoft.CmdPal.UI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid>
<!-- not using Interactivity:Interaction.Behaviors due to wanting to do AoT -->
<TextBlock Text="{x:Bind ViewModel.Header}" />
<Button Click="Button_Click">Go Back</Button>
</Grid>
</Page>

View File

@@ -0,0 +1,49 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.CmdPal.UI.ViewModels;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using Windows.Foundation;
using Windows.Foundation.Collections;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
namespace Microsoft.CmdPal.UI;
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class ListDetailPage : Page
{
public ListItemViewModel ViewModel { get; set; } = new ListItemViewModel();
public ListDetailPage()
{
this.InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
ViewModel = (ListItemViewModel)e.Parameter;
base.OnNavigatedTo(e);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
WeakReferenceMessenger.Default.Send<NavigateBackMessage>();
}
}

View File

@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="utf-8"?>
<Page
x:Class="Microsoft.CmdPal.UI.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Microsoft.CmdPal.UI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewmodels="using:Microsoft.CmdPal.UI.ViewModels"
xmlns:Interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:Interactions="using:Microsoft.Xaml.Interactions.Core"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Page.Resources>
<!-- https://learn.microsoft.com/en-us/windows/apps/design/controls/itemsview#specify-the-look-of-the-items -->
<DataTemplate x:Key="ListItemViewModelTemplate" x:DataType="viewmodels:ListItemViewModel">
<ItemContainer
AutomationProperties.Name="{x:Bind Header}">
<StackPanel
Orientation="Horizontal"
Background="{ThemeResource SystemControlBackgroundBaseMediumBrush}">
<TextBlock
Text="{x:Bind Header}" />
<TextBlock
Text="{x:Bind Subheader}"
Foreground="{ThemeResource SystemAccentColor}"/>
</StackPanel>
</ItemContainer>
</DataTemplate>
</Page.Resources>
<Grid>
<!-- not using Interactivity:Interaction.Behaviors due to wanting to do AoT -->
<ItemsView
IsItemInvokedEnabled="True"
ItemsSource="{x:Bind ViewModel.Items}"
ItemTemplate="{StaticResource ListItemViewModelTemplate}"
ItemInvoked="ItemsView_ItemInvoked" />
</Grid>
</Page>

View File

@@ -0,0 +1,52 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Microsoft.CmdPal.UI.ViewModels;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using Windows.Foundation;
using Windows.Foundation.Collections;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
namespace Microsoft.CmdPal.UI;
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public ListViewModel ViewModel { get; set; } = new();
public MainPage()
{
this.InitializeComponent();
ViewModel.Items.Add(new ListItemViewModel { Header = "Hello", Subheader = "World" });
ViewModel.Items.Add(new ListItemViewModel { Header = "Clint", Subheader = "Rutkas" });
ViewModel.Items.Add(new ListItemViewModel { Header = "Michael", Subheader = "Hawker" });
}
private void MyButton_Click(object sender, RoutedEventArgs e)
{
// myButton.Content = "Clicked";
}
private void ItemsView_ItemInvoked(ItemsView sender, ItemsViewItemInvokedEventArgs args)
{
if (args.InvokedItem is ListItemViewModel item)
{
ViewModel.InvokeItemCommand.Execute(item);
}
}
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<Window
x:Class="Microsoft.CmdPal.UI.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Microsoft.CmdPal.UI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewmodels="using:Microsoft.CmdPal.UI.ViewModels"
mc:Ignorable="d">
<Frame Name="RootFrame" />
</Window>

View File

@@ -0,0 +1,53 @@
// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.CmdPal.UI.ViewModels;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Controls.Primitives;
using Microsoft.UI.Xaml.Data;
using Microsoft.UI.Xaml.Input;
using Microsoft.UI.Xaml.Media;
using Microsoft.UI.Xaml.Navigation;
using Windows.Foundation;
using Windows.Foundation.Collections;
// To learn more about WinUI, the WinUI project structure,
// and more about our project templates, see: http://aka.ms/winui-project-info.
namespace Microsoft.CmdPal.UI;
/// <summary>
/// An empty window that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainWindow : Window, IRecipient<NavigateToDetailsMessage>, IRecipient<NavigateBackMessage>
{
public MainWindow()
{
InitializeComponent();
// how we are doing navigation around
WeakReferenceMessenger.Default.RegisterAll(this);
RootFrame.Navigate(typeof(MainPage));
}
public void Receive(NavigateToDetailsMessage message)
{
RootFrame.Navigate(typeof(ListDetailPage), message.ListItem);
}
public void Receive(NavigateBackMessage message)
{
if (RootFrame.CanGoBack)
{
RootFrame.GoBack();
}
}
}

View File

@@ -0,0 +1,65 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\Common.Dotnet.CsWinRT.props" />
<PropertyGroup>
<OutputType>WinExe</OutputType>
<RootNamespace>Microsoft.CmdPal.UI</RootNamespace>
<ApplicationManifest>app.manifest</ApplicationManifest>
<PublishProfile>win-$(Platform).pubxml</PublishProfile>
<UseWinUI>true</UseWinUI>
<EnableMsixTooling>true</EnableMsixTooling>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<None Remove="ListDetailPage.xaml" />
<None Remove="MainPage.xaml" />
</ItemGroup>
<ItemGroup>
<Content Include="Assets\SplashScreen.scale-200.png" />
<Content Include="Assets\LockScreenLogo.scale-200.png" />
<Content Include="Assets\Square150x150Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.scale-200.png" />
<Content Include="Assets\Square44x44Logo.targetsize-24_altform-unplated.png" />
<Content Include="Assets\StoreLogo.png" />
<Content Include="Assets\Wide310x150Logo.scale-200.png" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" />
<PackageReference Include="Microsoft.WindowsAppSDK" />
<PackageReference Include="Microsoft.Xaml.Behaviors.WinUI.Managed" />
<Manifest Include="$(ApplicationManifest)" />
</ItemGroup>
<!--
Defining the "Msix" ProjectCapability here allows the Single-project MSIX Packaging
Tools extension to be activated for this project even if the Windows App SDK Nuget
package has not yet been restored.
-->
<ItemGroup Condition="'$(DisableMsixProjectCapabilityAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
<ProjectCapability Include="Msix" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Microsoft.CmdPal.UI.ViewModels\Microsoft.CmdPal.UI.ViewModels.csproj" />
</ItemGroup>
<ItemGroup>
<Page Update="ListDetailPage.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Page Update="MainPage.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<!--
Defining the "HasPackageAndPublishMenuAddedByProject" property here allows the Solution
Explorer "Package and Publish" context menu entry to be enabled for this project even if
the Windows App SDK Nuget package has not yet been restored.
-->
<PropertyGroup Condition="'$(DisableHasPackageAndPublishMenuAddedByProject)'!='true' and '$(EnableMsixTooling)'=='true'">
<HasPackageAndPublishMenu>true</HasPackageAndPublishMenu>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap rescap">
<Identity
Name="69b8faa1-5ada-484f-999d-4998c7ff2082"
Publisher="CN=crutkas"
Version="1.0.0.0" />
<mp:PhoneIdentity PhoneProductId="69b8faa1-5ada-484f-999d-4998c7ff2082" PhonePublisherId="00000000-0000-0000-0000-000000000000"/>
<Properties>
<DisplayName>Microsoft.CmdPal.UI</DisplayName>
<PublisherDisplayName>crutkas</PublisherDisplayName>
<Logo>Assets\StoreLogo.png</Logo>
</Properties>
<Dependencies>
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
</Dependencies>
<Resources>
<Resource Language="x-generate"/>
</Resources>
<Applications>
<Application Id="App"
Executable="$targetnametoken$.exe"
EntryPoint="$targetentrypoint$">
<uap:VisualElements
DisplayName="Microsoft.CmdPal.UI"
Description="Microsoft.CmdPal.UI"
BackgroundColor="transparent"
Square150x150Logo="Assets\Square150x150Logo.png"
Square44x44Logo="Assets\Square44x44Logo.png">
<uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" />
<uap:SplashScreen Image="Assets\SplashScreen.png" />
</uap:VisualElements>
</Application>
</Applications>
<Capabilities>
<rescap:Capability Name="runFullTrust" />
</Capabilities>
</Package>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishProtocol>FileSystem</PublishProtocol>
<Platform>ARM64</Platform>
<RuntimeIdentifier Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) >= 8">win-arm64</RuntimeIdentifier>
<RuntimeIdentifier Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &lt; 8">win10-arm64</RuntimeIdentifier>
<PublishDir>bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\</PublishDir>
<SelfContained>true</SelfContained>
<PublishSingleFile>False</PublishSingleFile>
<PublishReadyToRun Condition="'$(Configuration)' == 'Debug'">False</PublishReadyToRun>
<PublishReadyToRun Condition="'$(Configuration)' != 'Debug'">True</PublishReadyToRun>
<PublishTrimmed Condition="'$(Configuration)' == 'Debug'">False</PublishTrimmed>
<PublishTrimmed Condition="'$(Configuration)' != 'Debug'">True</PublishTrimmed>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishProtocol>FileSystem</PublishProtocol>
<Platform>x64</Platform>
<RuntimeIdentifier Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) >= 8">win-x64</RuntimeIdentifier>
<RuntimeIdentifier Condition="$([MSBuild]::GetTargetFrameworkVersion('$(TargetFramework)')) &lt; 8">win10-x64</RuntimeIdentifier>
<PublishDir>bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\</PublishDir>
<SelfContained>true</SelfContained>
<PublishSingleFile>False</PublishSingleFile>
<PublishReadyToRun Condition="'$(Configuration)' == 'Debug'">False</PublishReadyToRun>
<PublishReadyToRun Condition="'$(Configuration)' != 'Debug'">True</PublishReadyToRun>
<PublishTrimmed Condition="'$(Configuration)' == 'Debug'">False</PublishTrimmed>
<PublishTrimmed Condition="'$(Configuration)' != 'Debug'">True</PublishTrimmed>
</PropertyGroup>
</Project>

View File

@@ -0,0 +1,10 @@
{
"profiles": {
"Microsoft.CmdPal.UI (Package)": {
"commandName": "MsixPackage"
},
"Microsoft.CmdPal.UI (Unpackaged)": {
"commandName": "Project"
}
}
}

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="Microsoft.CmdPal.UI.app"/>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
<application>
<!-- The ID below informs the system that this application is compatible with OS features first introduced in Windows 10.
It is necessary to support features in unpackaged applications, for example the custom titlebar implementation.
For more info see https://docs.microsoft.com/windows/apps/windows-app-sdk/use-windows-app-sdk-run-time#declare-os-compatibility-in-your-application-manifest -->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2</dpiAwareness>
</windowsSettings>
</application>
</assembly>

View File

@@ -42,12 +42,18 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SSHKeychainExtension", "ext
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SamplePagesExtension", "exts\SamplePagesExtension\SamplePagesExtension.csproj", "{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CmdPal.UI", "Microsoft.CmdPal.UI\Microsoft.CmdPal.UI.csproj", "{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.CmdPal.UI.ViewModels", "Microsoft.CmdPal.UI.ViewModels\Microsoft.CmdPal.UI.ViewModels.csproj", "{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Debug|ARM64.ActiveCfg = Debug|ARM64
@@ -56,148 +62,260 @@ Global
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Debug|x64.ActiveCfg = Debug|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Debug|x64.Build.0 = Debug|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Debug|x64.Deploy.0 = Debug|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Debug|x86.ActiveCfg = Debug|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Debug|x86.Build.0 = Debug|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Debug|x86.Deploy.0 = Debug|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Release|ARM64.ActiveCfg = Release|ARM64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Release|ARM64.Build.0 = Release|ARM64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Release|ARM64.Deploy.0 = Release|ARM64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Release|x64.ActiveCfg = Release|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Release|x64.Build.0 = Release|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Release|x64.Deploy.0 = Release|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Release|x86.ActiveCfg = Release|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Release|x86.Build.0 = Release|x64
{F71CF22B-A5C7-4328-A5B3-F4191AE57314}.Release|x86.Deploy.0 = Release|x64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|ARM64.ActiveCfg = Debug|ARM64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|ARM64.Build.0 = Debug|ARM64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x64.ActiveCfg = Debug|x64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x64.Build.0 = Debug|x64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x86.ActiveCfg = Debug|x64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Debug|x86.Build.0 = Debug|x64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|ARM64.ActiveCfg = Release|ARM64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|ARM64.Build.0 = Release|ARM64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x64.ActiveCfg = Release|x64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x64.Build.0 = Release|x64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x86.ActiveCfg = Release|x64
{6515F03F-E56D-4DB4-B23D-AC4FB80DB36F}.Release|x86.Build.0 = Release|x64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Debug|ARM64.ActiveCfg = Debug|ARM64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Debug|ARM64.Build.0 = Debug|ARM64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Debug|x64.ActiveCfg = Debug|x64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Debug|x64.Build.0 = Debug|x64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Debug|x86.ActiveCfg = Debug|x64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Debug|x86.Build.0 = Debug|x64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Release|ARM64.ActiveCfg = Release|ARM64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Release|ARM64.Build.0 = Release|ARM64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Release|x64.ActiveCfg = Release|x64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Release|x64.Build.0 = Release|x64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Release|x86.ActiveCfg = Release|x64
{305DD37E-C85D-4B08-AAFE-7381FA890463}.Release|x86.Build.0 = Release|x64
{79060D06-7174-4D66-8D0B-4FF021154049}.Debug|ARM64.ActiveCfg = Debug|arm64
{79060D06-7174-4D66-8D0B-4FF021154049}.Debug|ARM64.Build.0 = Debug|arm64
{79060D06-7174-4D66-8D0B-4FF021154049}.Debug|x64.ActiveCfg = Debug|x64
{79060D06-7174-4D66-8D0B-4FF021154049}.Debug|x64.Build.0 = Debug|x64
{79060D06-7174-4D66-8D0B-4FF021154049}.Debug|x86.ActiveCfg = Debug|x86
{79060D06-7174-4D66-8D0B-4FF021154049}.Debug|x86.Build.0 = Debug|x86
{79060D06-7174-4D66-8D0B-4FF021154049}.Release|ARM64.ActiveCfg = Release|arm64
{79060D06-7174-4D66-8D0B-4FF021154049}.Release|ARM64.Build.0 = Release|arm64
{79060D06-7174-4D66-8D0B-4FF021154049}.Release|x64.ActiveCfg = Release|x64
{79060D06-7174-4D66-8D0B-4FF021154049}.Release|x64.Build.0 = Release|x64
{79060D06-7174-4D66-8D0B-4FF021154049}.Release|x86.ActiveCfg = Release|x86
{79060D06-7174-4D66-8D0B-4FF021154049}.Release|x86.Build.0 = Release|x86
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Debug|ARM64.ActiveCfg = Debug|arm64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Debug|ARM64.Build.0 = Debug|arm64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Debug|x64.ActiveCfg = Debug|x64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Debug|x64.Build.0 = Debug|x64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Debug|x86.ActiveCfg = Debug|x64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Debug|x86.Build.0 = Debug|x64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Release|ARM64.ActiveCfg = Release|arm64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Release|ARM64.Build.0 = Release|arm64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Release|x64.ActiveCfg = Release|x64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Release|x64.Build.0 = Release|x64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Release|x86.ActiveCfg = Release|x64
{05CDE6EE-23AE-42AF-A9F5-E398C382675F}.Release|x86.Build.0 = Release|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|ARM64.ActiveCfg = Debug|ARM64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|ARM64.Build.0 = Debug|ARM64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|ARM64.Deploy.0 = Debug|ARM64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|x64.ActiveCfg = Debug|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|x64.Build.0 = Debug|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|x64.Deploy.0 = Debug|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|x86.ActiveCfg = Debug|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|x86.Build.0 = Debug|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Debug|x86.Deploy.0 = Debug|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|ARM64.ActiveCfg = Release|ARM64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|ARM64.Build.0 = Release|ARM64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|ARM64.Deploy.0 = Release|ARM64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|x64.ActiveCfg = Release|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|x64.Build.0 = Release|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|x64.Deploy.0 = Release|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|x86.ActiveCfg = Release|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|x86.Build.0 = Release|x64
{57617906-DEC8-4D62-A270-6EBE3F8E5C0D}.Release|x86.Deploy.0 = Release|x64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|ARM64.ActiveCfg = Debug|ARM64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|ARM64.Build.0 = Debug|ARM64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|x64.ActiveCfg = Debug|x64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|x64.Build.0 = Debug|x64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|x86.ActiveCfg = Debug|x64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|x86.Build.0 = Debug|x64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Debug|x86.Deploy.0 = Debug|x64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|ARM64.ActiveCfg = Release|ARM64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|ARM64.Build.0 = Release|ARM64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|x64.ActiveCfg = Release|x64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|x64.Build.0 = Release|x64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|x86.ActiveCfg = Release|x64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|x86.Build.0 = Release|x64
{1A506BBA-06A9-476E-B5D3-1495F299D53F}.Release|x86.Deploy.0 = Release|x64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|ARM64.ActiveCfg = Debug|ARM64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|ARM64.Build.0 = Debug|ARM64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|x64.ActiveCfg = Debug|x64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|x64.Build.0 = Debug|x64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|x86.ActiveCfg = Debug|x64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|x86.Build.0 = Debug|x64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Debug|x86.Deploy.0 = Debug|x64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|ARM64.ActiveCfg = Release|ARM64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|ARM64.Build.0 = Release|ARM64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|x64.ActiveCfg = Release|x64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|x64.Build.0 = Release|x64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|x86.ActiveCfg = Release|x64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|x86.Build.0 = Release|x64
{D08AE85F-B6FE-4E1C-8402-DB396B70D6DA}.Release|x86.Deploy.0 = Release|x64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|ARM64.ActiveCfg = Debug|ARM64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|ARM64.Build.0 = Debug|ARM64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|x64.ActiveCfg = Debug|x64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|x64.Build.0 = Debug|x64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|x86.ActiveCfg = Debug|x64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|x86.Build.0 = Debug|x64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Debug|x86.Deploy.0 = Debug|x64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|ARM64.ActiveCfg = Release|ARM64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|ARM64.Build.0 = Release|ARM64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|x64.ActiveCfg = Release|x64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|x64.Build.0 = Release|x64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|x86.ActiveCfg = Release|x64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|x86.Build.0 = Release|x64
{9456257A-3292-4A8D-AF63-9830EABE7ED2}.Release|x86.Deploy.0 = Release|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Debug|ARM64.ActiveCfg = Debug|ARM64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Debug|ARM64.Build.0 = Debug|ARM64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Debug|ARM64.Deploy.0 = Debug|ARM64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Debug|x64.ActiveCfg = Debug|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Debug|x64.Build.0 = Debug|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Debug|x64.Deploy.0 = Debug|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Debug|x86.ActiveCfg = Debug|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Debug|x86.Build.0 = Debug|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Debug|x86.Deploy.0 = Debug|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Release|ARM64.ActiveCfg = Release|ARM64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Release|ARM64.Build.0 = Release|ARM64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Release|ARM64.Deploy.0 = Release|ARM64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Release|x64.ActiveCfg = Release|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Release|x64.Build.0 = Release|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Release|x64.Deploy.0 = Release|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Release|x86.ActiveCfg = Release|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Release|x86.Build.0 = Release|x64
{EB13FDBD-7DD5-4E7E-8BEB-727B3C9331CB}.Release|x86.Deploy.0 = Release|x64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Debug|ARM64.ActiveCfg = Debug|ARM64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Debug|ARM64.Build.0 = Debug|ARM64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Debug|x64.ActiveCfg = Debug|x64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Debug|x64.Build.0 = Debug|x64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Debug|x86.ActiveCfg = Debug|x64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Debug|x86.Build.0 = Debug|x64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Debug|x86.Deploy.0 = Debug|x64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Release|ARM64.ActiveCfg = Release|ARM64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Release|ARM64.Build.0 = Release|ARM64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Release|x64.ActiveCfg = Release|x64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Release|x64.Build.0 = Release|x64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Release|x86.ActiveCfg = Release|x64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Release|x86.Build.0 = Release|x64
{65E22130-6A8F-4AB7-80EC-FF75475DE821}.Release|x86.Deploy.0 = Release|x64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Debug|ARM64.ActiveCfg = Debug|ARM64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Debug|ARM64.Build.0 = Debug|ARM64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Debug|x64.ActiveCfg = Debug|x64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Debug|x64.Build.0 = Debug|x64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Debug|x86.ActiveCfg = Debug|x64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Debug|x86.Build.0 = Debug|x64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Release|ARM64.ActiveCfg = Release|ARM64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Release|ARM64.Build.0 = Release|ARM64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Release|x64.ActiveCfg = Release|x64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Release|x64.Build.0 = Release|x64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Release|x86.ActiveCfg = Release|x64
{C5BADA22-70FF-41D1-9529-28F4891316A8}.Release|x86.Build.0 = Release|x64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Debug|ARM64.ActiveCfg = Debug|ARM64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Debug|ARM64.Build.0 = Debug|ARM64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Debug|x64.ActiveCfg = Debug|x64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Debug|x64.Build.0 = Debug|x64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Debug|x86.ActiveCfg = Debug|x64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Debug|x86.Build.0 = Debug|x64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Release|ARM64.ActiveCfg = Release|ARM64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Release|ARM64.Build.0 = Release|ARM64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Release|x64.ActiveCfg = Release|x64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Release|x64.Build.0 = Release|x64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Release|x86.ActiveCfg = Release|x64
{42DB35EE-1EDB-41E4-9C9F-A3520EBC5CC4}.Release|x86.Build.0 = Release|x64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Debug|ARM64.ActiveCfg = Debug|ARM64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Debug|ARM64.Build.0 = Debug|ARM64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Debug|x64.ActiveCfg = Debug|x64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Debug|x64.Build.0 = Debug|x64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Debug|x86.ActiveCfg = Debug|x64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Debug|x86.Build.0 = Debug|x64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Release|ARM64.ActiveCfg = Release|ARM64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Release|ARM64.Build.0 = Release|ARM64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Release|x64.ActiveCfg = Release|x64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Release|x64.Build.0 = Release|x64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Release|x86.ActiveCfg = Release|x64
{7F6796A4-4233-4CEC-914F-95EC7A5283A0}.Release|x86.Build.0 = Release|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Debug|ARM64.ActiveCfg = Debug|ARM64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Debug|ARM64.Build.0 = Debug|ARM64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Debug|ARM64.Deploy.0 = Debug|ARM64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Debug|x64.ActiveCfg = Debug|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Debug|x64.Build.0 = Debug|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Debug|x64.Deploy.0 = Debug|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Debug|x86.ActiveCfg = Debug|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Debug|x86.Build.0 = Debug|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Debug|x86.Deploy.0 = Debug|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Release|ARM64.ActiveCfg = Release|ARM64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Release|ARM64.Build.0 = Release|ARM64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Release|ARM64.Deploy.0 = Release|ARM64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Release|x64.ActiveCfg = Release|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Release|x64.Build.0 = Release|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Release|x64.Deploy.0 = Release|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Release|x86.ActiveCfg = Release|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Release|x86.Build.0 = Release|x64
{77D99BE0-F69C-4F27-8153-951CEC5110FE}.Release|x86.Deploy.0 = Release|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Debug|ARM64.ActiveCfg = Debug|ARM64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Debug|ARM64.Build.0 = Debug|ARM64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Debug|ARM64.Deploy.0 = Debug|ARM64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Debug|x64.ActiveCfg = Debug|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Debug|x64.Build.0 = Debug|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Debug|x64.Deploy.0 = Debug|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Debug|x86.ActiveCfg = Debug|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Debug|x86.Build.0 = Debug|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Debug|x86.Deploy.0 = Debug|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Release|ARM64.ActiveCfg = Release|ARM64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Release|ARM64.Build.0 = Release|ARM64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Release|ARM64.Deploy.0 = Release|ARM64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Release|x64.ActiveCfg = Release|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Release|x64.Build.0 = Release|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Release|x64.Deploy.0 = Release|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Release|x86.ActiveCfg = Release|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Release|x86.Build.0 = Release|x64
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1}.Release|x86.Deploy.0 = Release|x64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Debug|ARM64.ActiveCfg = Debug|ARM64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Debug|ARM64.Build.0 = Debug|ARM64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Debug|ARM64.Deploy.0 = Debug|ARM64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Debug|x64.ActiveCfg = Debug|x64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Debug|x64.Build.0 = Debug|x64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Debug|x64.Deploy.0 = Debug|x64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Debug|x86.ActiveCfg = Debug|x86
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Debug|x86.Build.0 = Debug|x86
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Debug|x86.Deploy.0 = Debug|x86
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Release|ARM64.ActiveCfg = Release|ARM64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Release|ARM64.Build.0 = Release|ARM64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Release|ARM64.Deploy.0 = Release|ARM64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Release|x64.ActiveCfg = Release|x64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Release|x64.Build.0 = Release|x64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Release|x64.Deploy.0 = Release|x64
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Release|x86.ActiveCfg = Release|x86
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Release|x86.Build.0 = Release|x86
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1}.Release|x86.Deploy.0 = Release|x86
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Debug|ARM64.ActiveCfg = Debug|ARM64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Debug|ARM64.Build.0 = Debug|ARM64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Debug|x64.ActiveCfg = Debug|x64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Debug|x64.Build.0 = Debug|x64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Debug|x86.ActiveCfg = Debug|x64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Debug|x86.Build.0 = Debug|x64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Release|ARM64.ActiveCfg = Release|ARM64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Release|ARM64.Build.0 = Release|ARM64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Release|x64.ActiveCfg = Release|x64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Release|x64.Build.0 = Release|x64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Release|x86.ActiveCfg = Release|x64
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE}.Release|x86.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -219,6 +337,8 @@ Global
{7F6796A4-4233-4CEC-914F-95EC7A5283A0} = {272D0E9A-8FC3-49F5-8FAD-79ABAE8AB1E4}
{77D99BE0-F69C-4F27-8153-951CEC5110FE} = {B7FF739F-7716-4FC3-B622-705486187B87}
{399B53F1-5AA6-4FE0-8C3C-66E07B84E6F1} = {B7FF739F-7716-4FC3-B622-705486187B87}
{1DF70F56-ABB2-4798-BBA5-0B9568715BA1} = {B4B13D2C-8C19-43D0-9FD4-3084F42EA4C2}
{D2FC419D-0ABC-425F-9D43-A7782AC4A0AE} = {B4B13D2C-8C19-43D0-9FD4-3084F42EA4C2}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {BC94BFC2-A741-4978-B6A4-9E01B7660E6B}