From 2499c1275eea7d44340e3f4f0001e3df7416f5dc Mon Sep 17 00:00:00 2001
From: vineethkuttan <66076509+vineethkuttan@users.noreply.github.com>
Date: Sat, 15 Nov 2025 15:36:39 +0530
Subject: [PATCH] Initial Implementation of AccessibilityUnitTest
---
.../AccessibilityUnitTest.csproj | 124 ++++++++++++++++++
.../AccessibilityUnitTest/GallerySession.cs | 72 ++++++++++
.../Properties/AssemblyInfo.cs | 20 +++
.../AccessibilityUnitTest/UnitTest1.cs | 116 ++++++++++++++++
.../windows/AccessibilityUnitTest/app.config | 11 ++
.../AccessibilityUnitTest/packages.config | 13 ++
NewArch/windows/NewArch.sln | 76 ++++++++---
7 files changed, 413 insertions(+), 19 deletions(-)
create mode 100644 NewArch/windows/AccessibilityUnitTest/AccessibilityUnitTest.csproj
create mode 100644 NewArch/windows/AccessibilityUnitTest/GallerySession.cs
create mode 100644 NewArch/windows/AccessibilityUnitTest/Properties/AssemblyInfo.cs
create mode 100644 NewArch/windows/AccessibilityUnitTest/UnitTest1.cs
create mode 100644 NewArch/windows/AccessibilityUnitTest/app.config
create mode 100644 NewArch/windows/AccessibilityUnitTest/packages.config
diff --git a/NewArch/windows/AccessibilityUnitTest/AccessibilityUnitTest.csproj b/NewArch/windows/AccessibilityUnitTest/AccessibilityUnitTest.csproj
new file mode 100644
index 00000000..053fdbff
--- /dev/null
+++ b/NewArch/windows/AccessibilityUnitTest/AccessibilityUnitTest.csproj
@@ -0,0 +1,124 @@
+
+
+
+
+
+ Debug
+ AnyCPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}
+ Library
+ Properties
+ AccessibilityUnitTest
+ AccessibilityUnitTest
+ v4.8.1
+ 512
+ {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ 15.0
+ $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)
+ $(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages
+ False
+ UnitTest
+
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\packages\Axe.Windows.2.4.2\lib\netstandard20\Axe.Windows.Actions.dll
+
+
+ ..\packages\Axe.Windows.2.4.2\lib\netstandard20\Axe.Windows.Automation.dll
+
+
+ ..\packages\Axe.Windows.2.4.2\lib\netstandard20\Axe.Windows.Core.dll
+
+
+ ..\packages\Axe.Windows.2.4.2\lib\netstandard20\Axe.Windows.Desktop.dll
+
+
+ ..\packages\Axe.Windows.2.4.2\lib\netstandard20\Axe.Windows.Rules.dll
+
+
+ ..\packages\Axe.Windows.2.4.2\lib\netstandard20\Axe.Windows.RuleSelection.dll
+
+
+ ..\packages\Axe.Windows.2.4.2\lib\netstandard20\Axe.Windows.SystemAbstractions.dll
+
+
+ ..\packages\Axe.Windows.2.4.2\lib\netstandard20\Axe.Windows.Telemetry.dll
+
+
+ ..\packages\Axe.Windows.2.4.2\lib\netstandard20\Axe.Windows.Win32.dll
+
+
+ ..\packages\Interop.UIAutomationClient.10.19041.0\lib\net45\Interop.UIAutomationClient.dll
+ False
+
+
+ ..\packages\MSTest.TestFramework.2.2.10\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll
+
+
+ ..\packages\MSTest.TestFramework.2.2.10\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll
+
+
+ ..\packages\Microsoft.Win32.Registry.5.0.0\lib\net461\Microsoft.Win32.Registry.dll
+
+
+ ..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll
+
+
+
+
+ ..\packages\System.Drawing.Common.8.0.10\lib\net462\System.Drawing.Common.dll
+
+
+ ..\packages\System.IO.Packaging.8.0.1\lib\net462\System.IO.Packaging.dll
+
+
+ ..\packages\System.Security.AccessControl.5.0.0\lib\net461\System.Security.AccessControl.dll
+
+
+ ..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/NewArch/windows/AccessibilityUnitTest/GallerySession.cs b/NewArch/windows/AccessibilityUnitTest/GallerySession.cs
new file mode 100644
index 00000000..9958ec8d
--- /dev/null
+++ b/NewArch/windows/AccessibilityUnitTest/GallerySession.cs
@@ -0,0 +1,72 @@
+using System;
+using Axe.Windows.Automation;
+using Axe.Windows.Automation.Data;
+using Newtonsoft.Json;
+
+namespace AccessibilityUnitTest
+{
+ public class GallerySession
+ {
+ private const string ApplicationProcessName = "rngallery";
+
+ public static int GetProcessId()
+ {
+ //Code to get the Process ID from the process name
+ var processes = System.Diagnostics.Process.GetProcessesByName(ApplicationProcessName);
+ return processes[0].Id;
+ }
+
+ public static IScanner CreateScanner(int processId)
+ {
+ Console.WriteLine("Creating scanner...");
+ var configBuilder = Config.Builder.ForProcessId(processId)
+ .WithOutputFileFormat(OutputFileFormat.None);
+ var config = configBuilder.Build();
+ var scanner = ScannerFactory.CreateScanner(config);
+ return scanner;
+ }
+
+ public static ScanOutput GetScanResults(IScanner scanner)
+ {
+ Console.WriteLine("Scanning...");
+ var scanResults = scanner.Scan(null);
+ return scanResults;
+ }
+
+ public static void PrintScanResults(ScanOutput scanResults, bool fullContent)
+ {
+ Console.WriteLine("Scan results:");
+ Console.WriteLine();
+ Console.WriteLine("===========================================");
+ if (fullContent)
+ {
+ Console.WriteLine(JsonConvert.SerializeObject(scanResults, Formatting.Indented));
+ }
+ else
+ {
+ foreach (var scanResult in scanResults.WindowScanOutputs)
+ {
+ foreach (var error in scanResult.Errors)
+ {
+ Console.WriteLine(error.Rule.Description);
+ }
+ }
+ }
+ Console.WriteLine("===========================================");
+ Console.WriteLine();
+ }
+ public static bool IsErrorPresent(ScanOutput scanResults)
+ {
+ bool isError = false;
+ foreach (var scanResult in scanResults.WindowScanOutputs)
+ {
+ foreach (var error in scanResult.Errors)
+ {
+ Console.WriteLine($"- {error.Rule.Description}");
+ isError = true;
+ }
+ }
+ return isError;
+ }
+ }
+}
diff --git a/NewArch/windows/AccessibilityUnitTest/Properties/AssemblyInfo.cs b/NewArch/windows/AccessibilityUnitTest/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..a2016f4a
--- /dev/null
+++ b/NewArch/windows/AccessibilityUnitTest/Properties/AssemblyInfo.cs
@@ -0,0 +1,20 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("AccessibilityUnitTest")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("AccessibilityUnitTest")]
+[assembly: AssemblyCopyright("Copyright © 2025")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: Guid("4494014e-461b-45a6-bac5-91fcd1936fdc")]
+
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/NewArch/windows/AccessibilityUnitTest/UnitTest1.cs b/NewArch/windows/AccessibilityUnitTest/UnitTest1.cs
new file mode 100644
index 00000000..c019e357
--- /dev/null
+++ b/NewArch/windows/AccessibilityUnitTest/UnitTest1.cs
@@ -0,0 +1,116 @@
+using AccessibilityUnitTest;
+using Axe.Windows.Automation;
+using Axe.Windows.Core.Types;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using System;
+using System.Windows.Automation;
+
+namespace AccessibilityUnitTest
+{
+ [TestClass]
+ public class UnitTest : GallerySession
+ {
+ private static AutomationElement GalleryWindow;
+ private static IScanner scanner;
+
+ [TestMethod]
+ public void TestMethod()
+ {
+ Condition nameCondition = new PropertyCondition(
+ AutomationElement.NameProperty,
+ "Navigation menu");
+ var basicInput = GalleryWindow.FindFirst(TreeScope.Subtree, nameCondition);
+ Assert.IsNotNull(basicInput);
+ if (basicInput != null)
+ {
+ basicInput.TryGetCurrentPattern(System.Windows.Automation.InvokePattern.Pattern, out object pattern);
+ Assert.IsNotNull(pattern);
+ pattern.GetType().GetMethod("Invoke").Invoke(pattern, null);
+ PrintScanResults(GetScanResults(scanner), false);
+ Assert.IsFalse(IsErrorPresent(GetScanResults(scanner)));
+ }
+ }
+
+ [TestMethod]
+ public void TestAccessibilityElement()
+ {
+ Condition nameCondition = new PropertyCondition(
+ AutomationElement.NameProperty,
+ "Accessibility");
+ var accessibilityElement = GalleryWindow.FindFirst(TreeScope.Subtree, nameCondition);
+ Assert.IsNotNull(accessibilityElement, "Element with name 'accessibility' was not found");
+
+ if (accessibilityElement != null)
+ {
+ Console.WriteLine($"Found accessibility element: {accessibilityElement.Current.Name}");
+ Console.WriteLine($"Control Type: {accessibilityElement.Current.ControlType.LocalizedControlType}");
+
+ // Try to get the ExpandCollapse pattern
+ if (accessibilityElement.TryGetCurrentPattern(System.Windows.Automation.ExpandCollapsePattern.Pattern, out object expandCollapsePattern))
+ {
+ var expandCollapse = (System.Windows.Automation.ExpandCollapsePattern)expandCollapsePattern;
+ Console.WriteLine($"Current ExpandCollapse State: {expandCollapse.Current.ExpandCollapseState}");
+
+ // Expand if collapsed, collapse if expanded
+ if (expandCollapse.Current.ExpandCollapseState == ExpandCollapseState.Collapsed)
+ {
+ Console.WriteLine("Expanding accessibility element...");
+ expandCollapse.Expand();
+ System.Threading.Thread.Sleep(1000); // Wait for expansion
+ Console.WriteLine($"New state after expand: {expandCollapse.Current.ExpandCollapseState}");
+ }
+ else if (expandCollapse.Current.ExpandCollapseState == ExpandCollapseState.Expanded)
+ {
+ Console.WriteLine("Collapsing accessibility element...");
+ expandCollapse.Collapse();
+ System.Threading.Thread.Sleep(1000); // Wait for collapse
+ Console.WriteLine($"New state after collapse: {expandCollapse.Current.ExpandCollapseState}");
+ }
+ else
+ {
+ Console.WriteLine("Element is in a partially expanded state or doesn't support expand/collapse");
+ }
+ }
+ else
+ {
+ Console.WriteLine("ExpandCollapse pattern not supported on this element");
+ }
+
+ PrintScanResults(GetScanResults(scanner), false);
+ }
+ }
+ [ClassInitialize]
+ public static void ClassInitialize(TestContext context)
+ {
+ try
+ {
+ int processId = GetProcessId();
+ scanner = CreateScanner(processId);
+ //var scanResults = GetScanResults(scanner);
+ //PrintScanResults(scanResults, false);
+
+ AutomationElement desktop = AutomationElement.RootElement;
+
+ Condition windowCondition = new PropertyCondition(
+ AutomationElement.ControlTypeProperty,
+ System.Windows.Automation.ControlType.Window);
+
+ Condition nameCondition = new PropertyCondition(
+ AutomationElement.NameProperty,
+ "React Native Gallery");
+
+ Condition condition = new AndCondition(windowCondition, nameCondition);
+
+ GalleryWindow = desktop.FindFirst(
+ TreeScope.Children,
+ condition);
+ Assert.IsNotNull(GalleryWindow);
+ }
+ catch (Exception ex)
+ {
+ Console.WriteLine($"Error during accessibility scan: {ex.Message}");
+ throw;
+ }
+ }
+ }
+}
diff --git a/NewArch/windows/AccessibilityUnitTest/app.config b/NewArch/windows/AccessibilityUnitTest/app.config
new file mode 100644
index 00000000..4f68486d
--- /dev/null
+++ b/NewArch/windows/AccessibilityUnitTest/app.config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/NewArch/windows/AccessibilityUnitTest/packages.config b/NewArch/windows/AccessibilityUnitTest/packages.config
new file mode 100644
index 00000000..4c697523
--- /dev/null
+++ b/NewArch/windows/AccessibilityUnitTest/packages.config
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/NewArch/windows/NewArch.sln b/NewArch/windows/NewArch.sln
index 6c94b9b7..293aeefc 100644
--- a/NewArch/windows/NewArch.sln
+++ b/NewArch/windows/NewArch.sln
@@ -5,68 +5,106 @@ VisualStudioVersion = 17.3.32929.385
MinimumVisualStudioVersion = 10.0.40219.1
Project("{C7167F0D-BC9F-4E6E-AFE1-012C56B48DB5}") = "NewArch.Package", "NewArch.Package\NewArch.Package.wapproj", "{18851D30-3C62-41B9-8E0B-3EED85625239}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "NewArch", "NewArch\NewArch.vcxproj", "{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rngallery", "NewArch\NewArch.vcxproj", "{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Clipboard", "..\node_modules\@react-native-clipboard\clipboard\windows\Clipboard\Clipboard.vcxproj", "{90BFF18B-474B-445D-9847-B065853288D8}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AccessibilityUnitTest", "AccessibilityUnitTest\AccessibilityUnitTest.csproj", "{4494014E-461B-45A6-BAC5-91FCD1936FDC}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|ARM64 = Debug|ARM64
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
- Debug|ARM64 = Debug|ARM64
+ Release|Any CPU = Release|Any CPU
+ Release|ARM64 = Release|ARM64
Release|x64 = Release|x64
Release|x86 = Release|x86
- Release|ARM64 = Release|ARM64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|Any CPU.Build.0 = Debug|x64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|Any CPU.Deploy.0 = Debug|x64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|ARM64.Build.0 = Debug|ARM64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|ARM64.Deploy.0 = Debug|ARM64
{18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|x64.ActiveCfg = Debug|x64
{18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|x64.Build.0 = Debug|x64
{18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|x64.Deploy.0 = Debug|x64
{18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|x86.ActiveCfg = Debug|x86
{18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|x86.Build.0 = Debug|x86
{18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|x86.Deploy.0 = Debug|x86
- {18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|ARM64.Build.0 = Debug|ARM64
- {18851D30-3C62-41B9-8E0B-3EED85625239}.Debug|ARM64.Deploy.0 = Debug|ARM64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Release|Any CPU.ActiveCfg = Release|x64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Release|Any CPU.Build.0 = Release|x64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Release|Any CPU.Deploy.0 = Release|x64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Release|ARM64.ActiveCfg = Release|ARM64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Release|ARM64.Build.0 = Release|ARM64
+ {18851D30-3C62-41B9-8E0B-3EED85625239}.Release|ARM64.Deploy.0 = Release|ARM64
{18851D30-3C62-41B9-8E0B-3EED85625239}.Release|x64.ActiveCfg = Release|x64
{18851D30-3C62-41B9-8E0B-3EED85625239}.Release|x64.Build.0 = Release|x64
{18851D30-3C62-41B9-8E0B-3EED85625239}.Release|x64.Deploy.0 = Release|x64
{18851D30-3C62-41B9-8E0B-3EED85625239}.Release|x86.ActiveCfg = Release|x86
{18851D30-3C62-41B9-8E0B-3EED85625239}.Release|x86.Build.0 = Release|x86
{18851D30-3C62-41B9-8E0B-3EED85625239}.Release|x86.Deploy.0 = Release|x86
- {18851D30-3C62-41B9-8E0B-3EED85625239}.Release|ARM64.ActiveCfg = Release|ARM64
- {18851D30-3C62-41B9-8E0B-3EED85625239}.Release|ARM64.Build.0 = Release|ARM64
- {18851D30-3C62-41B9-8E0B-3EED85625239}.Release|ARM64.Deploy.0 = Release|ARM64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|Any CPU.Build.0 = Debug|x64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|Any CPU.Deploy.0 = Debug|x64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|ARM64.Build.0 = Debug|ARM64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|ARM64.Deploy.0 = Debug|ARM64
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|x64.ActiveCfg = Debug|x64
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|x64.Build.0 = Debug|x64
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|x64.Deploy.0 = Debug|x64
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|x86.ActiveCfg = Debug|Win32
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|x86.Build.0 = Debug|Win32
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|x86.Deploy.0 = Debug|Win32
- {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|ARM64.Build.0 = Debug|ARM64
- {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Debug|ARM64.Deploy.0 = Debug|ARM64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|Any CPU.ActiveCfg = Release|x64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|Any CPU.Build.0 = Release|x64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|Any CPU.Deploy.0 = Release|x64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|ARM64.ActiveCfg = Release|ARM64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|ARM64.Build.0 = Release|ARM64
+ {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|ARM64.Deploy.0 = Release|ARM64
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|x64.ActiveCfg = Release|x64
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|x64.Build.0 = Release|x64
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|x64.Deploy.0 = Release|x64
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|x86.ActiveCfg = Release|Win32
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|x86.Build.0 = Release|Win32
{8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|x86.Deploy.0 = Release|Win32
- {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|ARM64.ActiveCfg = Release|ARM64
- {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|ARM64.Build.0 = Release|ARM64
- {8481B8D7-6300-4DDF-9104-C7A4F1CAA241}.Release|ARM64.Deploy.0 = Release|ARM64
+ {90BFF18B-474B-445D-9847-B065853288D8}.Debug|Any CPU.ActiveCfg = Debug|x64
+ {90BFF18B-474B-445D-9847-B065853288D8}.Debug|Any CPU.Build.0 = Debug|x64
+ {90BFF18B-474B-445D-9847-B065853288D8}.Debug|Any CPU.Deploy.0 = Debug|x64
+ {90BFF18B-474B-445D-9847-B065853288D8}.Debug|ARM64.ActiveCfg = Debug|ARM64
+ {90BFF18B-474B-445D-9847-B065853288D8}.Debug|ARM64.Build.0 = Debug|ARM64
{90BFF18B-474B-445D-9847-B065853288D8}.Debug|x64.ActiveCfg = Debug|x64
{90BFF18B-474B-445D-9847-B065853288D8}.Debug|x64.Build.0 = Debug|x64
{90BFF18B-474B-445D-9847-B065853288D8}.Debug|x86.ActiveCfg = Debug|Win32
{90BFF18B-474B-445D-9847-B065853288D8}.Debug|x86.Build.0 = Debug|Win32
- {90BFF18B-474B-445D-9847-B065853288D8}.Debug|ARM64.ActiveCfg = Debug|ARM64
- {90BFF18B-474B-445D-9847-B065853288D8}.Debug|ARM64.Build.0 = Debug|ARM64
+ {90BFF18B-474B-445D-9847-B065853288D8}.Release|Any CPU.ActiveCfg = Release|x64
+ {90BFF18B-474B-445D-9847-B065853288D8}.Release|Any CPU.Build.0 = Release|x64
+ {90BFF18B-474B-445D-9847-B065853288D8}.Release|Any CPU.Deploy.0 = Release|x64
+ {90BFF18B-474B-445D-9847-B065853288D8}.Release|ARM64.ActiveCfg = Release|ARM64
+ {90BFF18B-474B-445D-9847-B065853288D8}.Release|ARM64.Build.0 = Release|ARM64
{90BFF18B-474B-445D-9847-B065853288D8}.Release|x64.ActiveCfg = Release|x64
{90BFF18B-474B-445D-9847-B065853288D8}.Release|x64.Build.0 = Release|x64
{90BFF18B-474B-445D-9847-B065853288D8}.Release|x86.ActiveCfg = Release|Win32
{90BFF18B-474B-445D-9847-B065853288D8}.Release|x86.Build.0 = Release|Win32
- {90BFF18B-474B-445D-9847-B065853288D8}.Release|ARM64.ActiveCfg = Release|ARM64
- {90BFF18B-474B-445D-9847-B065853288D8}.Release|ARM64.Build.0 = Release|ARM64
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Debug|ARM64.ActiveCfg = Debug|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Debug|ARM64.Build.0 = Debug|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Debug|x64.Build.0 = Debug|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Debug|x86.Build.0 = Debug|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Release|ARM64.ActiveCfg = Release|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Release|ARM64.Build.0 = Release|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Release|x64.ActiveCfg = Release|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Release|x64.Build.0 = Release|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Release|x86.ActiveCfg = Release|Any CPU
+ {4494014E-461B-45A6-BAC5-91FCD1936FDC}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE