diff --git a/PdfSharp.sln b/PdfSharp.sln
index b2b46225..cac0551a 100644
--- a/PdfSharp.sln
+++ b/PdfSharp.sln
@@ -318,324 +318,966 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdfSharp.OpenType.Test", "s
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "docs-public", "docs\docs-public.csproj", "{B75C5BBF-4110-E576-C755-66CBF94A4CD9}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReadC2paInfo,PDFsharp", "src\samples\src\PDFsharp\src\ReadC2paInfo\ReadC2paInfo,PDFsharp.csproj", "{4A6FAC63-5329-44D4-A215-FA5CD30244FA}"
+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
{0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Debug|x64.Build.0 = Debug|Any CPU
+ {0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Debug|x86.Build.0 = Debug|Any CPU
{0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Release|x64.ActiveCfg = Release|Any CPU
+ {0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Release|x64.Build.0 = Release|Any CPU
+ {0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Release|x86.ActiveCfg = Release|Any CPU
+ {0B1C5283-63AC-4B2C-B0B2-D2FFD4BB3BD2}.Release|x86.Build.0 = Release|Any CPU
{9891081B-017E-4974-8BF9-FA775406841E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9891081B-017E-4974-8BF9-FA775406841E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9891081B-017E-4974-8BF9-FA775406841E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9891081B-017E-4974-8BF9-FA775406841E}.Debug|x64.Build.0 = Debug|Any CPU
+ {9891081B-017E-4974-8BF9-FA775406841E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9891081B-017E-4974-8BF9-FA775406841E}.Debug|x86.Build.0 = Debug|Any CPU
{9891081B-017E-4974-8BF9-FA775406841E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9891081B-017E-4974-8BF9-FA775406841E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9891081B-017E-4974-8BF9-FA775406841E}.Release|x64.ActiveCfg = Release|Any CPU
+ {9891081B-017E-4974-8BF9-FA775406841E}.Release|x64.Build.0 = Release|Any CPU
+ {9891081B-017E-4974-8BF9-FA775406841E}.Release|x86.ActiveCfg = Release|Any CPU
+ {9891081B-017E-4974-8BF9-FA775406841E}.Release|x86.Build.0 = Release|Any CPU
{CA022FCC-7A23-4759-8789-9FC86C805557}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA022FCC-7A23-4759-8789-9FC86C805557}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CA022FCC-7A23-4759-8789-9FC86C805557}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CA022FCC-7A23-4759-8789-9FC86C805557}.Debug|x64.Build.0 = Debug|Any CPU
+ {CA022FCC-7A23-4759-8789-9FC86C805557}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CA022FCC-7A23-4759-8789-9FC86C805557}.Debug|x86.Build.0 = Debug|Any CPU
{CA022FCC-7A23-4759-8789-9FC86C805557}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA022FCC-7A23-4759-8789-9FC86C805557}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CA022FCC-7A23-4759-8789-9FC86C805557}.Release|x64.ActiveCfg = Release|Any CPU
+ {CA022FCC-7A23-4759-8789-9FC86C805557}.Release|x64.Build.0 = Release|Any CPU
+ {CA022FCC-7A23-4759-8789-9FC86C805557}.Release|x86.ActiveCfg = Release|Any CPU
+ {CA022FCC-7A23-4759-8789-9FC86C805557}.Release|x86.Build.0 = Release|Any CPU
{92E59C39-1633-4763-B9A3-3E6FA2593477}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{92E59C39-1633-4763-B9A3-3E6FA2593477}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {92E59C39-1633-4763-B9A3-3E6FA2593477}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {92E59C39-1633-4763-B9A3-3E6FA2593477}.Debug|x64.Build.0 = Debug|Any CPU
+ {92E59C39-1633-4763-B9A3-3E6FA2593477}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {92E59C39-1633-4763-B9A3-3E6FA2593477}.Debug|x86.Build.0 = Debug|Any CPU
{92E59C39-1633-4763-B9A3-3E6FA2593477}.Release|Any CPU.ActiveCfg = Release|Any CPU
{92E59C39-1633-4763-B9A3-3E6FA2593477}.Release|Any CPU.Build.0 = Release|Any CPU
+ {92E59C39-1633-4763-B9A3-3E6FA2593477}.Release|x64.ActiveCfg = Release|Any CPU
+ {92E59C39-1633-4763-B9A3-3E6FA2593477}.Release|x64.Build.0 = Release|Any CPU
+ {92E59C39-1633-4763-B9A3-3E6FA2593477}.Release|x86.ActiveCfg = Release|Any CPU
+ {92E59C39-1633-4763-B9A3-3E6FA2593477}.Release|x86.Build.0 = Release|Any CPU
{9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Debug|x64.Build.0 = Debug|Any CPU
+ {9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Debug|x86.Build.0 = Debug|Any CPU
{9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Release|x64.ActiveCfg = Release|Any CPU
+ {9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Release|x64.Build.0 = Release|Any CPU
+ {9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Release|x86.ActiveCfg = Release|Any CPU
+ {9920A6C0-509E-4319-A35F-E0DB6866DAFF}.Release|x86.Build.0 = Release|Any CPU
{8854C41C-8F3D-406E-A565-3B623599BFF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8854C41C-8F3D-406E-A565-3B623599BFF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8854C41C-8F3D-406E-A565-3B623599BFF2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8854C41C-8F3D-406E-A565-3B623599BFF2}.Debug|x64.Build.0 = Debug|Any CPU
+ {8854C41C-8F3D-406E-A565-3B623599BFF2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8854C41C-8F3D-406E-A565-3B623599BFF2}.Debug|x86.Build.0 = Debug|Any CPU
{8854C41C-8F3D-406E-A565-3B623599BFF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8854C41C-8F3D-406E-A565-3B623599BFF2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8854C41C-8F3D-406E-A565-3B623599BFF2}.Release|x64.ActiveCfg = Release|Any CPU
+ {8854C41C-8F3D-406E-A565-3B623599BFF2}.Release|x64.Build.0 = Release|Any CPU
+ {8854C41C-8F3D-406E-A565-3B623599BFF2}.Release|x86.ActiveCfg = Release|Any CPU
+ {8854C41C-8F3D-406E-A565-3B623599BFF2}.Release|x86.Build.0 = Release|Any CPU
{5448826B-C121-4A3D-B632-8F9E6519F787}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5448826B-C121-4A3D-B632-8F9E6519F787}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5448826B-C121-4A3D-B632-8F9E6519F787}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5448826B-C121-4A3D-B632-8F9E6519F787}.Debug|x64.Build.0 = Debug|Any CPU
+ {5448826B-C121-4A3D-B632-8F9E6519F787}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5448826B-C121-4A3D-B632-8F9E6519F787}.Debug|x86.Build.0 = Debug|Any CPU
{5448826B-C121-4A3D-B632-8F9E6519F787}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5448826B-C121-4A3D-B632-8F9E6519F787}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5448826B-C121-4A3D-B632-8F9E6519F787}.Release|x64.ActiveCfg = Release|Any CPU
+ {5448826B-C121-4A3D-B632-8F9E6519F787}.Release|x64.Build.0 = Release|Any CPU
+ {5448826B-C121-4A3D-B632-8F9E6519F787}.Release|x86.ActiveCfg = Release|Any CPU
+ {5448826B-C121-4A3D-B632-8F9E6519F787}.Release|x86.Build.0 = Release|Any CPU
{F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Debug|x64.Build.0 = Debug|Any CPU
+ {F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Debug|x86.Build.0 = Debug|Any CPU
{F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Release|x64.ActiveCfg = Release|Any CPU
+ {F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Release|x64.Build.0 = Release|Any CPU
+ {F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Release|x86.ActiveCfg = Release|Any CPU
+ {F5258632-D60B-4BD4-AAF9-BEEC6CCD471F}.Release|x86.Build.0 = Release|Any CPU
{B0BEB589-A3A7-4412-B045-09621FB1DE25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B0BEB589-A3A7-4412-B045-09621FB1DE25}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B0BEB589-A3A7-4412-B045-09621FB1DE25}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B0BEB589-A3A7-4412-B045-09621FB1DE25}.Debug|x64.Build.0 = Debug|Any CPU
+ {B0BEB589-A3A7-4412-B045-09621FB1DE25}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B0BEB589-A3A7-4412-B045-09621FB1DE25}.Debug|x86.Build.0 = Debug|Any CPU
{B0BEB589-A3A7-4412-B045-09621FB1DE25}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B0BEB589-A3A7-4412-B045-09621FB1DE25}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B0BEB589-A3A7-4412-B045-09621FB1DE25}.Release|x64.ActiveCfg = Release|Any CPU
+ {B0BEB589-A3A7-4412-B045-09621FB1DE25}.Release|x64.Build.0 = Release|Any CPU
+ {B0BEB589-A3A7-4412-B045-09621FB1DE25}.Release|x86.ActiveCfg = Release|Any CPU
+ {B0BEB589-A3A7-4412-B045-09621FB1DE25}.Release|x86.Build.0 = Release|Any CPU
{E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Debug|x64.Build.0 = Debug|Any CPU
+ {E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Debug|x86.Build.0 = Debug|Any CPU
{E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Release|x64.ActiveCfg = Release|Any CPU
+ {E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Release|x64.Build.0 = Release|Any CPU
+ {E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Release|x86.ActiveCfg = Release|Any CPU
+ {E4D95A70-171A-4027-BFCE-AB2B1907C6C1}.Release|x86.Build.0 = Release|Any CPU
{034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Debug|x64.Build.0 = Debug|Any CPU
+ {034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Debug|x86.Build.0 = Debug|Any CPU
{034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Release|x64.ActiveCfg = Release|Any CPU
+ {034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Release|x64.Build.0 = Release|Any CPU
+ {034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Release|x86.ActiveCfg = Release|Any CPU
+ {034B233F-0745-476A-A3DB-8DDF8FA0EF9C}.Release|x86.Build.0 = Release|Any CPU
{05E1F63A-EC20-4280-86A2-7971691DA964}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{05E1F63A-EC20-4280-86A2-7971691DA964}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {05E1F63A-EC20-4280-86A2-7971691DA964}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {05E1F63A-EC20-4280-86A2-7971691DA964}.Debug|x64.Build.0 = Debug|Any CPU
+ {05E1F63A-EC20-4280-86A2-7971691DA964}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {05E1F63A-EC20-4280-86A2-7971691DA964}.Debug|x86.Build.0 = Debug|Any CPU
{05E1F63A-EC20-4280-86A2-7971691DA964}.Release|Any CPU.ActiveCfg = Release|Any CPU
{05E1F63A-EC20-4280-86A2-7971691DA964}.Release|Any CPU.Build.0 = Release|Any CPU
+ {05E1F63A-EC20-4280-86A2-7971691DA964}.Release|x64.ActiveCfg = Release|Any CPU
+ {05E1F63A-EC20-4280-86A2-7971691DA964}.Release|x64.Build.0 = Release|Any CPU
+ {05E1F63A-EC20-4280-86A2-7971691DA964}.Release|x86.ActiveCfg = Release|Any CPU
+ {05E1F63A-EC20-4280-86A2-7971691DA964}.Release|x86.Build.0 = Release|Any CPU
{E42F855D-9A4F-45BE-9950-F20A94169568}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E42F855D-9A4F-45BE-9950-F20A94169568}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E42F855D-9A4F-45BE-9950-F20A94169568}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E42F855D-9A4F-45BE-9950-F20A94169568}.Debug|x64.Build.0 = Debug|Any CPU
+ {E42F855D-9A4F-45BE-9950-F20A94169568}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E42F855D-9A4F-45BE-9950-F20A94169568}.Debug|x86.Build.0 = Debug|Any CPU
{E42F855D-9A4F-45BE-9950-F20A94169568}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E42F855D-9A4F-45BE-9950-F20A94169568}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E42F855D-9A4F-45BE-9950-F20A94169568}.Release|x64.ActiveCfg = Release|Any CPU
+ {E42F855D-9A4F-45BE-9950-F20A94169568}.Release|x64.Build.0 = Release|Any CPU
+ {E42F855D-9A4F-45BE-9950-F20A94169568}.Release|x86.ActiveCfg = Release|Any CPU
+ {E42F855D-9A4F-45BE-9950-F20A94169568}.Release|x86.Build.0 = Release|Any CPU
{5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Debug|x64.Build.0 = Debug|Any CPU
+ {5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Debug|x86.Build.0 = Debug|Any CPU
{5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Release|x64.ActiveCfg = Release|Any CPU
+ {5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Release|x64.Build.0 = Release|Any CPU
+ {5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Release|x86.ActiveCfg = Release|Any CPU
+ {5BB33F6F-0151-4D8F-8530-249A9C3B9B23}.Release|x86.Build.0 = Release|Any CPU
{CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Debug|x64.Build.0 = Debug|Any CPU
+ {CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Debug|x86.Build.0 = Debug|Any CPU
{CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Release|x64.ActiveCfg = Release|Any CPU
+ {CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Release|x64.Build.0 = Release|Any CPU
+ {CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Release|x86.ActiveCfg = Release|Any CPU
+ {CEE874A6-EBE0-4D8C-80AA-38AEBFE9C3F3}.Release|x86.Build.0 = Release|Any CPU
{063311BF-3B6E-4550-9342-FEF6CFF80C54}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{063311BF-3B6E-4550-9342-FEF6CFF80C54}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {063311BF-3B6E-4550-9342-FEF6CFF80C54}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {063311BF-3B6E-4550-9342-FEF6CFF80C54}.Debug|x64.Build.0 = Debug|Any CPU
+ {063311BF-3B6E-4550-9342-FEF6CFF80C54}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {063311BF-3B6E-4550-9342-FEF6CFF80C54}.Debug|x86.Build.0 = Debug|Any CPU
{063311BF-3B6E-4550-9342-FEF6CFF80C54}.Release|Any CPU.ActiveCfg = Release|Any CPU
{063311BF-3B6E-4550-9342-FEF6CFF80C54}.Release|Any CPU.Build.0 = Release|Any CPU
+ {063311BF-3B6E-4550-9342-FEF6CFF80C54}.Release|x64.ActiveCfg = Release|Any CPU
+ {063311BF-3B6E-4550-9342-FEF6CFF80C54}.Release|x64.Build.0 = Release|Any CPU
+ {063311BF-3B6E-4550-9342-FEF6CFF80C54}.Release|x86.ActiveCfg = Release|Any CPU
+ {063311BF-3B6E-4550-9342-FEF6CFF80C54}.Release|x86.Build.0 = Release|Any CPU
{24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Debug|x64.Build.0 = Debug|Any CPU
+ {24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Debug|x86.Build.0 = Debug|Any CPU
{24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Release|Any CPU.ActiveCfg = Release|Any CPU
{24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Release|Any CPU.Build.0 = Release|Any CPU
+ {24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Release|x64.ActiveCfg = Release|Any CPU
+ {24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Release|x64.Build.0 = Release|Any CPU
+ {24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Release|x86.ActiveCfg = Release|Any CPU
+ {24C998BB-C700-4047-97D5-1E9BC4A6CD06}.Release|x86.Build.0 = Release|Any CPU
{B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Debug|x64.Build.0 = Debug|Any CPU
+ {B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Debug|x86.Build.0 = Debug|Any CPU
{B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Release|x64.ActiveCfg = Release|Any CPU
+ {B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Release|x64.Build.0 = Release|Any CPU
+ {B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Release|x86.ActiveCfg = Release|Any CPU
+ {B0EE3DF4-34E1-4C69-836E-B8911192D3FE}.Release|x86.Build.0 = Release|Any CPU
{8F4002CD-E002-4C61-9E7A-0D78875C4767}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8F4002CD-E002-4C61-9E7A-0D78875C4767}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8F4002CD-E002-4C61-9E7A-0D78875C4767}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8F4002CD-E002-4C61-9E7A-0D78875C4767}.Debug|x64.Build.0 = Debug|Any CPU
+ {8F4002CD-E002-4C61-9E7A-0D78875C4767}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8F4002CD-E002-4C61-9E7A-0D78875C4767}.Debug|x86.Build.0 = Debug|Any CPU
{8F4002CD-E002-4C61-9E7A-0D78875C4767}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8F4002CD-E002-4C61-9E7A-0D78875C4767}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8F4002CD-E002-4C61-9E7A-0D78875C4767}.Release|x64.ActiveCfg = Release|Any CPU
+ {8F4002CD-E002-4C61-9E7A-0D78875C4767}.Release|x64.Build.0 = Release|Any CPU
+ {8F4002CD-E002-4C61-9E7A-0D78875C4767}.Release|x86.ActiveCfg = Release|Any CPU
+ {8F4002CD-E002-4C61-9E7A-0D78875C4767}.Release|x86.Build.0 = Release|Any CPU
{76959A2A-8113-430B-8272-DD37F17F9305}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{76959A2A-8113-430B-8272-DD37F17F9305}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {76959A2A-8113-430B-8272-DD37F17F9305}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {76959A2A-8113-430B-8272-DD37F17F9305}.Debug|x64.Build.0 = Debug|Any CPU
+ {76959A2A-8113-430B-8272-DD37F17F9305}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {76959A2A-8113-430B-8272-DD37F17F9305}.Debug|x86.Build.0 = Debug|Any CPU
{76959A2A-8113-430B-8272-DD37F17F9305}.Release|Any CPU.ActiveCfg = Release|Any CPU
{76959A2A-8113-430B-8272-DD37F17F9305}.Release|Any CPU.Build.0 = Release|Any CPU
+ {76959A2A-8113-430B-8272-DD37F17F9305}.Release|x64.ActiveCfg = Release|Any CPU
+ {76959A2A-8113-430B-8272-DD37F17F9305}.Release|x64.Build.0 = Release|Any CPU
+ {76959A2A-8113-430B-8272-DD37F17F9305}.Release|x86.ActiveCfg = Release|Any CPU
+ {76959A2A-8113-430B-8272-DD37F17F9305}.Release|x86.Build.0 = Release|Any CPU
{E19EF259-4C5F-4967-867C-EF3936B264C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E19EF259-4C5F-4967-867C-EF3936B264C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E19EF259-4C5F-4967-867C-EF3936B264C4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E19EF259-4C5F-4967-867C-EF3936B264C4}.Debug|x64.Build.0 = Debug|Any CPU
+ {E19EF259-4C5F-4967-867C-EF3936B264C4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E19EF259-4C5F-4967-867C-EF3936B264C4}.Debug|x86.Build.0 = Debug|Any CPU
{E19EF259-4C5F-4967-867C-EF3936B264C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E19EF259-4C5F-4967-867C-EF3936B264C4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E19EF259-4C5F-4967-867C-EF3936B264C4}.Release|x64.ActiveCfg = Release|Any CPU
+ {E19EF259-4C5F-4967-867C-EF3936B264C4}.Release|x64.Build.0 = Release|Any CPU
+ {E19EF259-4C5F-4967-867C-EF3936B264C4}.Release|x86.ActiveCfg = Release|Any CPU
+ {E19EF259-4C5F-4967-867C-EF3936B264C4}.Release|x86.Build.0 = Release|Any CPU
{ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Debug|x64.Build.0 = Debug|Any CPU
+ {ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Debug|x86.Build.0 = Debug|Any CPU
{ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Release|x64.ActiveCfg = Release|Any CPU
+ {ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Release|x64.Build.0 = Release|Any CPU
+ {ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Release|x86.ActiveCfg = Release|Any CPU
+ {ECCE20D4-000F-4D15-87B5-0335C7B3163A}.Release|x86.Build.0 = Release|Any CPU
{2E3778BB-E153-47C6-AD2C-E69F0B242578}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2E3778BB-E153-47C6-AD2C-E69F0B242578}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2E3778BB-E153-47C6-AD2C-E69F0B242578}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2E3778BB-E153-47C6-AD2C-E69F0B242578}.Debug|x64.Build.0 = Debug|Any CPU
+ {2E3778BB-E153-47C6-AD2C-E69F0B242578}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2E3778BB-E153-47C6-AD2C-E69F0B242578}.Debug|x86.Build.0 = Debug|Any CPU
{2E3778BB-E153-47C6-AD2C-E69F0B242578}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2E3778BB-E153-47C6-AD2C-E69F0B242578}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2E3778BB-E153-47C6-AD2C-E69F0B242578}.Release|x64.ActiveCfg = Release|Any CPU
+ {2E3778BB-E153-47C6-AD2C-E69F0B242578}.Release|x64.Build.0 = Release|Any CPU
+ {2E3778BB-E153-47C6-AD2C-E69F0B242578}.Release|x86.ActiveCfg = Release|Any CPU
+ {2E3778BB-E153-47C6-AD2C-E69F0B242578}.Release|x86.Build.0 = Release|Any CPU
{1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Debug|x64.Build.0 = Debug|Any CPU
+ {1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Debug|x86.Build.0 = Debug|Any CPU
{1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Release|x64.ActiveCfg = Release|Any CPU
+ {1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Release|x64.Build.0 = Release|Any CPU
+ {1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Release|x86.ActiveCfg = Release|Any CPU
+ {1A8CCCAA-4F2B-4D19-AB33-4696345DD200}.Release|x86.Build.0 = Release|Any CPU
{A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Debug|x64.Build.0 = Debug|Any CPU
+ {A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Debug|x86.Build.0 = Debug|Any CPU
{A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Release|x64.ActiveCfg = Release|Any CPU
+ {A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Release|x64.Build.0 = Release|Any CPU
+ {A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Release|x86.ActiveCfg = Release|Any CPU
+ {A774F1FD-6E4E-41E3-A288-C0EBF54B9CF2}.Release|x86.Build.0 = Release|Any CPU
{7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Debug|x64.Build.0 = Debug|Any CPU
+ {7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Debug|x86.Build.0 = Debug|Any CPU
{7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Release|x64.ActiveCfg = Release|Any CPU
+ {7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Release|x64.Build.0 = Release|Any CPU
+ {7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Release|x86.ActiveCfg = Release|Any CPU
+ {7DF6A8E0-AF4B-4A05-98CF-472D8252F95C}.Release|x86.Build.0 = Release|Any CPU
{9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Debug|x64.Build.0 = Debug|Any CPU
+ {9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Debug|x86.Build.0 = Debug|Any CPU
{9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Release|x64.ActiveCfg = Release|Any CPU
+ {9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Release|x64.Build.0 = Release|Any CPU
+ {9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Release|x86.ActiveCfg = Release|Any CPU
+ {9C72352F-3DB2-4ACE-A961-5466FEDB88A8}.Release|x86.Build.0 = Release|Any CPU
{CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Debug|x64.Build.0 = Debug|Any CPU
+ {CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Debug|x86.Build.0 = Debug|Any CPU
{CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Release|x64.ActiveCfg = Release|Any CPU
+ {CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Release|x64.Build.0 = Release|Any CPU
+ {CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Release|x86.ActiveCfg = Release|Any CPU
+ {CAC67B89-6F71-4E85-A0D9-18C7655D0F24}.Release|x86.Build.0 = Release|Any CPU
{453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Debug|x64.Build.0 = Debug|Any CPU
+ {453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Debug|x86.Build.0 = Debug|Any CPU
{453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Release|x64.ActiveCfg = Release|Any CPU
+ {453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Release|x64.Build.0 = Release|Any CPU
+ {453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Release|x86.ActiveCfg = Release|Any CPU
+ {453E50A2-AABE-4FC8-B112-DC58B482AE1E}.Release|x86.Build.0 = Release|Any CPU
{12368073-65E0-44E8-B081-A91EE0B45D99}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{12368073-65E0-44E8-B081-A91EE0B45D99}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {12368073-65E0-44E8-B081-A91EE0B45D99}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {12368073-65E0-44E8-B081-A91EE0B45D99}.Debug|x64.Build.0 = Debug|Any CPU
+ {12368073-65E0-44E8-B081-A91EE0B45D99}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {12368073-65E0-44E8-B081-A91EE0B45D99}.Debug|x86.Build.0 = Debug|Any CPU
{12368073-65E0-44E8-B081-A91EE0B45D99}.Release|Any CPU.ActiveCfg = Release|Any CPU
{12368073-65E0-44E8-B081-A91EE0B45D99}.Release|Any CPU.Build.0 = Release|Any CPU
+ {12368073-65E0-44E8-B081-A91EE0B45D99}.Release|x64.ActiveCfg = Release|Any CPU
+ {12368073-65E0-44E8-B081-A91EE0B45D99}.Release|x64.Build.0 = Release|Any CPU
+ {12368073-65E0-44E8-B081-A91EE0B45D99}.Release|x86.ActiveCfg = Release|Any CPU
+ {12368073-65E0-44E8-B081-A91EE0B45D99}.Release|x86.Build.0 = Release|Any CPU
{35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Debug|x64.Build.0 = Debug|Any CPU
+ {35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Debug|x86.Build.0 = Debug|Any CPU
{35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Release|Any CPU.ActiveCfg = Release|Any CPU
{35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Release|Any CPU.Build.0 = Release|Any CPU
+ {35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Release|x64.ActiveCfg = Release|Any CPU
+ {35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Release|x64.Build.0 = Release|Any CPU
+ {35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Release|x86.ActiveCfg = Release|Any CPU
+ {35BBDAE9-8F1D-4A5F-AC79-63B29AC47B96}.Release|x86.Build.0 = Release|Any CPU
{E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Debug|x64.Build.0 = Debug|Any CPU
+ {E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Debug|x86.Build.0 = Debug|Any CPU
{E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Release|x64.ActiveCfg = Release|Any CPU
+ {E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Release|x64.Build.0 = Release|Any CPU
+ {E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Release|x86.ActiveCfg = Release|Any CPU
+ {E8BF997F-41DE-4B3B-ADE9-BE707F5EED74}.Release|x86.Build.0 = Release|Any CPU
{EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Debug|x64.Build.0 = Debug|Any CPU
+ {EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Debug|x86.Build.0 = Debug|Any CPU
{EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Release|Any CPU.Build.0 = Release|Any CPU
+ {EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Release|x64.ActiveCfg = Release|Any CPU
+ {EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Release|x64.Build.0 = Release|Any CPU
+ {EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Release|x86.ActiveCfg = Release|Any CPU
+ {EF9642AB-5FE2-47D6-8AD4-5C4C2AA43E63}.Release|x86.Build.0 = Release|Any CPU
{B884855F-CE2B-4955-A3FD-581006313B8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B884855F-CE2B-4955-A3FD-581006313B8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B884855F-CE2B-4955-A3FD-581006313B8D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B884855F-CE2B-4955-A3FD-581006313B8D}.Debug|x64.Build.0 = Debug|Any CPU
+ {B884855F-CE2B-4955-A3FD-581006313B8D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B884855F-CE2B-4955-A3FD-581006313B8D}.Debug|x86.Build.0 = Debug|Any CPU
{B884855F-CE2B-4955-A3FD-581006313B8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B884855F-CE2B-4955-A3FD-581006313B8D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B884855F-CE2B-4955-A3FD-581006313B8D}.Release|x64.ActiveCfg = Release|Any CPU
+ {B884855F-CE2B-4955-A3FD-581006313B8D}.Release|x64.Build.0 = Release|Any CPU
+ {B884855F-CE2B-4955-A3FD-581006313B8D}.Release|x86.ActiveCfg = Release|Any CPU
+ {B884855F-CE2B-4955-A3FD-581006313B8D}.Release|x86.Build.0 = Release|Any CPU
{2D422E30-B119-440A-93B2-98F85BDC7371}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D422E30-B119-440A-93B2-98F85BDC7371}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2D422E30-B119-440A-93B2-98F85BDC7371}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2D422E30-B119-440A-93B2-98F85BDC7371}.Debug|x64.Build.0 = Debug|Any CPU
+ {2D422E30-B119-440A-93B2-98F85BDC7371}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2D422E30-B119-440A-93B2-98F85BDC7371}.Debug|x86.Build.0 = Debug|Any CPU
{2D422E30-B119-440A-93B2-98F85BDC7371}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D422E30-B119-440A-93B2-98F85BDC7371}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2D422E30-B119-440A-93B2-98F85BDC7371}.Release|x64.ActiveCfg = Release|Any CPU
+ {2D422E30-B119-440A-93B2-98F85BDC7371}.Release|x64.Build.0 = Release|Any CPU
+ {2D422E30-B119-440A-93B2-98F85BDC7371}.Release|x86.ActiveCfg = Release|Any CPU
+ {2D422E30-B119-440A-93B2-98F85BDC7371}.Release|x86.Build.0 = Release|Any CPU
{8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Debug|x64.Build.0 = Debug|Any CPU
+ {8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Debug|x86.Build.0 = Debug|Any CPU
{8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Release|x64.ActiveCfg = Release|Any CPU
+ {8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Release|x64.Build.0 = Release|Any CPU
+ {8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Release|x86.ActiveCfg = Release|Any CPU
+ {8C2CE2C8-8F3F-4A94-B83E-FAA89E000B10}.Release|x86.Build.0 = Release|Any CPU
{ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Debug|x64.Build.0 = Debug|Any CPU
+ {ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Debug|x86.Build.0 = Debug|Any CPU
{ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Release|x64.ActiveCfg = Release|Any CPU
+ {ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Release|x64.Build.0 = Release|Any CPU
+ {ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Release|x86.ActiveCfg = Release|Any CPU
+ {ECB8DEC8-B84E-4912-9BDA-49F1255ABD1F}.Release|x86.Build.0 = Release|Any CPU
{3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Debug|x64.Build.0 = Debug|Any CPU
+ {3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Debug|x86.Build.0 = Debug|Any CPU
{3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Release|x64.ActiveCfg = Release|Any CPU
+ {3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Release|x64.Build.0 = Release|Any CPU
+ {3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Release|x86.ActiveCfg = Release|Any CPU
+ {3EFAC271-74B1-495E-BAAB-AD32BAE7C32F}.Release|x86.Build.0 = Release|Any CPU
{6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Debug|x64.Build.0 = Debug|Any CPU
+ {6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Debug|x86.Build.0 = Debug|Any CPU
{6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Release|x64.ActiveCfg = Release|Any CPU
+ {6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Release|x64.Build.0 = Release|Any CPU
+ {6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Release|x86.ActiveCfg = Release|Any CPU
+ {6B0693F0-A1C2-4D40-B76D-AB1BE47CAC30}.Release|x86.Build.0 = Release|Any CPU
{BCF6255A-FAF1-4465-B315-D1223F010DEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BCF6255A-FAF1-4465-B315-D1223F010DEB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BCF6255A-FAF1-4465-B315-D1223F010DEB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BCF6255A-FAF1-4465-B315-D1223F010DEB}.Debug|x64.Build.0 = Debug|Any CPU
+ {BCF6255A-FAF1-4465-B315-D1223F010DEB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BCF6255A-FAF1-4465-B315-D1223F010DEB}.Debug|x86.Build.0 = Debug|Any CPU
{BCF6255A-FAF1-4465-B315-D1223F010DEB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BCF6255A-FAF1-4465-B315-D1223F010DEB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BCF6255A-FAF1-4465-B315-D1223F010DEB}.Release|x64.ActiveCfg = Release|Any CPU
+ {BCF6255A-FAF1-4465-B315-D1223F010DEB}.Release|x64.Build.0 = Release|Any CPU
+ {BCF6255A-FAF1-4465-B315-D1223F010DEB}.Release|x86.ActiveCfg = Release|Any CPU
+ {BCF6255A-FAF1-4465-B315-D1223F010DEB}.Release|x86.Build.0 = Release|Any CPU
{D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Debug|x64.Build.0 = Debug|Any CPU
+ {D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Debug|x86.Build.0 = Debug|Any CPU
{D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Release|x64.ActiveCfg = Release|Any CPU
+ {D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Release|x64.Build.0 = Release|Any CPU
+ {D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Release|x86.ActiveCfg = Release|Any CPU
+ {D3F1FC74-9C81-48F2-912F-7EC1B8FF812F}.Release|x86.Build.0 = Release|Any CPU
{20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Debug|x64.Build.0 = Debug|Any CPU
+ {20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Debug|x86.Build.0 = Debug|Any CPU
{20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Release|x64.ActiveCfg = Release|Any CPU
+ {20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Release|x64.Build.0 = Release|Any CPU
+ {20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Release|x86.ActiveCfg = Release|Any CPU
+ {20DEA7D4-1F92-4DEB-9841-3CF9FC6CFC5F}.Release|x86.Build.0 = Release|Any CPU
{A98A1979-883D-463F-9461-FAFFCA97B48A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A98A1979-883D-463F-9461-FAFFCA97B48A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A98A1979-883D-463F-9461-FAFFCA97B48A}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A98A1979-883D-463F-9461-FAFFCA97B48A}.Debug|x64.Build.0 = Debug|Any CPU
+ {A98A1979-883D-463F-9461-FAFFCA97B48A}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A98A1979-883D-463F-9461-FAFFCA97B48A}.Debug|x86.Build.0 = Debug|Any CPU
{A98A1979-883D-463F-9461-FAFFCA97B48A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A98A1979-883D-463F-9461-FAFFCA97B48A}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A98A1979-883D-463F-9461-FAFFCA97B48A}.Release|x64.ActiveCfg = Release|Any CPU
+ {A98A1979-883D-463F-9461-FAFFCA97B48A}.Release|x64.Build.0 = Release|Any CPU
+ {A98A1979-883D-463F-9461-FAFFCA97B48A}.Release|x86.ActiveCfg = Release|Any CPU
+ {A98A1979-883D-463F-9461-FAFFCA97B48A}.Release|x86.Build.0 = Release|Any CPU
{38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Debug|x64.Build.0 = Debug|Any CPU
+ {38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Debug|x86.Build.0 = Debug|Any CPU
{38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Release|x64.ActiveCfg = Release|Any CPU
+ {38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Release|x64.Build.0 = Release|Any CPU
+ {38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Release|x86.ActiveCfg = Release|Any CPU
+ {38E7DA8B-3016-49FA-8FDA-FE4CE347E40E}.Release|x86.Build.0 = Release|Any CPU
{B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Debug|x64.Build.0 = Debug|Any CPU
+ {B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Debug|x86.Build.0 = Debug|Any CPU
{B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Release|x64.ActiveCfg = Release|Any CPU
+ {B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Release|x64.Build.0 = Release|Any CPU
+ {B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Release|x86.ActiveCfg = Release|Any CPU
+ {B980F83A-592E-4CCB-AC71-7787D1B6A2F8}.Release|x86.Build.0 = Release|Any CPU
{1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Debug|x64.Build.0 = Debug|Any CPU
+ {1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Debug|x86.Build.0 = Debug|Any CPU
{1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Release|x64.ActiveCfg = Release|Any CPU
+ {1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Release|x64.Build.0 = Release|Any CPU
+ {1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Release|x86.ActiveCfg = Release|Any CPU
+ {1C25A0CD-7A57-434F-8B0C-06F4B2D25CBC}.Release|x86.Build.0 = Release|Any CPU
{BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Debug|x64.Build.0 = Debug|Any CPU
+ {BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Debug|x86.Build.0 = Debug|Any CPU
{BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Release|x64.ActiveCfg = Release|Any CPU
+ {BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Release|x64.Build.0 = Release|Any CPU
+ {BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Release|x86.ActiveCfg = Release|Any CPU
+ {BEC08304-9DA2-44FC-BBC3-F432A48CE83C}.Release|x86.Build.0 = Release|Any CPU
{C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Debug|x64.Build.0 = Debug|Any CPU
+ {C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Debug|x86.Build.0 = Debug|Any CPU
{C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Release|x64.ActiveCfg = Release|Any CPU
+ {C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Release|x64.Build.0 = Release|Any CPU
+ {C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Release|x86.ActiveCfg = Release|Any CPU
+ {C550C547-CC8A-471A-925F-DF1CD3FA6F50}.Release|x86.Build.0 = Release|Any CPU
{4EEE7867-461B-49EC-9450-3973B932A5C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4EEE7867-461B-49EC-9450-3973B932A5C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4EEE7867-461B-49EC-9450-3973B932A5C8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4EEE7867-461B-49EC-9450-3973B932A5C8}.Debug|x64.Build.0 = Debug|Any CPU
+ {4EEE7867-461B-49EC-9450-3973B932A5C8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4EEE7867-461B-49EC-9450-3973B932A5C8}.Debug|x86.Build.0 = Debug|Any CPU
{4EEE7867-461B-49EC-9450-3973B932A5C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4EEE7867-461B-49EC-9450-3973B932A5C8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4EEE7867-461B-49EC-9450-3973B932A5C8}.Release|x64.ActiveCfg = Release|Any CPU
+ {4EEE7867-461B-49EC-9450-3973B932A5C8}.Release|x64.Build.0 = Release|Any CPU
+ {4EEE7867-461B-49EC-9450-3973B932A5C8}.Release|x86.ActiveCfg = Release|Any CPU
+ {4EEE7867-461B-49EC-9450-3973B932A5C8}.Release|x86.Build.0 = Release|Any CPU
{823A4ABD-43F0-4BE9-9DD6-722A84497432}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{823A4ABD-43F0-4BE9-9DD6-722A84497432}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {823A4ABD-43F0-4BE9-9DD6-722A84497432}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {823A4ABD-43F0-4BE9-9DD6-722A84497432}.Debug|x64.Build.0 = Debug|Any CPU
+ {823A4ABD-43F0-4BE9-9DD6-722A84497432}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {823A4ABD-43F0-4BE9-9DD6-722A84497432}.Debug|x86.Build.0 = Debug|Any CPU
{823A4ABD-43F0-4BE9-9DD6-722A84497432}.Release|Any CPU.ActiveCfg = Release|Any CPU
{823A4ABD-43F0-4BE9-9DD6-722A84497432}.Release|Any CPU.Build.0 = Release|Any CPU
+ {823A4ABD-43F0-4BE9-9DD6-722A84497432}.Release|x64.ActiveCfg = Release|Any CPU
+ {823A4ABD-43F0-4BE9-9DD6-722A84497432}.Release|x64.Build.0 = Release|Any CPU
+ {823A4ABD-43F0-4BE9-9DD6-722A84497432}.Release|x86.ActiveCfg = Release|Any CPU
+ {823A4ABD-43F0-4BE9-9DD6-722A84497432}.Release|x86.Build.0 = Release|Any CPU
{9AFE8A79-333C-414C-A12B-A2201EC211E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9AFE8A79-333C-414C-A12B-A2201EC211E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9AFE8A79-333C-414C-A12B-A2201EC211E8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9AFE8A79-333C-414C-A12B-A2201EC211E8}.Debug|x64.Build.0 = Debug|Any CPU
+ {9AFE8A79-333C-414C-A12B-A2201EC211E8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9AFE8A79-333C-414C-A12B-A2201EC211E8}.Debug|x86.Build.0 = Debug|Any CPU
{9AFE8A79-333C-414C-A12B-A2201EC211E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9AFE8A79-333C-414C-A12B-A2201EC211E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9AFE8A79-333C-414C-A12B-A2201EC211E8}.Release|x64.ActiveCfg = Release|Any CPU
+ {9AFE8A79-333C-414C-A12B-A2201EC211E8}.Release|x64.Build.0 = Release|Any CPU
+ {9AFE8A79-333C-414C-A12B-A2201EC211E8}.Release|x86.ActiveCfg = Release|Any CPU
+ {9AFE8A79-333C-414C-A12B-A2201EC211E8}.Release|x86.Build.0 = Release|Any CPU
{BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Debug|x64.Build.0 = Debug|Any CPU
+ {BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Debug|x86.Build.0 = Debug|Any CPU
{BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Release|x64.ActiveCfg = Release|Any CPU
+ {BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Release|x64.Build.0 = Release|Any CPU
+ {BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Release|x86.ActiveCfg = Release|Any CPU
+ {BA04FBE0-6B97-4D21-9561-91F12906A5F9}.Release|x86.Build.0 = Release|Any CPU
{380C02B5-94DC-491C-9458-6F5287698C77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{380C02B5-94DC-491C-9458-6F5287698C77}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {380C02B5-94DC-491C-9458-6F5287698C77}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {380C02B5-94DC-491C-9458-6F5287698C77}.Debug|x64.Build.0 = Debug|Any CPU
+ {380C02B5-94DC-491C-9458-6F5287698C77}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {380C02B5-94DC-491C-9458-6F5287698C77}.Debug|x86.Build.0 = Debug|Any CPU
{380C02B5-94DC-491C-9458-6F5287698C77}.Release|Any CPU.ActiveCfg = Release|Any CPU
{380C02B5-94DC-491C-9458-6F5287698C77}.Release|Any CPU.Build.0 = Release|Any CPU
+ {380C02B5-94DC-491C-9458-6F5287698C77}.Release|x64.ActiveCfg = Release|Any CPU
+ {380C02B5-94DC-491C-9458-6F5287698C77}.Release|x64.Build.0 = Release|Any CPU
+ {380C02B5-94DC-491C-9458-6F5287698C77}.Release|x86.ActiveCfg = Release|Any CPU
+ {380C02B5-94DC-491C-9458-6F5287698C77}.Release|x86.Build.0 = Release|Any CPU
{D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Debug|x64.Build.0 = Debug|Any CPU
+ {D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Debug|x86.Build.0 = Debug|Any CPU
{D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Release|x64.ActiveCfg = Release|Any CPU
+ {D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Release|x64.Build.0 = Release|Any CPU
+ {D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Release|x86.ActiveCfg = Release|Any CPU
+ {D0CD20C3-C06B-436E-8C88-E5A608C74AB2}.Release|x86.Build.0 = Release|Any CPU
{32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Debug|x64.Build.0 = Debug|Any CPU
+ {32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Debug|x86.Build.0 = Debug|Any CPU
{32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Release|x64.ActiveCfg = Release|Any CPU
+ {32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Release|x64.Build.0 = Release|Any CPU
+ {32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Release|x86.ActiveCfg = Release|Any CPU
+ {32402A03-34B2-4DA8-8A55-A4E0FCA4C3B2}.Release|x86.Build.0 = Release|Any CPU
{AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Debug|x64.Build.0 = Debug|Any CPU
+ {AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Debug|x86.Build.0 = Debug|Any CPU
{AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Release|x64.ActiveCfg = Release|Any CPU
+ {AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Release|x64.Build.0 = Release|Any CPU
+ {AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Release|x86.ActiveCfg = Release|Any CPU
+ {AE89ED51-5A8A-4663-ABBE-2D399C8528F4}.Release|x86.Build.0 = Release|Any CPU
{6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Debug|x64.Build.0 = Debug|Any CPU
+ {6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Debug|x86.Build.0 = Debug|Any CPU
{6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Release|x64.ActiveCfg = Release|Any CPU
+ {6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Release|x64.Build.0 = Release|Any CPU
+ {6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Release|x86.ActiveCfg = Release|Any CPU
+ {6B5BAD8B-F029-452D-A721-0CF5F95DA1DC}.Release|x86.Build.0 = Release|Any CPU
{6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Debug|x64.Build.0 = Debug|Any CPU
+ {6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Debug|x86.Build.0 = Debug|Any CPU
{6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Release|x64.ActiveCfg = Release|Any CPU
+ {6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Release|x64.Build.0 = Release|Any CPU
+ {6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Release|x86.ActiveCfg = Release|Any CPU
+ {6E63D5DF-CADA-4AD5-8824-F1FB97185A49}.Release|x86.Build.0 = Release|Any CPU
{284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Debug|x64.Build.0 = Debug|Any CPU
+ {284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Debug|x86.Build.0 = Debug|Any CPU
{284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Release|Any CPU.Build.0 = Release|Any CPU
+ {284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Release|x64.ActiveCfg = Release|Any CPU
+ {284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Release|x64.Build.0 = Release|Any CPU
+ {284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Release|x86.ActiveCfg = Release|Any CPU
+ {284F0281-F283-4EC3-BD60-DD0CD5A5442F}.Release|x86.Build.0 = Release|Any CPU
{9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Debug|x64.Build.0 = Debug|Any CPU
+ {9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Debug|x86.Build.0 = Debug|Any CPU
{9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Release|x64.ActiveCfg = Release|Any CPU
+ {9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Release|x64.Build.0 = Release|Any CPU
+ {9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Release|x86.ActiveCfg = Release|Any CPU
+ {9EC27C83-FCD6-44B8-9BC6-9F270DD58C8E}.Release|x86.Build.0 = Release|Any CPU
{2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Debug|x64.Build.0 = Debug|Any CPU
+ {2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Debug|x86.Build.0 = Debug|Any CPU
{2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Release|x64.ActiveCfg = Release|Any CPU
+ {2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Release|x64.Build.0 = Release|Any CPU
+ {2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Release|x86.ActiveCfg = Release|Any CPU
+ {2D32A2B9-CE4E-4F0D-9A76-1578FC3F4776}.Release|x86.Build.0 = Release|Any CPU
{D17FA884-98B9-41E2-AB27-2603F79000F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D17FA884-98B9-41E2-AB27-2603F79000F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {D17FA884-98B9-41E2-AB27-2603F79000F5}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {D17FA884-98B9-41E2-AB27-2603F79000F5}.Debug|x64.Build.0 = Debug|Any CPU
+ {D17FA884-98B9-41E2-AB27-2603F79000F5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {D17FA884-98B9-41E2-AB27-2603F79000F5}.Debug|x86.Build.0 = Debug|Any CPU
{D17FA884-98B9-41E2-AB27-2603F79000F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D17FA884-98B9-41E2-AB27-2603F79000F5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {D17FA884-98B9-41E2-AB27-2603F79000F5}.Release|x64.ActiveCfg = Release|Any CPU
+ {D17FA884-98B9-41E2-AB27-2603F79000F5}.Release|x64.Build.0 = Release|Any CPU
+ {D17FA884-98B9-41E2-AB27-2603F79000F5}.Release|x86.ActiveCfg = Release|Any CPU
+ {D17FA884-98B9-41E2-AB27-2603F79000F5}.Release|x86.Build.0 = Release|Any CPU
{C7CCB288-8372-41AD-9F65-6224CE0D6358}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C7CCB288-8372-41AD-9F65-6224CE0D6358}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C7CCB288-8372-41AD-9F65-6224CE0D6358}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {C7CCB288-8372-41AD-9F65-6224CE0D6358}.Debug|x64.Build.0 = Debug|Any CPU
+ {C7CCB288-8372-41AD-9F65-6224CE0D6358}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {C7CCB288-8372-41AD-9F65-6224CE0D6358}.Debug|x86.Build.0 = Debug|Any CPU
{C7CCB288-8372-41AD-9F65-6224CE0D6358}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C7CCB288-8372-41AD-9F65-6224CE0D6358}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C7CCB288-8372-41AD-9F65-6224CE0D6358}.Release|x64.ActiveCfg = Release|Any CPU
+ {C7CCB288-8372-41AD-9F65-6224CE0D6358}.Release|x64.Build.0 = Release|Any CPU
+ {C7CCB288-8372-41AD-9F65-6224CE0D6358}.Release|x86.ActiveCfg = Release|Any CPU
+ {C7CCB288-8372-41AD-9F65-6224CE0D6358}.Release|x86.Build.0 = Release|Any CPU
{1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Debug|x64.Build.0 = Debug|Any CPU
+ {1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Debug|x86.Build.0 = Debug|Any CPU
{1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Release|Any CPU.Build.0 = Release|Any CPU
+ {1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Release|x64.ActiveCfg = Release|Any CPU
+ {1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Release|x64.Build.0 = Release|Any CPU
+ {1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Release|x86.ActiveCfg = Release|Any CPU
+ {1F9EE0B3-4BA1-4CE4-9301-1735732B61B6}.Release|x86.Build.0 = Release|Any CPU
{60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Debug|x64.Build.0 = Debug|Any CPU
+ {60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Debug|x86.Build.0 = Debug|Any CPU
{60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Release|x64.ActiveCfg = Release|Any CPU
+ {60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Release|x64.Build.0 = Release|Any CPU
+ {60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Release|x86.ActiveCfg = Release|Any CPU
+ {60D307AC-D7D6-4AA4-BF9F-DDC6809CBCC7}.Release|x86.Build.0 = Release|Any CPU
{8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Debug|x64.Build.0 = Debug|Any CPU
+ {8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Debug|x86.Build.0 = Debug|Any CPU
{8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Release|x64.ActiveCfg = Release|Any CPU
+ {8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Release|x64.Build.0 = Release|Any CPU
+ {8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Release|x86.ActiveCfg = Release|Any CPU
+ {8C20115B-AA17-41A7-837D-F5CFD286DFC9}.Release|x86.Build.0 = Release|Any CPU
{E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Debug|x64.Build.0 = Debug|Any CPU
+ {E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Debug|x86.Build.0 = Debug|Any CPU
{E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Release|x64.ActiveCfg = Release|Any CPU
+ {E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Release|x64.Build.0 = Release|Any CPU
+ {E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Release|x86.ActiveCfg = Release|Any CPU
+ {E6E3A838-95C6-462D-84E4-FAFF69DA95C0}.Release|x86.Build.0 = Release|Any CPU
{4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Debug|x64.Build.0 = Debug|Any CPU
+ {4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Debug|x86.Build.0 = Debug|Any CPU
{4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Release|x64.ActiveCfg = Release|Any CPU
+ {4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Release|x64.Build.0 = Release|Any CPU
+ {4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Release|x86.ActiveCfg = Release|Any CPU
+ {4CBBAD35-0D01-4BDD-8BDF-B6022497938E}.Release|x86.Build.0 = Release|Any CPU
{F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Debug|x64.Build.0 = Debug|Any CPU
+ {F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Debug|x86.Build.0 = Debug|Any CPU
{F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Release|x64.ActiveCfg = Release|Any CPU
+ {F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Release|x64.Build.0 = Release|Any CPU
+ {F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Release|x86.ActiveCfg = Release|Any CPU
+ {F4AB506C-AD13-4383-9AF9-48D74085ECC1}.Release|x86.Build.0 = Release|Any CPU
{769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Debug|x64.Build.0 = Debug|Any CPU
+ {769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Debug|x86.Build.0 = Debug|Any CPU
{769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Release|Any CPU.ActiveCfg = Release|Any CPU
{769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Release|Any CPU.Build.0 = Release|Any CPU
+ {769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Release|x64.ActiveCfg = Release|Any CPU
+ {769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Release|x64.Build.0 = Release|Any CPU
+ {769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Release|x86.ActiveCfg = Release|Any CPU
+ {769ED050-15AF-4EB5-A89F-D7123EE5AA95}.Release|x86.Build.0 = Release|Any CPU
{2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Debug|x64.Build.0 = Debug|Any CPU
+ {2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Debug|x86.Build.0 = Debug|Any CPU
{2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Release|x64.ActiveCfg = Release|Any CPU
+ {2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Release|x64.Build.0 = Release|Any CPU
+ {2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Release|x86.ActiveCfg = Release|Any CPU
+ {2D10539B-9BEC-4D75-980B-B1D4FDFEAB8D}.Release|x86.Build.0 = Release|Any CPU
{7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Debug|x64.Build.0 = Debug|Any CPU
+ {7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Debug|x86.Build.0 = Debug|Any CPU
{7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Release|x64.ActiveCfg = Release|Any CPU
+ {7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Release|x64.Build.0 = Release|Any CPU
+ {7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Release|x86.ActiveCfg = Release|Any CPU
+ {7680C9FD-3FC5-F4CE-1EE4-5E2DB977FAAD}.Release|x86.Build.0 = Release|Any CPU
{59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Debug|x64.Build.0 = Debug|Any CPU
+ {59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Debug|x86.Build.0 = Debug|Any CPU
{59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Release|x64.ActiveCfg = Release|Any CPU
+ {59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Release|x64.Build.0 = Release|Any CPU
+ {59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Release|x86.ActiveCfg = Release|Any CPU
+ {59171DE5-B6A9-CE9A-7CCA-976878FDAEBD}.Release|x86.Build.0 = Release|Any CPU
{22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Debug|x64.Build.0 = Debug|Any CPU
+ {22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Debug|x86.Build.0 = Debug|Any CPU
{22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Release|Any CPU.ActiveCfg = Release|Any CPU
{22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Release|Any CPU.Build.0 = Release|Any CPU
+ {22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Release|x64.ActiveCfg = Release|Any CPU
+ {22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Release|x64.Build.0 = Release|Any CPU
+ {22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Release|x86.ActiveCfg = Release|Any CPU
+ {22EFBF71-31C3-ACEE-ACDB-F2D9C5EAF958}.Release|x86.Build.0 = Release|Any CPU
{08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Debug|x64.Build.0 = Debug|Any CPU
+ {08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Debug|x86.Build.0 = Debug|Any CPU
{08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Release|x64.ActiveCfg = Release|Any CPU
+ {08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Release|x64.Build.0 = Release|Any CPU
+ {08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Release|x86.ActiveCfg = Release|Any CPU
+ {08CB46DA-52D2-AB40-1E42-A8FC799565F8}.Release|x86.Build.0 = Release|Any CPU
{2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Debug|x64.Build.0 = Debug|Any CPU
+ {2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Debug|x86.Build.0 = Debug|Any CPU
{2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Release|x64.ActiveCfg = Release|Any CPU
+ {2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Release|x64.Build.0 = Release|Any CPU
+ {2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Release|x86.ActiveCfg = Release|Any CPU
+ {2F7D4DC3-BD6A-F9B0-D972-02784FEF887D}.Release|x86.Build.0 = Release|Any CPU
{A7A57937-E309-9E58-A3B4-6B268E6933E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A7A57937-E309-9E58-A3B4-6B268E6933E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A7A57937-E309-9E58-A3B4-6B268E6933E7}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A7A57937-E309-9E58-A3B4-6B268E6933E7}.Debug|x64.Build.0 = Debug|Any CPU
+ {A7A57937-E309-9E58-A3B4-6B268E6933E7}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A7A57937-E309-9E58-A3B4-6B268E6933E7}.Debug|x86.Build.0 = Debug|Any CPU
{A7A57937-E309-9E58-A3B4-6B268E6933E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A7A57937-E309-9E58-A3B4-6B268E6933E7}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A7A57937-E309-9E58-A3B4-6B268E6933E7}.Release|x64.ActiveCfg = Release|Any CPU
+ {A7A57937-E309-9E58-A3B4-6B268E6933E7}.Release|x64.Build.0 = Release|Any CPU
+ {A7A57937-E309-9E58-A3B4-6B268E6933E7}.Release|x86.ActiveCfg = Release|Any CPU
+ {A7A57937-E309-9E58-A3B4-6B268E6933E7}.Release|x86.Build.0 = Release|Any CPU
{B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Debug|x64.Build.0 = Debug|Any CPU
+ {B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Debug|x86.Build.0 = Debug|Any CPU
{B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Release|x64.ActiveCfg = Release|Any CPU
+ {B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Release|x64.Build.0 = Release|Any CPU
+ {B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Release|x86.ActiveCfg = Release|Any CPU
+ {B75C5BBF-4110-E576-C755-66CBF94A4CD9}.Release|x86.Build.0 = Release|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Debug|x64.Build.0 = Debug|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Debug|x86.Build.0 = Debug|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Release|x64.ActiveCfg = Release|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Release|x64.Build.0 = Release|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Release|x86.ActiveCfg = Release|Any CPU
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -751,6 +1393,7 @@ Global
{2F7D4DC3-BD6A-F9B0-D972-02784FEF887D} = {A1AE894D-9061-44F0-8268-328AC41F403A}
{A7A57937-E309-9E58-A3B4-6B268E6933E7} = {A1AE894D-9061-44F0-8268-328AC41F403A}
{B75C5BBF-4110-E576-C755-66CBF94A4CD9} = {76BA9372-65AE-479C-AEF7-D50E6B486CEF}
+ {4A6FAC63-5329-44D4-A215-FA5CD30244FA} = {62D00D8A-4171-4103-A5A4-A49212E0F7B3}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {D5FF5562-3C79-434B-B951-B84542D01625}
diff --git a/src/Directory.Packages.props b/src/Directory.Packages.props
index dcb63a2f..2333e7ae 100644
--- a/src/Directory.Packages.props
+++ b/src/Directory.Packages.props
@@ -40,5 +40,7 @@
+
+
\ No newline at end of file
diff --git a/src/foundation/src/PDFsharp/src/PdfSharp-gdi/PdfSharp-gdi.csproj b/src/foundation/src/PDFsharp/src/PdfSharp-gdi/PdfSharp-gdi.csproj
index f35d5caa..2ee59ab7 100644
--- a/src/foundation/src/PDFsharp/src/PdfSharp-gdi/PdfSharp-gdi.csproj
+++ b/src/foundation/src/PDFsharp/src/PdfSharp-gdi/PdfSharp-gdi.csproj
@@ -264,6 +264,8 @@
+
+
diff --git a/src/foundation/src/PDFsharp/src/PdfSharp-wpf/PdfSharp-wpf.csproj b/src/foundation/src/PDFsharp/src/PdfSharp-wpf/PdfSharp-wpf.csproj
index be90e4ec..e7bf1b7c 100644
--- a/src/foundation/src/PDFsharp/src/PdfSharp-wpf/PdfSharp-wpf.csproj
+++ b/src/foundation/src/PDFsharp/src/PdfSharp-wpf/PdfSharp-wpf.csproj
@@ -259,6 +259,8 @@
+
+
diff --git a/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.Attachments/PdfAFRelationship.cs b/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.Attachments/PdfAFRelationship.cs
index 9bf17473..d764d636 100644
--- a/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.Attachments/PdfAFRelationship.cs
+++ b/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.Attachments/PdfAFRelationship.cs
@@ -53,6 +53,11 @@ public static class PdfAFRelationship // TODO: clean up #US322
/// shall be used if this file specification is a schema definition for the associated object (e.g. an XML schema associated with a metadata stream).
///
public const string Schema = nameof(Schema);
+
+ ///
+ /// shall be used if this file specification denotes a C2PA manifest (content credentials) associated with this PDF document.
+ ///
+ public const string C2paManifest = "C2PA_Manifest";
}
}
diff --git a/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.C2pa/C2paManager.cs b/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.C2pa/C2paManager.cs
new file mode 100644
index 00000000..a70d9ab3
--- /dev/null
+++ b/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.C2pa/C2paManager.cs
@@ -0,0 +1,125 @@
+// PDFsharp - A .NET library for processing PDF
+// See the LICENSE file in the solution root for more information.
+
+using PdfSharp.Pdf.Advanced;
+using PdfSharp.Pdf.Attachments;
+using PdfSharp.Pdf.Internal;
+
+namespace PdfSharp.Pdf.C2pa
+{
+ ///
+ /// Provides functionality to read C2PA content credentials manifests embedded in a PDF document.
+ ///
+ public class C2paManager : ManagerBase
+ {
+ C2paManager(PdfDocument document) : base(document)
+ { }
+
+ ///
+ /// Gets a value indicating whether the document contains at least one C2PA manifest.
+ ///
+ public bool HasManifests => Manifests.Count > 0;
+
+ ///
+ /// Gets the number of C2PA manifests found in the document.
+ ///
+ public int ManifestCount => Manifests.Count;
+
+ ///
+ /// Gets information about all C2PA manifests embedded in the document.
+ ///
+ public IReadOnlyList Manifests => _manifests ??= ScanManifests();
+
+ List? _manifests;
+
+ List ScanManifests()
+ {
+ var result = new List();
+ var seen = new HashSet();
+ var catalog = Document.Catalog;
+
+ // The C2PA spec requires the manifest to be listed in the catalog's /AF array, but some
+ // producers only add it to the /Names/EmbeddedFiles name tree. The name tree is the only
+ // place we can get the /Names key from, so scan it first.
+ if (catalog.HasNames)
+ {
+ var names = catalog.Names;
+ if (names.HasEmbeddedFiles)
+ {
+ var namesNode = names.GetEmbeddedFiles()?.Names;
+ if (namesNode != null)
+ {
+ var count = namesNode.Count;
+ for (var idx = 0; idx < count; idx++)
+ {
+ var entry = namesNode[idx];
+ TryAddManifest(entry.Value, entry.Key.Value, result, seen);
+ }
+ }
+ }
+ }
+
+ // Scan /AF as well to catch manifests that are not listed in the name tree.
+ if (catalog.Elements.TryGetArray(PdfCatalog.Keys.AF, out var afArray))
+ {
+ var count = afArray.Elements.Count;
+ for (var idx = 0; idx < count; idx++)
+ TryAddManifest(afArray.Elements[idx], "", result, seen);
+ }
+
+ return result;
+ }
+
+ static void TryAddManifest(PdfItem item, string namesKey, List result, HashSet seen)
+ {
+ PdfReference.Dereference(ref item);
+ if (item is not PdfDictionary fileSpec)
+ return;
+
+ if (!fileSpec.Elements.TryGetString(PdfFileSpecification.Keys.AFRelationship, out var relationship))
+ return;
+ // /AFRelationship is written as a PDF name, whose value includes the leading slash.
+ var relationshipName = relationship.Length > 0 && relationship[0] == '/' ? relationship[1..] : relationship;
+ if (relationshipName != PdfAFRelationship.C2paManifest)
+ return;
+
+ var ef = fileSpec.Elements.GetDictionary(PdfFileSpecification.Keys.EF);
+ var stream = ef?.Elements.GetDictionary("/F") ?? ef?.Elements.GetDictionary("/UF");
+ if (stream?.Stream == null)
+ return;
+
+ // The same manifest can be reachable through both the name tree and /AF.
+ if (!seen.Add(stream.ObjectID))
+ return;
+
+ if (!fileSpec.Elements.TryGetString(PdfFileSpecification.Keys.UF, out var fileName) || fileName.Length == 0)
+ fileSpec.Elements.TryGetString(PdfFileSpecification.Keys.F, out fileName);
+ fileName ??= "";
+
+ fileSpec.Elements.TryGetString(PdfFileSpecification.Keys.Desc, out var description);
+ description ??= "";
+
+ // /Subtype is not a defined file specification key, but producers put the mime type here anyway.
+ if (!fileSpec.Elements.TryGetString("/Subtype", out var mimeType) || mimeType.Length == 0)
+ stream.Elements.TryGetString("/Subtype", out mimeType);
+ mimeType ??= "";
+
+ result.Add(new C2paManifestInfo
+ {
+ NamesKey = namesKey,
+ FileName = fileName,
+ Description = description,
+ MimeType = mimeType,
+ AFRelationship = relationshipName,
+ Data = stream.Stream.UnfilteredValue,
+ ObjectID = stream.ObjectID
+ });
+ }
+
+ ///
+ /// Gets or creates the C2paManager for the specified document.
+ ///
+ public static C2paManager ForDocument(PdfDocument document)
+ => document.C2paManager ??= new(document);
+ }
+}
diff --git a/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.C2pa/C2paManifestInfo.cs b/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.C2pa/C2paManifestInfo.cs
new file mode 100644
index 00000000..555b637d
--- /dev/null
+++ b/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.C2pa/C2paManifestInfo.cs
@@ -0,0 +1,51 @@
+// PDFsharp - A .NET library for processing PDF
+// See the LICENSE file in the solution root for more information.
+
+namespace PdfSharp.Pdf.C2pa
+{
+ ///
+ /// Sums up all relevant information of a C2PA content credentials manifest embedded in a PDF file.
+ ///
+ public class C2paManifestInfo
+ {
+ ///
+ /// The key of the file specification in the /Names array of the /EmbeddedFiles name tree,
+ /// or the empty string if the manifest was only found via the catalog's /AF array.
+ ///
+ public string NamesKey { get; internal set; } = "";
+
+ ///
+ /// Gets the name of the file, taken from the file specification's /UF entry, falling back to /F.
+ ///
+ public string FileName { get; internal set; } = "";
+
+ ///
+ /// Gets the optional description of the file specification.
+ ///
+ public string Description { get; internal set; } = "";
+
+ ///
+ /// Gets the mime type of the manifest, taken from the file specification's /Subtype entry,
+ /// falling back to the /Subtype entry of the embedded file stream.
+ ///
+ public string MimeType { get; internal set; } = "";
+
+ ///
+ /// Gets the /AFRelationship value of the file specification.
+ ///
+ // ReSharper disable once InconsistentNaming
+ public string AFRelationship { get; internal set; } = "";
+
+ ///
+ /// Gets the raw bytes of the C2PA manifest (JUMBF box), i.e. the unfiltered content
+ /// of the embedded file stream.
+ ///
+ public byte[] Data { get; internal set; } = [];
+
+ ///
+ /// The object ID of the embedded file stream, used to detect duplicates when the
+ /// same manifest is referenced from both the name tree and the /AF array.
+ ///
+ internal PdfObjectID ObjectID { get; init; }
+ }
+}
diff --git a/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.IO/Parser.cs b/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.IO/Parser.cs
index 64fe1c92..252ccd87 100644
--- a/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.IO/Parser.cs
+++ b/src/foundation/src/PDFsharp/src/PdfSharp/Pdf.IO/Parser.cs
@@ -422,7 +422,7 @@ void ReadDictionaryStream(PdfDictionary dict, SuppressExceptions? suppressObject
int GetStreamLength(PdfDictionary dict, SuppressExceptions? suppressObjectOrderExceptions)
{
//if (dict.Elements["/F"] != null) // TODO #US373 Just a null check.
- if (dict.Elements.HasValue("/F")) // #US373
+ if (IsExternalFileStream(dict)) // #US373
throw new NotImplementedException("File streams are not yet implemented.");
#if TEST_CODE_
// By uncommenting this and the label below,
@@ -528,6 +528,51 @@ int GetStreamLength(PdfDictionary dict, SuppressExceptions? suppressObjectOrderE
return lenStream;
}
+ ///
+ /// Determines whether the stream dictionary's /F entry denotes an external file stream
+ /// (PDF 2.0 §7.3.8.2), i.e. the stream data is stored outside the PDF file and the bytes
+ /// between 'stream' and 'endstream' must be ignored.
+ /// Some producers misuse /F for unrelated purposes (e.g. embedded file parameters), so we
+ /// only treat it as an external file stream if its value actually looks like a file specification.
+ ///
+ static bool IsExternalFileStream(PdfDictionary dict)
+ {
+ switch (dict.Elements["/F"])
+ {
+ case null:
+ return false;
+
+ // A file specification can be a simple string containing the file name.
+ case PdfString or PdfStringObject:
+ return true;
+
+ // A dictionary is only a file specification if it looks like one.
+ case PdfDictionary fileSpec:
+ return IsFileSpecificationDictionary(fileSpec);
+
+ case PdfReference { Value: PdfDictionary fileSpec }:
+ return IsFileSpecificationDictionary(fileSpec);
+
+ // An indirect object not yet read. We assume it is a file specification.
+ case PdfReference:
+ return true;
+
+ default:
+ return false;
+ }
+ }
+
+ static bool IsFileSpecificationDictionary(PdfDictionary dict)
+ {
+ if (dict.Elements.TryGetName("/Type", out var type) && type == "/Filespec")
+ return true;
+
+ // The /Type entry is only required if /EF or /RF is present, so we also check
+ // for the entries a file specification dictionary is made of.
+ return dict.Elements.HasValue("/FS") || dict.Elements.HasValue("/F") || dict.Elements.HasValue("/UF")
+ || dict.Elements.HasValue("/DOS") || dict.Elements.HasValue("/Mac") || dict.Elements.HasValue("/Unix");
+ }
+
///
/// Try to read 'endstream' after reading the stream content. Sometimes the Length is not exact
/// and ReadSymbol fails. In this case we search the token 'endstream' in the
diff --git a/src/foundation/src/PDFsharp/src/PdfSharp/Pdf/PdfDocument.cs b/src/foundation/src/PDFsharp/src/PdfSharp/Pdf/PdfDocument.cs
index 777f441f..792a18c2 100644
--- a/src/foundation/src/PDFsharp/src/PdfSharp/Pdf/PdfDocument.cs
+++ b/src/foundation/src/PDFsharp/src/PdfSharp/Pdf/PdfDocument.cs
@@ -9,6 +9,7 @@
using PdfSharp.Logging;
using PdfSharp.Pdf.Advanced;
using PdfSharp.Pdf.Attachments;
+using PdfSharp.Pdf.C2pa;
using PdfSharp.Pdf.Filters;
using PdfSharp.Pdf.Forms;
using PdfSharp.Pdf.Internal;
@@ -884,6 +885,11 @@ internal EmbeddedFilesManager GetEmbeddedFilesManager()
internal PdfAManager GetPdfAManager()
=> PdfAManager ??= PdfAManager.ForDocument(this);
+ internal C2paManager? C2paManager { get; set; }
+
+ internal C2paManager GetC2paManager()
+ => C2paManager ??= C2paManager.ForDocument(this);
+
// ReSharper disable once InconsistentNaming
internal UAManager? UAManager { get; set; }
diff --git a/src/foundation/src/PDFsharp/tests/PdfSharp.Tests/Pdf.C2pa/C2paTests.cs b/src/foundation/src/PDFsharp/tests/PdfSharp.Tests/Pdf.C2pa/C2paTests.cs
new file mode 100644
index 00000000..334ab0c5
--- /dev/null
+++ b/src/foundation/src/PDFsharp/tests/PdfSharp.Tests/Pdf.C2pa/C2paTests.cs
@@ -0,0 +1,191 @@
+// PDFsharp - A .NET library for processing PDF
+// See the LICENSE file in the solution root for more information.
+
+using System.Text;
+using PdfSharp.Diagnostics;
+using PdfSharp.Fonts;
+using PdfSharp.Pdf;
+using PdfSharp.Pdf.Advanced;
+using PdfSharp.Pdf.Attachments;
+using PdfSharp.Pdf.C2pa;
+using PdfSharp.Pdf.IO;
+using PdfSharp.Quality;
+using Xunit;
+using FluentAssertions;
+
+namespace PdfSharp.Tests.Pdf.C2pa
+{
+ [Collection("PDFsharp")]
+ public class C2paTests : IDisposable
+ {
+ public C2paTests()
+ {
+ PdfSharpCore.ResetAll();
+#if CORE
+ GlobalFontSettings.FontResolver = new UnitTestFontResolver();
+#endif
+ }
+
+ public void Dispose()
+ {
+ PdfSharpCore.ResetAll();
+ }
+
+ static string DuckPdfPath => Path.Combine(AppContext.BaseDirectory, "Pdf.C2pa", "testdata", "duck.pdf");
+
+ ///
+ /// Builds a minimal document with an /EmbeddedFiles name tree entry whose file specification
+ /// points to a stream that carries the embedded file parameters under the (wrong) /F key
+ /// instead of /Params, reproducing the structure reported in issue #389.
+ ///
+ static PdfDocument BuildDocumentWithC2paManifest(byte[] manifestBytes)
+ {
+ var document = new PdfDocument();
+ document.AddPage();
+
+ var manifestStream = new PdfDictionary(document);
+ document.Internals.AddObject(manifestStream);
+ manifestStream.CreateStream(manifestBytes);
+ // Misplaced key: a real embedded file stream would use /Params here, not /F.
+ var badParams = new PdfDictionary(document);
+ badParams.Elements.SetString("/Subtype", "application/c2pa");
+ manifestStream.Elements.SetObject("/F", badParams);
+
+ var ef = new PdfDictionary(document);
+ ef.Elements.SetReference("/F", manifestStream.Reference!);
+
+ var fileSpec = new PdfDictionary(document);
+ document.Internals.AddObject(fileSpec);
+ fileSpec.Elements.SetName("/Type", "/Filespec");
+ fileSpec.Elements.SetString("/F", "Content Credentials");
+ fileSpec.Elements.SetString("/UF", "Content Credentials");
+ fileSpec.Elements.SetString("/Desc", "Content Credentials");
+ fileSpec.Elements.SetString("/Subtype", "application/c2pa");
+ fileSpec.Elements.SetName("/AFRelationship", "/" + PdfAFRelationship.C2paManifest);
+ fileSpec.Elements.SetObject("/EF", ef);
+
+ var embeddedFiles = document.Catalog.Names.GetEmbeddedFiles(true)!;
+ embeddedFiles.AddName("Content Credentials", fileSpec.Reference!);
+
+ var af = document.Catalog.Elements.GetRequiredArray(PdfCatalog.Keys.AF, VCF.Create);
+ af.AddDictionary(fileSpec);
+
+ return document;
+ }
+
+ static PdfDocument SaveAndReopen(PdfDocument document, PdfDocumentOpenMode openMode)
+ {
+ using var stream = new MemoryStream();
+ document.Save(stream);
+ stream.Position = 0;
+ return PdfReader.Open(stream, openMode);
+ }
+
+ [Fact]
+ public void Open_document_with_C2PA_manifest()
+ {
+ var manifestBytes = Encoding.ASCII.GetBytes("dummy JUMBF content");
+ using var document = BuildDocumentWithC2paManifest(manifestBytes);
+
+ var action = () => SaveAndReopen(document, PdfDocumentOpenMode.Import);
+
+ action.Should().NotThrow();
+ }
+
+ [Fact]
+ public void Get_C2PA_manifest_info()
+ {
+ var manifestBytes = Encoding.ASCII.GetBytes("dummy JUMBF content");
+ using var document = BuildDocumentWithC2paManifest(manifestBytes);
+ using var reopened = SaveAndReopen(document, PdfDocumentOpenMode.Import);
+
+ var c2pa = C2paManager.ForDocument(reopened);
+
+ c2pa.HasManifests.Should().BeTrue();
+ c2pa.ManifestCount.Should().Be(1);
+
+ var info = c2pa.Manifests[0];
+ info.NamesKey.Should().Be("Content Credentials");
+ info.FileName.Should().Be("Content Credentials");
+ info.Description.Should().Be("Content Credentials");
+ info.MimeType.Should().Be("application/c2pa");
+ info.AFRelationship.Should().Be(PdfAFRelationship.C2paManifest);
+ info.Data.Should().Equal(manifestBytes);
+ }
+
+ [Fact]
+ public void Get_C2PA_manifest_info_from_document_without_manifest()
+ {
+ using var document = new PdfDocument();
+ document.AddPage();
+ using var reopened = SaveAndReopen(document, PdfDocumentOpenMode.Import);
+
+ var c2pa = C2paManager.ForDocument(reopened);
+
+ c2pa.HasManifests.Should().BeFalse();
+ c2pa.ManifestCount.Should().Be(0);
+ c2pa.Manifests.Should().BeEmpty();
+ }
+
+ [Fact]
+ public void Open_document_with_external_file_stream()
+ {
+ using var document = new PdfDocument();
+ document.AddPage();
+
+ var externalStream = new PdfDictionary(document);
+ document.Internals.AddObject(externalStream);
+ externalStream.CreateStream([1, 2, 3, 4]);
+
+ var fileSpec = new PdfDictionary(document);
+ fileSpec.Elements.SetName("/Type", "/Filespec");
+ fileSpec.Elements.SetString("/F", "some/external/file.bin");
+ externalStream.Elements.SetObject("/F", fileSpec);
+
+ // Attach the stream to the catalog so it survives object compaction on save.
+ document.Catalog.Elements.SetReference("/Test389ExternalFile", externalStream.Reference!);
+
+ using var stream = new MemoryStream();
+ document.Save(stream);
+ stream.Position = 0;
+
+ var action = () => PdfReader.Open(stream, PdfDocumentOpenMode.Import);
+
+ action.Should().Throw().WithMessage("File streams are not yet implemented.");
+ }
+
+ [Theory]
+ [InlineData(PdfDocumentOpenMode.Import)]
+ [InlineData(PdfDocumentOpenMode.Modify)]
+ public void Open_duck_pdf(PdfDocumentOpenMode openMode)
+ {
+ var action = () => PdfReader.Open(DuckPdfPath, openMode);
+
+ action.Should().NotThrow();
+ }
+
+ [Fact]
+ public void Get_C2PA_manifest_info_from_duck_pdf()
+ {
+ using var document = PdfReader.Open(DuckPdfPath, PdfDocumentOpenMode.Import);
+
+ var c2pa = C2paManager.ForDocument(document);
+
+ c2pa.HasManifests.Should().BeTrue();
+ c2pa.ManifestCount.Should().Be(1);
+
+ var info = c2pa.Manifests[0];
+ info.NamesKey.Should().Be("Content Credentials");
+ info.FileName.Should().Be("Content Credentials");
+ info.Description.Should().Be("Content Credentials");
+ info.MimeType.Should().Be("application/c2pa");
+ info.AFRelationship.Should().Be(PdfAFRelationship.C2paManifest);
+ info.Data.Length.Should().Be(20166);
+
+ // The manifest must be a valid JUMBF superbox: 4-byte big-endian length, followed by the "jumb" type.
+ var length = (info.Data[0] << 24) | (info.Data[1] << 16) | (info.Data[2] << 8) | info.Data[3];
+ length.Should().Be(info.Data.Length);
+ Encoding.ASCII.GetString(info.Data, 4, 4).Should().Be("jumb");
+ }
+ }
+}
diff --git a/src/foundation/src/PDFsharp/tests/PdfSharp.Tests/Pdf.C2pa/testdata/duck.pdf b/src/foundation/src/PDFsharp/tests/PdfSharp.Tests/Pdf.C2pa/testdata/duck.pdf
new file mode 100644
index 00000000..09762389
Binary files /dev/null and b/src/foundation/src/PDFsharp/tests/PdfSharp.Tests/Pdf.C2pa/testdata/duck.pdf differ
diff --git a/src/foundation/src/PDFsharp/tests/PdfSharp.Tests/PdfSharp.Tests.csproj b/src/foundation/src/PDFsharp/tests/PdfSharp.Tests/PdfSharp.Tests.csproj
index 4286a509..f006c270 100644
--- a/src/foundation/src/PDFsharp/tests/PdfSharp.Tests/PdfSharp.Tests.csproj
+++ b/src/foundation/src/PDFsharp/tests/PdfSharp.Tests/PdfSharp.Tests.csproj
@@ -36,6 +36,11 @@
+
+
+
+
+
diff --git a/src/samples/src/PDFsharp/src/ReadC2paInfo/Cbor.cs b/src/samples/src/PDFsharp/src/ReadC2paInfo/Cbor.cs
new file mode 100644
index 00000000..92fba49e
--- /dev/null
+++ b/src/samples/src/PDFsharp/src/ReadC2paInfo/Cbor.cs
@@ -0,0 +1,173 @@
+// PDFsharp - A .NET library for processing PDF
+// See the LICENSE file in the solution root for more information.
+
+using System.Formats.Cbor;
+using System.Text;
+
+namespace ReadC2paInfo
+{
+ ///
+ /// A CBOR value tagged with a semantic tag number (RFC 8949 §3.4), e.g. tag 18 for COSE_Sign1.
+ ///
+ record CborTagged(ulong Tag, object? Value);
+
+ ///
+ /// Minimal CBOR decoder that turns a CBOR byte sequence into a generic, inspectable .NET object
+ /// tree: maps become List<KeyValuePair<object?, object?>> (order preserved, keys are
+ /// not required to be strings), arrays become List<object?>, and scalars become
+ /// string/byte[]/long/bool/double/null. Good enough to explore or pull specific fields out of a
+ /// C2PA claim/assertion/COSE structure without depending on the exact schema.
+ ///
+ static class Cbor
+ {
+ public static object? Decode(ReadOnlyMemory data)
+ {
+ var reader = new CborReader(data, CborConformanceMode.Lax);
+ return ReadValue(reader);
+ }
+
+ static object? ReadValue(CborReader reader)
+ {
+ var state = reader.PeekState();
+ switch (state)
+ {
+ case CborReaderState.UnsignedInteger:
+ case CborReaderState.NegativeInteger:
+ return reader.ReadInt64();
+ case CborReaderState.ByteString:
+ return reader.ReadByteString();
+ case CborReaderState.TextString:
+ return reader.ReadTextString();
+ case CborReaderState.StartArray:
+ {
+ reader.ReadStartArray();
+ var list = new List