From c786a69d7c42480b434f2bc139afb92693a3cfbe Mon Sep 17 00:00:00 2001 From: Animetrics Date: Thu, 6 Oct 2011 16:29:13 -0400 Subject: [PATCH] Fixed binary array parsing. Added support for null, bool and date types. Changed public functions to be more intuitive. --- BinaryPlist/.svn/all-wcprops | 11 + BinaryPlist/.svn/entries | 72 ++ .../.svn/prop-base/BinaryPlist.sln.svn-base | 5 + .../.svn/text-base/BinaryPlist.sln.svn-base | 24 + BinaryPlist/BinaryPlist.sln | 23 + BinaryPlist/BinaryPlist.suo | Bin 0 -> 30720 bytes BinaryPlist/BinaryPlist.vsmdi | 6 + BinaryPlist/BinaryPlist/.svn/all-wcprops | 23 + BinaryPlist/BinaryPlist/.svn/entries | 157 +++ .../text-base/BinaryPlist.csproj.svn-base | 62 ++ .../.svn/text-base/Plist.cs.svn-base | 378 +++++++ .../.svn/text-base/Program.cs.svn-base | 15 + BinaryPlist/BinaryPlist/BinaryPlist.csproj | 62 ++ BinaryPlist/BinaryPlist/Plist.cs | 792 ++++++++++++++ BinaryPlist/BinaryPlist/Program.cs | 25 + .../BinaryPlist/Properties/.svn/all-wcprops | 11 + .../BinaryPlist/Properties/.svn/entries | 62 ++ .../.svn/text-base/AssemblyInfo.cs.svn-base | 36 + .../BinaryPlist/Properties/AssemblyInfo.cs | 36 + .../BinaryPlist/bin/Debug/BinaryPlist.exe | Bin 0 -> 17920 bytes .../BinaryPlist/bin/Debug/BinaryPlist.pdb | Bin 0 -> 40448 bytes .../bin/Debug/BinaryPlist.vshost.exe | Bin 0 -> 11600 bytes .../bin/Debug/BinaryPlist.vshost.exe.manifest | 11 + .../BinaryPlist/bin/Debug/NewBinFile.plist | Bin 0 -> 86 bytes .../bin/Debug/oldPlists/bplist.plist | Bin 0 -> 173 bytes .../bin/Debug/oldPlists/example2.plist | 39 + .../bin/Debug/oldPlists/exampleXML.plist | 27 + .../bin/Debug/oldPlists/exampleXMLbin.plist | 17 + .../bin/Debug/oldPlists/fimsbin.plist | Bin 0 -> 954 bytes .../bin/Debug/oldPlists/fimsbinary.plist | Bin 0 -> 1204 bytes .../bin/Debug/oldPlists/fimsxml.plist | 10 + .../Debug/oldPlists/fimsxmlOutBinary.plist | 39 + .../bin/Debug/oldPlists/genxmlplist.plist | 963 ++++++++++++++++++ .../bin/Debug/oldPlists/nesteddict.plist | Bin 0 -> 8968 bytes .../bin/Debug/oldPlists/newgenxmlplist.plist | 963 ++++++++++++++++++ .../bin/Debug/oldPlists/outputplist.plist | 963 ++++++++++++++++++ .../bin/Debug/oldPlists/test.plist | 76 ++ .../BinaryPlist/bin/Debug/xmlTest.plist | 10 + .../BinaryPlist.csproj.FileListAbsolute.txt | 5 + .../BinaryPlist/obj/x86/Debug/BinaryPlist.exe | Bin 0 -> 17920 bytes .../BinaryPlist/obj/x86/Debug/BinaryPlist.pdb | Bin 0 -> 40448 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 5869 bytes .../x86/Debug/ResolveAssemblyReference.cache | Bin 0 -> 6016 bytes BinaryPlist/Local.testsettings | 10 + ...ark_ANIMETRICSPC07 2011-10-05 16_29_20.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_30_53.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_31_27.trx | 38 + .../Out/AgentRestart.dat | Bin 0 -> 344 bytes ...ark_ANIMETRICSPC07 2011-10-05 16_33_35.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_34_35.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_37_00.trx | 38 + .../Out/AgentRestart.dat | Bin 0 -> 344 bytes ...ark_ANIMETRICSPC07 2011-10-05 16_39_35.trx | 38 + .../Out/AgentRestart.dat | Bin 0 -> 344 bytes ...ark_ANIMETRICSPC07 2011-10-05 16_41_19.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_41_29.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_42_45.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_43_01.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_44_00.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_53_45.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_54_13.trx | 38 + .../Out/AgentRestart.dat | Bin 0 -> 344 bytes ...ark_ANIMETRICSPC07 2011-10-05 16_55_26.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_56_33.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_58_07.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_58_44.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 16_59_58.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 17_03_07.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 17_03_33.trx | 38 + .../Out/AgentRestart.dat | Bin 0 -> 344 bytes ...ark_ANIMETRICSPC07 2011-10-05 17_06_03.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 17_06_37.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 17_07_59.trx | 33 + ...ark_ANIMETRICSPC07 2011-10-05 17_08_45.trx | 33 + BinaryPlist/Testing/.svn/entries | 51 + .../Testing/.svn/text-base/Plist.cs.svn-base | 378 +++++++ .../.svn/text-base/Program.cs.svn-base | 15 + BinaryPlist/Testing/Plist.cs | 889 ++++++++++++++++ .../Testing/Properties/AssemblyInfo.cs | 35 + BinaryPlist/Testing/Testing.csproj | 61 ++ BinaryPlist/Testing/bin/Debug/Testing.dll | Bin 0 -> 19968 bytes BinaryPlist/Testing/bin/Debug/Testing.pdb | Bin 0 -> 44544 bytes BinaryPlist/Testing/bin/Debug/sourceBin.plist | Bin 0 -> 8186 bytes BinaryPlist/Testing/bin/Debug/sourceXml.plist | 240 +++++ BinaryPlist/Testing/bin/Debug/targetBin.plist | Bin 0 -> 8238 bytes BinaryPlist/Testing/bin/Debug/targetXml.plist | 89 ++ ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 5387 bytes .../obj/Debug/ResolveAssemblyReference.cache | Bin 0 -> 6231 bytes .../Debug/Testing.csproj.FileListAbsolute.txt | 5 + BinaryPlist/Testing/obj/Debug/Testing.dll | Bin 0 -> 19968 bytes BinaryPlist/Testing/obj/Debug/Testing.pdb | Bin 0 -> 44544 bytes BinaryPlist/Testing/obj/Debug/xmlTest.plist | 8 + BinaryPlist/Testing/plistTests.cs | 36 + BinaryPlist/TraceAndTestImpact.testsettings | 9 + 94 files changed, 7599 insertions(+) create mode 100644 BinaryPlist/.svn/all-wcprops create mode 100644 BinaryPlist/.svn/entries create mode 100644 BinaryPlist/.svn/prop-base/BinaryPlist.sln.svn-base create mode 100644 BinaryPlist/.svn/text-base/BinaryPlist.sln.svn-base create mode 100644 BinaryPlist/BinaryPlist.sln create mode 100644 BinaryPlist/BinaryPlist.suo create mode 100644 BinaryPlist/BinaryPlist.vsmdi create mode 100644 BinaryPlist/BinaryPlist/.svn/all-wcprops create mode 100644 BinaryPlist/BinaryPlist/.svn/entries create mode 100644 BinaryPlist/BinaryPlist/.svn/text-base/BinaryPlist.csproj.svn-base create mode 100644 BinaryPlist/BinaryPlist/.svn/text-base/Plist.cs.svn-base create mode 100644 BinaryPlist/BinaryPlist/.svn/text-base/Program.cs.svn-base create mode 100644 BinaryPlist/BinaryPlist/BinaryPlist.csproj create mode 100644 BinaryPlist/BinaryPlist/Plist.cs create mode 100644 BinaryPlist/BinaryPlist/Program.cs create mode 100644 BinaryPlist/BinaryPlist/Properties/.svn/all-wcprops create mode 100644 BinaryPlist/BinaryPlist/Properties/.svn/entries create mode 100644 BinaryPlist/BinaryPlist/Properties/.svn/text-base/AssemblyInfo.cs.svn-base create mode 100644 BinaryPlist/BinaryPlist/Properties/AssemblyInfo.cs create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/BinaryPlist.exe create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/BinaryPlist.pdb create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/BinaryPlist.vshost.exe create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/BinaryPlist.vshost.exe.manifest create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/NewBinFile.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/bplist.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/example2.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/exampleXML.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/exampleXMLbin.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsbin.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsbinary.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsxml.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsxmlOutBinary.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/genxmlplist.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/nesteddict.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/newgenxmlplist.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/outputplist.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/oldPlists/test.plist create mode 100644 BinaryPlist/BinaryPlist/bin/Debug/xmlTest.plist create mode 100644 BinaryPlist/BinaryPlist/obj/x86/Debug/BinaryPlist.csproj.FileListAbsolute.txt create mode 100644 BinaryPlist/BinaryPlist/obj/x86/Debug/BinaryPlist.exe create mode 100644 BinaryPlist/BinaryPlist/obj/x86/Debug/BinaryPlist.pdb create mode 100644 BinaryPlist/BinaryPlist/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 BinaryPlist/BinaryPlist/obj/x86/Debug/ResolveAssemblyReference.cache create mode 100644 BinaryPlist/Local.testsettings create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_29_20.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_30_53.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_31_27.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_31_27/Out/AgentRestart.dat create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_33_35.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_34_35.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_37_00.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_37_00/Out/AgentRestart.dat create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_39_35.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_39_35/Out/AgentRestart.dat create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_41_19.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_41_29.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_42_45.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_43_01.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_44_00.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_53_45.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_54_13.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_54_13/Out/AgentRestart.dat create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_55_26.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_56_33.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_58_07.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_58_44.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_59_58.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_07.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_33.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_33/Out/AgentRestart.dat create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_06_03.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_06_37.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_07_59.trx create mode 100644 BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_08_45.trx create mode 100644 BinaryPlist/Testing/.svn/entries create mode 100644 BinaryPlist/Testing/.svn/text-base/Plist.cs.svn-base create mode 100644 BinaryPlist/Testing/.svn/text-base/Program.cs.svn-base create mode 100644 BinaryPlist/Testing/Plist.cs create mode 100644 BinaryPlist/Testing/Properties/AssemblyInfo.cs create mode 100644 BinaryPlist/Testing/Testing.csproj create mode 100644 BinaryPlist/Testing/bin/Debug/Testing.dll create mode 100644 BinaryPlist/Testing/bin/Debug/Testing.pdb create mode 100644 BinaryPlist/Testing/bin/Debug/sourceBin.plist create mode 100644 BinaryPlist/Testing/bin/Debug/sourceXml.plist create mode 100644 BinaryPlist/Testing/bin/Debug/targetBin.plist create mode 100644 BinaryPlist/Testing/bin/Debug/targetXml.plist create mode 100644 BinaryPlist/Testing/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 BinaryPlist/Testing/obj/Debug/ResolveAssemblyReference.cache create mode 100644 BinaryPlist/Testing/obj/Debug/Testing.csproj.FileListAbsolute.txt create mode 100644 BinaryPlist/Testing/obj/Debug/Testing.dll create mode 100644 BinaryPlist/Testing/obj/Debug/Testing.pdb create mode 100644 BinaryPlist/Testing/obj/Debug/xmlTest.plist create mode 100644 BinaryPlist/Testing/plistTests.cs create mode 100644 BinaryPlist/TraceAndTestImpact.testsettings diff --git a/BinaryPlist/.svn/all-wcprops b/BinaryPlist/.svn/all-wcprops new file mode 100644 index 0000000..11e688d --- /dev/null +++ b/BinaryPlist/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 43 +/svn/insovert/!svn/ver/61/BinaryPlist/trunk +END +BinaryPlist.sln +K 25 +svn:wc:ra_dav:version-url +V 59 +/svn/insovert/!svn/ver/62/BinaryPlist/trunk/BinaryPlist.sln +END diff --git a/BinaryPlist/.svn/entries b/BinaryPlist/.svn/entries new file mode 100644 index 0000000..b13ad1c --- /dev/null +++ b/BinaryPlist/.svn/entries @@ -0,0 +1,72 @@ +10 + +dir +61 +https://insovertgames.blogsite.org/svn/insovert/BinaryPlist/trunk +https://insovertgames.blogsite.org/svn/insovert + + + +2010-08-12T18:00:43.828125Z +61 +Mark + + + + + + + + + + + + + + +6c5e26bf-2db1-2545-b2e2-0c82a69ca2e6 + +BinaryPlist +dir + +BinaryPlist.sln +file +62 + + + +2010-08-12T18:01:00.684347Z +5aece35608956bdec4e2ade77064df9d +2010-08-12T18:01:20.656250Z +62 +Mark +has-props + + + + + + + + + + + + + + + + + + + + +1021 + +Testing +dir + + + +add + diff --git a/BinaryPlist/.svn/prop-base/BinaryPlist.sln.svn-base b/BinaryPlist/.svn/prop-base/BinaryPlist.sln.svn-base new file mode 100644 index 0000000..0e1f0c4 --- /dev/null +++ b/BinaryPlist/.svn/prop-base/BinaryPlist.sln.svn-base @@ -0,0 +1,5 @@ +K 15 +vs:project-root +V 0 + +END diff --git a/BinaryPlist/.svn/text-base/BinaryPlist.sln.svn-base b/BinaryPlist/.svn/text-base/BinaryPlist.sln.svn-base new file mode 100644 index 0000000..c406bc0 --- /dev/null +++ b/BinaryPlist/.svn/text-base/BinaryPlist.sln.svn-base @@ -0,0 +1,24 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BinaryPlist", "BinaryPlist\BinaryPlist.csproj", "{676968B1-94C4-4FE8-96AD-14C2CA8D6F7F}" +EndProject +Global + GlobalSection(SubversionScc) = preSolution + Svn-Managed = True + Manager = AnkhSVN - Subversion Support for Visual Studio + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|x86 = Debug|x86 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {676968B1-94C4-4FE8-96AD-14C2CA8D6F7F}.Debug|x86.ActiveCfg = Debug|x86 + {676968B1-94C4-4FE8-96AD-14C2CA8D6F7F}.Debug|x86.Build.0 = Debug|x86 + {676968B1-94C4-4FE8-96AD-14C2CA8D6F7F}.Release|x86.ActiveCfg = Release|x86 + {676968B1-94C4-4FE8-96AD-14C2CA8D6F7F}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/BinaryPlist/BinaryPlist.sln b/BinaryPlist/BinaryPlist.sln new file mode 100644 index 0000000..f12bf7b --- /dev/null +++ b/BinaryPlist/BinaryPlist.sln @@ -0,0 +1,23 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Global + GlobalSection(SubversionScc) = preSolution + Svn-Managed = True + Manager = AnkhSVN - Subversion Support for Visual Studio + EndGlobalSection + GlobalSection(TestCaseManagementSettings) = postSolution + CategoryFile = BinaryPlist.vsmdi + EndGlobalSection + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|Mixed Platforms = Debug|Mixed Platforms + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|Mixed Platforms = Release|Mixed Platforms + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/BinaryPlist/BinaryPlist.suo b/BinaryPlist/BinaryPlist.suo new file mode 100644 index 0000000000000000000000000000000000000000..f250f2aad3908a15dd960ec85049a5d87b0c3e04 GIT binary patch literal 30720 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 F|38+Xy|VxS literal 0 HcmV?d00001 diff --git a/BinaryPlist/BinaryPlist.vsmdi b/BinaryPlist/BinaryPlist.vsmdi new file mode 100644 index 0000000..227cacc --- /dev/null +++ b/BinaryPlist/BinaryPlist.vsmdi @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/BinaryPlist/BinaryPlist/.svn/all-wcprops b/BinaryPlist/BinaryPlist/.svn/all-wcprops new file mode 100644 index 0000000..548e0a6 --- /dev/null +++ b/BinaryPlist/BinaryPlist/.svn/all-wcprops @@ -0,0 +1,23 @@ +K 25 +svn:wc:ra_dav:version-url +V 55 +/svn/insovert/!svn/ver/62/BinaryPlist/trunk/BinaryPlist +END +BinaryPlist.csproj +K 25 +svn:wc:ra_dav:version-url +V 74 +/svn/insovert/!svn/ver/74/BinaryPlist/trunk/BinaryPlist/BinaryPlist.csproj +END +Plist.cs +K 25 +svn:wc:ra_dav:version-url +V 64 +/svn/insovert/!svn/ver/74/BinaryPlist/trunk/BinaryPlist/Plist.cs +END +Program.cs +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/insovert/!svn/ver/74/BinaryPlist/trunk/BinaryPlist/Program.cs +END diff --git a/BinaryPlist/BinaryPlist/.svn/entries b/BinaryPlist/BinaryPlist/.svn/entries new file mode 100644 index 0000000..bc11b2f --- /dev/null +++ b/BinaryPlist/BinaryPlist/.svn/entries @@ -0,0 +1,157 @@ +10 + +dir +62 +https://insovertgames.blogsite.org/svn/insovert/BinaryPlist/trunk/BinaryPlist +https://insovertgames.blogsite.org/svn/insovert + + + +2010-08-12T18:01:20.656250Z +62 +Mark + + + + + + + + + + + + + + +6c5e26bf-2db1-2545-b2e2-0c82a69ca2e6 + +BinaryPlist.csproj +file +74 + + + +2010-08-16T13:37:46.507502Z +f7590f675daf51dca831f3cade718d55 +2010-08-16T20:25:10.957000Z +74 +Mark + + + + + + + + + + + + + + + + + + + + + +2639 + +Plist.cs +file +74 + + + +2010-08-16T20:06:46.764614Z +662c041643e1d75d51239734607037ae +2010-08-16T20:25:10.957000Z +74 +Mark + + + + + + + + + + + + + + + + + + + + + +12275 + +BPlist.cs +file +74 + + + + + + + + + + + + + + + + + + + +deleted + +Program.cs +file +74 + + + +2010-08-16T14:49:45.174715Z +aaa4a57c26f4dfeae2bb8481b3b218c8 +2010-08-16T20:25:10.957000Z +74 +Mark + + + + + + + + + + + + + + + + + + + + + +301 + +Properties +dir + diff --git a/BinaryPlist/BinaryPlist/.svn/text-base/BinaryPlist.csproj.svn-base b/BinaryPlist/BinaryPlist/.svn/text-base/BinaryPlist.csproj.svn-base new file mode 100644 index 0000000..6f3ded6 --- /dev/null +++ b/BinaryPlist/BinaryPlist/.svn/text-base/BinaryPlist.csproj.svn-base @@ -0,0 +1,62 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {676968B1-94C4-4FE8-96AD-14C2CA8D6F7F} + Exe + Properties + BinaryPlist + BinaryPlist + v4.0 + Client + 512 + Svn + Svn + Svn + SubversionScc + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/BinaryPlist/.svn/text-base/Plist.cs.svn-base b/BinaryPlist/BinaryPlist/.svn/text-base/Plist.cs.svn-base new file mode 100644 index 0000000..deffb4c --- /dev/null +++ b/BinaryPlist/BinaryPlist/.svn/text-base/Plist.cs.svn-base @@ -0,0 +1,378 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.IO; + +public static class Plist +{ + #region Public Functions + + public static string readStringFromXmlFile(string file) + { + return Plist.readDictionaryString((Dictionary)Plist.readPlistFromXmlFile(file), 0); + } + + public static string readStringFromXmlFile(Dictionary dictionary) + { + return Plist.readDictionaryString(dictionary, 0); + } + + public static object readPlistFromXmlFile(string path) + { + XmlDocument doc = new XmlDocument(); + doc.Load(path); + return readPlistFromXmlDocument(doc); + } + + public static object readPlistFromXmlString(string plist) + { + XmlDocument doc = new XmlDocument(); + doc.LoadXml(plist); + return readPlistFromXmlDocument(doc); + } + + public static object readPlistFromXmlDocument(XmlDocument doc) + { + XmlNode rootNode = doc.DocumentElement.ChildNodes[0]; + // if(rootNode.Name != "dict") + // throw new ApplicationException("Sorry, only dictionary plists supported."); + + return parse(rootNode); + } + + public static string writeXmlFromDictionary(Dictionary dictionary) + { + TextWriter stringWriter = new StringWriter(); + writeXmlFromDictionary(dictionary, stringWriter); + return stringWriter.ToString(); + } + + public static void writeXmlFromDictionary(Dictionary dictionary, string filename) + { + TextWriter fileWriter = new StreamWriter(filename); + writeXmlFromDictionary(dictionary, fileWriter); + } + + public static void writeXmlFromDictionary(Dictionary dictionary, TextWriter textWriter) + { + XmlTextWriter writer = new XmlTextWriter(textWriter); + writer.Formatting = Formatting.Indented; + writer.WriteStartDocument(); + writer.WriteComment("DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" " + "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\""); + writer.WriteStartElement("plist"); + writer.WriteAttributeString("version", "1.0"); + writeDictionaryValues(dictionary, writer); + writer.WriteEndElement(); + writer.WriteEndDocument(); + writer.Close(); + } + + public static void writeBinaryFromPlistFile(string path, string destination) + { + Dictionary dictionary = (Dictionary)readPlistFromXmlFile(path); + writeBinaryFromDictionary(dictionary, destination); + } + + public static void writeBinaryFromPlistString(string plist, string destination) + { + Dictionary dictionary = (Dictionary)readPlistFromXmlString(plist); + writeBinaryFromDictionary(dictionary, destination); + } + + public static void writeBinaryFromDictionary(Dictionary dictionary, string path) + { + BinaryWriter writer = new BinaryWriter(File.Open(path,FileMode.OpenOrCreate)); + + string header = "bplist00"; + + byte[] bytes = new byte[header.Count()]; + + for(int i = 0; i < header.Count(); i++) + { + bytes[i] = Convert.ToByte(header[i]); + } + + writer.BaseStream.Write(bytes, 0, header.Count()); + + writeBinaryPlist(dictionary, writer); + + writer.Close(); + } + + #endregion + + #region Private Functions + + private static Dictionary parseDictionary(XmlNode node) + { + XmlNodeList children = node.ChildNodes; + if (children.Count % 2 != 0) + { + throw new DataMisalignedException("Dictionary elements must have an even number of child nodes"); + } + + Dictionary dict = new Dictionary(); + + for (int i = 0; i < children.Count; i += 2) + { + XmlNode keynode = children[i]; + XmlNode valnode = children[i + 1]; + + if (keynode.Name != "key") + { + throw new ApplicationException("expected a key node"); + } + + object result = parse(valnode); + + if (result != null) + { + dict.Add(keynode.InnerText, result); + } + } + + return dict; + } + + private static List parseArray(XmlNode node) + { + List array = new List(); + + foreach (XmlNode child in node.ChildNodes) + { + object result = parse(child); + if (result != null) + { + array.Add(result); + } + } + + return array; + } + + private static void composeArray(List value, XmlTextWriter writer) + { + writer.WriteStartElement("array"); + foreach (object obj in value) + { + compose(obj, writer); + } + writer.WriteEndElement(); + } + + private static object parse(XmlNode node) + { + switch (node.Name) + { + case "dict": + return parseDictionary(node); + case "array": + return parseArray(node); + case "string": + return node.InnerText; + case "integer": + return Convert.ToInt32(node.InnerText); + case "real": + return Convert.ToDouble(node.InnerText); + case "false": + return false; + case "true": + return true; + case "data": + return Convert.FromBase64String(node.InnerText); + } + + throw new ApplicationException(String.Format("Plist Node `{0}' is not supported", node.Name)); + } + + private static void compose(object value, XmlTextWriter writer) + { + switch (value.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + writeDictionaryValues((Dictionary)value, writer); + break; + + case "System.Collections.Generic.List`1[System.Object]": + composeArray((List)value, writer); + break; + + case "System.Byte[]": + writer.WriteElementString("data", Convert.ToBase64String((Byte[])value)); + break; + + case "System.Double": + writer.WriteElementString("real", value.ToString()); + break; + + case "System.Int32": + writer.WriteElementString("integer", value.ToString()); + break; + + case "System.String": + writer.WriteElementString("string", value.ToString()); + break; + + default: + throw new Exception(String.Format("Value type '{0}' is unhandled", value.GetType().ToString())); + } + } + + private static void writeDictionaryValues(Dictionary dictionary, XmlTextWriter writer) + { + writer.WriteStartElement("dict"); + foreach (string key in dictionary.Keys) + { + object value = dictionary[key]; + writer.WriteElementString("key", key); + compose(value, writer); + } + writer.WriteEndElement(); + } + + private static void writeBinaryPlist(Dictionary dictionary, BinaryWriter writer) + { + if (dictionary.Count <= 15) + { + writer.Write(0xD0 | (byte)dictionary.Count); + } + else + { + writer.Write(0xD0 | 0xf); + writer.Write(dictionary.Count); + } + for (int i = dictionary.Keys.Count; i > 0; i--) + { + composeBinary(dictionary.Keys.ToArray()[i - 1], writer); + } + for (int i = dictionary.Keys.Count; i > 0; i--) + { + composeBinary(dictionary.Values.ToArray()[i-1], writer); + } + } + + private static void composeBinary(object obj, BinaryWriter writer) + { + switch (obj.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + writeBinaryPlist((Dictionary)obj, writer); + break; + + case "System.Collections.Generic.List`1[System.Object]": + composeBinaryArray((List)obj, writer); + break; + + case "System.Byte[]": + foreach (byte byt in (byte[])obj) + { + writer.BaseStream.WriteByte(byt); + } + break; + + case "System.Double": + writer.Write((double)obj); + break; + + case "System.Int32": + writer.Write((int)obj); + break; + + case "System.String": + if (obj.ToString().Length <= 15) + { + writer.Write(0x50 | obj.ToString().Length); + } + else + { + writer.Write(0x50 | 0xf); + writer.Write(obj.ToString().Length); + } + writer.Write(obj.ToString()); + break; + } + + } + + private static void composeBinaryArray(List objects, BinaryWriter writer) + { + if (objects.Count <= 15) + { + writer.Write(0xA | objects.Count); + } + else + { + writer.Write(0xA | 0xf); + writer.Write(objects.Count); + } + foreach (object obj in objects) + { + composeBinary(obj, writer); + } + } + + private static string readDictionaryString(Dictionary plistDict, int tab) + { + string outputValue = ""; + foreach (string key in plistDict.Keys) + { + object currentValue = plistDict[key]; + switch (currentValue.GetType().ToString()) + { + case "System.Collections.Generic.List`1[System.Object]": + { + List value = (List)currentValue; + outputValue += printTab(tab) + key + " = "; + for (int ii = 0; ii < value.Count; ii++) + { + outputValue += value[ii].ToString(); + if (ii != value.Count - 1) + outputValue += ", "; + } + outputValue += "\n"; + break; + } + case "System.Byte[]": + {/* + Byte[] value = (Byte[])currentValue; + outputValue += printTab(tab) + key + " = \n"; + for (int ii = 0; ii < value.Count(); ii++) + { + outputValue += value[ii].ToString(); + } + outputValue += "\n";*/ + outputValue += "Byte Data\n"; + break; + } + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + { + outputValue += "\n\n" + printTab(tab) + key + ": \n" + readDictionaryString((Dictionary)currentValue, tab + 5); + break; + } + default: + { + outputValue += printTab(tab) + key + " = " + currentValue.ToString(); + outputValue += "\n"; + break; + } + } + } + return outputValue; + } + + private static string printTab(int tab) + { + string spaces = ""; + for (int i = 0; i < tab; i++) + { + spaces += " "; + } + return spaces; + } + + #endregion +} + + + diff --git a/BinaryPlist/BinaryPlist/.svn/text-base/Program.cs.svn-base b/BinaryPlist/BinaryPlist/.svn/text-base/Program.cs.svn-base new file mode 100644 index 0000000..f40be90 --- /dev/null +++ b/BinaryPlist/BinaryPlist/.svn/text-base/Program.cs.svn-base @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace BinaryPlist +{ + class Program + { + static void Main(string[] args) + { + Plist.writeBinaryFromPlistFile("exampleXML.plist", "bplist.plist"); + } + } +} diff --git a/BinaryPlist/BinaryPlist/BinaryPlist.csproj b/BinaryPlist/BinaryPlist/BinaryPlist.csproj new file mode 100644 index 0000000..6f3ded6 --- /dev/null +++ b/BinaryPlist/BinaryPlist/BinaryPlist.csproj @@ -0,0 +1,62 @@ + + + + Debug + x86 + 8.0.30703 + 2.0 + {676968B1-94C4-4FE8-96AD-14C2CA8D6F7F} + Exe + Properties + BinaryPlist + BinaryPlist + v4.0 + Client + 512 + Svn + Svn + Svn + SubversionScc + + + x86 + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + x86 + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/BinaryPlist/Plist.cs b/BinaryPlist/BinaryPlist/Plist.cs new file mode 100644 index 0000000..42765da --- /dev/null +++ b/BinaryPlist/BinaryPlist/Plist.cs @@ -0,0 +1,792 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Xml; + +public static class Plist +{ + private static List offsetTable = new List(); + private static List objectTable = new List(); + private static int refCount; + private static int objRefSize; + private static int offsetByteSize; + private static long offsetTableOffset; + + #region Public Functions + + public static Dictionary createDictionaryFromXmlFile(string path) + { + XmlDocument doc = new XmlDocument(); + doc.LoadXml(path); + XmlNode rootNode = doc.DocumentElement.ChildNodes[0]; + return (Dictionary)parse(rootNode); + } + + public static Dictionary createDictionaryFromXml(string xml) + { + XmlDocument doc = new XmlDocument(); + doc.Load(xml); + XmlNode rootNode = doc.DocumentElement.ChildNodes[0]; + return (Dictionary)parse(rootNode); + } + + public static Dictionary crateDictionaryFromBinaryFile(string path) + { + BinaryReader reader = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read)); + byte[] buffer = reader.ReadBytes((int)reader.BaseStream.Length); + return createDictionaryFromBinaryData(buffer); + } + + public static Dictionary createDictionaryFromBinaryData(byte[] binaryData) + { + offsetTable.Clear(); + List offsetTableBytes = new List(); + objectTable.Clear(); + refCount = 0; + objRefSize = 0; + offsetByteSize = 0; + offsetTableOffset = 0; + + List bList = binaryData.ToList(); + + List trailer = bList.GetRange(bList.Count - 32, 32); + + parseTrailer(trailer); + + objectTable = bList.GetRange(0, (int)offsetTableOffset); + + offsetTableBytes = bList.GetRange((int)offsetTableOffset, bList.Count - (int)offsetTableOffset - 32); + + parseOffsetTable(offsetTableBytes); + + long magicHeader = BitConverter.ToInt64(objectTable.GetRange(0, 8).ToArray(), 0); + + if (magicHeader != 3472403351741427810) + throw new Exception("This is not a valid binary plist."); + + return (Dictionary)parseBinaryDictionary(0); + } + + public static byte[] createBinaryDataFromXml(string xml) + { + return createBinaryFromDictionary(createDictionaryFromXml(xml)); + } + + public static byte[] createBinaryFromDictionary(Dictionary dictionary) + { + offsetTable.Clear(); + objectTable.Clear(); + refCount = 0; + objRefSize = 0; + offsetByteSize = 0; + offsetTableOffset = 0; + + int totalRefs = countDictionary(dictionary); + + refCount = totalRefs; + + objRefSize = RegulateNullBytes(BitConverter.GetBytes(refCount)).Length; + + writeBinaryDictionary(dictionary); + + writeBinaryString("bplist00", false); + + offsetTableOffset = (long)objectTable.Count; + + offsetTable.Add(objectTable.Count - 8); + + offsetByteSize = RegulateNullBytes(BitConverter.GetBytes(offsetTable.Last())).Length; + + List offsetBytes = new List(); + + offsetTable.Reverse(); + + for (int i = 0; i < offsetTable.Count; i++) + { + offsetTable[i] = objectTable.Count - offsetTable[i]; + byte[] buffer = RegulateNullBytes(BitConverter.GetBytes(offsetTable[i]), offsetByteSize); + Array.Reverse(buffer); + offsetBytes.AddRange(buffer); + } + + objectTable.AddRange(offsetBytes); + + objectTable.AddRange(new byte[6]); + objectTable.Add(Convert.ToByte(offsetByteSize)); + objectTable.Add(Convert.ToByte(objRefSize)); + objectTable.AddRange(BitConverter.GetBytes((long)totalRefs + 1).Reverse()); + objectTable.AddRange(BitConverter.GetBytes((long)0)); + objectTable.AddRange(BitConverter.GetBytes(offsetTableOffset).Reverse()); + + return objectTable.ToArray(); + } + + public static string createXmlFromBinaryData(byte[] binaryData) + { + return createXmlFromDictionary(createDictionaryFromBinaryData(binaryData)); + } + + public static string createXmlFromDictionary(Dictionary dictionary) + { + MemoryStream ms = new MemoryStream(); + XmlWriterSettings xmlWriterSettings = new XmlWriterSettings(); + xmlWriterSettings.Encoding = new System.Text.UTF8Encoding(false); + xmlWriterSettings.ConformanceLevel = ConformanceLevel.Document; + xmlWriterSettings.Indent = true; + + //XmlTextWriter writer = new XmlTextWriter(ms, ); + XmlWriter writer = XmlWriter.Create(ms, xmlWriterSettings); + writer.WriteStartDocument(); + writer.WriteComment("DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" " + "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\""); + writer.WriteStartElement("plist"); + writer.WriteAttributeString("version", "1.0"); + writeDictionaryValues(dictionary, writer); + writer.WriteEndElement(); + writer.WriteEndDocument(); + writer.Flush(); + writer.Close(); + return System.Text.Encoding.UTF8.GetString(ms.ToArray()); + } + + /*public static object readPlistFromXmlDocument(XmlDocument doc) + { + XmlNode rootNode = doc.DocumentElement.ChildNodes[0]; + // if(rootNode.Name != "dict") + // throw new ApplicationException("Sorry, only dictionary plists supported."); + + return parse(rootNode); + }*/ + + /*public static void writeXmlFromDictionary(Dictionary dictionary, string filename) + { + TextWriter fileWriter = new StreamWriter(filename, false, System.Text.Encoding.UTF8); + fileWriter.Write(writeXmlFromDictionary(dictionary)); + }*/ + + /*public static byte[] writeBinaryFromXmlString(string plist) + { + Dictionary dictionary = (Dictionary)readPlistFromXmlString(plist); + return writeBinaryFromDictionary(dictionary); + }*/ + + + #endregion + + #region Private Functions + + private static Dictionary parseDictionary(XmlNode node) + { + XmlNodeList children = node.ChildNodes; + if (children.Count % 2 != 0) + { + throw new DataMisalignedException("Dictionary elements must have an even number of child nodes"); + } + + Dictionary dict = new Dictionary(); + + for (int i = 0; i < children.Count; i += 2) + { + XmlNode keynode = children[i]; + XmlNode valnode = children[i + 1]; + + if (keynode.Name != "key") + { + throw new ApplicationException("expected a key node"); + } + + object result = parse(valnode); + + if (result != null) + { + dict.Add(keynode.InnerText, result); + } + } + + return dict; + } + + private static List parseArray(XmlNode node) + { + List array = new List(); + + foreach (XmlNode child in node.ChildNodes) + { + object result = parse(child); + if (result != null) + { + array.Add(result); + } + } + + return array; + } + + private static void composeArray(List value, XmlWriter writer) + { + writer.WriteStartElement("array"); + foreach (object obj in value) + { + compose(obj, writer); + } + writer.WriteEndElement(); + } + + private static object parse(XmlNode node) + { + switch (node.Name) + { + case "dict": + return parseDictionary(node); + case "array": + return parseArray(node); + case "string": + return node.InnerText; + case "integer": + return Convert.ToInt32(node.InnerText); + case "real": + return Convert.ToDouble(node.InnerText); + case "false": + return false; + case "true": + return true; + case "data": + return Convert.FromBase64String(node.InnerText); + } + + throw new ApplicationException(String.Format("Plist Node `{0}' is not supported", node.Name)); + } + + private static void compose(object value, XmlWriter writer) + { + switch (value.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + writeDictionaryValues((Dictionary)value, writer); + break; + + case "System.Collections.Generic.List`1[System.Object]": + composeArray((List)value, writer); + break; + + case "System.Byte[]": + writer.WriteElementString("data", Convert.ToBase64String((Byte[])value)); + break; + + case "System.Double": + writer.WriteElementString("real", value.ToString()); + break; + + case "System.Int32": + writer.WriteElementString("integer", value.ToString()); + break; + + case "System.String": + writer.WriteElementString("string", value.ToString()); + break; + + default: + throw new Exception(String.Format("Value type '{0}' is unhandled", value.GetType().ToString())); + } + } + + private static void writeDictionaryValues(Dictionary dictionary, XmlWriter writer) + { + writer.WriteStartElement("dict"); + foreach (string key in dictionary.Keys) + { + object value = dictionary[key]; + writer.WriteElementString("key", key); + compose(value, writer); + } + writer.WriteEndElement(); + } + + private static int countDictionary(Dictionary dictionary) + { + int count = 0; + foreach (string key in dictionary.Keys) + { + count++; + switch (dictionary[key].GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + count += (countDictionary((Dictionary)dictionary[key]) + 1); + break; + case "System.Collections.Generic.List`1[System.Object]": + count += (countArray((List)dictionary[key]) + 1); + break; + default: + count++; + break; + } + } + return count; + } + + private static int countArray(List array) + { + int count = 0; + foreach (object obj in array) + { + switch (obj.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + count += (countDictionary((Dictionary)obj) + 1); + break; + case "System.Collections.Generic.List`1[System.Object]": + count += (countArray((List)obj) + 1); + break; + default: + count++; + break; + } + } + return count; + } + + private static byte[] writeBinaryDictionary(Dictionary dictionary) + { + + /*for (int i = 0; i < dictionary.Count * 2; i++) + { + refCount++; + writer.BaseStream.Write(RemoveNullBytes(BitConverter.GetBytes(refCount)), 0, RemoveNullBytes(BitConverter.GetBytes(refCount)).Count()); + }*/ + List buffer = new List(); + List header = new List(); + List refs = new List(); + for (int i = dictionary.Count - 1; i >= 0; i--) + { + /*buffer.InsertRange(0, */ + composeBinary(dictionary.Values.ToArray()[i]); + //); + offsetTable.Add(objectTable.Count); + refs.Add(refCount); + refCount--; + } + for (int i = dictionary.Count - 1; i >= 0; i--) + { + /*buffer.InsertRange(0, */composeBinary(dictionary.Keys.ToArray()[i]);//); + offsetTable.Add(objectTable.Count); + refs.Add(refCount); + refCount--; + } + + if (dictionary.Count < 15) + { + header.Add(Convert.ToByte(0xD0 | Convert.ToByte(dictionary.Count))); + } + else + { + header.Add(0xD0 | 0xf); + header.AddRange(writeBinaryInteger(dictionary.Count,false)); + /*foreach (byte byt in RemoveNullBytes(BitConverter.GetBytes(dictionary.Count))) + header.Add(byt);*/ + } + + + foreach (int val in refs) + { + byte[] refBuffer = RegulateNullBytes(BitConverter.GetBytes(val), objRefSize); + Array.Reverse(refBuffer); + buffer.InsertRange(0, refBuffer); + /*{ + buffer.Insert(0, intByte); + }*/ + } + + buffer.InsertRange(0, header); + + //writer.BaseStream.Write(RemoveNullBytes(refBytes), 0, RemoveNullBytes(refBytes).Count()); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] composeBinaryArray(List objects) + { + List buffer = new List(); + List header = new List(); + List refs = new List(); + + for (int i = objects.Count - 1; i >= 0; i--) + { + composeBinary(objects[i]); + offsetTable.Add(objectTable.Count); + refs.Add(refCount); + refCount--; + } + + if (objects.Count < 15) + { + header.Add(Convert.ToByte(0xA0 | Convert.ToByte(objects.Count))); + } + else + { + header.Add(0xA0 | 0xf); + header.AddRange(writeBinaryInteger(objects.Count, false)); + /*foreach (byte byt in RemoveNullBytes(BitConverter.GetBytes(objects.Count))) + header.Add(byt);*/ + } + + foreach (int val in refs) + { + byte[] refBuffer = RegulateNullBytes(BitConverter.GetBytes(val), objRefSize); + Array.Reverse(refBuffer); + buffer.InsertRange(0, refBuffer); + } + + buffer.InsertRange(0, header); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] composeBinary(object obj) + { + byte[] value; + switch (obj.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + value = writeBinaryDictionary((Dictionary)obj); + return value; + + case "System.Collections.Generic.List`1[System.Object]": + value = composeBinaryArray((List)obj); + return value; + + case "System.Byte[]": + value = writeBinaryByteArray((byte[])obj); + return value; + + case "System.Double": + value = writeBinaryDouble((double)obj); + return value; + + case "System.Int32": + value = writeBinaryInteger((int)obj, true); + return value; + + case "System.String": + value = writeBinaryString((string)obj, true); + return value; + + default: + return new byte[0]; + } + + } + + private static byte[] writeBinaryInteger(int value, bool write) + { + List buffer = BitConverter.GetBytes((long)value).ToList(); + buffer = RegulateNullBytes(buffer.ToArray()).ToList(); + while (buffer.Count != Math.Pow(2, Math.Log(buffer.Count) / Math.Log(2))) + buffer.Add(0); + int header = 0x10 | (int)(Math.Log(buffer.Count) / Math.Log(2)); + + if (BitConverter.IsLittleEndian) + buffer.Reverse(); + + buffer.Insert(0, Convert.ToByte(header)); + + if(write) + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] writeBinaryDouble(double value) + { + List buffer = RegulateNullBytes(BitConverter.GetBytes(value), 4).ToList(); + while (buffer.Count != Math.Pow(2, Math.Log(buffer.Count) / Math.Log(2))) + buffer.Add(0); + int header = 0x20 | (int)(Math.Log(buffer.Count) / Math.Log(2)); + + if (BitConverter.IsLittleEndian) + buffer.Reverse(); + + //objectTable.InsertRange(0, buffer); + //writer.BaseStream.Write(buffer, 0, buffer.Count()); + buffer.Insert(0, Convert.ToByte(header)); + //writer.BaseStream.WriteByte(Convert.ToByte(header)); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] writeBinaryByteArray(byte[] value) + { + List buffer = value.ToList(); + List header = new List(); + if (value.Length < 15) + { + header.Add(Convert.ToByte(0x40 | Convert.ToByte(value.Length))); + } + else + { + header.Add(0x40 | 0xf); + header.AddRange(writeBinaryInteger(buffer.Count, false)); + /*foreach (byte byt in RemoveNullBytes(BitConverter.GetBytes(value.Length))) + header.Add(byt);*/ + } + + //objectTable.InsertRange(0, RemoveNullBytes(value)); + //writer.BaseStream.Write(RemoveNullBytes(value), 0, RemoveNullBytes(value).Count()); + buffer.InsertRange(0, header); + //writer.BaseStream.Write(header.ToArray(), 0, header.Count()); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] writeBinaryString(string value, bool head) + { + List buffer = new List(); + List header = new List(); + foreach (char chr in value.ToCharArray()) + buffer.Add(Convert.ToByte(chr)); + + //objectTable.InsertRange(0, RemoveNullBytes(buffer.ToArray())); + //writer.BaseStream.Write(RemoveNullBytes(buffer.ToArray()), 0, RemoveNullBytes(buffer.ToArray()).Count()); + + if (head) + { + if (value.Length < 15) + { + header.Add(Convert.ToByte(0x50 | Convert.ToByte(value.Length))); + //writer.BaseStream.WriteByte(Convert.ToByte(0x50 | Convert.ToByte(value.Length))); + } + else + { + header.Add(0x50 | 0xf); + header.AddRange(writeBinaryInteger(buffer.Count, false)); + //writer.BaseStream.WriteByte(0x50 | 0xf); + } + } + + buffer.InsertRange(0, header); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] RegulateNullBytes(byte[] value) + { + return RegulateNullBytes(value, 1); + } + + private static byte[] RegulateNullBytes(byte[] value, int minBytes) + { + Array.Reverse(value); + List bytes = value.ToList(); + for (int i = 0; i < bytes.Count; i++) + { + if (bytes[i] == 0 && bytes.Count > minBytes) + { + bytes.Remove(bytes[i]); + i--; + } + else + break; + } + + if (bytes.Count < minBytes) + { + int dist = minBytes - bytes.Count; + for (int i = 0; i < dist; i++) + bytes.Insert(0, 0); + } + + value = bytes.ToArray(); + Array.Reverse(value); + return value; + } + + private static void parseTrailer(List trailer) + { + offsetByteSize = BitConverter.ToInt32(RegulateNullBytes(trailer.GetRange(6, 1).ToArray(), 4), 0); + objRefSize = BitConverter.ToInt32(RegulateNullBytes(trailer.GetRange(7, 1).ToArray(), 4), 0); + byte[] refCountBytes = trailer.GetRange(12, 4).ToArray(); + Array.Reverse(refCountBytes); + refCount = BitConverter.ToInt32(refCountBytes, 0); + byte[] offsetTableOffsetBytes = trailer.GetRange(24, 8).ToArray(); + Array.Reverse(offsetTableOffsetBytes); + offsetTableOffset = BitConverter.ToInt64(offsetTableOffsetBytes, 0); + } + + private static void parseOffsetTable(List offsetTableBytes) + { + for (int i = 0; i < offsetTableBytes.Count; i += offsetByteSize) + { + byte[] buffer = offsetTableBytes.GetRange(i, offsetByteSize).ToArray(); + Array.Reverse(buffer); + offsetTable.Add(BitConverter.ToInt32(RegulateNullBytes(buffer, 4), 0)); + } + } + + private static object parseBinaryDictionary(int objRef) + { + Dictionary buffer = new Dictionary(); + List refs = new List(); + int refCount = 0; + + byte dictByte = objectTable[offsetTable[objRef]]; + + refCount = getCount(offsetTable[objRef], dictByte); + + int refStartPosition; + + if (refCount < 15) + refStartPosition = offsetTable[objRef] + 1; + else + refStartPosition = offsetTable[objRef] + 2 + RegulateNullBytes(BitConverter.GetBytes(refCount), 1).Length; + + for (int i = refStartPosition; i < refStartPosition + refCount * 2 * objRefSize; i += objRefSize) + { + byte[] refBuffer = objectTable.GetRange(i, objRefSize).ToArray(); + Array.Reverse(refBuffer); + refs.Add(BitConverter.ToInt32(RegulateNullBytes(refBuffer, 4), 0)); + } + + for (int i = 0; i < refCount; i++) + { + buffer.Add((string)parseBinary(refs[i]), parseBinary(refs[i + refCount])); + } + + return buffer; + } + + private static object parseBinaryArray(int objRef) + { + List buffer = new List(); + List refs = new List(); + int refCount = 0; + + byte arrayByte = objectTable[offsetTable[objRef]]; + + refCount = getCount(offsetTable[objRef], arrayByte); + + int refStartPosition; + + if (refCount < 15) + refStartPosition = offsetTable[objRef] + 1; + else + refStartPosition = offsetTable[objRef] + 2 + RegulateNullBytes(BitConverter.GetBytes(refCount), 1).Length; + + for (int i = refStartPosition; i < refStartPosition + refCount * 2 * objRefSize; i += objRefSize) + { + byte[] refBuffer = objectTable.GetRange(i, objRefSize).ToArray(); + Array.Reverse(refBuffer); + refs.Add(BitConverter.ToInt32(RegulateNullBytes(refBuffer, 4), 0)); + } + + for (int i = 0; i < refCount; i++) + { + buffer.Add(parseBinary(refs[i])); + } + + return buffer; + } + + private static int getCount(int bytePosition, byte headerByte) + { + byte headerByteTrail = Convert.ToByte(headerByte & 0xf); + if (headerByteTrail < 15) + return headerByteTrail; + else + { + return (int)parseBinaryInt(bytePosition + 1); + } + } + + private static object parseBinary(int objRef) + { + byte header = objectTable[offsetTable[objRef]]; + switch (header & 0xF0) + { + case 0x10: + { + return parseBinaryInt(offsetTable[objRef]); + } + case 0x20: + { + return parseBinaryReal(offsetTable[objRef]); + } + case 0x40: + { + return parseBinaryByteArray(offsetTable[objRef]); + } + case 0x50: + { + return parseBinaryString(offsetTable[objRef]); + } + case 0xD0: + { + return parseBinaryDictionary(objRef); + } + case 0xA0: + { + return parseBinaryArray(objRef); + } + } + throw new Exception("This type is not supported"); + } + + private static object parseBinaryInt(int headerPosition) + { + byte header = objectTable[headerPosition]; + int byteCount = (int)Math.Pow(2, header & 0xf); + byte[] buffer = objectTable.GetRange(headerPosition + 1, byteCount).ToArray(); + Array.Reverse(buffer); + + return BitConverter.ToInt32(RegulateNullBytes(buffer, 4), 0); + } + + private static object parseBinaryReal(int headerPosition) + { + byte header = objectTable[headerPosition]; + int byteCount = (int)Math.Pow(2, header & 0xf); + byte[] buffer = objectTable.GetRange(headerPosition + 1, byteCount).ToArray(); + Array.Reverse(buffer); + + return BitConverter.ToDouble(RegulateNullBytes(buffer, 8), 0); + } + + private static object parseBinaryString(int headerPosition) + { + byte headerByte = objectTable[headerPosition]; + int charCount = getCount(headerPosition, headerByte); + int charStartPosition; + if (charCount < 15) + charStartPosition = headerPosition + 1; + else + charStartPosition = headerPosition + 2 + RegulateNullBytes(BitConverter.GetBytes(charCount), 1).Length; + string buffer = ""; + foreach (byte byt in objectTable.GetRange(charStartPosition, charCount)) + { + buffer += Convert.ToChar(byt); + } + return buffer; + } + + private static object parseBinaryByteArray(int headerPosition) + { + byte headerByte = objectTable[headerPosition]; + int byteCount = getCount(headerPosition, headerByte); + int byteStartPosition; + if (byteCount < 15) + byteStartPosition = headerPosition + 1; + else + byteStartPosition = headerPosition + 2 + RegulateNullBytes(BitConverter.GetBytes(byteCount), 1).Length; + return objectTable.GetRange(byteStartPosition, byteCount).ToArray(); + } + + #endregion +} \ No newline at end of file diff --git a/BinaryPlist/BinaryPlist/Program.cs b/BinaryPlist/BinaryPlist/Program.cs new file mode 100644 index 0000000..95191e8 --- /dev/null +++ b/BinaryPlist/BinaryPlist/Program.cs @@ -0,0 +1,25 @@ +using System.Collections.Generic; +using System.IO; + +namespace BinaryPlist +{ + class Program + { + static string xmlPath = "C:\\Users\\mark\\BinaryPlists\\BinaryPlist\\Testing\\bin\\Debug\\xmlTest.plist"; + static string binPath = "C:\\Users\\mark\\BinaryPlists\\BinaryPlist\\Testing\\bin\\Debug\\binTest.plist"; + + static void Main(string[] args) + { + /*Dictionary plist = new Dictionary { { "Negative Integers", -654 }, + { "Dictionary", new Dictionary { {"STRINGS!", "THIS IS A STRING"}, + {"More integers...", 1203}, + {"Doubles???", -0.001d}} } + };*/ + using (StreamWriter writer = new StreamWriter(xmlPath)) + { + writer.Write(Plist.createXmlFromDictionary(Plist.crateDictionaryFromBinaryFile(binPath))); + } + System.Threading.Thread.Sleep(1000); + } + } +} diff --git a/BinaryPlist/BinaryPlist/Properties/.svn/all-wcprops b/BinaryPlist/BinaryPlist/Properties/.svn/all-wcprops new file mode 100644 index 0000000..c365e34 --- /dev/null +++ b/BinaryPlist/BinaryPlist/Properties/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 66 +/svn/insovert/!svn/ver/62/BinaryPlist/trunk/BinaryPlist/Properties +END +AssemblyInfo.cs +K 25 +svn:wc:ra_dav:version-url +V 82 +/svn/insovert/!svn/ver/62/BinaryPlist/trunk/BinaryPlist/Properties/AssemblyInfo.cs +END diff --git a/BinaryPlist/BinaryPlist/Properties/.svn/entries b/BinaryPlist/BinaryPlist/Properties/.svn/entries new file mode 100644 index 0000000..5f14bc7 --- /dev/null +++ b/BinaryPlist/BinaryPlist/Properties/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +62 +https://insovertgames.blogsite.org/svn/insovert/BinaryPlist/trunk/BinaryPlist/Properties +https://insovertgames.blogsite.org/svn/insovert + + + +2010-08-12T18:01:20.656250Z +62 +Mark + + + + + + + + + + + + + + +6c5e26bf-2db1-2545-b2e2-0c82a69ca2e6 + +AssemblyInfo.cs +file + + + + +2010-08-12T17:59:26.269347Z +26d98e5282e3fb609c5b63b72e1bf5c7 +2010-08-12T18:01:20.656250Z +62 +Mark + + + + + + + + + + + + + + + + + + + + + +1452 + diff --git a/BinaryPlist/BinaryPlist/Properties/.svn/text-base/AssemblyInfo.cs.svn-base b/BinaryPlist/BinaryPlist/Properties/.svn/text-base/AssemblyInfo.cs.svn-base new file mode 100644 index 0000000..919b58d --- /dev/null +++ b/BinaryPlist/BinaryPlist/Properties/.svn/text-base/AssemblyInfo.cs.svn-base @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("BinaryPlist")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("BinaryPlist")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("ad3a8507-240d-49d3-ae91-5ec5c18deef2")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BinaryPlist/BinaryPlist/Properties/AssemblyInfo.cs b/BinaryPlist/BinaryPlist/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..919b58d --- /dev/null +++ b/BinaryPlist/BinaryPlist/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("BinaryPlist")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("BinaryPlist")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2010")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("ad3a8507-240d-49d3-ae91-5ec5c18deef2")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BinaryPlist/BinaryPlist/bin/Debug/BinaryPlist.exe b/BinaryPlist/BinaryPlist/bin/Debug/BinaryPlist.exe new file mode 100644 index 0000000000000000000000000000000000000000..120b1a497e752d66ecf58415739b5c7ea01648b7 GIT binary patch literal 17920 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 literal 0 HcmV?d00001 diff --git a/BinaryPlist/BinaryPlist/bin/Debug/BinaryPlist.vshost.exe b/BinaryPlist/BinaryPlist/bin/Debug/BinaryPlist.vshost.exe new file mode 100644 index 0000000000000000000000000000000000000000..bb84a51ac4f20534146c09f2fd9c928d15a903b2 GIT binary patch literal 11600 zcmeG?2~<)?tG75|5OPOMcC{DsnWb(K|p-9Gz zCYX{WA(Jm;dIfQqiJ};SrLL}G(n&hl8zFy;j>apOj_;bS1<^27Oc^0Hz(7W(Czb%1 z@VUW90w!d%4!)s8@lWO`4L-o%@Fz33`3PxI|9bMyD%lrO3DBh`b_0^65V}%-gn|b^ zWm*RtcF<41tL^XP%x>1H-pWw-?KO@iBWB8={z?S^v{7pXzI!Jo%+8WXB|Jbhzz%$;+6FHiiU_~N3I z3EN^9UtHuj{7z%|8vGH<%)(m1Ea7^jMXH#Y>ya2$DiaMPF|c+I&NvSYVbqF9*~#r#ILj8dWjm251tb7C6J%*T7omHQ z|3QZ`M<(G55b{zd>0OBcT-q z$5D_+!Bh&aq+kUFn<&Vjy~Gre83lc5nD5M>aGT=)?fZgOM>nV`Kqv zI0bDf=!~2J||60WgZ0+&DGHhBHk2136`;HfS!lVrq~L;Qp?LLw4#2#K5zlOj)1BCy1d77#r{JpDO<77O@Xp{xhn!4xZ$h!p@= zFfDSIN{Pg1K}r~3)_Zst+KZ6#Bz!U1wTDViV=OmGAajRFq+hp^({qI>UpIiLVv=~h zxay+kDH5kh_;K;yXzG;G*Tj7I0^&~_{e-b1Ng|izo-6pOSGO>vq9h3^M-Ep;2n2i? z;VA;Ob9u6_h6EBx&>#pUI*0gkg>gyTxL$JaT8kGU;HGf+ao-Tzcp`=5x@Rq2jC5KA zDL81CbnCa%R49SU_|be|v6omoM|<(PaYE7-c~ay>L?^|?aX&MN4jh;n*m;M|z$BDt zLV?wpRH>I1yLLe*EkY6~5>Aj35>FW2!};IZ6RZg`l4U+2WpPr3Jg{aVFJ1yBKdala z!{Q|bH-_8;-f}`H`;N<(`ErFZ0s_H?nELq^^AiFst^h{IAPxchk}HJW2r40D)L?1| zN5+-NKyKu|BH5O9=>_$oO%{WM1RNkt$|LX>+U#yGW4SL{W#Dq<^-?pWTs_=s z+sMi))7<${{lWc@(;pS&e4xt(nf|K_4fiC?yA3+_%vvY*l!4@4iv}=BM|c$3*(8Ejv=a+B_=Ss*JEQXuIqpixQ3a_4(W> zyEKm#xtQrM)b=Fwn2Ghv>;fV#EMt&fQn_Nx)Omd`sf+@qw7IY%8d=~wU}z94&^xT# z?O1hMy$gBFV<=2Rx4X%UFBOAX2ZDn_3e*V(5c0klQtL7p%59=S80yz;986D8eMaINL%0wc8G%|*e$MEHmK74Q% z!Aa2qJ`Z*(ODar2$dFuS7_I+z60R6Fg7-`wLHR_mTT!wUQ^u&61Y`_zfv7uESG-PI zL=b$z5K9F^02Rvd;_$Xby>8#V-GB3vXN;}hekVw2b}%EC!sUQGG$K1h+L_tfM2e!P zOCtHUjw8EKEOAUULMMT4SGq-(nO(Kd^R74+p{XEA@0kR39#JP2L9k*3WE=-K98<(} zqe}k)-;w}E#jg-2r+wZ^?F0lS_7$G&N8TMKx*>Foia|&WS+)ZhjyMosg(Ghi3MD_V zlt8Ha0ra7)2BA8})Ao*tk&JOg@{U+nBp*Xj>4k4odB9b z6pKVuFB2+W3WHWIV5QK`MKb6of?7waV3?3D4|tM6FFxSozD0@ZgTuNz{_IdRDFbAO z)M2bA&`X3r0!GVV7PvbAj0da~>bA%RB0vJogpW-A5a@S}5mS7nfE2jYc(OeJxZnXV z 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 + + + + + + + + + + diff --git a/BinaryPlist/BinaryPlist/bin/Debug/NewBinFile.plist b/BinaryPlist/BinaryPlist/bin/Debug/NewBinFile.plist new file mode 100644 index 0000000000000000000000000000000000000000..1cb28f34a7b436e2a9babbbf7731d388ad2587d4 GIT binary patch literal 86 zcmYc)$jK}&F)+Bq$i&PN?wMDTnx0w|7F<%4nU^lW7%w0Yl95@g07Quj#b7}WUQro2 R1~6b`gwPDEP#Q)V0s!%75VZgR literal 0 HcmV?d00001 diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/bplist.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/bplist.plist new file mode 100644 index 0000000000000000000000000000000000000000..d8b83555e06f2774a0303ce0a882e665fd5633d0 GIT binary patch literal 173 zcmYc)$jK}&F)+Bq$i&PNFCgfbnx0saS(d8cnOBmUo?28K<&v3Pl9`{ESX3$e9}NB$ zU1nut=iuau2o4GI^m7kZj295_%`Zw-$b{NxqjpuKdHntEgjY;~J4%R>=ScjEoSPfg4K0s3rh#Q8JwX literal 0 HcmV?d00001 diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/example2.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/example2.plist new file mode 100644 index 0000000..e0476f0 --- /dev/null +++ b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/example2.plist @@ -0,0 +1,39 @@ + + + + + image + + data + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAAK/I + NwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKJ + SURBVHjavJZJaBVBEIZnYny+LMaoRE9uKETIxaCouF5c0IMiCCEHQdAQ8Cgm + h9ziSRQvCl48CHoQPClBMLgg8rxogmAMbomIIG5xvRiTp+Nf8A8UbXfP8h4W + fKRfp2f+nuqq6gqjKApsFoZh4LA1YAVYCRaDD+AOuAumbQ9YNWTShsXawC15 + xMEQ6HAJ//P+lMK7wCePqOZkGuEwhat3gEGO34Bn4CEog3awx/J4LzhViavn + gXdgHHSCBovINjBifHWZ87ldfZrCLYHfloCXhvgTUMwjXKTogSCdrQXvDfHN + eYQ3gj9gUZDejhnCJ1zCNZ6XrOPZfcwgfN3I5S2uhT5hKRLd4FcG4U3Gbykw + jVmFm8ALMJvVSluDY6NnwEw1NwPUZxWWlNgLJsFR0Mz5g+CQpLqxfnccxbR7 + oARaswoXwGruepZyuaTJMINH24gaS96fYx1vt728NiE3Rxndj8BPzg851msP + DPDvZTCV9YtbeV47wY0UgVVW41fgOZgAP7IKf6M7xzxfqW2pGpfozSPcRCbh + Ene9HVzhDVWbkPex9TCNBl13tK9ydYEH4D4LfsESydpuGlWrM+8l0cYXvHbl + omHHlagE4jKfsM/V4xRdSNfFhaTgWF+nxhNJpdYnPMkiIDn8lhfGY8eZyab2 + GZWtMa+w2AWe6wIWkilL4ZgProLlam4uS6jbEhqBGgbYVsfj61UVi3gfXwLf + QX+lzd4GcJFXXAvbIUmxa8oDwnnGQ8D0G61Gl7kKHGaj99lIm6f8n7b9LDxh + pcK6BkcMvLNsi4qWdXIP91Xji2Pro/DthKAMdbGphrBccb/BFzZ3qawawgFL + 4Vd2oPX/Uzg+Q+lK5uQV/ivAAK75twyU5R0RAAAAAElFTkSuQmCC + + id + marc + + myArray + + 3.5 + + operation + 0 + parameters + hello there + + diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/exampleXML.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/exampleXML.plist new file mode 100644 index 0000000..4ec3cf6 --- /dev/null +++ b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/exampleXML.plist @@ -0,0 +1,27 @@ + + + + + deviceToken + a5d38231876c7f79ae8cc233550b3b0435154e99a06bedc3e85550e69de3ff17 + does adding stuff work? + YES! + openidUsername + 5216342 + firstreal + 40.1 + dictionary + + firstkey + firststring + secondkey + secondkey + + array + + firstkey + 54985416 + 514.65 + + + diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/exampleXMLbin.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/exampleXMLbin.plist new file mode 100644 index 0000000..f3c648e --- /dev/null +++ b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/exampleXMLbin.plist @@ -0,0 +1,17 @@ + + + + + Dictionaries! + + Hello There + Hello + + deviceToken + a5d38231876c7f79ae8cc233550b3b0435154e99a06bedc3e85550e69de3ff17 + does adding stuff work? + YES! + openidUsername + mim.cis@gmail.com + + diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsbin.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsbin.plist new file mode 100644 index 0000000000000000000000000000000000000000..f3fef062af7a7f05faa406fd2463669f2298477e GIT binary patch literal 954 zcmYc)$jK}&F)+Bo$i&RT%ErzUnO~4vlvt9PpBGh-Sd^HXT9R5+9GaP%n4TJ*Tj^L- zlvpXi5S@{llasGdl95`JdWnORi#sGGu_Q4lGsRz!>3e5@pF1y?6c+;n1FxrtOAwHj z17Qv}AZcx|ZV`}TNq6*hWMEi-!ko41C6F&!;u=vBoS#-wo>-L1;Fyx1l&atfvNI?( zF{QHbWU37V15>A`i(^Q|tv%B`GejK)+R~G1_URm3;o_gC;d0{Wf)zXBVlFf*aVWAo zUJ&@8q1Jxqk*A10SDXz;m4J<=qrnb^PkS<&5_s}DI~4K?_exA&{y6>vzesNR`A>3U zHA~``r~jMxYSk;Q#Tr~WVr_{JHkc-`MsSKX^FQF*!M!Y(Kf*NSQrpp62Xrfs929s_ z!1@34zbS`yA5iaK@hnB^p+W2F@&?Dg`wi(26g8U5HXQ#{p>Gk|x%zoyd4fzy6I=HQ zGlQg>(wU!k#@5a{q}zCZTEq0VAHo4=lw+2>XjGWHmi0aF$Fr3!=1ukqffMfaNgh&< zIb=F-`kKc#YtJau+&%GBcU`MpqNdQ@2jOfFeUIg98uUiC&OX3xF#D=kbaV3J^aDPo z=FC^pMW;=M@WPp&%?~Cl*|o8*T;}MO>IE!Oo4LdfWWB4JRPHJJLfJGwH?`e3g}V`$jp@CTMN80

nzZ&$i#g=bbUsT%2{=kmA?x4`g zTX|BUtBv2QUOXngr|jvX#N$&}uskxFzv2AV$0D&F*N?U?c@Po5{Ft!k(rfBACzTW| z|4b7-?zzu^Y!yw^-(lQg{_&fs6y^fW6^&wIsfA*n_wwi{u`AHNP2 z?XHlIXS(lLzx3=qwt|V_G2FKmJvU~bVm?%P%=y3<>9uatcXG+3E&hJfWA^et^SAxg zu}NHdXcwD1&z{XW-Cfg4i}=5XKJHF_z4*i1mIXYe8&|e%h$-BEP~5D14<+|D!QsjMI{`njxgN@xnnO)N@Y!pp}mpzOc{ zl3-v^b^s-OFoUP+q5C?KYGnu417Hyb4hBI6X$Cb09R?EyGX^IHcLpB@e`YUcf94S8 USmre5e26k8MhFd5jRKe}0K_|jiU0rr literal 0 HcmV?d00001 diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsbinary.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsbinary.plist new file mode 100644 index 0000000000000000000000000000000000000000..2e4f079a27bb94ef93ddab776af6dc6fdf871fd0 GIT binary patch literal 1204 zcmXZb$7RNPg??Y`Ok^X~mOZ{L3R{im?)vL4)vwuw5>gF3rs{mm_EfHJ>+(0vac zKViS;Syi<^-}9``{{HaMNx>cb@%io7Pai)P9&@&)jUu3yUP`y!oOjXEG5G79v2^&# zqoxqWt6_wcaa^9Jm9?~ReexB;eEnA&%gZB+C{d%&7+-XNB-%O z1)>}|(*hKE;kIiro>+oWj%2`i3@=4Z*gRIM23m`!28DN|8L;heIwTuOD_E8n&6GAt z7S#*Ssb^tZ=Ezn!$%?IMuoa`J2$B8VqMFv?ww5H}FppN@bSoW_H0j0xG{_wH7Y-E* zc00IghU=9;*HWRo+o_FmT&1@m?S-rbIBrFs2YRSulL~d;vGZF1CU$#R_^k0JA=2`C zZLBIyIZkY5T+h)(82Bj%_dVi;^B!j!oaI}z2h+TkarK#d1sI!!qaa11XtPW^N_xo@ zQ1m16Sfw!PSv3@4)v`f8BFELHGEkfr*=*XI!N@^TUw9UpdsI@$jkv7L8&=*vSv?|x z{%k}rnGn?X(!t&hxpT-BOHJ`pBH->`h#!|};iXrfYLZqpdGzdR;6g%gCVtxLli^0Q z?^ilf<=e^HXwL&$v1X@UXV@gk99zeQx3mRrQyWY|KV)6>7=R;dk}mFW1Z;|c;k+I1 z#~rB`{N9?Iv?LkhiO9pYz8MSW3~r1Z)}z9EoO$?h3O6qDJRjdebdC^h93=%3+Hro) z@ape6p@Z$yHWG`C^M&(GMv2}t=R7~Y7}-oYtj<*1{av9RX~>H>hpX_$+mEyxgv#%= z69n^l%T>#(Ld3%~vPqVh?7`vJ3m`2NTCWV4txs*e}>`7>*GbgYlUB WHorZw|LXm_{}cQ1YkrNlKmP^ggK{+h literal 0 HcmV?d00001 diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsxml.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsxml.plist new file mode 100644 index 0000000..87dc2f0 --- /dev/null +++ b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsxml.plist @@ -0,0 +1,10 @@ + + + + + Integer + 1 + String + This is a string + + diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsxmlOutBinary.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsxmlOutBinary.plist new file mode 100644 index 0000000..e0476f0 --- /dev/null +++ b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/fimsxmlOutBinary.plist @@ -0,0 +1,39 @@ + + + + + image + + data + + iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAABGdBTUEAAK/I + NwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAKJ + SURBVHjavJZJaBVBEIZnYny+LMaoRE9uKETIxaCouF5c0IMiCCEHQdAQ8Cgm + h9ziSRQvCl48CHoQPClBMLgg8rxogmAMbomIIG5xvRiTp+Nf8A8UbXfP8h4W + fKRfp2f+nuqq6gqjKApsFoZh4LA1YAVYCRaDD+AOuAumbQ9YNWTShsXawC15 + xMEQ6HAJ//P+lMK7wCePqOZkGuEwhat3gEGO34Bn4CEog3awx/J4LzhViavn + gXdgHHSCBovINjBifHWZ87ldfZrCLYHfloCXhvgTUMwjXKTogSCdrQXvDfHN + eYQ3gj9gUZDejhnCJ1zCNZ6XrOPZfcwgfN3I5S2uhT5hKRLd4FcG4U3Gbykw + jVmFm8ALMJvVSluDY6NnwEw1NwPUZxWWlNgLJsFR0Mz5g+CQpLqxfnccxbR7 + oARaswoXwGruepZyuaTJMINH24gaS96fYx1vt728NiE3Rxndj8BPzg851msP + DPDvZTCV9YtbeV47wY0UgVVW41fgOZgAP7IKf6M7xzxfqW2pGpfozSPcRCbh + Ene9HVzhDVWbkPex9TCNBl13tK9ydYEH4D4LfsESydpuGlWrM+8l0cYXvHbl + omHHlagE4jKfsM/V4xRdSNfFhaTgWF+nxhNJpdYnPMkiIDn8lhfGY8eZyab2 + GZWtMa+w2AWe6wIWkilL4ZgProLlam4uS6jbEhqBGgbYVsfj61UVi3gfXwLf + QX+lzd4GcJFXXAvbIUmxa8oDwnnGQ8D0G61Gl7kKHGaj99lIm6f8n7b9LDxh + pcK6BkcMvLNsi4qWdXIP91Xji2Pro/DthKAMdbGphrBccb/BFzZ3qawawgFL + 4Vd2oPX/Uzg+Q+lK5uQV/ivAAK75twyU5R0RAAAAAElFTkSuQmCC + + id + marc + + myArray + + 3.5 + + operation + 0 + parameters + hello there + + diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/genxmlplist.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/genxmlplist.plist new file mode 100644 index 0000000..61a2335 --- /dev/null +++ b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/genxmlplist.plist @@ -0,0 +1,963 @@ + + + + + Feedback + + + CoarsePoseX + 8.53606605529785 + CoarsePoseY + 3.24669480323792 + CoarsePoseZ + 0 + DirectionGuide + 0 + FaceSignature + 5517595914039178706 + FinePoseX + 8.53606605529785 + FinePoseY + 3.24669480323792 + FinePoseZ + 0 + ImageMeanB + 89.2327346801758 + ImageMeanG + 96.2071075439453 + ImageMeanR + 128.648178100586 + ImageVarianceB + 1344.81555175781 + ImageVarianceG + 1562.90673828125 + ImageVarianceR + 2925.90869140625 + InputFilename + 0.png + Landmarks + + ChinTip + + 242.776382446289 + 319.175933837891 + + LeftEarFaceBottomProject + + 165.575729370117 + 309.688323974609 + + LeftEarTragus + + 152.647033691406 + 273.52294921875 + + LeftEyeCenter + + 205.028900146484 + 224.2138671875 + + LeftEyeCornerLeft + + 191.618499755859 + 225.554916381836 + + LeftEyeCornerRight + + 218.439300537109 + 225.554916381836 + + LeftEyebrowLeft + + 177.570846557617 + 209.455841064453 + + LeftEyebrowMiddle + + 197.803863525391 + 199.464920043945 + + LeftEyebrowRight + + 219.691055297852 + 202.018768310547 + + LipCornerLeft + + 215.615814208984 + 299.637725830078 + + LipCornerRight + + 267.356384277344 + 303.276489257813 + + LipLineMiddle + + 241.896286010742 + 297.427703857422 + + NoseBtwEyes + + 237.462875366211 + 216.204315185547 + + NoseTip + + 240.228744506836 + 256.220520019531 + + NostrilLeftHoleBottom + + 230.390167236328 + 268.083862304688 + + NostrilLeftSide + + 217.613800048828 + 264.014801025391 + + NostrilRightHoleBottom + + 251.040069580078 + 268.394714355469 + + NostrilRightSide + + 264.544189453125 + 262.115661621094 + + RightEarFaceBottomProject + + 314.564697265625 + 308.245208740234 + + RightEarTragus + + 327.592224121094 + 261.857299804688 + + RightEyeCenter + + 275.371978759766 + 222.024154663086 + + RightEyeCornerLeft + + 261.352600097656 + 224.2138671875 + + RightEyeCornerRight + + 288.821258544922 + 223.144927978516 + + RightEyebrowLeft + + 255.175003051758 + 200.582824707031 + + RightEyebrowMiddle + + 282.553802490234 + 197.181838989258 + + RightEyebrowRight + + 302.429626464844 + 206.696182250977 + + + LandmarksImputed + + ChinTip + + 242.776382446289 + 319.175933837891 + + LeftEarFaceBottomProject + + 165.575729370117 + 309.688323974609 + + LeftEyeCenter + + 205.028900146484 + 224.2138671875 + + LeftEyeCornerLeft + + 191.618499755859 + 225.554916381836 + + LeftEyeCornerRight + + 218.439300537109 + 225.554916381836 + + LeftEyebrowLeft + + 177.570846557617 + 209.455841064453 + + LeftEyebrowMiddle + + 197.803863525391 + 199.464920043945 + + LeftEyebrowRight + + 219.691055297852 + 202.018768310547 + + LipCornerLeft + + 215.615814208984 + 299.637725830078 + + LipCornerRight + + 267.356384277344 + 303.276489257813 + + LipLineMiddle + + 241.896286010742 + 297.427703857422 + + NoseBtwEyes + + 237.462875366211 + 216.204315185547 + + NoseTip + + 240.228744506836 + 256.220520019531 + + NostrilLeftHoleBottom + + 230.390167236328 + 268.083862304688 + + NostrilLeftSide + + 217.613800048828 + 264.014801025391 + + NostrilRightHoleBottom + + 251.040069580078 + 268.394714355469 + + NostrilRightSide + + 264.544189453125 + 262.115661621094 + + RightEarFaceBottomProject + + 314.564697265625 + 308.245208740234 + + RightEyeCenter + + 275.371978759766 + 222.024154663086 + + RightEyeCornerLeft + + 261.352600097656 + 224.2138671875 + + RightEyeCornerRight + + 288.821258544922 + 223.144927978516 + + RightEyebrowLeft + + 255.175003051758 + 200.582824707031 + + RightEyebrowMiddle + + 282.553802490234 + 197.181838989258 + + RightEyebrowRight + + 302.429626464844 + 206.696182250977 + + + LandmarksProjected + + BrowBottom + + 238.78889465332 + 202.747650146484 + + BrowMiddle + + 238.516098022461 + 192.832550048828 + + BrowTop + + 238.278503417969 + 186.429977416992 + + CheekBoneLeft + + 187.109985351563 + 257.919708251953 + + CheekBoneRight + + 293.497802734375 + 254.316390991211 + + CheekBoneWideLeft + + 164.937850952148 + 261.098083496094 + + CheekBoneWideRight + + 314.822052001953 + 255.985687255859 + + CheekMiddleLeft + + 209.559829711914 + 274.029266357422 + + CheekMiddleRight + + 270.521484375 + 273.456756591797 + + CheekMouthLeft + + 210.706192016602 + 295.633178710938 + + CheekMouthRight + + 271.626922607422 + 294.452728271484 + + ChinLow + + 242.443496704102 + 349.832183837891 + + ChinTip + + 242.019805908203 + 323.815002441406 + + ChinTipBottom + + 242.430114746094 + 341.177642822266 + + ChinTipLeft + + 225.939025878906 + 315.745880126953 + + ChinTipRight + + 257.923126220703 + 314.927276611328 + + ChinTipTop + + 242.011123657227 + 315.245910644531 + + FaceLeftBottom + + 197.527359008789 + 320.604431152344 + + FaceLeftMiddleAnt + + 189.473876953125 + 306.375610351563 + + FaceLeftMiddlePost + + 175.147384643555 + 316.656585693359 + + FaceLeftTopAnt + + 186.899353027344 + 283.605438232422 + + FaceLeftTopPost + + 171.363967895508 + 296.704681396484 + + FaceRightBottom + + 285.581909179688 + 318.200469970703 + + FaceRightMiddleAnt + + 292.299835205078 + 303.862701416016 + + FaceRightMiddlePost + + 307.304016113281 + 313.347473144531 + + FaceRightTopAnt + + 293.961853027344 + 281.401123046875 + + FaceRightTopPost + + 310.014739990234 + 292.995666503906 + + ForeheadBottom + + 237.868667602539 + 172.989624023438 + + ForeheadTop + + 237.464645385742 + 156.441329956055 + + HeadR2Left + + 156.823883056641 + 177.380020141602 + + HeadR2Middle + + 237.055023193359 + 142.794235229492 + + HeadR2Right + + 318.065521240234 + 172.173004150391 + + LeftEarCurveBottom + + 148.842544555664 + 285.386993408203 + + LeftEarCurveTop + + 138.635467529297 + 227.682983398438 + + LeftEarFaceBottom + + 163.297393798828 + 301.797058105469 + + LeftEarFaceBottomProject + + 167.109893798828 + 304.180084228516 + + LeftEarFaceTop + + 152.370895385742 + 239.866928100586 + + LeftEarLobe + + 161.198608398438 + 304.432373046875 + + LeftEarTragus + + 154.644668579102 + 265.83642578125 + + LeftEyeBelow + + 206.008453369141 + 240.102462768555 + + LeftEyeCenter + + 202.768859863281 + 223.64030456543 + + LeftEyeCornerLeft + + 190.391357421875 + 224.454132080078 + + LeftEyeCornerRight + + 217.52864074707 + 224.582946777344 + + LeftEyeMiddleBottom + + 203.699371337891 + 228.508209228516 + + LeftEyeMiddleTop + + 201.589752197266 + 218.612228393555 + + LeftEyebrowLeft + + 177.59928894043 + 210.675827026367 + + LeftEyebrowLeftBrow + + 175.387161254883 + 203.872146606445 + + LeftEyebrowLeftLow + + 183.172622680664 + 217.079040527344 + + LeftEyebrowMiddle + + 196.842544555664 + 199.98095703125 + + LeftEyebrowMiddleBrow + + 198.112823486328 + 190.754806518555 + + LeftEyebrowMiddleLow + + 197.886810302734 + 208.895874023438 + + LeftEyebrowRight + + 225.591949462891 + 204.536087036133 + + LeftEyebrowRightBrow + + 221.87370300293 + 187.327484130859 + + LeftEyebrowRightLow + + 221.842056274414 + 212.268508911133 + + LeftJawChin + + 223.059066772461 + 335.838684082031 + + LeftJawCorner + + 178.692169189453 + 327.750793457031 + + LeftJawMiddle + + 196.113983154297 + 334.887664794922 + + LipBottomLeft + + 228.202407836914 + 305.019836425781 + + LipBottomMiddle + + 241.394302368164 + 304.501983642578 + + LipBottomRight + + 255.468246459961 + 303.882415771484 + + LipCornerLeft + + 216.182342529297 + 301.570617675781 + + LipCornerRight + + 266.603179931641 + 300.295532226563 + + LipLineLeft + + 231.769577026367 + 298.374084472656 + + LipLineMiddle + + 241.220138549805 + 297.495849609375 + + LipLineRight + + 251.56672668457 + 297.480316162109 + + LipTopLeft + + 223.780487060547 + 293.956024169922 + + LipTopMiddle + + 241.130813598633 + 289.179473876953 + + LipTopMiddleLeft + + 232.709579467773 + 288.673828125 + + LipTopMiddleRight + + 249.715133666992 + 288.18505859375 + + LipTopRight + + 259.322570800781 + 292.946868896484 + + NeckBottomLeft + + 183.449172973633 + 373.413848876953 + + NeckBottomRight + + 305.548309326172 + 369.153381347656 + + NeckLow + + 245.613159179688 + 403.884948730469 + + NeckTop + + 242.603622436523 + 358.837982177734 + + NoseBridgeBottom + + 239.905685424805 + 245.166915893555 + + NoseBridgeMiddle + + 239.658538818359 + 235.887359619141 + + NoseBridgeTop + + 239.625411987305 + 227.059585571289 + + NoseBtwEyes + + 238.853378295898 + 216.076889038086 + + NoseBtwNostrils + + 240.514358520508 + 273.08935546875 + + NoseEyeLeft + + 226.280395507813 + 235.138061523438 + + NoseEyeRight + + 254.168426513672 + 234.336898803711 + + NoseSideLeft + + 224.424240112305 + 243.183547973633 + + NoseSideRight + + 255.696807861328 + 242.39176940918 + + NoseTip + + 240.498626708984 + 257.840545654297 + + NostrilLeftBottom + + 222.451568603516 + 273.071929931641 + + NostrilLeftFaceTop + + 220.786682128906 + 253.416015625 + + NostrilLeftHoleBottom + + 232.099365234375 + 270.427276611328 + + NostrilLeftSide + + 216.424774169922 + 266.031707763672 + + NostrilLeftTop + + 227.665542602539 + 262.91015625 + + NostrilRightBottom + + 259.854797363281 + 271.994689941406 + + NostrilRightFaceTop + + 259.675598144531 + 252.099655151367 + + NostrilRightHoleBottom + + 249.168380737305 + 270.075225830078 + + NostrilRightSide + + 264.601196289063 + 264.775207519531 + + NostrilRightTop + + 253.671539306641 + 262.56396484375 + + RightEarCurveBottom + + 331.869079589844 + 280.776794433594 + + RightEarCurveMiddle + + 336.434722900391 + 254.067962646484 + + RightEarCurveTop + + 339.080474853516 + 222.671783447266 + + RightEarFaceBottom + + 318.531402587891 + 297.89111328125 + + RightEarFaceBottomProject + + 314.890106201172 + 300.416229248047 + + RightEarFaceTop + + 326.244232177734 + 235.657791137695 + + RightEarLobe + + 320.742065429688 + 300.357299804688 + + RightEarTragus + + 325.281341552734 + 261.585723876953 + + RightEyeBelow + + 273.309020996094 + 238.533737182617 + + RightEyeCenter + + 276.140472412109 + 221.345260620117 + + RightEyeCornerLeft + + 260.716979980469 + 223.43180847168 + + RightEyeCornerRight + + 288.415588378906 + 222.620819091797 + + RightEyeMiddleBottom + + 275.493530273438 + 226.537963867188 + + RightEyeMiddleTop + + 277.399383544922 + 216.306884765625 + + RightEyebrowLeft + + 252.796051025391 + 204.130645751953 + + RightEyebrowLeftBrow + + 254.410491943359 + 186.274688720703 + + RightEyebrowLeftLow + + 257.456512451172 + 211.127670288086 + + RightEyebrowMiddle + + 280.539672851563 + 197.992446899414 + + RightEyebrowMiddleBrow + + 278.502838134766 + 187.897918701172 + + RightEyebrowMiddleLow + + 280.245147705078 + 206.791351318359 + + RightEyebrowRight + + 300.132751464844 + 207.322143554688 + + RightEyebrowRightBrow + + 302.488861083984 + 199.854721069336 + + RightEyebrowRightLow + + 295.000885009766 + 214.646774291992 + + RightJawChin + + 261.398620605469 + 334.857666015625 + + RightJawCorner + + 304.627838134766 + 324.628692626953 + + RightJawMiddle + + 288.059539794922 + 332.519317626953 + + UpperLip + + 240.179794311523 + 281.900604248047 + + + PrimaryFaceBottom + 361 + PrimaryFaceLeft + 297 + PrimaryFaceRight + 529 + PrimaryFaceScore + 0 + PrimaryFaceTop + 129 + PrimaryHeadCloseToBoundary + 0 + PrimaryHeadFound + 1 + PrimaryLeftEyeCornerLeftX + 346.618499755859 + PrimaryLeftEyeCornerLeftY + 225.554916381836 + PrimaryLeftEyeCornerRightX + 373.439300537109 + PrimaryLeftEyeCornerRightY + 225.554916381836 + PrimaryLeftEyeX + 360.028900146484 + PrimaryLeftEyeY + 224.2138671875 + PrimaryNoseTipX + 0 + PrimaryNoseTipY + 480 + PrimaryPixelsBetweenEyes + 70.3430786132813 + PrimaryRightEyeCornerLeftX + 416.352600097656 + PrimaryRightEyeCornerLeftY + 224.2138671875 + PrimaryRightEyeCornerRightX + 443.821258544922 + PrimaryRightEyeCornerRightY + 223.144927978516 + PrimaryRightEyeX + 430.371978759766 + PrimaryRightEyeY + 222.024154663086 + PrimarySaliency + 1332 + RigidPoseX + 9.49709224700928 + RigidPoseY + -0.287160754203796 + RigidPoseZ + -1.4265331029892 + RigidTranslationX + -0.000885751564055681 + RigidTranslationY + 0.0109213888645172 + RigidTranslationZ + -0.774711787700653 + + + + \ No newline at end of file diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/nesteddict.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/nesteddict.plist new file mode 100644 index 0000000000000000000000000000000000000000..0720aacd57dc7373a0132ae837f3ad4d953406bc GIT binary patch literal 8968 zcmaKxd0^#>7!l52SKqN##G{itG#6dhLKnWbEKn)tuf)4ax03(>d z3>L6L0@Q~FV1tIx2<*@pnm|)%2F>9qXaP?{OK1hHp$#NLTWAOE;Th-v9ibDo(ga$c zHlQ}zkb0<>me5j^8{^eS%jkUiGF?Ekku|{o7b0Io7t^ft8^({MwinO^flC0 z(3SLc`UZV7Ye2Cx&o$cVb2~jbuHj>byYt++sopZzm~2kPl#xECr>w|X?)G{z{tLr# z>J+CZx7g_`EKBuy3tTznuG}%q>|mGEGd!E)Qhjc`UDe;^%tCQ+hU6T?|}|{C~t&yIMH2dfXE! zut|9H|IH5_RJ$DEEONU%IaRd_CMLlw{4eWh!6H}h$q*&qbRcG->dP{0Yu(inX`dm*oJFZ1_&8j`tu6z2E zV{yg*N0N22k*l9>=hvM%#sh$T_x*3R4pHbid)z&|BDs2~L?q|AD(DPd;92Mj-Jm=4 zfS$lZFGzx9=nZ|KFZ6@{FaQR^AV`71Fa(A|Dhz|+Fak!xC>RZCkPaCz1~OqRjDsx5 z1_wA{Jmf$wxL^Y0K|Z*l01BZ9iopY3D1lP&K^c@o1x$oWm;_ZY8K%HgmsL`w|BOcIEV*hy3J6lqD?kana4=}fwk z9;6rPP5P06WH3o3BgklyLB^77GM>0dJ}D#~QcB86C7Dd75kHwpW|MhjK3PbXkfr1` z@;X^XR+G2MJLF&FeewbMhdpHeGSKMW~ zI_CR(i{x`Mi`f>BK9{H5<;&(YvXAjTZza2j<}w*``ck~(U1L++C1_J}nU;j3P)i%) z$|=NwVo~7Moqi zg}!e5wQV;>-V+$c7--$Z%kuy)n)G0M{8 zSOfapxp^)r6J|e&0V)5w_GO=Hu{vTfwJTp^yfzRqXEed)NG3RJVDZ70!}NEqY+-ssD2_?vI)_mCWI(!4jym zh1l7_=1S|FRl6re+u{izt~VROc0PI=SJO)35a~say|zeRSUgf;^f zXhzf|E*aH|7d%dCi@|ocw9TZZlZMOZABzwjVUE(~80@Vm&zEdfZ!A%(*${HY{$Wbm z>*7>qFq?a#FB!u)*l~x!i3Zce&cmZ$Oh7D^RD?{q>7@YV<*)4%v@u5PjOr9>2Gm{S znu;*D(s_$ZCtA+xi?2HQ_(YKm$R~SkUsj(ybynob7L?|(!(KL7Csk>dJfzwa*0$yV zmZHRFm)np9C|9<+!=y1|r5!I>ta&m>>x7+yDWWXhm9iA8DIN<_;Z$|{yt-C(JA=)U zwwU+;6(2$Jj51bV$ujN)Hc))@)x7m%-$;wi9;mWA@$y8|;dvk%WEP}nb@g+zZk=#b zur~lHN&z;*M|R%B3p~CA+WGSCF`^*AR`}S?m(<^HW4LVN2~iN>6WDI&z58>53>Odl zB7}kfJKDX5m=R+5GuVShwocSy>6e2H-nX=`J+;#_Kg;jiEb22i+G)a<

JbFWr;hS&^ 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 J`u~LY{tpC^SbqQj literal 0 HcmV?d00001 diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/newgenxmlplist.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/newgenxmlplist.plist new file mode 100644 index 0000000..61a2335 --- /dev/null +++ b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/newgenxmlplist.plist @@ -0,0 +1,963 @@ + + + + + Feedback + + + CoarsePoseX + 8.53606605529785 + CoarsePoseY + 3.24669480323792 + CoarsePoseZ + 0 + DirectionGuide + 0 + FaceSignature + 5517595914039178706 + FinePoseX + 8.53606605529785 + FinePoseY + 3.24669480323792 + FinePoseZ + 0 + ImageMeanB + 89.2327346801758 + ImageMeanG + 96.2071075439453 + ImageMeanR + 128.648178100586 + ImageVarianceB + 1344.81555175781 + ImageVarianceG + 1562.90673828125 + ImageVarianceR + 2925.90869140625 + InputFilename + 0.png + Landmarks + + ChinTip + + 242.776382446289 + 319.175933837891 + + LeftEarFaceBottomProject + + 165.575729370117 + 309.688323974609 + + LeftEarTragus + + 152.647033691406 + 273.52294921875 + + LeftEyeCenter + + 205.028900146484 + 224.2138671875 + + LeftEyeCornerLeft + + 191.618499755859 + 225.554916381836 + + LeftEyeCornerRight + + 218.439300537109 + 225.554916381836 + + LeftEyebrowLeft + + 177.570846557617 + 209.455841064453 + + LeftEyebrowMiddle + + 197.803863525391 + 199.464920043945 + + LeftEyebrowRight + + 219.691055297852 + 202.018768310547 + + LipCornerLeft + + 215.615814208984 + 299.637725830078 + + LipCornerRight + + 267.356384277344 + 303.276489257813 + + LipLineMiddle + + 241.896286010742 + 297.427703857422 + + NoseBtwEyes + + 237.462875366211 + 216.204315185547 + + NoseTip + + 240.228744506836 + 256.220520019531 + + NostrilLeftHoleBottom + + 230.390167236328 + 268.083862304688 + + NostrilLeftSide + + 217.613800048828 + 264.014801025391 + + NostrilRightHoleBottom + + 251.040069580078 + 268.394714355469 + + NostrilRightSide + + 264.544189453125 + 262.115661621094 + + RightEarFaceBottomProject + + 314.564697265625 + 308.245208740234 + + RightEarTragus + + 327.592224121094 + 261.857299804688 + + RightEyeCenter + + 275.371978759766 + 222.024154663086 + + RightEyeCornerLeft + + 261.352600097656 + 224.2138671875 + + RightEyeCornerRight + + 288.821258544922 + 223.144927978516 + + RightEyebrowLeft + + 255.175003051758 + 200.582824707031 + + RightEyebrowMiddle + + 282.553802490234 + 197.181838989258 + + RightEyebrowRight + + 302.429626464844 + 206.696182250977 + + + LandmarksImputed + + ChinTip + + 242.776382446289 + 319.175933837891 + + LeftEarFaceBottomProject + + 165.575729370117 + 309.688323974609 + + LeftEyeCenter + + 205.028900146484 + 224.2138671875 + + LeftEyeCornerLeft + + 191.618499755859 + 225.554916381836 + + LeftEyeCornerRight + + 218.439300537109 + 225.554916381836 + + LeftEyebrowLeft + + 177.570846557617 + 209.455841064453 + + LeftEyebrowMiddle + + 197.803863525391 + 199.464920043945 + + LeftEyebrowRight + + 219.691055297852 + 202.018768310547 + + LipCornerLeft + + 215.615814208984 + 299.637725830078 + + LipCornerRight + + 267.356384277344 + 303.276489257813 + + LipLineMiddle + + 241.896286010742 + 297.427703857422 + + NoseBtwEyes + + 237.462875366211 + 216.204315185547 + + NoseTip + + 240.228744506836 + 256.220520019531 + + NostrilLeftHoleBottom + + 230.390167236328 + 268.083862304688 + + NostrilLeftSide + + 217.613800048828 + 264.014801025391 + + NostrilRightHoleBottom + + 251.040069580078 + 268.394714355469 + + NostrilRightSide + + 264.544189453125 + 262.115661621094 + + RightEarFaceBottomProject + + 314.564697265625 + 308.245208740234 + + RightEyeCenter + + 275.371978759766 + 222.024154663086 + + RightEyeCornerLeft + + 261.352600097656 + 224.2138671875 + + RightEyeCornerRight + + 288.821258544922 + 223.144927978516 + + RightEyebrowLeft + + 255.175003051758 + 200.582824707031 + + RightEyebrowMiddle + + 282.553802490234 + 197.181838989258 + + RightEyebrowRight + + 302.429626464844 + 206.696182250977 + + + LandmarksProjected + + BrowBottom + + 238.78889465332 + 202.747650146484 + + BrowMiddle + + 238.516098022461 + 192.832550048828 + + BrowTop + + 238.278503417969 + 186.429977416992 + + CheekBoneLeft + + 187.109985351563 + 257.919708251953 + + CheekBoneRight + + 293.497802734375 + 254.316390991211 + + CheekBoneWideLeft + + 164.937850952148 + 261.098083496094 + + CheekBoneWideRight + + 314.822052001953 + 255.985687255859 + + CheekMiddleLeft + + 209.559829711914 + 274.029266357422 + + CheekMiddleRight + + 270.521484375 + 273.456756591797 + + CheekMouthLeft + + 210.706192016602 + 295.633178710938 + + CheekMouthRight + + 271.626922607422 + 294.452728271484 + + ChinLow + + 242.443496704102 + 349.832183837891 + + ChinTip + + 242.019805908203 + 323.815002441406 + + ChinTipBottom + + 242.430114746094 + 341.177642822266 + + ChinTipLeft + + 225.939025878906 + 315.745880126953 + + ChinTipRight + + 257.923126220703 + 314.927276611328 + + ChinTipTop + + 242.011123657227 + 315.245910644531 + + FaceLeftBottom + + 197.527359008789 + 320.604431152344 + + FaceLeftMiddleAnt + + 189.473876953125 + 306.375610351563 + + FaceLeftMiddlePost + + 175.147384643555 + 316.656585693359 + + FaceLeftTopAnt + + 186.899353027344 + 283.605438232422 + + FaceLeftTopPost + + 171.363967895508 + 296.704681396484 + + FaceRightBottom + + 285.581909179688 + 318.200469970703 + + FaceRightMiddleAnt + + 292.299835205078 + 303.862701416016 + + FaceRightMiddlePost + + 307.304016113281 + 313.347473144531 + + FaceRightTopAnt + + 293.961853027344 + 281.401123046875 + + FaceRightTopPost + + 310.014739990234 + 292.995666503906 + + ForeheadBottom + + 237.868667602539 + 172.989624023438 + + ForeheadTop + + 237.464645385742 + 156.441329956055 + + HeadR2Left + + 156.823883056641 + 177.380020141602 + + HeadR2Middle + + 237.055023193359 + 142.794235229492 + + HeadR2Right + + 318.065521240234 + 172.173004150391 + + LeftEarCurveBottom + + 148.842544555664 + 285.386993408203 + + LeftEarCurveTop + + 138.635467529297 + 227.682983398438 + + LeftEarFaceBottom + + 163.297393798828 + 301.797058105469 + + LeftEarFaceBottomProject + + 167.109893798828 + 304.180084228516 + + LeftEarFaceTop + + 152.370895385742 + 239.866928100586 + + LeftEarLobe + + 161.198608398438 + 304.432373046875 + + LeftEarTragus + + 154.644668579102 + 265.83642578125 + + LeftEyeBelow + + 206.008453369141 + 240.102462768555 + + LeftEyeCenter + + 202.768859863281 + 223.64030456543 + + LeftEyeCornerLeft + + 190.391357421875 + 224.454132080078 + + LeftEyeCornerRight + + 217.52864074707 + 224.582946777344 + + LeftEyeMiddleBottom + + 203.699371337891 + 228.508209228516 + + LeftEyeMiddleTop + + 201.589752197266 + 218.612228393555 + + LeftEyebrowLeft + + 177.59928894043 + 210.675827026367 + + LeftEyebrowLeftBrow + + 175.387161254883 + 203.872146606445 + + LeftEyebrowLeftLow + + 183.172622680664 + 217.079040527344 + + LeftEyebrowMiddle + + 196.842544555664 + 199.98095703125 + + LeftEyebrowMiddleBrow + + 198.112823486328 + 190.754806518555 + + LeftEyebrowMiddleLow + + 197.886810302734 + 208.895874023438 + + LeftEyebrowRight + + 225.591949462891 + 204.536087036133 + + LeftEyebrowRightBrow + + 221.87370300293 + 187.327484130859 + + LeftEyebrowRightLow + + 221.842056274414 + 212.268508911133 + + LeftJawChin + + 223.059066772461 + 335.838684082031 + + LeftJawCorner + + 178.692169189453 + 327.750793457031 + + LeftJawMiddle + + 196.113983154297 + 334.887664794922 + + LipBottomLeft + + 228.202407836914 + 305.019836425781 + + LipBottomMiddle + + 241.394302368164 + 304.501983642578 + + LipBottomRight + + 255.468246459961 + 303.882415771484 + + LipCornerLeft + + 216.182342529297 + 301.570617675781 + + LipCornerRight + + 266.603179931641 + 300.295532226563 + + LipLineLeft + + 231.769577026367 + 298.374084472656 + + LipLineMiddle + + 241.220138549805 + 297.495849609375 + + LipLineRight + + 251.56672668457 + 297.480316162109 + + LipTopLeft + + 223.780487060547 + 293.956024169922 + + LipTopMiddle + + 241.130813598633 + 289.179473876953 + + LipTopMiddleLeft + + 232.709579467773 + 288.673828125 + + LipTopMiddleRight + + 249.715133666992 + 288.18505859375 + + LipTopRight + + 259.322570800781 + 292.946868896484 + + NeckBottomLeft + + 183.449172973633 + 373.413848876953 + + NeckBottomRight + + 305.548309326172 + 369.153381347656 + + NeckLow + + 245.613159179688 + 403.884948730469 + + NeckTop + + 242.603622436523 + 358.837982177734 + + NoseBridgeBottom + + 239.905685424805 + 245.166915893555 + + NoseBridgeMiddle + + 239.658538818359 + 235.887359619141 + + NoseBridgeTop + + 239.625411987305 + 227.059585571289 + + NoseBtwEyes + + 238.853378295898 + 216.076889038086 + + NoseBtwNostrils + + 240.514358520508 + 273.08935546875 + + NoseEyeLeft + + 226.280395507813 + 235.138061523438 + + NoseEyeRight + + 254.168426513672 + 234.336898803711 + + NoseSideLeft + + 224.424240112305 + 243.183547973633 + + NoseSideRight + + 255.696807861328 + 242.39176940918 + + NoseTip + + 240.498626708984 + 257.840545654297 + + NostrilLeftBottom + + 222.451568603516 + 273.071929931641 + + NostrilLeftFaceTop + + 220.786682128906 + 253.416015625 + + NostrilLeftHoleBottom + + 232.099365234375 + 270.427276611328 + + NostrilLeftSide + + 216.424774169922 + 266.031707763672 + + NostrilLeftTop + + 227.665542602539 + 262.91015625 + + NostrilRightBottom + + 259.854797363281 + 271.994689941406 + + NostrilRightFaceTop + + 259.675598144531 + 252.099655151367 + + NostrilRightHoleBottom + + 249.168380737305 + 270.075225830078 + + NostrilRightSide + + 264.601196289063 + 264.775207519531 + + NostrilRightTop + + 253.671539306641 + 262.56396484375 + + RightEarCurveBottom + + 331.869079589844 + 280.776794433594 + + RightEarCurveMiddle + + 336.434722900391 + 254.067962646484 + + RightEarCurveTop + + 339.080474853516 + 222.671783447266 + + RightEarFaceBottom + + 318.531402587891 + 297.89111328125 + + RightEarFaceBottomProject + + 314.890106201172 + 300.416229248047 + + RightEarFaceTop + + 326.244232177734 + 235.657791137695 + + RightEarLobe + + 320.742065429688 + 300.357299804688 + + RightEarTragus + + 325.281341552734 + 261.585723876953 + + RightEyeBelow + + 273.309020996094 + 238.533737182617 + + RightEyeCenter + + 276.140472412109 + 221.345260620117 + + RightEyeCornerLeft + + 260.716979980469 + 223.43180847168 + + RightEyeCornerRight + + 288.415588378906 + 222.620819091797 + + RightEyeMiddleBottom + + 275.493530273438 + 226.537963867188 + + RightEyeMiddleTop + + 277.399383544922 + 216.306884765625 + + RightEyebrowLeft + + 252.796051025391 + 204.130645751953 + + RightEyebrowLeftBrow + + 254.410491943359 + 186.274688720703 + + RightEyebrowLeftLow + + 257.456512451172 + 211.127670288086 + + RightEyebrowMiddle + + 280.539672851563 + 197.992446899414 + + RightEyebrowMiddleBrow + + 278.502838134766 + 187.897918701172 + + RightEyebrowMiddleLow + + 280.245147705078 + 206.791351318359 + + RightEyebrowRight + + 300.132751464844 + 207.322143554688 + + RightEyebrowRightBrow + + 302.488861083984 + 199.854721069336 + + RightEyebrowRightLow + + 295.000885009766 + 214.646774291992 + + RightJawChin + + 261.398620605469 + 334.857666015625 + + RightJawCorner + + 304.627838134766 + 324.628692626953 + + RightJawMiddle + + 288.059539794922 + 332.519317626953 + + UpperLip + + 240.179794311523 + 281.900604248047 + + + PrimaryFaceBottom + 361 + PrimaryFaceLeft + 297 + PrimaryFaceRight + 529 + PrimaryFaceScore + 0 + PrimaryFaceTop + 129 + PrimaryHeadCloseToBoundary + 0 + PrimaryHeadFound + 1 + PrimaryLeftEyeCornerLeftX + 346.618499755859 + PrimaryLeftEyeCornerLeftY + 225.554916381836 + PrimaryLeftEyeCornerRightX + 373.439300537109 + PrimaryLeftEyeCornerRightY + 225.554916381836 + PrimaryLeftEyeX + 360.028900146484 + PrimaryLeftEyeY + 224.2138671875 + PrimaryNoseTipX + 0 + PrimaryNoseTipY + 480 + PrimaryPixelsBetweenEyes + 70.3430786132813 + PrimaryRightEyeCornerLeftX + 416.352600097656 + PrimaryRightEyeCornerLeftY + 224.2138671875 + PrimaryRightEyeCornerRightX + 443.821258544922 + PrimaryRightEyeCornerRightY + 223.144927978516 + PrimaryRightEyeX + 430.371978759766 + PrimaryRightEyeY + 222.024154663086 + PrimarySaliency + 1332 + RigidPoseX + 9.49709224700928 + RigidPoseY + -0.287160754203796 + RigidPoseZ + -1.4265331029892 + RigidTranslationX + -0.000885751564055681 + RigidTranslationY + 0.0109213888645172 + RigidTranslationZ + -0.774711787700653 + + + + \ No newline at end of file diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/outputplist.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/outputplist.plist new file mode 100644 index 0000000..764b0da --- /dev/null +++ b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/outputplist.plist @@ -0,0 +1,963 @@ + + + + + Feedback + + + CoarsePoseX + 8.5360660552978516 + CoarsePoseY + 3.246694803237915 + CoarsePoseZ + 0.0 + DirectionGuide + 0 + FaceSignature + 5517595914039178706 + FinePoseX + 8.5360660552978516 + FinePoseY + 3.246694803237915 + FinePoseZ + 0.0 + ImageMeanB + 89.232734680175781 + ImageMeanG + 96.207107543945313 + ImageMeanR + 128.64817810058594 + ImageVarianceB + 1344.8155517578125 + ImageVarianceG + 1562.90673828125 + ImageVarianceR + 2925.90869140625 + InputFilename + 0.png + Landmarks + + ChinTip + + 242.77638244628906 + 319.17593383789062 + + LeftEarFaceBottomProject + + 165.57572937011719 + 309.68832397460937 + + LeftEarTragus + + 152.64703369140625 + 273.52294921875 + + LeftEyeCenter + + 205.02890014648437 + 224.2138671875 + + LeftEyeCornerLeft + + 191.61849975585937 + 225.55491638183594 + + LeftEyeCornerRight + + 218.43930053710937 + 225.55491638183594 + + LeftEyebrowLeft + + 177.57084655761719 + 209.45584106445312 + + LeftEyebrowMiddle + + 197.80386352539062 + 199.46492004394531 + + LeftEyebrowRight + + 219.69105529785156 + 202.01876831054687 + + LipCornerLeft + + 215.61581420898437 + 299.63772583007812 + + LipCornerRight + + 267.35638427734375 + 303.2764892578125 + + LipLineMiddle + + 241.89628601074219 + 297.42770385742187 + + NoseBtwEyes + + 237.46287536621094 + 216.20431518554687 + + NoseTip + + 240.22874450683594 + 256.22052001953125 + + NostrilLeftHoleBottom + + 230.39016723632812 + 268.0838623046875 + + NostrilLeftSide + + 217.61380004882812 + 264.01480102539062 + + NostrilRightHoleBottom + + 251.04006958007812 + 268.39471435546875 + + NostrilRightSide + + 264.544189453125 + 262.11566162109375 + + RightEarFaceBottomProject + + 314.564697265625 + 308.24520874023437 + + RightEarTragus + + 327.59222412109375 + 261.8572998046875 + + RightEyeCenter + + 275.37197875976562 + 222.02415466308594 + + RightEyeCornerLeft + + 261.35260009765625 + 224.2138671875 + + RightEyeCornerRight + + 288.82125854492187 + 223.14492797851562 + + RightEyebrowLeft + + 255.17500305175781 + 200.58282470703125 + + RightEyebrowMiddle + + 282.55380249023437 + 197.18183898925781 + + RightEyebrowRight + + 302.42962646484375 + 206.69618225097656 + + + LandmarksImputed + + ChinTip + + 242.77638244628906 + 319.17593383789062 + + LeftEarFaceBottomProject + + 165.57572937011719 + 309.68832397460937 + + LeftEyeCenter + + 205.02890014648437 + 224.2138671875 + + LeftEyeCornerLeft + + 191.61849975585937 + 225.55491638183594 + + LeftEyeCornerRight + + 218.43930053710937 + 225.55491638183594 + + LeftEyebrowLeft + + 177.57084655761719 + 209.45584106445312 + + LeftEyebrowMiddle + + 197.80386352539062 + 199.46492004394531 + + LeftEyebrowRight + + 219.69105529785156 + 202.01876831054687 + + LipCornerLeft + + 215.61581420898437 + 299.63772583007812 + + LipCornerRight + + 267.35638427734375 + 303.2764892578125 + + LipLineMiddle + + 241.89628601074219 + 297.42770385742187 + + NoseBtwEyes + + 237.46287536621094 + 216.20431518554687 + + NoseTip + + 240.22874450683594 + 256.22052001953125 + + NostrilLeftHoleBottom + + 230.39016723632812 + 268.0838623046875 + + NostrilLeftSide + + 217.61380004882812 + 264.01480102539062 + + NostrilRightHoleBottom + + 251.04006958007812 + 268.39471435546875 + + NostrilRightSide + + 264.544189453125 + 262.11566162109375 + + RightEarFaceBottomProject + + 314.564697265625 + 308.24520874023437 + + RightEyeCenter + + 275.37197875976562 + 222.02415466308594 + + RightEyeCornerLeft + + 261.35260009765625 + 224.2138671875 + + RightEyeCornerRight + + 288.82125854492187 + 223.14492797851562 + + RightEyebrowLeft + + 255.17500305175781 + 200.58282470703125 + + RightEyebrowMiddle + + 282.55380249023437 + 197.18183898925781 + + RightEyebrowRight + + 302.42962646484375 + 206.69618225097656 + + + LandmarksProjected + + BrowBottom + + 238.78889465332031 + 202.74765014648437 + + BrowMiddle + + 238.51609802246094 + 192.83255004882813 + + BrowTop + + 238.27850341796875 + 186.42997741699219 + + CheekBoneLeft + + 187.1099853515625 + 257.91970825195312 + + CheekBoneRight + + 293.497802734375 + 254.31639099121094 + + CheekBoneWideLeft + + 164.93785095214844 + 261.09808349609375 + + CheekBoneWideRight + + 314.82205200195312 + 255.98568725585937 + + CheekMiddleLeft + + 209.55982971191406 + 274.02926635742187 + + CheekMiddleRight + + 270.521484375 + 273.45675659179687 + + CheekMouthLeft + + 210.70619201660156 + 295.6331787109375 + + CheekMouthRight + + 271.62692260742187 + 294.45272827148437 + + ChinLow + + 242.44349670410156 + 349.83218383789062 + + ChinTip + + 242.01980590820312 + 323.81500244140625 + + ChinTipBottom + + 242.43011474609375 + 341.17764282226562 + + ChinTipLeft + + 225.93902587890625 + 315.74588012695312 + + ChinTipRight + + 257.92312622070313 + 314.92727661132812 + + ChinTipTop + + 242.01112365722656 + 315.24591064453125 + + FaceLeftBottom + + 197.52735900878906 + 320.60443115234375 + + FaceLeftMiddleAnt + + 189.473876953125 + 306.3756103515625 + + FaceLeftMiddlePost + + 175.14738464355469 + 316.65658569335937 + + FaceLeftTopAnt + + 186.89935302734375 + 283.60543823242187 + + FaceLeftTopPost + + 171.36396789550781 + 296.70468139648437 + + FaceRightBottom + + 285.5819091796875 + 318.20046997070312 + + FaceRightMiddleAnt + + 292.29983520507812 + 303.86270141601562 + + FaceRightMiddlePost + + 307.30401611328125 + 313.34747314453125 + + FaceRightTopAnt + + 293.96185302734375 + 281.401123046875 + + FaceRightTopPost + + 310.01473999023437 + 292.99566650390625 + + ForeheadBottom + + 237.86866760253906 + 172.9896240234375 + + ForeheadTop + + 237.46464538574219 + 156.44132995605469 + + HeadR2Left + + 156.82388305664062 + 177.38002014160156 + + HeadR2Middle + + 237.05502319335937 + 142.79423522949219 + + HeadR2Right + + 318.06552124023437 + 172.17300415039063 + + LeftEarCurveBottom + + 148.84254455566406 + 285.38699340820312 + + LeftEarCurveTop + + 138.63546752929687 + 227.6829833984375 + + LeftEarFaceBottom + + 163.29739379882812 + 301.79705810546875 + + LeftEarFaceBottomProject + + 167.10989379882812 + 304.18008422851562 + + LeftEarFaceTop + + 152.37089538574219 + 239.86692810058594 + + LeftEarLobe + + 161.1986083984375 + 304.432373046875 + + LeftEarTragus + + 154.64466857910156 + 265.83642578125 + + LeftEyeBelow + + 206.00845336914062 + 240.10246276855469 + + LeftEyeCenter + + 202.76885986328125 + 223.64030456542969 + + LeftEyeCornerLeft + + 190.391357421875 + 224.45413208007812 + + LeftEyeCornerRight + + 217.52864074707031 + 224.58294677734375 + + LeftEyeMiddleBottom + + 203.69937133789063 + 228.50820922851562 + + LeftEyeMiddleTop + + 201.58975219726562 + 218.61222839355469 + + LeftEyebrowLeft + + 177.59928894042969 + 210.67582702636719 + + LeftEyebrowLeftBrow + + 175.38716125488281 + 203.87214660644531 + + LeftEyebrowLeftLow + + 183.17262268066406 + 217.07904052734375 + + LeftEyebrowMiddle + + 196.84254455566406 + 199.98095703125 + + LeftEyebrowMiddleBrow + + 198.11282348632812 + 190.75480651855469 + + LeftEyebrowMiddleLow + + 197.88681030273437 + 208.8958740234375 + + LeftEyebrowRight + + 225.59194946289062 + 204.53608703613281 + + LeftEyebrowRightBrow + + 221.87370300292969 + 187.32748413085937 + + LeftEyebrowRightLow + + 221.84205627441406 + 212.26850891113281 + + LeftJawChin + + 223.05906677246094 + 335.83868408203125 + + LeftJawCorner + + 178.69216918945312 + 327.75079345703125 + + LeftJawMiddle + + 196.11398315429687 + 334.88766479492187 + + LipBottomLeft + + 228.20240783691406 + 305.01983642578125 + + LipBottomMiddle + + 241.39430236816406 + 304.50198364257812 + + LipBottomRight + + 255.46824645996094 + 303.88241577148437 + + LipCornerLeft + + 216.18234252929687 + 301.57061767578125 + + LipCornerRight + + 266.60317993164062 + 300.2955322265625 + + LipLineLeft + + 231.76957702636719 + 298.37408447265625 + + LipLineMiddle + + 241.22013854980469 + 297.495849609375 + + LipLineRight + + 251.56672668457031 + 297.48031616210937 + + LipTopLeft + + 223.78048706054687 + 293.95602416992187 + + LipTopMiddle + + 241.13081359863281 + 289.17947387695312 + + LipTopMiddleLeft + + 232.70957946777344 + 288.673828125 + + LipTopMiddleRight + + 249.71513366699219 + 288.18505859375 + + LipTopRight + + 259.32257080078125 + 292.94686889648437 + + NeckBottomLeft + + 183.44917297363281 + 373.41384887695312 + + NeckBottomRight + + 305.54830932617187 + 369.15338134765625 + + NeckLow + + 245.6131591796875 + 403.88494873046875 + + NeckTop + + 242.60362243652344 + 358.83798217773438 + + NoseBridgeBottom + + 239.90568542480469 + 245.16691589355469 + + NoseBridgeMiddle + + 239.65853881835937 + 235.88735961914063 + + NoseBridgeTop + + 239.62541198730469 + 227.05958557128906 + + NoseBtwEyes + + 238.85337829589844 + 216.07688903808594 + + NoseBtwNostrils + + 240.51435852050781 + 273.08935546875 + + NoseEyeLeft + + 226.2803955078125 + 235.1380615234375 + + NoseEyeRight + + 254.16842651367187 + 234.33689880371094 + + NoseSideLeft + + 224.42424011230469 + 243.18354797363281 + + NoseSideRight + + 255.69680786132812 + 242.39176940917969 + + NoseTip + + 240.49862670898437 + 257.84054565429687 + + NostrilLeftBottom + + 222.45156860351562 + 273.07192993164062 + + NostrilLeftFaceTop + + 220.78668212890625 + 253.416015625 + + NostrilLeftHoleBottom + + 232.099365234375 + 270.42727661132812 + + NostrilLeftSide + + 216.42477416992187 + 266.03170776367188 + + NostrilLeftTop + + 227.66554260253906 + 262.91015625 + + NostrilRightBottom + + 259.85479736328125 + 271.99468994140625 + + NostrilRightFaceTop + + 259.67559814453125 + 252.09965515136719 + + NostrilRightHoleBottom + + 249.16838073730469 + 270.07522583007812 + + NostrilRightSide + + 264.6011962890625 + 264.77520751953125 + + NostrilRightTop + + 253.67153930664062 + 262.56396484375 + + RightEarCurveBottom + + 331.86907958984375 + 280.77679443359375 + + RightEarCurveMiddle + + 336.43472290039062 + 254.06796264648437 + + RightEarCurveTop + + 339.08047485351563 + 222.67178344726562 + + RightEarFaceBottom + + 318.53140258789062 + 297.89111328125 + + RightEarFaceBottomProject + + 314.89010620117187 + 300.41622924804687 + + RightEarFaceTop + + 326.24423217773437 + 235.65779113769531 + + RightEarLobe + + 320.7420654296875 + 300.3572998046875 + + RightEarTragus + + 325.28134155273437 + 261.58572387695312 + + RightEyeBelow + + 273.30902099609375 + 238.53373718261719 + + RightEyeCenter + + 276.14047241210937 + 221.34526062011719 + + RightEyeCornerLeft + + 260.71697998046875 + 223.43180847167969 + + RightEyeCornerRight + + 288.41558837890625 + 222.62081909179687 + + RightEyeMiddleBottom + + 275.4935302734375 + 226.5379638671875 + + RightEyeMiddleTop + + 277.39938354492188 + 216.306884765625 + + RightEyebrowLeft + + 252.79605102539062 + 204.13064575195312 + + RightEyebrowLeftBrow + + 254.41049194335938 + 186.27468872070312 + + RightEyebrowLeftLow + + 257.45651245117187 + 211.12767028808594 + + RightEyebrowMiddle + + 280.5396728515625 + 197.99244689941406 + + RightEyebrowMiddleBrow + + 278.50283813476562 + 187.89791870117187 + + RightEyebrowMiddleLow + + 280.24514770507812 + 206.79135131835937 + + RightEyebrowRight + + 300.13275146484375 + 207.3221435546875 + + RightEyebrowRightBrow + + 302.48886108398437 + 199.85472106933594 + + RightEyebrowRightLow + + 295.00088500976562 + 214.64677429199219 + + RightJawChin + + 261.39862060546875 + 334.857666015625 + + RightJawCorner + + 304.62783813476562 + 324.62869262695312 + + RightJawMiddle + + 288.05953979492187 + 332.51931762695312 + + UpperLip + + 240.17979431152344 + 281.90060424804687 + + + PrimaryFaceBottom + 361 + PrimaryFaceLeft + 297 + PrimaryFaceRight + 529 + PrimaryFaceScore + 0.0 + PrimaryFaceTop + 129 + PrimaryHeadCloseToBoundary + 0 + PrimaryHeadFound + 1 + PrimaryLeftEyeCornerLeftX + 346.61849975585937 + PrimaryLeftEyeCornerLeftY + 225.55491638183594 + PrimaryLeftEyeCornerRightX + 373.43930053710937 + PrimaryLeftEyeCornerRightY + 225.55491638183594 + PrimaryLeftEyeX + 360.02890014648437 + PrimaryLeftEyeY + 224.2138671875 + PrimaryNoseTipX + 0.0 + PrimaryNoseTipY + 480 + PrimaryPixelsBetweenEyes + 70.34307861328125 + PrimaryRightEyeCornerLeftX + 416.35260009765625 + PrimaryRightEyeCornerLeftY + 224.2138671875 + PrimaryRightEyeCornerRightX + 443.82125854492187 + PrimaryRightEyeCornerRightY + 223.14492797851562 + PrimaryRightEyeX + 430.37197875976562 + PrimaryRightEyeY + 222.02415466308594 + PrimarySaliency + 1332 + RigidPoseX + 9.4970922470092773 + RigidPoseY + -0.28716075420379639 + RigidPoseZ + -1.4265331029891968 + RigidTranslationX + -0.00088575156405568123 + RigidTranslationY + 0.010921388864517212 + RigidTranslationZ + -0.77471178770065308 + + + + diff --git a/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/test.plist b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/test.plist new file mode 100644 index 0000000..92c45e1 --- /dev/null +++ b/BinaryPlist/BinaryPlist/bin/Debug/oldPlists/test.plist @@ -0,0 +1,76 @@ +01100010 01110000 01101100 01101001 01110011 01110100 00110000 00110000 11010100 00000001 00000010 00000011 00000100 00000101 00000110 00000111 +00001010 01011001 01101111 01110000 01100101 01110010 01100001 01110100 01101001 01101111 01101110 01011010 01110000 01100001 01110010 01100001 +01101101 01100101 01110100 01100101 01110010 01110011 01010101 01101001 01101101 01100001 01100111 01100101 01010111 01101101 01111001 01000001 +01110010 01110010 01100001 01111001 00010000 00000000 01011011 01101000 01100101 01101100 01101100 01101111 00100000 01110100 01101000 01100101 +01110010 01100101 11010001 00001000 00001001 01010100 01100100 01100001 01110100 01100001 01011111 00010001 00000100 00101010 00001010 00001001 +00001001 01101001 01010110 01000010 01001111 01010010 01110111 00110000 01001011 01000111 01100111 01101111 01000001 01000001 01000001 01000001 +01001110 01010011 01010101 01101000 01000101 01010101 01100111 01000001 01000001 01000001 01000010 00110100 01000001 01000001 01000001 01000001 +01100101 01000011 01000001 01011001 01000001 01000001 01000001 01000001 00110111 01001101 01001011 00110110 01101001 01000001 01000001 01000001 +01000001 01000010 01000111 01100100 01000010 01010100 01010101 01000101 01000001 01000001 01001011 00101111 01001001 00001010 00001001 00001001 +01001110 01110111 01010111 01001011 00110110 01010001 01000001 01000001 01000001 01000010 01101100 00110000 01010010 01010110 01101000 00110000 +01010101 00110010 00111001 01101101 01100100 01001000 01100100 01101000 01100011 01101101 01010101 01000001 01010001 01010111 01010010 01110110 +01011001 01101101 01010101 01100111 01010011 01010111 00110001 01101000 01011010 00110010 01010110 01010011 01011010 01010111 01000110 01101011 +01100101 01011000 01001000 01001010 01011010 01010100 01110111 01000001 01000001 01000001 01001011 01001010 00001010 00001001 00001001 01010011 +01010101 01010010 01000010 01010110 01001000 01101010 01100001 01110110 01001010 01011010 01001010 01100001 01000010 01010110 01000010 01000101 +01001001 01011010 01101110 01011001 01101110 01111001 00101011 01001100 01001101 01100001 01101111 01010010 01000101 00111001 01110101 01001011 +01000101 01010100 01001001 01111000 01100001 01000011 01101111 01110101 01000110 00110101 01100011 00110000 01001001 01001101 01101001 01000011 +01000011 01000101 01001000 01010001 01100100 01000001 01010001 00111000 01000011 01100111 01101101 00001010 00001001 00001001 01101000 00111001 +01111010 01101001 01010011 01010010 01010001 01110110 01000011 01101100 00110100 00111000 01000011 01001000 01101111 01010001 01010000 01000011 +01101100 01000010 01001101 01001100 01100111 01100111 00111000 01110010 01111000 01101111 01100111 01101101 01000001 01001101 01100010 01101111 +01101101 01001001 01001001 01000111 00110101 01111000 01110110 01010010 01101001 01010100 01110000 00101011 01001110 01100110 00111000 01000001 +00111000 01010101 01100010 01011000 01100110 01010000 00111000 01101000 00110100 01010111 00001010 00001001 00001001 01100110 01001011 01010010 +01100110 01110000 00110010 01100110 00101011 01101110 01110101 01110001 01110001 00110110 01100111 01110001 01101010 01001011 01000001 01110000 +01110011 01000110 01101111 01011010 01101000 00110100 01001100 01000001 00110001 01011001 01000001 01010110 01011001 01000011 01010010 01100001 +01000100 01000100 00101011 01000001 01001111 01110101 01000001 01110101 01101101 01100010 01010001 00111001 01011001 01001110 01010111 01010100 +01010011 01101000 01110011 01011000 01100001 01110111 01000011 00110001 00110101 00001010 00001001 00001001 01111000 01001101 01000101 01010001 +00110110 01001000 01000001 01001010 00101111 00101111 01010000 00101011 01101100 01001101 01001011 00110111 01110111 01000011 01100101 01010000 +01110001 01001111 01011010 01101011 01000111 01110101 01000101 01110111 01101000 01100001 01110100 00110011 01100111 01000101 01000111 01001111 +00110011 00110100 01000010 01101110 00110100 01000011 01000101 01101111 01100111 00110011 01100001 01110111 01111000 00101111 01001010 00110100 +01001100 01111010 01101000 01010110 01101001 01100001 01110110 01101110 00001010 00001001 00001001 01100111 01011000 01100100 01100111 01001000 +01001000 01010011 01000011 01000010 01101111 01110110 01001001 01001110 01101010 01000010 01101001 01100110 01001000 01010111 01011010 00111000 +00110111 01101100 01100100 01100110 01011010 01110010 01000011 01001100 01011001 01001000 01100110 01101100 01101111 01000011 01011000 01101000 +01110110 01100111 01010100 01010101 01001101 01110111 01101010 01011000 01001011 01010100 01101111 01100111 01010011 01000011 01100100 01110010 +01010001 01011000 01110110 01000100 01100110 01001000 01001110 00001010 00001001 00001001 01100101 01011001 01010001 00110011 01100111 01101010 +00111001 01100111 01010101 01011010 01000100 01100101 01101010 01101000 01101110 01000011 01001010 00110001 01111010 01000011 01001110 01011010 +00110110 01011000 01110010 01001111 01010000 01011010 01100110 01100011 01110111 01100111 01100110 01001110 00110011 01001001 00110101 01010011 +00110010 01110101 01101000 01010100 00110101 01101000 01001011 01010010 01001100 01100100 00110100 01000110 01100011 01000111 00110100 01010101 +00110011 01000111 01100010 01111001 01101011 01110111 00001010 00001001 00001001 01101010 01010110 01101101 01000110 01101101 00111000 01000001 +01001100 01001101 01001010 01110110 01010110 01010011 01101100 01110101 01000100 01011001 00110110 01001110 01101110 01110111 01000101 01110111 +00110001 01001110 01110111 01010000 01010101 01011010 01111000 01010111 01010111 01101100 01001110 01100111 01001100 01001010 01110011 01000110 +01010010 00110000 01001101 01111010 00110101 01100111 00101011 01000011 01010001 01110000 01001100 01110001 01111000 01100110 01101110 01100011 +01100011 01111000 01100010 01010010 00110111 00001010 00001001 00001001 01101111 01000001 01010010 01100001 01110011 01110111 01101111 01011000 +01110111 01000111 01110010 01110101 01100101 01110000 01011010 01111001 01110101 01100001 01010100 01001010 01001101 01001001 01001110 01001000 +00110010 00110100 01100111 01100001 01010011 00111001 00110110 01100110 01011001 01111000 00110001 01110110 01110100 00110111 00110010 00111000 +01001110 01101001 01000101 00110011 01010010 01111000 01101110 01100100 01101010 00111000 01000010 01010000 01111010 01100111 00111000 00110101 +00110001 01101101 01110011 01010000 00001010 00001001 00001001 01000100 01010000 01000100 01110110 01011010 01010100 01000011 01010110 00111001 +01011001 01110100 01100010 01100101 01010110 00110100 00110111 01110111 01011001 00110000 01010101 01100111 01010110 01010110 01010111 00110100 +00110001 01100110 01100111 01001111 01011010 01100111 01000001 01010000 00110111 01001001 01001011 01100110 00110110 01001101 00110111 01111000 +01111010 01111000 01100110 01110001 01010111 00110010 01110000 01000111 01110000 01100110 01101111 01111010 01010011 01010000 01100011 01010010 +01000011 01100010 01101000 00001010 00001001 00001001 01000101 01101110 01100101 00111001 01001000 01010110 01111010 01101000 01000100 01010110 +01010111 01100010 01101011 01010000 01100101 01111000 00111001 01010100 01000011 01001110 01000010 01101100 00110001 00110011 01110100 01001011 +00111001 01111001 01100100 01011001 01000101 01001000 00110100 01000100 00110100 01001100 01100110 01110011 01000101 01010011 01111001 01100100 +01110000 01110101 01000111 01101100 01010111 01110010 01001101 00101011 00111000 01101100 00110000 01100011 01011001 01011000 01110110 01001000 +01100010 01101100 00001010 00001001 00001001 01101111 01101101 01001000 01001000 01101100 01100001 01100111 01000101 00110100 01101010 01001011 +01100110 01110011 01001101 00101111 01010110 00110100 01111000 01010010 01100100 01010011 01001110 01100110 01000110 01101000 01100001 01010100 +01100111 01010111 01000110 00101011 01101110 01111000 01101000 01001110 01001010 01110000 01100100 01011001 01101110 01010000 01001101 01101011 +01101001 01001001 01000100 01101110 00111000 01101100 01101000 01100110 01000111 01011001 00111000 01100101 01011010 01111001 01100001 01100010 +00110010 00001010 00001001 00001001 01000111 01011010 01010111 01110100 01001101 01100001 00101011 01110111 00110010 01000001 01010111 01100101 +00110110 01110111 01001001 01010111 01101011 01101001 01101100 01001100 00110100 01011010 01100111 01010000 01110010 01101111 01001100 01101100 +01100001 01101101 00110100 01110101 01010011 00110110 01101010 01100010 01000101 01101000 01110001 01000010 01000111 01100111 01100010 01011001 +01010110 01110011 01100110 01101010 00110110 00110001 01010101 01010110 01101001 00110011 01100111 01100110 01011000 01110111 01001100 01100110 +00001010 00001001 00001001 01010001 01011000 00101011 01101100 01111010 01100100 00110100 01000111 01100011 01001010 01000110 01011000 01011000 +01000001 01110110 01100010 01001001 01010101 01101101 01111000 01100001 00111000 01101111 01000100 01110111 01101110 01101110 01000111 01010001 +00111000 01000100 00110000 01000111 00110110 00110001 01000111 01101100 00110111 01101011 01001011 01001000 01000111 01100001 01101010 00111001 +00111001 01101100 01001001 01101101 00110110 01100110 00111000 01101110 00110111 01100010 00111001 01001100 01000100 01111000 01101000 00001010 +00001001 00001001 01110000 01100011 01001011 00110110 01000010 01101011 01100011 01001101 01110110 01001100 01001110 01110011 01101001 00110100 +01110001 01010111 01100100 01011000 01001001 01010000 00111001 00110001 01011000 01101010 01101001 00110010 01010000 01110010 01101111 00101111 +01000100 01110100 01101000 01001011 01000001 01001101 01100100 01100010 01000111 01110000 01101000 01110010 01000010 01100011 01100011 01100010 +00101111 01000010 01000110 01111010 01011010 00110011 01110001 01100001 01110111 01100001 01110111 01100111 01000110 01001100 00001010 00001001 +00001001 00110100 01010110 01100100 00110010 01101111 01010000 01011000 00101111 01010101 01111010 01100111 00101011 01010001 00101011 01101100 +01001011 00110101 01110101 01010001 01010110 00101111 01101001 01110110 01000001 01000001 01001011 00110111 00110101 01110100 01110111 01111001 +01010101 00110101 01010010 00110000 01010010 01000001 01000001 01000001 01000001 01000001 01000101 01101100 01000110 01010100 01101011 01010011 +01110101 01010001 01101101 01000011 01000011 00001010 00001001 00001001 10100001 00001011 01010001 00110100 00000000 00001000 00000000 00010001 +00000000 00011011 00000000 00100110 00000000 00101100 00000000 00110100 00000000 00110110 00000000 01000010 00000000 01000101 00000000 01001010 +00000100 01111000 00000100 01111010 00000000 00000000 00000000 00000000 00000000 00000000 00000010 00000001 00000000 00000000 00000000 00000000 +00000000 00000000 00000000 00001100 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 +00000000 00000000 00000100 01111100 diff --git a/BinaryPlist/BinaryPlist/bin/Debug/xmlTest.plist b/BinaryPlist/BinaryPlist/bin/Debug/xmlTest.plist new file mode 100644 index 0000000..87dc2f0 --- /dev/null +++ b/BinaryPlist/BinaryPlist/bin/Debug/xmlTest.plist @@ -0,0 +1,10 @@ + + + + + Integer + 1 + String + This is a string + + diff --git a/BinaryPlist/BinaryPlist/obj/x86/Debug/BinaryPlist.csproj.FileListAbsolute.txt b/BinaryPlist/BinaryPlist/obj/x86/Debug/BinaryPlist.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..1c817e0 --- /dev/null +++ b/BinaryPlist/BinaryPlist/obj/x86/Debug/BinaryPlist.csproj.FileListAbsolute.txt @@ -0,0 +1,5 @@ +C:\Users\mark\BinaryPlists\BinaryPlist\BinaryPlist\bin\Debug\BinaryPlist.exe +C:\Users\mark\BinaryPlists\BinaryPlist\BinaryPlist\bin\Debug\BinaryPlist.pdb +C:\Users\mark\BinaryPlists\BinaryPlist\BinaryPlist\obj\x86\Debug\ResolveAssemblyReference.cache +C:\Users\mark\BinaryPlists\BinaryPlist\BinaryPlist\obj\x86\Debug\BinaryPlist.exe +C:\Users\mark\BinaryPlists\BinaryPlist\BinaryPlist\obj\x86\Debug\BinaryPlist.pdb diff --git a/BinaryPlist/BinaryPlist/obj/x86/Debug/BinaryPlist.exe b/BinaryPlist/BinaryPlist/obj/x86/Debug/BinaryPlist.exe new file mode 100644 index 0000000000000000000000000000000000000000..120b1a497e752d66ecf58415739b5c7ea01648b7 GIT binary patch literal 17920 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 literal 0 HcmV?d00001 diff --git a/BinaryPlist/BinaryPlist/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/BinaryPlist/BinaryPlist/obj/x86/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..a74a329f6511df885dae380d53fb364c3d386360 GIT binary patch literal 5869 zcmeHLZBH9V5VpZwFoZUyDM_G7E^69_$~xf!0V44s*wCOR5wcxc30q`+H#QsAd(Q42 z;39wO59u$c`V-rkvwdJfXe-%>4_?H0Z(rtZ=XRc(SUeVs{f&)&sofqy;=SRn^0i+z z&Mwyh69p4^+;_5mz3$8H+-BO|1*N$!*E0)F_?Nb`fiQuBbqRq{Or-6dpdz^Y6Eutd zA;|U0!eVu~x>C(#yyXS9$i_(I>L(;^1YCF|Z(ABre&ZL#8VyiRo~dow2#lV=%@3Fm z{xNtjwT5~{G&fHSNYYAA;p(g}tGu?w1;YZ`=ci95%)aHVkIj+DpzT%+oG(5vp0hn?Rc9=QPlMUrp(II5Sw1OJfMm5jo zlW2zl^4KiyJ8%0rrZX3&-uRLqf_ifKaE|MSU`-NuabqX0=Gq%~l<$JpzIutua)Tyd zgmt!nmk*@jb?9ul$f@lVZH-u?mKBSQAdSc4^pEt9u|iWDsAGuX8M%gn#`zH>DDFD1 z(F5-?dwW+b!KmJ4B7hyn)w>^}r3It7tflR`c6}vyV)$_iU{m!D_W7MEaQ zb*-GfN{<_=>LC13?yp;KIJ!D!6j489f7yFKL60u_bcy9C#%m(Ij96Rq#E;b5tB(C zv@eb#ppb_uD3F+h9GAHVko=5n_#DZ6uYO%T6zYj-ixTR3$JRTz{4p)JBYW&6yFF=l z)>}SYzz7*MHcl?Q<;GEwh9eYopM2ZkUvaHlr{%n_%EgUe_2-Ufd zvgP1qcXMng^8w2IFnE~}B2W;Dokg*~$FEIpjv3|!5emJpP^`E% z`$^(Ml-Rg7iNDrG=-x*tHMmx(uetm{q7!tj4za)>()ADv^y?d?Oj*g=$1k+H9^2Ra zHyGbPYF7ww=C4F_Z+`r-HT;sI+Q=tA`UVmAHyoz!mB+`Ek1?RSEk&S`szsKKB;WsQ zI7NUp6z~K)i7hPi#0f@)h_*))0<+XoA)v*M^)-_Fr`by@OfBmv&Q71c;?hv5WlLc} z3*V8J^$m{Co)#~!r!-sEw>aMqc>EpmnL5q0V*-FwZ)sW2aA+NU_|h06|FP7w$W o-8GLL*8lUk05ekre5u_E&w?aV8~t;5ul!rhb$G8tb+q#2KM)h9;Q#;t literal 0 HcmV?d00001 diff --git a/BinaryPlist/BinaryPlist/obj/x86/Debug/ResolveAssemblyReference.cache b/BinaryPlist/BinaryPlist/obj/x86/Debug/ResolveAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..56c1da216967a9e2004fd617e6e91950750df274 GIT binary patch literal 6016 zcmc&%Yitx%6rR~`w>#UVTV4wCa1lh1vfBdXQE0F%G*nu|E~3$eb-H`E9hjXdGqZ(~ z2u(0CJ~6xuBr1vVg$W>keEk7!{Gs?m5==-m(L^H}66L2DqUXCi`xqD%YguQrXYZLi zd%p9Xd+#}C1W^!#Kj^|QuAqm+<}M{==%${rBCB$WnvQIg&2466U{R#8A-sthrlM=D zq~OyKj^$JC)Vt7i*C@SMx)zth{B&Mq>OIhTB8CffveU{v#GB_<&k?=zN?V~mHK%i5X z)9rG~(v2FMjz6Yn`(=X}^)MRK(`|$PGWcoJAYL1zLP*o*VSJ(R8 zusRC1X1Vy>afAKK4=!C9fLDRBBqc9IHHmtR{PgwtNNkU_B*>*+L(YcVDJo`o&d#Na z=O(&Yh8avtv2dGdvMfcOnTcX>6Ycao+o2oV5|Q<5HkLH3CF~) z$6+)cVgkfO64iKaUdjFPd|Z|+=OHEVLnpnO9$nAUKm_YnIM>E{Y*7oDHCFWL+92? zx6wEd2#8<_8pVm*?Fle4YFcPEZE?^qowpHs$vcLlI^P8 zYlgU?(*MPp8bPe$SB=Nxud_FU?M1V#5?Ds*%^5P9H4Wr^wr zYAbHmAKQON1Y7{h^DGaK#}}d1t1ZG9Op4MCsgcAU`udtk45HI*iAJNbmZ(b~9d+xY zqs9FmEq2aPM;{$U9}Ro39?kdB(K1I+^Q8p@@BM;avPKqTya?3{;I$)}6#U*HIx*+S z7!1;k5b%CZqyH3SCjvC@XJqqcV(VLOuEAyPiE6`CL#ACrdAf}(hq28c8kbloC_aOwP0ePnMWU_meKI zBf&{_(qQNRLJ}+4Md;#bo04~kly@EcPL=aJ>EMTg&G~iHz?bJI#c3>UB*D2oL<6hh z+`wxSA&YO9^Lop{>&nO+Hoe@gIVHN z8h-d&w3O^-0}5Wd=n273SHUoJTp`pecW4wb2egQC!Ye)fmR}*119u~+5l$nk>5i)r zq+53*$iYq{NQbUQkk{OeAlW&MAosW$LAG!=f)wI3f|KiN1PAXJeLcb~YBq)h;UFnK ztT5@_@wO&`)NDeFY*ILT=D?z^N6#M!AvvKLMk%ER+BM literal 0 HcmV?d00001 diff --git a/BinaryPlist/Local.testsettings b/BinaryPlist/Local.testsettings new file mode 100644 index 0000000..31b2fe8 --- /dev/null +++ b/BinaryPlist/Local.testsettings @@ -0,0 +1,10 @@ + + + These are default test settings for a local test run. + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_29_20.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_29_20.trx new file mode 100644 index 0000000..bcc1411 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_29_20.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_30_53.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_30_53.trx new file mode 100644 index 0000000..94b91c2 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_30_53.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_31_27.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_31_27.trx new file mode 100644 index 0000000..7990238 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_31_27.trx @@ -0,0 +1,38 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + Test host process exited unexpectedly. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_31_27/Out/AgentRestart.dat b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_31_27/Out/AgentRestart.dat new file mode 100644 index 0000000000000000000000000000000000000000..b01b4f7384819c13692fb37b60f6ee2cb85c68c0 GIT binary patch literal 344 zcmZ`!OHRWu5Df#UMPb1aa)2mG)K*zzyIwX#Ox94B!{#d3*mdK53rc>+#e4?KMi$FJZ!H AC;$Ke literal 0 HcmV?d00001 diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_33_35.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_33_35.trx new file mode 100644 index 0000000..8b81ca1 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_33_35.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_34_35.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_34_35.trx new file mode 100644 index 0000000..04da282 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_34_35.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_37_00.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_37_00.trx new file mode 100644 index 0000000..0ce417a --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_37_00.trx @@ -0,0 +1,38 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + Test host process exited unexpectedly. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_37_00/Out/AgentRestart.dat b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_37_00/Out/AgentRestart.dat new file mode 100644 index 0000000000000000000000000000000000000000..f4d38488616c761f661c47187670d6abf6274559 GIT binary patch literal 344 zcmZ`!%}T>S5RPLdfq3u{0$xK%2&JbSB%l-#wJp7l`I)WTZnBcyJ@g@b3_*_`eIYOU z3ZlFIKrem+Gs8FE@XdI8p67j9xax2SHmM8V3{pv^lOb<`04I!!Lrj + + + These are default test settings for a local test run. + + + + + + + + + + + + + Test host process exited unexpectedly. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_39_35/Out/AgentRestart.dat b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_39_35/Out/AgentRestart.dat new file mode 100644 index 0000000000000000000000000000000000000000..81066079e590ed289b67ecf5f3f30ec12e018bc8 GIT binary patch literal 344 zcmZ`!%}T>S5RRjgLIr(_RuHr#qFPPP}^uWz_2n|vh3Vj_xyjq`d` zABGDi{}?a0r5)EF?^{pShGt6WaCF?Gacag+dL%!wQ{CTpoH*N$hV!i@-e;AQY!I{u zAO7WCcIZjK8n6Lu0U00%6o4zhJ3tAz2Hbef9|my@zc_w4i{BpKtLIm$PM_kJAQ^rE DbO~t> literal 0 HcmV?d00001 diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_41_19.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_41_19.trx new file mode 100644 index 0000000..8e7b379 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_41_19.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_41_29.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_41_29.trx new file mode 100644 index 0000000..b0cbd25 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_41_29.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_42_45.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_42_45.trx new file mode 100644 index 0000000..a3b0d79 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_42_45.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_43_01.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_43_01.trx new file mode 100644 index 0000000..533c423 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_43_01.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_44_00.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_44_00.trx new file mode 100644 index 0000000..78346ee --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_44_00.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_53_45.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_53_45.trx new file mode 100644 index 0000000..00dc121 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_53_45.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_54_13.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_54_13.trx new file mode 100644 index 0000000..c51bb90 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_54_13.trx @@ -0,0 +1,38 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + Test host process exited unexpectedly. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_54_13/Out/AgentRestart.dat b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_54_13/Out/AgentRestart.dat new file mode 100644 index 0000000000000000000000000000000000000000..2d9f0870f051ea2278a6506e3a3cf452d1e6a969 GIT binary patch literal 344 zcmZ`!O-sW-5RIdfVm$QdF+ZS$gi>|t<(SF$LkYso3wwqnq51}_t9{d%a{R{p! z(Oo~F7vI3l@a7F~COU|s=+h(AfK%|vT=PyVqnOQB+_*+8tRq}yGv9K%TPh_?cD|<4 z-n1Lq*-^Tp+HfVSBG0~Kl-5pIr)edrv$_$Z^wzb4cURP}Z>g->e9R`SWJN(Hc{6T~ z!v*C(#!G7Kp6ieI+>?#AQ^`~~I_^ C5oa&} literal 0 HcmV?d00001 diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_55_26.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_55_26.trx new file mode 100644 index 0000000..9167a6f --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_55_26.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_56_33.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_56_33.trx new file mode 100644 index 0000000..3add484 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_56_33.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_58_07.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_58_07.trx new file mode 100644 index 0000000..34e314b --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_58_07.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_58_44.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_58_44.trx new file mode 100644 index 0000000..3c990e3 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_58_44.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_59_58.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_59_58.trx new file mode 100644 index 0000000..32fc1b0 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 16_59_58.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_07.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_07.trx new file mode 100644 index 0000000..fff048b --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_07.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_33.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_33.trx new file mode 100644 index 0000000..172f5d8 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_33.trx @@ -0,0 +1,38 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + Test host process exited unexpectedly. + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_33/Out/AgentRestart.dat b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_03_33/Out/AgentRestart.dat new file mode 100644 index 0000000000000000000000000000000000000000..d5e748d8d9772620ff1fae91ae869e80f65f77f7 GIT binary patch literal 344 zcmZ`!T}s115RRjgLVWNDIY0;rrS>TgQbdYK)t34=Y_hv`lTB9k=b?A-!2@^-kKj!_ zfJczJ>kstBZ(wHl<{Q45=pc%sokyqvC*YI07L8U$ahtD&aYQbyqeA7kz7=-6Qc9Zq ze8UF2s9V<9EL}5ggc_={$iE{?XHHtDSv4?cHIZ3*<7z3IE9TcbHdJ*n<`X{UWl1Lm z8I$91!So;F6*G3v^~d|plSJG3z*RUp?oqp8PEUKZeqv^-f0WEJdKe|kt+A}nFP)&H zpgsEZFYmL7Cjkjy4cGuuKnBPGH-Ha-07?W5gwPp?6e Fd;xb{X|w + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_06_37.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_06_37.trx new file mode 100644 index 0000000..70cc256 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_06_37.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_07_59.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_07_59.trx new file mode 100644 index 0000000..910c899 --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_07_59.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_08_45.trx b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_08_45.trx new file mode 100644 index 0000000..326c19c --- /dev/null +++ b/BinaryPlist/TestResults/Mark_ANIMETRICSPC07 2011-10-05 17_08_45.trx @@ -0,0 +1,33 @@ + + + + These are default test settings for a local test run. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/Testing/.svn/entries b/BinaryPlist/Testing/.svn/entries new file mode 100644 index 0000000..0ec39fc --- /dev/null +++ b/BinaryPlist/Testing/.svn/entries @@ -0,0 +1,51 @@ +10 + +dir +0 +https://insovertgames.blogsite.org/svn/insovert/BinaryPlist/trunk/Testing +https://insovertgames.blogsite.org/svn/insovert +add + + + + + + + + + + + + + + + + + + + +6c5e26bf-2db1-2545-b2e2-0c82a69ca2e6 + +Plist.cs +file + + + +add + +662c041643e1d75d51239734607037ae + + + + + + + + + + + +copied +https://insovertgames.blogsite.org/svn/insovert/BinaryPlist/trunk/BinaryPlist/Plist.cs +74 + diff --git a/BinaryPlist/Testing/.svn/text-base/Plist.cs.svn-base b/BinaryPlist/Testing/.svn/text-base/Plist.cs.svn-base new file mode 100644 index 0000000..deffb4c --- /dev/null +++ b/BinaryPlist/Testing/.svn/text-base/Plist.cs.svn-base @@ -0,0 +1,378 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Xml; +using System.IO; + +public static class Plist +{ + #region Public Functions + + public static string readStringFromXmlFile(string file) + { + return Plist.readDictionaryString((Dictionary)Plist.readPlistFromXmlFile(file), 0); + } + + public static string readStringFromXmlFile(Dictionary dictionary) + { + return Plist.readDictionaryString(dictionary, 0); + } + + public static object readPlistFromXmlFile(string path) + { + XmlDocument doc = new XmlDocument(); + doc.Load(path); + return readPlistFromXmlDocument(doc); + } + + public static object readPlistFromXmlString(string plist) + { + XmlDocument doc = new XmlDocument(); + doc.LoadXml(plist); + return readPlistFromXmlDocument(doc); + } + + public static object readPlistFromXmlDocument(XmlDocument doc) + { + XmlNode rootNode = doc.DocumentElement.ChildNodes[0]; + // if(rootNode.Name != "dict") + // throw new ApplicationException("Sorry, only dictionary plists supported."); + + return parse(rootNode); + } + + public static string writeXmlFromDictionary(Dictionary dictionary) + { + TextWriter stringWriter = new StringWriter(); + writeXmlFromDictionary(dictionary, stringWriter); + return stringWriter.ToString(); + } + + public static void writeXmlFromDictionary(Dictionary dictionary, string filename) + { + TextWriter fileWriter = new StreamWriter(filename); + writeXmlFromDictionary(dictionary, fileWriter); + } + + public static void writeXmlFromDictionary(Dictionary dictionary, TextWriter textWriter) + { + XmlTextWriter writer = new XmlTextWriter(textWriter); + writer.Formatting = Formatting.Indented; + writer.WriteStartDocument(); + writer.WriteComment("DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" " + "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\""); + writer.WriteStartElement("plist"); + writer.WriteAttributeString("version", "1.0"); + writeDictionaryValues(dictionary, writer); + writer.WriteEndElement(); + writer.WriteEndDocument(); + writer.Close(); + } + + public static void writeBinaryFromPlistFile(string path, string destination) + { + Dictionary dictionary = (Dictionary)readPlistFromXmlFile(path); + writeBinaryFromDictionary(dictionary, destination); + } + + public static void writeBinaryFromPlistString(string plist, string destination) + { + Dictionary dictionary = (Dictionary)readPlistFromXmlString(plist); + writeBinaryFromDictionary(dictionary, destination); + } + + public static void writeBinaryFromDictionary(Dictionary dictionary, string path) + { + BinaryWriter writer = new BinaryWriter(File.Open(path,FileMode.OpenOrCreate)); + + string header = "bplist00"; + + byte[] bytes = new byte[header.Count()]; + + for(int i = 0; i < header.Count(); i++) + { + bytes[i] = Convert.ToByte(header[i]); + } + + writer.BaseStream.Write(bytes, 0, header.Count()); + + writeBinaryPlist(dictionary, writer); + + writer.Close(); + } + + #endregion + + #region Private Functions + + private static Dictionary parseDictionary(XmlNode node) + { + XmlNodeList children = node.ChildNodes; + if (children.Count % 2 != 0) + { + throw new DataMisalignedException("Dictionary elements must have an even number of child nodes"); + } + + Dictionary dict = new Dictionary(); + + for (int i = 0; i < children.Count; i += 2) + { + XmlNode keynode = children[i]; + XmlNode valnode = children[i + 1]; + + if (keynode.Name != "key") + { + throw new ApplicationException("expected a key node"); + } + + object result = parse(valnode); + + if (result != null) + { + dict.Add(keynode.InnerText, result); + } + } + + return dict; + } + + private static List parseArray(XmlNode node) + { + List array = new List(); + + foreach (XmlNode child in node.ChildNodes) + { + object result = parse(child); + if (result != null) + { + array.Add(result); + } + } + + return array; + } + + private static void composeArray(List value, XmlTextWriter writer) + { + writer.WriteStartElement("array"); + foreach (object obj in value) + { + compose(obj, writer); + } + writer.WriteEndElement(); + } + + private static object parse(XmlNode node) + { + switch (node.Name) + { + case "dict": + return parseDictionary(node); + case "array": + return parseArray(node); + case "string": + return node.InnerText; + case "integer": + return Convert.ToInt32(node.InnerText); + case "real": + return Convert.ToDouble(node.InnerText); + case "false": + return false; + case "true": + return true; + case "data": + return Convert.FromBase64String(node.InnerText); + } + + throw new ApplicationException(String.Format("Plist Node `{0}' is not supported", node.Name)); + } + + private static void compose(object value, XmlTextWriter writer) + { + switch (value.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + writeDictionaryValues((Dictionary)value, writer); + break; + + case "System.Collections.Generic.List`1[System.Object]": + composeArray((List)value, writer); + break; + + case "System.Byte[]": + writer.WriteElementString("data", Convert.ToBase64String((Byte[])value)); + break; + + case "System.Double": + writer.WriteElementString("real", value.ToString()); + break; + + case "System.Int32": + writer.WriteElementString("integer", value.ToString()); + break; + + case "System.String": + writer.WriteElementString("string", value.ToString()); + break; + + default: + throw new Exception(String.Format("Value type '{0}' is unhandled", value.GetType().ToString())); + } + } + + private static void writeDictionaryValues(Dictionary dictionary, XmlTextWriter writer) + { + writer.WriteStartElement("dict"); + foreach (string key in dictionary.Keys) + { + object value = dictionary[key]; + writer.WriteElementString("key", key); + compose(value, writer); + } + writer.WriteEndElement(); + } + + private static void writeBinaryPlist(Dictionary dictionary, BinaryWriter writer) + { + if (dictionary.Count <= 15) + { + writer.Write(0xD0 | (byte)dictionary.Count); + } + else + { + writer.Write(0xD0 | 0xf); + writer.Write(dictionary.Count); + } + for (int i = dictionary.Keys.Count; i > 0; i--) + { + composeBinary(dictionary.Keys.ToArray()[i - 1], writer); + } + for (int i = dictionary.Keys.Count; i > 0; i--) + { + composeBinary(dictionary.Values.ToArray()[i-1], writer); + } + } + + private static void composeBinary(object obj, BinaryWriter writer) + { + switch (obj.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + writeBinaryPlist((Dictionary)obj, writer); + break; + + case "System.Collections.Generic.List`1[System.Object]": + composeBinaryArray((List)obj, writer); + break; + + case "System.Byte[]": + foreach (byte byt in (byte[])obj) + { + writer.BaseStream.WriteByte(byt); + } + break; + + case "System.Double": + writer.Write((double)obj); + break; + + case "System.Int32": + writer.Write((int)obj); + break; + + case "System.String": + if (obj.ToString().Length <= 15) + { + writer.Write(0x50 | obj.ToString().Length); + } + else + { + writer.Write(0x50 | 0xf); + writer.Write(obj.ToString().Length); + } + writer.Write(obj.ToString()); + break; + } + + } + + private static void composeBinaryArray(List objects, BinaryWriter writer) + { + if (objects.Count <= 15) + { + writer.Write(0xA | objects.Count); + } + else + { + writer.Write(0xA | 0xf); + writer.Write(objects.Count); + } + foreach (object obj in objects) + { + composeBinary(obj, writer); + } + } + + private static string readDictionaryString(Dictionary plistDict, int tab) + { + string outputValue = ""; + foreach (string key in plistDict.Keys) + { + object currentValue = plistDict[key]; + switch (currentValue.GetType().ToString()) + { + case "System.Collections.Generic.List`1[System.Object]": + { + List value = (List)currentValue; + outputValue += printTab(tab) + key + " = "; + for (int ii = 0; ii < value.Count; ii++) + { + outputValue += value[ii].ToString(); + if (ii != value.Count - 1) + outputValue += ", "; + } + outputValue += "\n"; + break; + } + case "System.Byte[]": + {/* + Byte[] value = (Byte[])currentValue; + outputValue += printTab(tab) + key + " = \n"; + for (int ii = 0; ii < value.Count(); ii++) + { + outputValue += value[ii].ToString(); + } + outputValue += "\n";*/ + outputValue += "Byte Data\n"; + break; + } + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + { + outputValue += "\n\n" + printTab(tab) + key + ": \n" + readDictionaryString((Dictionary)currentValue, tab + 5); + break; + } + default: + { + outputValue += printTab(tab) + key + " = " + currentValue.ToString(); + outputValue += "\n"; + break; + } + } + } + return outputValue; + } + + private static string printTab(int tab) + { + string spaces = ""; + for (int i = 0; i < tab; i++) + { + spaces += " "; + } + return spaces; + } + + #endregion +} + + + diff --git a/BinaryPlist/Testing/.svn/text-base/Program.cs.svn-base b/BinaryPlist/Testing/.svn/text-base/Program.cs.svn-base new file mode 100644 index 0000000..f40be90 --- /dev/null +++ b/BinaryPlist/Testing/.svn/text-base/Program.cs.svn-base @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace BinaryPlist +{ + class Program + { + static void Main(string[] args) + { + Plist.writeBinaryFromPlistFile("exampleXML.plist", "bplist.plist"); + } + } +} diff --git a/BinaryPlist/Testing/Plist.cs b/BinaryPlist/Testing/Plist.cs new file mode 100644 index 0000000..d328357 --- /dev/null +++ b/BinaryPlist/Testing/Plist.cs @@ -0,0 +1,889 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Xml; + +public static class Plist +{ + private static List offsetTable = new List(); + private static List objectTable = new List(); + private static int refCount; + private static int objRefSize; + private static int offsetByteSize; + private static long offsetTableOffset; + + #region Public Functions + + public static Dictionary readPlist(string path) + { + using (BinaryReader reader = new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read))) + { + long magicHeader = BitConverter.ToInt64(reader.ReadBytes(8), 0); + reader.BaseStream.Seek(0, SeekOrigin.Begin); + if (magicHeader == 3472403351741427810) + { + return readBinary(reader.ReadBytes((int)reader.BaseStream.Length)); + } + else + { + XmlDocument xml = new XmlDocument(); + xml.LoadXml(System.Text.Encoding.UTF8.GetString(reader.ReadBytes((int)reader.BaseStream.Length))); + return readXml(xml); + } + } + } + + public static Dictionary readPlist(Stream stream) + { + byte[] magicHeader = new byte[8]; + stream.Read(magicHeader, 0, 8); + stream.Seek(0, SeekOrigin.Begin); + if (BitConverter.ToInt64(magicHeader, 0) == 3472403351741427810) + { + using (BinaryReader reader = new BinaryReader(stream)) + { + byte[] data = reader.ReadBytes((int)reader.BaseStream.Length); + return readBinary(data); + } + } + else + { + XmlDocument xml = new XmlDocument(); + xml.Load(stream); + return readXml(xml); + } + } + + public static Dictionary readPlist(byte[] data) + { + List byteList = data.ToList(); + if (BitConverter.ToInt64(byteList.GetRange(0, 8).ToArray(), 0) == 3472403351741427810) + { + return readBinary(data); + } + else + { + XmlDocument xml = new XmlDocument(); + xml.LoadXml(System.Text.Encoding.UTF8.GetString(data)); + return readXml(xml); + } + } + + public static void writeXml(Dictionary dictionary, string path) + { + using (StreamWriter writer = new StreamWriter(path)) + { + writer.Write(writeXml(dictionary)); + } + } + + public static void writeXml(Dictionary dictionary, Stream stream) + { + using (StreamWriter writer = new StreamWriter(stream)) + { + writer.Write(writeXml(dictionary)); + } + } + + public static string writeXml(Dictionary dictionary) + { + using (MemoryStream ms = new MemoryStream()) + { + XmlWriterSettings xmlWriterSettings = new XmlWriterSettings(); + xmlWriterSettings.Encoding = new System.Text.UTF8Encoding(false); + xmlWriterSettings.ConformanceLevel = ConformanceLevel.Document; + xmlWriterSettings.Indent = true; + + using (XmlWriter xmlWriter = XmlWriter.Create(ms, xmlWriterSettings)) + { + xmlWriter.WriteStartDocument(); + xmlWriter.WriteComment("DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" " + "\"http://www.apple.com/DTDs/PropertyList-1.0.dtd\""); + xmlWriter.WriteStartElement("plist"); + xmlWriter.WriteAttributeString("version", "1.0"); + writeDictionaryValues(dictionary, xmlWriter); + xmlWriter.WriteEndElement(); + xmlWriter.WriteEndDocument(); + xmlWriter.Flush(); + xmlWriter.Close(); + return System.Text.Encoding.UTF8.GetString(ms.ToArray()); + } + } + } + + public static void writeBinary(Dictionary dictionary, string path) + { + using (BinaryWriter writer = new BinaryWriter(new FileStream(path, FileMode.Create))) + { + writer.Write(writeBinary(dictionary)); + } + } + + public static void writeBinary(Dictionary dictionary, Stream stream) + { + using (BinaryWriter writer = new BinaryWriter(stream)) + { + writer.Write(writeBinary(dictionary)); + } + } + + public static byte[] writeBinary(Dictionary dictionary) + { + offsetTable.Clear(); + objectTable.Clear(); + refCount = 0; + objRefSize = 0; + offsetByteSize = 0; + offsetTableOffset = 0; + + int totalRefs = countDictionary(dictionary); + + refCount = totalRefs; + + objRefSize = RegulateNullBytes(BitConverter.GetBytes(refCount)).Length; + + writeBinaryDictionary(dictionary); + + writeBinaryString("bplist00", false); + + offsetTableOffset = (long)objectTable.Count; + + offsetTable.Add(objectTable.Count - 8); + + offsetByteSize = RegulateNullBytes(BitConverter.GetBytes(offsetTable.Last())).Length; + + List offsetBytes = new List(); + + offsetTable.Reverse(); + + for (int i = 0; i < offsetTable.Count; i++) + { + offsetTable[i] = objectTable.Count - offsetTable[i]; + byte[] buffer = RegulateNullBytes(BitConverter.GetBytes(offsetTable[i]), offsetByteSize); + Array.Reverse(buffer); + offsetBytes.AddRange(buffer); + } + + objectTable.AddRange(offsetBytes); + + objectTable.AddRange(new byte[6]); + objectTable.Add(Convert.ToByte(offsetByteSize)); + objectTable.Add(Convert.ToByte(objRefSize)); + objectTable.AddRange(BitConverter.GetBytes((long)totalRefs + 1).Reverse()); + objectTable.AddRange(BitConverter.GetBytes((long)0)); + objectTable.AddRange(BitConverter.GetBytes(offsetTableOffset).Reverse()); + + return objectTable.ToArray(); + } + + #endregion + + #region Private Functions + + private static Dictionary readXml(XmlDocument xml) + { + XmlNode rootNode = xml.DocumentElement.ChildNodes[0]; + return (Dictionary)parse(rootNode); + } + + private static Dictionary readBinary(byte[] data) + { + offsetTable.Clear(); + List offsetTableBytes = new List(); + objectTable.Clear(); + refCount = 0; + objRefSize = 0; + offsetByteSize = 0; + offsetTableOffset = 0; + + List bList = data.ToList(); + + List trailer = bList.GetRange(bList.Count - 32, 32); + + parseTrailer(trailer); + + objectTable = bList.GetRange(0, (int)offsetTableOffset); + + offsetTableBytes = bList.GetRange((int)offsetTableOffset, bList.Count - (int)offsetTableOffset - 32); + + parseOffsetTable(offsetTableBytes); + + return (Dictionary)parseBinaryDictionary(0); + } + + private static Dictionary parseDictionary(XmlNode node) + { + XmlNodeList children = node.ChildNodes; + if (children.Count % 2 != 0) + { + throw new DataMisalignedException("Dictionary elements must have an even number of child nodes"); + } + + Dictionary dict = new Dictionary(); + + for (int i = 0; i < children.Count; i += 2) + { + XmlNode keynode = children[i]; + XmlNode valnode = children[i + 1]; + + if (keynode.Name != "key") + { + throw new ApplicationException("expected a key node"); + } + + object result = parse(valnode); + + if (result != null) + { + dict.Add(keynode.InnerText, result); + } + } + + return dict; + } + + private static List parseArray(XmlNode node) + { + List array = new List(); + + foreach (XmlNode child in node.ChildNodes) + { + object result = parse(child); + if (result != null) + { + array.Add(result); + } + } + + return array; + } + + private static void composeArray(List value, XmlWriter writer) + { + writer.WriteStartElement("array"); + foreach (object obj in value) + { + compose(obj, writer); + } + writer.WriteEndElement(); + } + + private static object parse(XmlNode node) + { + switch (node.Name) + { + case "dict": + return parseDictionary(node); + case "array": + return parseArray(node); + case "string": + return node.InnerText; + case "integer": + return Convert.ToInt32(node.InnerText); + case "real": + return Convert.ToDouble(node.InnerText); + case "false": + return false; + case "true": + return true; + case "null": + return null; + case "date": + return XmlConvert.ToDateTime(node.InnerText, XmlDateTimeSerializationMode.Utc); + case "data": + return Convert.FromBase64String(node.InnerText); + } + + throw new ApplicationException(String.Format("Plist Node `{0}' is not supported", node.Name)); + } + + private static void compose(object value, XmlWriter writer) + { + switch (value.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + writeDictionaryValues((Dictionary)value, writer); + break; + + case "System.Collections.Generic.List`1[System.Object]": + composeArray((List)value, writer); + break; + + case "System.Byte[]": + writer.WriteElementString("data", Convert.ToBase64String((Byte[])value)); + break; + + case "System.Double": + writer.WriteElementString("real", value.ToString()); + break; + + case "System.Int32": + writer.WriteElementString("integer", value.ToString()); + break; + + case "System.String": + writer.WriteElementString("string", value.ToString()); + break; + + case "System.DateTime": + DateTime time = (DateTime)value; + string theString = XmlConvert.ToString(time, XmlDateTimeSerializationMode.Utc); + writer.WriteElementString("date", theString);//, "yyyy-MM-ddTHH:mm:ssZ")); + break; + + case "System.Boolean": + writer.WriteElementString(value.ToString().ToLower(), ""); + break; + + default: + throw new Exception(String.Format("Value type '{0}' is unhandled", value.GetType().ToString())); + } + } + + private static void writeDictionaryValues(Dictionary dictionary, XmlWriter writer) + { + writer.WriteStartElement("dict"); + foreach (string key in dictionary.Keys) + { + object value = dictionary[key]; + writer.WriteElementString("key", key); + compose(value, writer); + } + writer.WriteEndElement(); + } + + private static int countDictionary(Dictionary dictionary) + { + int count = 0; + foreach (string key in dictionary.Keys) + { + count++; + switch (dictionary[key].GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + count += (countDictionary((Dictionary)dictionary[key]) + 1); + break; + case "System.Collections.Generic.List`1[System.Object]": + count += (countArray((List)dictionary[key]) + 1); + break; + default: + count++; + break; + } + } + return count; + } + + private static int countArray(List array) + { + int count = 0; + foreach (object obj in array) + { + switch (obj.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + count += (countDictionary((Dictionary)obj) + 1); + break; + case "System.Collections.Generic.List`1[System.Object]": + count += (countArray((List)obj) + 1); + break; + default: + count++; + break; + } + } + return count; + } + + private static byte[] writeBinaryDictionary(Dictionary dictionary) + { + List buffer = new List(); + List header = new List(); + List refs = new List(); + for (int i = dictionary.Count - 1; i >= 0; i--) + { + composeBinary(dictionary.Values.ToArray()[i]); + offsetTable.Add(objectTable.Count); + refs.Add(refCount); + refCount--; + } + for (int i = dictionary.Count - 1; i >= 0; i--) + { + composeBinary(dictionary.Keys.ToArray()[i]);//); + offsetTable.Add(objectTable.Count); + refs.Add(refCount); + refCount--; + } + + if (dictionary.Count < 15) + { + header.Add(Convert.ToByte(0xD0 | Convert.ToByte(dictionary.Count))); + } + else + { + header.Add(0xD0 | 0xf); + header.AddRange(writeBinaryInteger(dictionary.Count, false)); + } + + + foreach (int val in refs) + { + byte[] refBuffer = RegulateNullBytes(BitConverter.GetBytes(val), objRefSize); + Array.Reverse(refBuffer); + buffer.InsertRange(0, refBuffer); + } + + buffer.InsertRange(0, header); + + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] composeBinaryArray(List objects) + { + List buffer = new List(); + List header = new List(); + List refs = new List(); + + for (int i = objects.Count - 1; i >= 0; i--) + { + composeBinary(objects[i]); + offsetTable.Add(objectTable.Count); + refs.Add(refCount); + refCount--; + } + + if (objects.Count < 15) + { + header.Add(Convert.ToByte(0xA0 | Convert.ToByte(objects.Count))); + } + else + { + header.Add(0xA0 | 0xf); + header.AddRange(writeBinaryInteger(objects.Count, false)); + } + + foreach (int val in refs) + { + byte[] refBuffer = RegulateNullBytes(BitConverter.GetBytes(val), objRefSize); + Array.Reverse(refBuffer); + buffer.InsertRange(0, refBuffer); + } + + buffer.InsertRange(0, header); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] composeBinary(object obj) + { + byte[] value; + switch (obj.GetType().ToString()) + { + case "System.Collections.Generic.Dictionary`2[System.String,System.Object]": + value = writeBinaryDictionary((Dictionary)obj); + return value; + + case "System.Collections.Generic.List`1[System.Object]": + value = composeBinaryArray((List)obj); + return value; + + case "System.Byte[]": + value = writeBinaryByteArray((byte[])obj); + return value; + + case "System.Double": + value = writeBinaryDouble((double)obj); + return value; + + case "System.Int32": + value = writeBinaryInteger((int)obj, true); + return value; + + case "System.String": + value = writeBinaryString((string)obj, true); + return value; + + case "System.DateTime": + value = writeBinaryDate((DateTime)obj); + return value; + + case "System.Boolean": + value = writeBinaryBool((bool)obj); + return value; + + default: + return new byte[0]; + } + } + + public static byte[] writeBinaryDate(DateTime obj) + { + List buffer = RegulateNullBytes(BitConverter.GetBytes(PlistDateConverter.ConvertToAppleTimeStamp(obj)), 8).ToList(); + if (BitConverter.IsLittleEndian) + buffer.Reverse(); + buffer.Insert(0, 0x33); + objectTable.InsertRange(0, buffer); + return buffer.ToArray(); + } + + public static byte[] writeBinaryBool(bool obj) + { + List buffer = new byte[1] { (bool)obj ? (byte)9 : (byte)8 }.ToList(); + objectTable.InsertRange(0, buffer); + return buffer.ToArray(); + } + + private static byte[] writeBinaryInteger(int value, bool write) + { + List buffer = BitConverter.GetBytes((long)value).ToList(); + buffer = RegulateNullBytes(buffer.ToArray()).ToList(); + while (buffer.Count != Math.Pow(2, Math.Log(buffer.Count) / Math.Log(2))) + buffer.Add(0); + int header = 0x10 | (int)(Math.Log(buffer.Count) / Math.Log(2)); + + if (BitConverter.IsLittleEndian) + buffer.Reverse(); + + buffer.Insert(0, Convert.ToByte(header)); + + if (write) + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] writeBinaryDouble(double value) + { + List buffer = RegulateNullBytes(BitConverter.GetBytes(value), 4).ToList(); + while (buffer.Count != Math.Pow(2, Math.Log(buffer.Count) / Math.Log(2))) + buffer.Add(0); + int header = 0x20 | (int)(Math.Log(buffer.Count) / Math.Log(2)); + + if (BitConverter.IsLittleEndian) + buffer.Reverse(); + + buffer.Insert(0, Convert.ToByte(header)); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] writeBinaryByteArray(byte[] value) + { + List buffer = value.ToList(); + List header = new List(); + if (value.Length < 15) + { + header.Add(Convert.ToByte(0x40 | Convert.ToByte(value.Length))); + } + else + { + header.Add(0x40 | 0xf); + header.AddRange(writeBinaryInteger(buffer.Count, false)); + } + + buffer.InsertRange(0, header); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] writeBinaryString(string value, bool head) + { + List buffer = new List(); + List header = new List(); + foreach (char chr in value.ToCharArray()) + buffer.Add(Convert.ToByte(chr)); + + if (head) + { + if (value.Length < 15) + { + header.Add(Convert.ToByte(0x50 | Convert.ToByte(value.Length))); + } + else + { + header.Add(0x50 | 0xf); + header.AddRange(writeBinaryInteger(buffer.Count, false)); + } + } + + buffer.InsertRange(0, header); + + objectTable.InsertRange(0, buffer); + + return buffer.ToArray(); + } + + private static byte[] RegulateNullBytes(byte[] value) + { + return RegulateNullBytes(value, 1); + } + + private static byte[] RegulateNullBytes(byte[] value, int minBytes) + { + Array.Reverse(value); + List bytes = value.ToList(); + for (int i = 0; i < bytes.Count; i++) + { + if (bytes[i] == 0 && bytes.Count > minBytes) + { + bytes.Remove(bytes[i]); + i--; + } + else + break; + } + + if (bytes.Count < minBytes) + { + int dist = minBytes - bytes.Count; + for (int i = 0; i < dist; i++) + bytes.Insert(0, 0); + } + + value = bytes.ToArray(); + Array.Reverse(value); + return value; + } + + private static void parseTrailer(List trailer) + { + offsetByteSize = BitConverter.ToInt32(RegulateNullBytes(trailer.GetRange(6, 1).ToArray(), 4), 0); + objRefSize = BitConverter.ToInt32(RegulateNullBytes(trailer.GetRange(7, 1).ToArray(), 4), 0); + byte[] refCountBytes = trailer.GetRange(12, 4).ToArray(); + Array.Reverse(refCountBytes); + refCount = BitConverter.ToInt32(refCountBytes, 0); + byte[] offsetTableOffsetBytes = trailer.GetRange(24, 8).ToArray(); + Array.Reverse(offsetTableOffsetBytes); + offsetTableOffset = BitConverter.ToInt64(offsetTableOffsetBytes, 0); + } + + private static void parseOffsetTable(List offsetTableBytes) + { + for (int i = 0; i < offsetTableBytes.Count; i += offsetByteSize) + { + byte[] buffer = offsetTableBytes.GetRange(i, offsetByteSize).ToArray(); + Array.Reverse(buffer); + offsetTable.Add(BitConverter.ToInt32(RegulateNullBytes(buffer, 4), 0)); + } + } + + private static object parseBinaryDictionary(int objRef) + { + Dictionary buffer = new Dictionary(); + List refs = new List(); + int refCount = 0; + + byte dictByte = objectTable[offsetTable[objRef]]; + + refCount = getCount(offsetTable[objRef], dictByte); + + int refStartPosition; + + if (refCount < 15) + refStartPosition = offsetTable[objRef] + 1; + else + refStartPosition = offsetTable[objRef] + 2 + RegulateNullBytes(BitConverter.GetBytes(refCount), 1).Length; + + for (int i = refStartPosition; i < refStartPosition + refCount * 2 * objRefSize; i += objRefSize) + { + byte[] refBuffer = objectTable.GetRange(i, objRefSize).ToArray(); + Array.Reverse(refBuffer); + refs.Add(BitConverter.ToInt32(RegulateNullBytes(refBuffer, 4), 0)); + } + + for (int i = 0; i < refCount; i++) + { + buffer.Add((string)parseBinary(refs[i]), parseBinary(refs[i + refCount])); + } + + return buffer; + } + + private static object parseBinaryArray(int objRef) + { + List buffer = new List(); + List refs = new List(); + int refCount = 0; + + byte arrayByte = objectTable[offsetTable[objRef]]; + + refCount = getCount(offsetTable[objRef], arrayByte); + + int refStartPosition; + + if (refCount < 15) + refStartPosition = offsetTable[objRef] + 1; + else + //The following integer has a header aswell so we increase the refStartPosition by two to account for that. + refStartPosition = offsetTable[objRef] + 2 + RegulateNullBytes(BitConverter.GetBytes(refCount), 1).Length; + + for (int i = refStartPosition; i < refStartPosition + refCount * objRefSize; i += objRefSize) + { + byte[] refBuffer = objectTable.GetRange(i, objRefSize).ToArray(); + Array.Reverse(refBuffer); + refs.Add(BitConverter.ToInt32(RegulateNullBytes(refBuffer, 4), 0)); + } + + for (int i = 0; i < refCount; i++) + { + buffer.Add(parseBinary(refs[i])); + } + + return buffer; + } + + private static int getCount(int bytePosition, byte headerByte) + { + byte headerByteTrail = Convert.ToByte(headerByte & 0xf); + if (headerByteTrail < 15) + return headerByteTrail; + else + { + return (int)parseBinaryInt(bytePosition + 1); + } + } + + private static object parseBinary(int objRef) + { + byte header = objectTable[offsetTable[objRef]]; + switch (header & 0xF0) + { + case 0: + { + //If the byte is + //0 return null + //9 return true + //8 return false + return (objectTable[offsetTable[objRef]] == 0) ? (object)null : ((objectTable[offsetTable[objRef]] == 9) ? true : false); + } + case 0x10: + { + return parseBinaryInt(offsetTable[objRef]); + } + case 0x20: + { + return parseBinaryReal(offsetTable[objRef]); + } + case 0x30: + { + return parseBinaryDate(offsetTable[objRef]); + } + case 0x40: + { + return parseBinaryByteArray(offsetTable[objRef]); + } + case 0x50: + { + return parseBinaryString(offsetTable[objRef]); + } + case 0xD0: + { + return parseBinaryDictionary(objRef); + } + case 0xA0: + { + return parseBinaryArray(objRef); + } + } + throw new Exception("This type is not supported"); + } + + public static object parseBinaryDate(int headerPosition) + { + byte[] buffer = objectTable.GetRange(headerPosition + 1, 8).ToArray(); + if(BitConverter.IsLittleEndian) + Array.Reverse(buffer); + double appleTime = BitConverter.ToDouble(buffer, 0); + DateTime result = PlistDateConverter.ConvertFromAppleTimeStamp(appleTime); + return result; + } + + private static object parseBinaryInt(int headerPosition) + { + byte header = objectTable[headerPosition]; + int byteCount = (int)Math.Pow(2, header & 0xf); + byte[] buffer = objectTable.GetRange(headerPosition + 1, byteCount).ToArray(); + if (BitConverter.IsLittleEndian) + Array.Reverse(buffer); + + return BitConverter.ToInt32(RegulateNullBytes(buffer, 4), 0); + } + + private static object parseBinaryReal(int headerPosition) + { + byte header = objectTable[headerPosition]; + int byteCount = (int)Math.Pow(2, header & 0xf); + byte[] buffer = objectTable.GetRange(headerPosition + 1, byteCount).ToArray(); + Array.Reverse(buffer); + + return BitConverter.ToDouble(RegulateNullBytes(buffer, 8), 0); + } + + private static object parseBinaryString(int headerPosition) + { + byte headerByte = objectTable[headerPosition]; + int charCount = getCount(headerPosition, headerByte); + int charStartPosition; + if (charCount < 15) + charStartPosition = headerPosition + 1; + else + charStartPosition = headerPosition + 2 + RegulateNullBytes(BitConverter.GetBytes(charCount), 1).Length; + string buffer = ""; + foreach (byte byt in objectTable.GetRange(charStartPosition, charCount)) + { + buffer += Convert.ToChar(byt); + } + return buffer; + } + + private static object parseBinaryByteArray(int headerPosition) + { + byte headerByte = objectTable[headerPosition]; + int byteCount = getCount(headerPosition, headerByte); + int byteStartPosition; + if (byteCount < 15) + byteStartPosition = headerPosition + 1; + else + byteStartPosition = headerPosition + 2 + RegulateNullBytes(BitConverter.GetBytes(byteCount), 1).Length; + return objectTable.GetRange(byteStartPosition, byteCount).ToArray(); + } + + #endregion +} + +public static class PlistDateConverter +{ + public static long timeDifference = 978307200; + + public static long GetAppleTime(long unixTime) + { + return unixTime - timeDifference; + } + + public static DateTime ConvertFromAppleTimeStamp(double timestamp) + { + DateTime origin = new DateTime(2001, 1, 1, 0, 0, 0, 0); + return origin.AddSeconds(timestamp); + } + + public static double ConvertToAppleTimeStamp(DateTime date) + { + DateTime begin = new DateTime(2001, 1, 1, 0, 0, 0, 0); + TimeSpan diff = date - begin; + return Math.Floor(diff.TotalSeconds); + } + + public static long GetUnixTime(long appleTime) + { + return appleTime + timeDifference; + } +} \ No newline at end of file diff --git a/BinaryPlist/Testing/Properties/AssemblyInfo.cs b/BinaryPlist/Testing/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3ac42c9 --- /dev/null +++ b/BinaryPlist/Testing/Properties/AssemblyInfo.cs @@ -0,0 +1,35 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Testing")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("Microsoft")] +[assembly: AssemblyProduct("Testing")] +[assembly: AssemblyCopyright("Copyright © Microsoft 2011")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("8e0efdfb-4660-4fad-9340-2920f447ac9d")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/BinaryPlist/Testing/Testing.csproj b/BinaryPlist/Testing/Testing.csproj new file mode 100644 index 0000000..efb3d8d --- /dev/null +++ b/BinaryPlist/Testing/Testing.csproj @@ -0,0 +1,61 @@ + + + + Debug + AnyCPU + + + 2.0 + {6BDF9699-CE2C-437E-8ACB-F7785DF47EA1} + Library + Properties + Testing + Testing + v4.0 + 512 + {3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + + + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + 3.5 + + + + + + False + + + + + + + + + + \ No newline at end of file diff --git a/BinaryPlist/Testing/bin/Debug/Testing.dll b/BinaryPlist/Testing/bin/Debug/Testing.dll new file mode 100644 index 0000000000000000000000000000000000000000..59f736ccdf4068d47dfe3ebea0626b58d3ad3ff9 GIT binary patch literal 19968 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 literal 0 HcmV?d00001 diff --git a/BinaryPlist/Testing/bin/Debug/sourceBin.plist b/BinaryPlist/Testing/bin/Debug/sourceBin.plist new file mode 100644 index 0000000000000000000000000000000000000000..c5b9e4b9a8b8ac36966ffc1a21b82ff26a036ada GIT binary patch literal 8186 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

uKBEgtF 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%0DbjYie{n&OKRc)Dj`%s(cQ*AP@OM4Yq59!y_9 zv3e$TN#$LQ@L{q|Xds7s#!&-4RUpv&#~1Sc!fBx+gRAqzZx?DpY=nDTD3%HN6|mFS z6Mjn0G>MoO-v-!XefI32x7o7)IdvQF>;9-yp-4Z&Bg^g-t=S3UO0x@I_(PZaL7yYc zu+b%pu99-x*Ej^7nP6Cnh*`vT_}9>4&_{1mP>pzLUuc5EnQ}}7%?AbGVZrDuYkyB| zh&DCLl!uQ!(uCaN=NX>=4A)SB?=t6BU#gPFs9*H1=zM+C=7NU|Ql2!GHNPhRZiY@5 zM)LiHO4{o2N_|gmQ3CV6tJEJN=W<%_D*IW!?fZccd%H$8I)XiY)U-tZ2t5jzX{u+h*_^^r4MS_E#fpK}`8Wy%#F)%wnGH?g0n{u$4Br&n+E~?aD{Aj) zD2Qp*G@&9Hmcx(tdqrgPyuV&yfarZ zOvZ5Cz4xh0EdT8AN}&%=AxWN90@U3-26`Sw6SZ9D+{k`a674rDG&$Oq!%-<+_LcaG zbsV2Q_9A<(aR_KblzS<0857@{s)wX=1lA8@H1Ft)J^7Ne zWO7|VNWkq-+I(WSrbhdznWTEOkt3;o^@5NV{AN(|g0WsEW#84tDumRjq?{)!pXh3} z`c{~qx&mvHS4}qjm!dAUb}h1$)l?elpHpk)ao3)@Y@GqQ)j{j*epz?Frqoq8F{=hN zJPrQ^%)rbl_7G*cRP9Ix)MA>xQXW)S{pgJIkJq)dk#nabkMp+AB1@8Luyb}cMhf*o z%jRN;?hd8J;jAfl!t7xB(58rQ)m&?RNBd4KM$(cml^%$dSodjFu8 zslu+(ou|@Cfhgop%lyx?!_Q@tU%Pm=a2A;zmKsyu|7ofIlIUsA_2=CkdC`@8n;&01 z!ZON|umJX<|Id8G*1B6p*h|~w-@C6nCbe^0tLjJ^Y`2axDctRohi?F@rcU~ql|%nd zZV9SSWCvrQ+gh+MV_a$?x%BV!K=TpzR)cR_rJq)dULQ(bfsPI5k@oN20~*T6buBb9 z0on91bJ4oAsF0sWdQtrBDseo&`fmAtXfEd=G%7l>mTjhz3gc9rqU6OX-nFeubfvK7 zsR`jAt*-O4PW(~o_%_tRjP)fUPxodpGjK(ym$csnwjbAMO@H76`^rR7{;rai!PfX& zLMp`2=7uRGUO2Y0_BGa0=`I2&Of+VW6Cq|syoN1=7RnStrDtpoCHR=Nq~r(R{vv(? zau%|t@*C89zdhfRiFAHb6mu)-9JKq-9okaKubDvn%R-sDL@Qk5kkf@H;CcYo6!-+B zVG-|&{XP|Z0&>6i-spyWW8?GBkH;bjf6nM2bK2Vd7Ml4&3J~;+!|}@BchIT;Ee-Uu zUPjVeP+PaCPTkGdD1Wyzohnr3ddog^sTefVyRG=CvIY9{>IWaQ0nc-y87@W1+dR!> z+Rf_NgG^DkzrrqhO@tvKXV16igkA(AHBIh@{B@W**2X@umEuUTwNE~OrB$ezc<_uj zxZ8qBggEn*yQ2DT%7>)~i=^^8AyBbKO0cycF8nzESLI!v?bJG{5i$ie368tsr%0@F zCZ#T@ty%BM;*Q2tq4q5>q{2$fO2_-OJWWVs@{hMm>-DeW`y7n#=;~_gNo(`h4yJYV zwsj$T`Zq4aHo=6XWaJc-RMa#ODD5*k7(D|c6Eh1d8#@Ol7dM=TmycgSP)HcT&4++< zBjEf9Zf*p(Fai!oaPuSJ0toKEKmY;fLBItO+&le#qR4^789}Ivo z!PsClFc^#kMhD}73Bbr;5EvJX0>%L2nK;-wJG;?(JJ@>K7Kw?2>7Ij$|D*a}p|p;! zw3h#P)%9QkHf}yaW==T25IYM8kEE2e%wG4kiP3_yk|6HrG`SG&!9q3HK+zu3yS!U T)r|aK$5-}$SkHeURQLY@&|1YN literal 0 HcmV?d00001 diff --git a/BinaryPlist/Testing/bin/Debug/sourceXml.plist b/BinaryPlist/Testing/bin/Debug/sourceXml.plist new file mode 100644 index 0000000..8621f99 --- /dev/null +++ b/BinaryPlist/Testing/bin/Debug/sourceXml.plist @@ -0,0 +1,240 @@ + + + + + testArray + + 34 + string item in array + + testArrayLarge + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + + testBoolFalse + + testBoolTrue + + testDate + 2011-09-25T02:31:04Z + testDict + + test string + inner dict item + + testDictLarge + + 00 + 0 + 01 + 1 + 02 + 2 + 03 + 3 + 04 + 4 + 05 + 5 + 06 + 6 + 07 + 7 + 08 + 8 + 09 + 9 + 10 + 10 + 11 + 11 + 12 + 12 + 13 + 13 + 14 + 14 + 15 + 15 + 16 + 16 + 17 + 17 + + testDouble + 1.34223 + testImage + + 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 + M//Z + + testInt + -3455 + testString + hello there + + diff --git a/BinaryPlist/Testing/bin/Debug/targetBin.plist b/BinaryPlist/Testing/bin/Debug/targetBin.plist new file mode 100644 index 0000000000000000000000000000000000000000..3fb0c4fce471c25b3e4c96b19598936dbeadd51c GIT binary patch literal 8238 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 pL{Ks)6_gHo1 + + + + testArray + + 34 + string item in array + + testArrayLarge + + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + + testBoolFalse + + testBoolTrue + + testDate + 2011-09-25T02:31:04Z + testDict + + test string + inner dict item + + testDictLarge + + 00 + 0 + 01 + 1 + 02 + 2 + 03 + 3 + 04 + 4 + 05 + 5 + 06 + 6 + 07 + 7 + 08 + 8 + 09 + 9 + 10 + 10 + 11 + 11 + 12 + 12 + 13 + 13 + 14 + 14 + 15 + 15 + 16 + 16 + 17 + 17 + + testDouble + 1.34223 + testImage + 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 + testInt + -3455 + testString + hello there + + \ No newline at end of file diff --git a/BinaryPlist/Testing/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/BinaryPlist/Testing/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000000000000000000000000000000000000..3db6e62e7a3b677538504844a795661b3ae8e553 GIT binary patch literal 5387 zcmeHL{Z1Q45VyfxFoYJ`-u zz(u@3U!qS?^%2{dvwa5Q&{nb~{_rBkdpo-`v$L~1zuiPKkx2ZFg?_2rA3@^paZgDt ztHwFtI%J|~LZ3@#Q`YM;*xlOB+6SOCm%(~I=R|*5dovU!RInaEXcQA!dq1oQ?)?PK zl01Q6y^>p~E>)MS`MkfBV+(AIRIYqP(?-aJPx^KP14=f2R;jU}dPVB%rLu%f}dK_U7DuLV-U7E~F!VmHtR?dw|C68zomom%2r zT_5t^BA$HEesz>BaGu)SFmsD5@QhR(^mM~FOcjAC?|7e?V?EhWvWgC&Nz5pyacxwy z%TMDx43Nj>aNO0oUlBTcgS96Eegf)Q@8&J88-g`S;mv{VxSDSb+*i^At)+T}#&UyG zzzAy(0lyFihS#Az@JhHK;*3L57J2taYq zd5s=;pFcdjr3*&&0TUtYGp^o$A9pPp#e-Vbu4_*!!7JT;viP63$?`H=@|IraR~Hr` zx3XH!-e$)gHFXevDEHT`cU)XDISkQ3L{Yq(1|j^8$5fv;5Fv&1D3XbEimGEo@T5(o z?;)Y)ar#ITnLuJqB1u^Hk!)NP+IeQJh$!QXDR5&X;5u)%OL2nDp5oD&?PTY6Cf+{3 zw5Cu_WpmAar!h6Vb*4_-4IVJn+!uI$>#HAb2{R%d%&x5b>TW?LtRdByiA$J13ZSJp zjiEsSs-PgiwBvZpJBIWpWb~&<=C0e-K|o}mHI4jf;@h#|_M(-+)>Oow!P@Bg%1i4r ztV~dovyfZJucja1cZQru-n2ePl5%_@EW$S_2hJfwz9rXM50U(y^wwO=iZz5Sc7$T= zZ&2*FUGLc~#Adf3n@#x4ZQ-_M7m=IWLS=1#A{^+BypHwWBJAS^v6~dyc^7a)K8z<9 z+4u+zI>Hs`Wl!uzyO%0A7Ib~FUGj|E$)1st$Ebvsx!+3SEnyIGf5&mnVR?K!{RIY8r(_6)(DQ=z1WBR)M{b4?PNd)|R#H3oE|4U!6G5PB zmJs@(l8F!yRxBIIql?X+PZF2bGvv-({Kx}Cck>;EFCe%_F0C)IeeR;v`vTs)w4Nis zAE@dD%9*+-urmS|bV0wgzQU$e^x^*jS`{9&fmVj_Q{<|zu`-CYAP7a}UgUUEMP>BQ S;UV&GFLJ{}Bz|QnPyPeS#rEU? literal 0 HcmV?d00001 diff --git a/BinaryPlist/Testing/obj/Debug/ResolveAssemblyReference.cache b/BinaryPlist/Testing/obj/Debug/ResolveAssemblyReference.cache new file mode 100644 index 0000000000000000000000000000000000000000..c679a3993200e35c9376051b51c69a9739910179 GIT binary patch literal 6231 zcmeHLU2GIp6rQ^~`!my}TmBRiz^xDhQfFJBfRzfRu+m5sSS*QdolJM`wijk+$lTdN zc@Pp!jQD`z#{`~C3@@0VF;RT*2V&(x@c|Sg{v?`+R70XXiXnQ=?CkCgtV-)!(`ok1 zJ$LTUx#xW6J2MrCAP9fKg?GFXArSq&EN@%fDmcpe5;JsVyT*5MWq5_s+LG#{HfNUE z2@3wTq`FInQ?hBNNlT8c87-+Tr2&KGAEzVRtzFdY9B5r$XfLcPw6*E&t=e)ef_pXB z-y%E09a_vfnnQ7vRA2^mweZ~XBciLw7!-|`!XQKx|2i}V1LVz? zrf0OgW7#q9IPq?)xLdQS-GqyFTRPohTfRjy~l##}ipU7XV*#E0_QOr<=tJW<&Si!cX* zXBk|1%4E)V%AE{sOZQmzE=4ztCN$5D4|+3#VrkWk0AzgeT#81!vBcR4L*q`brLzK~ zdO|B3HSz>(lF;dHYUbS7XZmpp{)Cqol};YJut|zTTar-7Amj+@<1zxn+Ng2AfpLvz9h;eh z3C6RmxZ9xUiG@QNhluAX=a$`N=ZBaB$cI$xF*7AR4h{-K9OipC+eQmsZUl}`h?^e` zux~U0Vx;DQaRk1W`G~BErM@7<&~s%}!(AMg;g_DZN8z4e#{OHz>-)@z)`RS$%XD&}*SF=*M$87j^Rsu|1f zwoJ#ij2S8f*fIxkJK&Km8nb6t)^O>ZICD3g=+IjEGCe!d&NSbc%v6_ z&x-ac(U=7`Sh6+b#|j1@jVjHNfUy&swct*$-Ep)vcWaMlf4~EEHt^?)>z+__CPc4& zLO_;g!BlBBi2d-3-UH$=!9vrKPN(x7={h8vu5MI^WYZqWrh#PBx07sb=6Fd~x)%%+ z$DlS(EKbPJv0ylKzXrdMun_D$AP7f6 zi6XUtzAf9;CICMZ_={bUfFh=gG#A zp(&1p3gdC)0}$YNk>@SjU<0zW092$rSpujF zFc+slQ+bD;goSkp1b9}x`YlTj!lN>PmO_hs381Ky6Y_;mk;x^{ssOqON)15B-BSRX z!~klA07uIJlBKpPWR@XhKKG%7T<|F}`OFWQPXmy_>OKXTNer1)5a0%nb2ey>CQGZU zxOo_HbKVCP@`+E8$*3PU9|v%gf~ixunZ&qx6ap-JxYmHbQ`B)?lM#sXff#-)yp!fhT4BJcjsr&j%TD#;3^S zT|a)_@#80n@7eB$+nIg2zWY}E@DjoIZTE8??*1!@Z&ZPAJc4glb%$al4X%n6weC

