diff --git a/Tests/Properties/AssemblyInfo.cs b/Tests/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000..bb5ab59a
--- /dev/null
+++ b/Tests/Properties/AssemblyInfo.cs
@@ -0,0 +1,33 @@
+using System.Reflection;
+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: AssemblyTitle("Vocaluxe Tests")]
+[assembly: AssemblyDescription("Testcases for Vocaluxe")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("Vocaluxe Team")]
+[assembly: AssemblyProduct("VocluceTests")]
+[assembly: AssemblyCopyright("Copyright © 2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Tests/Tests.csproj b/Tests/Tests.csproj
new file mode 100644
index 00000000..357adb5d
--- /dev/null
+++ b/Tests/Tests.csproj
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+ Debug
+ AnyCPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}
+ Library
+ Properties
+ Tests
+ Tests
+ v4.7.1
+ 512
+
+
+
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\packages\NUnit.3.10.1\lib\net45\nunit.framework.dll
+ True
+
+
+
+
+
+
+
+
+
+ Designer
+
+
+
+
+
+
+
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}
+ VocaluxeLib
+
+
+
+
+
+ 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/Tests/VocaluxeLib/Utils/Combinatorics/CCombinationsTest.cs b/Tests/VocaluxeLib/Utils/Combinatorics/CCombinationsTest.cs
new file mode 100644
index 00000000..20764310
--- /dev/null
+++ b/Tests/VocaluxeLib/Utils/Combinatorics/CCombinationsTest.cs
@@ -0,0 +1,73 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using NUnit.Framework;
+using VocaluxeLib.Utils.Combinatorics;
+
+namespace Tests.VocaluxeLib.Utils.Combinatorics
+{
+ [TestFixture]
+ public class CCombinationsTest
+ {
+ [Test]
+ public void TestCount()
+ {
+ Assert.AreEqual(4, CCombinations.Count(4, 3));
+ Assert.AreEqual(6, CCombinations.Count(4, 2));
+ Assert.AreEqual(66, CCombinations.Count(12, 2));
+ // Corner cases
+ for (int i = 1; i < 12; i++)
+ {
+ Assert.AreEqual(1, CCombinations.Count(i, 0));
+ Assert.AreEqual(1, CCombinations.Count(i, i));
+ Assert.AreEqual(0, CCombinations.Count(i, i + 1));
+ }
+ // Check identity (n k) = (n n-k)
+ for (int i = 0; i <= 12; i++)
+ Assert.AreEqual(CCombinations.Count(12, i), CCombinations.Count(12, 12 - i));
+ Assert.That(() => CCombinations.Count(-1, -1), Throws.TypeOf());
+ Assert.That(() => CCombinations.Count(-1, 1), Throws.TypeOf());
+ Assert.That(() => CCombinations.Count(1, -1), Throws.TypeOf());
+ }
+
+ [Test]
+ public void TestResults([Range(0, 8, 1)] int n)
+ {
+ Random rand = new Random();
+
+ for (int k = 0; k <= n; k++)
+ {
+ List collection = new List(n);
+ int r = rand.Next(1000);
+ for (int i = 0; i < n; i++)
+ collection.Add(i + r);
+ CCombinations combs = new CCombinations(collection, k);
+ Assert.AreEqual(CCombinations.Count(n, k), combs.Count());
+ _CheckResults(combs, collection);
+ }
+ }
+
+ // ReSharper disable UnusedParameter.Local
+ private static void _CheckResults(CCombinations combs, List input)
+ // ReSharper restore UnusedParameter.Local
+ {
+ List> results = new List>();
+ foreach (List comb in combs)
+ {
+ foreach (List other in results)
+ Assert.IsFalse(other.SequenceEqual(comb), "Result must be unique");
+ for (int i = 0; i < comb.Count - 1; i++)
+ {
+ Assert.IsTrue(comb.IndexOf(comb[i], i + 1) < 0, "Repetition not allowed");
+ Assert.IsTrue(input.Contains(comb[i]), "Output must be in input sequence");
+ }
+ results.Add(comb);
+ }
+ Assert.AreEqual(combs.Count(), results.Count);
+ List> results2 = combs.GetAll();
+ Assert.AreEqual(results.Count, results2.Count);
+ for (int i = 0; i < results2.Count; i++)
+ Assert.IsTrue(results[i].SequenceEqual(results2[i]));
+ }
+ }
+}
diff --git a/Tests/packages.config b/Tests/packages.config
new file mode 100644
index 00000000..5626b849
--- /dev/null
+++ b/Tests/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Vocaluxe.sln b/Vocaluxe.sln
index 89870f23..19abfb0a 100644
--- a/Vocaluxe.sln
+++ b/Vocaluxe.sln
@@ -26,135 +26,315 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
Vocaluxe.testsettings = Vocaluxe.testsettings
EndProjectSection
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj", "{8EDF4429-251A-416D-BB68-93F227191BCF}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ DebugLinux|Any CPU = DebugLinux|Any CPU
DebugLinux|x64 = DebugLinux|x64
DebugLinux|x86 = DebugLinux|x86
+ DebugWin|Any CPU = DebugWin|Any CPU
DebugWin|x64 = DebugWin|x64
DebugWin|x86 = DebugWin|x86
+ InstallerWin|Any CPU = InstallerWin|Any CPU
InstallerWin|x64 = InstallerWin|x64
InstallerWin|x86 = InstallerWin|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ ReleaseLinux|Any CPU = ReleaseLinux|Any CPU
ReleaseLinux|x64 = ReleaseLinux|x64
ReleaseLinux|x86 = ReleaseLinux|x86
+ ReleaseWin|Any CPU = ReleaseWin|Any CPU
ReleaseWin|x64 = ReleaseWin|x64
ReleaseWin|x86 = ReleaseWin|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Debug|Any CPU.ActiveCfg = ReleaseWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Debug|Any CPU.Build.0 = ReleaseWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Debug|x64.ActiveCfg = DebugWin|x64
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Debug|x64.Build.0 = DebugWin|x64
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Debug|x86.ActiveCfg = DebugWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Debug|x86.Build.0 = DebugWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugLinux|Any CPU.ActiveCfg = DebugLinux|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugLinux|x64.ActiveCfg = DebugLinux|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugLinux|x64.Build.0 = DebugLinux|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugLinux|x86.ActiveCfg = DebugLinux|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugLinux|x86.Build.0 = DebugLinux|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugWin|Any CPU.ActiveCfg = DebugWin|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugWin|x64.ActiveCfg = DebugWin|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugWin|x64.Build.0 = DebugWin|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugWin|x86.ActiveCfg = DebugWin|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.DebugWin|x86.Build.0 = DebugWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.InstallerWin|Any CPU.ActiveCfg = InstallerWin|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.InstallerWin|x64.ActiveCfg = InstallerWin|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.InstallerWin|x64.Build.0 = InstallerWin|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.InstallerWin|x86.ActiveCfg = InstallerWin|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.InstallerWin|x86.Build.0 = InstallerWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Release|Any CPU.ActiveCfg = ReleaseWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Release|Any CPU.Build.0 = ReleaseWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Release|x64.ActiveCfg = ReleaseWin|x64
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Release|x64.Build.0 = ReleaseWin|x64
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Release|x86.ActiveCfg = ReleaseWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.Release|x86.Build.0 = ReleaseWin|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseLinux|Any CPU.ActiveCfg = ReleaseLinux|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseLinux|x64.Build.0 = ReleaseLinux|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseLinux|x86.Build.0 = ReleaseLinux|x86
+ {2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseWin|Any CPU.ActiveCfg = ReleaseWin|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseWin|x64.ActiveCfg = ReleaseWin|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseWin|x64.Build.0 = ReleaseWin|x64
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseWin|x86.ActiveCfg = ReleaseWin|x86
{2A1E0F2D-5392-4BB7-B0A1-A9DFA13E79FF}.ReleaseWin|x86.Build.0 = ReleaseWin|x86
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Debug|Any CPU.ActiveCfg = DebugWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Debug|Any CPU.Build.0 = DebugWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Debug|x64.ActiveCfg = DebugWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Debug|x64.Build.0 = DebugWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Debug|x86.ActiveCfg = DebugWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Debug|x86.Build.0 = DebugWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugLinux|Any CPU.ActiveCfg = DebugLinux|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugLinux|Any CPU.Build.0 = DebugLinux|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugLinux|x64.ActiveCfg = DebugLinux|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugLinux|x64.Build.0 = DebugLinux|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugLinux|x86.ActiveCfg = DebugLinux|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugLinux|x86.Build.0 = DebugLinux|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugWin|Any CPU.ActiveCfg = DebugWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugWin|Any CPU.Build.0 = DebugWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugWin|x64.ActiveCfg = DebugWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugWin|x64.Build.0 = DebugWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugWin|x86.ActiveCfg = DebugWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.DebugWin|x86.Build.0 = DebugWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.InstallerWin|Any CPU.ActiveCfg = InstallerWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.InstallerWin|Any CPU.Build.0 = InstallerWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.InstallerWin|x64.ActiveCfg = InstallerWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.InstallerWin|x64.Build.0 = InstallerWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.InstallerWin|x86.ActiveCfg = InstallerWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.InstallerWin|x86.Build.0 = InstallerWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Release|Any CPU.ActiveCfg = ReleaseWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Release|Any CPU.Build.0 = ReleaseWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Release|x64.ActiveCfg = ReleaseWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Release|x64.Build.0 = ReleaseWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Release|x86.ActiveCfg = ReleaseWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.Release|x86.Build.0 = ReleaseWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseLinux|Any CPU.ActiveCfg = ReleaseLinux|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseLinux|Any CPU.Build.0 = ReleaseLinux|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseLinux|x64.Build.0 = ReleaseLinux|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseLinux|x86.Build.0 = ReleaseLinux|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseWin|Any CPU.ActiveCfg = ReleaseWin|Any CPU
+ {D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseWin|Any CPU.Build.0 = ReleaseWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseWin|x64.ActiveCfg = ReleaseWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseWin|x64.Build.0 = ReleaseWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseWin|x86.ActiveCfg = ReleaseWin|Any CPU
{D2B6DDEF-E0E1-4DDF-A73A-E6ACEF5C95EC}.ReleaseWin|x86.Build.0 = ReleaseWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Debug|Any CPU.ActiveCfg = DebugWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Debug|Any CPU.Build.0 = DebugWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Debug|x64.ActiveCfg = DebugWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Debug|x64.Build.0 = DebugWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Debug|x86.ActiveCfg = DebugWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Debug|x86.Build.0 = DebugWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugLinux|Any CPU.ActiveCfg = DebugLinux|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugLinux|Any CPU.Build.0 = DebugLinux|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugLinux|x64.ActiveCfg = DebugLinux|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugLinux|x64.Build.0 = DebugLinux|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugLinux|x86.ActiveCfg = DebugLinux|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugLinux|x86.Build.0 = DebugLinux|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugWin|Any CPU.ActiveCfg = DebugWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugWin|Any CPU.Build.0 = DebugWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugWin|x64.ActiveCfg = DebugWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugWin|x64.Build.0 = DebugWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugWin|x86.ActiveCfg = DebugWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.DebugWin|x86.Build.0 = DebugWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.InstallerWin|Any CPU.ActiveCfg = InstallerWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.InstallerWin|Any CPU.Build.0 = InstallerWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.InstallerWin|x64.ActiveCfg = InstallerWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.InstallerWin|x64.Build.0 = InstallerWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.InstallerWin|x86.ActiveCfg = InstallerWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.InstallerWin|x86.Build.0 = InstallerWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Release|Any CPU.ActiveCfg = ReleaseWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Release|Any CPU.Build.0 = ReleaseWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Release|x64.ActiveCfg = ReleaseWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Release|x64.Build.0 = ReleaseWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Release|x86.ActiveCfg = ReleaseWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.Release|x86.Build.0 = ReleaseWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseLinux|Any CPU.ActiveCfg = ReleaseLinux|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseLinux|Any CPU.Build.0 = ReleaseLinux|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseLinux|x64.Build.0 = ReleaseLinux|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseLinux|x86.Build.0 = ReleaseLinux|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseWin|Any CPU.ActiveCfg = ReleaseWin|Any CPU
+ {6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseWin|Any CPU.Build.0 = ReleaseWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseWin|x64.ActiveCfg = ReleaseWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseWin|x64.Build.0 = ReleaseWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseWin|x86.ActiveCfg = ReleaseWin|Any CPU
{6F3E1874-F28A-40E9-AFBD-31934D593679}.ReleaseWin|x86.Build.0 = ReleaseWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Debug|Any CPU.ActiveCfg = DebugWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Debug|Any CPU.Build.0 = DebugWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Debug|x64.ActiveCfg = DebugWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Debug|x64.Build.0 = DebugWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Debug|x86.ActiveCfg = DebugWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Debug|x86.Build.0 = DebugWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugLinux|Any CPU.ActiveCfg = DebugLinux|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugLinux|Any CPU.Build.0 = DebugLinux|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugLinux|x64.ActiveCfg = DebugLinux|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugLinux|x64.Build.0 = DebugLinux|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugLinux|x86.ActiveCfg = DebugLinux|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugLinux|x86.Build.0 = DebugLinux|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugWin|Any CPU.ActiveCfg = DebugWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugWin|Any CPU.Build.0 = DebugWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugWin|x64.ActiveCfg = DebugWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugWin|x64.Build.0 = DebugWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugWin|x86.ActiveCfg = DebugWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.DebugWin|x86.Build.0 = DebugWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.InstallerWin|Any CPU.ActiveCfg = InstallerWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.InstallerWin|Any CPU.Build.0 = InstallerWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.InstallerWin|x64.ActiveCfg = InstallerWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.InstallerWin|x64.Build.0 = InstallerWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.InstallerWin|x86.ActiveCfg = InstallerWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.InstallerWin|x86.Build.0 = InstallerWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Release|Any CPU.ActiveCfg = ReleaseWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Release|Any CPU.Build.0 = ReleaseWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Release|x64.ActiveCfg = ReleaseWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Release|x64.Build.0 = ReleaseWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Release|x86.ActiveCfg = ReleaseWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.Release|x86.Build.0 = ReleaseWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseLinux|Any CPU.ActiveCfg = ReleaseLinux|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseLinux|Any CPU.Build.0 = ReleaseLinux|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseLinux|x64.ActiveCfg = ReleaseLinux|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseLinux|x64.Build.0 = ReleaseLinux|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseLinux|x86.ActiveCfg = ReleaseLinux|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseLinux|x86.Build.0 = ReleaseLinux|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|Any CPU.ActiveCfg = ReleaseWin|Any CPU
+ {5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|Any CPU.Build.0 = ReleaseWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|x64.ActiveCfg = ReleaseWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|x64.Build.0 = ReleaseWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|x86.ActiveCfg = ReleaseWin|Any CPU
{5A4053F1-5AD5-441F-B254-D97A088127B6}.ReleaseWin|x86.Build.0 = ReleaseWin|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Debug|x64.Build.0 = Debug|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Debug|x86.Build.0 = Debug|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugLinux|Any CPU.ActiveCfg = Debug|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugLinux|Any CPU.Build.0 = Debug|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugLinux|x64.ActiveCfg = Debug|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugLinux|x86.ActiveCfg = Debug|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugWin|Any CPU.ActiveCfg = Debug|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugWin|Any CPU.Build.0 = Debug|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugWin|x64.ActiveCfg = Debug|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugWin|x64.Build.0 = Debug|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugWin|x86.ActiveCfg = Debug|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.DebugWin|x86.Build.0 = Debug|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.InstallerWin|Any CPU.ActiveCfg = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.InstallerWin|Any CPU.Build.0 = Release|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.InstallerWin|x64.ActiveCfg = Release|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.InstallerWin|x64.Build.0 = Release|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.InstallerWin|x86.ActiveCfg = Release|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.InstallerWin|x86.Build.0 = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Release|x64.ActiveCfg = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Release|x64.Build.0 = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Release|x86.ActiveCfg = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.Release|x86.Build.0 = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.ReleaseLinux|x86.ActiveCfg = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU
+ {55F89808-4E79-4FFE-BC13-48258913F5C9}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.ReleaseWin|x64.ActiveCfg = Release|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.ReleaseWin|x64.Build.0 = Release|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.ReleaseWin|x86.ActiveCfg = Release|Any CPU
{55F89808-4E79-4FFE-BC13-48258913F5C9}.ReleaseWin|x86.Build.0 = Release|Any CPU
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.Debug|x64.ActiveCfg = Debug|x64
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.Debug|x64.Build.0 = Debug|x64
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.Debug|x86.ActiveCfg = Debug|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.Debug|x86.Build.0 = Debug|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugLinux|Any CPU.ActiveCfg = Release|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugLinux|Any CPU.Build.0 = Release|Win32
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugLinux|x64.ActiveCfg = Debug|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugLinux|x64.Build.0 = Debug|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugLinux|x86.ActiveCfg = Debug|Win32
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugLinux|x86.Build.0 = Debug|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugWin|Any CPU.ActiveCfg = Release|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugWin|Any CPU.Build.0 = Release|Win32
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugWin|x64.ActiveCfg = Debug|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugWin|x64.Build.0 = Debug|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugWin|x86.ActiveCfg = Debug|Win32
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.DebugWin|x86.Build.0 = Debug|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.InstallerWin|Any CPU.ActiveCfg = Release|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.InstallerWin|Any CPU.Build.0 = Release|Win32
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.InstallerWin|x64.ActiveCfg = Release|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.InstallerWin|x64.Build.0 = Release|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.InstallerWin|x86.ActiveCfg = Release|Win32
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.InstallerWin|x86.Build.0 = Release|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.Release|Any CPU.ActiveCfg = Release|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.Release|x64.ActiveCfg = Release|x64
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.Release|x64.Build.0 = Release|x64
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.Release|x86.ActiveCfg = Release|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.Release|x86.Build.0 = Release|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseLinux|Any CPU.ActiveCfg = Release|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseLinux|Any CPU.Build.0 = Release|Win32
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseLinux|x64.ActiveCfg = Release|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseLinux|x64.Build.0 = Release|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseLinux|x86.ActiveCfg = Release|Win32
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseLinux|x86.Build.0 = Release|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseWin|Any CPU.ActiveCfg = Release|Win32
+ {54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseWin|Any CPU.Build.0 = Release|Win32
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseWin|x64.ActiveCfg = Release|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseWin|x64.Build.0 = Release|x64
{54A48AF7-515C-4EDD-B395-2BFFA096050A}.ReleaseWin|x86.ActiveCfg = Release|Win32
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x64.Build.0 = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Debug|x86.Build.0 = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugLinux|Any CPU.ActiveCfg = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugLinux|Any CPU.Build.0 = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugLinux|x64.ActiveCfg = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugLinux|x64.Build.0 = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugLinux|x86.ActiveCfg = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugLinux|x86.Build.0 = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugWin|Any CPU.ActiveCfg = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugWin|Any CPU.Build.0 = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugWin|x64.ActiveCfg = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugWin|x64.Build.0 = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugWin|x86.ActiveCfg = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.DebugWin|x86.Build.0 = Debug|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.InstallerWin|Any CPU.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.InstallerWin|Any CPU.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.InstallerWin|x64.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.InstallerWin|x64.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.InstallerWin|x86.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.InstallerWin|x86.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|x64.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|x64.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|x86.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.Release|x86.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseLinux|x64.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseLinux|x86.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseLinux|x86.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseWin|Any CPU.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseWin|Any CPU.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseWin|x64.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseWin|x64.Build.0 = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseWin|x86.ActiveCfg = Release|Any CPU
+ {8EDF4429-251A-416D-BB68-93F227191BCF}.ReleaseWin|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE