diff --git a/.github/workflows/packages.yml b/.github/workflows/packages.yml
index 25973b4d..41524726 100644
--- a/.github/workflows/packages.yml
+++ b/.github/workflows/packages.yml
@@ -13,7 +13,7 @@ on:
release:
types: [ prereleased, published ]
env:
- base_version: '3.6.0'
+ base_version: '3.7.0'
feedz_feed_source: 'https://f.feedz.io/elsa-workflows/elsa-3/nuget/index.json'
nuget_feed_source: 'https://api.nuget.org/v3/index.json'
diff --git a/Directory.Build.props b/Directory.Build.props
index 720ea1eb..1136600f 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -37,7 +37,7 @@
- 3.6.0-rc1
+ 3.7.0-preview.4150
3.6.0-rc1
diff --git a/Directory.Packages.props b/Directory.Packages.props
index 8efbcf46..19703236 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -28,6 +28,7 @@
+
diff --git a/Elsa.Extensions.sln b/Elsa.Extensions.sln
index ce3cf7f9..4c355b3a 100644
--- a/Elsa.Extensions.sln
+++ b/Elsa.Extensions.sln
@@ -286,379 +286,1180 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{A33667E6-6A5
doc\release-notes\3.6.0-rc1.md = doc\release-notes\3.6.0-rc1.md
EndProjectSection
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scheduling", "scheduling", "{6E46B8AD-FA47-474F-B959-0B530771C28C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Scheduling.Quartz.UnitTests", "test\modules\scheduling\Elsa.Scheduling.Quartz.UnitTests\Elsa.Scheduling.Quartz.UnitTests.csproj", "{65B9F528-568B-4E0E-894E-F22E0B7C64BB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Elsa.Scheduling.Quartz.ComponentTests", "test\modules\scheduling\Elsa.Scheduling.Quartz.ComponentTests\Elsa.Scheduling.Quartz.ComponentTests.csproj", "{50798373-8A89-4159-BFD9-830D259538D6}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|x64.Build.0 = Debug|Any CPU
+ {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Debug|x86.Build.0 = Debug|Any CPU
{4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|x64.ActiveCfg = Release|Any CPU
+ {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|x64.Build.0 = Release|Any CPU
+ {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|x86.ActiveCfg = Release|Any CPU
+ {4D16DD17-0BC9-476D-9B38-0A8644DD92FE}.Release|x86.Build.0 = Release|Any CPU
{4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Debug|x64.Build.0 = Debug|Any CPU
+ {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Debug|x86.Build.0 = Debug|Any CPU
{4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Release|x64.ActiveCfg = Release|Any CPU
+ {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Release|x64.Build.0 = Release|Any CPU
+ {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Release|x86.ActiveCfg = Release|Any CPU
+ {4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2}.Release|x86.Build.0 = Release|Any CPU
{78CBE43C-0EF2-048E-987B-A603A38099E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{78CBE43C-0EF2-048E-987B-A603A38099E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {78CBE43C-0EF2-048E-987B-A603A38099E6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {78CBE43C-0EF2-048E-987B-A603A38099E6}.Debug|x64.Build.0 = Debug|Any CPU
+ {78CBE43C-0EF2-048E-987B-A603A38099E6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {78CBE43C-0EF2-048E-987B-A603A38099E6}.Debug|x86.Build.0 = Debug|Any CPU
{78CBE43C-0EF2-048E-987B-A603A38099E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{78CBE43C-0EF2-048E-987B-A603A38099E6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {78CBE43C-0EF2-048E-987B-A603A38099E6}.Release|x64.ActiveCfg = Release|Any CPU
+ {78CBE43C-0EF2-048E-987B-A603A38099E6}.Release|x64.Build.0 = Release|Any CPU
+ {78CBE43C-0EF2-048E-987B-A603A38099E6}.Release|x86.ActiveCfg = Release|Any CPU
+ {78CBE43C-0EF2-048E-987B-A603A38099E6}.Release|x86.Build.0 = Release|Any CPU
{AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Debug|x64.Build.0 = Debug|Any CPU
+ {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Debug|x86.Build.0 = Debug|Any CPU
{AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Release|x64.ActiveCfg = Release|Any CPU
+ {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Release|x64.Build.0 = Release|Any CPU
+ {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Release|x86.ActiveCfg = Release|Any CPU
+ {AA90183E-F009-F88A-9081-BAB6E5ED6B22}.Release|x86.Build.0 = Release|Any CPU
{266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Debug|x64.Build.0 = Debug|Any CPU
+ {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Debug|x86.Build.0 = Debug|Any CPU
{266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Release|x64.ActiveCfg = Release|Any CPU
+ {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Release|x64.Build.0 = Release|Any CPU
+ {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Release|x86.ActiveCfg = Release|Any CPU
+ {266D14A8-4D8F-795F-169F-A7E7B4F23D1E}.Release|x86.Build.0 = Release|Any CPU
{3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Debug|x64.Build.0 = Debug|Any CPU
+ {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Debug|x86.Build.0 = Debug|Any CPU
{3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Release|x64.ActiveCfg = Release|Any CPU
+ {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Release|x64.Build.0 = Release|Any CPU
+ {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Release|x86.ActiveCfg = Release|Any CPU
+ {3E782B62-87D8-F5FD-CA2D-0D524C5BB530}.Release|x86.Build.0 = Release|Any CPU
{6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Debug|x64.Build.0 = Debug|Any CPU
+ {6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Debug|x86.Build.0 = Debug|Any CPU
{6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Release|x64.ActiveCfg = Release|Any CPU
+ {6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Release|x64.Build.0 = Release|Any CPU
+ {6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Release|x86.ActiveCfg = Release|Any CPU
+ {6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB}.Release|x86.Build.0 = Release|Any CPU
{EC7C3333-59C3-5ACE-C84C-5E135964348C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EC7C3333-59C3-5ACE-C84C-5E135964348C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EC7C3333-59C3-5ACE-C84C-5E135964348C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {EC7C3333-59C3-5ACE-C84C-5E135964348C}.Debug|x64.Build.0 = Debug|Any CPU
+ {EC7C3333-59C3-5ACE-C84C-5E135964348C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EC7C3333-59C3-5ACE-C84C-5E135964348C}.Debug|x86.Build.0 = Debug|Any CPU
{EC7C3333-59C3-5ACE-C84C-5E135964348C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EC7C3333-59C3-5ACE-C84C-5E135964348C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EC7C3333-59C3-5ACE-C84C-5E135964348C}.Release|x64.ActiveCfg = Release|Any CPU
+ {EC7C3333-59C3-5ACE-C84C-5E135964348C}.Release|x64.Build.0 = Release|Any CPU
+ {EC7C3333-59C3-5ACE-C84C-5E135964348C}.Release|x86.ActiveCfg = Release|Any CPU
+ {EC7C3333-59C3-5ACE-C84C-5E135964348C}.Release|x86.Build.0 = Release|Any CPU
{52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Debug|x64.Build.0 = Debug|Any CPU
+ {52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Debug|x86.Build.0 = Debug|Any CPU
{52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Release|Any CPU.ActiveCfg = Release|Any CPU
{52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Release|Any CPU.Build.0 = Release|Any CPU
+ {52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Release|x64.ActiveCfg = Release|Any CPU
+ {52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Release|x64.Build.0 = Release|Any CPU
+ {52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Release|x86.ActiveCfg = Release|Any CPU
+ {52E6A127-2F77-547F-2917-E6C6AAB1CC64}.Release|x86.Build.0 = Release|Any CPU
{BE298025-CAE0-E503-A0D6-996489C1522E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BE298025-CAE0-E503-A0D6-996489C1522E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BE298025-CAE0-E503-A0D6-996489C1522E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BE298025-CAE0-E503-A0D6-996489C1522E}.Debug|x64.Build.0 = Debug|Any CPU
+ {BE298025-CAE0-E503-A0D6-996489C1522E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BE298025-CAE0-E503-A0D6-996489C1522E}.Debug|x86.Build.0 = Debug|Any CPU
{BE298025-CAE0-E503-A0D6-996489C1522E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BE298025-CAE0-E503-A0D6-996489C1522E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BE298025-CAE0-E503-A0D6-996489C1522E}.Release|x64.ActiveCfg = Release|Any CPU
+ {BE298025-CAE0-E503-A0D6-996489C1522E}.Release|x64.Build.0 = Release|Any CPU
+ {BE298025-CAE0-E503-A0D6-996489C1522E}.Release|x86.ActiveCfg = Release|Any CPU
+ {BE298025-CAE0-E503-A0D6-996489C1522E}.Release|x86.Build.0 = Release|Any CPU
{71426B21-5511-0F76-C11D-E17EA695A0EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{71426B21-5511-0F76-C11D-E17EA695A0EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {71426B21-5511-0F76-C11D-E17EA695A0EF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {71426B21-5511-0F76-C11D-E17EA695A0EF}.Debug|x64.Build.0 = Debug|Any CPU
+ {71426B21-5511-0F76-C11D-E17EA695A0EF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {71426B21-5511-0F76-C11D-E17EA695A0EF}.Debug|x86.Build.0 = Debug|Any CPU
{71426B21-5511-0F76-C11D-E17EA695A0EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71426B21-5511-0F76-C11D-E17EA695A0EF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {71426B21-5511-0F76-C11D-E17EA695A0EF}.Release|x64.ActiveCfg = Release|Any CPU
+ {71426B21-5511-0F76-C11D-E17EA695A0EF}.Release|x64.Build.0 = Release|Any CPU
+ {71426B21-5511-0F76-C11D-E17EA695A0EF}.Release|x86.ActiveCfg = Release|Any CPU
+ {71426B21-5511-0F76-C11D-E17EA695A0EF}.Release|x86.Build.0 = Release|Any CPU
{19BADA43-69EB-539F-1104-A0AF4BE89953}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{19BADA43-69EB-539F-1104-A0AF4BE89953}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {19BADA43-69EB-539F-1104-A0AF4BE89953}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {19BADA43-69EB-539F-1104-A0AF4BE89953}.Debug|x64.Build.0 = Debug|Any CPU
+ {19BADA43-69EB-539F-1104-A0AF4BE89953}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {19BADA43-69EB-539F-1104-A0AF4BE89953}.Debug|x86.Build.0 = Debug|Any CPU
{19BADA43-69EB-539F-1104-A0AF4BE89953}.Release|Any CPU.ActiveCfg = Release|Any CPU
{19BADA43-69EB-539F-1104-A0AF4BE89953}.Release|Any CPU.Build.0 = Release|Any CPU
+ {19BADA43-69EB-539F-1104-A0AF4BE89953}.Release|x64.ActiveCfg = Release|Any CPU
+ {19BADA43-69EB-539F-1104-A0AF4BE89953}.Release|x64.Build.0 = Release|Any CPU
+ {19BADA43-69EB-539F-1104-A0AF4BE89953}.Release|x86.ActiveCfg = Release|Any CPU
+ {19BADA43-69EB-539F-1104-A0AF4BE89953}.Release|x86.Build.0 = Release|Any CPU
{8B3C66D4-7213-58D5-7286-A9C058149216}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8B3C66D4-7213-58D5-7286-A9C058149216}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8B3C66D4-7213-58D5-7286-A9C058149216}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8B3C66D4-7213-58D5-7286-A9C058149216}.Debug|x64.Build.0 = Debug|Any CPU
+ {8B3C66D4-7213-58D5-7286-A9C058149216}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8B3C66D4-7213-58D5-7286-A9C058149216}.Debug|x86.Build.0 = Debug|Any CPU
{8B3C66D4-7213-58D5-7286-A9C058149216}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B3C66D4-7213-58D5-7286-A9C058149216}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8B3C66D4-7213-58D5-7286-A9C058149216}.Release|x64.ActiveCfg = Release|Any CPU
+ {8B3C66D4-7213-58D5-7286-A9C058149216}.Release|x64.Build.0 = Release|Any CPU
+ {8B3C66D4-7213-58D5-7286-A9C058149216}.Release|x86.ActiveCfg = Release|Any CPU
+ {8B3C66D4-7213-58D5-7286-A9C058149216}.Release|x86.Build.0 = Release|Any CPU
{C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Debug|x64.Build.0 = Debug|Any CPU
+ {C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Debug|x86.Build.0 = Debug|Any CPU
{C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Release|x64.ActiveCfg = Release|Any CPU
+ {C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Release|x64.Build.0 = Release|Any CPU
+ {C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Release|x86.ActiveCfg = Release|Any CPU
+ {C4C85705-B63D-BB31-0F83-ECD01887FC4B}.Release|x86.Build.0 = Release|Any CPU
{76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Debug|x64.Build.0 = Debug|Any CPU
+ {76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Debug|x86.Build.0 = Debug|Any CPU
{76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Release|x64.ActiveCfg = Release|Any CPU
+ {76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Release|x64.Build.0 = Release|Any CPU
+ {76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Release|x86.ActiveCfg = Release|Any CPU
+ {76FAD6C7-196A-CDAD-BD9E-19AFCDBDB7EB}.Release|x86.Build.0 = Release|Any CPU
{5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Debug|x64.Build.0 = Debug|Any CPU
+ {5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Debug|x86.Build.0 = Debug|Any CPU
{5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Release|x64.ActiveCfg = Release|Any CPU
+ {5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Release|x64.Build.0 = Release|Any CPU
+ {5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Release|x86.ActiveCfg = Release|Any CPU
+ {5ADD78CA-3511-46F9-DB1A-C2D7F37F1B5E}.Release|x86.Build.0 = Release|Any CPU
{80430D3A-CCEB-AA02-975B-FD91D0615456}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{80430D3A-CCEB-AA02-975B-FD91D0615456}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {80430D3A-CCEB-AA02-975B-FD91D0615456}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {80430D3A-CCEB-AA02-975B-FD91D0615456}.Debug|x64.Build.0 = Debug|Any CPU
+ {80430D3A-CCEB-AA02-975B-FD91D0615456}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {80430D3A-CCEB-AA02-975B-FD91D0615456}.Debug|x86.Build.0 = Debug|Any CPU
{80430D3A-CCEB-AA02-975B-FD91D0615456}.Release|Any CPU.ActiveCfg = Release|Any CPU
{80430D3A-CCEB-AA02-975B-FD91D0615456}.Release|Any CPU.Build.0 = Release|Any CPU
+ {80430D3A-CCEB-AA02-975B-FD91D0615456}.Release|x64.ActiveCfg = Release|Any CPU
+ {80430D3A-CCEB-AA02-975B-FD91D0615456}.Release|x64.Build.0 = Release|Any CPU
+ {80430D3A-CCEB-AA02-975B-FD91D0615456}.Release|x86.ActiveCfg = Release|Any CPU
+ {80430D3A-CCEB-AA02-975B-FD91D0615456}.Release|x86.Build.0 = Release|Any CPU
{EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Debug|x64.Build.0 = Debug|Any CPU
+ {EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Debug|x86.Build.0 = Debug|Any CPU
{EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Release|x64.ActiveCfg = Release|Any CPU
+ {EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Release|x64.Build.0 = Release|Any CPU
+ {EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Release|x86.ActiveCfg = Release|Any CPU
+ {EDE759E1-F970-AE78-722C-6DA7B85D8C9C}.Release|x86.Build.0 = Release|Any CPU
{861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Debug|x64.Build.0 = Debug|Any CPU
+ {861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Debug|x86.Build.0 = Debug|Any CPU
{861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Release|x64.ActiveCfg = Release|Any CPU
+ {861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Release|x64.Build.0 = Release|Any CPU
+ {861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Release|x86.ActiveCfg = Release|Any CPU
+ {861E2885-2D62-FF63-7429-2BEFD9C96CE0}.Release|x86.Build.0 = Release|Any CPU
{1FD27C49-8173-249A-80E9-DBA071A56E8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FD27C49-8173-249A-80E9-DBA071A56E8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1FD27C49-8173-249A-80E9-DBA071A56E8D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1FD27C49-8173-249A-80E9-DBA071A56E8D}.Debug|x64.Build.0 = Debug|Any CPU
+ {1FD27C49-8173-249A-80E9-DBA071A56E8D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1FD27C49-8173-249A-80E9-DBA071A56E8D}.Debug|x86.Build.0 = Debug|Any CPU
{1FD27C49-8173-249A-80E9-DBA071A56E8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FD27C49-8173-249A-80E9-DBA071A56E8D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1FD27C49-8173-249A-80E9-DBA071A56E8D}.Release|x64.ActiveCfg = Release|Any CPU
+ {1FD27C49-8173-249A-80E9-DBA071A56E8D}.Release|x64.Build.0 = Release|Any CPU
+ {1FD27C49-8173-249A-80E9-DBA071A56E8D}.Release|x86.ActiveCfg = Release|Any CPU
+ {1FD27C49-8173-249A-80E9-DBA071A56E8D}.Release|x86.Build.0 = Release|Any CPU
{4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Debug|x64.Build.0 = Debug|Any CPU
+ {4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Debug|x86.Build.0 = Debug|Any CPU
{4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Release|x64.ActiveCfg = Release|Any CPU
+ {4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Release|x64.Build.0 = Release|Any CPU
+ {4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Release|x86.ActiveCfg = Release|Any CPU
+ {4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F}.Release|x86.Build.0 = Release|Any CPU
{BB81E01D-7453-9068-B1E3-90E3072C820B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BB81E01D-7453-9068-B1E3-90E3072C820B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BB81E01D-7453-9068-B1E3-90E3072C820B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BB81E01D-7453-9068-B1E3-90E3072C820B}.Debug|x64.Build.0 = Debug|Any CPU
+ {BB81E01D-7453-9068-B1E3-90E3072C820B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BB81E01D-7453-9068-B1E3-90E3072C820B}.Debug|x86.Build.0 = Debug|Any CPU
{BB81E01D-7453-9068-B1E3-90E3072C820B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BB81E01D-7453-9068-B1E3-90E3072C820B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BB81E01D-7453-9068-B1E3-90E3072C820B}.Release|x64.ActiveCfg = Release|Any CPU
+ {BB81E01D-7453-9068-B1E3-90E3072C820B}.Release|x64.Build.0 = Release|Any CPU
+ {BB81E01D-7453-9068-B1E3-90E3072C820B}.Release|x86.ActiveCfg = Release|Any CPU
+ {BB81E01D-7453-9068-B1E3-90E3072C820B}.Release|x86.Build.0 = Release|Any CPU
{95C8EFEE-9396-F334-9B76-78322650A0C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{95C8EFEE-9396-F334-9B76-78322650A0C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {95C8EFEE-9396-F334-9B76-78322650A0C6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {95C8EFEE-9396-F334-9B76-78322650A0C6}.Debug|x64.Build.0 = Debug|Any CPU
+ {95C8EFEE-9396-F334-9B76-78322650A0C6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {95C8EFEE-9396-F334-9B76-78322650A0C6}.Debug|x86.Build.0 = Debug|Any CPU
{95C8EFEE-9396-F334-9B76-78322650A0C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{95C8EFEE-9396-F334-9B76-78322650A0C6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {95C8EFEE-9396-F334-9B76-78322650A0C6}.Release|x64.ActiveCfg = Release|Any CPU
+ {95C8EFEE-9396-F334-9B76-78322650A0C6}.Release|x64.Build.0 = Release|Any CPU
+ {95C8EFEE-9396-F334-9B76-78322650A0C6}.Release|x86.ActiveCfg = Release|Any CPU
+ {95C8EFEE-9396-F334-9B76-78322650A0C6}.Release|x86.Build.0 = Release|Any CPU
{C568B847-15AB-C4DB-5675-0D5F400ED14D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C568B847-15AB-C4DB-5675-0D5F400ED14D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C568B847-15AB-C4DB-5675-0D5F400ED14D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C568B847-15AB-C4DB-5675-0D5F400ED14D}.Debug|x64.Build.0 = Debug|Any CPU
+ {C568B847-15AB-C4DB-5675-0D5F400ED14D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C568B847-15AB-C4DB-5675-0D5F400ED14D}.Debug|x86.Build.0 = Debug|Any CPU
{C568B847-15AB-C4DB-5675-0D5F400ED14D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C568B847-15AB-C4DB-5675-0D5F400ED14D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C568B847-15AB-C4DB-5675-0D5F400ED14D}.Release|x64.ActiveCfg = Release|Any CPU
+ {C568B847-15AB-C4DB-5675-0D5F400ED14D}.Release|x64.Build.0 = Release|Any CPU
+ {C568B847-15AB-C4DB-5675-0D5F400ED14D}.Release|x86.ActiveCfg = Release|Any CPU
+ {C568B847-15AB-C4DB-5675-0D5F400ED14D}.Release|x86.Build.0 = Release|Any CPU
{C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Debug|x64.Build.0 = Debug|Any CPU
+ {C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Debug|x86.Build.0 = Debug|Any CPU
{C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Release|x64.ActiveCfg = Release|Any CPU
+ {C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Release|x64.Build.0 = Release|Any CPU
+ {C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Release|x86.ActiveCfg = Release|Any CPU
+ {C4D65789-A62A-DAD5-7246-A0E476F86CDF}.Release|x86.Build.0 = Release|Any CPU
{F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Debug|x64.Build.0 = Debug|Any CPU
+ {F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Debug|x86.Build.0 = Debug|Any CPU
{F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Release|x64.ActiveCfg = Release|Any CPU
+ {F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Release|x64.Build.0 = Release|Any CPU
+ {F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Release|x86.ActiveCfg = Release|Any CPU
+ {F5B2629A-E0C9-9B73-4941-DD44DD557A9B}.Release|x86.Build.0 = Release|Any CPU
{43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Debug|x64.Build.0 = Debug|Any CPU
+ {43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Debug|x86.Build.0 = Debug|Any CPU
{43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Release|x64.ActiveCfg = Release|Any CPU
+ {43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Release|x64.Build.0 = Release|Any CPU
+ {43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Release|x86.ActiveCfg = Release|Any CPU
+ {43591B08-CC42-9C1D-480E-DFA6C1E1B59A}.Release|x86.Build.0 = Release|Any CPU
{B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Debug|x64.Build.0 = Debug|Any CPU
+ {B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Debug|x86.Build.0 = Debug|Any CPU
{B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Release|x64.ActiveCfg = Release|Any CPU
+ {B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Release|x64.Build.0 = Release|Any CPU
+ {B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Release|x86.ActiveCfg = Release|Any CPU
+ {B8311F08-4555-25E2-A8E5-1EE95A8F2A26}.Release|x86.Build.0 = Release|Any CPU
{5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Debug|x64.Build.0 = Debug|Any CPU
+ {5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Debug|x86.Build.0 = Debug|Any CPU
{5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Release|x64.ActiveCfg = Release|Any CPU
+ {5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Release|x64.Build.0 = Release|Any CPU
+ {5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Release|x86.ActiveCfg = Release|Any CPU
+ {5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8}.Release|x86.Build.0 = Release|Any CPU
{70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Debug|x64.Build.0 = Debug|Any CPU
+ {70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Debug|x86.Build.0 = Debug|Any CPU
{70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Release|x64.ActiveCfg = Release|Any CPU
+ {70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Release|x64.Build.0 = Release|Any CPU
+ {70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Release|x86.ActiveCfg = Release|Any CPU
+ {70C03970-8EF8-A0A7-83DB-541987BEE4F6}.Release|x86.Build.0 = Release|Any CPU
{0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Debug|x64.Build.0 = Debug|Any CPU
+ {0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Debug|x86.Build.0 = Debug|Any CPU
{0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Release|x64.ActiveCfg = Release|Any CPU
+ {0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Release|x64.Build.0 = Release|Any CPU
+ {0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Release|x86.ActiveCfg = Release|Any CPU
+ {0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A}.Release|x86.Build.0 = Release|Any CPU
{2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Debug|x64.Build.0 = Debug|Any CPU
+ {2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Debug|x86.Build.0 = Debug|Any CPU
{2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Release|x64.ActiveCfg = Release|Any CPU
+ {2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Release|x64.Build.0 = Release|Any CPU
+ {2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Release|x86.ActiveCfg = Release|Any CPU
+ {2D72DB60-227D-49F0-44F0-9FAF52244EB6}.Release|x86.Build.0 = Release|Any CPU
{47F17474-6841-126A-ADF8-DD2A7631C8C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{47F17474-6841-126A-ADF8-DD2A7631C8C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {47F17474-6841-126A-ADF8-DD2A7631C8C6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {47F17474-6841-126A-ADF8-DD2A7631C8C6}.Debug|x64.Build.0 = Debug|Any CPU
+ {47F17474-6841-126A-ADF8-DD2A7631C8C6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {47F17474-6841-126A-ADF8-DD2A7631C8C6}.Debug|x86.Build.0 = Debug|Any CPU
{47F17474-6841-126A-ADF8-DD2A7631C8C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{47F17474-6841-126A-ADF8-DD2A7631C8C6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {47F17474-6841-126A-ADF8-DD2A7631C8C6}.Release|x64.ActiveCfg = Release|Any CPU
+ {47F17474-6841-126A-ADF8-DD2A7631C8C6}.Release|x64.Build.0 = Release|Any CPU
+ {47F17474-6841-126A-ADF8-DD2A7631C8C6}.Release|x86.ActiveCfg = Release|Any CPU
+ {47F17474-6841-126A-ADF8-DD2A7631C8C6}.Release|x86.Build.0 = Release|Any CPU
{D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Debug|x64.Build.0 = Debug|Any CPU
+ {D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Debug|x86.Build.0 = Debug|Any CPU
{D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Release|x64.ActiveCfg = Release|Any CPU
+ {D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Release|x64.Build.0 = Release|Any CPU
+ {D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Release|x86.ActiveCfg = Release|Any CPU
+ {D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4}.Release|x86.Build.0 = Release|Any CPU
{2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Debug|x64.Build.0 = Debug|Any CPU
+ {2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Debug|x86.Build.0 = Debug|Any CPU
{2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Release|x64.ActiveCfg = Release|Any CPU
+ {2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Release|x64.Build.0 = Release|Any CPU
+ {2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Release|x86.ActiveCfg = Release|Any CPU
+ {2D745C3D-A97B-8538-71D4-0DB9ADB13ECB}.Release|x86.Build.0 = Release|Any CPU
{41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Debug|x64.Build.0 = Debug|Any CPU
+ {41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Debug|x86.Build.0 = Debug|Any CPU
{41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Release|x64.ActiveCfg = Release|Any CPU
+ {41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Release|x64.Build.0 = Release|Any CPU
+ {41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Release|x86.ActiveCfg = Release|Any CPU
+ {41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5}.Release|x86.Build.0 = Release|Any CPU
{9250D8B1-9D69-A957-D378-8173686A0F9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9250D8B1-9D69-A957-D378-8173686A0F9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9250D8B1-9D69-A957-D378-8173686A0F9C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9250D8B1-9D69-A957-D378-8173686A0F9C}.Debug|x64.Build.0 = Debug|Any CPU
+ {9250D8B1-9D69-A957-D378-8173686A0F9C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9250D8B1-9D69-A957-D378-8173686A0F9C}.Debug|x86.Build.0 = Debug|Any CPU
{9250D8B1-9D69-A957-D378-8173686A0F9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9250D8B1-9D69-A957-D378-8173686A0F9C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9250D8B1-9D69-A957-D378-8173686A0F9C}.Release|x64.ActiveCfg = Release|Any CPU
+ {9250D8B1-9D69-A957-D378-8173686A0F9C}.Release|x64.Build.0 = Release|Any CPU
+ {9250D8B1-9D69-A957-D378-8173686A0F9C}.Release|x86.ActiveCfg = Release|Any CPU
+ {9250D8B1-9D69-A957-D378-8173686A0F9C}.Release|x86.Build.0 = Release|Any CPU
{FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Debug|x64.Build.0 = Debug|Any CPU
+ {FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Debug|x86.Build.0 = Debug|Any CPU
{FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Release|x64.ActiveCfg = Release|Any CPU
+ {FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Release|x64.Build.0 = Release|Any CPU
+ {FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Release|x86.ActiveCfg = Release|Any CPU
+ {FE487F94-5242-C0C7-884A-3EE8FB8FC24E}.Release|x86.Build.0 = Release|Any CPU
{C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Debug|x64.Build.0 = Debug|Any CPU
+ {C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Debug|x86.Build.0 = Debug|Any CPU
{C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Release|x64.ActiveCfg = Release|Any CPU
+ {C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Release|x64.Build.0 = Release|Any CPU
+ {C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Release|x86.ActiveCfg = Release|Any CPU
+ {C2721BCB-2FB1-9227-AABB-ED768EB292FD}.Release|x86.Build.0 = Release|Any CPU
{4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Debug|x64.Build.0 = Debug|Any CPU
+ {4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Debug|x86.Build.0 = Debug|Any CPU
{4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Release|x64.ActiveCfg = Release|Any CPU
+ {4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Release|x64.Build.0 = Release|Any CPU
+ {4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Release|x86.ActiveCfg = Release|Any CPU
+ {4C24646E-B017-9C72-5E5E-27EEE2F23D7B}.Release|x86.Build.0 = Release|Any CPU
{B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Debug|x64.Build.0 = Debug|Any CPU
+ {B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Debug|x86.Build.0 = Debug|Any CPU
{B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Release|x64.ActiveCfg = Release|Any CPU
+ {B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Release|x64.Build.0 = Release|Any CPU
+ {B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Release|x86.ActiveCfg = Release|Any CPU
+ {B39D92DE-334C-BFD7-2A0D-6EC2626E445C}.Release|x86.Build.0 = Release|Any CPU
{0CA52158-CBB6-74FC-B63F-812E059053A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0CA52158-CBB6-74FC-B63F-812E059053A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0CA52158-CBB6-74FC-B63F-812E059053A4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0CA52158-CBB6-74FC-B63F-812E059053A4}.Debug|x64.Build.0 = Debug|Any CPU
+ {0CA52158-CBB6-74FC-B63F-812E059053A4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0CA52158-CBB6-74FC-B63F-812E059053A4}.Debug|x86.Build.0 = Debug|Any CPU
{0CA52158-CBB6-74FC-B63F-812E059053A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0CA52158-CBB6-74FC-B63F-812E059053A4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0CA52158-CBB6-74FC-B63F-812E059053A4}.Release|x64.ActiveCfg = Release|Any CPU
+ {0CA52158-CBB6-74FC-B63F-812E059053A4}.Release|x64.Build.0 = Release|Any CPU
+ {0CA52158-CBB6-74FC-B63F-812E059053A4}.Release|x86.ActiveCfg = Release|Any CPU
+ {0CA52158-CBB6-74FC-B63F-812E059053A4}.Release|x86.Build.0 = Release|Any CPU
{ABC40471-5A32-0AC0-594B-FF19B66E2493}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ABC40471-5A32-0AC0-594B-FF19B66E2493}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ABC40471-5A32-0AC0-594B-FF19B66E2493}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {ABC40471-5A32-0AC0-594B-FF19B66E2493}.Debug|x64.Build.0 = Debug|Any CPU
+ {ABC40471-5A32-0AC0-594B-FF19B66E2493}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {ABC40471-5A32-0AC0-594B-FF19B66E2493}.Debug|x86.Build.0 = Debug|Any CPU
{ABC40471-5A32-0AC0-594B-FF19B66E2493}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ABC40471-5A32-0AC0-594B-FF19B66E2493}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ABC40471-5A32-0AC0-594B-FF19B66E2493}.Release|x64.ActiveCfg = Release|Any CPU
+ {ABC40471-5A32-0AC0-594B-FF19B66E2493}.Release|x64.Build.0 = Release|Any CPU
+ {ABC40471-5A32-0AC0-594B-FF19B66E2493}.Release|x86.ActiveCfg = Release|Any CPU
+ {ABC40471-5A32-0AC0-594B-FF19B66E2493}.Release|x86.Build.0 = Release|Any CPU
{719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Debug|x64.Build.0 = Debug|Any CPU
+ {719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Debug|x86.Build.0 = Debug|Any CPU
{719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Release|x64.ActiveCfg = Release|Any CPU
+ {719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Release|x64.Build.0 = Release|Any CPU
+ {719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Release|x86.ActiveCfg = Release|Any CPU
+ {719BCAE9-BF9C-75D9-E551-782D6FD6421C}.Release|x86.Build.0 = Release|Any CPU
{A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Debug|x64.Build.0 = Debug|Any CPU
+ {A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Debug|x86.Build.0 = Debug|Any CPU
{A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Release|x64.ActiveCfg = Release|Any CPU
+ {A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Release|x64.Build.0 = Release|Any CPU
+ {A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Release|x86.ActiveCfg = Release|Any CPU
+ {A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F}.Release|x86.Build.0 = Release|Any CPU
{D03AF84C-BAAD-50E9-A561-CE5604442A35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D03AF84C-BAAD-50E9-A561-CE5604442A35}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D03AF84C-BAAD-50E9-A561-CE5604442A35}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D03AF84C-BAAD-50E9-A561-CE5604442A35}.Debug|x64.Build.0 = Debug|Any CPU
+ {D03AF84C-BAAD-50E9-A561-CE5604442A35}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D03AF84C-BAAD-50E9-A561-CE5604442A35}.Debug|x86.Build.0 = Debug|Any CPU
{D03AF84C-BAAD-50E9-A561-CE5604442A35}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D03AF84C-BAAD-50E9-A561-CE5604442A35}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D03AF84C-BAAD-50E9-A561-CE5604442A35}.Release|x64.ActiveCfg = Release|Any CPU
+ {D03AF84C-BAAD-50E9-A561-CE5604442A35}.Release|x64.Build.0 = Release|Any CPU
+ {D03AF84C-BAAD-50E9-A561-CE5604442A35}.Release|x86.ActiveCfg = Release|Any CPU
+ {D03AF84C-BAAD-50E9-A561-CE5604442A35}.Release|x86.Build.0 = Release|Any CPU
{93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Debug|x64.Build.0 = Debug|Any CPU
+ {93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Debug|x86.Build.0 = Debug|Any CPU
{93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Release|x64.ActiveCfg = Release|Any CPU
+ {93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Release|x64.Build.0 = Release|Any CPU
+ {93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Release|x86.ActiveCfg = Release|Any CPU
+ {93F9B20D-47AB-87ED-A9AA-005F631C4CA2}.Release|x86.Build.0 = Release|Any CPU
{A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Debug|x64.Build.0 = Debug|Any CPU
+ {A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Debug|x86.Build.0 = Debug|Any CPU
{A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Release|x64.ActiveCfg = Release|Any CPU
+ {A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Release|x64.Build.0 = Release|Any CPU
+ {A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Release|x86.ActiveCfg = Release|Any CPU
+ {A9FA953D-BE0F-1A86-8903-BA0C0879C832}.Release|x86.Build.0 = Release|Any CPU
{ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Debug|x64.Build.0 = Debug|Any CPU
+ {ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Debug|x86.Build.0 = Debug|Any CPU
{ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Release|x64.ActiveCfg = Release|Any CPU
+ {ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Release|x64.Build.0 = Release|Any CPU
+ {ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Release|x86.ActiveCfg = Release|Any CPU
+ {ADC6232A-D238-36D4-8D8D-9C81C7842F30}.Release|x86.Build.0 = Release|Any CPU
{6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Debug|x64.Build.0 = Debug|Any CPU
+ {6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Debug|x86.Build.0 = Debug|Any CPU
{6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Release|x64.ActiveCfg = Release|Any CPU
+ {6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Release|x64.Build.0 = Release|Any CPU
+ {6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Release|x86.ActiveCfg = Release|Any CPU
+ {6E3EBFC5-B0BC-0A3A-4CA9-E3EA615CED7D}.Release|x86.Build.0 = Release|Any CPU
{081E6F32-A418-0F77-3BFE-223903CFBA96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{081E6F32-A418-0F77-3BFE-223903CFBA96}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {081E6F32-A418-0F77-3BFE-223903CFBA96}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {081E6F32-A418-0F77-3BFE-223903CFBA96}.Debug|x64.Build.0 = Debug|Any CPU
+ {081E6F32-A418-0F77-3BFE-223903CFBA96}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {081E6F32-A418-0F77-3BFE-223903CFBA96}.Debug|x86.Build.0 = Debug|Any CPU
{081E6F32-A418-0F77-3BFE-223903CFBA96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{081E6F32-A418-0F77-3BFE-223903CFBA96}.Release|Any CPU.Build.0 = Release|Any CPU
+ {081E6F32-A418-0F77-3BFE-223903CFBA96}.Release|x64.ActiveCfg = Release|Any CPU
+ {081E6F32-A418-0F77-3BFE-223903CFBA96}.Release|x64.Build.0 = Release|Any CPU
+ {081E6F32-A418-0F77-3BFE-223903CFBA96}.Release|x86.ActiveCfg = Release|Any CPU
+ {081E6F32-A418-0F77-3BFE-223903CFBA96}.Release|x86.Build.0 = Release|Any CPU
{B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Debug|x64.Build.0 = Debug|Any CPU
+ {B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Debug|x86.Build.0 = Debug|Any CPU
{B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Release|x64.ActiveCfg = Release|Any CPU
+ {B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Release|x64.Build.0 = Release|Any CPU
+ {B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Release|x86.ActiveCfg = Release|Any CPU
+ {B130CDB8-E048-9D95-3FEA-BF71F556C40F}.Release|x86.Build.0 = Release|Any CPU
{4E2F05DA-C902-293B-90E9-58583ED0D267}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4E2F05DA-C902-293B-90E9-58583ED0D267}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4E2F05DA-C902-293B-90E9-58583ED0D267}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4E2F05DA-C902-293B-90E9-58583ED0D267}.Debug|x64.Build.0 = Debug|Any CPU
+ {4E2F05DA-C902-293B-90E9-58583ED0D267}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4E2F05DA-C902-293B-90E9-58583ED0D267}.Debug|x86.Build.0 = Debug|Any CPU
{4E2F05DA-C902-293B-90E9-58583ED0D267}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E2F05DA-C902-293B-90E9-58583ED0D267}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4E2F05DA-C902-293B-90E9-58583ED0D267}.Release|x64.ActiveCfg = Release|Any CPU
+ {4E2F05DA-C902-293B-90E9-58583ED0D267}.Release|x64.Build.0 = Release|Any CPU
+ {4E2F05DA-C902-293B-90E9-58583ED0D267}.Release|x86.ActiveCfg = Release|Any CPU
+ {4E2F05DA-C902-293B-90E9-58583ED0D267}.Release|x86.Build.0 = Release|Any CPU
{22EF03B2-6BA9-B8BD-A627-4249397F9299}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{22EF03B2-6BA9-B8BD-A627-4249397F9299}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Debug|x64.Build.0 = Debug|Any CPU
+ {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Debug|x86.Build.0 = Debug|Any CPU
{22EF03B2-6BA9-B8BD-A627-4249397F9299}.Release|Any CPU.ActiveCfg = Release|Any CPU
{22EF03B2-6BA9-B8BD-A627-4249397F9299}.Release|Any CPU.Build.0 = Release|Any CPU
+ {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Release|x64.ActiveCfg = Release|Any CPU
+ {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Release|x64.Build.0 = Release|Any CPU
+ {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Release|x86.ActiveCfg = Release|Any CPU
+ {22EF03B2-6BA9-B8BD-A627-4249397F9299}.Release|x86.Build.0 = Release|Any CPU
{0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Debug|x64.Build.0 = Debug|Any CPU
+ {0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Debug|x86.Build.0 = Debug|Any CPU
{0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Release|x64.ActiveCfg = Release|Any CPU
+ {0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Release|x64.Build.0 = Release|Any CPU
+ {0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Release|x86.ActiveCfg = Release|Any CPU
+ {0D391CA4-9C36-BC86-1505-D05F13AE8FFC}.Release|x86.Build.0 = Release|Any CPU
{66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Debug|x64.Build.0 = Debug|Any CPU
+ {66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Debug|x86.Build.0 = Debug|Any CPU
{66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Release|x64.ActiveCfg = Release|Any CPU
+ {66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Release|x64.Build.0 = Release|Any CPU
+ {66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Release|x86.ActiveCfg = Release|Any CPU
+ {66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7}.Release|x86.Build.0 = Release|Any CPU
{AF264239-C968-8A4A-F266-EBE478238D4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AF264239-C968-8A4A-F266-EBE478238D4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AF264239-C968-8A4A-F266-EBE478238D4C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AF264239-C968-8A4A-F266-EBE478238D4C}.Debug|x64.Build.0 = Debug|Any CPU
+ {AF264239-C968-8A4A-F266-EBE478238D4C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AF264239-C968-8A4A-F266-EBE478238D4C}.Debug|x86.Build.0 = Debug|Any CPU
{AF264239-C968-8A4A-F266-EBE478238D4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AF264239-C968-8A4A-F266-EBE478238D4C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AF264239-C968-8A4A-F266-EBE478238D4C}.Release|x64.ActiveCfg = Release|Any CPU
+ {AF264239-C968-8A4A-F266-EBE478238D4C}.Release|x64.Build.0 = Release|Any CPU
+ {AF264239-C968-8A4A-F266-EBE478238D4C}.Release|x86.ActiveCfg = Release|Any CPU
+ {AF264239-C968-8A4A-F266-EBE478238D4C}.Release|x86.Build.0 = Release|Any CPU
{6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Debug|x64.Build.0 = Debug|Any CPU
+ {6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Debug|x86.Build.0 = Debug|Any CPU
{6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Release|x64.ActiveCfg = Release|Any CPU
+ {6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Release|x64.Build.0 = Release|Any CPU
+ {6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Release|x86.ActiveCfg = Release|Any CPU
+ {6954C25F-A04A-C4FA-7BC8-FCA5FE86C59D}.Release|x86.Build.0 = Release|Any CPU
{B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Debug|x64.Build.0 = Debug|Any CPU
+ {B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Debug|x86.Build.0 = Debug|Any CPU
{B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Release|x64.ActiveCfg = Release|Any CPU
+ {B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Release|x64.Build.0 = Release|Any CPU
+ {B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Release|x86.ActiveCfg = Release|Any CPU
+ {B0480F01-C15B-D5C4-398D-2C11A36B9C1C}.Release|x86.Build.0 = Release|Any CPU
{38FC815A-BA41-9440-B075-F7AAEB6EB542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{38FC815A-BA41-9440-B075-F7AAEB6EB542}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {38FC815A-BA41-9440-B075-F7AAEB6EB542}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {38FC815A-BA41-9440-B075-F7AAEB6EB542}.Debug|x64.Build.0 = Debug|Any CPU
+ {38FC815A-BA41-9440-B075-F7AAEB6EB542}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {38FC815A-BA41-9440-B075-F7AAEB6EB542}.Debug|x86.Build.0 = Debug|Any CPU
{38FC815A-BA41-9440-B075-F7AAEB6EB542}.Release|Any CPU.ActiveCfg = Release|Any CPU
{38FC815A-BA41-9440-B075-F7AAEB6EB542}.Release|Any CPU.Build.0 = Release|Any CPU
+ {38FC815A-BA41-9440-B075-F7AAEB6EB542}.Release|x64.ActiveCfg = Release|Any CPU
+ {38FC815A-BA41-9440-B075-F7AAEB6EB542}.Release|x64.Build.0 = Release|Any CPU
+ {38FC815A-BA41-9440-B075-F7AAEB6EB542}.Release|x86.ActiveCfg = Release|Any CPU
+ {38FC815A-BA41-9440-B075-F7AAEB6EB542}.Release|x86.Build.0 = Release|Any CPU
{C818B0E4-6019-3E0C-EE4C-17248430319E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C818B0E4-6019-3E0C-EE4C-17248430319E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C818B0E4-6019-3E0C-EE4C-17248430319E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C818B0E4-6019-3E0C-EE4C-17248430319E}.Debug|x64.Build.0 = Debug|Any CPU
+ {C818B0E4-6019-3E0C-EE4C-17248430319E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C818B0E4-6019-3E0C-EE4C-17248430319E}.Debug|x86.Build.0 = Debug|Any CPU
{C818B0E4-6019-3E0C-EE4C-17248430319E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C818B0E4-6019-3E0C-EE4C-17248430319E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C818B0E4-6019-3E0C-EE4C-17248430319E}.Release|x64.ActiveCfg = Release|Any CPU
+ {C818B0E4-6019-3E0C-EE4C-17248430319E}.Release|x64.Build.0 = Release|Any CPU
+ {C818B0E4-6019-3E0C-EE4C-17248430319E}.Release|x86.ActiveCfg = Release|Any CPU
+ {C818B0E4-6019-3E0C-EE4C-17248430319E}.Release|x86.Build.0 = Release|Any CPU
{D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Debug|x64.Build.0 = Debug|Any CPU
+ {D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Debug|x86.Build.0 = Debug|Any CPU
{D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Release|x64.ActiveCfg = Release|Any CPU
+ {D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Release|x64.Build.0 = Release|Any CPU
+ {D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Release|x86.ActiveCfg = Release|Any CPU
+ {D29C4DFC-A392-7DFA-C85D-01827CD4A360}.Release|x86.Build.0 = Release|Any CPU
{E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Debug|x64.Build.0 = Debug|Any CPU
+ {E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Debug|x86.Build.0 = Debug|Any CPU
{E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Release|x64.ActiveCfg = Release|Any CPU
+ {E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Release|x64.Build.0 = Release|Any CPU
+ {E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Release|x86.ActiveCfg = Release|Any CPU
+ {E6BD7D7F-3CC5-EE66-577D-19015EFD03D8}.Release|x86.Build.0 = Release|Any CPU
{159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Debug|x64.Build.0 = Debug|Any CPU
+ {159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Debug|x86.Build.0 = Debug|Any CPU
{159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Release|x64.ActiveCfg = Release|Any CPU
+ {159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Release|x64.Build.0 = Release|Any CPU
+ {159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Release|x86.ActiveCfg = Release|Any CPU
+ {159E73C1-60F9-0D39-9CA1-79EC99187FDC}.Release|x86.Build.0 = Release|Any CPU
{4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Debug|x64.Build.0 = Debug|Any CPU
+ {4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Debug|x86.Build.0 = Debug|Any CPU
{4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Release|x64.ActiveCfg = Release|Any CPU
+ {4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Release|x64.Build.0 = Release|Any CPU
+ {4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Release|x86.ActiveCfg = Release|Any CPU
+ {4E8D5DEA-6FB5-8878-0029-584C8F0D2D68}.Release|x86.Build.0 = Release|Any CPU
{76E6A59C-4F67-40D7-9354-1370893F16A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{76E6A59C-4F67-40D7-9354-1370893F16A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {76E6A59C-4F67-40D7-9354-1370893F16A9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {76E6A59C-4F67-40D7-9354-1370893F16A9}.Debug|x64.Build.0 = Debug|Any CPU
+ {76E6A59C-4F67-40D7-9354-1370893F16A9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {76E6A59C-4F67-40D7-9354-1370893F16A9}.Debug|x86.Build.0 = Debug|Any CPU
{76E6A59C-4F67-40D7-9354-1370893F16A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{76E6A59C-4F67-40D7-9354-1370893F16A9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {76E6A59C-4F67-40D7-9354-1370893F16A9}.Release|x64.ActiveCfg = Release|Any CPU
+ {76E6A59C-4F67-40D7-9354-1370893F16A9}.Release|x64.Build.0 = Release|Any CPU
+ {76E6A59C-4F67-40D7-9354-1370893F16A9}.Release|x86.ActiveCfg = Release|Any CPU
+ {76E6A59C-4F67-40D7-9354-1370893F16A9}.Release|x86.Build.0 = Release|Any CPU
{37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Debug|x64.Build.0 = Debug|Any CPU
+ {37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Debug|x86.Build.0 = Debug|Any CPU
{37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Release|x64.ActiveCfg = Release|Any CPU
+ {37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Release|x64.Build.0 = Release|Any CPU
+ {37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Release|x86.ActiveCfg = Release|Any CPU
+ {37F3C251-9ADC-4BE8-81A5-C86C563901FF}.Release|x86.Build.0 = Release|Any CPU
{35A66308-5507-4540-A602-13AEAD643726}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35A66308-5507-4540-A602-13AEAD643726}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {35A66308-5507-4540-A602-13AEAD643726}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {35A66308-5507-4540-A602-13AEAD643726}.Debug|x64.Build.0 = Debug|Any CPU
+ {35A66308-5507-4540-A602-13AEAD643726}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {35A66308-5507-4540-A602-13AEAD643726}.Debug|x86.Build.0 = Debug|Any CPU
{35A66308-5507-4540-A602-13AEAD643726}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35A66308-5507-4540-A602-13AEAD643726}.Release|Any CPU.Build.0 = Release|Any CPU
+ {35A66308-5507-4540-A602-13AEAD643726}.Release|x64.ActiveCfg = Release|Any CPU
+ {35A66308-5507-4540-A602-13AEAD643726}.Release|x64.Build.0 = Release|Any CPU
+ {35A66308-5507-4540-A602-13AEAD643726}.Release|x86.ActiveCfg = Release|Any CPU
+ {35A66308-5507-4540-A602-13AEAD643726}.Release|x86.Build.0 = Release|Any CPU
{15E2C80B-87B4-4EF1-B297-A476F0E88354}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{15E2C80B-87B4-4EF1-B297-A476F0E88354}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {15E2C80B-87B4-4EF1-B297-A476F0E88354}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {15E2C80B-87B4-4EF1-B297-A476F0E88354}.Debug|x64.Build.0 = Debug|Any CPU
+ {15E2C80B-87B4-4EF1-B297-A476F0E88354}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {15E2C80B-87B4-4EF1-B297-A476F0E88354}.Debug|x86.Build.0 = Debug|Any CPU
{15E2C80B-87B4-4EF1-B297-A476F0E88354}.Release|Any CPU.ActiveCfg = Release|Any CPU
{15E2C80B-87B4-4EF1-B297-A476F0E88354}.Release|Any CPU.Build.0 = Release|Any CPU
+ {15E2C80B-87B4-4EF1-B297-A476F0E88354}.Release|x64.ActiveCfg = Release|Any CPU
+ {15E2C80B-87B4-4EF1-B297-A476F0E88354}.Release|x64.Build.0 = Release|Any CPU
+ {15E2C80B-87B4-4EF1-B297-A476F0E88354}.Release|x86.ActiveCfg = Release|Any CPU
+ {15E2C80B-87B4-4EF1-B297-A476F0E88354}.Release|x86.Build.0 = Release|Any CPU
{558C71AF-080C-4795-B7A3-885852CFC0BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{558C71AF-080C-4795-B7A3-885852CFC0BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {558C71AF-080C-4795-B7A3-885852CFC0BC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {558C71AF-080C-4795-B7A3-885852CFC0BC}.Debug|x64.Build.0 = Debug|Any CPU
+ {558C71AF-080C-4795-B7A3-885852CFC0BC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {558C71AF-080C-4795-B7A3-885852CFC0BC}.Debug|x86.Build.0 = Debug|Any CPU
{558C71AF-080C-4795-B7A3-885852CFC0BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{558C71AF-080C-4795-B7A3-885852CFC0BC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {558C71AF-080C-4795-B7A3-885852CFC0BC}.Release|x64.ActiveCfg = Release|Any CPU
+ {558C71AF-080C-4795-B7A3-885852CFC0BC}.Release|x64.Build.0 = Release|Any CPU
+ {558C71AF-080C-4795-B7A3-885852CFC0BC}.Release|x86.ActiveCfg = Release|Any CPU
+ {558C71AF-080C-4795-B7A3-885852CFC0BC}.Release|x86.Build.0 = Release|Any CPU
{64AB629A-BE06-455C-98DF-C961623928BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{64AB629A-BE06-455C-98DF-C961623928BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {64AB629A-BE06-455C-98DF-C961623928BB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {64AB629A-BE06-455C-98DF-C961623928BB}.Debug|x64.Build.0 = Debug|Any CPU
+ {64AB629A-BE06-455C-98DF-C961623928BB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {64AB629A-BE06-455C-98DF-C961623928BB}.Debug|x86.Build.0 = Debug|Any CPU
{64AB629A-BE06-455C-98DF-C961623928BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{64AB629A-BE06-455C-98DF-C961623928BB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {64AB629A-BE06-455C-98DF-C961623928BB}.Release|x64.ActiveCfg = Release|Any CPU
+ {64AB629A-BE06-455C-98DF-C961623928BB}.Release|x64.Build.0 = Release|Any CPU
+ {64AB629A-BE06-455C-98DF-C961623928BB}.Release|x86.ActiveCfg = Release|Any CPU
+ {64AB629A-BE06-455C-98DF-C961623928BB}.Release|x86.Build.0 = Release|Any CPU
{3DD78303-DF05-4FCA-8DC7-B6503B182264}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3DD78303-DF05-4FCA-8DC7-B6503B182264}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3DD78303-DF05-4FCA-8DC7-B6503B182264}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3DD78303-DF05-4FCA-8DC7-B6503B182264}.Debug|x64.Build.0 = Debug|Any CPU
+ {3DD78303-DF05-4FCA-8DC7-B6503B182264}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3DD78303-DF05-4FCA-8DC7-B6503B182264}.Debug|x86.Build.0 = Debug|Any CPU
{3DD78303-DF05-4FCA-8DC7-B6503B182264}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3DD78303-DF05-4FCA-8DC7-B6503B182264}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3DD78303-DF05-4FCA-8DC7-B6503B182264}.Release|x64.ActiveCfg = Release|Any CPU
+ {3DD78303-DF05-4FCA-8DC7-B6503B182264}.Release|x64.Build.0 = Release|Any CPU
+ {3DD78303-DF05-4FCA-8DC7-B6503B182264}.Release|x86.ActiveCfg = Release|Any CPU
+ {3DD78303-DF05-4FCA-8DC7-B6503B182264}.Release|x86.Build.0 = Release|Any CPU
{28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Debug|x64.Build.0 = Debug|Any CPU
+ {28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Debug|x86.Build.0 = Debug|Any CPU
{28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Release|Any CPU.ActiveCfg = Release|Any CPU
{28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Release|Any CPU.Build.0 = Release|Any CPU
+ {28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Release|x64.ActiveCfg = Release|Any CPU
+ {28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Release|x64.Build.0 = Release|Any CPU
+ {28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Release|x86.ActiveCfg = Release|Any CPU
+ {28D04FA3-4DCC-4137-8ED4-9F6F1A815909}.Release|x86.Build.0 = Release|Any CPU
{D620FC48-5B8E-4010-86DE-20628364AA6E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D620FC48-5B8E-4010-86DE-20628364AA6E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D620FC48-5B8E-4010-86DE-20628364AA6E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D620FC48-5B8E-4010-86DE-20628364AA6E}.Debug|x64.Build.0 = Debug|Any CPU
+ {D620FC48-5B8E-4010-86DE-20628364AA6E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D620FC48-5B8E-4010-86DE-20628364AA6E}.Debug|x86.Build.0 = Debug|Any CPU
{D620FC48-5B8E-4010-86DE-20628364AA6E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D620FC48-5B8E-4010-86DE-20628364AA6E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D620FC48-5B8E-4010-86DE-20628364AA6E}.Release|x64.ActiveCfg = Release|Any CPU
+ {D620FC48-5B8E-4010-86DE-20628364AA6E}.Release|x64.Build.0 = Release|Any CPU
+ {D620FC48-5B8E-4010-86DE-20628364AA6E}.Release|x86.ActiveCfg = Release|Any CPU
+ {D620FC48-5B8E-4010-86DE-20628364AA6E}.Release|x86.Build.0 = Release|Any CPU
{53F9BF60-127F-4F86-9B33-34445BFA512D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{53F9BF60-127F-4F86-9B33-34445BFA512D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {53F9BF60-127F-4F86-9B33-34445BFA512D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {53F9BF60-127F-4F86-9B33-34445BFA512D}.Debug|x64.Build.0 = Debug|Any CPU
+ {53F9BF60-127F-4F86-9B33-34445BFA512D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {53F9BF60-127F-4F86-9B33-34445BFA512D}.Debug|x86.Build.0 = Debug|Any CPU
{53F9BF60-127F-4F86-9B33-34445BFA512D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{53F9BF60-127F-4F86-9B33-34445BFA512D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {53F9BF60-127F-4F86-9B33-34445BFA512D}.Release|x64.ActiveCfg = Release|Any CPU
+ {53F9BF60-127F-4F86-9B33-34445BFA512D}.Release|x64.Build.0 = Release|Any CPU
+ {53F9BF60-127F-4F86-9B33-34445BFA512D}.Release|x86.ActiveCfg = Release|Any CPU
+ {53F9BF60-127F-4F86-9B33-34445BFA512D}.Release|x86.Build.0 = Release|Any CPU
{89D15E59-B0BF-4525-99FA-B61BA8451241}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{89D15E59-B0BF-4525-99FA-B61BA8451241}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {89D15E59-B0BF-4525-99FA-B61BA8451241}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {89D15E59-B0BF-4525-99FA-B61BA8451241}.Debug|x64.Build.0 = Debug|Any CPU
+ {89D15E59-B0BF-4525-99FA-B61BA8451241}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {89D15E59-B0BF-4525-99FA-B61BA8451241}.Debug|x86.Build.0 = Debug|Any CPU
{89D15E59-B0BF-4525-99FA-B61BA8451241}.Release|Any CPU.ActiveCfg = Release|Any CPU
{89D15E59-B0BF-4525-99FA-B61BA8451241}.Release|Any CPU.Build.0 = Release|Any CPU
+ {89D15E59-B0BF-4525-99FA-B61BA8451241}.Release|x64.ActiveCfg = Release|Any CPU
+ {89D15E59-B0BF-4525-99FA-B61BA8451241}.Release|x64.Build.0 = Release|Any CPU
+ {89D15E59-B0BF-4525-99FA-B61BA8451241}.Release|x86.ActiveCfg = Release|Any CPU
+ {89D15E59-B0BF-4525-99FA-B61BA8451241}.Release|x86.Build.0 = Release|Any CPU
{AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Debug|x64.Build.0 = Debug|Any CPU
+ {AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Debug|x86.Build.0 = Debug|Any CPU
{AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Release|x64.ActiveCfg = Release|Any CPU
+ {AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Release|x64.Build.0 = Release|Any CPU
+ {AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Release|x86.ActiveCfg = Release|Any CPU
+ {AD00BDF9-33FF-4D5F-9E62-0241ABBB1A5E}.Release|x86.Build.0 = Release|Any CPU
{309E068D-35DA-454B-9A81-460507EDE5FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{309E068D-35DA-454B-9A81-460507EDE5FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {309E068D-35DA-454B-9A81-460507EDE5FC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {309E068D-35DA-454B-9A81-460507EDE5FC}.Debug|x64.Build.0 = Debug|Any CPU
+ {309E068D-35DA-454B-9A81-460507EDE5FC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {309E068D-35DA-454B-9A81-460507EDE5FC}.Debug|x86.Build.0 = Debug|Any CPU
{309E068D-35DA-454B-9A81-460507EDE5FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{309E068D-35DA-454B-9A81-460507EDE5FC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {309E068D-35DA-454B-9A81-460507EDE5FC}.Release|x64.ActiveCfg = Release|Any CPU
+ {309E068D-35DA-454B-9A81-460507EDE5FC}.Release|x64.Build.0 = Release|Any CPU
+ {309E068D-35DA-454B-9A81-460507EDE5FC}.Release|x86.ActiveCfg = Release|Any CPU
+ {309E068D-35DA-454B-9A81-460507EDE5FC}.Release|x86.Build.0 = Release|Any CPU
{9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Debug|x64.Build.0 = Debug|Any CPU
+ {9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Debug|x86.Build.0 = Debug|Any CPU
{9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Release|x64.ActiveCfg = Release|Any CPU
+ {9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Release|x64.Build.0 = Release|Any CPU
+ {9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Release|x86.ActiveCfg = Release|Any CPU
+ {9C17B964-9EB5-4B98-A1E6-D036BDE61CA9}.Release|x86.Build.0 = Release|Any CPU
{BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Debug|x64.Build.0 = Debug|Any CPU
+ {BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Debug|x86.Build.0 = Debug|Any CPU
{BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Release|x64.ActiveCfg = Release|Any CPU
+ {BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Release|x64.Build.0 = Release|Any CPU
+ {BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Release|x86.ActiveCfg = Release|Any CPU
+ {BF32CF40-2E0C-4A50-B4C4-44447BFAC94C}.Release|x86.Build.0 = Release|Any CPU
{8F137974-568B-4975-8E2C-BEFB828E2AF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8F137974-568B-4975-8E2C-BEFB828E2AF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8F137974-568B-4975-8E2C-BEFB828E2AF9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8F137974-568B-4975-8E2C-BEFB828E2AF9}.Debug|x64.Build.0 = Debug|Any CPU
+ {8F137974-568B-4975-8E2C-BEFB828E2AF9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8F137974-568B-4975-8E2C-BEFB828E2AF9}.Debug|x86.Build.0 = Debug|Any CPU
{8F137974-568B-4975-8E2C-BEFB828E2AF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8F137974-568B-4975-8E2C-BEFB828E2AF9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8F137974-568B-4975-8E2C-BEFB828E2AF9}.Release|x64.ActiveCfg = Release|Any CPU
+ {8F137974-568B-4975-8E2C-BEFB828E2AF9}.Release|x64.Build.0 = Release|Any CPU
+ {8F137974-568B-4975-8E2C-BEFB828E2AF9}.Release|x86.ActiveCfg = Release|Any CPU
+ {8F137974-568B-4975-8E2C-BEFB828E2AF9}.Release|x86.Build.0 = Release|Any CPU
{19F7E807-CEF2-4161-90BF-E2D44814C00C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{19F7E807-CEF2-4161-90BF-E2D44814C00C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {19F7E807-CEF2-4161-90BF-E2D44814C00C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {19F7E807-CEF2-4161-90BF-E2D44814C00C}.Debug|x64.Build.0 = Debug|Any CPU
+ {19F7E807-CEF2-4161-90BF-E2D44814C00C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {19F7E807-CEF2-4161-90BF-E2D44814C00C}.Debug|x86.Build.0 = Debug|Any CPU
{19F7E807-CEF2-4161-90BF-E2D44814C00C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{19F7E807-CEF2-4161-90BF-E2D44814C00C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {19F7E807-CEF2-4161-90BF-E2D44814C00C}.Release|x64.ActiveCfg = Release|Any CPU
+ {19F7E807-CEF2-4161-90BF-E2D44814C00C}.Release|x64.Build.0 = Release|Any CPU
+ {19F7E807-CEF2-4161-90BF-E2D44814C00C}.Release|x86.ActiveCfg = Release|Any CPU
+ {19F7E807-CEF2-4161-90BF-E2D44814C00C}.Release|x86.Build.0 = Release|Any CPU
{DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Debug|x64.Build.0 = Debug|Any CPU
+ {DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Debug|x86.Build.0 = Debug|Any CPU
{DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Release|x64.ActiveCfg = Release|Any CPU
+ {DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Release|x64.Build.0 = Release|Any CPU
+ {DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Release|x86.ActiveCfg = Release|Any CPU
+ {DED1FCAB-BC52-46C5-9F59-9E5F22D55AB9}.Release|x86.Build.0 = Release|Any CPU
{BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Debug|x64.Build.0 = Debug|Any CPU
+ {BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Debug|x86.Build.0 = Debug|Any CPU
{BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Release|x64.ActiveCfg = Release|Any CPU
+ {BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Release|x64.Build.0 = Release|Any CPU
+ {BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Release|x86.ActiveCfg = Release|Any CPU
+ {BEAFAA85-F59E-4097-99E0-98C4AD34D841}.Release|x86.Build.0 = Release|Any CPU
{BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Debug|x64.Build.0 = Debug|Any CPU
+ {BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Debug|x86.Build.0 = Debug|Any CPU
{BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Release|x64.ActiveCfg = Release|Any CPU
+ {BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Release|x64.Build.0 = Release|Any CPU
+ {BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Release|x86.ActiveCfg = Release|Any CPU
+ {BEB35A25-5A80-4B56-A1EC-F005288CD11C}.Release|x86.Build.0 = Release|Any CPU
{015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Debug|x64.Build.0 = Debug|Any CPU
+ {015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Debug|x86.Build.0 = Debug|Any CPU
{015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Release|Any CPU.ActiveCfg = Release|Any CPU
{015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Release|Any CPU.Build.0 = Release|Any CPU
+ {015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Release|x64.ActiveCfg = Release|Any CPU
+ {015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Release|x64.Build.0 = Release|Any CPU
+ {015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Release|x86.ActiveCfg = Release|Any CPU
+ {015646EB-EC33-4ADF-8417-B9D1A6B7CF06}.Release|x86.Build.0 = Release|Any CPU
{A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Debug|x64.Build.0 = Debug|Any CPU
+ {A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Debug|x86.Build.0 = Debug|Any CPU
{A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Release|x64.ActiveCfg = Release|Any CPU
+ {A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Release|x64.Build.0 = Release|Any CPU
+ {A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Release|x86.ActiveCfg = Release|Any CPU
+ {A639E5C3-1A2D-41F9-A2CE-47DBFCA84347}.Release|x86.Build.0 = Release|Any CPU
{F9C596A4-526A-4B16-9CB8-4D188D810775}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F9C596A4-526A-4B16-9CB8-4D188D810775}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F9C596A4-526A-4B16-9CB8-4D188D810775}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F9C596A4-526A-4B16-9CB8-4D188D810775}.Debug|x64.Build.0 = Debug|Any CPU
+ {F9C596A4-526A-4B16-9CB8-4D188D810775}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F9C596A4-526A-4B16-9CB8-4D188D810775}.Debug|x86.Build.0 = Debug|Any CPU
{F9C596A4-526A-4B16-9CB8-4D188D810775}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F9C596A4-526A-4B16-9CB8-4D188D810775}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F9C596A4-526A-4B16-9CB8-4D188D810775}.Release|x64.ActiveCfg = Release|Any CPU
+ {F9C596A4-526A-4B16-9CB8-4D188D810775}.Release|x64.Build.0 = Release|Any CPU
+ {F9C596A4-526A-4B16-9CB8-4D188D810775}.Release|x86.ActiveCfg = Release|Any CPU
+ {F9C596A4-526A-4B16-9CB8-4D188D810775}.Release|x86.Build.0 = Release|Any CPU
{7055576E-1144-4726-BA88-DF89F2A13FA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7055576E-1144-4726-BA88-DF89F2A13FA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7055576E-1144-4726-BA88-DF89F2A13FA8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7055576E-1144-4726-BA88-DF89F2A13FA8}.Debug|x64.Build.0 = Debug|Any CPU
+ {7055576E-1144-4726-BA88-DF89F2A13FA8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7055576E-1144-4726-BA88-DF89F2A13FA8}.Debug|x86.Build.0 = Debug|Any CPU
{7055576E-1144-4726-BA88-DF89F2A13FA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7055576E-1144-4726-BA88-DF89F2A13FA8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7055576E-1144-4726-BA88-DF89F2A13FA8}.Release|x64.ActiveCfg = Release|Any CPU
+ {7055576E-1144-4726-BA88-DF89F2A13FA8}.Release|x64.Build.0 = Release|Any CPU
+ {7055576E-1144-4726-BA88-DF89F2A13FA8}.Release|x86.ActiveCfg = Release|Any CPU
+ {7055576E-1144-4726-BA88-DF89F2A13FA8}.Release|x86.Build.0 = Release|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Debug|x64.Build.0 = Debug|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Debug|x86.Build.0 = Debug|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Release|x64.ActiveCfg = Release|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Release|x64.Build.0 = Release|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Release|x86.ActiveCfg = Release|Any CPU
+ {A904A0FC-9D73-4349-90A3-498053B43CD6}.Release|x86.Build.0 = Release|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Debug|x64.Build.0 = Debug|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Debug|x86.Build.0 = Debug|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Release|x64.ActiveCfg = Release|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Release|x64.Build.0 = Release|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Release|x86.ActiveCfg = Release|Any CPU
+ {E87F26AD-1F6B-4723-A3B8-4EC761B08382}.Release|x86.Build.0 = Release|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Debug|x64.Build.0 = Debug|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Debug|x86.Build.0 = Debug|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Release|x64.ActiveCfg = Release|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Release|x64.Build.0 = Release|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Release|x86.ActiveCfg = Release|Any CPU
+ {C3D4E5F6-7890-1234-5678-90ABCDEF1234}.Release|x86.Build.0 = Release|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Debug|x64.Build.0 = Debug|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Debug|x86.Build.0 = Debug|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Release|x64.ActiveCfg = Release|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Release|x64.Build.0 = Release|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Release|x86.ActiveCfg = Release|Any CPU
+ {AF9D6B51-19A5-451F-8225-2F1348835A3A}.Release|x86.Build.0 = Release|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Debug|x64.Build.0 = Debug|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Debug|x86.Build.0 = Debug|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Release|x64.ActiveCfg = Release|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Release|x64.Build.0 = Release|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Release|x86.ActiveCfg = Release|Any CPU
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB}.Release|x86.Build.0 = Release|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Debug|x64.Build.0 = Debug|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Debug|x86.Build.0 = Debug|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Release|x64.ActiveCfg = Release|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Release|x64.Build.0 = Release|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Release|x86.ActiveCfg = Release|Any CPU
+ {50798373-8A89-4159-BFD9-830D259538D6}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{3948BAF0-023F-4B43-8E77-56C3B00C6EFD} = {D0212324-351E-4CA6-95EE-27754B5367CC}
+ {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {30CF0330-4B09-4784-B499-46BED303810B}
+ {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} = {30CF0330-4B09-4784-B499-46BED303810B}
+ {AAD61D93-7C78-42C4-9F37-2564D127A668} = {30CF0330-4B09-4784-B499-46BED303810B}
+ {5220DB25-20E9-4D07-801C-A970E71FB21C} = {30CF0330-4B09-4784-B499-46BED303810B}
+ {897A92CE-3B9D-43DA-BBDE-085A6AA0BF33} = {30CF0330-4B09-4784-B499-46BED303810B}
+ {44E2676B-6F07-44F1-9FAB-4A961A1ECEDE} = {30CF0330-4B09-4784-B499-46BED303810B}
{4B5DB45A-2716-1FDE-8EC7-1AC75FFA30F2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{78CBE43C-0EF2-048E-987B-A603A38099E6} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{AA90183E-F009-F88A-9081-BAB6E5ED6B22} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{266D14A8-4D8F-795F-169F-A7E7B4F23D1E} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{3E782B62-87D8-F5FD-CA2D-0D524C5BB530} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {2BF08754-1FB0-405D-9F0C-1BEFF9084E6E} = {30CF0330-4B09-4784-B499-46BED303810B}
{6B6CC05A-1C2D-C567-3D0B-C5E87A042EEB} = {2BF08754-1FB0-405D-9F0C-1BEFF9084E6E}
{EC7C3333-59C3-5ACE-C84C-5E135964348C} = {5220DB25-20E9-4D07-801C-A970E71FB21C}
{52E6A127-2F77-547F-2917-E6C6AAB1CC64} = {5220DB25-20E9-4D07-801C-A970E71FB21C}
@@ -675,28 +1476,39 @@ Global
{1FD27C49-8173-249A-80E9-DBA071A56E8D} = {2BF08754-1FB0-405D-9F0C-1BEFF9084E6E}
{4C4DAF3C-DE71-F6B3-F3A3-15583A8B719F} = {2BF08754-1FB0-405D-9F0C-1BEFF9084E6E}
{BB81E01D-7453-9068-B1E3-90E3072C820B} = {2BF08754-1FB0-405D-9F0C-1BEFF9084E6E}
+ {F670C86F-ACDA-4549-B9E1-E530B1ED5538} = {30CF0330-4B09-4784-B499-46BED303810B}
{95C8EFEE-9396-F334-9B76-78322650A0C6} = {F670C86F-ACDA-4549-B9E1-E530B1ED5538}
+ {9732C4B1-3E94-4705-8CBE-1DC48F55C8EA} = {30CF0330-4B09-4784-B499-46BED303810B}
{C568B847-15AB-C4DB-5675-0D5F400ED14D} = {9732C4B1-3E94-4705-8CBE-1DC48F55C8EA}
{C4D65789-A62A-DAD5-7246-A0E476F86CDF} = {9732C4B1-3E94-4705-8CBE-1DC48F55C8EA}
{F5B2629A-E0C9-9B73-4941-DD44DD557A9B} = {9732C4B1-3E94-4705-8CBE-1DC48F55C8EA}
+ {B5E5264A-5DF3-4A23-8387-D3C10A9B1F9B} = {30CF0330-4B09-4784-B499-46BED303810B}
{43591B08-CC42-9C1D-480E-DFA6C1E1B59A} = {B5E5264A-5DF3-4A23-8387-D3C10A9B1F9B}
{B8311F08-4555-25E2-A8E5-1EE95A8F2A26} = {B5E5264A-5DF3-4A23-8387-D3C10A9B1F9B}
{5E7A6A10-3533-D6CD-D4CA-6C2741E3D9F8} = {B5E5264A-5DF3-4A23-8387-D3C10A9B1F9B}
{70C03970-8EF8-A0A7-83DB-541987BEE4F6} = {B5E5264A-5DF3-4A23-8387-D3C10A9B1F9B}
{0F20AEFD-EBD8-A0B4-279E-5E41AF73BC1A} = {B5E5264A-5DF3-4A23-8387-D3C10A9B1F9B}
{2D72DB60-227D-49F0-44F0-9FAF52244EB6} = {B5E5264A-5DF3-4A23-8387-D3C10A9B1F9B}
+ {91656D55-A0E6-45B6-B48D-24DF192DAD02} = {30CF0330-4B09-4784-B499-46BED303810B}
{47F17474-6841-126A-ADF8-DD2A7631C8C6} = {91656D55-A0E6-45B6-B48D-24DF192DAD02}
{D0CFE3DE-32FB-ECF3-5B2B-F97661AC0ED4} = {91656D55-A0E6-45B6-B48D-24DF192DAD02}
{2D745C3D-A97B-8538-71D4-0DB9ADB13ECB} = {91656D55-A0E6-45B6-B48D-24DF192DAD02}
{41A9C3FC-6F99-1EA8-3EB4-3638AF172CB5} = {91656D55-A0E6-45B6-B48D-24DF192DAD02}
{9250D8B1-9D69-A957-D378-8173686A0F9C} = {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E}
{FE487F94-5242-C0C7-884A-3EE8FB8FC24E} = {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E}
+ {559A9049-76C1-421C-9295-32ED7438D52E} = {30CF0330-4B09-4784-B499-46BED303810B}
{C2721BCB-2FB1-9227-AABB-ED768EB292FD} = {559A9049-76C1-421C-9295-32ED7438D52E}
+ {0EB9AB19-0C85-4551-8347-F3D330614B47} = {30CF0330-4B09-4784-B499-46BED303810B}
{4C24646E-B017-9C72-5E5E-27EEE2F23D7B} = {0EB9AB19-0C85-4551-8347-F3D330614B47}
+ {A0EEAF46-1B46-4C7D-A7E4-863814F87C4B} = {30CF0330-4B09-4784-B499-46BED303810B}
{B39D92DE-334C-BFD7-2A0D-6EC2626E445C} = {A0EEAF46-1B46-4C7D-A7E4-863814F87C4B}
{0CA52158-CBB6-74FC-B63F-812E059053A4} = {A0EEAF46-1B46-4C7D-A7E4-863814F87C4B}
+ {EB873525-AE02-4406-AC78-5996DE781573} = {30CF0330-4B09-4784-B499-46BED303810B}
+ {A130EEF5-7DF0-40CB-BD71-744716F0BCE7} = {30CF0330-4B09-4784-B499-46BED303810B}
{ABC40471-5A32-0AC0-594B-FF19B66E2493} = {A130EEF5-7DF0-40CB-BD71-744716F0BCE7}
+ {E0C43181-76BA-47C7-93CC-6CE0F577F14B} = {30CF0330-4B09-4784-B499-46BED303810B}
{719BCAE9-BF9C-75D9-E551-782D6FD6421C} = {E0C43181-76BA-47C7-93CC-6CE0F577F14B}
+ {BF696EF4-FEAE-4008-A788-369437420259} = {30CF0330-4B09-4784-B499-46BED303810B}
{A5E2E986-8CA8-3F4E-C2B4-C874A0780C0F} = {BF696EF4-FEAE-4008-A788-369437420259}
{D03AF84C-BAAD-50E9-A561-CE5604442A35} = {BF696EF4-FEAE-4008-A788-369437420259}
{93F9B20D-47AB-87ED-A9AA-005F631C4CA2} = {BF696EF4-FEAE-4008-A788-369437420259}
@@ -706,6 +1518,7 @@ Global
{081E6F32-A418-0F77-3BFE-223903CFBA96} = {BF696EF4-FEAE-4008-A788-369437420259}
{B130CDB8-E048-9D95-3FEA-BF71F556C40F} = {BF696EF4-FEAE-4008-A788-369437420259}
{4E2F05DA-C902-293B-90E9-58583ED0D267} = {BF696EF4-FEAE-4008-A788-369437420259}
+ {04265302-AF6B-4627-807C-DE9E1699D7C9} = {30CF0330-4B09-4784-B499-46BED303810B}
{22EF03B2-6BA9-B8BD-A627-4249397F9299} = {04265302-AF6B-4627-807C-DE9E1699D7C9}
{0D391CA4-9C36-BC86-1505-D05F13AE8FFC} = {EB873525-AE02-4406-AC78-5996DE781573}
{66F9CCE6-A423-B568-1CF5-8CACC6F1FEE7} = {EB873525-AE02-4406-AC78-5996DE781573}
@@ -716,33 +1529,15 @@ Global
{C818B0E4-6019-3E0C-EE4C-17248430319E} = {BF696EF4-FEAE-4008-A788-369437420259}
{D29C4DFC-A392-7DFA-C85D-01827CD4A360} = {A130EEF5-7DF0-40CB-BD71-744716F0BCE7}
{E6BD7D7F-3CC5-EE66-577D-19015EFD03D8} = {04265302-AF6B-4627-807C-DE9E1699D7C9}
+ {7D32914F-1D75-4E01-A0D1-BBF67789A0E5} = {30CF0330-4B09-4784-B499-46BED303810B}
{159E73C1-60F9-0D39-9CA1-79EC99187FDC} = {7D32914F-1D75-4E01-A0D1-BBF67789A0E5}
+ {9B6DFC6C-2514-4784-9952-9B0B913434F9} = {30CF0330-4B09-4784-B499-46BED303810B}
{4E8D5DEA-6FB5-8878-0029-584C8F0D2D68} = {9B6DFC6C-2514-4784-9952-9B0B913434F9}
{F4CD4668-A0D0-4CD7-91C1-09EE80A03C26} = {527248D6-B851-4C8D-8667-E2FB0A91DABF}
{76E6A59C-4F67-40D7-9354-1370893F16A9} = {F4CD4668-A0D0-4CD7-91C1-09EE80A03C26}
{37F3C251-9ADC-4BE8-81A5-C86C563901FF} = {F4CD4668-A0D0-4CD7-91C1-09EE80A03C26}
{35A66308-5507-4540-A602-13AEAD643726} = {F4CD4668-A0D0-4CD7-91C1-09EE80A03C26}
{30CF0330-4B09-4784-B499-46BED303810B} = {527248D6-B851-4C8D-8667-E2FB0A91DABF}
- {559A9049-76C1-421C-9295-32ED7438D52E} = {30CF0330-4B09-4784-B499-46BED303810B}
- {5220DB25-20E9-4D07-801C-A970E71FB21C} = {30CF0330-4B09-4784-B499-46BED303810B}
- {F670C86F-ACDA-4549-B9E1-E530B1ED5538} = {30CF0330-4B09-4784-B499-46BED303810B}
- {9732C4B1-3E94-4705-8CBE-1DC48F55C8EA} = {30CF0330-4B09-4784-B499-46BED303810B}
- {B5E5264A-5DF3-4A23-8387-D3C10A9B1F9B} = {30CF0330-4B09-4784-B499-46BED303810B}
- {9B6DFC6C-2514-4784-9952-9B0B913434F9} = {30CF0330-4B09-4784-B499-46BED303810B}
- {A0EEAF46-1B46-4C7D-A7E4-863814F87C4B} = {30CF0330-4B09-4784-B499-46BED303810B}
- {E0C43181-76BA-47C7-93CC-6CE0F577F14B} = {30CF0330-4B09-4784-B499-46BED303810B}
- {A130EEF5-7DF0-40CB-BD71-744716F0BCE7} = {30CF0330-4B09-4784-B499-46BED303810B}
- {AAD61D93-7C78-42C4-9F37-2564D127A668} = {30CF0330-4B09-4784-B499-46BED303810B}
- {91656D55-A0E6-45B6-B48D-24DF192DAD02} = {30CF0330-4B09-4784-B499-46BED303810B}
- {0EB9AB19-0C85-4551-8347-F3D330614B47} = {30CF0330-4B09-4784-B499-46BED303810B}
- {7D32914F-1D75-4E01-A0D1-BBF67789A0E5} = {30CF0330-4B09-4784-B499-46BED303810B}
- {EB873525-AE02-4406-AC78-5996DE781573} = {30CF0330-4B09-4784-B499-46BED303810B}
- {BF696EF4-FEAE-4008-A788-369437420259} = {30CF0330-4B09-4784-B499-46BED303810B}
- {2BF08754-1FB0-405D-9F0C-1BEFF9084E6E} = {30CF0330-4B09-4784-B499-46BED303810B}
- {897A92CE-3B9D-43DA-BBDE-085A6AA0BF33} = {30CF0330-4B09-4784-B499-46BED303810B}
- {02EA681E-C7D8-13C7-8484-4AC65E1B71E8} = {30CF0330-4B09-4784-B499-46BED303810B}
- {45B793EC-7BFF-45C0-BD0E-2D1601C8D01E} = {30CF0330-4B09-4784-B499-46BED303810B}
- {44E2676B-6F07-44F1-9FAB-4A961A1ECEDE} = {30CF0330-4B09-4784-B499-46BED303810B}
{3DDE6F89-531C-47F8-9CD7-7A4E6984FA48} = {A99FA26E-2098-403A-BD04-6BBCFBE3AC7D}
{26C9B7F3-20A4-4639-B913-7A86679EBB33} = {3DDE6F89-531C-47F8-9CD7-7A4E6984FA48}
{15E2C80B-87B4-4EF1-B297-A476F0E88354} = {26C9B7F3-20A4-4639-B913-7A86679EBB33}
@@ -754,7 +1549,6 @@ Global
{3DD78303-DF05-4FCA-8DC7-B6503B182264} = {04087802-CE19-4700-A4A9-536D7537F927}
{8D0EC628-350F-47FC-8B36-DD98B4B7CC93} = {30CF0330-4B09-4784-B499-46BED303810B}
{28D04FA3-4DCC-4137-8ED4-9F6F1A815909} = {8D0EC628-350F-47FC-8B36-DD98B4B7CC93}
- {04265302-AF6B-4627-807C-DE9E1699D7C9} = {30CF0330-4B09-4784-B499-46BED303810B}
{9B363CC3-1F38-409B-8E0D-E2C13019902A} = {30CF0330-4B09-4784-B499-46BED303810B}
{D620FC48-5B8E-4010-86DE-20628364AA6E} = {9B363CC3-1F38-409B-8E0D-E2C13019902A}
{53F9BF60-127F-4F86-9B33-34445BFA512D} = {9B363CC3-1F38-409B-8E0D-E2C13019902A}
@@ -774,6 +1568,9 @@ Global
{A639E5C3-1A2D-41F9-A2CE-47DBFCA84347} = {5220DB25-20E9-4D07-801C-A970E71FB21C}
{F9C596A4-526A-4B16-9CB8-4D188D810775} = {5220DB25-20E9-4D07-801C-A970E71FB21C}
{7055576E-1144-4726-BA88-DF89F2A13FA8} = {5220DB25-20E9-4D07-801C-A970E71FB21C}
+ {6E46B8AD-FA47-474F-B959-0B530771C28C} = {3DDE6F89-531C-47F8-9CD7-7A4E6984FA48}
+ {65B9F528-568B-4E0E-894E-F22E0B7C64BB} = {6E46B8AD-FA47-474F-B959-0B530771C28C}
+ {50798373-8A89-4159-BFD9-830D259538D6} = {6E46B8AD-FA47-474F-B959-0B530771C28C}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {11A771DA-B728-445E-8A88-AE1C84C3B3A6}
diff --git a/src/modules/scheduling/Elsa.Scheduling.Quartz.EFCore.MySql/MySqlQuartzExtensions.cs b/src/modules/scheduling/Elsa.Scheduling.Quartz.EFCore.MySql/MySqlQuartzExtensions.cs
index 2f4c17d0..937f788f 100644
--- a/src/modules/scheduling/Elsa.Scheduling.Quartz.EFCore.MySql/MySqlQuartzExtensions.cs
+++ b/src/modules/scheduling/Elsa.Scheduling.Quartz.EFCore.MySql/MySqlQuartzExtensions.cs
@@ -35,7 +35,7 @@ public static QuartzFeature UseMySql(this QuartzFeature feature, string connecti
store.UseClustering();
});
};
-
+
feature.Module.ConfigureHostedService>(-100);
return feature;
diff --git a/src/modules/scheduling/Elsa.Scheduling.Quartz/Contracts/IQuartzJobRetryScheduler.cs b/src/modules/scheduling/Elsa.Scheduling.Quartz/Contracts/IQuartzJobRetryScheduler.cs
new file mode 100644
index 00000000..2d355d88
--- /dev/null
+++ b/src/modules/scheduling/Elsa.Scheduling.Quartz/Contracts/IQuartzJobRetryScheduler.cs
@@ -0,0 +1,14 @@
+using Quartz;
+
+namespace Elsa.Scheduling.Quartz.Contracts;
+
+///
+/// Schedules retries for Quartz jobs.
+///
+public interface IQuartzJobRetryScheduler
+{
+ ///
+ /// Reschedules the trigger of the current job for a retry using the configured retry delay.
+ ///
+ Task ScheduleRetryAsync(IJobExecutionContext context, CancellationToken cancellationToken = default);
+}
diff --git a/src/modules/scheduling/Elsa.Scheduling.Quartz/Elsa.Scheduling.Quartz.csproj b/src/modules/scheduling/Elsa.Scheduling.Quartz/Elsa.Scheduling.Quartz.csproj
index b4d74829..859ada8d 100644
--- a/src/modules/scheduling/Elsa.Scheduling.Quartz/Elsa.Scheduling.Quartz.csproj
+++ b/src/modules/scheduling/Elsa.Scheduling.Quartz/Elsa.Scheduling.Quartz.csproj
@@ -13,10 +13,12 @@
+
+
\ No newline at end of file
diff --git a/src/modules/scheduling/Elsa.Scheduling.Quartz/Features/QuartzSchedulerFeature.cs b/src/modules/scheduling/Elsa.Scheduling.Quartz/Features/QuartzSchedulerFeature.cs
index b4dd122c..fced1865 100644
--- a/src/modules/scheduling/Elsa.Scheduling.Quartz/Features/QuartzSchedulerFeature.cs
+++ b/src/modules/scheduling/Elsa.Scheduling.Quartz/Features/QuartzSchedulerFeature.cs
@@ -2,12 +2,14 @@
using Elsa.Features.Abstractions;
using Elsa.Features.Attributes;
using Elsa.Features.Services;
-using Elsa.Scheduling.Quartz.Contracts;
using Elsa.Scheduling.Quartz.Handlers;
+using Elsa.Scheduling.Quartz.Options;
using Elsa.Scheduling.Quartz.Services;
using Elsa.Scheduling.Quartz.Tasks;
using Elsa.Scheduling.Features;
+using Elsa.Scheduling.Quartz.Contracts;
using Elsa.Workflows;
+using JetBrains.Annotations;
using Microsoft.Extensions.DependencyInjection;
using Quartz;
@@ -17,8 +19,18 @@ namespace Elsa.Scheduling.Quartz.Features;
/// A feature that installs Quartz.NET implementations for .
///
[DependsOn(typeof(SchedulingFeature))]
+[UsedImplicitly]
public class QuartzSchedulerFeature(IModule module) : FeatureBase(module)
{
+ private Action _configureQuartzJobOptions = _ => { };
+
+ [PublicAPI]
+ public QuartzSchedulerFeature ConfigureOptions(Action configure)
+ {
+ _configureQuartzJobOptions += configure;
+ return this;
+ }
+
///
public override void Configure()
{
@@ -40,7 +52,10 @@ public override void Apply()
.AddSingleton()
.AddScoped()
.AddScoped()
+ .AddSingleton()
.AddStartupTask()
.AddQuartz();
+
+ Services.Configure(_configureQuartzJobOptions);
}
}
\ No newline at end of file
diff --git a/src/modules/scheduling/Elsa.Scheduling.Quartz/Jobs/ResumeWorkflowJob.cs b/src/modules/scheduling/Elsa.Scheduling.Quartz/Jobs/ResumeWorkflowJob.cs
index 9ad115c5..139fabfd 100644
--- a/src/modules/scheduling/Elsa.Scheduling.Quartz/Jobs/ResumeWorkflowJob.cs
+++ b/src/modules/scheduling/Elsa.Scheduling.Quartz/Jobs/ResumeWorkflowJob.cs
@@ -1,9 +1,12 @@
using Elsa.Common;
using Elsa.Common.Multitenancy;
using Elsa.Extensions;
+using Elsa.Resilience;
+using Elsa.Scheduling.Quartz.Contracts;
using Elsa.Workflows.Models;
using Elsa.Workflows.Runtime;
using Elsa.Workflows.Runtime.Messages;
+using Microsoft.Extensions.Logging;
using Quartz;
namespace Elsa.Scheduling.Quartz.Jobs;
@@ -11,7 +14,14 @@ namespace Elsa.Scheduling.Quartz.Jobs;
///
/// A job that resumes a workflow.
///
-public class ResumeWorkflowJob(IWorkflowRuntime workflowRuntime, IJsonSerializer jsonSerializer, ITenantFinder tenantFinder, ITenantAccessor tenantAccessor) : IJob
+public class ResumeWorkflowJob(
+ IWorkflowRuntime workflowRuntime,
+ IJsonSerializer jsonSerializer,
+ ITenantFinder tenantFinder,
+ ITenantAccessor tenantAccessor,
+ ITransientExceptionDetector transientExceptionDetector,
+ IQuartzJobRetryScheduler retryScheduler,
+ ILogger logger) : IJob
{
///
public async Task Execute(IJobExecutionContext context)
@@ -23,15 +33,32 @@ public async Task Execute(IJobExecutionContext context)
var serializedActivityHandle = (string)map.Get(nameof(ScheduleExistingWorkflowInstanceRequest.ActivityHandle));
var activityHandle = serializedActivityHandle != null! ? jsonSerializer.Deserialize(serializedActivityHandle) : null;
var workflowInstanceId = (string)map.Get(nameof(ScheduleExistingWorkflowInstanceRequest.WorkflowInstanceId));
- var workflowClient = await workflowRuntime.CreateClientAsync(workflowInstanceId, context.CancellationToken);
- var request = new RunWorkflowInstanceRequest
+ var cancellationToken = context.CancellationToken;
+
+ try
+ {
+ var workflowClient = await workflowRuntime.CreateClientAsync(workflowInstanceId, cancellationToken);
+ var request = new RunWorkflowInstanceRequest
+ {
+ BookmarkId = (string)map.Get(nameof(ScheduleExistingWorkflowInstanceRequest.BookmarkId)),
+ ActivityHandle = activityHandle,
+ Input = map.GetDictionary(nameof(ScheduleExistingWorkflowInstanceRequest.Input)),
+ Properties = map.GetDictionary(nameof(ScheduleExistingWorkflowInstanceRequest.Properties)),
+ };
+ await workflowClient.RunInstanceAsync(request, cancellationToken: cancellationToken);
+
+ logger.LogInformation("Resumed workflow instance {WorkflowInstanceId}", workflowInstanceId);
+ }
+ catch (Exception e) when (transientExceptionDetector.IsTransient(e))
+ {
+ logger.LogWarning(e, "A transient error occurred while resuming workflow instance {WorkflowInstanceId}. Rescheduling job for retry", workflowInstanceId);
+ await retryScheduler.ScheduleRetryAsync(context, cancellationToken);
+ }
+ catch (Exception e)
{
- BookmarkId = (string)map.Get(nameof(ScheduleExistingWorkflowInstanceRequest.BookmarkId)),
- ActivityHandle = activityHandle,
- Input = map.GetDictionary(nameof(ScheduleExistingWorkflowInstanceRequest.Input)),
- Properties = map.GetDictionary(nameof(ScheduleExistingWorkflowInstanceRequest.Properties)),
- };
- await workflowClient.RunInstanceAsync(request, cancellationToken: context.CancellationToken);
+ logger.LogError(e, "An error occurred while resuming workflow instance {WorkflowInstanceId}", workflowInstanceId);
+ await context.Scheduler.DeleteJob(context.JobDetail.Key, cancellationToken);
+ }
}
}
}
\ No newline at end of file
diff --git a/src/modules/scheduling/Elsa.Scheduling.Quartz/Jobs/RunWorkflowJob.cs b/src/modules/scheduling/Elsa.Scheduling.Quartz/Jobs/RunWorkflowJob.cs
index 7d637dd7..3db56cf2 100644
--- a/src/modules/scheduling/Elsa.Scheduling.Quartz/Jobs/RunWorkflowJob.cs
+++ b/src/modules/scheduling/Elsa.Scheduling.Quartz/Jobs/RunWorkflowJob.cs
@@ -1,8 +1,11 @@
using Elsa.Common.Multitenancy;
using Elsa.Extensions;
+using Elsa.Resilience;
+using Elsa.Scheduling.Quartz.Contracts;
using Elsa.Workflows.Models;
using Elsa.Workflows.Runtime;
using Elsa.Workflows.Runtime.Exceptions;
+using JetBrains.Annotations;
using Microsoft.Extensions.Logging;
using Quartz;
@@ -11,10 +14,13 @@ namespace Elsa.Scheduling.Quartz.Jobs;
///
/// A job that runs a workflow.
///
+[UsedImplicitly]
public class RunWorkflowJob(
ITenantAccessor tenantAccessor,
ITenantFinder tenantFinder,
IWorkflowStarter workflowStarter,
+ ITransientExceptionDetector transientExceptionDetector,
+ IQuartzJobRetryScheduler retryScheduler,
ILogger logger) : IJob
{
///
@@ -54,6 +60,11 @@ public async Task Execute(IJobExecutionContext context)
logger.LogWarning(e, "Could not find workflow graph for workflow definition handle {WorkflowDefinitionHandle}", startRequest.WorkflowDefinitionHandle);
await context.Scheduler.DeleteJob(context.JobDetail.Key, cancellationToken);
}
+ catch (Exception e) when (transientExceptionDetector.IsTransient(e))
+ {
+ logger.LogWarning(e, "A transient error occurred while starting workflow {WorkflowDefinitionHandle} with correlation ID {CorrelationId}. Rescheduling job for retry", startRequest.WorkflowDefinitionHandle, startRequest.CorrelationId);
+ await retryScheduler.ScheduleRetryAsync(context, cancellationToken);
+ }
catch (Exception e)
{
logger.LogError(e, "An error occurred while starting workflow {WorkflowDefinitionHandle} with correlation ID {CorrelationId}", startRequest.WorkflowDefinitionHandle, startRequest.CorrelationId);
diff --git a/src/modules/scheduling/Elsa.Scheduling.Quartz/Options/QuartzJobOptions.cs b/src/modules/scheduling/Elsa.Scheduling.Quartz/Options/QuartzJobOptions.cs
new file mode 100644
index 00000000..62a6c4dc
--- /dev/null
+++ b/src/modules/scheduling/Elsa.Scheduling.Quartz/Options/QuartzJobOptions.cs
@@ -0,0 +1,12 @@
+namespace Elsa.Scheduling.Quartz.Options;
+
+///
+/// Options for Quartz job execution behavior.
+///
+public class QuartzJobOptions
+{
+ ///
+ /// The delay in seconds before rescheduling a job after a transient failure.
+ ///
+ public TimeSpan TransientExceptionRetryDelay { get; set; } = TimeSpan.FromSeconds(10);
+}
diff --git a/src/modules/scheduling/Elsa.Scheduling.Quartz/Services/QuartzJobRetryScheduler.cs b/src/modules/scheduling/Elsa.Scheduling.Quartz/Services/QuartzJobRetryScheduler.cs
new file mode 100644
index 00000000..28dbaeea
--- /dev/null
+++ b/src/modules/scheduling/Elsa.Scheduling.Quartz/Services/QuartzJobRetryScheduler.cs
@@ -0,0 +1,28 @@
+using Elsa.Common;
+using Elsa.Scheduling.Quartz.Contracts;
+using Elsa.Scheduling.Quartz.Options;
+using Microsoft.Extensions.Options;
+using Quartz;
+
+namespace Elsa.Scheduling.Quartz.Services;
+
+///
+/// Default implementation of .
+///
+public class QuartzJobRetryScheduler(ISystemClock systemClock, IOptions options) : IQuartzJobRetryScheduler
+{
+ ///
+ public async Task ScheduleRetryAsync(IJobExecutionContext context, CancellationToken cancellationToken = default)
+ {
+ var delay = options.Value.TransientExceptionRetryDelay;
+ var now = systemClock.UtcNow;
+
+ var trigger = TriggerBuilder.Create()
+ .ForJob(context.JobDetail.Key)
+ .StartAt(now.Add(delay))
+ .Build();
+
+ await context.Scheduler.RescheduleJob(context.Trigger.Key, trigger, cancellationToken);
+ }
+}
+
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Abstractions/AppComponentTest.cs b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Abstractions/AppComponentTest.cs
new file mode 100644
index 00000000..3cf7c4b5
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Abstractions/AppComponentTest.cs
@@ -0,0 +1,22 @@
+using Elsa.Scheduling.Quartz.ComponentTests.Fixtures;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace Elsa.Scheduling.Quartz.ComponentTests.Abstractions;
+
+[Collection(nameof(SchedulingAppCollection))]
+public abstract class AppComponentTest(SchedulingApp app) : IDisposable
+{
+ protected WorkflowServer WorkflowServer { get; } = app.WorkflowServer;
+ protected IServiceScope Scope { get; private set; } = app.WorkflowServer.Services.CreateScope();
+
+ public void Dispose()
+ {
+ OnDispose();
+ Scope?.Dispose();
+ GC.SuppressFinalize(this);
+ }
+
+ protected virtual void OnDispose()
+ {
+ }
+}
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Elsa.Scheduling.Quartz.ComponentTests.csproj b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Elsa.Scheduling.Quartz.ComponentTests.csproj
new file mode 100644
index 00000000..84e47791
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Elsa.Scheduling.Quartz.ComponentTests.csproj
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Fixtures/SchedulingApp.cs b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Fixtures/SchedulingApp.cs
new file mode 100644
index 00000000..4638d60d
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Fixtures/SchedulingApp.cs
@@ -0,0 +1,16 @@
+using JetBrains.Annotations;
+
+namespace Elsa.Scheduling.Quartz.ComponentTests.Fixtures;
+
+[UsedImplicitly]
+public class SchedulingApp : IAsyncLifetime
+{
+ public WorkflowServer WorkflowServer { get; } = new("http://localhost:5010");
+
+ public Task InitializeAsync() => Task.CompletedTask;
+
+ public async Task DisposeAsync()
+ {
+ await WorkflowServer.DisposeAsync();
+ }
+}
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Fixtures/SchedulingAppCollection.cs b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Fixtures/SchedulingAppCollection.cs
new file mode 100644
index 00000000..7979a244
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Fixtures/SchedulingAppCollection.cs
@@ -0,0 +1,4 @@
+namespace Elsa.Scheduling.Quartz.ComponentTests.Fixtures;
+
+[CollectionDefinition(nameof(SchedulingAppCollection))]
+public class SchedulingAppCollection : ICollectionFixture;
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Fixtures/WorkflowServer.cs b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Fixtures/WorkflowServer.cs
new file mode 100644
index 00000000..cb93cd25
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Fixtures/WorkflowServer.cs
@@ -0,0 +1,38 @@
+using Elsa.Extensions;
+using Elsa.Scheduling.Quartz.Options;
+using JetBrains.Annotations;
+using Microsoft.AspNetCore.Hosting;
+using Microsoft.AspNetCore.Mvc.Testing;
+using Microsoft.AspNetCore.TestHost;
+using Microsoft.Extensions.DependencyInjection;
+using Quartz;
+
+namespace Elsa.Scheduling.Quartz.ComponentTests.Fixtures;
+
+[UsedImplicitly]
+public class WorkflowServer(string url) : WebApplicationFactory
+{
+ public async Task GetSchedulerAsync()
+ {
+ var factory = Services.GetRequiredService();
+ return await factory.GetScheduler();
+ }
+
+ protected override void ConfigureWebHost(IWebHostBuilder builder)
+ {
+ builder.UseUrls(url);
+
+ TestServer.Web.Program.ConfigureForTest ??= elsa =>
+ {
+ elsa.UseQuartz();
+ elsa.UseScheduling(scheduling => scheduling.UseQuartzScheduler());
+ elsa.UseWorkflowRuntime();
+ };
+
+ builder.ConfigureTestServices(services =>
+ {
+ // Configure Quartz job options for fast retries in tests
+ services.Configure(options => options.TransientExceptionRetryDelay = TimeSpan.FromSeconds(1));
+ });
+ }
+}
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Helpers/FailingWorkflowStarter.cs b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Helpers/FailingWorkflowStarter.cs
new file mode 100644
index 00000000..b03baabb
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/Helpers/FailingWorkflowStarter.cs
@@ -0,0 +1,32 @@
+using Elsa.Workflows.Runtime;
+
+namespace Elsa.Scheduling.Quartz.ComponentTests.Helpers;
+
+///
+/// A workflow starter that can be configured to fail with transient or non-transient exceptions.
+///
+public class FailingWorkflowStarter(IWorkflowStarter innerStarter) : IWorkflowStarter
+{
+ private int _callCount;
+
+ public int FailuresBeforeSuccess { get; set; }
+ public Exception? ExceptionToThrow { get; set; }
+ public int CallCount => _callCount;
+
+ public async Task StartWorkflowAsync(StartWorkflowRequest request, CancellationToken cancellationToken = default)
+ {
+ _callCount++;
+
+ if (ExceptionToThrow != null && _callCount <= FailuresBeforeSuccess)
+ {
+ throw ExceptionToThrow;
+ }
+
+ return await innerStarter.StartWorkflowAsync(request, cancellationToken);
+ }
+
+ public void Reset()
+ {
+ _callCount = 0;
+ }
+}
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/QuartzJobTransientRetryTests.cs b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/QuartzJobTransientRetryTests.cs
new file mode 100644
index 00000000..d34e64e4
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.ComponentTests/QuartzJobTransientRetryTests.cs
@@ -0,0 +1,188 @@
+using Elsa.Resilience;
+using Elsa.Scheduling.Quartz.ComponentTests.Abstractions;
+using Elsa.Scheduling.Quartz.ComponentTests.Fixtures;
+using Elsa.Scheduling.Quartz.ComponentTests.Helpers;
+using Elsa.Scheduling.Quartz.Contracts;
+using Elsa.Scheduling.Quartz.Jobs;
+using Elsa.Workflows.Runtime;
+using Microsoft.Extensions.DependencyInjection;
+using Quartz;
+
+namespace Elsa.Scheduling.Quartz.ComponentTests;
+
+///
+/// Component tests for Quartz job transient retry behavior.
+/// These tests validate that jobs properly retry on transient exceptions and give up on non-transient exceptions.
+///
+public class QuartzJobTransientRetryTests(SchedulingApp app) : AppComponentTest(app)
+{
+ [Theory]
+ [InlineData(2, typeof(TimeoutException), "Simulated transient timeout")]
+ [InlineData(1, typeof(HttpRequestException), "Simulated network error")]
+ public async Task RunWorkflowJob_TransientException_RetriesAndEventuallySucceeds(
+ int failuresBeforeSuccess,
+ Type exceptionType,
+ string exceptionMessage)
+ {
+ // Arrange - Create job manually with test double for controlled testing
+ var (job, failingStarter, context) = await CreateTestJobSetupWithoutScheduling(
+ failuresBeforeSuccess,
+ (Exception)Activator.CreateInstance(exceptionType, exceptionMessage)!,
+ $"test-transient-{failuresBeforeSuccess}"
+ );
+
+ // Act - Execute the job multiple times to simulate retries
+ for (var i = 0; i < failuresBeforeSuccess; i++)
+ {
+ await job.Execute(context);
+ Assert.Equal(i + 1, failingStarter.CallCount);
+ }
+
+ // Final attempt - should succeed
+ await job.Execute(context);
+
+ // Assert
+ Assert.Equal(failuresBeforeSuccess + 1, failingStarter.CallCount);
+ }
+
+ [Fact]
+ public async Task RunWorkflowJob_NonTransientException_DoesNotRetry()
+ {
+ // Arrange - Schedule job with Quartz so we can verify it gets deleted
+ var (job, failingStarter, context) = await CreateTestJobSetupWithScheduling(
+ 10, // Would retry many times if transient
+ new InvalidOperationException("Non-transient error"),
+ "test-nontransient"
+ );
+
+ var scheduler = await WorkflowServer.GetSchedulerAsync();
+
+ // Act
+ await job.Execute(context);
+
+ // Assert - Job should be called once, then deleted (not retried)
+ Assert.Equal(1, failingStarter.CallCount);
+
+ // Verify job was deleted from scheduler
+ var jobExists = await scheduler.CheckExists(context.JobDetail.Key);
+ Assert.False(jobExists);
+ }
+
+ ///
+ /// Creates a test setup without scheduling the job with Quartz.
+ /// Use when testing job execution logic directly without needing scheduler interaction.
+ ///
+ private async Task<(RunWorkflowJob job, FailingWorkflowStarter failingStarter, IJobExecutionContext context)>
+ CreateTestJobSetupWithoutScheduling(int failuresBeforeSuccess, Exception exception, string jobIdentifier)
+ {
+ var scheduler = await WorkflowServer.GetSchedulerAsync();
+ var workflowStarter = Scope.ServiceProvider.GetRequiredService();
+
+ var failingStarter = new FailingWorkflowStarter(workflowStarter)
+ {
+ FailuresBeforeSuccess = failuresBeforeSuccess,
+ ExceptionToThrow = exception
+ };
+
+ var job = CreateRunWorkflowJob(failingStarter);
+ var (jobDetail, trigger) = CreateJobDetailAndTrigger(jobIdentifier);
+
+ // Don't schedule with Quartz - we're testing the Execute method directly
+ var context = CreateTestContext(scheduler, jobDetail, trigger);
+
+ return (job, failingStarter, context);
+ }
+
+ ///
+ /// Creates a test setup and schedules the job with Quartz.
+ /// Use when testing behavior that involves scheduler operations (e.g., job deletion).
+ ///
+ private async Task<(RunWorkflowJob job, FailingWorkflowStarter failingStarter, IJobExecutionContext context)>
+ CreateTestJobSetupWithScheduling(int failuresBeforeSuccess, Exception exception, string jobIdentifier)
+ {
+ var scheduler = await WorkflowServer.GetSchedulerAsync();
+ var workflowStarter = Scope.ServiceProvider.GetRequiredService();
+
+ var failingStarter = new FailingWorkflowStarter(workflowStarter)
+ {
+ FailuresBeforeSuccess = failuresBeforeSuccess,
+ ExceptionToThrow = exception
+ };
+
+ var job = CreateRunWorkflowJob(failingStarter);
+ var (jobDetail, trigger) = CreateJobDetailAndTrigger(jobIdentifier);
+
+ // Schedule the job with Quartz so the job can interact with the scheduler
+ // (e.g., delete itself on non-transient exceptions)
+ await scheduler.ScheduleJob(jobDetail, trigger);
+ var context = CreateTestContext(scheduler, jobDetail, trigger);
+
+ return (job, failingStarter, context);
+ }
+
+ private RunWorkflowJob CreateRunWorkflowJob(IWorkflowStarter workflowStarter)
+ {
+ return new RunWorkflowJob(
+ Scope.ServiceProvider.GetRequiredService(),
+ Scope.ServiceProvider.GetRequiredService(),
+ workflowStarter,
+ Scope.ServiceProvider.GetRequiredService(),
+ Scope.ServiceProvider.GetRequiredService(),
+ Scope.ServiceProvider.GetRequiredService>()
+ );
+ }
+
+ private static (IJobDetail jobDetail, ITrigger trigger) CreateJobDetailAndTrigger(string identifier)
+ {
+ var jobDataMap = new JobDataMap
+ {
+ { "DefinitionVersionId", "test-workflow-def" }
+ };
+
+ var jobDetail = JobBuilder.Create()
+ .WithIdentity($"{identifier}-job", "test-group")
+ .UsingJobData(jobDataMap)
+ .StoreDurably()
+ .Build();
+
+ var trigger = TriggerBuilder.Create()
+ .WithIdentity($"{identifier}-trigger", "test-group")
+ .ForJob(jobDetail)
+ .StartNow()
+ .Build();
+
+ return (jobDetail, trigger);
+ }
+
+ private static IJobExecutionContext CreateTestContext(global::Quartz.IScheduler scheduler, IJobDetail jobDetail, ITrigger trigger)
+ {
+ return new TestJobExecutionContext(scheduler, jobDetail, trigger);
+ }
+}
+
+///
+/// Test implementation of IJobExecutionContext for component testing.
+///
+internal class TestJobExecutionContext(global::Quartz.IScheduler scheduler, IJobDetail jobDetail, ITrigger trigger) : IJobExecutionContext
+{
+ public global::Quartz.IScheduler Scheduler => scheduler;
+ public ITrigger Trigger => trigger;
+ public IJobDetail JobDetail => jobDetail;
+ public IJob JobInstance => null!;
+ public bool Recovering => false;
+ public TriggerKey RecoveringTriggerKey => trigger.Key;
+ public int RefireCount => 0;
+ public JobDataMap MergedJobDataMap => jobDetail.JobDataMap;
+ public ICalendar? Calendar => null;
+ public DateTimeOffset FireTimeUtc => DateTimeOffset.UtcNow;
+ public DateTimeOffset? ScheduledFireTimeUtc => DateTimeOffset.UtcNow;
+ public DateTimeOffset? PreviousFireTimeUtc => null;
+ public DateTimeOffset? NextFireTimeUtc => DateTimeOffset.UtcNow.AddSeconds(10);
+ public TimeSpan JobRunTime => TimeSpan.Zero;
+ public object? Result { get; set; }
+ public CancellationToken CancellationToken => CancellationToken.None;
+ public string FireInstanceId => Guid.NewGuid().ToString();
+
+ public void Put(object key, object objectValue) { }
+ public object? Get(object key) => null;
+}
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Elsa.Scheduling.Quartz.UnitTests.csproj b/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Elsa.Scheduling.Quartz.UnitTests.csproj
new file mode 100644
index 00000000..c9bdbb85
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Elsa.Scheduling.Quartz.UnitTests.csproj
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Helpers/QuartzJobTestHelper.cs b/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Helpers/QuartzJobTestHelper.cs
new file mode 100644
index 00000000..346d42be
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Helpers/QuartzJobTestHelper.cs
@@ -0,0 +1,146 @@
+using Elsa.Common.Multitenancy;
+using Elsa.Resilience;
+using Elsa.Scheduling.Quartz.Contracts;
+using Elsa.Scheduling.Quartz.Options;
+using Elsa.Workflows.Runtime;
+using Elsa.Workflows.Runtime.Messages;
+using Microsoft.Extensions.Options;
+using Moq;
+using Quartz;
+using QuartzScheduler = Quartz.IScheduler;
+
+namespace Elsa.Scheduling.Quartz.UnitTests.Helpers;
+
+///
+/// Provides common helper methods for testing Quartz jobs.
+///
+public static class QuartzJobTestHelper
+{
+ ///
+ /// Creates a mock job execution context with the specified job data.
+ ///
+ public static (IJobExecutionContext Context, Mock Scheduler) CreateJobExecutionContext(
+ IDictionary jobData)
+ {
+ var jobDataMap = new JobDataMap(jobData);
+ var jobKey = new JobKey("test-job");
+ var triggerKey = new TriggerKey("test-trigger");
+
+ var jobDetail = new Mock();
+ jobDetail.Setup(j => j.Key).Returns(jobKey);
+ jobDetail.Setup(j => j.JobDataMap).Returns(jobDataMap);
+
+ var trigger = new Mock();
+ trigger.Setup(t => t.Key).Returns(triggerKey);
+ trigger.Setup(t => t.JobKey).Returns(jobKey);
+
+ var scheduler = new Mock();
+ scheduler.Setup(s => s.RescheduleJob(It.IsAny(), It.IsAny(), It.IsAny()))
+ .ReturnsAsync(DateTimeOffset.Now);
+ scheduler.Setup(s => s.DeleteJob(It.IsAny(), It.IsAny()))
+ .ReturnsAsync(true);
+
+ var context = new Mock();
+ context.Setup(c => c.MergedJobDataMap).Returns(jobDataMap);
+ context.Setup(c => c.JobDetail).Returns(jobDetail.Object);
+ context.Setup(c => c.Trigger).Returns(trigger.Object);
+ context.Setup(c => c.Scheduler).Returns(scheduler.Object);
+ context.Setup(c => c.CancellationToken).Returns(CancellationToken.None);
+
+ return (context.Object, scheduler);
+ }
+
+ ///
+ /// Creates a mock for QuartzJobOptions with the specified retry delay.
+ ///
+ public static Mock> CreateQuartzJobOptions(TimeSpan? retryDelay = null)
+ {
+ var options = new Mock>();
+ options.Setup(o => o.Value).Returns(new QuartzJobOptions { TransientExceptionRetryDelay = retryDelay ?? TimeSpan.FromSeconds(1) });
+ return options;
+ }
+
+ ///
+ /// Creates a mock tenant accessor that allows context pushing.
+ ///
+ public static Mock CreateTenantAccessor()
+ {
+ var tenantAccessor = new Mock();
+ tenantAccessor.Setup(t => t.PushContext(It.IsAny())).Returns((IDisposable)null!);
+ return tenantAccessor;
+ }
+
+ extension(Mock workflowStarter)
+ {
+ ///
+ /// Sets up a workflow starter to return the specified response.
+ ///
+ public void SetupStartWorkflow(StartWorkflowResponse response) =>
+ workflowStarter.Setup(w => w.StartWorkflowAsync(It.IsAny(), It.IsAny()))
+ .ReturnsAsync(response);
+
+ ///
+ /// Sets up a workflow starter to throw the specified exception.
+ ///
+ public void SetupStartWorkflowThrows(Exception exception) =>
+ workflowStarter.Setup(w => w.StartWorkflowAsync(It.IsAny(), It.IsAny()))
+ .ThrowsAsync(exception);
+ }
+
+ ///
+ /// Sets up a transient exception detector to return the specified value for any exception.
+ ///
+ public static void SetupIsTransient(this Mock detector, bool isTransient) =>
+ detector.Setup(d => d.IsTransient(It.IsAny())).Returns(isTransient);
+
+ extension(Mock workflowRuntime)
+ {
+ ///
+ /// Sets up a workflow runtime to return the specified workflow client.
+ ///
+ public void SetupCreateClient(Mock workflowClient) =>
+ workflowRuntime.Setup(r => r.CreateClientAsync(It.IsAny(), It.IsAny()))
+ .ReturnsAsync(workflowClient.Object);
+
+ ///
+ /// Sets up a workflow runtime to throw the specified exception.
+ ///
+ public void SetupCreateClientThrows(Exception exception) =>
+ workflowRuntime.Setup(r => r.CreateClientAsync(It.IsAny(), It.IsAny()))
+ .ThrowsAsync(exception);
+ }
+
+ ///
+ /// Sets up a workflow client to return the specified response.
+ ///
+ public static void SetupRunInstance(this Mock workflowClient, RunWorkflowInstanceResponse? response = null) =>
+ workflowClient.Setup(c => c.RunInstanceAsync(It.IsAny(), It.IsAny()))
+ .ReturnsAsync(response ?? new RunWorkflowInstanceResponse());
+
+ extension(Mock scheduler)
+ {
+ ///
+ /// Verifies that the scheduler rescheduled a job exactly once.
+ ///
+ public void VerifyRescheduled() =>
+ scheduler.Verify(s => s.RescheduleJob(It.IsAny(), It.IsAny(), It.IsAny()), Times.Once);
+
+ ///
+ /// Verifies that the scheduler deleted a job exactly once.
+ ///
+ public void VerifyDeleted() =>
+ scheduler.Verify(s => s.DeleteJob(It.IsAny(), It.IsAny()), Times.Once);
+ }
+
+ ///
+ /// Verifies that the workflow starter was called exactly once.
+ ///
+ public static void VerifyStartWorkflowCalled(this Mock workflowStarter) =>
+ workflowStarter.Verify(w => w.StartWorkflowAsync(It.IsAny(), It.IsAny()), Times.Once);
+
+ ///
+ /// Verifies that the workflow client was called exactly once.
+ ///
+ public static void VerifyRunInstanceCalled(this Mock workflowClient) =>
+ workflowClient.Verify(c => c.RunInstanceAsync(It.IsAny(), It.IsAny()), Times.Once);
+}
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Jobs/ResumeWorkflowJobTests.cs b/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Jobs/ResumeWorkflowJobTests.cs
new file mode 100644
index 00000000..d28d93d1
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Jobs/ResumeWorkflowJobTests.cs
@@ -0,0 +1,137 @@
+using Elsa.Common;
+using Elsa.Common.Multitenancy;
+using Elsa.Resilience;
+using Elsa.Scheduling.Quartz.Contracts;
+using Elsa.Scheduling.Quartz.Jobs;
+using Elsa.Scheduling.Quartz.UnitTests.Helpers;
+using Elsa.Workflows.Models;
+using Elsa.Workflows.Runtime;
+using Elsa.Workflows.Runtime.Messages;
+using Microsoft.Extensions.Logging;
+using Moq;
+using Quartz;
+using QuartzScheduler = Quartz.IScheduler;
+
+namespace Elsa.Scheduling.Quartz.UnitTests.Jobs;
+
+public class ResumeWorkflowJobTests
+{
+ private readonly Mock _workflowRuntime = new();
+ private readonly Mock _jsonSerializer = new();
+ private readonly Mock _tenantFinder = new();
+ private readonly Mock _tenantAccessor = QuartzJobTestHelper.CreateTenantAccessor();
+ private readonly Mock _transientDetector = new();
+ private readonly Mock _retryScheduler = new();
+ private readonly Mock> _logger = new();
+ private readonly ResumeWorkflowJob _job;
+
+ public ResumeWorkflowJobTests()
+ {
+ _job = new(
+ _workflowRuntime.Object,
+ _jsonSerializer.Object,
+ _tenantFinder.Object,
+ _tenantAccessor.Object,
+ _transientDetector.Object,
+ _retryScheduler.Object,
+ _logger.Object);
+ }
+
+ [Fact]
+ public async Task Execute_SuccessfulResume_CallsWorkflowClient()
+ {
+ var (context, _) = CreateJobExecutionContext();
+ var workflowClient = new Mock();
+ workflowClient.SetupRunInstance();
+ _workflowRuntime.SetupCreateClient(workflowClient);
+
+ await _job.Execute(context);
+
+ workflowClient.VerifyRunInstanceCalled();
+ }
+
+ [Theory]
+ [InlineData(typeof(HttpRequestException), true)]
+ [InlineData(typeof(TimeoutException), true)]
+ public async Task Execute_TransientException_ReschedulesJob(Type exceptionType, bool isTransient)
+ {
+ var (context, _) = CreateJobExecutionContext();
+ _transientDetector.SetupIsTransient(isTransient);
+ _workflowRuntime.SetupCreateClientThrows((Exception)Activator.CreateInstance(exceptionType)!);
+
+ await _job.Execute(context);
+
+ _retryScheduler.Verify(x => x.ScheduleRetryAsync(context, It.IsAny()), Times.Once);
+ }
+
+ [Theory]
+ [InlineData(typeof(InvalidOperationException))]
+ [InlineData(typeof(ArgumentException))]
+ public async Task Execute_NonTransientException_DeletesJob(Type exceptionType)
+ {
+ var (context, scheduler) = CreateJobExecutionContext();
+ _transientDetector.SetupIsTransient(false);
+ _workflowRuntime.SetupCreateClientThrows((Exception)Activator.CreateInstance(exceptionType)!);
+
+ await _job.Execute(context);
+
+ scheduler.VerifyDeleted();
+ }
+
+ [Fact]
+ public async Task Execute_UsesCorrectWorkflowInstanceId()
+ {
+ var (context, _) = CreateJobExecutionContext();
+ var workflowClient = new Mock();
+ workflowClient.Setup(c => c.RunInstanceAsync(It.IsAny(), It.IsAny()))
+ .ReturnsAsync(new RunWorkflowInstanceResponse());
+
+ string? capturedInstanceId = null;
+ _workflowRuntime.Setup(r => r.CreateClientAsync(It.IsAny(), It.IsAny()))
+ .Callback((id, _) => capturedInstanceId = id)
+ .ReturnsAsync(workflowClient.Object);
+
+ await _job.Execute(context);
+
+ Assert.Equal("workflow-instance-123", capturedInstanceId);
+ }
+
+ [Fact]
+ public async Task Execute_WithActivityHandle_DeserializesCorrectly()
+ {
+ var activityHandle = new ActivityHandle { ActivityId = "activity-123" };
+ var serializedHandle = "{\"ActivityId\":\"activity-123\"}";
+ var (context, _) = CreateJobExecutionContext(serializedHandle);
+
+ _jsonSerializer.Setup(j => j.Deserialize(serializedHandle))
+ .Returns(activityHandle);
+
+ var workflowClient = new Mock();
+ RunWorkflowInstanceRequest? capturedRequest = null;
+ workflowClient.Setup(c => c.RunInstanceAsync(It.IsAny(), It.IsAny()))
+ .Callback((req, _) => capturedRequest = req)
+ .ReturnsAsync(new RunWorkflowInstanceResponse());
+
+ _workflowRuntime.Setup(r => r.CreateClientAsync(It.IsAny(), It.IsAny()))
+ .ReturnsAsync(workflowClient.Object);
+
+ await _job.Execute(context);
+
+ Assert.NotNull(capturedRequest);
+ Assert.Equal("activity-123", capturedRequest.ActivityHandle?.ActivityId);
+ }
+
+ private static (IJobExecutionContext, Mock) CreateJobExecutionContext(string? activityHandle = null)
+ {
+ var jobData = new Dictionary
+ {
+ { "WorkflowInstanceId", "workflow-instance-123" },
+ { "BookmarkId", "bookmark-123" }
+ };
+
+ if (activityHandle != null)
+ jobData.Add("ActivityHandle", activityHandle);
+
+ return QuartzJobTestHelper.CreateJobExecutionContext(jobData);
+ }
+}
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Jobs/RunWorkflowJobTests.cs b/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Jobs/RunWorkflowJobTests.cs
new file mode 100644
index 00000000..6ab6a553
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Jobs/RunWorkflowJobTests.cs
@@ -0,0 +1,121 @@
+using Elsa.Common.Multitenancy;
+using Elsa.Resilience;
+using Elsa.Scheduling.Quartz.Contracts;
+using Elsa.Scheduling.Quartz.Jobs;
+using Elsa.Scheduling.Quartz.UnitTests.Helpers;
+using Elsa.Workflows.Models;
+using Elsa.Workflows.Runtime;
+using Elsa.Workflows.Runtime.Exceptions;
+using Microsoft.Extensions.Logging;
+using Moq;
+using Quartz;
+using QuartzScheduler = Quartz.IScheduler;
+
+namespace Elsa.Scheduling.Quartz.UnitTests.Jobs;
+
+public class RunWorkflowJobTests
+{
+ private readonly Mock _tenantAccessor = QuartzJobTestHelper.CreateTenantAccessor();
+ private readonly Mock _tenantFinder = new();
+ private readonly Mock _workflowStarter = new();
+ private readonly Mock _transientDetector = new();
+ private readonly Mock _retryScheduler = new();
+ private readonly Mock> _logger = new();
+ private readonly RunWorkflowJob _job;
+
+ public RunWorkflowJobTests()
+ {
+ _job = new(
+ _tenantAccessor.Object,
+ _tenantFinder.Object,
+ _workflowStarter.Object,
+ _transientDetector.Object,
+ _retryScheduler.Object,
+ _logger.Object);
+ }
+
+ [Fact]
+ public async Task Execute_SuccessfulStart_CallsWorkflowStarter()
+ {
+ var (context, _) = CreateJobExecutionContext();
+ _workflowStarter.SetupStartWorkflow(new() { WorkflowInstanceId = "workflow-123" });
+
+ await _job.Execute(context);
+
+ _workflowStarter.VerifyStartWorkflowCalled();
+ }
+
+ [Fact]
+ public async Task Execute_CannotStart_LogsWarningAndReturns()
+ {
+ var (context, _) = CreateJobExecutionContext();
+ _workflowStarter.SetupStartWorkflow(new() { CannotStart = true });
+
+ await _job.Execute(context);
+
+ _workflowStarter.VerifyStartWorkflowCalled();
+ }
+
+ [Fact]
+ public async Task Execute_WorkflowGraphNotFound_DeletesJob()
+ {
+ var (context, scheduler) = CreateJobExecutionContext();
+ var handle = WorkflowDefinitionHandle.ByDefinitionVersionId("workflow-def-123");
+ _workflowStarter.SetupStartWorkflowThrows(new WorkflowGraphNotFoundException("Not found", handle));
+
+ await _job.Execute(context);
+
+ scheduler.VerifyDeleted();
+ }
+
+ [Theory]
+ [InlineData(typeof(TimeoutException), true)]
+ [InlineData(typeof(HttpRequestException), true)]
+ public async Task Execute_TransientException_ReschedulesJob(Type exceptionType, bool isTransient)
+ {
+ var (context, _) = CreateJobExecutionContext();
+ _transientDetector.SetupIsTransient(isTransient);
+ _workflowStarter.SetupStartWorkflowThrows((Exception)Activator.CreateInstance(exceptionType)!);
+
+ await _job.Execute(context);
+
+ _retryScheduler.Verify(x => x.ScheduleRetryAsync(context, It.IsAny()), Times.Once);
+ }
+
+ [Theory]
+ [InlineData(typeof(InvalidOperationException))]
+ [InlineData(typeof(ArgumentException))]
+ public async Task Execute_NonTransientException_DeletesJob(Type exceptionType)
+ {
+ var (context, scheduler) = CreateJobExecutionContext();
+ _transientDetector.SetupIsTransient(false);
+ _workflowStarter.SetupStartWorkflowThrows((Exception)Activator.CreateInstance(exceptionType)!);
+
+ await _job.Execute(context);
+
+ scheduler.VerifyDeleted();
+ }
+
+ [Fact]
+ public async Task Execute_UsesCorrectWorkflowDefinitionHandle()
+ {
+ var (context, _) = CreateJobExecutionContext();
+ StartWorkflowRequest? capturedRequest = null;
+ _workflowStarter.Setup(w => w.StartWorkflowAsync(It.IsAny(), It.IsAny()))
+ .Callback((req, _) => capturedRequest = req)
+ .ReturnsAsync(new StartWorkflowResponse { WorkflowInstanceId = "workflow-123" });
+
+ await _job.Execute(context);
+
+ Assert.NotNull(capturedRequest);
+ Assert.Equal("workflow-def-123", capturedRequest.WorkflowDefinitionHandle.DefinitionVersionId);
+ }
+
+ private static (IJobExecutionContext, Mock) CreateJobExecutionContext() =>
+ QuartzJobTestHelper.CreateJobExecutionContext(new Dictionary
+ {
+ { "DefinitionVersionId", "workflow-def-123" },
+ { "CorrelationId", "corr-123" },
+ { "TriggerActivityId", "trigger-123" }
+ });
+}
diff --git a/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Services/QuartzJobRetrySchedulerTests.cs b/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Services/QuartzJobRetrySchedulerTests.cs
new file mode 100644
index 00000000..7ab6319f
--- /dev/null
+++ b/test/modules/scheduling/Elsa.Scheduling.Quartz.UnitTests/Services/QuartzJobRetrySchedulerTests.cs
@@ -0,0 +1,34 @@
+using Elsa.Common;
+using Elsa.Scheduling.Quartz.Services;
+using Elsa.Scheduling.Quartz.UnitTests.Helpers;
+using Moq;
+using Quartz;
+
+namespace Elsa.Scheduling.Quartz.UnitTests.Services;
+
+public class QuartzJobRetrySchedulerTests
+{
+ [Fact]
+ public async Task ScheduleRetryAsync_UsesSystemClockUtcNowPlusDelay()
+ {
+ var now = new DateTimeOffset(2025, 01, 02, 03, 04, 05, TimeSpan.Zero);
+ var delay = TimeSpan.FromSeconds(10);
+ var clock = new Mock();
+ clock.SetupGet(x => x.UtcNow).Returns(now);
+
+ ITrigger? capturedTrigger = null;
+ var (context, scheduler) = QuartzJobTestHelper.CreateJobExecutionContext(new Dictionary());
+ scheduler
+ .Setup(s => s.RescheduleJob(It.IsAny(), It.IsAny(), It.IsAny()))
+ .Callback((_, t, _) => capturedTrigger = t)
+ .ReturnsAsync(now);
+
+ var options = QuartzJobTestHelper.CreateQuartzJobOptions(delay);
+ var sut = new QuartzJobRetryScheduler(clock.Object, options.Object);
+
+ await sut.ScheduleRetryAsync(context);
+
+ Assert.NotNull(capturedTrigger);
+ Assert.Equal(now.Add(delay), capturedTrigger!.StartTimeUtc);
+ }
+}