?E0;oRBPYvL-uAHj^{#&XP?| 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 literal 0 HcmV?d00001 diff --git a/BinaryPlist/Testing/obj/Debug/xmlTest.plist b/BinaryPlist/Testing/obj/Debug/xmlTest.plist new file mode 100644 index 0000000..634bb45 --- /dev/null +++ b/BinaryPlist/Testing/obj/Debug/xmlTest.plist @@ -0,0 +1,8 @@ + + + + + Integer + 1 + + diff --git a/BinaryPlist/Testing/plistTests.cs b/BinaryPlist/Testing/plistTests.cs new file mode 100644 index 0000000..edfd490 --- /dev/null +++ b/BinaryPlist/Testing/plistTests.cs @@ -0,0 +1,36 @@ +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; +using Microsoft.VisualStudio.TestTools.UnitTesting; + +namespace Testing +{ + [TestClass] + public class plistTests + { + string targetXmlPath = "C:\\Users\\mark\\BinaryPlists\\BinaryPlist\\Testing\\bin\\Debug\\targetXml.plist"; + string targetBinPath = "C:\\Users\\mark\\BinaryPlists\\BinaryPlist\\Testing\\bin\\Debug\\targetBin.plist"; + string sourceXmlPath = "C:\\Users\\mark\\BinaryPlists\\BinaryPlist\\Testing\\bin\\Debug\\sourceXml.plist"; + string sourceBinPath = "C:\\Users\\mark\\BinaryPlists\\BinaryPlist\\Testing\\bin\\Debug\\sourceBin.plist"; + + /*[TestMethod] + public void ReadWriteTest() + { + Dictionary expected = Plist.readPlist(xmlPath); + Plist.writeBinary(expected, binPath); + Dictionary actual = Plist.readPlist(binPath); + CollectionAssert.AreEqual(expected, actual); + } + */ + [TestMethod] + public void ConvertTest() + { + Dictionary xmlDict = Plist.readPlist(sourceXmlPath); + Plist.writeBinary(xmlDict, targetBinPath); + Dictionary binDict = Plist.readPlist(targetBinPath); + Plist.writeXml(binDict, targetXmlPath); + } + } +} + diff --git a/BinaryPlist/TraceAndTestImpact.testsettings b/BinaryPlist/TraceAndTestImpact.testsettings new file mode 100644 index 0000000..708d602 --- /dev/null +++ b/BinaryPlist/TraceAndTestImpact.testsettings @@ -0,0 +1,9 @@ + + + These are test settings for Trace and Test Impact. + + + + + + \ No newline at end of file