diff --git a/.cr/personal/Editor/IntelliRush.xml b/.cr/personal/Editor/IntelliRush.xml new file mode 100644 index 00000000..e241e096 --- /dev/null +++ b/.cr/personal/Editor/IntelliRush.xml @@ -0,0 +1,7 @@ + + + + True + + + \ No newline at end of file diff --git a/.cr/personal/Editor/Painting/Structural Highlighting.xml b/.cr/personal/Editor/Painting/Structural Highlighting.xml new file mode 100644 index 00000000..347228e8 --- /dev/null +++ b/.cr/personal/Editor/Painting/Structural Highlighting.xml @@ -0,0 +1,6 @@ + + + + False + + \ No newline at end of file diff --git a/.cr/personal/Editor/Right Margin Line/Right Margin Line.xml b/.cr/personal/Editor/Right Margin Line/Right Margin Line.xml new file mode 100644 index 00000000..8432cfbd --- /dev/null +++ b/.cr/personal/Editor/Right Margin Line/Right Margin Line.xml @@ -0,0 +1,6 @@ + + + + True + + \ No newline at end of file diff --git a/.cr/personal/Editor/Spell checker.xml b/.cr/personal/Editor/Spell checker.xml new file mode 100644 index 00000000..20c42611 --- /dev/null +++ b/.cr/personal/Editor/Spell checker.xml @@ -0,0 +1,6 @@ + + + + XmlComments|Comments|Strings|VerbatimStrings|PublicIdentifiers|InternalIdentifiers|ProtectedInternalIdentifiers|ProtectedIdentifiers|PrivateIdentifiers|LocalIdentifiers|FileNames + + \ No newline at end of file diff --git a/.cr/personal/FavoritesList/List.xml b/.cr/personal/FavoritesList/List.xml new file mode 100644 index 00000000..a60e5ed6 --- /dev/null +++ b/.cr/personal/FavoritesList/List.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.cr/personal/IDE/BuildEngine.xml b/.cr/personal/IDE/BuildEngine.xml new file mode 100644 index 00000000..a1af350d --- /dev/null +++ b/.cr/personal/IDE/BuildEngine.xml @@ -0,0 +1,6 @@ + + + + True + + \ No newline at end of file diff --git a/.cr/personal/IDE/Shortcuts.xml b/.cr/personal/IDE/Shortcuts.xml new file mode 100644 index 00000000..5e9c7e1f --- /dev/null +++ b/.cr/personal/IDE/Shortcuts.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + False + + + + + False + + + + + + + + + + + + + + + + + + + + + + + + False + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.cr/team/Editor/Code Templates/Templates.CSharp.xml b/.cr/team/Editor/Code Templates/Templates.CSharp.xml new file mode 100644 index 00000000..3d6c7085 --- /dev/null +++ b/.cr/team/Editor/Code Templates/Templates.CSharp.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + //----------------------------------------------------------------------- +// ----------------------------------------------------------------------- +// file="«?FileBase»" +// Project: StgSharp +// AuthorGroup: «?GetUserInfo(Company)» +// Copyright (c) «?GetUserInfo(Company)». All rights reserved. +// +// Permission is hereby granted, free of charge, to any person +// obtaining a copy of this software and associated documentation +// files (the “Software”), to deal in the Software without restriction, +// including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, +// and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and +// this permission notice shall be included in all copies +// or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED “AS IS”, +// WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH +// THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// ----------------------------------------------------------------------- +// ----------------------------------------------------------------------- + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.gitignore b/.gitignore index f75a613f..b6fab14a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ /build -/.cr /.idea /.vs /.vscode diff --git a/StgSharp.Common/Threading/SamplingAdaptiveBackoff.cs b/StgSharp.Common/Threading/SamplingAdaptiveBackoff.cs index a2a2fa56..b52052fa 100644 --- a/StgSharp.Common/Threading/SamplingAdaptiveBackoff.cs +++ b/StgSharp.Common/Threading/SamplingAdaptiveBackoff.cs @@ -1,9 +1,9 @@ //----------------------------------------------------------------------- // ----------------------------------------------------------------------- -// file="SamplingAdaptiveBackoff.cs" +// file="SamplingAdaptiveBackoff" // Project: StgSharp -// AuthorGroup: Nitload Space -// Copyright (c) Nitload Space. All rights reserved. +// AuthorGroup: Nitload +// Copyright (c) Nitload. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation @@ -197,8 +197,7 @@ public struct SamplingAdaptiveBackoff bool methodChanged = bestMethod != _currentMethod; bool candidateMatches = bestMethod == _candidateMethod; - _confidenceCounter = methodChanged ? - (candidateMatches ? (byte)(_confidenceCounter + 1) : (byte)1) : (byte)0; + _confidenceCounter = methodChanged ? (candidateMatches ? (byte)(_confidenceCounter + 1) : (byte)1) : (byte)0; if (methodChanged && candidateMatches && _confidenceCounter >= CONFIDENCE_THRESHOLD) { @@ -318,19 +317,19 @@ public struct SamplingAdaptiveBackoff public readonly double SuccessRate { -[MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl(MethodImplOptions.AggressiveInlining)] get => TotalAttempts == 0 ? 0.0 : (double)SuccessfulAttempts / TotalAttempts; } public readonly double FallbackRate { -[MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl(MethodImplOptions.AggressiveInlining)] get => TotalAttempts == 0 ? 0.0 : (double)FallbackCount / TotalAttempts; } public readonly long ElapsedTicks { -[MethodImpl(MethodImplOptions.AggressiveInlining)] + [MethodImpl(MethodImplOptions.AggressiveInlining)] get => Environment.TickCount64 - StartTicks; } @@ -364,7 +363,8 @@ public struct SamplingAdaptiveBackoff // Use branchless comparison for best performance BackoffMethod best = score1 > score0 + SIGNIFICANT_IMPROVEMENT ? - BackoffMethod.Yield : BackoffMethod.SpinWait; + BackoffMethod.Yield : + BackoffMethod.SpinWait; best = score2 > GetScore(best) + SIGNIFICANT_IMPROVEMENT ? BackoffMethod.Sleep0 : best; return best; @@ -397,11 +397,7 @@ public struct SamplingAdaptiveBackoff } [MethodImpl(MethodImplOptions.AggressiveInlining)] - public void UpdatePerformance( - BackoffMethod method, - double successRate, - double fallbackRate, - long avgLatency) + public void UpdatePerformance(BackoffMethod method, double successRate, double fallbackRate, long avgLatency) { ulong packed = PackPerformanceData(successRate, fallbackRate, avgLatency); @@ -432,10 +428,7 @@ public struct SamplingAdaptiveBackoff } [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static ulong PackPerformanceData( - double successRate, - double fallbackRate, - long avgLatency) + private static ulong PackPerformanceData(double successRate, double fallbackRate, long avgLatency) { // Pack data into 64-bit value: 20 bits success rate, 20 bits fallback rate, 24 bits latency uint success = (uint)(successRate * 1048575); // 20 bits (2^20 - 1) diff --git a/StgSharp.Mathematics/StgSharp.Mathematics.csproj b/StgSharp.Mathematics/StgSharp.Mathematics.csproj index 357383bf..0919652e 100644 --- a/StgSharp.Mathematics/StgSharp.Mathematics.csproj +++ b/StgSharp.Mathematics/StgSharp.Mathematics.csproj @@ -6,6 +6,7 @@ enable Preview True + x64;ARM64 diff --git a/StgSharp.Model/StgSharp.Model.csproj b/StgSharp.Model/StgSharp.Model.csproj index bf6032ec..52789748 100644 --- a/StgSharp.Model/StgSharp.Model.csproj +++ b/StgSharp.Model/StgSharp.Model.csproj @@ -4,11 +4,15 @@ net8.0 enable preview - AnyCPU;x64 + x64 True + MIT + True + False + True - + diff --git a/StgSharp.Native/StgSharp.Native.vcxproj b/StgSharp.Native/StgSharp.Native.vcxproj index 7cd17ce7..a52249ca 100644 --- a/StgSharp.Native/StgSharp.Native.vcxproj +++ b/StgSharp.Native/StgSharp.Native.vcxproj @@ -1,14 +1,6 @@  - - Debug - Win32 - - - Release - Win32 - Debug x64 @@ -27,17 +19,6 @@ StgSharp.Native - - Application - true - Unicode - - - Application - false - true - Unicode - DynamicLibrary true @@ -57,12 +38,6 @@ - - - - - - @@ -77,38 +52,6 @@ $(SolutionDir)build false - - - Level3 - true - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - All - - - Console - true - opengl32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) - - - - - Level3 - true - true - true - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true - All - - - Console - true - true - true - opengl32.lib;$(CoreLibraryDependencies);%(AdditionalDependencies) - - Level3 @@ -116,7 +59,7 @@ _DEBUG;_CONSOLE;%(PreprocessorDefinitions) true Default - Default + stdc11 Disabled true All @@ -144,8 +87,8 @@ true Speed All - stdcpp20 - stdc17 + Default + stdc11 CompileAsC true $(ProjectDir)sdl-head;$(ProjectDir)sn-head;%(AdditionalIncludeDirectories) diff --git a/StgSharp.Script/StgSharp.Script.csproj b/StgSharp.Script/StgSharp.Script.csproj index e30223f4..528cf895 100644 --- a/StgSharp.Script/StgSharp.Script.csproj +++ b/StgSharp.Script/StgSharp.Script.csproj @@ -5,7 +5,7 @@ enable preview True - AnyCPU;x64 + x64 diff --git a/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj b/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj index 4c24308c..4b8b7eea 100644 --- a/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj +++ b/StgSharp.TerminalDialogue/StgSharp.TerminalDialogue.csproj @@ -13,14 +13,26 @@ True x64 none - AnyCPU;x64 + x64 - - False - + + False + - + + True + + + + False + + + + True + + + diff --git a/StgSharpDevelop.sln b/StgSharpDevelop.sln index f75e8940..bb69833d 100644 --- a/StgSharpDevelop.sln +++ b/StgSharpDevelop.sln @@ -32,97 +32,66 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StgSharp.Mathematics", "Stg EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU Debug|ARM64 = Debug|ARM64 Debug|x64 = Debug|x64 - Release|Any CPU = Release|Any CPU Release|ARM64 = Release|ARM64 Release|x64 = Release|x64 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|Any CPU.ActiveCfg = Debug|x64 - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|Any CPU.Build.0 = Debug|x64 {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|ARM64.ActiveCfg = Debug|ARM64 {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|ARM64.Build.0 = Debug|ARM64 {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x64.ActiveCfg = Debug|x64 {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Debug|x64.Build.0 = Debug|x64 - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|Any CPU.ActiveCfg = Release|x64 - {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|Any CPU.Build.0 = Release|x64 {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|ARM64.ActiveCfg = Release|ARM64 {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|ARM64.Build.0 = Release|ARM64 {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|x64.ActiveCfg = Release|x64 {3EAF2EE6-FA9E-4F57-951F-7E6F8125DFBF}.Release|x64.Build.0 = Release|x64 - {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|Any CPU.ActiveCfg = Debug|x64 - {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|Any CPU.Build.0 = Debug|x64 {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|ARM64.ActiveCfg = Debug|ARM64 {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|ARM64.Build.0 = Debug|ARM64 {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|x64.ActiveCfg = Debug|x64 {610B992B-BB34-49C3-9993-676C595FC12E}.Debug|x64.Build.0 = Debug|x64 - {610B992B-BB34-49C3-9993-676C595FC12E}.Release|Any CPU.ActiveCfg = Release|x64 - {610B992B-BB34-49C3-9993-676C595FC12E}.Release|Any CPU.Build.0 = Release|x64 {610B992B-BB34-49C3-9993-676C595FC12E}.Release|ARM64.ActiveCfg = Release|ARM64 {610B992B-BB34-49C3-9993-676C595FC12E}.Release|ARM64.Build.0 = Release|ARM64 {610B992B-BB34-49C3-9993-676C595FC12E}.Release|x64.ActiveCfg = Release|x64 - {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|Any CPU.ActiveCfg = Debug|x64 - {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|Any CPU.Build.0 = Debug|x64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|ARM64.ActiveCfg = Debug|ARM64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|ARM64.Build.0 = Debug|ARM64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|x64.ActiveCfg = Release|x64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Debug|x64.Build.0 = Release|x64 - {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|Any CPU.ActiveCfg = Release|x64 - {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|Any CPU.Build.0 = Release|x64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|ARM64.ActiveCfg = Release|ARM64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|ARM64.Build.0 = Release|ARM64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|x64.ActiveCfg = Release|x64 {20CBFF26-6746-402E-992C-7B643E9423EB}.Release|x64.Build.0 = Release|x64 - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|Any CPU.Build.0 = Debug|Any CPU {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|ARM64.ActiveCfg = Debug|ARM64 {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|ARM64.Build.0 = Debug|ARM64 {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|x64.ActiveCfg = Debug|x64 {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Debug|x64.Build.0 = Debug|x64 - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|Any CPU.ActiveCfg = Release|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|Any CPU.Build.0 = Release|Any CPU - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|ARM64.ActiveCfg = Release|ARM64 - {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|ARM64.Build.0 = Release|ARM64 + {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|ARM64.ActiveCfg = Release|x64 + {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|ARM64.Build.0 = Release|x64 {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|x64.ActiveCfg = Release|x64 {10B5819F-2A62-41B6-980A-EB9E76A0E95C}.Release|x64.Build.0 = Release|x64 - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|Any CPU.Build.0 = Debug|Any CPU {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|ARM64.ActiveCfg = Debug|ARM64 {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|ARM64.Build.0 = Debug|ARM64 {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|x64.ActiveCfg = Debug|x64 {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Debug|x64.Build.0 = Debug|x64 - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|Any CPU.Build.0 = Release|Any CPU - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|ARM64.ActiveCfg = Release|ARM64 - {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|ARM64.Build.0 = Release|ARM64 + {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|ARM64.ActiveCfg = Release|x64 + {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|ARM64.Build.0 = Release|x64 {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.ActiveCfg = Release|x64 {5B51F5EA-138C-46B5-B36F-1D389968B6CF}.Release|x64.Build.0 = Release|x64 - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|ARM64.Build.0 = Debug|ARM64 + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|ARM64.ActiveCfg = Debug|x64 + {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|ARM64.Build.0 = Debug|x64 {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x64.ActiveCfg = Debug|x64 {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Debug|x64.Build.0 = Debug|x64 - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|Any CPU.ActiveCfg = Release|Any CPU - {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|Any CPU.Build.0 = Release|Any CPU {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|ARM64.ActiveCfg = Release|ARM64 {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|ARM64.Build.0 = Release|ARM64 {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x64.ActiveCfg = Release|x64 {D9538DE0-EE4C-4183-86D6-7DFC08A7BDFB}.Release|x64.Build.0 = Release|x64 - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|ARM64.ActiveCfg = Debug|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|ARM64.Build.0 = Debug|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|x64.ActiveCfg = Debug|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|x64.Build.0 = Debug|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|Any CPU.Build.0 = Release|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|ARM64.ActiveCfg = Release|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|ARM64.Build.0 = Release|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|x64.ActiveCfg = Release|Any CPU - {9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|x64.Build.0 = Release|Any CPU + {9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|ARM64.Build.0 = Debug|ARM64 + {9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|x64.ActiveCfg = Debug|x64 + {9946599F-4D34-440F-840D-F9443D5AEFAA}.Debug|x64.Build.0 = Debug|x64 + {9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|ARM64.ActiveCfg = Release|ARM64 + {9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|ARM64.Build.0 = Release|ARM64 + {9946599F-4D34-440F-840D-F9443D5AEFAA}.Release|x64.ActiveCfg = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE