summary history branches tags files
commit:68e7589accf9ac5193b2cfcf856370453577bb37
author:mrmekon
committer:mrmekon
date:Thu Nov 10 13:30:52 2011 -0500
parents:08984b34652d7ad1338e7bdd0929e640b66d45aa
Massive changes.  Added keychain, session packet decryption, symmetrically encrypted packet decryption, partial packet length support.
diff --git a/simplepgp.xcodeproj/project.pbxproj b/simplepgp.xcodeproj/project.pbxproj
line changes: +8/-0
index b389761..569a6e1
--- a/simplepgp.xcodeproj/project.pbxproj
+++ b/simplepgp.xcodeproj/project.pbxproj
@@ -11,6 +11,8 @@
 		69269F2614620D0F00F69705 /* packet_test.h in Headers */ = {isa = PBXBuildFile; fileRef = 69269F2214620D0F00F69705 /* packet_test.h */; };
 		69269F2714620D0F00F69705 /* packet.c in Sources */ = {isa = PBXBuildFile; fileRef = 69269F2314620D0F00F69705 /* packet.c */; };
 		69269F2814620D0F00F69705 /* packet.h in Headers */ = {isa = PBXBuildFile; fileRef = 69269F2414620D0F00F69705 /* packet.h */; };
+		6926A662146B38F200F69705 /* keychain.c in Sources */ = {isa = PBXBuildFile; fileRef = 6926A660146B38F200F69705 /* keychain.c */; };
+		6926A663146B38F200F69705 /* keychain.h in Headers */ = {isa = PBXBuildFile; fileRef = 6926A661146B38F200F69705 /* keychain.h */; };
 		69868BC31460F343004C5D9B /* libgcrypt.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 69868BC21460F343004C5D9B /* libgcrypt.a */; };
 		69868BC51460F34A004C5D9B /* libgpg-error.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 69868BC41460F34A004C5D9B /* libgpg-error.a */; };
 		69868BC71460F37E004C5D9B /* gpg-error.h in Headers */ = {isa = PBXBuildFile; fileRef = 69868BC61460F37E004C5D9B /* gpg-error.h */; };
@@ -25,6 +27,8 @@
 		69269F2214620D0F00F69705 /* packet_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = packet_test.h; path = src/packet_test.h; sourceTree = "<group>"; };
 		69269F2314620D0F00F69705 /* packet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = packet.c; path = src/packet.c; sourceTree = "<group>"; };
 		69269F2414620D0F00F69705 /* packet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = packet.h; path = src/packet.h; sourceTree = "<group>"; };
+		6926A660146B38F200F69705 /* keychain.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = keychain.c; path = src/keychain.c; sourceTree = "<group>"; };
+		6926A661146B38F200F69705 /* keychain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = keychain.h; path = src/keychain.h; sourceTree = "<group>"; };
 		69868BC21460F343004C5D9B /* libgcrypt.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgcrypt.a; sourceTree = "<group>"; };
 		69868BC41460F34A004C5D9B /* libgpg-error.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libgpg-error.a"; sourceTree = "<group>"; };
 		69868BC61460F37E004C5D9B /* gpg-error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "gpg-error.h"; sourceTree = "<group>"; };
@@ -81,6 +85,8 @@
 		08FB77AEFE84172EC02AAC07 /* Classes */ = {
 			isa = PBXGroup;
 			children = (
+				6926A660146B38F200F69705 /* keychain.c */,
+				6926A661146B38F200F69705 /* keychain.h */,
 				69269F2114620D0F00F69705 /* packet_test.c */,
 				69269F2214620D0F00F69705 /* packet_test.h */,
 				69269F2314620D0F00F69705 /* packet.c */,
@@ -113,6 +119,7 @@
 				69868BCB1460F386004C5D9B /* gcrypt.h in Headers */,
 				69269F2614620D0F00F69705 /* packet_test.h in Headers */,
 				69269F2814620D0F00F69705 /* packet.h in Headers */,
+				6926A663146B38F200F69705 /* keychain.h in Headers */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -168,6 +175,7 @@
 			files = (
 				69269F2514620D0F00F69705 /* packet_test.c in Sources */,
 				69269F2714620D0F00F69705 /* packet.c in Sources */,
+				6926A662146B38F200F69705 /* keychain.c in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

diff --git a/simplepgp.xcodeproj/trevor.mode1v3 b/simplepgp.xcodeproj/trevor.mode1v3
line changes: +40/-37
index a5ca541..3be65d5
--- a/simplepgp.xcodeproj/trevor.mode1v3
+++ b/simplepgp.xcodeproj/trevor.mode1v3
@@ -274,13 +274,13 @@
 							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
 							<array>
 								<array>
-									<integer>4</integer>
+									<integer>6</integer>
 									<integer>1</integer>
 									<integer>0</integer>
 								</array>
 							</array>
 							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
-							<string>{{0, 0}, {186, 696}}</string>
+							<string>{{0, 0}, {186, 751}}</string>
 						</dict>
 						<key>PBXTopSmartGroupGIDs</key>
 						<array/>
@@ -292,14 +292,14 @@
 					<key>GeometryConfiguration</key>
 					<dict>
 						<key>Frame</key>
-						<string>{{0, 0}, {203, 714}}</string>
+						<string>{{0, 0}, {203, 769}}</string>
 						<key>GroupTreeTableConfiguration</key>
 						<array>
 							<string>MainColumn</string>
 							<real>186</real>
 						</array>
 						<key>RubberWindowFrame</key>
-						<string>-1193 552 1095 755 -1680 385 1680 1050 </string>
+						<string>-1349 580 1174 810 -1680 385 1680 1050 </string>
 					</dict>
 					<key>Module</key>
 					<string>PBXSmartGroupTreeModule</string>
@@ -329,7 +329,7 @@
 										<key>_historyCapacity</key>
 										<integer>0</integer>
 										<key>bookmark</key>
-										<string>6926A2CD1463613E00F69705</string>
+										<string>6926A9A7146C4F6200F69705</string>
 										<key>history</key>
 										<array>
 											<string>69868BD11460F42D004C5D9B</string>
@@ -337,10 +337,12 @@
 											<string>69868C931460F7C3004C5D9B</string>
 											<string>69269F5214620FC500F69705</string>
 											<string>69269F5314620FC500F69705</string>
-											<string>69269FBE14623A5A00F69705</string>
 											<string>6926A15B146350B600F69705</string>
-											<string>6926A1C81463585300F69705</string>
-											<string>6926A29114635F5E00F69705</string>
+											<string>6926A6D0146B44A300F69705</string>
+											<string>6926A6E1146B44E000F69705</string>
+											<string>6926A6E2146B44E000F69705</string>
+											<string>6926A97D146C463400F69705</string>
+											<string>6926A98E146C48EB00F69705</string>
 										</array>
 									</dict>
 									<key>SplitCount</key>
@@ -352,14 +354,14 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {887, 623}}</string>
+								<string>{{0, 0}, {966, 675}}</string>
 								<key>RubberWindowFrame</key>
-								<string>-1193 552 1095 755 -1680 385 1680 1050 </string>
+								<string>-1349 580 1174 810 -1680 385 1680 1050 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>623pt</string>
+							<string>675pt</string>
 						</dict>
 						<dict>
 							<key>ContentConfiguration</key>
@@ -372,18 +374,18 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 628}, {887, 86}}</string>
+								<string>{{0, 680}, {966, 89}}</string>
 								<key>RubberWindowFrame</key>
-								<string>-1193 552 1095 755 -1680 385 1680 1050 </string>
+								<string>-1349 580 1174 810 -1680 385 1680 1050 </string>
 							</dict>
 							<key>Module</key>
 							<string>XCDetailModule</string>
 							<key>Proportion</key>
-							<string>86pt</string>
+							<string>89pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>887pt</string>
+					<string>966pt</string>
 				</dict>
 			</array>
 			<key>Name</key>
@@ -398,9 +400,9 @@
 			</array>
 			<key>TableOfContents</key>
 			<array>
-				<string>69269CC41461D38300F69705</string>
+				<string>6926A4FE1465E68800F69705</string>
 				<string>1CE0B1FE06471DED0097A5F4</string>
-				<string>69269CC51461D38300F69705</string>
+				<string>6926A4FF1465E68800F69705</string>
 				<string>1CE0B20306471E060097A5F4</string>
 				<string>1CE0B20506471E060097A5F4</string>
 			</array>
@@ -539,12 +541,11 @@
 	<key>WindowOrderList</key>
 	<array>
 		<string>1CD10A99069EF8BA00B06720</string>
-		<string>69269F5714620FC500F69705</string>
 		<string>69868B2D1460E71D004C5D9B</string>
 		<string>/Users/trevor/Documents/Cocoa Projects/libsimplepgp/simplepgp.xcodeproj</string>
 	</array>
 	<key>WindowString</key>
-	<string>-1193 552 1095 755 -1680 385 1680 1050 </string>
+	<string>-1349 580 1174 810 -1680 385 1680 1050 </string>
 	<key>WindowToolsV3</key>
 	<array>
 		<dict>
@@ -565,23 +566,25 @@
 								<key>PBXProjectModuleGUID</key>
 								<string>1CD0528F0623707200166675</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>&lt;No Editor&gt;</string>
+								<string>packet.c</string>
 								<key>StatusBarVisibility</key>
 								<true/>
 							</dict>
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {500, 0}}</string>
+								<string>{{0, 0}, {500, 136}}</string>
 								<key>RubberWindowFrame</key>
 								<string>57 313 500 500 0 0 1440 878 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>0pt</string>
+							<string>136pt</string>
 						</dict>
 						<dict>
+							<key>BecomeActive</key>
+							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
 								<key>PBXProjectModuleGUID</key>
@@ -596,14 +599,14 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 5}, {500, 454}}</string>
+								<string>{{0, 141}, {500, 318}}</string>
 								<key>RubberWindowFrame</key>
 								<string>57 313 500 500 0 0 1440 878 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXBuildResultsModule</string>
 							<key>Proportion</key>
-							<string>454pt</string>
+							<string>318pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
@@ -621,7 +624,7 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>69868B2D1460E71D004C5D9B</string>
-				<string>69269CC71461D38300F69705</string>
+				<string>6926A5001465E68800F69705</string>
 				<string>1CD0528F0623707200166675</string>
 				<string>XCMainBuildResultsModuleGUID</string>
 			</array>
@@ -634,7 +637,7 @@
 			<key>WindowToolGUID</key>
 			<string>69868B2D1460E71D004C5D9B</string>
 			<key>WindowToolIsVisible</key>
-			<false/>
+			<true/>
 		</dict>
 		<dict>
 			<key>FirstTimeWindowDisplayed</key>
@@ -665,8 +668,8 @@
 										<string>yes</string>
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {316, 194}}</string>
-											<string>{{316, 0}, {378, 194}}</string>
+											<string>{{0, 0}, {316, 198}}</string>
+											<string>{{316, 0}, {378, 198}}</string>
 										</array>
 									</dict>
 									<key>VerticalSplitView</key>
@@ -681,8 +684,8 @@
 										<string>yes</string>
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {694, 194}}</string>
-											<string>{{0, 194}, {694, 187}}</string>
+											<string>{{0, 0}, {694, 198}}</string>
+											<string>{{0, 198}, {694, 183}}</string>
 										</array>
 									</dict>
 								</dict>
@@ -715,7 +718,7 @@
 										<real>148</real>
 									</array>
 									<key>Frame</key>
-									<string>{{316, 0}, {378, 194}}</string>
+									<string>{{316, 0}, {378, 198}}</string>
 									<key>RubberWindowFrame</key>
 									<string>-1633 963 694 422 -1680 385 1680 1050 </string>
 								</dict>
@@ -743,13 +746,13 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>1CD10A99069EF8BA00B06720</string>
-				<string>69269F8D1462131300F69705</string>
+				<string>6926A52E1469DCC900F69705</string>
 				<string>1C162984064C10D400B95A72</string>
-				<string>69269F8E1462131300F69705</string>
-				<string>69269F8F1462131300F69705</string>
-				<string>69269F901462131300F69705</string>
-				<string>69269F911462131300F69705</string>
-				<string>69269F921462131300F69705</string>
+				<string>6926A52F1469DCC900F69705</string>
+				<string>6926A5301469DCC900F69705</string>
+				<string>6926A5311469DCC900F69705</string>
+				<string>6926A5321469DCC900F69705</string>
+				<string>6926A5331469DCC900F69705</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.debugV3</string>

diff --git a/simplepgp.xcodeproj/trevor.pbxuser b/simplepgp.xcodeproj/trevor.pbxuser
line changes: +1255/-2911
index 60bcfa4..14531be
--- a/simplepgp.xcodeproj/trevor.pbxuser
+++ b/simplepgp.xcodeproj/trevor.pbxuser
@@ -8,8 +8,7 @@
 		);
 		breakpoints = (
 			69868C9D14618450004C5D9B /* packet.c:9 */,
-			69868EE41461AA6F004C5D9B /* packet.c:207 */,
-			69269F4E14620FC200F69705 /* packet.c:179 */,
+			69269F4E14620FC200F69705 /* packet.c:220 */,
 		);
 		codeSenseManager = 69868AD51460E35F004C5D9B /* Code sense */;
 		perUserDictionary = {
@@ -18,7 +17,7 @@
 				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
 				PBXFileTableDataSourceColumnWidthsKey = (
 					20,
-					648,
+					727,
 					20,
 					48,
 					43,
@@ -57,3589 +56,2079 @@
 					PBXFileDataSource_Warnings_ColumnID,
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 341952203;
-			PBXWorkspaceStateSaveDate = 341952203;
+			PBXPerProjectTemplateStateSaveDate = 342222463;
+			PBXWorkspaceStateSaveDate = 342222463;
 		};
 		perUserProjectItems = {
-			69269CC11461D38300F69705 /* PBXTextBookmark */ = 69269CC11461D38300F69705 /* PBXTextBookmark */;
-			69269CC21461D38300F69705 /* PBXTextBookmark */ = 69269CC21461D38300F69705 /* PBXTextBookmark */;
-			69269CC31461D38300F69705 /* PBXTextBookmark */ = 69269CC31461D38300F69705 /* PBXTextBookmark */;
-			69269CC61461D38300F69705 /* PBXTextBookmark */ = 69269CC61461D38300F69705 /* PBXTextBookmark */;
-			69269CD41461D42F00F69705 /* PBXTextBookmark */ = 69269CD41461D42F00F69705 /* PBXTextBookmark */;
-			69269CD51461D42F00F69705 /* PBXTextBookmark */ = 69269CD51461D42F00F69705 /* PBXTextBookmark */;
-			69269CD61461D42F00F69705 /* PBXTextBookmark */ = 69269CD61461D42F00F69705 /* PBXTextBookmark */;
-			69269CD71461D42F00F69705 /* PBXTextBookmark */ = 69269CD71461D42F00F69705 /* PBXTextBookmark */;
-			69269CD81461D44700F69705 /* PBXTextBookmark */ = 69269CD81461D44700F69705 /* PBXTextBookmark */;
-			69269CD91461D44700F69705 /* PBXTextBookmark */ = 69269CD91461D44700F69705 /* PBXTextBookmark */;
-			69269CDA1461D44700F69705 /* PBXTextBookmark */ = 69269CDA1461D44700F69705 /* PBXTextBookmark */;
-			69269CDB1461D44700F69705 /* PBXTextBookmark */ = 69269CDB1461D44700F69705 /* PBXTextBookmark */;
-			69269CE21461D4A800F69705 /* PBXTextBookmark */ = 69269CE21461D4A800F69705 /* PBXTextBookmark */;
-			69269CE31461D4A800F69705 /* PBXTextBookmark */ = 69269CE31461D4A800F69705 /* PBXTextBookmark */;
-			69269CE41461D51000F69705 /* PBXTextBookmark */ = 69269CE41461D51000F69705 /* PBXTextBookmark */;
-			69269CE51461D51000F69705 /* PBXTextBookmark */ = 69269CE51461D51000F69705 /* PBXTextBookmark */;
-			69269CEE1461D80400F69705 /* PBXTextBookmark */ = 69269CEE1461D80400F69705 /* PBXTextBookmark */;
-			69269CEF1461D80400F69705 /* PBXTextBookmark */ = 69269CEF1461D80400F69705 /* PBXTextBookmark */;
-			69269CF01461D80400F69705 /* PBXTextBookmark */ = 69269CF01461D80400F69705 /* PBXTextBookmark */;
-			69269CF11461D80400F69705 /* PBXTextBookmark */ = 69269CF11461D80400F69705 /* PBXTextBookmark */;
-			69269CF41461D82F00F69705 /* PBXTextBookmark */ = 69269CF41461D82F00F69705 /* PBXTextBookmark */;
-			69269CF51461D82F00F69705 /* PBXTextBookmark */ = 69269CF51461D82F00F69705 /* PBXTextBookmark */;
-			69269D241461D93A00F69705 /* PBXTextBookmark */ = 69269D241461D93A00F69705 /* PBXTextBookmark */;
-			69269D251461D93A00F69705 /* XCBuildMessageTextBookmark */ = 69269D251461D93A00F69705 /* XCBuildMessageTextBookmark */;
-			69269D261461D93A00F69705 /* PBXTextBookmark */ = 69269D261461D93A00F69705 /* PBXTextBookmark */;
-			69269D271461D93A00F69705 /* PBXTextBookmark */ = 69269D271461D93A00F69705 /* PBXTextBookmark */;
-			69269D2E1461D96400F69705 /* PBXTextBookmark */ = 69269D2E1461D96400F69705 /* PBXTextBookmark */;
-			69269D2F1461D96400F69705 /* PBXTextBookmark */ = 69269D2F1461D96400F69705 /* PBXTextBookmark */;
-			69269D341461D98A00F69705 /* PBXTextBookmark */ = 69269D341461D98A00F69705 /* PBXTextBookmark */;
-			69269D351461D98A00F69705 /* PBXTextBookmark */ = 69269D351461D98A00F69705 /* PBXTextBookmark */;
-			69269D361461D98A00F69705 /* PBXTextBookmark */ = 69269D361461D98A00F69705 /* PBXTextBookmark */;
-			69269D371461D98A00F69705 /* PBXTextBookmark */ = 69269D371461D98A00F69705 /* PBXTextBookmark */;
-			69269D3B1461DAFF00F69705 /* PBXTextBookmark */ = 69269D3B1461DAFF00F69705 /* PBXTextBookmark */;
-			69269D3C1461DAFF00F69705 /* PBXTextBookmark */ = 69269D3C1461DAFF00F69705 /* PBXTextBookmark */;
-			69269D3D1461DAFF00F69705 /* PBXTextBookmark */ = 69269D3D1461DAFF00F69705 /* PBXTextBookmark */;
-			69269D3E1461DAFF00F69705 /* PBXTextBookmark */ = 69269D3E1461DAFF00F69705 /* PBXTextBookmark */;
-			69269D451461DD8F00F69705 /* PBXTextBookmark */ = 69269D451461DD8F00F69705 /* PBXTextBookmark */;
-			69269D461461DD8F00F69705 /* PBXTextBookmark */ = 69269D461461DD8F00F69705 /* PBXTextBookmark */;
-			69269D471461E4B400F69705 /* PBXTextBookmark */ = 69269D471461E4B400F69705 /* PBXTextBookmark */;
-			69269D481461E4B400F69705 /* PBXTextBookmark */ = 69269D481461E4B400F69705 /* PBXTextBookmark */;
-			69269D551461E6FF00F69705 /* PBXTextBookmark */ = 69269D551461E6FF00F69705 /* PBXTextBookmark */;
-			69269D561461E6FF00F69705 /* PBXTextBookmark */ = 69269D561461E6FF00F69705 /* PBXTextBookmark */;
-			69269D571461E6FF00F69705 /* PBXTextBookmark */ = 69269D571461E6FF00F69705 /* PBXTextBookmark */;
-			69269D581461E6FF00F69705 /* PBXTextBookmark */ = 69269D581461E6FF00F69705 /* PBXTextBookmark */;
-			69269D631461E91100F69705 /* PBXTextBookmark */ = 69269D631461E91100F69705 /* PBXTextBookmark */;
-			69269D641461E91100F69705 /* PBXTextBookmark */ = 69269D641461E91100F69705 /* PBXTextBookmark */;
-			69269D651461E91100F69705 /* PBXTextBookmark */ = 69269D651461E91100F69705 /* PBXTextBookmark */;
-			69269D661461E91100F69705 /* PBXTextBookmark */ = 69269D661461E91100F69705 /* PBXTextBookmark */;
-			69269D6B1461E94700F69705 /* PBXTextBookmark */ = 69269D6B1461E94700F69705 /* PBXTextBookmark */;
-			69269D6C1461E94700F69705 /* PBXTextBookmark */ = 69269D6C1461E94700F69705 /* PBXTextBookmark */;
-			69269D7B1461EA4000F69705 /* PBXTextBookmark */ = 69269D7B1461EA4000F69705 /* PBXTextBookmark */;
-			69269D7C1461EA4000F69705 /* PBXTextBookmark */ = 69269D7C1461EA4000F69705 /* PBXTextBookmark */;
-			69269D811461EA6600F69705 /* PBXTextBookmark */ = 69269D811461EA6600F69705 /* PBXTextBookmark */;
-			69269D821461EA6600F69705 /* PBXTextBookmark */ = 69269D821461EA6600F69705 /* PBXTextBookmark */;
-			69269D891461EAB300F69705 /* PBXTextBookmark */ = 69269D891461EAB300F69705 /* PBXTextBookmark */;
-			69269D8A1461EAB300F69705 /* PBXTextBookmark */ = 69269D8A1461EAB300F69705 /* PBXTextBookmark */;
-			69269D931461EB5B00F69705 /* PBXTextBookmark */ = 69269D931461EB5B00F69705 /* PBXTextBookmark */;
-			69269D941461EB5B00F69705 /* PBXTextBookmark */ = 69269D941461EB5B00F69705 /* PBXTextBookmark */;
-			69269D9F1461EC0100F69705 /* PBXTextBookmark */ = 69269D9F1461EC0100F69705 /* PBXTextBookmark */;
-			69269DA01461EC0100F69705 /* PBXTextBookmark */ = 69269DA01461EC0100F69705 /* PBXTextBookmark */;
-			69269DA61461EC7400F69705 /* PBXTextBookmark */ = 69269DA61461EC7400F69705 /* PBXTextBookmark */;
-			69269DA71461EC7400F69705 /* PBXTextBookmark */ = 69269DA71461EC7400F69705 /* PBXTextBookmark */;
-			69269DA81461EC7400F69705 /* PBXTextBookmark */ = 69269DA81461EC7400F69705 /* PBXTextBookmark */;
-			69269DA91461EC7400F69705 /* PBXTextBookmark */ = 69269DA91461EC7400F69705 /* PBXTextBookmark */;
-			69269DB71461ED4F00F69705 /* PBXTextBookmark */ = 69269DB71461ED4F00F69705 /* PBXTextBookmark */;
-			69269DB81461ED4F00F69705 /* XCBuildMessageTextBookmark */ = 69269DB81461ED4F00F69705 /* XCBuildMessageTextBookmark */;
-			69269DB91461ED4F00F69705 /* PBXTextBookmark */ = 69269DB91461ED4F00F69705 /* PBXTextBookmark */;
-			69269DBC1461ED5100F69705 /* PBXTextBookmark */ = 69269DBC1461ED5100F69705 /* PBXTextBookmark */;
-			69269DBD1461ED5100F69705 /* PBXTextBookmark */ = 69269DBD1461ED5100F69705 /* PBXTextBookmark */;
-			69269DBE1461ED5100F69705 /* PBXTextBookmark */ = 69269DBE1461ED5100F69705 /* PBXTextBookmark */;
-			69269DBF1461ED5100F69705 /* PBXTextBookmark */ = 69269DBF1461ED5100F69705 /* PBXTextBookmark */;
-			69269DC61461ED9F00F69705 /* PBXTextBookmark */ = 69269DC61461ED9F00F69705 /* PBXTextBookmark */;
-			69269DC71461ED9F00F69705 /* PBXTextBookmark */ = 69269DC71461ED9F00F69705 /* PBXTextBookmark */;
-			69269DC81461ED9F00F69705 /* PBXTextBookmark */ = 69269DC81461ED9F00F69705 /* PBXTextBookmark */;
-			69269DC91461ED9F00F69705 /* PBXTextBookmark */ = 69269DC91461ED9F00F69705 /* PBXTextBookmark */;
-			69269DD01461EDB700F69705 /* PBXTextBookmark */ = 69269DD01461EDB700F69705 /* PBXTextBookmark */;
-			69269DD11461EDB700F69705 /* PBXTextBookmark */ = 69269DD11461EDB700F69705 /* PBXTextBookmark */;
-			69269DD61461EF0700F69705 /* PBXTextBookmark */ = 69269DD61461EF0700F69705 /* PBXTextBookmark */;
-			69269DD71461EF0700F69705 /* PBXTextBookmark */ = 69269DD71461EF0700F69705 /* PBXTextBookmark */;
-			69269DD81461EF0700F69705 /* PBXTextBookmark */ = 69269DD81461EF0700F69705 /* PBXTextBookmark */;
-			69269DD91461EF0700F69705 /* PBXTextBookmark */ = 69269DD91461EF0700F69705 /* PBXTextBookmark */;
-			69269DE11461EF2500F69705 /* PBXTextBookmark */ = 69269DE11461EF2500F69705 /* PBXTextBookmark */;
-			69269DE21461EF2500F69705 /* PBXTextBookmark */ = 69269DE21461EF2500F69705 /* PBXTextBookmark */;
-			69269DEB1461EF8E00F69705 /* PBXTextBookmark */ = 69269DEB1461EF8E00F69705 /* PBXTextBookmark */;
-			69269DEC1461EF8E00F69705 /* PBXTextBookmark */ = 69269DEC1461EF8E00F69705 /* PBXTextBookmark */;
-			69269DED1461EF8E00F69705 /* PBXTextBookmark */ = 69269DED1461EF8E00F69705 /* PBXTextBookmark */;
-			69269DEE1461EF8E00F69705 /* PBXTextBookmark */ = 69269DEE1461EF8E00F69705 /* PBXTextBookmark */;
-			69269DF21461F1ED00F69705 /* PBXTextBookmark */ = 69269DF21461F1ED00F69705 /* PBXTextBookmark */;
-			69269DF31461F1ED00F69705 /* PBXTextBookmark */ = 69269DF31461F1ED00F69705 /* PBXTextBookmark */;
-			69269DF41461F1ED00F69705 /* PBXTextBookmark */ = 69269DF41461F1ED00F69705 /* PBXTextBookmark */;
-			69269DFE1461F2F200F69705 /* PBXTextBookmark */ = 69269DFE1461F2F200F69705 /* PBXTextBookmark */;
-			69269DFF1461F2F200F69705 /* PBXTextBookmark */ = 69269DFF1461F2F200F69705 /* PBXTextBookmark */;
-			69269E011461F31100F69705 /* PBXTextBookmark */ = 69269E011461F31100F69705 /* PBXTextBookmark */;
-			69269E021461F31100F69705 /* PBXTextBookmark */ = 69269E021461F31100F69705 /* PBXTextBookmark */;
-			69269E041461F51500F69705 /* PBXTextBookmark */ = 69269E041461F51500F69705 /* PBXTextBookmark */;
-			69269E051461F51500F69705 /* PBXTextBookmark */ = 69269E051461F51500F69705 /* PBXTextBookmark */;
-			69269E131461F7C500F69705 /* PBXTextBookmark */ = 69269E131461F7C500F69705 /* PBXTextBookmark */;
-			69269E141461F7C500F69705 /* PBXTextBookmark */ = 69269E141461F7C500F69705 /* PBXTextBookmark */;
-			69269E151461F7C500F69705 /* PBXTextBookmark */ = 69269E151461F7C500F69705 /* PBXTextBookmark */;
-			69269E161461F7C500F69705 /* PBXTextBookmark */ = 69269E161461F7C500F69705 /* PBXTextBookmark */;
-			69269E201461F84900F69705 /* PBXTextBookmark */ = 69269E201461F84900F69705 /* PBXTextBookmark */;
-			69269E211461F84900F69705 /* PBXTextBookmark */ = 69269E211461F84900F69705 /* PBXTextBookmark */;
-			69269E221461F84900F69705 /* PBXTextBookmark */ = 69269E221461F84900F69705 /* PBXTextBookmark */;
-			69269E231461F84900F69705 /* PBXTextBookmark */ = 69269E231461F84900F69705 /* PBXTextBookmark */;
-			69269E2E1461F87A00F69705 /* PBXTextBookmark */ = 69269E2E1461F87A00F69705 /* PBXTextBookmark */;
-			69269E2F1461F87A00F69705 /* PBXTextBookmark */ = 69269E2F1461F87A00F69705 /* PBXTextBookmark */;
-			69269E361461FA1000F69705 /* PBXTextBookmark */ = 69269E361461FA1000F69705 /* PBXTextBookmark */;
-			69269E371461FA1000F69705 /* PBXTextBookmark */ = 69269E371461FA1000F69705 /* PBXTextBookmark */;
-			69269E381461FA1000F69705 /* PBXTextBookmark */ = 69269E381461FA1000F69705 /* PBXTextBookmark */;
-			69269E391461FA1000F69705 /* PBXTextBookmark */ = 69269E391461FA1000F69705 /* PBXTextBookmark */;
-			69269E4D1461FC6300F69705 /* PBXTextBookmark */ = 69269E4D1461FC6300F69705 /* PBXTextBookmark */;
-			69269E4E1461FC6300F69705 /* PBXTextBookmark */ = 69269E4E1461FC6300F69705 /* PBXTextBookmark */;
-			69269E4F1461FC6300F69705 /* PBXTextBookmark */ = 69269E4F1461FC6300F69705 /* PBXTextBookmark */;
-			69269E501461FC6300F69705 /* PBXTextBookmark */ = 69269E501461FC6300F69705 /* PBXTextBookmark */;
-			69269E591461FF5A00F69705 /* PBXTextBookmark */ = 69269E591461FF5A00F69705 /* PBXTextBookmark */;
-			69269E5A1461FF5A00F69705 /* PBXTextBookmark */ = 69269E5A1461FF5A00F69705 /* PBXTextBookmark */;
-			69269E5D1461FFB900F69705 /* PBXTextBookmark */ = 69269E5D1461FFB900F69705 /* PBXTextBookmark */;
-			69269E5E1461FFB900F69705 /* PBXTextBookmark */ = 69269E5E1461FFB900F69705 /* PBXTextBookmark */;
-			69269E641461FFEF00F69705 /* PBXTextBookmark */ = 69269E641461FFEF00F69705 /* PBXTextBookmark */;
-			69269E651461FFEF00F69705 /* PBXTextBookmark */ = 69269E651461FFEF00F69705 /* PBXTextBookmark */;
-			69269E681462003D00F69705 /* PBXTextBookmark */ = 69269E681462003D00F69705 /* PBXTextBookmark */;
-			69269E691462003D00F69705 /* PBXTextBookmark */ = 69269E691462003D00F69705 /* PBXTextBookmark */;
-			69269E7B1462011400F69705 /* PBXTextBookmark */ = 69269E7B1462011400F69705 /* PBXTextBookmark */;
-			69269E7C1462011400F69705 /* PBXTextBookmark */ = 69269E7C1462011400F69705 /* PBXTextBookmark */;
-			69269E7D1462011400F69705 /* PBXTextBookmark */ = 69269E7D1462011400F69705 /* PBXTextBookmark */;
-			69269E7E1462011400F69705 /* PBXTextBookmark */ = 69269E7E1462011400F69705 /* PBXTextBookmark */;
-			69269E871462087600F69705 /* PBXTextBookmark */ = 69269E871462087600F69705 /* PBXTextBookmark */;
-			69269E881462087600F69705 /* PBXTextBookmark */ = 69269E881462087600F69705 /* PBXTextBookmark */;
-			69269E91146208B300F69705 /* PBXTextBookmark */ = 69269E91146208B300F69705 /* PBXTextBookmark */;
-			69269E92146208B300F69705 /* PBXTextBookmark */ = 69269E92146208B300F69705 /* PBXTextBookmark */;
-			69269E97146208CF00F69705 /* PBXTextBookmark */ = 69269E97146208CF00F69705 /* PBXTextBookmark */;
-			69269E98146208CF00F69705 /* PBXTextBookmark */ = 69269E98146208CF00F69705 /* PBXTextBookmark */;
-			69269E9F146208D800F69705 /* PBXTextBookmark */ = 69269E9F146208D800F69705 /* PBXTextBookmark */;
-			69269EA0146208D800F69705 /* PBXTextBookmark */ = 69269EA0146208D800F69705 /* PBXTextBookmark */;
-			69269EA71462091A00F69705 /* PBXTextBookmark */ = 69269EA71462091A00F69705 /* PBXTextBookmark */;
-			69269EA81462091A00F69705 /* PBXTextBookmark */ = 69269EA81462091A00F69705 /* PBXTextBookmark */;
-			69269EAF1462092900F69705 /* PBXTextBookmark */ = 69269EAF1462092900F69705 /* PBXTextBookmark */;
-			69269EB01462092900F69705 /* PBXTextBookmark */ = 69269EB01462092900F69705 /* PBXTextBookmark */;
-			69269EB91462096500F69705 /* PBXTextBookmark */ = 69269EB91462096500F69705 /* PBXTextBookmark */;
-			69269EBA1462096500F69705 /* PBXTextBookmark */ = 69269EBA1462096500F69705 /* PBXTextBookmark */;
-			69269EC1146209C300F69705 /* PBXTextBookmark */ = 69269EC1146209C300F69705 /* PBXTextBookmark */;
-			69269EC2146209C300F69705 /* PBXTextBookmark */ = 69269EC2146209C300F69705 /* PBXTextBookmark */;
-			69269EC714620A5300F69705 /* PBXTextBookmark */ = 69269EC714620A5300F69705 /* PBXTextBookmark */;
-			69269EC814620A5300F69705 /* PBXTextBookmark */ = 69269EC814620A5300F69705 /* PBXTextBookmark */;
-			69269ED014620AFE00F69705 /* PBXTextBookmark */ = 69269ED014620AFE00F69705 /* PBXTextBookmark */;
-			69269ED114620AFE00F69705 /* PBXTextBookmark */ = 69269ED114620AFE00F69705 /* PBXTextBookmark */;
-			69269ED214620AFE00F69705 /* PBXTextBookmark */ = 69269ED214620AFE00F69705 /* PBXTextBookmark */;
-			69269ED314620AFE00F69705 /* PBXTextBookmark */ = 69269ED314620AFE00F69705 /* PBXTextBookmark */;
-			69269ED414620AFE00F69705 /* PBXTextBookmark */ = 69269ED414620AFE00F69705 /* PBXTextBookmark */;
-			69269EDB14620B2900F69705 /* PBXTextBookmark */ = 69269EDB14620B2900F69705 /* PBXTextBookmark */;
-			69269EDC14620B2900F69705 /* PBXTextBookmark */ = 69269EDC14620B2900F69705 /* PBXTextBookmark */;
-			69269EDD14620B2900F69705 /* PBXTextBookmark */ = 69269EDD14620B2900F69705 /* PBXTextBookmark */;
-			69269EDE14620B2900F69705 /* PBXTextBookmark */ = 69269EDE14620B2900F69705 /* PBXTextBookmark */;
-			69269EE514620B6100F69705 /* PBXTextBookmark */ = 69269EE514620B6100F69705 /* PBXTextBookmark */;
-			69269EE614620B6100F69705 /* PBXTextBookmark */ = 69269EE614620B6100F69705 /* PBXTextBookmark */;
-			69269EEF14620B9E00F69705 /* PBXTextBookmark */ = 69269EEF14620B9E00F69705 /* PBXTextBookmark */;
-			69269EF014620B9E00F69705 /* PBXTextBookmark */ = 69269EF014620B9E00F69705 /* PBXTextBookmark */;
-			69269EF514620BAB00F69705 /* PBXTextBookmark */ = 69269EF514620BAB00F69705 /* PBXTextBookmark */;
-			69269EF614620BAB00F69705 /* PBXTextBookmark */ = 69269EF614620BAB00F69705 /* PBXTextBookmark */;
-			69269EFD14620BB600F69705 /* PBXTextBookmark */ = 69269EFD14620BB600F69705 /* PBXTextBookmark */;
-			69269EFE14620BB600F69705 /* PBXTextBookmark */ = 69269EFE14620BB600F69705 /* PBXTextBookmark */;
-			69269F0314620BC100F69705 /* PBXTextBookmark */ = 69269F0314620BC100F69705 /* PBXTextBookmark */;
-			69269F0414620BC100F69705 /* PBXTextBookmark */ = 69269F0414620BC100F69705 /* PBXTextBookmark */;
-			69269F0C14620C1B00F69705 /* PBXTextBookmark */ = 69269F0C14620C1B00F69705 /* PBXTextBookmark */;
-			69269F0D14620C1B00F69705 /* PBXTextBookmark */ = 69269F0D14620C1B00F69705 /* PBXTextBookmark */;
-			69269F1014620C5700F69705 /* PBXTextBookmark */ = 69269F1014620C5700F69705 /* PBXTextBookmark */;
-			69269F1114620C5700F69705 /* PBXTextBookmark */ = 69269F1114620C5700F69705 /* PBXTextBookmark */;
-			69269F1714620C6800F69705 /* PBXTextBookmark */ = 69269F1714620C6800F69705 /* PBXTextBookmark */;
-			69269F1814620C6800F69705 /* PBXTextBookmark */ = 69269F1814620C6800F69705 /* PBXTextBookmark */;
-			69269F1D14620C8900F69705 /* PBXTextBookmark */ = 69269F1D14620C8900F69705 /* PBXTextBookmark */;
-			69269F1E14620C8900F69705 /* PBXTextBookmark */ = 69269F1E14620C8900F69705 /* PBXTextBookmark */;
-			69269F5214620FC500F69705 /* PBXTextBookmark */ = 69269F5214620FC500F69705 /* PBXTextBookmark */;
-			69269F5314620FC500F69705 /* PBXTextBookmark */ = 69269F5314620FC500F69705 /* PBXTextBookmark */;
-			69269F5414620FC500F69705 /* PBXTextBookmark */ = 69269F5414620FC500F69705 /* PBXTextBookmark */;
-			69269F5514620FC500F69705 /* PBXTextBookmark */ = 69269F5514620FC500F69705 /* PBXTextBookmark */;
-			69269F5F14620FFB00F69705 /* PBXTextBookmark */ = 69269F5F14620FFB00F69705 /* PBXTextBookmark */;
-			69269F6A146210A800F69705 /* PBXTextBookmark */ = 69269F6A146210A800F69705 /* PBXTextBookmark */;
-			69269F6B146210A800F69705 /* PBXTextBookmark */ = 69269F6B146210A800F69705 /* PBXTextBookmark */;
-			69269F7B1462110A00F69705 /* PBXTextBookmark */ = 69269F7B1462110A00F69705 /* PBXTextBookmark */;
-			69269F8A1462131300F69705 /* PBXTextBookmark */ = 69269F8A1462131300F69705 /* PBXTextBookmark */;
-			69269F8B1462131300F69705 /* PBXTextBookmark */ = 69269F8B1462131300F69705 /* PBXTextBookmark */;
-			69269F8C1462131300F69705 /* PBXTextBookmark */ = 69269F8C1462131300F69705 /* PBXTextBookmark */;
-			69269F991462133E00F69705 /* PBXTextBookmark */ = 69269F991462133E00F69705 /* PBXTextBookmark */;
-			69269FA01462137A00F69705 /* PBXTextBookmark */ = 69269FA01462137A00F69705 /* PBXTextBookmark */;
-			69269FA71462140200F69705 /* PBXTextBookmark */ = 69269FA71462140200F69705 /* PBXTextBookmark */;
-			69269FAE1462141200F69705 /* PBXTextBookmark */ = 69269FAE1462141200F69705 /* PBXTextBookmark */;
-			69269FB1146237EA00F69705 /* PBXTextBookmark */ = 69269FB1146237EA00F69705 /* PBXTextBookmark */;
-			69269FB2146237EA00F69705 /* PBXTextBookmark */ = 69269FB2146237EA00F69705 /* PBXTextBookmark */;
-			69269FB3146237EA00F69705 /* PBXTextBookmark */ = 69269FB3146237EA00F69705 /* PBXTextBookmark */;
-			69269FBD14623A5A00F69705 /* PBXTextBookmark */ = 69269FBD14623A5A00F69705 /* PBXTextBookmark */;
-			69269FBE14623A5A00F69705 /* PBXTextBookmark */ = 69269FBE14623A5A00F69705 /* PBXTextBookmark */;
-			69269FBF14623A5A00F69705 /* PBXTextBookmark */ = 69269FBF14623A5A00F69705 /* PBXTextBookmark */;
-			69269FC014623A5A00F69705 /* PBXTextBookmark */ = 69269FC014623A5A00F69705 /* PBXTextBookmark */;
-			69269FC414623C6700F69705 /* PBXTextBookmark */ = 69269FC414623C6700F69705 /* PBXTextBookmark */;
-			69269FC514623C6700F69705 /* PBXTextBookmark */ = 69269FC514623C6700F69705 /* PBXTextBookmark */;
-			69269FC614623C6700F69705 /* PBXTextBookmark */ = 69269FC614623C6700F69705 /* PBXTextBookmark */;
-			69269FCA14623E3800F69705 /* PBXTextBookmark */ = 69269FCA14623E3800F69705 /* PBXTextBookmark */;
-			69269FD014623EB800F69705 /* PBXTextBookmark */ = 69269FD014623EB800F69705 /* PBXTextBookmark */;
-			69269FD214623F6800F69705 /* PBXTextBookmark */ = 69269FD214623F6800F69705 /* PBXTextBookmark */;
-			69269FD814623F8800F69705 /* PBXTextBookmark */ = 69269FD814623F8800F69705 /* PBXTextBookmark */;
-			69269FE61462402B00F69705 /* PBXTextBookmark */ = 69269FE61462402B00F69705 /* PBXTextBookmark */;
-			69269FE71462402B00F69705 /* PBXTextBookmark */ = 69269FE71462402B00F69705 /* PBXTextBookmark */;
-			69269FEB1462413F00F69705 /* PBXTextBookmark */ = 69269FEB1462413F00F69705 /* PBXTextBookmark */;
-			69269FF21462414C00F69705 /* PBXTextBookmark */ = 69269FF21462414C00F69705 /* PBXTextBookmark */;
-			69269FF91462423A00F69705 /* PBXTextBookmark */ = 69269FF91462423A00F69705 /* PBXTextBookmark */;
-			6926A0001462426D00F69705 /* PBXTextBookmark */ = 6926A0001462426D00F69705 /* PBXTextBookmark */;
-			6926A007146242ED00F69705 /* PBXTextBookmark */ = 6926A007146242ED00F69705 /* PBXTextBookmark */;
-			6926A00E146243CA00F69705 /* PBXTextBookmark */ = 6926A00E146243CA00F69705 /* PBXTextBookmark */;
-			6926A0151462445400F69705 /* PBXTextBookmark */ = 6926A0151462445400F69705 /* PBXTextBookmark */;
-			6926A01C1462449200F69705 /* PBXTextBookmark */ = 6926A01C1462449200F69705 /* PBXTextBookmark */;
-			6926A0231462454F00F69705 /* PBXTextBookmark */ = 6926A0231462454F00F69705 /* PBXTextBookmark */;
-			6926A02A1462457A00F69705 /* PBXTextBookmark */ = 6926A02A1462457A00F69705 /* PBXTextBookmark */;
-			6926A033146245AE00F69705 /* PBXTextBookmark */ = 6926A033146245AE00F69705 /* PBXTextBookmark */;
-			6926A03A1462D95600F69705 /* PBXTextBookmark */ = 6926A03A1462D95600F69705 /* PBXTextBookmark */;
-			6926A0411462D98D00F69705 /* PBXTextBookmark */ = 6926A0411462D98D00F69705 /* PBXTextBookmark */;
-			6926A0461462D9B900F69705 /* PBXTextBookmark */ = 6926A0461462D9B900F69705 /* PBXTextBookmark */;
-			6926A04A1462DAB900F69705 /* PBXTextBookmark */ = 6926A04A1462DAB900F69705 /* PBXTextBookmark */;
-			6926A0501462DAE200F69705 /* PBXTextBookmark */ = 6926A0501462DAE200F69705 /* PBXTextBookmark */;
-			6926A0571462DC7E00F69705 /* PBXTextBookmark */ = 6926A0571462DC7E00F69705 /* PBXTextBookmark */;
-			6926A0641462DCB200F69705 /* PBXTextBookmark */ = 6926A0641462DCB200F69705 /* PBXTextBookmark */;
-			6926A06B1462DCD300F69705 /* PBXTextBookmark */ = 6926A06B1462DCD300F69705 /* PBXTextBookmark */;
-			6926A0721462DEE000F69705 /* PBXTextBookmark */ = 6926A0721462DEE000F69705 /* PBXTextBookmark */;
-			6926A0791462DF3A00F69705 /* PBXTextBookmark */ = 6926A0791462DF3A00F69705 /* PBXTextBookmark */;
-			6926A0801462DF6000F69705 /* PBXTextBookmark */ = 6926A0801462DF6000F69705 /* PBXTextBookmark */;
-			6926A0871462DF7800F69705 /* PBXTextBookmark */ = 6926A0871462DF7800F69705 /* PBXTextBookmark */;
-			6926A0901462DFB200F69705 /* PBXTextBookmark */ = 6926A0901462DFB200F69705 /* PBXTextBookmark */;
-			6926A09D1462E09C00F69705 /* PBXTextBookmark */ = 6926A09D1462E09C00F69705 /* PBXTextBookmark */;
-			6926A09E1462E09C00F69705 /* PBXTextBookmark */ = 6926A09E1462E09C00F69705 /* PBXTextBookmark */;
-			6926A09F1462E09C00F69705 /* PBXTextBookmark */ = 6926A09F1462E09C00F69705 /* PBXTextBookmark */;
-			6926A0B01462E1BE00F69705 /* PBXTextBookmark */ = 6926A0B01462E1BE00F69705 /* PBXTextBookmark */;
-			6926A0B11462E1BE00F69705 /* PBXTextBookmark */ = 6926A0B11462E1BE00F69705 /* PBXTextBookmark */;
-			6926A0B21462E1BE00F69705 /* PBXTextBookmark */ = 6926A0B21462E1BE00F69705 /* PBXTextBookmark */;
-			6926A0BB1462E1D900F69705 /* PBXTextBookmark */ = 6926A0BB1462E1D900F69705 /* PBXTextBookmark */;
-			6926A0C21462E20500F69705 /* PBXTextBookmark */ = 6926A0C21462E20500F69705 /* PBXTextBookmark */;
-			6926A0C71462E29800F69705 /* PBXTextBookmark */ = 6926A0C71462E29800F69705 /* PBXTextBookmark */;
-			6926A0CD1462EF4000F69705 /* PBXTextBookmark */ = 6926A0CD1462EF4000F69705 /* PBXTextBookmark */;
-			6926A0DC1462EFBF00F69705 /* PBXTextBookmark */ = 6926A0DC1462EFBF00F69705 /* PBXTextBookmark */;
-			6926A0DF146340CA00F69705 /* PBXTextBookmark */ = 6926A0DF146340CA00F69705 /* PBXTextBookmark */;
-			6926A0E0146340CA00F69705 /* PBXTextBookmark */ = 6926A0E0146340CA00F69705 /* PBXTextBookmark */;
-			6926A0E1146340CA00F69705 /* PBXTextBookmark */ = 6926A0E1146340CA00F69705 /* PBXTextBookmark */;
-			6926A0EE1463428800F69705 /* PBXTextBookmark */ = 6926A0EE1463428800F69705 /* PBXTextBookmark */;
-			6926A0EF1463428800F69705 /* PBXTextBookmark */ = 6926A0EF1463428800F69705 /* PBXTextBookmark */;
-			6926A0F01463428800F69705 /* PBXTextBookmark */ = 6926A0F01463428800F69705 /* PBXTextBookmark */;
-			6926A0FE1463434000F69705 /* PBXTextBookmark */ = 6926A0FE1463434000F69705 /* PBXTextBookmark */;
-			6926A0FF1463434000F69705 /* PBXTextBookmark */ = 6926A0FF1463434000F69705 /* PBXTextBookmark */;
-			6926A1001463434000F69705 /* PBXTextBookmark */ = 6926A1001463434000F69705 /* PBXTextBookmark */;
-			6926A109146348FB00F69705 /* PBXTextBookmark */ = 6926A109146348FB00F69705 /* PBXTextBookmark */;
-			6926A10A146348FB00F69705 /* PBXTextBookmark */ = 6926A10A146348FB00F69705 /* PBXTextBookmark */;
-			6926A10B146348FB00F69705 /* PBXTextBookmark */ = 6926A10B146348FB00F69705 /* PBXTextBookmark */;
-			6926A11B14634A1600F69705 /* PBXTextBookmark */ = 6926A11B14634A1600F69705 /* PBXTextBookmark */;
-			6926A11C14634A1600F69705 /* PBXTextBookmark */ = 6926A11C14634A1600F69705 /* PBXTextBookmark */;
-			6926A11D14634A1600F69705 /* PBXTextBookmark */ = 6926A11D14634A1600F69705 /* PBXTextBookmark */;
-			6926A12614634ACB00F69705 /* PBXTextBookmark */ = 6926A12614634ACB00F69705 /* PBXTextBookmark */;
-			6926A13014634B6900F69705 /* PBXTextBookmark */ = 6926A13014634B6900F69705 /* PBXTextBookmark */;
-			6926A13114634B6900F69705 /* PBXTextBookmark */ = 6926A13114634B6900F69705 /* PBXTextBookmark */;
-			6926A13214634B6900F69705 /* PBXTextBookmark */ = 6926A13214634B6900F69705 /* PBXTextBookmark */;
-			6926A13914634C0A00F69705 /* PBXTextBookmark */ = 6926A13914634C0A00F69705 /* PBXTextBookmark */;
-			6926A13E14634C5000F69705 /* PBXTextBookmark */ = 6926A13E14634C5000F69705 /* PBXTextBookmark */;
-			6926A14414634C9E00F69705 /* PBXTextBookmark */ = 6926A14414634C9E00F69705 /* PBXTextBookmark */;
-			6926A14914634FF400F69705 /* PBXTextBookmark */ = 6926A14914634FF400F69705 /* PBXTextBookmark */;
-			6926A14A14634FF400F69705 /* PBXTextBookmark */ = 6926A14A14634FF400F69705 /* PBXTextBookmark */;
-			6926A14B14634FF400F69705 /* PBXTextBookmark */ = 6926A14B14634FF400F69705 /* PBXTextBookmark */;
-			6926A14F1463503900F69705 /* PBXTextBookmark */ = 6926A14F1463503900F69705 /* PBXTextBookmark */;
-			6926A1551463508400F69705 /* PBXTextBookmark */ = 6926A1551463508400F69705 /* PBXTextBookmark */;
-			6926A1561463508400F69705 /* PBXTextBookmark */ = 6926A1561463508400F69705 /* PBXTextBookmark */;
-			6926A1571463508400F69705 /* PBXTextBookmark */ = 6926A1571463508400F69705 /* PBXTextBookmark */;
-			6926A15B146350B600F69705 /* PBXTextBookmark */ = 6926A15B146350B600F69705 /* PBXTextBookmark */;
-			6926A15C146350B600F69705 /* PBXTextBookmark */ = 6926A15C146350B600F69705 /* PBXTextBookmark */;
-			6926A15D146350B600F69705 /* PBXTextBookmark */ = 6926A15D146350B600F69705 /* PBXTextBookmark */;
-			6926A15E146350B600F69705 /* PBXTextBookmark */ = 6926A15E146350B600F69705 /* PBXTextBookmark */;
-			6926A160146350E300F69705 /* PBXTextBookmark */ = 6926A160146350E300F69705 /* PBXTextBookmark */;
-			6926A1621463511900F69705 /* PBXTextBookmark */ = 6926A1621463511900F69705 /* PBXTextBookmark */;
-			6926A1661463513900F69705 /* PBXTextBookmark */ = 6926A1661463513900F69705 /* PBXTextBookmark */;
-			6926A16A1463517900F69705 /* PBXTextBookmark */ = 6926A16A1463517900F69705 /* PBXTextBookmark */;
-			6926A1701463518E00F69705 /* PBXTextBookmark */ = 6926A1701463518E00F69705 /* PBXTextBookmark */;
-			6926A1771463520200F69705 /* PBXTextBookmark */ = 6926A1771463520200F69705 /* PBXTextBookmark */;
-			6926A17C1463521400F69705 /* PBXTextBookmark */ = 6926A17C1463521400F69705 /* PBXTextBookmark */;
-			6926A1831463522C00F69705 /* PBXTextBookmark */ = 6926A1831463522C00F69705 /* PBXTextBookmark */;
-			6926A18A1463560A00F69705 /* PBXTextBookmark */ = 6926A18A1463560A00F69705 /* PBXTextBookmark */;
-			6926A18B1463560A00F69705 /* PBXTextBookmark */ = 6926A18B1463560A00F69705 /* PBXTextBookmark */;
-			6926A18C1463560A00F69705 /* PBXTextBookmark */ = 6926A18C1463560A00F69705 /* PBXTextBookmark */;
-			6926A1951463569500F69705 /* PBXTextBookmark */ = 6926A1951463569500F69705 /* PBXTextBookmark */;
-			6926A19C1463574C00F69705 /* PBXTextBookmark */ = 6926A19C1463574C00F69705 /* PBXTextBookmark */;
-			6926A19D1463574C00F69705 /* PBXTextBookmark */ = 6926A19D1463574C00F69705 /* PBXTextBookmark */;
-			6926A19E1463574C00F69705 /* PBXTextBookmark */ = 6926A19E1463574C00F69705 /* PBXTextBookmark */;
-			6926A1A51463576100F69705 /* PBXTextBookmark */ = 6926A1A51463576100F69705 /* PBXTextBookmark */;
-			6926A1AC1463578B00F69705 /* PBXTextBookmark */ = 6926A1AC1463578B00F69705 /* PBXTextBookmark */;
-			6926A1B3146357A900F69705 /* PBXTextBookmark */ = 6926A1B3146357A900F69705 /* PBXTextBookmark */;
-			6926A1C81463585300F69705 /* PBXTextBookmark */ = 6926A1C81463585300F69705 /* PBXTextBookmark */;
-			6926A1C91463585300F69705 /* PBXTextBookmark */ = 6926A1C91463585300F69705 /* PBXTextBookmark */;
-			6926A1CA1463585300F69705 /* PBXTextBookmark */ = 6926A1CA1463585300F69705 /* PBXTextBookmark */;
-			6926A1D0146358C100F69705 /* PBXTextBookmark */ = 6926A1D0146358C100F69705 /* PBXTextBookmark */;
-			6926A1D1146358C100F69705 /* PBXTextBookmark */ = 6926A1D1146358C100F69705 /* PBXTextBookmark */;
-			6926A1D71463595400F69705 /* PBXTextBookmark */ = 6926A1D71463595400F69705 /* PBXTextBookmark */;
-			6926A1E1146359AE00F69705 /* PBXTextBookmark */ = 6926A1E1146359AE00F69705 /* PBXTextBookmark */;
-			6926A1E6146359BE00F69705 /* PBXTextBookmark */ = 6926A1E6146359BE00F69705 /* PBXTextBookmark */;
-			6926A1F314635B3B00F69705 /* PBXTextBookmark */ = 6926A1F314635B3B00F69705 /* PBXTextBookmark */;
-			6926A1FA14635B4E00F69705 /* PBXTextBookmark */ = 6926A1FA14635B4E00F69705 /* PBXTextBookmark */;
-			6926A20A14635B7E00F69705 /* PBXTextBookmark */ = 6926A20A14635B7E00F69705 /* PBXTextBookmark */;
-			6926A21B14635B9D00F69705 /* PBXTextBookmark */ = 6926A21B14635B9D00F69705 /* PBXTextBookmark */;
-			6926A22E14635BE700F69705 /* PBXTextBookmark */ = 6926A22E14635BE700F69705 /* PBXTextBookmark */;
-			6926A23E14635C4500F69705 /* PBXTextBookmark */ = 6926A23E14635C4500F69705 /* PBXTextBookmark */;
-			6926A24B14635C6E00F69705 /* PBXTextBookmark */ = 6926A24B14635C6E00F69705 /* PBXTextBookmark */;
-			6926A25C14635CF500F69705 /* PBXTextBookmark */ = 6926A25C14635CF500F69705 /* PBXTextBookmark */;
-			6926A26714635D4A00F69705 /* PBXTextBookmark */ = 6926A26714635D4A00F69705 /* PBXTextBookmark */;
-			6926A26D14635D8200F69705 /* PBXTextBookmark */ = 6926A26D14635D8200F69705 /* PBXTextBookmark */;
-			6926A27314635DEA00F69705 /* PBXTextBookmark */ = 6926A27314635DEA00F69705 /* PBXTextBookmark */;
-			6926A28114635EEC00F69705 /* PBXTextBookmark */ = 6926A28114635EEC00F69705 /* PBXTextBookmark */;
-			6926A28A14635EF900F69705 /* PBXTextBookmark */ = 6926A28A14635EF900F69705 /* PBXTextBookmark */;
-			6926A28B14635EF900F69705 /* PBXTextBookmark */ = 6926A28B14635EF900F69705 /* PBXTextBookmark */;
-			6926A29114635F5E00F69705 /* PBXTextBookmark */ = 6926A29114635F5E00F69705 /* PBXTextBookmark */;
-			6926A29214635F5E00F69705 /* PBXTextBookmark */ = 6926A29214635F5E00F69705 /* PBXTextBookmark */;
-			6926A29914635FBD00F69705 /* PBXTextBookmark */ = 6926A29914635FBD00F69705 /* PBXTextBookmark */;
-			6926A2A214635FF000F69705 /* PBXTextBookmark */ = 6926A2A214635FF000F69705 /* PBXTextBookmark */;
-			6926A2AB1463601300F69705 /* PBXTextBookmark */ = 6926A2AB1463601300F69705 /* PBXTextBookmark */;
-			6926A2B21463603600F69705 /* PBXTextBookmark */ = 6926A2B21463603600F69705 /* PBXTextBookmark */;
-			6926A2B91463605A00F69705 /* PBXTextBookmark */ = 6926A2B91463605A00F69705 /* PBXTextBookmark */;
-			6926A2BC1463607D00F69705 /* PBXTextBookmark */ = 6926A2BC1463607D00F69705 /* PBXTextBookmark */;
-			6926A2C4146360ED00F69705 /* PBXTextBookmark */ = 6926A2C4146360ED00F69705 /* PBXTextBookmark */;
-			6926A2CD1463613E00F69705 /* PBXTextBookmark */ = 6926A2CD1463613E00F69705 /* PBXTextBookmark */;
+			69269F5214620FC500F69705 = 69269F5214620FC500F69705 /* PBXTextBookmark */;
+			69269F5314620FC500F69705 = 69269F5314620FC500F69705 /* PBXTextBookmark */;
+			6926A15B146350B600F69705 = 6926A15B146350B600F69705 /* PBXTextBookmark */;
+			6926A2F4146376F100F69705 = 6926A2F4146376F100F69705 /* PBXTextBookmark */;
+			6926A484146471E800F69705 = 6926A484146471E800F69705 /* PBXTextBookmark */;
+			6926A485146471E800F69705 = 6926A485146471E800F69705 /* PBXTextBookmark */;
+			6926A4E21465DFEA00F69705 = 6926A4E21465DFEA00F69705 /* PBXTextBookmark */;
+			6926A4FD1465E68800F69705 /* PBXTextBookmark */ = 6926A4FD1465E68800F69705 /* PBXTextBookmark */;
+			6926A5051469D77400F69705 /* PBXTextBookmark */ = 6926A5051469D77400F69705 /* PBXTextBookmark */;
+			6926A5101469DAF400F69705 /* PBXTextBookmark */ = 6926A5101469DAF400F69705 /* PBXTextBookmark */;
+			6926A5161469DB5600F69705 /* PBXTextBookmark */ = 6926A5161469DB5600F69705 /* PBXTextBookmark */;
+			6926A51D1469DB9700F69705 /* PBXTextBookmark */ = 6926A51D1469DB9700F69705 /* PBXTextBookmark */;
+			6926A52C1469DCC900F69705 /* PBXTextBookmark */ = 6926A52C1469DCC900F69705 /* PBXTextBookmark */;
+			6926A52D1469DCC900F69705 /* PBXTextBookmark */ = 6926A52D1469DCC900F69705 /* PBXTextBookmark */;
+			6926A53C1469DD0300F69705 /* PBXTextBookmark */ = 6926A53C1469DD0300F69705 /* PBXTextBookmark */;
+			6926A5451469DFAA00F69705 /* PBXTextBookmark */ = 6926A5451469DFAA00F69705 /* PBXTextBookmark */;
+			6926A5521469E07800F69705 /* PBXTextBookmark */ = 6926A5521469E07800F69705 /* PBXTextBookmark */;
+			6926A58B1469E66900F69705 /* PBXTextBookmark */ = 6926A58B1469E66900F69705 /* PBXTextBookmark */;
+			6926A58C1469E66900F69705 /* PBXTextBookmark */ = 6926A58C1469E66900F69705 /* PBXTextBookmark */;
+			6926A58D1469E66900F69705 /* PBXTextBookmark */ = 6926A58D1469E66900F69705 /* PBXTextBookmark */;
+			6926A58E1469E66900F69705 /* PBXTextBookmark */ = 6926A58E1469E66900F69705 /* PBXTextBookmark */;
+			6926A5A11469EA0B00F69705 /* PBXTextBookmark */ = 6926A5A11469EA0B00F69705 /* PBXTextBookmark */;
+			6926A5A21469EA0B00F69705 /* PBXTextBookmark */ = 6926A5A21469EA0B00F69705 /* PBXTextBookmark */;
+			6926A5A31469EA0B00F69705 /* PBXTextBookmark */ = 6926A5A31469EA0B00F69705 /* PBXTextBookmark */;
+			6926A5AD1469EA3A00F69705 /* PBXTextBookmark */ = 6926A5AD1469EA3A00F69705 /* PBXTextBookmark */;
+			6926A5B11469EB4E00F69705 /* PBXTextBookmark */ = 6926A5B11469EB4E00F69705 /* PBXTextBookmark */;
+			6926A5B21469EB4E00F69705 /* PBXTextBookmark */ = 6926A5B21469EB4E00F69705 /* PBXTextBookmark */;
+			6926A5B31469EB4E00F69705 /* PBXTextBookmark */ = 6926A5B31469EB4E00F69705 /* PBXTextBookmark */;
+			6926A5B51469EC5000F69705 /* PBXTextBookmark */ = 6926A5B51469EC5000F69705 /* PBXTextBookmark */;
+			6926A5C51469EE2F00F69705 /* PBXTextBookmark */ = 6926A5C51469EE2F00F69705 /* PBXTextBookmark */;
+			6926A5C61469EE2F00F69705 /* PBXTextBookmark */ = 6926A5C61469EE2F00F69705 /* PBXTextBookmark */;
+			6926A5C71469EE2F00F69705 /* PBXTextBookmark */ = 6926A5C71469EE2F00F69705 /* PBXTextBookmark */;
+			6926A5CB1469EE8F00F69705 /* PBXTextBookmark */ = 6926A5CB1469EE8F00F69705 /* PBXTextBookmark */;
+			6926A5E41469EF5D00F69705 /* PBXTextBookmark */ = 6926A5E41469EF5D00F69705 /* PBXTextBookmark */;
+			6926A5ED1469EF8C00F69705 /* PBXTextBookmark */ = 6926A5ED1469EF8C00F69705 /* PBXTextBookmark */;
+			6926A5F51469F04600F69705 /* PBXTextBookmark */ = 6926A5F51469F04600F69705 /* PBXTextBookmark */;
+			6926A6061469F14800F69705 /* PBXTextBookmark */ = 6926A6061469F14800F69705 /* PBXTextBookmark */;
+			6926A6071469F14800F69705 /* PBXTextBookmark */ = 6926A6071469F14800F69705 /* PBXTextBookmark */;
+			6926A6081469F14800F69705 /* PBXTextBookmark */ = 6926A6081469F14800F69705 /* PBXTextBookmark */;
+			6926A6241469F85000F69705 /* PBXTextBookmark */ = 6926A6241469F85000F69705 /* PBXTextBookmark */;
+			6926A6251469F85000F69705 /* PBXTextBookmark */ = 6926A6251469F85000F69705 /* PBXTextBookmark */;
+			6926A6261469F85000F69705 /* PBXTextBookmark */ = 6926A6261469F85000F69705 /* PBXTextBookmark */;
+			6926A6281469F8EC00F69705 /* PBXTextBookmark */ = 6926A6281469F8EC00F69705 /* PBXTextBookmark */;
+			6926A6291469F8EC00F69705 /* PBXTextBookmark */ = 6926A6291469F8EC00F69705 /* PBXTextBookmark */;
+			6926A62A1469F8EC00F69705 /* PBXTextBookmark */ = 6926A62A1469F8EC00F69705 /* PBXTextBookmark */;
+			6926A6341469FA5100F69705 /* PBXTextBookmark */ = 6926A6341469FA5100F69705 /* PBXTextBookmark */;
+			6926A6351469FA5100F69705 /* PBXTextBookmark */ = 6926A6351469FA5100F69705 /* PBXTextBookmark */;
+			6926A6361469FA5100F69705 /* PBXTextBookmark */ = 6926A6361469FA5100F69705 /* PBXTextBookmark */;
+			6926A671146B39B700F69705 /* PBXTextBookmark */ = 6926A671146B39B700F69705 /* PBXTextBookmark */;
+			6926A672146B39B700F69705 /* PBXTextBookmark */ = 6926A672146B39B700F69705 /* PBXTextBookmark */;
+			6926A673146B39B700F69705 /* PBXTextBookmark */ = 6926A673146B39B700F69705 /* PBXTextBookmark */;
+			6926A674146B39B700F69705 /* PBXTextBookmark */ = 6926A674146B39B700F69705 /* PBXTextBookmark */;
+			6926A675146B39B700F69705 /* PBXTextBookmark */ = 6926A675146B39B700F69705 /* PBXTextBookmark */;
+			6926A68E146B3A7F00F69705 /* PBXTextBookmark */ = 6926A68E146B3A7F00F69705 /* PBXTextBookmark */;
+			6926A68F146B3A7F00F69705 /* PBXTextBookmark */ = 6926A68F146B3A7F00F69705 /* PBXTextBookmark */;
+			6926A690146B3A7F00F69705 /* PBXTextBookmark */ = 6926A690146B3A7F00F69705 /* PBXTextBookmark */;
+			6926A691146B3A7F00F69705 /* PBXTextBookmark */ = 6926A691146B3A7F00F69705 /* PBXTextBookmark */;
+			6926A692146B3A7F00F69705 /* PBXTextBookmark */ = 6926A692146B3A7F00F69705 /* PBXTextBookmark */;
+			6926A69F146B3AC100F69705 /* PBXTextBookmark */ = 6926A69F146B3AC100F69705 /* PBXTextBookmark */;
+			6926A6A0146B3AC100F69705 /* PBXTextBookmark */ = 6926A6A0146B3AC100F69705 /* PBXTextBookmark */;
+			6926A6A1146B3AC100F69705 /* PBXTextBookmark */ = 6926A6A1146B3AC100F69705 /* PBXTextBookmark */;
+			6926A6A2146B3AC100F69705 /* PBXTextBookmark */ = 6926A6A2146B3AC100F69705 /* PBXTextBookmark */;
+			6926A6D0146B44A300F69705 /* PBXTextBookmark */ = 6926A6D0146B44A300F69705 /* PBXTextBookmark */;
+			6926A6D1146B44A300F69705 /* PBXTextBookmark */ = 6926A6D1146B44A300F69705 /* PBXTextBookmark */;
+			6926A6D2146B44A300F69705 /* PBXTextBookmark */ = 6926A6D2146B44A300F69705 /* PBXTextBookmark */;
+			6926A6D3146B44A300F69705 /* PBXTextBookmark */ = 6926A6D3146B44A300F69705 /* PBXTextBookmark */;
+			6926A6D4146B44A300F69705 /* PBXTextBookmark */ = 6926A6D4146B44A300F69705 /* PBXTextBookmark */;
+			6926A6E1146B44E000F69705 /* PBXTextBookmark */ = 6926A6E1146B44E000F69705 /* PBXTextBookmark */;
+			6926A6E2146B44E000F69705 /* PBXTextBookmark */ = 6926A6E2146B44E000F69705 /* PBXTextBookmark */;
+			6926A6E3146B44E000F69705 /* PBXTextBookmark */ = 6926A6E3146B44E000F69705 /* PBXTextBookmark */;
+			6926A6E4146B44E000F69705 /* PBXTextBookmark */ = 6926A6E4146B44E000F69705 /* PBXTextBookmark */;
+			6926A6EB146B44FD00F69705 /* PBXTextBookmark */ = 6926A6EB146B44FD00F69705 /* PBXTextBookmark */;
+			6926A6F5146B453900F69705 /* PBXTextBookmark */ = 6926A6F5146B453900F69705 /* PBXTextBookmark */;
+			6926A710146B467100F69705 /* PBXTextBookmark */ = 6926A710146B467100F69705 /* PBXTextBookmark */;
+			6926A71B146B478A00F69705 /* PBXTextBookmark */ = 6926A71B146B478A00F69705 /* PBXTextBookmark */;
+			6926A722146B47C800F69705 /* PBXTextBookmark */ = 6926A722146B47C800F69705 /* PBXTextBookmark */;
+			6926A723146B47C800F69705 /* PBXTextBookmark */ = 6926A723146B47C800F69705 /* PBXTextBookmark */;
+			6926A72D146B483200F69705 /* PBXTextBookmark */ = 6926A72D146B483200F69705 /* PBXTextBookmark */;
+			6926A72E146B483200F69705 /* PBXTextBookmark */ = 6926A72E146B483200F69705 /* PBXTextBookmark */;
+			6926A72F146B483200F69705 /* PBXTextBookmark */ = 6926A72F146B483200F69705 /* PBXTextBookmark */;
+			6926A73E146B486200F69705 /* PBXTextBookmark */ = 6926A73E146B486200F69705 /* PBXTextBookmark */;
+			6926A742146B48A400F69705 /* PBXTextBookmark */ = 6926A742146B48A400F69705 /* PBXTextBookmark */;
+			6926A748146B520D00F69705 /* PBXTextBookmark */ = 6926A748146B520D00F69705 /* PBXTextBookmark */;
+			6926A749146B520D00F69705 /* PBXTextBookmark */ = 6926A749146B520D00F69705 /* PBXTextBookmark */;
+			6926A74A146B520D00F69705 /* PBXTextBookmark */ = 6926A74A146B520D00F69705 /* PBXTextBookmark */;
+			6926A750146B525300F69705 /* PBXTextBookmark */ = 6926A750146B525300F69705 /* PBXTextBookmark */;
+			6926A758146B534600F69705 /* PBXTextBookmark */ = 6926A758146B534600F69705 /* PBXTextBookmark */;
+			6926A759146B534600F69705 /* PBXTextBookmark */ = 6926A759146B534600F69705 /* PBXTextBookmark */;
+			6926A75A146B534600F69705 /* PBXTextBookmark */ = 6926A75A146B534600F69705 /* PBXTextBookmark */;
+			6926A75E146B535D00F69705 /* PBXTextBookmark */ = 6926A75E146B535D00F69705 /* PBXTextBookmark */;
+			6926A762146B539C00F69705 /* PBXTextBookmark */ = 6926A762146B539C00F69705 /* PBXTextBookmark */;
+			6926A777146B542600F69705 /* PBXTextBookmark */ = 6926A777146B542600F69705 /* PBXTextBookmark */;
+			6926A778146B542600F69705 /* PBXTextBookmark */ = 6926A778146B542600F69705 /* PBXTextBookmark */;
+			6926A782146B545000F69705 /* PBXTextBookmark */ = 6926A782146B545000F69705 /* PBXTextBookmark */;
+			6926A78D146B54BF00F69705 /* PBXTextBookmark */ = 6926A78D146B54BF00F69705 /* PBXTextBookmark */;
+			6926A7B8146B575800F69705 /* PBXTextBookmark */ = 6926A7B8146B575800F69705 /* PBXTextBookmark */;
+			6926A7B9146B575800F69705 /* PBXTextBookmark */ = 6926A7B9146B575800F69705 /* PBXTextBookmark */;
+			6926A7BA146B575800F69705 /* PBXTextBookmark */ = 6926A7BA146B575800F69705 /* PBXTextBookmark */;
+			6926A7C4146B577900F69705 /* PBXTextBookmark */ = 6926A7C4146B577900F69705 /* PBXTextBookmark */;
+			6926A7D0146B57EC00F69705 /* PBXTextBookmark */ = 6926A7D0146B57EC00F69705 /* PBXTextBookmark */;
+			6926A7D4146B590C00F69705 /* PBXTextBookmark */ = 6926A7D4146B590C00F69705 /* PBXTextBookmark */;
+			6926A7D8146B596C00F69705 /* PBXTextBookmark */ = 6926A7D8146B596C00F69705 /* PBXTextBookmark */;
+			6926A7E0146B59BC00F69705 /* XCBuildMessageTextBookmark */ = 6926A7E0146B59BC00F69705 /* XCBuildMessageTextBookmark */;
+			6926A7E1146B59BC00F69705 /* PBXTextBookmark */ = 6926A7E1146B59BC00F69705 /* PBXTextBookmark */;
+			6926A7E3146B59E400F69705 /* PBXTextBookmark */ = 6926A7E3146B59E400F69705 /* PBXTextBookmark */;
+			6926A7E5146B5A9100F69705 /* PBXTextBookmark */ = 6926A7E5146B5A9100F69705 /* PBXTextBookmark */;
+			6926A7E6146B5A9100F69705 /* PBXTextBookmark */ = 6926A7E6146B5A9100F69705 /* PBXTextBookmark */;
+			6926A7E7146B5A9100F69705 /* PBXTextBookmark */ = 6926A7E7146B5A9100F69705 /* PBXTextBookmark */;
+			6926A7E9146B5AE900F69705 /* PBXTextBookmark */ = 6926A7E9146B5AE900F69705 /* PBXTextBookmark */;
+			6926A7EB146B5B4D00F69705 /* PBXTextBookmark */ = 6926A7EB146B5B4D00F69705 /* PBXTextBookmark */;
+			6926A7F1146B5B7800F69705 /* PBXTextBookmark */ = 6926A7F1146B5B7800F69705 /* PBXTextBookmark */;
+			6926A7F2146B5B7800F69705 /* PBXTextBookmark */ = 6926A7F2146B5B7800F69705 /* PBXTextBookmark */;
+			6926A7F3146B5B7800F69705 /* PBXTextBookmark */ = 6926A7F3146B5B7800F69705 /* PBXTextBookmark */;
+			6926A7F5146B5B8900F69705 /* PBXTextBookmark */ = 6926A7F5146B5B8900F69705 /* PBXTextBookmark */;
+			6926A7F7146B5BB700F69705 /* PBXTextBookmark */ = 6926A7F7146B5BB700F69705 /* PBXTextBookmark */;
+			6926A7F8146B5BB700F69705 /* PBXTextBookmark */ = 6926A7F8146B5BB700F69705 /* PBXTextBookmark */;
+			6926A7F9146B5BB700F69705 /* PBXTextBookmark */ = 6926A7F9146B5BB700F69705 /* PBXTextBookmark */;
+			6926A7FD146B5C8100F69705 /* PBXTextBookmark */ = 6926A7FD146B5C8100F69705 /* PBXTextBookmark */;
+			6926A80A146B5D0400F69705 /* PBXTextBookmark */ = 6926A80A146B5D0400F69705 /* PBXTextBookmark */;
+			6926A80B146B5D0400F69705 /* PBXTextBookmark */ = 6926A80B146B5D0400F69705 /* PBXTextBookmark */;
+			6926A817146B5D9F00F69705 /* PBXTextBookmark */ = 6926A817146B5D9F00F69705 /* PBXTextBookmark */;
+			6926A823146B5DC800F69705 /* PBXTextBookmark */ = 6926A823146B5DC800F69705 /* PBXTextBookmark */;
+			6926A824146B5DC800F69705 /* PBXTextBookmark */ = 6926A824146B5DC800F69705 /* PBXTextBookmark */;
+			6926A826146B5DF500F69705 /* PBXTextBookmark */ = 6926A826146B5DF500F69705 /* PBXTextBookmark */;
+			6926A82D146B5E0200F69705 /* PBXTextBookmark */ = 6926A82D146B5E0200F69705 /* PBXTextBookmark */;
+			6926A83C146B78C100F69705 /* PBXTextBookmark */ = 6926A83C146B78C100F69705 /* PBXTextBookmark */;
+			6926A845146B791200F69705 /* PBXTextBookmark */ = 6926A845146B791200F69705 /* PBXTextBookmark */;
+			6926A849146B7AD600F69705 /* PBXTextBookmark */ = 6926A849146B7AD600F69705 /* PBXTextBookmark */;
+			6926A84B146B7AE200F69705 /* PBXTextBookmark */ = 6926A84B146B7AE200F69705 /* PBXTextBookmark */;
+			6926A853146B7B1D00F69705 /* PBXTextBookmark */ = 6926A853146B7B1D00F69705 /* PBXTextBookmark */;
+			6926A855146B7B2500F69705 /* PBXTextBookmark */ = 6926A855146B7B2500F69705 /* PBXTextBookmark */;
+			6926A857146B7CF400F69705 /* PBXTextBookmark */ = 6926A857146B7CF400F69705 /* PBXTextBookmark */;
+			6926A86D146B7F1B00F69705 /* PBXTextBookmark */ = 6926A86D146B7F1B00F69705 /* PBXTextBookmark */;
+			6926A86E146B7F1B00F69705 /* PBXTextBookmark */ = 6926A86E146B7F1B00F69705 /* PBXTextBookmark */;
+			6926A86F146B7F1B00F69705 /* PBXTextBookmark */ = 6926A86F146B7F1B00F69705 /* PBXTextBookmark */;
+			6926A880146B7F8A00F69705 /* PBXTextBookmark */ = 6926A880146B7F8A00F69705 /* PBXTextBookmark */;
+			6926A881146B7F8A00F69705 /* PBXTextBookmark */ = 6926A881146B7F8A00F69705 /* PBXTextBookmark */;
+			6926A888146B7FF800F69705 /* PBXTextBookmark */ = 6926A888146B7FF800F69705 /* PBXTextBookmark */;
+			6926A88F146B801E00F69705 /* PBXTextBookmark */ = 6926A88F146B801E00F69705 /* PBXTextBookmark */;
+			6926A890146B801E00F69705 /* PBXTextBookmark */ = 6926A890146B801E00F69705 /* PBXTextBookmark */;
+			6926A898146B8A2900F69705 /* PBXTextBookmark */ = 6926A898146B8A2900F69705 /* PBXTextBookmark */;
+			6926A899146B8A2900F69705 /* PBXTextBookmark */ = 6926A899146B8A2900F69705 /* PBXTextBookmark */;
+			6926A89A146B8A2900F69705 /* PBXTextBookmark */ = 6926A89A146B8A2900F69705 /* PBXTextBookmark */;
+			6926A8A2146B8AE400F69705 /* PBXTextBookmark */ = 6926A8A2146B8AE400F69705 /* PBXTextBookmark */;
+			6926A8A4146C242E00F69705 /* PBXTextBookmark */ = 6926A8A4146C242E00F69705 /* PBXTextBookmark */;
+			6926A8B0146C250500F69705 /* PBXTextBookmark */ = 6926A8B0146C250500F69705 /* PBXTextBookmark */;
+			6926A8B1146C250500F69705 /* PBXTextBookmark */ = 6926A8B1146C250500F69705 /* PBXTextBookmark */;
+			6926A8B2146C250500F69705 /* PBXTextBookmark */ = 6926A8B2146C250500F69705 /* PBXTextBookmark */;
+			6926A8BA146C266700F69705 /* PBXTextBookmark */ = 6926A8BA146C266700F69705 /* PBXTextBookmark */;
+			6926A8C2146C2B5500F69705 /* PBXTextBookmark */ = 6926A8C2146C2B5500F69705 /* PBXTextBookmark */;
+			6926A8C3146C2B5500F69705 /* PBXTextBookmark */ = 6926A8C3146C2B5500F69705 /* PBXTextBookmark */;
+			6926A8C4146C2B5500F69705 /* PBXTextBookmark */ = 6926A8C4146C2B5500F69705 /* PBXTextBookmark */;
+			6926A8C8146C323400F69705 /* PBXTextBookmark */ = 6926A8C8146C323400F69705 /* PBXTextBookmark */;
+			6926A8C9146C323400F69705 /* PBXTextBookmark */ = 6926A8C9146C323400F69705 /* PBXTextBookmark */;
+			6926A8CA146C323400F69705 /* PBXTextBookmark */ = 6926A8CA146C323400F69705 /* PBXTextBookmark */;
+			6926A8DB146C34B200F69705 /* PBXTextBookmark */ = 6926A8DB146C34B200F69705 /* PBXTextBookmark */;
+			6926A8DC146C34B200F69705 /* PBXTextBookmark */ = 6926A8DC146C34B200F69705 /* PBXTextBookmark */;
+			6926A8E7146C354B00F69705 /* PBXTextBookmark */ = 6926A8E7146C354B00F69705 /* PBXTextBookmark */;
+			6926A8F2146C355F00F69705 /* PBXTextBookmark */ = 6926A8F2146C355F00F69705 /* PBXTextBookmark */;
+			6926A8F3146C355F00F69705 /* PBXTextBookmark */ = 6926A8F3146C355F00F69705 /* PBXTextBookmark */;
+			6926A8FA146C35DD00F69705 /* PBXTextBookmark */ = 6926A8FA146C35DD00F69705 /* PBXTextBookmark */;
+			6926A90F146C372400F69705 /* PBXTextBookmark */ = 6926A90F146C372400F69705 /* PBXTextBookmark */;
+			6926A910146C372400F69705 /* PBXTextBookmark */ = 6926A910146C372400F69705 /* PBXTextBookmark */;
+			6926A91B146C386D00F69705 /* PBXTextBookmark */ = 6926A91B146C386D00F69705 /* PBXTextBookmark */;
+			6926A926146C388D00F69705 /* PBXTextBookmark */ = 6926A926146C388D00F69705 /* PBXTextBookmark */;
+			6926A927146C388D00F69705 /* PBXTextBookmark */ = 6926A927146C388D00F69705 /* PBXTextBookmark */;
+			6926A93B146C3AC000F69705 /* PBXTextBookmark */ = 6926A93B146C3AC000F69705 /* PBXTextBookmark */;
+			6926A93C146C3AC000F69705 /* PBXTextBookmark */ = 6926A93C146C3AC000F69705 /* PBXTextBookmark */;
+			6926A946146C3B5700F69705 /* PBXTextBookmark */ = 6926A946146C3B5700F69705 /* PBXTextBookmark */;
+			6926A94D146C3B6300F69705 /* PBXTextBookmark */ = 6926A94D146C3B6300F69705 /* PBXTextBookmark */;
+			6926A94E146C3B6300F69705 /* PBXTextBookmark */ = 6926A94E146C3B6300F69705 /* PBXTextBookmark */;
+			6926A957146C3BDA00F69705 /* PBXTextBookmark */ = 6926A957146C3BDA00F69705 /* PBXTextBookmark */;
+			6926A963146C3C2B00F69705 /* PBXTextBookmark */ = 6926A963146C3C2B00F69705 /* PBXTextBookmark */;
+			6926A97D146C463400F69705 /* PBXTextBookmark */ = 6926A97D146C463400F69705 /* PBXTextBookmark */;
+			6926A97E146C463400F69705 /* PBXTextBookmark */ = 6926A97E146C463400F69705 /* PBXTextBookmark */;
+			6926A97F146C463400F69705 /* PBXTextBookmark */ = 6926A97F146C463400F69705 /* PBXTextBookmark */;
+			6926A985146C477500F69705 /* PBXTextBookmark */ = 6926A985146C477500F69705 /* PBXTextBookmark */;
+			6926A98E146C48EB00F69705 /* PBXTextBookmark */ = 6926A98E146C48EB00F69705 /* PBXTextBookmark */;
+			6926A98F146C48EB00F69705 /* PBXTextBookmark */ = 6926A98F146C48EB00F69705 /* PBXTextBookmark */;
+			6926A999146C4E9600F69705 /* PBXTextBookmark */ = 6926A999146C4E9600F69705 /* PBXTextBookmark */;
+			6926A9A4146C4F3F00F69705 /* PBXTextBookmark */ = 6926A9A4146C4F3F00F69705 /* PBXTextBookmark */;
+			6926A9A7146C4F6200F69705 /* PBXTextBookmark */ = 6926A9A7146C4F6200F69705 /* PBXTextBookmark */;
 			69868BD11460F42D004C5D9B = 69868BD11460F42D004C5D9B /* PBXTextBookmark */;
 			69868BD91460F468004C5D9B = 69868BD91460F468004C5D9B /* PBXTextBookmark */;
 			69868C931460F7C3004C5D9B = 69868C931460F7C3004C5D9B /* PBXTextBookmark */;
-			69868D8314618DD7004C5D9B = 69868D8314618DD7004C5D9B /* PBXTextBookmark */;
-			69868E791461A1AF004C5D9B = 69868E791461A1AF004C5D9B /* PBXTextBookmark */;
-			69868E7B1461A1AF004C5D9B = 69868E7B1461A1AF004C5D9B /* PBXTextBookmark */;
-			69868EA21461A401004C5D9B = 69868EA21461A401004C5D9B /* PBXBookmark */;
-			69868EF31461AB26004C5D9B = 69868EF31461AB26004C5D9B /* PBXTextBookmark */;
-			69868EF41461AB26004C5D9B = 69868EF41461AB26004C5D9B /* PBXTextBookmark */;
-			69868F561461BBC2004C5D9B = 69868F561461BBC2004C5D9B /* PBXTextBookmark */;
-			69868F571461BBC2004C5D9B = 69868F571461BBC2004C5D9B /* PBXTextBookmark */;
 		};
 		sourceControlManager = 69868AD41460E35F004C5D9B /* Source Control */;
 		userBuildSettings = {
 		};
 	};
-	69269CC11461D38300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 67";
-		rLen = 0;
-		rLoc = 1423;
-		rType = 0;
-		vrLen = 1134;
-		vrLoc = 182;
-	};
-	69269CC21461D38300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 84";
-		rLen = 0;
-		rLoc = 3966;
-		rType = 0;
-		vrLen = 1105;
-		vrLoc = 1017;
-	};
-	69269CC31461D38300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 49";
-		rLen = 0;
-		rLoc = 1177;
-		rType = 0;
-		vrLen = 1199;
-		vrLoc = 0;
-	};
-	69269CC61461D38300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 961;
-		vrLoc = 721;
-	};
-	69269CD41461D42F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 76";
-		rLen = 0;
-		rLoc = 1702;
-		rType = 0;
-		vrLen = 1074;
-		vrLoc = 619;
-	};
-	69269CD51461D42F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 88";
-		rLen = 0;
-		rLoc = 2937;
-		rType = 0;
-		vrLen = 1317;
-		vrLoc = 897;
-	};
-	69269CD61461D42F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 89";
-		rLen = 0;
-		rLoc = 2937;
-		rType = 0;
-		vrLen = 1224;
-		vrLoc = 1075;
-	};
-	69269CD71461D42F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 934;
-		vrLoc = 721;
-	};
-	69269CD81461D44700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 94";
-		rLen = 0;
-		rLoc = 2937;
-		rType = 0;
-		vrLen = 1224;
-		vrLoc = 1075;
-	};
-	69269CD91461D44700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 76";
-		rLen = 0;
-		rLoc = 1702;
-		rType = 0;
-		vrLen = 1074;
-		vrLoc = 619;
-	};
-	69269CDA1461D44700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 74";
-		rLen = 0;
-		rLoc = 1552;
-		rType = 0;
-		vrLen = 1081;
-		vrLoc = 657;
-	};
-	69269CDB1461D44700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 937;
-		vrLoc = 721;
-	};
-	69269CE21461D4A800F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 84";
-		rLen = 0;
-		rLoc = 1899;
-		rType = 0;
-		vrLen = 1089;
-		vrLoc = 657;
-	};
-	69269CE31461D4A800F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 912;
-		vrLoc = 721;
-	};
-	69269CE41461D51000F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 92";
-		rLen = 0;
-		rLoc = 1982;
-		rType = 0;
-		vrLen = 1239;
-		vrLoc = 804;
-	};
-	69269CE51461D51000F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 1009;
-		vrLoc = 721;
-	};
-	69269CEE1461D80400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 69";
-		rLen = 15;
-		rLoc = 1440;
-		rType = 0;
-		vrLen = 1175;
-		vrLoc = 746;
-	};
-	69269CEF1461D80400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 254";
-		rLen = 0;
-		rLoc = 8948;
-		rType = 0;
-		vrLen = 1811;
-		vrLoc = 4961;
-	};
-	69269CF01461D80400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 254";
-		rLen = 0;
-		rLoc = 8938;
-		rType = 0;
-		vrLen = 1908;
-		vrLoc = 4961;
-	};
-	69269CF11461D80400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 1009;
-		vrLoc = 721;
-	};
-	69269CF41461D82F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 242";
-		rLen = 0;
-		rLoc = 8447;
-		rType = 0;
-		vrLen = 1865;
-		vrLoc = 5105;
-	};
-	69269CF51461D82F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 1009;
-		vrLoc = 721;
-	};
-	69269D241461D93A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 19";
-		rLen = 17;
-		rLoc = 397;
-		rType = 0;
-		vrLen = 1118;
-		vrLoc = 0;
-	};
-	69269D251461D93A00F69705 /* XCBuildMessageTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "Invalid operands to binary - (have 'uint32_t' and 'uint32_t *')";
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		fallbackIsa = XCBuildMessageTextBookmark;
-		rLen = 1;
-		rLoc = 296;
-		rType = 1;
-	};
-	69269D261461D93A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 252";
-		rLen = 0;
-		rLoc = 8756;
-		rType = 0;
-		vrLen = 1835;
-		vrLoc = 5145;
-	};
-	69269D271461D93A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 1009;
-		vrLoc = 721;
-	};
-	69269D2E1461D96400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 252";
-		rLen = 0;
-		rLoc = 8756;
-		rType = 0;
-		vrLen = 1837;
-		vrLoc = 5145;
-	};
-	69269D2F1461D96400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 1009;
-		vrLoc = 721;
-	};
-	69269D341461D98A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 75";
-		rLen = 19;
-		rLoc = 1523;
-		rType = 0;
-		vrLen = 1186;
-		vrLoc = 1156;
-	};
-	69269D351461D98A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 88";
-		rLen = 0;
-		rLoc = 2937;
-		rType = 0;
-		vrLen = 1166;
-		vrLoc = 1395;
-	};
-	69269D361461D98A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 91";
-		rLen = 0;
-		rLoc = 2937;
-		rType = 0;
-		vrLen = 1166;
-		vrLoc = 1395;
-	};
-	69269D371461D98A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 1009;
-		vrLoc = 721;
-	};
-	69269D3B1461DAFF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 18";
-		rLen = 10;
-		rLoc = 344;
-		rType = 0;
-		vrLen = 1101;
-		vrLoc = 143;
-	};
-	69269D3C1461DAFF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 267";
-		rLen = 0;
-		rLoc = 15763;
-		rType = 0;
-		vrLen = 1787;
-		vrLoc = 5358;
-	};
-	69269D3D1461DAFF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 266";
-		rLen = 0;
-		rLoc = 15758;
-		rType = 0;
-		vrLen = 1701;
-		vrLoc = 5435;
-	};
-	69269D3E1461DAFF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 54";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 975;
-		vrLoc = 721;
-	};
-	69269D451461DD8F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 280";
-		rLen = 0;
-		rLoc = 16286;
-		rType = 0;
-		vrLen = 1564;
-		vrLoc = 6084;
-	};
-	69269D461461DD8F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 54";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 975;
-		vrLoc = 721;
-	};
-	69269D471461E4B400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 288";
-		rLen = 0;
-		rLoc = 16520;
-		rType = 0;
-		vrLen = 1607;
-		vrLoc = 6154;
-	};
-	69269D481461E4B400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 54";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 975;
-		vrLoc = 721;
-	};
-	69269D551461E6FF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 50";
-		rLen = 0;
-		rLoc = 978;
-		rType = 0;
-		vrLen = 1148;
-		vrLoc = 203;
-	};
-	69269D561461E6FF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 266";
-		rLen = 0;
-		rLoc = 9228;
-		rType = 0;
-		vrLen = 1675;
-		vrLoc = 6168;
-	};
-	69269D571461E6FF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 266";
-		rLen = 0;
-		rLoc = 9228;
-		rType = 0;
-		vrLen = 1629;
-		vrLoc = 6117;
-	};
-	69269D581461E6FF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 54";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 976;
-		vrLoc = 721;
-	};
-	69269D631461E91100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 40";
-		rLen = 0;
-		rLoc = 777;
-		rType = 0;
-		vrLen = 1165;
-		vrLoc = 203;
-	};
-	69269D641461E91100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 292";
-		rLen = 0;
-		rLoc = 16124;
-		rType = 0;
-		vrLen = 1651;
-		vrLoc = 6574;
-	};
-	69269D651461E91100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 272";
-		rLen = 0;
-		rLoc = 9228;
-		rType = 0;
-		vrLen = 1722;
-		vrLoc = 6263;
-	};
-	69269D661461E91100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269D6B1461E94700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 271";
-		rLen = 0;
-		rLoc = 9228;
-		rType = 0;
-		vrLen = 1611;
-		vrLoc = 6666;
-	};
-	69269D6C1461E94700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269D7B1461EA4000F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 272";
-		rLen = 0;
-		rLoc = 9228;
-		rType = 0;
-		vrLen = 1611;
-		vrLoc = 6666;
-	};
-	69269D7C1461EA4000F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269D811461EA6600F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 274";
-		rLen = 0;
-		rLoc = 9228;
-		rType = 0;
-		vrLen = 1624;
-		vrLoc = 6666;
-	};
-	69269D821461EA6600F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269D891461EAB300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 298";
-		rLen = 0;
-		rLoc = 16250;
-		rType = 0;
-		vrLen = 1523;
-		vrLoc = 6768;
-	};
-	69269D8A1461EAB300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269D931461EB5B00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 298";
-		rLen = 0;
-		rLoc = 16250;
-		rType = 0;
-		vrLen = 1519;
-		vrLoc = 6768;
-	};
-	69269D941461EB5B00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269D9F1461EC0100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 298";
-		rLen = 0;
-		rLoc = 16250;
-		rType = 0;
-		vrLen = 1523;
-		vrLoc = 6768;
-	};
-	69269DA01461EC0100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269DA61461EC7400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 102";
-		rLen = 0;
-		rLoc = 2116;
-		rType = 0;
-		vrLen = 1230;
-		vrLoc = 1353;
-	};
-	69269DA71461EC7400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 130";
-		rLen = 4;
-		rLoc = 4442;
-		rType = 0;
-		vrLen = 1108;
-		vrLoc = 2300;
-	};
-	69269DA81461EC7400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 119";
-		rLen = 0;
-		rLoc = 4332;
-		rType = 0;
-		vrLen = 1108;
-		vrLoc = 2300;
-	};
-	69269DA91461EC7400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269DB71461ED4F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 256";
-		rLen = 0;
-		rLoc = 8666;
-		rType = 0;
-		vrLen = 278;
-		vrLoc = 6278;
-	};
-	69269DB81461ED4F00F69705 /* XCBuildMessageTextBookmark */ = {
-		isa = PBXTextBookmark;
-		comments = "Pointer targets in passing argument 1 of 'spgp_decode_message' differ in signedness";
-		fRef = 69868DE614619580004C5D9B /* packet_test.c */;
-		fallbackIsa = XCBuildMessageTextBookmark;
-		rLen = 1;
-		rLoc = 38;
-		rType = 1;
-	};
-	69269DB91461ED4F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868DE614619580004C5D9B /* packet_test.c */;
-		name = "packet_test.c: 39";
-		rLen = 0;
-		rLoc = 1064;
-		rType = 0;
-		vrLen = 204;
-		vrLoc = 928;
-	};
-	69269DBC1461ED5100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 102";
-		rLen = 0;
-		rLoc = 2116;
-		rType = 0;
-		vrLen = 1090;
-		vrLoc = 591;
-	};
-	69269DBD1461ED5100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 119";
-		rLen = 0;
-		rLoc = 4332;
-		rType = 0;
-		vrLen = 1121;
-		vrLoc = 1779;
-	};
-	69269DBE1461ED5100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868DE614619580004C5D9B /* packet_test.c */;
-		name = "packet_test.c: 30";
-		rLen = 0;
-		rLoc = 837;
-		rType = 0;
-		vrLen = 1390;
-		vrLoc = 3;
-	};
-	69269DBF1461ED5100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269DC61461ED9F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868DE614619580004C5D9B /* packet_test.c */;
-		name = "packet_test.c: 30";
-		rLen = 0;
-		rLoc = 837;
-		rType = 0;
-		vrLen = 1390;
-		vrLoc = 3;
-	};
-	69269DC71461ED9F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 119";
-		rLen = 0;
-		rLoc = 4332;
-		rType = 0;
-		vrLen = 1117;
-		vrLoc = 1783;
-	};
-	69269DC81461ED9F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 271";
-		rLen = 0;
-		rLoc = 9228;
-		rType = 0;
-		vrLen = 1560;
-		vrLoc = 5913;
-	};
-	69269DC91461ED9F00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269DD01461EDB700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 299";
-		rLen = 0;
-		rLoc = 16250;
-		rType = 0;
-		vrLen = 1450;
-		vrLoc = 6833;
-	};
-	69269DD11461EDB700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269DD61461EF0700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 102";
-		rLen = 0;
-		rLoc = 2116;
-		rType = 0;
-		vrLen = 1098;
-		vrLoc = 313;
-	};
-	69269DD71461EF0700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 276";
-		rLen = 0;
-		rLoc = 13991;
-		rType = 0;
-		vrLen = 1457;
-		vrLoc = 6408;
-	};
-	69269DD81461EF0700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 265";
-		rLen = 0;
-		rLoc = 9173;
-		rType = 0;
-		vrLen = 1606;
-		vrLoc = 6636;
-	};
-	69269DD91461EF0700F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269DE11461EF2500F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 55";
-		rLen = 0;
-		rLoc = 2067;
-		rType = 0;
-		vrLen = 1447;
-		vrLoc = 134;
-	};
-	69269DE21461EF2500F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 960;
-		vrLoc = 721;
-	};
-	69269DEB1461EF8E00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 52";
-		rLen = 0;
-		rLoc = 1006;
-		rType = 0;
-		vrLen = 1031;
-		vrLoc = 417;
-	};
-	69269DEC1461EF8E00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 271";
-		rLen = 0;
-		rLoc = 9274;
-		rType = 0;
-		vrLen = 1748;
-		vrLoc = 6537;
-	};
-	69269DED1461EF8E00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 280";
-		rLen = 0;
-		rLoc = 13813;
-		rType = 0;
-		vrLen = 1662;
-		vrLoc = 7003;
-	};
-	69269DEE1461EF8E00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 56";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 965;
-		vrLoc = 721;
-	};
-	69269DF21461F1ED00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 277";
-		rLen = 0;
-		rLoc = 10871;
-		rType = 0;
-		vrLen = 1762;
-		vrLoc = 6299;
-	};
-	69269DF31461F1ED00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 56";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 965;
-		vrLoc = 721;
-	};
-	69269DF41461F1ED00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 56";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 966;
-		vrLoc = 720;
-	};
-	69269DFE1461F2F200F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 291";
-		rLen = 0;
-		rLoc = 10871;
-		rType = 0;
-		vrLen = 1820;
-		vrLoc = 6540;
-	};
-	69269DFF1461F2F200F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 56";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 966;
-		vrLoc = 720;
-	};
-	69269E011461F31100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 294";
-		rLen = 0;
-		rLoc = 10811;
-		rType = 0;
-		vrLen = 1774;
-		vrLoc = 6540;
-	};
-	69269E021461F31100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 56";
-		rLen = 0;
-		rLoc = 1102;
-		rType = 0;
-		vrLen = 966;
-		vrLoc = 720;
-	};
-	69269E041461F51500F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 310";
-		rLen = 0;
-		rLoc = 10805;
-		rType = 0;
-		vrLen = 1844;
-		vrLoc = 6901;
-	};
-	69269E051461F51500F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 966;
-		vrLoc = 720;
-	};
-	69269E131461F7C500F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 59";
-		rLen = 7;
-		rLoc = 1161;
-		rType = 0;
-		vrLen = 1031;
-		vrLoc = 416;
-	};
-	69269E141461F7C500F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 309";
-		rLen = 0;
-		rLoc = 10560;
-		rType = 0;
-		vrLen = 1657;
-		vrLoc = 7109;
-	};
-	69269E151461F7C500F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 321";
-		rLen = 0;
-		rLoc = 10728;
-		rType = 0;
-		vrLen = 1597;
-		vrLoc = 7919;
-	};
-	69269E161461F7C500F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 966;
-		vrLoc = 720;
-	};
-	69269E201461F84900F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 60";
-		rLen = 0;
-		rLoc = 1194;
-		rType = 0;
-		vrLen = 1040;
-		vrLoc = 416;
-	};
-	69269E211461F84900F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 328";
-		rLen = 0;
-		rLoc = 10871;
-		rType = 0;
-		vrLen = 1718;
-		vrLoc = 8459;
-	};
-	69269E221461F84900F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 329";
-		rLen = 0;
-		rLoc = 10827;
-		rType = 0;
-		vrLen = 1807;
-		vrLoc = 8290;
-	};
-	69269E231461F84900F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 990;
-		vrLoc = 720;
-	};
-	69269E2E1461F87A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 329";
-		rLen = 0;
-		rLoc = 10827;
-		rType = 0;
-		vrLen = 1807;
-		vrLoc = 8290;
-	};
-	69269E2F1461F87A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 990;
-		vrLoc = 720;
-	};
-	69269E361461FA1000F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 65";
-		rLen = 0;
-		rLoc = 1313;
-		rType = 0;
-		vrLen = 1040;
-		vrLoc = 416;
-	};
-	69269E371461FA1000F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 415";
-		rLen = 0;
-		rLoc = 15400;
-		rType = 0;
-		vrLen = 1365;
-		vrLoc = 11092;
-	};
-	69269E381461FA1000F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 338";
-		rLen = 0;
-		rLoc = 11024;
-		rType = 0;
-		vrLen = 1670;
-		vrLoc = 8821;
-	};
-	69269E391461FA1000F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 990;
-		vrLoc = 720;
-	};
-	69269E4D1461FC6300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 62";
-		rLen = 0;
-		rLoc = 1226;
-		rType = 0;
-		vrLen = 1041;
-		vrLoc = 416;
-	};
-	69269E4E1461FC6300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 339";
-		rLen = 0;
-		rLoc = 11097;
-		rType = 0;
-		vrLen = 1680;
-		vrLoc = 8880;
-	};
-	69269E4F1461FC6300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 349";
-		rLen = 0;
-		rLoc = 11676;
-		rType = 0;
-		vrLen = 1982;
-		vrLoc = 8708;
-	};
-	69269E501461FC6300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
-	};
-	69269E591461FF5A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 438";
-		rLen = 0;
-		rLoc = 15586;
-		rType = 0;
-		vrLen = 1603;
-		vrLoc = 11267;
-	};
-	69269E5A1461FF5A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
-	};
-	69269E5D1461FFB900F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 343";
-		rLen = 0;
-		rLoc = 11152;
-		rType = 0;
-		vrLen = 1904;
-		vrLoc = 8908;
-	};
-	69269E5E1461FFB900F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+	69269F2114620D0F00F69705 /* packet_test.c */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1030, 780}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRange = "{0, 1356}";
+		};
 	};
-	69269E641461FFEF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 314";
-		rLen = 0;
-		rLoc = 10194;
-		rType = 0;
-		vrLen = 1747;
-		vrLoc = 8032;
+	69269F2214620D0F00F69705 /* packet_test.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {905, 618}}";
+			sepNavSelRange = "{0, 0}";
+			sepNavVisRange = "{0, 291}";
+		};
 	};
-	69269E651461FFEF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+	69269F2314620D0F00F69705 /* packet.c */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {905, 19435}}";
+			sepNavSelRange = "{281, 0}";
+			sepNavVisRange = "{0, 975}";
+			sepNavWindowFrame = "{{139, 11}, {1136, 746}}";
+		};
 	};
-	69269E681462003D00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 394";
-		rLen = 0;
-		rLoc = 12881;
-		rType = 0;
-		vrLen = 1674;
-		vrLoc = 10824;
+	69269F2414620D0F00F69705 /* packet.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {905, 2392}}";
+			sepNavSelRange = "{1259, 0}";
+			sepNavVisRange = "{823, 887}";
+		};
 	};
-	69269E691462003D00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+	69269F4E14620FC200F69705 /* packet.c:220 */ = {
+		isa = PBXFileBreakpoint;
+		actions = (
+		);
+		breakpointStyle = 0;
+		continueAfterActions = 0;
+		countType = 0;
+		delayBeforeContinue = 0;
+		fileReference = 69269F2314620D0F00F69705 /* packet.c */;
+		functionName = "spgp_decode_message()";
+		hitCount = 0;
+		ignoreCount = 0;
+		lineNumber = 220;
+		location = duckdog;
+		modificationTime = 342642496.061145;
+		originalNumberOfMultipleMatches = 1;
+		state = 2;
 	};
-	69269E7B1462011400F69705 /* PBXTextBookmark */ = {
+	69269F5214620FC500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 62";
+		fRef = AA747D9E0F9514B9006C5449 /* simplepgp_Prefix.pch */;
+		name = "simplepgp_Prefix.pch: 1";
 		rLen = 0;
-		rLoc = 1226;
+		rLoc = 0;
 		rType = 0;
-		vrLen = 1041;
-		vrLoc = 416;
+		vrLen = 188;
+		vrLoc = 0;
 	};
-	69269E7C1462011400F69705 /* PBXTextBookmark */ = {
+	69269F5314620FC500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 402";
+		fRef = 69269F2114620D0F00F69705 /* packet_test.c */;
+		name = "packet_test.c: 1";
 		rLen = 0;
-		rLoc = 13135;
+		rLoc = 0;
 		rType = 0;
-		vrLen = 1618;
-		vrLoc = 10854;
+		vrLen = 1356;
+		vrLoc = 0;
 	};
-	69269E7D1462011400F69705 /* PBXTextBookmark */ = {
+	6926A15B146350B600F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 352";
+		fRef = 69868BC91460F386004C5D9B /* gcrypt.h */;
+		name = "gcrypt.h: 75";
 		rLen = 0;
-		rLoc = 11245;
-		rType = 0;
-		vrLen = 1970;
-		vrLoc = 9097;
-	};
-	69269E7E1462011400F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 2337;
 		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+		vrLen = 1486;
+		vrLoc = 41191;
 	};
-	69269E871462087600F69705 /* PBXTextBookmark */ = {
+	6926A2F4146376F100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 122";
+		fRef = 69269F2214620D0F00F69705 /* packet_test.h */;
+		name = "packet_test.h: 1";
 		rLen = 0;
-		rLoc = 3953;
-		rType = 0;
-		vrLen = 1279;
-		vrLoc = 2272;
-	};
-	69269E881462087600F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 0;
 		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+		vrLen = 291;
+		vrLoc = 0;
 	};
-	69269E91146208B300F69705 /* PBXTextBookmark */ = {
+	6926A484146471E800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 118";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 76";
 		rLen = 0;
-		rLoc = 3039;
-		rType = 0;
-		vrLen = 1351;
-		vrLoc = 2272;
-	};
-	69269E92146208B300F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 2176;
 		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+		vrLen = 902;
+		vrLoc = 1034;
 	};
-	69269E97146208CF00F69705 /* PBXTextBookmark */ = {
+	6926A485146471E800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 124";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 816";
 		rLen = 0;
-		rLoc = 3934;
-		rType = 0;
-		vrLen = 1247;
-		vrLoc = 3743;
-	};
-	69269E98146208CF00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 25823;
 		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+		vrLen = 1446;
+		vrLoc = 24434;
 	};
-	69269E9F146208D800F69705 /* PBXTextBookmark */ = {
+	6926A4E21465DFEA00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 124";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 820";
 		rLen = 0;
-		rLoc = 3934;
-		rType = 0;
-		vrLen = 1247;
-		vrLoc = 3743;
-	};
-	69269EA0146208D800F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 25991;
 		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+		vrLen = 1479;
+		vrLoc = 24016;
 	};
-	69269EA71462091A00F69705 /* PBXTextBookmark */ = {
+	6926A4FD1465E68800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 125";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 791";
 		rLen = 0;
-		rLoc = 3930;
-		rType = 0;
-		vrLen = 1357;
-		vrLoc = 2452;
-	};
-	69269EA81462091A00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 24990;
 		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+		vrLen = 1529;
+		vrLoc = 27306;
 	};
-	69269EAF1462092900F69705 /* PBXTextBookmark */ = {
+	6926A5051469D77400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 127";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 179";
 		rLen = 0;
-		rLoc = 3967;
+		rLoc = 6694;
 		rType = 0;
-		vrLen = 1370;
-		vrLoc = 2452;
+		vrLen = 1966;
+		vrLoc = 4084;
 	};
-	69269EB01462092900F69705 /* PBXTextBookmark */ = {
+	6926A5101469DAF400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 960";
+		rLen = 0;
+		rLoc = 42074;
 		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+		vrLen = 1655;
+		vrLoc = 28491;
 	};
-	69269EB91462096500F69705 /* PBXTextBookmark */ = {
+	6926A5161469DB5600F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 110";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 975";
 		rLen = 0;
-		rLoc = 3034;
+		rLoc = 42546;
 		rType = 0;
-		vrLen = 1302;
-		vrLoc = 2403;
+		vrLen = 1799;
+		vrLoc = 28668;
 	};
-	69269EBA1462096500F69705 /* PBXTextBookmark */ = {
+	6926A51D1469DB9700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 974";
+		rLen = 0;
+		rLoc = 42492;
 		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+		vrLen = 1802;
+		vrLoc = 28668;
 	};
-	69269EC1146209C300F69705 /* PBXTextBookmark */ = {
+	6926A52C1469DCC900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 221";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 672";
 		rLen = 0;
-		rLoc = 6514;
+		rLoc = 20758;
 		rType = 0;
-		vrLen = 2108;
-		vrLoc = 4755;
+		vrLen = 2232;
+		vrLoc = 19150;
 	};
-	69269EC2146209C300F69705 /* PBXTextBookmark */ = {
+	6926A52D1469DCC900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 672";
+		rLen = 0;
+		rLoc = 20758;
 		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+		vrLen = 2232;
+		vrLoc = 19150;
 	};
-	69269EC714620A5300F69705 /* PBXTextBookmark */ = {
+	6926A53C1469DD0300F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 127";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 671";
 		rLen = 0;
-		rLoc = 3807;
+		rLoc = 20716;
 		rType = 0;
-		vrLen = 1456;
-		vrLoc = 2557;
+		vrLen = 2244;
+		vrLoc = 19150;
 	};
-	69269EC814620A5300F69705 /* PBXTextBookmark */ = {
+	6926A5451469DFAA00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 729";
+		rLen = 0;
+		rLoc = 22679;
 		rType = 0;
-		vrLen = 997;
-		vrLoc = 720;
+		vrLen = 2063;
+		vrLoc = 21499;
 	};
-	69269ED014620AFE00F69705 /* PBXTextBookmark */ = {
+	6926A5521469E07800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 173";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 251";
 		rLen = 0;
-		rLoc = 4833;
+		rLoc = 8822;
 		rType = 0;
-		vrLen = 1279;
-		vrLoc = 3803;
+		vrLen = 1791;
+		vrLoc = 6607;
 	};
-	69269ED114620AFE00F69705 /* PBXTextBookmark */ = {
+	6926A58B1469E66900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868DE514619580004C5D9B /* packet_test.h */;
-		name = "packet_test.h: 17";
+		fRef = 69269F2214620D0F00F69705 /* packet_test.h */;
+		name = "packet_test.h: 1";
 		rLen = 0;
-		rLoc = 260;
+		rLoc = 0;
 		rType = 0;
 		vrLen = 291;
 		vrLoc = 0;
 	};
-	69269ED214620AFE00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 74";
-		rLen = 12;
-		rLoc = 1425;
-		rType = 0;
-		vrLen = 1169;
-		vrLoc = 1059;
-	};
-	69269ED314620AFE00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 75";
-		rLen = 0;
-		rLoc = 1456;
-		rType = 0;
-		vrLen = 1167;
-		vrLoc = 1059;
-	};
-	69269ED414620AFE00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
-	};
-	69269EDB14620B2900F69705 /* PBXTextBookmark */ = {
+	6926A58C1469E66900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 75";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 144";
 		rLen = 0;
-		rLoc = 1456;
+		rLoc = 3885;
 		rType = 0;
-		vrLen = 1167;
-		vrLoc = 1059;
+		vrLen = 1408;
+		vrLoc = 1952;
 	};
-	69269EDC14620B2900F69705 /* PBXTextBookmark */ = {
+	6926A58D1469E66900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 173";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 233";
 		rLen = 0;
-		rLoc = 4833;
+		rLoc = 8111;
 		rType = 0;
-		vrLen = 1279;
-		vrLoc = 3803;
+		vrLen = 1575;
+		vrLoc = 6539;
 	};
-	69269EDD14620B2900F69705 /* PBXTextBookmark */ = {
+	6926A58E1469E66900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 118";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 233";
 		rLen = 0;
-		rLoc = 3559;
+		rLoc = 8111;
 		rType = 0;
-		vrLen = 1473;
-		vrLoc = 2521;
+		vrLen = 1575;
+		vrLoc = 6539;
 	};
-	69269EDE14620B2900F69705 /* PBXTextBookmark */ = {
+	6926A5A11469EA0B00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
-	};
-	69269EE514620B6100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 120";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 147";
 		rLen = 0;
-		rLoc = 3559;
-		rType = 0;
-		vrLen = 1470;
-		vrLoc = 2518;
-	};
-	69269EE614620B6100F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 3994;
 		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
+		vrLen = 1402;
+		vrLoc = 1936;
 	};
-	69269EEF14620B9E00F69705 /* PBXTextBookmark */ = {
+	6926A5A21469EA0B00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 120";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 325";
 		rLen = 0;
-		rLoc = 3559;
-		rType = 0;
-		vrLen = 1464;
-		vrLoc = 2518;
-	};
-	69269EF014620B9E00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 11218;
 		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
+		vrLen = 1425;
+		vrLoc = 8435;
 	};
-	69269EF514620BAB00F69705 /* PBXTextBookmark */ = {
+	6926A5A31469EA0B00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 120";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 243";
 		rLen = 0;
-		rLoc = 3559;
-		rType = 0;
-		vrLen = 1464;
-		vrLoc = 2518;
-	};
-	69269EF614620BAB00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 8970;
 		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
+		vrLen = 1663;
+		vrLoc = 6777;
 	};
-	69269EFD14620BB600F69705 /* PBXTextBookmark */ = {
+	6926A5AD1469EA3A00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 120";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 226";
 		rLen = 0;
-		rLoc = 3559;
-		rType = 0;
-		vrLen = 1464;
-		vrLoc = 2518;
-	};
-	69269EFE14620BB600F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 8322;
 		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
+		vrLen = 1673;
+		vrLoc = 6472;
 	};
-	69269F0314620BC100F69705 /* PBXTextBookmark */ = {
+	6926A5B11469EB4E00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 120";
-		rLen = 0;
-		rLoc = 3559;
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 96";
+		rLen = 16;
+		rLoc = 2521;
 		rType = 0;
-		vrLen = 1460;
-		vrLoc = 2518;
+		vrLen = 1315;
+		vrLoc = 1627;
 	};
-	69269F0414620BC100F69705 /* PBXTextBookmark */ = {
+	6926A5B21469EB4E00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 181";
+		rLen = 1;
+		rLoc = 6929;
 		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
+		vrLen = 1900;
+		vrLoc = 4533;
 	};
-	69269F0C14620C1B00F69705 /* PBXTextBookmark */ = {
+	6926A5B31469EB4E00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 120";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 959";
 		rLen = 0;
-		rLoc = 3447;
-		rType = 0;
-		vrLen = 1599;
-		vrLoc = 2518;
-	};
-	69269F0D14620C1B00F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 35988;
 		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
+		vrLen = 1765;
+		vrLoc = 29422;
 	};
-	69269F1014620C5700F69705 /* PBXTextBookmark */ = {
+	6926A5B51469EC5000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 490";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 969";
 		rLen = 0;
-		rLoc = 14774;
+		rLoc = 36470;
 		rType = 0;
-		vrLen = 1527;
-		vrLoc = 13576;
+		vrLen = 1684;
+		vrLoc = 29422;
 	};
-	69269F1114620C5700F69705 /* PBXTextBookmark */ = {
+	6926A5C51469EE2F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
 		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
-	};
-	69269F1714620C6800F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 490";
 		rLen = 0;
-		rLoc = 14773;
-		rType = 0;
-		vrLen = 1527;
-		vrLoc = 13576;
-	};
-	69269F1814620C6800F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
+		rLoc = 1438;
 		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
+		vrLen = 1225;
+		vrLoc = 539;
 	};
-	69269F1D14620C8900F69705 /* PBXTextBookmark */ = {
+	6926A5C61469EE2F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 490";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 977";
 		rLen = 0;
-		rLoc = 14773;
+		rLoc = 36772;
 		rType = 0;
-		vrLen = 1527;
-		vrLoc = 13576;
-	};
-	69269F1E14620C8900F69705 /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 55";
-		rLen = 7;
-		rLoc = 1069;
-		rType = 0;
-		vrLen = 991;
-		vrLoc = 720;
-	};
-	69269F2114620D0F00F69705 /* packet_test.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1030, 780}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 1356}";
-		};
-	};
-	69269F2214620D0F00F69705 /* packet_test.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {826, 591}}";
-			sepNavSelRange = "{0, 0}";
-			sepNavVisRange = "{0, 291}";
-		};
-	};
-	69269F2314620D0F00F69705 /* packet.c */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {826, 10283}}";
-			sepNavSelRange = "{13453, 0}";
-			sepNavVisRange = "{13421, 1351}";
-		};
-	};
-	69269F2414620D0F00F69705 /* packet.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {826, 1911}}";
-			sepNavSelRange = "{1291, 0}";
-			sepNavVisRange = "{834, 852}";
-		};
-	};
-	69269F4E14620FC200F69705 /* packet.c:179 */ = {
-		isa = PBXFileBreakpoint;
-		actions = (
-		);
-		breakpointStyle = 0;
-		continueAfterActions = 0;
-		countType = 0;
-		delayBeforeContinue = 0;
-		fileReference = 69269F2314620D0F00F69705 /* packet.c */;
-		functionName = "spgp_decode_message()";
-		hitCount = 0;
-		ignoreCount = 0;
-		lineNumber = 179;
-		location = duckdog;
-		modificationTime = 342057198.551;
-		originalNumberOfMultipleMatches = 1;
-		state = 2;
+		vrLen = 1601;
+		vrLoc = 29516;
 	};
-	69269F5214620FC500F69705 /* PBXTextBookmark */ = {
+	6926A5C71469EE2F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AA747D9E0F9514B9006C5449 /* simplepgp_Prefix.pch */;
-		name = "simplepgp_Prefix.pch: 1";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 977";
 		rLen = 0;
-		rLoc = 0;
+		rLoc = 36772;
 		rType = 0;
-		vrLen = 188;
-		vrLoc = 0;
+		vrLen = 1598;
+		vrLoc = 29516;
 	};
-	69269F5314620FC500F69705 /* PBXTextBookmark */ = {
+	6926A5CB1469EE8F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2114620D0F00F69705 /* packet_test.c */;
-		name = "packet_test.c: 1";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 959";
 		rLen = 0;
-		rLoc = 0;
+		rLoc = 35949;
 		rType = 0;
-		vrLen = 1356;
-		vrLoc = 0;
+		vrLen = 1633;
+		vrLoc = 29516;
 	};
-	69269F5414620FC500F69705 /* PBXTextBookmark */ = {
+	6926A5E41469EF5D00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 168";
+		name = "packet.c: 974";
 		rLen = 0;
-		rLoc = 5341;
+		rLoc = 36438;
 		rType = 0;
-		vrLen = 1715;
-		vrLoc = 3704;
+		vrLen = 1643;
+		vrLoc = 29261;
 	};
-	69269F5514620FC500F69705 /* PBXTextBookmark */ = {
+	6926A5ED1469EF8C00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 168";
+		name = "packet.c: 984";
 		rLen = 0;
-		rLoc = 5341;
+		rLoc = 36748;
 		rType = 0;
-		vrLen = 1715;
-		vrLoc = 3704;
+		vrLen = 1637;
+		vrLoc = 29261;
 	};
-	69269F5F14620FFB00F69705 /* PBXTextBookmark */ = {
+	6926A5F51469F04600F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 168";
+		name = "packet.c: 993";
 		rLen = 0;
-		rLoc = 5341;
+		rLoc = 37498;
 		rType = 0;
-		vrLen = 1715;
-		vrLoc = 3704;
+		vrLen = 1784;
+		vrLoc = 30278;
 	};
-	69269F6A146210A800F69705 /* PBXTextBookmark */ = {
+	6926A6061469F14800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 171";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 55";
 		rLen = 0;
-		rLoc = 5427;
+		rLoc = 1438;
 		rType = 0;
-		vrLen = 1762;
-		vrLoc = 3553;
+		vrLen = 1429;
+		vrLoc = 1284;
 	};
-	69269F6B146210A800F69705 /* PBXTextBookmark */ = {
+	6926A6071469F14800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 171";
+		name = "packet.c: 993";
 		rLen = 0;
-		rLoc = 5427;
+		rLoc = 37498;
 		rType = 0;
-		vrLen = 1762;
-		vrLoc = 3553;
+		vrLen = 1784;
+		vrLoc = 30278;
 	};
-	69269F7B1462110A00F69705 /* PBXTextBookmark */ = {
+	6926A6081469F14800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 168";
+		name = "packet.c: 993";
 		rLen = 0;
-		rLoc = 5341;
+		rLoc = 37498;
 		rType = 0;
-		vrLen = 1766;
-		vrLoc = 3553;
+		vrLen = 1847;
+		vrLoc = 30172;
 	};
-	69269F8A1462131300F69705 /* PBXTextBookmark */ = {
+	6926A6241469F85000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 59";
-		rLen = 7;
-		rLoc = 1533;
+		name = "packet.h: 55";
+		rLen = 0;
+		rLoc = 1438;
 		rType = 0;
-		vrLen = 1144;
-		vrLoc = 313;
+		vrLen = 1357;
+		vrLoc = 1744;
 	};
-	69269F8B1462131300F69705 /* PBXTextBookmark */ = {
+	6926A6251469F85000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 209";
+		name = "packet.c: 990";
 		rLen = 0;
-		rLoc = 6593;
+		rLoc = 36863;
 		rType = 0;
-		vrLen = 1536;
-		vrLoc = 4539;
+		vrLen = 1796;
+		vrLoc = 29921;
 	};
-	69269F8C1462131300F69705 /* PBXTextBookmark */ = {
+	6926A6261469F85000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 197";
+		name = "packet.c: 1025";
 		rLen = 0;
-		rLoc = 6123;
+		rLoc = 40480;
 		rType = 0;
-		vrLen = 1317;
-		vrLoc = 5272;
+		vrLen = 1708;
+		vrLoc = 30610;
 	};
-	69269F991462133E00F69705 /* PBXTextBookmark */ = {
+	6926A6281469F8EC00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 200";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 55";
 		rLen = 0;
-		rLoc = 6263;
+		rLoc = 1438;
 		rType = 0;
-		vrLen = 1337;
-		vrLoc = 5272;
+		vrLen = 1318;
+		vrLoc = 1099;
 	};
-	69269FA01462137A00F69705 /* PBXTextBookmark */ = {
+	6926A6291469F8EC00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 235";
+		name = "packet.c: 1025";
 		rLen = 0;
-		rLoc = 7330;
+		rLoc = 40456;
 		rType = 0;
-		vrLen = 1333;
-		vrLoc = 5302;
+		vrLen = 1740;
+		vrLoc = 30610;
 	};
-	69269FA71462140200F69705 /* PBXTextBookmark */ = {
+	6926A62A1469F8EC00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 211";
+		name = "packet.c: 1002";
 		rLen = 0;
-		rLoc = 6553;
+		rLoc = 37173;
 		rType = 0;
-		vrLen = 1370;
-		vrLoc = 5279;
+		vrLen = 1864;
+		vrLoc = 29944;
 	};
-	69269FAE1462141200F69705 /* PBXTextBookmark */ = {
+	6926A6341469FA5100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 167";
-		rLen = 0;
-		rLoc = 5341;
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 154";
+		rLen = 56;
+		rLoc = 3695;
 		rType = 0;
-		vrLen = 1805;
-		vrLoc = 4194;
+		vrLen = 1515;
+		vrLoc = 2213;
 	};
-	69269FB1146237EA00F69705 /* PBXTextBookmark */ = {
+	6926A6351469FA5100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 48";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 1001";
 		rLen = 0;
-		rLoc = 1033;
+		rLoc = 37172;
 		rType = 0;
-		vrLen = 849;
-		vrLoc = 781;
+		vrLen = 1801;
+		vrLoc = 30007;
 	};
-	69269FB2146237EA00F69705 /* PBXTextBookmark */ = {
+	6926A6361469FA5100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 379";
+		name = "packet.c: 249";
 		rLen = 0;
-		rLoc = 11978;
+		rLoc = 8771;
 		rType = 0;
-		vrLen = 1458;
-		vrLoc = 10100;
+		vrLen = 1363;
+		vrLoc = 6644;
+	};
+	6926A660146B38F200F69705 /* keychain.c */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {905, 1300}}";
+			sepNavSelRange = "{1871, 0}";
+			sepNavVisRange = "{1048, 1035}";
+		};
+	};
+	6926A661146B38F200F69705 /* keychain.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {905, 618}}";
+			sepNavSelRange = "{330, 0}";
+			sepNavVisRange = "{0, 659}";
+		};
 	};
-	69269FB3146237EA00F69705 /* PBXTextBookmark */ = {
+	6926A671146B39B700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 382";
+		name = "packet.c: 50";
 		rLen = 0;
-		rLoc = 12423;
+		rLoc = 921;
 		rType = 0;
-		vrLen = 1447;
-		vrLoc = 10529;
+		vrLen = 1332;
+		vrLoc = 30243;
 	};
-	69269FBD14623A5A00F69705 /* PBXTextBookmark */ = {
+	6926A672146B39B700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 51";
+		name = "packet.h: 153";
 		rLen = 0;
-		rLoc = 1048;
+		rLoc = 3648;
 		rType = 0;
-		vrLen = 872;
-		vrLoc = 870;
+		vrLen = 1139;
+		vrLoc = 2589;
 	};
-	69269FBE14623A5A00F69705 /* PBXTextBookmark */ = {
+	6926A673146B39B700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2214620D0F00F69705 /* packet_test.h */;
-		name = "packet_test.h: 1";
+		fRef = 6926A660146B38F200F69705 /* keychain.c */;
+		name = "keychain.c: 37";
 		rLen = 0;
-		rLoc = 0;
+		rLoc = 742;
 		rType = 0;
-		vrLen = 291;
+		vrLen = 1008;
 		vrLoc = 0;
 	};
-	69269FBF14623A5A00F69705 /* PBXTextBookmark */ = {
+	6926A674146B39B700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 369";
-		rLen = 0;
-		rLoc = 11571;
+		fRef = 6926A661146B38F200F69705 /* keychain.h */;
+		name = "keychain.h: 17";
+		rLen = 18;
+		rLoc = 233;
 		rType = 0;
-		vrLen = 1552;
-		vrLoc = 10245;
+		vrLen = 621;
+		vrLoc = 0;
 	};
-	69269FC014623A5A00F69705 /* PBXTextBookmark */ = {
+	6926A675146B39B700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 390";
-		rLen = 0;
-		rLoc = 11978;
+		fRef = 6926A661146B38F200F69705 /* keychain.h */;
+		name = "keychain.h: 17";
+		rLen = 18;
+		rLoc = 233;
 		rType = 0;
-		vrLen = 1554;
-		vrLoc = 10245;
+		vrLen = 621;
+		vrLoc = 0;
 	};
-	69269FC414623C6700F69705 /* PBXTextBookmark */ = {
+	6926A68E146B3A7F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 51";
+		fRef = 6926A661146B38F200F69705 /* keychain.h */;
+		name = "keychain.h: 16";
 		rLen = 0;
-		rLoc = 1048;
+		rLoc = 224;
 		rType = 0;
-		vrLen = 1003;
-		vrLoc = 162;
+		vrLen = 621;
+		vrLoc = 0;
 	};
-	69269FC514623C6700F69705 /* PBXTextBookmark */ = {
+	6926A68F146B3A7F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 376";
-		rLen = 0;
-		rLoc = 12038;
+		name = "packet.c: 49";
+		rLen = 25;
+		rLoc = 1001;
 		rType = 0;
-		vrLen = 1419;
-		vrLoc = 10245;
+		vrLen = 1196;
+		vrLoc = 262;
 	};
-	69269FC614623C6700F69705 /* PBXTextBookmark */ = {
+	6926A690146B3A7F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 383";
+		fRef = 6926A660146B38F200F69705 /* keychain.c */;
+		name = "keychain.c: 9";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 140;
 		rType = 0;
-		vrLen = 1448;
-		vrLoc = 10536;
+		vrLen = 1020;
+		vrLoc = 35;
 	};
-	69269FCA14623E3800F69705 /* PBXTextBookmark */ = {
+	6926A691146B3A7F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 156";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 20";
 		rLen = 0;
-		rLoc = 4732;
+		rLoc = 423;
 		rType = 0;
-		vrLen = 1441;
-		vrLoc = 10487;
+		vrLen = 1201;
+		vrLoc = 0;
 	};
-	69269FD014623EB800F69705 /* PBXTextBookmark */ = {
+	6926A692146B3A7F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 389";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 12";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 180;
 		rType = 0;
-		vrLen = 1430;
-		vrLoc = 10361;
+		vrLen = 1217;
+		vrLoc = 0;
 	};
-	69269FD214623F6800F69705 /* PBXTextBookmark */ = {
+	6926A69F146B3AC100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 389";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 12";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 180;
 		rType = 0;
-		vrLen = 1431;
-		vrLoc = 10361;
+		vrLen = 1217;
+		vrLoc = 0;
 	};
-	69269FD814623F8800F69705 /* PBXTextBookmark */ = {
+	6926A6A0146B3AC100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 389";
+		fRef = 6926A661146B38F200F69705 /* keychain.h */;
+		name = "keychain.h: 16";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 224;
 		rType = 0;
-		vrLen = 1431;
-		vrLoc = 10361;
+		vrLen = 621;
+		vrLoc = 0;
 	};
-	69269FE61462402B00F69705 /* PBXTextBookmark */ = {
+	6926A6A1146B3AC100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 389";
+		fRef = 6926A660146B38F200F69705 /* keychain.c */;
+		name = "keychain.c: 9";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 140;
 		rType = 0;
-		vrLen = 1658;
-		vrLoc = 14213;
+		vrLen = 989;
+		vrLoc = 164;
 	};
-	69269FE71462402B00F69705 /* PBXTextBookmark */ = {
+	6926A6A2146B3AC100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 389";
+		fRef = 6926A660146B38F200F69705 /* keychain.c */;
+		name = "keychain.c: 9";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 140;
 		rType = 0;
-		vrLen = 1658;
-		vrLoc = 14213;
+		vrLen = 989;
+		vrLoc = 164;
 	};
-	69269FEB1462413F00F69705 /* PBXTextBookmark */ = {
+	6926A6D0146B44A300F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 500";
+		fRef = 6926A661146B38F200F69705 /* keychain.h */;
+		name = "keychain.h: 19";
 		rLen = 0;
-		rLoc = 18748;
+		rLoc = 330;
 		rType = 0;
-		vrLen = 1664;
-		vrLoc = 14213;
+		vrLen = 659;
+		vrLoc = 0;
 	};
-	69269FF21462414C00F69705 /* PBXTextBookmark */ = {
+	6926A6D1146B44A300F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 500";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 108";
 		rLen = 0;
-		rLoc = 18748;
+		rLoc = 2487;
 		rType = 0;
-		vrLen = 1664;
-		vrLoc = 14213;
+		vrLen = 1088;
+		vrLoc = 2043;
 	};
-	69269FF91462423A00F69705 /* PBXTextBookmark */ = {
+	6926A6D2146B44A300F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 500";
+		name = "packet.c: 90";
 		rLen = 0;
-		rLoc = 18748;
+		rLoc = 3177;
 		rType = 0;
-		vrLen = 1377;
-		vrLoc = 10784;
+		vrLen = 1411;
+		vrLoc = 30330;
 	};
-	6926A0001462426D00F69705 /* PBXTextBookmark */ = {
+	6926A6D3146B44A300F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 377";
-		rLen = 0;
-		rLoc = 11607;
+		fRef = 6926A660146B38F200F69705 /* keychain.c */;
+		name = "keychain.c: 41";
+		rLen = 36;
+		rLoc = 779;
 		rType = 0;
-		vrLen = 1425;
-		vrLoc = 10784;
+		vrLen = 1036;
+		vrLoc = 1048;
 	};
-	6926A007146242ED00F69705 /* PBXTextBookmark */ = {
+	6926A6D4146B44A300F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 158";
+		fRef = 6926A660146B38F200F69705 /* keychain.c */;
+		name = "keychain.c: 88";
 		rLen = 0;
-		rLoc = 4732;
+		rLoc = 1871;
 		rType = 0;
-		vrLen = 1595;
-		vrLoc = 3882;
+		vrLen = 1069;
+		vrLoc = 1014;
 	};
-	6926A00E146243CA00F69705 /* PBXTextBookmark */ = {
+	6926A6E1146B44E000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 386";
+		fRef = 6926A660146B38F200F69705 /* keychain.c */;
+		name = "keychain.c: 88";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 1871;
 		rType = 0;
-		vrLen = 1542;
-		vrLoc = 10812;
+		vrLen = 1035;
+		vrLoc = 1048;
 	};
-	6926A0151462445400F69705 /* PBXTextBookmark */ = {
+	6926A6E2146B44E000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 385";
+		fRef = 69269F2214620D0F00F69705 /* packet_test.h */;
+		name = "packet_test.h: 1";
 		rLen = 0;
-		rLoc = 12290;
+		rLoc = 0;
 		rType = 0;
-		vrLen = 1588;
-		vrLoc = 10812;
+		vrLen = 291;
+		vrLoc = 0;
 	};
-	6926A01C1462449200F69705 /* PBXTextBookmark */ = {
+	6926A6E3146B44E000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 385";
+		name = "packet.c: 90";
 		rLen = 0;
-		rLoc = 12290;
+		rLoc = 3177;
 		rType = 0;
-		vrLen = 1590;
-		vrLoc = 10812;
+		vrLen = 1432;
+		vrLoc = 31262;
 	};
-	6926A0231462454F00F69705 /* PBXTextBookmark */ = {
+	6926A6E4146B44E000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 385";
+		name = "packet.c: 90";
 		rLen = 0;
-		rLoc = 12290;
+		rLoc = 3177;
 		rType = 0;
-		vrLen = 1591;
-		vrLoc = 10812;
+		vrLen = 1432;
+		vrLoc = 31262;
 	};
-	6926A02A1462457A00F69705 /* PBXTextBookmark */ = {
+	6926A6EB146B44FD00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 385";
+		name = "packet.c: 1045";
 		rLen = 0;
-		rLoc = 12290;
+		rLoc = 40337;
 		rType = 0;
-		vrLen = 1591;
-		vrLoc = 10812;
+		vrLen = 1444;
+		vrLoc = 31262;
 	};
-	6926A033146245AE00F69705 /* PBXTextBookmark */ = {
+	6926A6F5146B453900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 380";
+		name = "packet.c: 1045";
 		rLen = 0;
-		rLoc = 12055;
+		rLoc = 40337;
 		rType = 0;
-		vrLen = 1542;
-		vrLoc = 10812;
+		vrLen = 1444;
+		vrLoc = 31262;
 	};
-	6926A03A1462D95600F69705 /* PBXTextBookmark */ = {
+	6926A710146B467100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 387";
+		name = "packet.c: 1045";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 40337;
 		rType = 0;
-		vrLen = 1543;
-		vrLoc = 10812;
+		vrLen = 1444;
+		vrLoc = 31262;
 	};
-	6926A0411462D98D00F69705 /* PBXTextBookmark */ = {
+	6926A71B146B478A00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 387";
+		name = "packet.c: 1045";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 40337;
 		rType = 0;
-		vrLen = 1542;
-		vrLoc = 10812;
+		vrLen = 1453;
+		vrLoc = 31262;
 	};
-	6926A0461462D9B900F69705 /* PBXTextBookmark */ = {
+	6926A722146B47C800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 385";
+		name = "packet.c: 1045";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 40337;
 		rType = 0;
-		vrLen = 1578;
-		vrLoc = 10812;
+		vrLen = 1453;
+		vrLoc = 31262;
 	};
-	6926A04A1462DAB900F69705 /* PBXTextBookmark */ = {
+	6926A723146B47C800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 386";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 108";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 2487;
 		rType = 0;
-		vrLen = 1542;
-		vrLoc = 10812;
+		vrLen = 1217;
+		vrLoc = 0;
 	};
-	6926A0501462DAE200F69705 /* PBXTextBookmark */ = {
+	6926A72D146B483200F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 15";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 21";
 		rLen = 0;
-		rLoc = 259;
+		rLoc = 423;
 		rType = 0;
-		vrLen = 1433;
-		vrLoc = 10541;
+		vrLen = 1217;
+		vrLoc = 0;
 	};
-	6926A0571462DC7E00F69705 /* PBXTextBookmark */ = {
+	6926A72E146B483200F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 379";
+		name = "packet.c: 1046";
 		rLen = 0;
-		rLoc = 11571;
+		rLoc = 40337;
 		rType = 0;
-		vrLen = 1398;
-		vrLoc = 10541;
+		vrLen = 1450;
+		vrLoc = 31285;
 	};
-	6926A0641462DCB200F69705 /* PBXTextBookmark */ = {
+	6926A72F146B483200F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 390";
+		name = "packet.c: 1043";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 40260;
 		rType = 0;
-		vrLen = 1408;
-		vrLoc = 10541;
+		vrLen = 1450;
+		vrLoc = 31285;
 	};
-	6926A06B1462DCD300F69705 /* PBXTextBookmark */ = {
+	6926A73E146B486200F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 387";
+		name = "packet.c: 1043";
 		rLen = 0;
-		rLoc = 12177;
+		rLoc = 40260;
 		rType = 0;
-		vrLen = 1395;
-		vrLoc = 10541;
+		vrLen = 1450;
+		vrLoc = 31285;
 	};
-	6926A0721462DEE000F69705 /* PBXTextBookmark */ = {
+	6926A742146B48A400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 387";
+		name = "packet.c: 1048";
 		rLen = 0;
-		rLoc = 12177;
+		rLoc = 40229;
 		rType = 0;
-		vrLen = 1400;
-		vrLoc = 10541;
+		vrLen = 1333;
+		vrLoc = 31285;
 	};
-	6926A0791462DF3A00F69705 /* PBXTextBookmark */ = {
+	6926A748146B520D00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 388";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 67";
 		rLen = 0;
-		rLoc = 12290;
+		rLoc = 1598;
 		rType = 0;
-		vrLen = 1398;
-		vrLoc = 10541;
+		vrLen = 895;
+		vrLoc = 993;
 	};
-	6926A0801462DF6000F69705 /* PBXTextBookmark */ = {
+	6926A749146B520D00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 388";
-		rLen = 0;
-		rLoc = 12290;
+		name = "packet.c: 1226";
+		rLen = 74;
+		rLoc = 44889;
 		rType = 0;
-		vrLen = 1412;
-		vrLoc = 10541;
+		vrLen = 1307;
+		vrLoc = 36795;
 	};
-	6926A0871462DF7800F69705 /* PBXTextBookmark */ = {
+	6926A74A146B520D00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 388";
+		name = "packet.c: 1034";
 		rLen = 0;
-		rLoc = 12290;
+		rLoc = 38225;
 		rType = 0;
-		vrLen = 1412;
-		vrLoc = 10541;
+		vrLen = 1205;
+		vrLoc = 30973;
 	};
-	6926A0901462DFB200F69705 /* PBXTextBookmark */ = {
+	6926A750146B525300F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 388";
+		name = "packet.c: 1032";
 		rLen = 0;
-		rLoc = 12290;
+		rLoc = 38037;
 		rType = 0;
-		vrLen = 1442;
-		vrLoc = 10541;
+		vrLen = 1408;
+		vrLoc = 30775;
 	};
-	6926A09D1462E09C00F69705 /* PBXTextBookmark */ = {
+	6926A758146B534600F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 48";
+		name = "packet.h: 67";
 		rLen = 0;
-		rLoc = 1047;
+		rLoc = 1598;
 		rType = 0;
-		vrLen = 1047;
-		vrLoc = 204;
+		vrLen = 895;
+		vrLoc = 993;
 	};
-	6926A09E1462E09C00F69705 /* PBXTextBookmark */ = {
+	6926A759146B534600F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 388";
+		name = "packet.c: 1032";
 		rLen = 0;
-		rLoc = 12290;
+		rLoc = 37656;
 		rType = 0;
-		vrLen = 1442;
-		vrLoc = 10541;
+		vrLen = 1492;
+		vrLoc = 31248;
 	};
-	6926A09F1462E09C00F69705 /* PBXTextBookmark */ = {
+	6926A75A146B534600F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 394";
+		name = "packet.c: 1045";
 		rLen = 0;
-		rLoc = 12290;
+		rLoc = 38132;
 		rType = 0;
-		vrLen = 1443;
-		vrLoc = 10541;
+		vrLen = 1462;
+		vrLoc = 31147;
 	};
-	6926A0B01462E1BE00F69705 /* PBXTextBookmark */ = {
+	6926A75E146B535D00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 48";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 1048";
 		rLen = 0;
-		rLoc = 1047;
+		rLoc = 38354;
 		rType = 0;
-		vrLen = 985;
-		vrLoc = 264;
+		vrLen = 1462;
+		vrLoc = 31147;
 	};
-	6926A0B11462E1BE00F69705 /* PBXTextBookmark */ = {
+	6926A762146B539C00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 233";
+		name = "packet.c: 1049";
 		rLen = 0;
-		rLoc = 7040;
+		rLoc = 38298;
 		rType = 0;
-		vrLen = 1202;
-		vrLoc = 5740;
+		vrLen = 1394;
+		vrLoc = 31415;
 	};
-	6926A0B21462E1BE00F69705 /* PBXTextBookmark */ = {
+	6926A777146B542600F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 408";
+		name = "packet.c: 1049";
 		rLen = 0;
-		rLoc = 12331;
+		rLoc = 38298;
 		rType = 0;
-		vrLen = 1545;
-		vrLoc = 11119;
+		vrLen = 1394;
+		vrLoc = 31415;
 	};
-	6926A0BB1462E1D900F69705 /* PBXTextBookmark */ = {
+	6926A778146B542600F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 408";
+		name = "packet.c: 1029";
 		rLen = 0;
-		rLoc = 12414;
+		rLoc = 37523;
 		rType = 0;
-		vrLen = 1553;
-		vrLoc = 11119;
+		vrLen = 1498;
+		vrLoc = 30842;
 	};
-	6926A0C21462E20500F69705 /* PBXTextBookmark */ = {
+	6926A782146B545000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 520";
+		name = "packet.c: 1032";
 		rLen = 0;
-		rLoc = 18748;
+		rLoc = 37600;
 		rType = 0;
-		vrLen = 1557;
-		vrLoc = 14733;
+		vrLen = 1502;
+		vrLoc = 30842;
 	};
-	6926A0C71462E29800F69705 /* PBXTextBookmark */ = {
+	6926A78D146B54BF00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 498";
+		name = "packet.c: 1032";
 		rLen = 0;
-		rLoc = 17841;
+		rLoc = 37600;
 		rType = 0;
-		vrLen = 1552;
-		vrLoc = 14619;
+		vrLen = 1508;
+		vrLoc = 30842;
 	};
-	6926A0CD1462EF4000F69705 /* PBXTextBookmark */ = {
+	6926A7B8146B575800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 402";
-		rLen = 0;
-		rLoc = 12110;
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 51";
+		rLen = 15;
+		rLoc = 1271;
 		rType = 0;
-		vrLen = 1394;
-		vrLoc = 11116;
+		vrLen = 955;
+		vrLoc = 1025;
 	};
-	6926A0DC1462EFBF00F69705 /* PBXTextBookmark */ = {
+	6926A7B9146B575800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 421";
-		rLen = 0;
-		rLoc = 14924;
+		name = "packet.c: 970";
+		rLen = 119;
+		rLoc = 35586;
 		rType = 0;
-		vrLen = 1533;
-		vrLoc = 11555;
+		vrLen = 1389;
+		vrLoc = 31415;
 	};
-	6926A0DF146340CA00F69705 /* PBXTextBookmark */ = {
+	6926A7BA146B575800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 421";
+		name = "packet.c: 1250";
 		rLen = 0;
-		rLoc = 14924;
+		rLoc = 45172;
 		rType = 0;
-		vrLen = 1481;
-		vrLoc = 11607;
+		vrLen = 1185;
+		vrLoc = 37615;
 	};
-	6926A0E0146340CA00F69705 /* PBXTextBookmark */ = {
+	6926A7C4146B577900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 68";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 1250";
 		rLen = 0;
-		rLoc = 1587;
+		rLoc = 45172;
 		rType = 0;
-		vrLen = 787;
-		vrLoc = 785;
+		vrLen = 1185;
+		vrLoc = 37619;
 	};
-	6926A0E1146340CA00F69705 /* PBXTextBookmark */ = {
+	6926A7D0146B57EC00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 19";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 1039";
 		rLen = 0;
-		rLoc = 415;
+		rLoc = 37884;
 		rType = 0;
-		vrLen = 934;
-		vrLoc = 36;
+		vrLen = 1356;
+		vrLoc = 31419;
 	};
-	6926A0EE1463428800F69705 /* PBXTextBookmark */ = {
+	6926A7D4146B590C00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 37";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 1064";
 		rLen = 0;
-		rLoc = 855;
+		rLoc = 38736;
 		rType = 0;
-		vrLen = 740;
-		vrLoc = 865;
+		vrLen = 1461;
+		vrLoc = 31857;
 	};
-	6926A0EF1463428800F69705 /* PBXTextBookmark */ = {
+	6926A7D8146B596C00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 421";
+		name = "packet.c: 1062";
 		rLen = 0;
-		rLoc = 14924;
+		rLoc = 38596;
 		rType = 0;
-		vrLen = 1449;
-		vrLoc = 11882;
+		vrLen = 1476;
+		vrLoc = 31764;
 	};
-	6926A0F01463428800F69705 /* PBXTextBookmark */ = {
+	6926A7E0146B59BC00F69705 /* XCBuildMessageTextBookmark */ = {
 		isa = PBXTextBookmark;
+		comments = "Passing argument 4 of 'gcry_mpi_print' from incompatible pointer type";
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 431";
-		rLen = 0;
-		rLoc = 15308;
-		rType = 0;
-		vrLen = 1453;
-		vrLoc = 12198;
+		fallbackIsa = XCBuildMessageTextBookmark;
+		rLen = 1;
+		rLoc = 1231;
+		rType = 1;
 	};
-	6926A0FE1463434000F69705 /* PBXTextBookmark */ = {
+	6926A7E1146B59BC00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 37";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 978";
 		rLen = 0;
-		rLoc = 855;
+		rLoc = 35920;
 		rType = 0;
-		vrLen = 764;
-		vrLoc = 865;
+		vrLen = 1540;
+		vrLoc = 31881;
 	};
-	6926A0FF1463434000F69705 /* PBXTextBookmark */ = {
+	6926A7E3146B59E400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 209";
+		name = "packet.c: 1064";
 		rLen = 0;
-		rLoc = 6296;
+		rLoc = 38736;
+		rType = 0;
+		vrLen = 1532;
+		vrLoc = 31881;
+	};
+	6926A7E5146B5A9100F69705 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 108";
+		rLen = 14;
+		rLoc = 2440;
 		rType = 0;
-		vrLen = 1189;
-		vrLoc = 5552;
+		vrLen = 1072;
+		vrLoc = 2099;
 	};
-	6926A1001463434000F69705 /* PBXTextBookmark */ = {
+	6926A7E6146B5A9100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 217";
+		name = "packet.c: 1065";
 		rLen = 0;
-		rLoc = 6545;
+		rLoc = 38723;
 		rType = 0;
-		vrLen = 1196;
-		vrLoc = 5552;
+		vrLen = 1532;
+		vrLoc = 31881;
 	};
-	6926A109146348FB00F69705 /* PBXTextBookmark */ = {
+	6926A7E7146B5A9100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 66";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 1069";
 		rLen = 0;
-		rLoc = 1355;
+		rLoc = 39012;
 		rType = 0;
-		vrLen = 927;
-		vrLoc = 161;
+		vrLen = 1453;
+		vrLoc = 31881;
 	};
-	6926A10A146348FB00F69705 /* PBXTextBookmark */ = {
+	6926A7E9146B5AE900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 420";
+		name = "packet.c: 1071";
 		rLen = 0;
-		rLoc = 14610;
+		rLoc = 39048;
 		rType = 0;
-		vrLen = 1439;
-		vrLoc = 11208;
+		vrLen = 1532;
+		vrLoc = 31881;
 	};
-	6926A10B146348FB00F69705 /* PBXTextBookmark */ = {
+	6926A7EB146B5B4D00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 682";
-		rLen = 162;
-		rLoc = 22669;
+		name = "packet.c: 1069";
+		rLen = 0;
+		rLoc = 38887;
 		rType = 0;
-		vrLen = 1147;
-		vrLoc = 20107;
+		vrLen = 1612;
+		vrLoc = 31913;
 	};
-	6926A11B14634A1600F69705 /* PBXTextBookmark */ = {
+	6926A7F1146B5B7800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 66";
+		name = "packet.h: 67";
 		rLen = 0;
-		rLoc = 1355;
+		rLoc = 1559;
 		rType = 0;
-		vrLen = 804;
-		vrLoc = 739;
+		vrLen = 959;
+		vrLoc = 1262;
 	};
-	6926A11C14634A1600F69705 /* PBXTextBookmark */ = {
+	6926A7F2146B5B7800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 427";
+		name = "packet.c: 1067";
 		rLen = 0;
-		rLoc = 13333;
+		rLoc = 38778;
 		rType = 0;
-		vrLen = 1251;
-		vrLoc = 11759;
+		vrLen = 1555;
+		vrLoc = 31987;
 	};
-	6926A11D14634A1600F69705 /* PBXTextBookmark */ = {
+	6926A7F3146B5B7800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 550";
+		name = "packet.c: 1067";
 		rLen = 0;
-		rLoc = 18710;
+		rLoc = 38778;
 		rType = 0;
-		vrLen = 1460;
-		vrLoc = 16196;
+		vrLen = 1555;
+		vrLoc = 31987;
 	};
-	6926A12614634ACB00F69705 /* PBXTextBookmark */ = {
+	6926A7F5146B5B8900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 429";
+		name = "packet.c: 1073";
 		rLen = 0;
-		rLoc = 13028;
+		rLoc = 39054;
 		rType = 0;
-		vrLen = 1246;
-		vrLoc = 11884;
+		vrLen = 1560;
+		vrLoc = 31987;
 	};
-	6926A13014634B6900F69705 /* PBXTextBookmark */ = {
+	6926A7F7146B5BB700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 66";
+		name = "packet.h: 68";
 		rLen = 0;
-		rLoc = 1355;
+		rLoc = 1559;
 		rType = 0;
-		vrLen = 942;
-		vrLoc = 1407;
+		vrLen = 945;
+		vrLoc = 1262;
 	};
-	6926A13114634B6900F69705 /* PBXTextBookmark */ = {
+	6926A7F8146B5BB700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 462";
+		name = "packet.c: 1073";
 		rLen = 0;
-		rLoc = 15254;
+		rLoc = 39054;
 		rType = 0;
 		vrLen = 1560;
-		vrLoc = 8486;
+		vrLoc = 31987;
 	};
-	6926A13214634B6900F69705 /* PBXTextBookmark */ = {
+	6926A7F9146B5BB700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 429";
+		name = "packet.c: 1075";
 		rLen = 0;
-		rLoc = 13015;
+		rLoc = 39128;
 		rType = 0;
-		vrLen = 1235;
-		vrLoc = 12111;
+		vrLen = 1486;
+		vrLoc = 31987;
 	};
-	6926A13914634C0A00F69705 /* PBXTextBookmark */ = {
+	6926A7FD146B5C8100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 435";
+		name = "packet.c: 1086";
 		rLen = 0;
-		rLoc = 13155;
+		rLoc = 39488;
 		rType = 0;
-		vrLen = 1218;
-		vrLoc = 12111;
+		vrLen = 1581;
+		vrLoc = 32939;
 	};
-	6926A13E14634C5000F69705 /* PBXTextBookmark */ = {
+	6926A80A146B5D0400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 441";
+		name = "packet.c: 1088";
 		rLen = 0;
-		rLoc = 13375;
+		rLoc = 39488;
 		rType = 0;
-		vrLen = 1228;
-		vrLoc = 12474;
+		vrLen = 1636;
+		vrLoc = 32363;
 	};
-	6926A14414634C9E00F69705 /* PBXTextBookmark */ = {
+	6926A80B146B5D0400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 567";
+		name = "packet.c: 1088";
 		rLen = 0;
-		rLoc = 18665;
+		rLoc = 39488;
 		rType = 0;
-		vrLen = 1522;
-		vrLoc = 16617;
+		vrLen = 1637;
+		vrLoc = 32362;
 	};
-	6926A14914634FF400F69705 /* PBXTextBookmark */ = {
+	6926A817146B5D9F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 62";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 1089";
 		rLen = 0;
-		rLoc = 1266;
+		rLoc = 39488;
 		rType = 0;
-		vrLen = 862;
-		vrLoc = 804;
+		vrLen = 1647;
+		vrLoc = 32362;
 	};
-	6926A14A14634FF400F69705 /* PBXTextBookmark */ = {
+	6926A823146B5DC800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 450";
+		name = "packet.c: 1090";
 		rLen = 0;
-		rLoc = 13902;
+		rLoc = 39542;
 		rType = 0;
-		vrLen = 1106;
-		vrLoc = 12333;
+		vrLen = 1651;
+		vrLoc = 32366;
 	};
-	6926A14B14634FF400F69705 /* PBXTextBookmark */ = {
+	6926A824146B5DC800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 450";
+		name = "packet.c: 1090";
 		rLen = 0;
-		rLoc = 13902;
+		rLoc = 39542;
 		rType = 0;
-		vrLen = 1153;
-		vrLoc = 12472;
+		vrLen = 1651;
+		vrLoc = 32366;
 	};
-	6926A14F1463503900F69705 /* PBXTextBookmark */ = {
+	6926A826146B5DF500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 451";
+		name = "packet.c: 1090";
 		rLen = 0;
-		rLoc = 14107;
+		rLoc = 39542;
 		rType = 0;
-		vrLen = 1180;
-		vrLoc = 12474;
+		vrLen = 1658;
+		vrLoc = 32366;
 	};
-	6926A1551463508400F69705 /* PBXTextBookmark */ = {
+	6926A82D146B5E0200F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 90";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 1090";
 		rLen = 0;
-		rLoc = 1842;
+		rLoc = 39542;
 		rType = 0;
-		vrLen = 927;
-		vrLoc = 1499;
+		vrLen = 1658;
+		vrLoc = 32366;
 	};
-	6926A1561463508400F69705 /* PBXTextBookmark */ = {
+	6926A83C146B78C100F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 426";
+		name = "packet.c: 1090";
 		rLen = 0;
-		rLoc = 12730;
+		rLoc = 39542;
 		rType = 0;
-		vrLen = 1174;
-		vrLoc = 12474;
+		vrLen = 1543;
+		vrLoc = 32544;
 	};
-	6926A1571463508400F69705 /* PBXTextBookmark */ = {
+	6926A845146B791200F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 455";
+		name = "packet.c: 1096";
 		rLen = 0;
-		rLoc = 14594;
+		rLoc = 39695;
 		rType = 0;
-		vrLen = 1106;
-		vrLoc = 12474;
+		vrLen = 1484;
+		vrLoc = 32775;
 	};
-	6926A15B146350B600F69705 /* PBXTextBookmark */ = {
+	6926A849146B7AD600F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69868BC91460F386004C5D9B /* gcrypt.h */;
-		name = "gcrypt.h: 75";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 438";
 		rLen = 0;
-		rLoc = 2337;
+		rLoc = 13566;
 		rType = 0;
-		vrLen = 1486;
-		vrLoc = 41191;
+		vrLen = 1856;
+		vrLoc = 11348;
 	};
-	6926A15C146350B600F69705 /* PBXTextBookmark */ = {
+	6926A84B146B7AE200F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 90";
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 438";
 		rLen = 0;
-		rLoc = 1842;
+		rLoc = 13566;
 		rType = 0;
-		vrLen = 927;
-		vrLoc = 1499;
+		vrLen = 1886;
+		vrLoc = 11348;
 	};
-	6926A15D146350B600F69705 /* PBXTextBookmark */ = {
+	6926A853146B7B1D00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 11";
+		name = "packet.c: 438";
 		rLen = 0;
-		rLoc = 172;
+		rLoc = 13566;
 		rType = 0;
-		vrLen = 877;
-		vrLoc = 0;
+		vrLen = 1864;
+		vrLoc = 11538;
 	};
-	6926A15E146350B600F69705 /* PBXTextBookmark */ = {
+	6926A855146B7B2500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 453";
+		name = "packet.c: 438";
 		rLen = 0;
-		rLoc = 13902;
+		rLoc = 13566;
 		rType = 0;
-		vrLen = 1102;
-		vrLoc = 12474;
+		vrLen = 1858;
+		vrLoc = 11538;
 	};
-	6926A160146350E300F69705 /* PBXTextBookmark */ = {
+	6926A857146B7CF400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 455";
+		name = "packet.c: 470";
 		rLen = 0;
-		rLoc = 14149;
+		rLoc = 14676;
 		rType = 0;
-		vrLen = 1048;
-		vrLoc = 12474;
+		vrLen = 1250;
+		vrLoc = 13332;
 	};
-	6926A1621463511900F69705 /* PBXTextBookmark */ = {
+	6926A86D146B7F1B00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 460";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 38";
 		rLen = 0;
-		rLoc = 14450;
+		rLoc = 1013;
 		rType = 0;
-		vrLen = 1059;
-		vrLoc = 12538;
+		vrLen = 1096;
+		vrLoc = 485;
 	};
-	6926A1661463513900F69705 /* PBXTextBookmark */ = {
+	6926A86E146B7F1B00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 461";
+		name = "packet.c: 444";
 		rLen = 0;
-		rLoc = 14433;
+		rLoc = 13566;
 		rType = 0;
-		vrLen = 1220;
-		vrLoc = 13027;
+		vrLen = 1464;
+		vrLoc = 12557;
 	};
-	6926A16A1463517900F69705 /* PBXTextBookmark */ = {
+	6926A86F146B7F1B00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 458";
+		name = "packet.c: 68";
 		rLen = 0;
-		rLoc = 14382;
+		rLoc = 1532;
 		rType = 0;
-		vrLen = 1093;
-		vrLoc = 12627;
+		vrLen = 1528;
+		vrLoc = 12678;
 	};
-	6926A1701463518E00F69705 /* PBXTextBookmark */ = {
+	6926A880146B7F8A00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 423";
+		name = "packet.c: 68";
 		rLen = 0;
-		rLoc = 12666;
+		rLoc = 1532;
 		rType = 0;
-		vrLen = 1165;
-		vrLoc = 12475;
+		vrLen = 1528;
+		vrLoc = 12678;
 	};
-	6926A1771463520200F69705 /* PBXTextBookmark */ = {
+	6926A881146B7F8A00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 452";
+		name = "packet.c: 68";
 		rLen = 0;
-		rLoc = 13418;
+		rLoc = 1532;
 		rType = 0;
-		vrLen = 1105;
-		vrLoc = 12627;
+		vrLen = 1529;
+		vrLoc = 12678;
 	};
-	6926A17C1463521400F69705 /* PBXTextBookmark */ = {
+	6926A888146B7FF800F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 455";
+		name = "packet.c: 68";
 		rLen = 0;
-		rLoc = 13418;
+		rLoc = 1532;
 		rType = 0;
-		vrLen = 1114;
-		vrLoc = 12627;
+		vrLen = 1530;
+		vrLoc = 12679;
 	};
-	6926A1831463522C00F69705 /* PBXTextBookmark */ = {
+	6926A88F146B801E00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 455";
+		name = "packet.c: 68";
 		rLen = 0;
-		rLoc = 13418;
+		rLoc = 1532;
 		rType = 0;
-		vrLen = 1115;
-		vrLoc = 12627;
+		vrLen = 1530;
+		vrLoc = 12679;
 	};
-	6926A18A1463560A00F69705 /* PBXTextBookmark */ = {
+	6926A890146B801E00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 90";
+		name = "packet.h: 38";
 		rLen = 0;
-		rLoc = 1842;
+		rLoc = 1013;
 		rType = 0;
-		vrLen = 902;
-		vrLoc = 711;
+		vrLen = 1093;
+		vrLoc = 485;
 	};
-	6926A18B1463560A00F69705 /* PBXTextBookmark */ = {
+	6926A898146B8A2900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 431";
-		rLen = 0;
-		rLoc = 12842;
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 127";
+		rLen = 25;
+		rLoc = 2827;
 		rType = 0;
-		vrLen = 1102;
-		vrLoc = 12608;
+		vrLen = 1088;
+		vrLoc = 2155;
 	};
-	6926A18C1463560A00F69705 /* PBXTextBookmark */ = {
+	6926A899146B8A2900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 472";
-		rLen = 0;
-		rLoc = 13972;
+		name = "packet.c: 139";
+		rLen = 54;
+		rLoc = 4878;
 		rType = 0;
-		vrLen = 1064;
-		vrLoc = 13301;
+		vrLen = 1692;
+		vrLoc = 5114;
 	};
-	6926A1951463569500F69705 /* PBXTextBookmark */ = {
+	6926A89A146B8A2900F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 469";
+		name = "packet.c: 1012";
 		rLen = 0;
-		rLoc = 14066;
+		rLoc = 35229;
 		rType = 0;
-		vrLen = 1073;
-		vrLoc = 12919;
+		vrLen = 1382;
+		vrLoc = 30008;
 	};
-	6926A19C1463574C00F69705 /* PBXTextBookmark */ = {
+	6926A8A2146B8AE400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 56";
-		rLen = 12;
-		rLoc = 1145;
+		fRef = 69269F2314620D0F00F69705 /* packet.c */;
+		name = "packet.c: 1007";
+		rLen = 0;
+		rLoc = 32016;
 		rType = 0;
-		vrLen = 874;
-		vrLoc = 739;
+		vrLen = 1403;
+		vrLoc = 30374;
 	};
-	6926A19D1463574C00F69705 /* PBXTextBookmark */ = {
+	6926A8A4146C242E00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 469";
+		name = "packet.c: 1017";
 		rLen = 0;
-		rLoc = 14066;
+		rLoc = 32413;
 		rType = 0;
-		vrLen = 1153;
-		vrLoc = 12636;
+		vrLen = 1491;
+		vrLoc = 30915;
 	};
-	6926A19E1463574C00F69705 /* PBXTextBookmark */ = {
+	6926A8B0146C250500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 465";
-		rLen = 0;
-		rLoc = 13854;
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 108";
+		rLen = 18;
+		rLoc = 2364;
 		rType = 0;
-		vrLen = 1342;
-		vrLoc = 12868;
+		vrLen = 1072;
+		vrLoc = 2171;
 	};
-	6926A1A51463576100F69705 /* PBXTextBookmark */ = {
+	6926A8B1146C250500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 467";
+		name = "packet.c: 1017";
 		rLen = 0;
-		rLoc = 13902;
+		rLoc = 32445;
 		rType = 0;
-		vrLen = 1273;
-		vrLoc = 12868;
+		vrLen = 1495;
+		vrLoc = 30915;
 	};
-	6926A1AC1463578B00F69705 /* PBXTextBookmark */ = {
+	6926A8B2146C250500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 466";
+		name = "packet.c: 1012";
 		rLen = 0;
-		rLoc = 13896;
+		rLoc = 32193;
 		rType = 0;
-		vrLen = 1185;
-		vrLoc = 12957;
+		vrLen = 1481;
+		vrLoc = 30905;
 	};
-	6926A1B3146357A900F69705 /* PBXTextBookmark */ = {
+	6926A8BA146C266700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 459";
+		name = "packet.c: 1040";
 		rLen = 0;
-		rLoc = 13580;
+		rLoc = 32959;
 		rType = 0;
-		vrLen = 1192;
-		vrLoc = 12957;
+		vrLen = 1427;
+		vrLoc = 30905;
 	};
-	6926A1C81463585300F69705 /* PBXTextBookmark */ = {
+	6926A8C2146C2B5500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2414620D0F00F69705 /* packet.h */;
-		name = "packet.h: 63";
+		name = "packet.h: 50";
 		rLen = 0;
-		rLoc = 1291;
+		rLoc = 1259;
 		rType = 0;
-		vrLen = 852;
-		vrLoc = 834;
+		vrLen = 1066;
+		vrLoc = 534;
 	};
-	6926A1C91463585300F69705 /* PBXTextBookmark */ = {
+	6926A8C3146C2B5500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 459";
+		name = "packet.c: 1045";
 		rLen = 0;
-		rLoc = 13580;
+		rLoc = 35229;
 		rType = 0;
-		vrLen = 1155;
-		vrLoc = 13024;
+		vrLen = 1420;
+		vrLoc = 30908;
 	};
-	6926A1CA1463585300F69705 /* PBXTextBookmark */ = {
+	6926A8C4146C2B5500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 463";
+		name = "packet.c: 1050";
+		rLen = 119;
+		rLoc = 35586;
+		rType = 0;
+		vrLen = 1509;
+		vrLoc = 31655;
+	};
+	6926A8C8146C323400F69705 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 50";
 		rLen = 0;
-		rLoc = 13752;
+		rLoc = 1259;
 		rType = 0;
-		vrLen = 1155;
-		vrLoc = 13024;
+		vrLen = 906;
+		vrLoc = 823;
 	};
-	6926A1D0146358C100F69705 /* PBXTextBookmark */ = {
+	6926A8C9146C323400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 769";
+		name = "packet.c: 1058";
 		rLen = 0;
-		rLoc = 23073;
+		rLoc = 35420;
 		rType = 0;
-		vrLen = 1069;
-		vrLoc = 22396;
+		vrLen = 1317;
+		vrLoc = 32232;
 	};
-	6926A1D1146358C100F69705 /* PBXTextBookmark */ = {
+	6926A8CA146C323400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 769";
+		name = "packet.c: 1062";
 		rLen = 0;
-		rLoc = 23073;
+		rLoc = 35567;
 		rType = 0;
-		vrLen = 1099;
-		vrLoc = 22366;
+		vrLen = 1285;
+		vrLoc = 32232;
 	};
-	6926A1D71463595400F69705 /* PBXTextBookmark */ = {
+	6926A8DB146C34B200F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 775";
+		name = "packet.c: 1030";
 		rLen = 0;
-		rLoc = 23292;
+		rLoc = 32595;
 		rType = 0;
-		vrLen = 1068;
-		vrLoc = 22357;
+		vrLen = 1417;
+		vrLoc = 31218;
 	};
-	6926A1E1146359AE00F69705 /* PBXTextBookmark */ = {
+	6926A8DC146C34B200F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 775";
+		name = "packet.c: 1030";
 		rLen = 0;
-		rLoc = 23292;
+		rLoc = 32595;
 		rType = 0;
-		vrLen = 1068;
-		vrLoc = 22357;
+		vrLen = 1417;
+		vrLoc = 31218;
 	};
-	6926A1E6146359BE00F69705 /* PBXTextBookmark */ = {
+	6926A8E7146C354B00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 775";
+		name = "packet.c: 1032";
 		rLen = 0;
-		rLoc = 23292;
+		rLoc = 32595;
 		rType = 0;
-		vrLen = 1068;
-		vrLoc = 22357;
+		vrLen = 1392;
+		vrLoc = 31253;
 	};
-	6926A1F314635B3B00F69705 /* PBXTextBookmark */ = {
+	6926A8F2146C355F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 489";
+		name = "packet.c: 1032";
 		rLen = 0;
-		rLoc = 14594;
+		rLoc = 32595;
 		rType = 0;
-		vrLen = 1124;
-		vrLoc = 13260;
+		vrLen = 1392;
+		vrLoc = 31253;
 	};
-	6926A1FA14635B4E00F69705 /* PBXTextBookmark */ = {
+	6926A8F3146C355F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 489";
+		name = "packet.c: 1032";
 		rLen = 0;
-		rLoc = 14594;
+		rLoc = 32595;
 		rType = 0;
-		vrLen = 1124;
-		vrLoc = 13260;
+		vrLen = 1451;
+		vrLoc = 31194;
 	};
-	6926A20A14635B7E00F69705 /* PBXTextBookmark */ = {
+	6926A8FA146C35DD00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 460";
+		name = "packet.c: 436";
 		rLen = 0;
-		rLoc = 13546;
+		rLoc = 13783;
 		rType = 0;
-		vrLen = 1124;
-		vrLoc = 13260;
+		vrLen = 1818;
+		vrLoc = 11735;
 	};
-	6926A21B14635B9D00F69705 /* PBXTextBookmark */ = {
+	6926A90F146C372400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 468";
+		name = "packet.c: 436";
 		rLen = 0;
-		rLoc = 13902;
+		rLoc = 13783;
 		rType = 0;
-		vrLen = 1124;
-		vrLoc = 13260;
+		vrLen = 1451;
+		vrLoc = 12773;
 	};
-	6926A22E14635BE700F69705 /* PBXTextBookmark */ = {
+	6926A910146C372400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 469";
+		name = "packet.c: 437";
 		rLen = 0;
-		rLoc = 13964;
+		rLoc = 13789;
 		rType = 0;
-		vrLen = 1242;
-		vrLoc = 12919;
+		vrLen = 1519;
+		vrLoc = 12550;
 	};
-	6926A23E14635C4500F69705 /* PBXTextBookmark */ = {
+	6926A91B146C386D00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 782";
+		name = "packet.c: 437";
 		rLen = 0;
-		rLoc = 23440;
+		rLoc = 13789;
 		rType = 0;
-		vrLen = 1072;
-		vrLoc = 22386;
+		vrLen = 1523;
+		vrLoc = 12550;
 	};
-	6926A24B14635C6E00F69705 /* PBXTextBookmark */ = {
+	6926A926146C388D00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 470";
+		name = "packet.c: 437";
 		rLen = 0;
-		rLoc = 13964;
+		rLoc = 13789;
 		rType = 0;
-		vrLen = 1108;
-		vrLoc = 13491;
+		vrLen = 1519;
+		vrLoc = 12550;
 	};
-	6926A25C14635CF500F69705 /* PBXTextBookmark */ = {
+	6926A927146C388D00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 462";
+		name = "packet.c: 437";
 		rLen = 0;
-		rLoc = 13699;
+		rLoc = 13789;
 		rType = 0;
-		vrLen = 1167;
-		vrLoc = 13436;
+		vrLen = 1519;
+		vrLoc = 12550;
 	};
-	6926A26714635D4A00F69705 /* PBXTextBookmark */ = {
+	6926A93B146C3AC000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 459";
+		name = "packet.c: 1074";
 		rLen = 0;
-		rLoc = 13565;
+		rLoc = 34389;
 		rType = 0;
-		vrLen = 1084;
-		vrLoc = 13292;
+		vrLen = 1529;
+		vrLoc = 31834;
 	};
-	6926A26D14635D8200F69705 /* PBXTextBookmark */ = {
+	6926A93C146C3AC000F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 482";
+		name = "packet.c: 1074";
 		rLen = 0;
-		rLoc = 14424;
+		rLoc = 34389;
 		rType = 0;
-		vrLen = 1084;
-		vrLoc = 13292;
+		vrLen = 1529;
+		vrLoc = 31834;
 	};
-	6926A27314635DEA00F69705 /* PBXTextBookmark */ = {
+	6926A946146C3B5700F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 471";
+		name = "packet.c: 1074";
 		rLen = 0;
-		rLoc = 13991;
+		rLoc = 34388;
 		rType = 0;
-		vrLen = 1084;
-		vrLoc = 13292;
+		vrLen = 1635;
+		vrLoc = 31881;
 	};
-	6926A28114635EEC00F69705 /* PBXTextBookmark */ = {
+	6926A94D146C3B6300F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 507";
+		name = "packet.c: 1074";
 		rLen = 0;
-		rLoc = 14404;
+		rLoc = 34388;
 		rType = 0;
-		vrLen = 1058;
-		vrLoc = 14071;
+		vrLen = 1635;
+		vrLoc = 31881;
 	};
-	6926A28A14635EF900F69705 /* PBXTextBookmark */ = {
+	6926A94E146C3B6300F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 507";
+		name = "packet.c: 1074";
 		rLen = 0;
-		rLoc = 14404;
+		rLoc = 34388;
 		rType = 0;
-		vrLen = 1122;
-		vrLoc = 13911;
+		vrLen = 1634;
+		vrLoc = 31881;
 	};
-	6926A28B14635EF900F69705 /* PBXTextBookmark */ = {
+	6926A957146C3BDA00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 507";
+		name = "packet.c: 454";
 		rLen = 0;
-		rLoc = 14404;
+		rLoc = 14226;
 		rType = 0;
-		vrLen = 1122;
-		vrLoc = 13911;
+		vrLen = 1502;
+		vrLoc = 12734;
 	};
-	6926A29114635F5E00F69705 /* PBXTextBookmark */ = {
+	6926A963146C3C2B00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 494";
+		name = "packet.c: 1076";
 		rLen = 0;
-		rLoc = 14093;
+		rLoc = 34088;
 		rType = 0;
-		vrLen = 1540;
-		vrLoc = 15275;
+		vrLen = 1580;
+		vrLoc = 32022;
 	};
-	6926A29214635F5E00F69705 /* PBXTextBookmark */ = {
+	6926A97D146C463400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 494";
+		fRef = 69269F2414620D0F00F69705 /* packet.h */;
+		name = "packet.h: 50";
 		rLen = 0;
-		rLoc = 14093;
+		rLoc = 1259;
 		rType = 0;
-		vrLen = 1540;
-		vrLoc = 15275;
+		vrLen = 887;
+		vrLoc = 823;
 	};
-	6926A29914635FBD00F69705 /* PBXTextBookmark */ = {
+	6926A97E146C463400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 486";
+		name = "packet.c: 1090";
 		rLen = 0;
-		rLoc = 13854;
+		rLoc = 34623;
 		rType = 0;
-		vrLen = 1333;
-		vrLoc = 13359;
+		vrLen = 1776;
+		vrLoc = 32146;
 	};
-	6926A2A214635FF000F69705 /* PBXTextBookmark */ = {
+	6926A97F146C463400F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 511";
+		name = "packet.c: 177";
 		rLen = 0;
-		rLoc = 14382;
+		rLoc = 5588;
 		rType = 0;
-		vrLen = 1003;
-		vrLoc = 14064;
+		vrLen = 1558;
+		vrLoc = 5039;
 	};
-	6926A2AB1463601300F69705 /* PBXTextBookmark */ = {
+	6926A985146C477500F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 426";
+		name = "packet.c: 210";
 		rLen = 0;
-		rLoc = 12687;
+		rLoc = 6999;
 		rType = 0;
-		vrLen = 1196;
-		vrLoc = 13710;
+		vrLen = 1859;
+		vrLoc = 5449;
 	};
-	6926A2B21463603600F69705 /* PBXTextBookmark */ = {
+	6926A98E146C48EB00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 485";
-		rLen = 0;
-		rLoc = 14557;
+		name = "packet.c: 1020";
+		rLen = 210;
+		rLoc = 31713;
 		rType = 0;
-		vrLen = 1183;
-		vrLoc = 13591;
+		vrLen = 1580;
+		vrLoc = 33567;
 	};
-	6926A2B91463605A00F69705 /* PBXTextBookmark */ = {
+	6926A98F146C48EB00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 481";
-		rLen = 0;
-		rLoc = 14397;
+		name = "packet.c: 1020";
+		rLen = 210;
+		rLoc = 31713;
 		rType = 0;
-		vrLen = 1194;
-		vrLoc = 13591;
+		vrLen = 1580;
+		vrLoc = 33567;
 	};
-	6926A2BC1463607D00F69705 /* PBXTextBookmark */ = {
+	6926A999146C4E9600F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 478";
+		name = "packet.c: 1119";
 		rLen = 0;
-		rLoc = 14382;
+		rLoc = 35010;
 		rType = 0;
-		vrLen = 1292;
-		vrLoc = 13301;
+		vrLen = 1634;
+		vrLoc = 33895;
 	};
-	6926A2C4146360ED00F69705 /* PBXTextBookmark */ = {
+	6926A9A4146C4F3F00F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 479";
+		name = "packet.c: 1070";
 		rLen = 0;
-		rLoc = 14183;
+		rLoc = 33275;
 		rType = 0;
-		vrLen = 1285;
-		vrLoc = 13495;
+		vrLen = 1725;
+		vrLoc = 32525;
 	};
-	6926A2CD1463613E00F69705 /* PBXTextBookmark */ = {
+	6926A9A7146C4F6200F69705 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 69269F2314620D0F00F69705 /* packet.c */;
-		name = "packet.c: 456";
+		name = "packet.c: 16";
 		rLen = 0;
-		rLoc = 13453;
+		rLoc = 281;
 		rType = 0;
-		vrLen = 1351;
-		vrLoc = 13421;
+		vrLen = 975;
+		vrLoc = 0;
 	};
 	69868AD41460E35F004C5D9B /* Source Control */ = {
 		isa = PBXSourceControlManager;
@@ -3655,33 +2144,6 @@
 		isa = PBXCodeSenseManager;
 		indexTemplatePath = "";
 	};
-	69868AD61460E372004C5D9B /* packet.h */ = {
-		isa = PBXFileReference;
-		fileEncoding = 4;
-		lastKnownFileType = sourcecode.c.h;
-		name = packet.h;
-		path = "/Users/trevor/Documents/Cocoa Projects/libsimplepgp/packet.h";
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1077, 1716}}";
-			sepNavSelRange = "{1069, 7}";
-			sepNavVisRange = "{720, 991}";
-			sepNavWindowFrame = "{{38, 106}, {1136, 746}}";
-		};
-	};
-	69868AD71460E372004C5D9B /* packet.c */ = {
-		isa = PBXFileReference;
-		fileEncoding = 4;
-		lastKnownFileType = sourcecode.c.c;
-		name = packet.c;
-		path = "/Users/trevor/Documents/Cocoa Projects/libsimplepgp/packet.c";
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1030, 7189}}";
-			sepNavSelRange = "{14773, 0}";
-			sepNavVisRange = "{13576, 1527}";
-		};
-	};
 	69868BC61460F37E004C5D9B /* gpg-error.h */ = {
 		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {565, 8723}}";
@@ -3748,133 +2210,15 @@
 		continueAfterActions = 0;
 		countType = 0;
 		delayBeforeContinue = 0;
-		fileReference = 69868AD71460E372004C5D9B /* packet.c */;
+		fileReference = 69269F2314620D0F00F69705 /* packet.c */;
 		hitCount = 0;
 		ignoreCount = 0;
 		lineNumber = 9;
 		location = duckdog;
-		modificationTime = 342057198.549462;
+		modificationTime = 342642496.060493;
 		originalNumberOfMultipleMatches = 1;
 		state = 2;
 	};
-	69868D8314618DD7004C5D9B /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = AA747D9E0F9514B9006C5449 /* simplepgp_Prefix.pch */;
-		name = "simplepgp_Prefix.pch: 1";
-		rLen = 0;
-		rLoc = 0;
-		rType = 0;
-		vrLen = 188;
-		vrLoc = 0;
-	};
-	69868DE514619580004C5D9B /* packet_test.h */ = {
-		isa = PBXFileReference;
-		fileEncoding = 4;
-		lastKnownFileType = sourcecode.c.h;
-		name = packet_test.h;
-		path = "/Users/trevor/Documents/Cocoa Projects/libsimplepgp/packet_test.h";
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1030, 722}}";
-			sepNavSelRange = "{260, 0}";
-			sepNavVisRange = "{0, 291}";
-			sepNavWindowFrame = "{{15, 127}, {1136, 746}}";
-		};
-	};
-	69868DE614619580004C5D9B /* packet_test.c */ = {
-		isa = PBXFileReference;
-		fileEncoding = 4;
-		lastKnownFileType = sourcecode.c.c;
-		name = packet_test.c;
-		path = "/Users/trevor/Documents/Cocoa Projects/libsimplepgp/packet_test.c";
-		sourceTree = "<absolute>";
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {558, 780}}";
-			sepNavSelRange = "{1064, 0}";
-			sepNavVisRange = "{928, 204}";
-		};
-	};
-	69868E791461A1AF004C5D9B /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 67";
-		rLen = 0;
-		rLoc = 1423;
-		rType = 0;
-		vrLen = 1091;
-		vrLoc = 591;
-	};
-	69868E7B1461A1AF004C5D9B /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868DE514619580004C5D9B /* packet_test.h */;
-		name = "packet_test.h: 17";
-		rLen = 0;
-		rLoc = 260;
-		rType = 0;
-		vrLen = 291;
-		vrLoc = 0;
-	};
-	69868EA21461A401004C5D9B /* PBXBookmark */ = {
-		isa = PBXBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-	};
-	69868EE41461AA6F004C5D9B /* packet.c:207 */ = {
-		isa = PBXFileBreakpoint;
-		actions = (
-		);
-		breakpointStyle = 0;
-		continueAfterActions = 0;
-		countType = 0;
-		delayBeforeContinue = 0;
-		fileReference = 69868AD71460E372004C5D9B /* packet.c */;
-		functionName = "parse_header()";
-		hitCount = 0;
-		ignoreCount = 0;
-		lineNumber = 207;
-		modificationTime = 342057198.550455;
-		originalNumberOfMultipleMatches = 0;
-		state = 2;
-	};
-	69868EF31461AB26004C5D9B /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868DE614619580004C5D9B /* packet_test.c */;
-		name = "packet_test.c: 54";
-		rLen = 0;
-		rLoc = 1285;
-		rType = 0;
-		vrLen = 1353;
-		vrLoc = 0;
-	};
-	69868EF41461AB26004C5D9B /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 190";
-		rLen = 0;
-		rLoc = 7179;
-		rType = 0;
-		vrLen = 2103;
-		vrLoc = 3136;
-	};
-	69868F561461BBC2004C5D9B /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD71460E372004C5D9B /* packet.c */;
-		name = "packet.c: 195";
-		rLen = 0;
-		rLoc = 7384;
-		rType = 0;
-		vrLen = 1021;
-		vrLoc = 1093;
-	};
-	69868F571461BBC2004C5D9B /* PBXTextBookmark */ = {
-		isa = PBXTextBookmark;
-		fRef = 69868AD61460E372004C5D9B /* packet.h */;
-		name = "packet.h: 67";
-		rLen = 0;
-		rLoc = 1423;
-		rType = 0;
-		vrLen = 961;
-		vrLoc = 721;
-	};
 	AA747D9E0F9514B9006C5449 /* simplepgp_Prefix.pch */ = {
 		uiCtxt = {
 			sepNavIntBoundsRect = "{{0, 0}, {1030, 722}}";

diff --git a/src/keychain.c b/src/keychain.c
line changes: +99/-0
index 0000000..c48d044
--- /dev/null
+++ b/src/keychain.c
@@ -0,0 +1,99 @@
+/*
+ *  keychain.c
+ *  simplepgp
+ *
+ *  Created by Trevor Bentley on 11/8/11.
+ *  Copyright 2011 Trevor Bentley. All rights reserved.
+ *
+ */
+
+#include "keychain.h"
+
+#define SPGP_KEYCHAIN_DEFAULT_SIZE 5
+
+static pthread_mutex_t keychain_mtx;
+static spgp_packet_t **keychain;
+static uint32_t kc_count;
+static uint32_t kc_used;
+
+static uint32_t iter_idx;
+
+uint8_t spgp_keychain_init(void) {
+	if (pthread_mutex_init(&keychain_mtx, NULL)) return -1;
+
+	keychain = malloc(sizeof(spgp_packet_t*) * SPGP_KEYCHAIN_DEFAULT_SIZE);
+  if (NULL == keychain) return -1;
+  kc_count = SPGP_KEYCHAIN_DEFAULT_SIZE;
+	kc_used = 0;
+  
+	return 0;
+}
+
+uint8_t spgp_keychain_free(void) {
+	kc_count = 0;
+  kc_used = 0;
+  free(keychain);
+  keychain = NULL;
+	pthread_mutex_destroy(&keychain_mtx);
+	return 0;
+}
+
+uint8_t spgp_keychain_is_valid(void) {
+	if (keychain) return 1;
+  return 0;
+}
+
+uint8_t spgp_keychain_add_packet(spgp_packet_t *pkt) {
+	if (NULL == pkt) return -1;
+  
+  pthread_mutex_lock(&keychain_mtx);
+  
+  if (kc_used == kc_count) {
+  	// Need to allocate more space
+    return -1; // for now, unsupported
+  }
+  
+  keychain[kc_used] = pkt;
+  kc_used++;
+
+	// Potential feature:
+  // If we wanted to be really fuckin' fancy, we could use 'secure memory'
+  // to store secret keys.  Use mlock() to get a page that will never be
+  // swapped to disk, and clear it when we exit.
+
+	LOG_PRINT("Added packet to keychain.");
+
+  pthread_mutex_unlock(&keychain_mtx);
+  
+	return 0;
+}
+
+uint8_t spgp_keychain_del_packet(spgp_packet_t *pkt) {
+  pthread_mutex_lock(&keychain_mtx);
+  pthread_mutex_unlock(&keychain_mtx);
+
+	return -1;
+}
+
+uint8_t spgp_keychain_iter_start(void) {
+  pthread_mutex_lock(&keychain_mtx);
+  iter_idx = 0;
+  return 0;
+}
+uint8_t spgp_keychain_iter_end(void) {
+  pthread_mutex_unlock(&keychain_mtx);
+  return 0;
+}
+spgp_packet_t *spgp_keychain_iter_next(void) {
+	if (iter_idx < kc_used)
+  	return keychain[iter_idx++];
+  return NULL;
+}
+
+spgp_packet_t *spgp_keychain_secret_key_with_id(uint8_t *keyid) {
+  pthread_mutex_lock(&keychain_mtx);
+
+  pthread_mutex_unlock(&keychain_mtx);
+
+	return NULL;
+}

diff --git a/src/keychain.h b/src/keychain.h
line changes: +31/-0
index 0000000..e8bc3fd
--- /dev/null
+++ b/src/keychain.h
@@ -0,0 +1,31 @@
+/*
+ *  keychain.h
+ *  simplepgp
+ *
+ *  Created by Trevor Bentley on 11/8/11.
+ *  Copyright 2011 Trevor Bentley. All rights reserved.
+ *
+ */
+
+#ifndef _KEYCHAIN_H
+
+#include <stdint.h>
+#include <pthread.h>
+#include "packet.h"
+
+
+uint8_t spgp_keychain_init(void);
+uint8_t spgp_keychain_free(void);
+uint8_t spgp_keychain_is_valid(void);
+
+uint8_t spgp_keychain_add_packet(spgp_packet_t *pkt);
+uint8_t spgp_keychain_del_packet(spgp_packet_t *pkt);
+
+uint8_t spgp_keychain_iter_start(void);
+uint8_t spgp_keychain_iter_end(void);
+spgp_packet_t *spgp_keychain_iter_next(void);
+
+spgp_packet_t *spgp_keychain_secret_key_with_id(uint8_t *keyid);
+
+#define _KEYCHAIN_H
+#endif

diff --git a/src/packet.c b/src/packet.c
line changes: +786/-103
index 5995b20..8dd9316
--- a/src/packet.c
+++ b/src/packet.c
@@ -13,6 +13,8 @@
 #include "gcrypt.h"
 #include <wchar.h>
 #include <locale.h>
+#include "keychain.h"
+#include <string.h>
 
 
 /**********************************************************************
@@ -35,12 +37,6 @@
     } \
   } while(0)
 
-#define LOG_PRINT(fmt, ...) do {\
-	if (debug_log_enabled) {\
-  	fprintf(stderr, "SPGP [%s():%d]: " fmt, \
-    	__FUNCTION__, __LINE__, ## __VA_ARGS__);\
-  } } while(0)
-
 
 /**********************************************************************
 **
@@ -48,14 +44,13 @@
 **
 ***********************************************************************/
 
-
 static uint32_t _spgp_err;
 static jmp_buf exception;
 
 #ifdef DEBUG_LOG_ENABLED
-static uint8_t debug_log_enabled = 1;
+uint8_t debug_log_enabled = 1;
 #else
-static uint8_t debug_log_enabled = 0;
+uint8_t debug_log_enabled = 0;
 #endif
 
 
@@ -68,14 +63,44 @@ static uint8_t debug_log_enabled = 0;
 static uint8_t spgp_parse_header(uint8_t *msg, uint32_t *idx, 
 														uint32_t length, spgp_packet_t *pkt);
 
+static uint32_t spgp_new_header_length(uint8_t *header, 
+																			uint8_t *header_len,
+                                      uint8_t *is_partial);
+
 static uint8_t spgp_parse_user_id(uint8_t *msg, uint32_t *idx, 
           												uint32_t length, spgp_packet_t *pkt);
                                       
 static uint8_t spgp_generate_fingerprint(spgp_packet_t *pkt);
-                                                                                      
+                               
+static uint8_t spgp_verify_decrypted_data(uint8_t *data, uint32_t length);
+
+static uint8_t spgp_generate_cipher_key(spgp_packet_t *pkt,
+																			  uint8_t *passphrase, uint32_t length);
+
+static uint8_t spgp_parse_public_key(uint8_t *msg, uint32_t *idx, 
+          													 uint32_t length, spgp_packet_t *pkt);
+                                     
 static uint8_t spgp_parse_secret_key(uint8_t *msg, uint32_t *idx, 
           													 uint32_t length, spgp_packet_t *pkt);
-                          
+                
+static spgp_packet_t *spgp_next_secret_key_packet(spgp_packet_t *msg);
+                
+static uint8_t spgp_decrypt_secret_key(spgp_packet_t *pkt, 
+                                			 uint8_t *passphrase, uint32_t length);
+                              
+static uint8_t spgp_parse_encrypted_packet(uint8_t *msg, 
+                                           uint32_t *idx, 
+          														 		 uint32_t length, 
+                                           spgp_packet_t *pkt);
+                                 
+static spgp_packet_t *spgp_find_session_packet(spgp_packet_t *chain);
+         
+static uint8_t spgp_parse_session_packet(uint8_t *msg, uint32_t *idx, 
+          													 		 uint32_t length, spgp_packet_t *pkt);
+                               
+static spgp_packet_t *spgp_secret_key_matching_id(spgp_packet_t *chain,
+																									uint8_t *keyid);
+                                         
 static uint32_t spgp_mpi_length(uint8_t *mpi);
                                                 
 static spgp_mpi_t *spgp_read_mpi(uint8_t *msg, uint32_t *idx,
@@ -84,7 +109,7 @@ static spgp_mpi_t *spgp_read_mpi(uint8_t *msg, uint32_t *idx,
 static uint8_t spgp_read_all_public_mpis(uint8_t *msg, 
                                          uint32_t *idx,
 														 						 uint32_t length, 
-                                         spgp_secret_pkt_t *secret);
+                                         spgp_public_pkt_t *pub);
                                          
 static uint8_t spgp_read_all_secret_mpis(uint8_t *msg, 
                                          uint32_t *idx,
@@ -101,6 +126,8 @@ static uint8_t spgp_read_iv(uint8_t *msg,
                             uint32_t length, 
                             spgp_secret_pkt_t *secret);
                             
+static uint8_t spgp_pgp_to_gcrypt_symmetric_algo(uint8_t pgpalgo);
+                            
 static uint8_t spgp_iv_length_for_symmetric_algo(uint8_t algo);
 
 static uint8_t spgp_salt_length_for_hash_algo(uint8_t algo);
@@ -115,12 +142,6 @@ static uint8_t spgp_salt_length_for_hash_algo(uint8_t algo);
 ***********************************************************************/
 #pragma mark External Function Definitions
 
-uint8_t spgp_debug_log_enabled(void) {
-	return debug_log_enabled;
-}
-void spgp_debug_log_set(uint8_t enable) {
-	debug_log_enabled = enable;
-}
 
 spgp_packet_t *spgp_decode_message(uint8_t *message, uint32_t length) {
 	spgp_packet_t *head = NULL;
@@ -152,6 +173,16 @@ spgp_packet_t *spgp_decode_message(uint8_t *message, uint32_t length) {
   
   // Loop to decode every packet in message
   while (idx < length-1) {
+  
+  	// Skip NULL bytes.  This is because 'partial packets' are a thing.  We
+    // should theoretically always be on a valid packet boundary when we get
+    // to this point.  However, if we are in the middle of processing a 
+    // 'partial packet' we might be looking at a sub-header here instead of
+    // the start of a new packet.  In the data packet decryption process, we
+    // replace the sub-header with zeroes so we can detect it here and skip
+    // over it.
+		while (message[idx] == 0) idx++;
+
   	// Every packet starts with a header
     spgp_parse_header(message, &idx, length, pkt);
     if (!pkt->header) RAISE(FORMAT_UNSUPPORTED);
@@ -161,12 +192,22 @@ spgp_packet_t *spgp_decode_message(uint8_t *message, uint32_t length) {
     	case PKT_TYPE_USER_ID:
       	spgp_parse_user_id(message, &idx, length, pkt);
         break;
+      case PKT_TYPE_PUBLIC_KEY:
+      case PKT_TYPE_PUBLIC_SUBKEY:
+      	spgp_parse_public_key(message, &idx, length, pkt);
+        break;
       case PKT_TYPE_SECRET_KEY:
       case PKT_TYPE_SECRET_SUBKEY:
         spgp_parse_secret_key(message, &idx, length, pkt);
         break;
+      case PKT_TYPE_SESSION:
+      	spgp_parse_session_packet(message, &idx, length, pkt);
+      	break;
+      case PKT_TYPE_SYM_ENC_INT_DATA:
+      	spgp_parse_encrypted_packet(message, &idx, length, pkt);
+      	break;
       default:
-        LOG_PRINT("WARNING: Unsupported packet type %d\n", pkt->header->type);
+        LOG_PRINT("WARNING: Unsupported packet type %u\n", pkt->header->type);
         // Increment to next packet.  We add the contentLength, but subtract
         // one parse_header() left us on the first byte of content.
         if (idx + pkt->header->contentLength - 1 < length)
@@ -181,6 +222,7 @@ spgp_packet_t *spgp_decode_message(uint8_t *message, uint32_t length) {
     pkt->next = malloc(sizeof(*pkt->next));
     if (NULL == pkt->next) RAISE(OUT_OF_MEMORY);
     memset(pkt->next, 0, sizeof(*pkt->next));
+    pkt->next->prev = pkt; // make backwards pointer
     pkt = pkt->next;
     
     // Packet parser increments to it's own last byte.  Need one more to get
@@ -193,6 +235,49 @@ spgp_packet_t *spgp_decode_message(uint8_t *message, uint32_t length) {
   return head;
 }
 
+uint8_t spgp_decrypt_all_secret_keys(spgp_packet_t *msg, 
+                                		 uint8_t *passphrase, uint32_t length) {
+	spgp_packet_t *cur = msg;
+  uint8_t err = 0;
+  
+	if (setjmp(exception)) {
+    	LOG_PRINT("Exception (0x%x)\n",_spgp_err);
+  	  goto end;
+  }
+
+	if (NULL == msg || NULL == passphrase || length == 0) RAISE(INVALID_ARGS);
+
+	while ((cur = spgp_next_secret_key_packet(cur)) != NULL) {
+  	LOG_PRINT("Decrypting secret key\n");
+  	spgp_decrypt_secret_key(cur, passphrase, length);
+  	cur = cur->next;
+  }
+  
+  end:
+  return err;
+}
+
+
+uint8_t spgp_load_keychain_with_keys(spgp_packet_t *msg) {
+	spgp_packet_t *cur = msg;
+  uint8_t err = 0;
+  
+	if (setjmp(exception)) {
+    	LOG_PRINT("Exception (0x%x)\n",_spgp_err);
+  	  goto end;
+  }
+
+	if (NULL == msg) RAISE(INVALID_ARGS);
+	while ((cur = spgp_next_secret_key_packet(cur)) != NULL) {
+  	LOG_PRINT("Adding key to keychain.\n");
+  	cur = cur->next;
+  }
+
+	end:
+  return err;
+}
+
+
 void spgp_free_packet(spgp_packet_t **pkt) {
 	spgp_mpi_t *curMpi, *nextMpi;
   
@@ -201,7 +286,7 @@ void spgp_free_packet(spgp_packet_t **pkt) {
   if (*pkt == NULL)
   	return;
   
-  LOG_PRINT("Freeing packet: %p\n", pkt);
+  //LOG_PRINT("Freeing packet: %p\n", pkt);
   
   // Recursively call on the next packet before freeing parent.
   if ((*pkt)->next) spgp_free_packet(&((*pkt)->next));
@@ -214,6 +299,7 @@ void spgp_free_packet(spgp_packet_t **pkt) {
     	curMpi = (*pkt)->c.secret->pub.mpiHead;
       while (curMpi->next) {
       	nextMpi = curMpi->next;
+        if (curMpi->data) free(curMpi->data);
         free(curMpi);
         curMpi = nextMpi;
       }
@@ -278,19 +364,12 @@ const char *spgp_err_str(uint32_t err) {
   }
 }
 
-void tsb_test(void) {
-  gcry_cipher_hd_t cipher_hd;
-  gcry_error_t err;
-  
-	printf("This is a test library.\n");
-  err = gcry_cipher_open (&cipher_hd, 
-			  2,
-			  GCRY_CIPHER_MODE_CFB,
-			  (GCRY_CIPHER_SECURE | GCRY_CIPHER_ENABLE_SYNC));
-  printf("open result: %d\n", err);
-        
+uint8_t spgp_debug_log_enabled(void) {
+	return debug_log_enabled;
+}
+void spgp_debug_log_set(uint8_t enable) {
+	debug_log_enabled = enable;
 }
-
 
 
 
@@ -360,25 +439,12 @@ static uint8_t spgp_parse_header(uint8_t *msg, uint32_t *idx,
   // In new packets, the length is encoded over a variable number of bytes, 
   // with the range of the first byte determining total number of bytes.
   else { // This is new style packet.
-  	uint8_t len[4];
-    len[0] = msg[*idx]; SAFE_IDX_INCREMENT(*idx, length);
-    if (len[0] <= 191) { // 1-byte length
-    	pkt->header->headerLength = 2;
-      pkt->header->contentLength = len[0];
-    }
-    else if (len[0] > 191 && len[0] <= 223) { // 2-byte length
-    	pkt->header->headerLength = 3;
-      len[1] = msg[*idx]; SAFE_IDX_INCREMENT(*idx, length);
-      pkt->header->contentLength = 
-      	((len[0]-192)<<8) | (len[1] + 192);
-    }
-    else { // 4-byte length
-    	pkt->header->headerLength = 5;
-      len[2] = msg[*idx]; SAFE_IDX_INCREMENT(*idx, length);
-      len[3] = msg[*idx]; SAFE_IDX_INCREMENT(*idx, length);
-    	pkt->header->contentLength = 
-      	(len[0]<<24) | (len[1]<<16) | (len[2]<<8) | len[3];
-    }
+		pkt->header->contentLength = 
+  		spgp_new_header_length(msg+*idx, 
+      											 &(pkt->header->headerLength),
+                             &(pkt->header->isPartial));
+    *idx += pkt->header->headerLength - 2;
+    SAFE_IDX_INCREMENT(*idx, length);
   }
   
   LOG_PRINT("LENGTH: %u\n", pkt->header->contentLength);
@@ -386,6 +452,45 @@ static uint8_t spgp_parse_header(uint8_t *msg, uint32_t *idx,
 	return 0;
 }
 
+static uint32_t spgp_new_header_length(uint8_t *header, 
+																			uint8_t *header_len,
+                                      uint8_t *is_partial) {
+  uint32_t content;
+  uint8_t len[4];
+  uint8_t i = 0;
+  
+  if (NULL == header || NULL == header_len) RAISE(INVALID_ARGS);
+  
+  *is_partial = 0; // default to known length
+  
+  len[0] = header[i];
+  if (len[0] <= 191) { // 1-byte length
+    *header_len = 2;
+    content = len[0];
+  }
+  else if (len[0] > 191 && len[0] <= 223) { // 2-byte length
+    *header_len = 3;
+    len[1] = header[i+1]; 
+    content = ((len[0]-192)<<8) | (len[1] + 192);
+  }
+  else if (len[0] == 255) { // 5-byte length
+    *header_len = 5;
+    len[0] = header[i+1];
+    len[1] = header[i+2];
+    len[2] = header[i+3];
+    len[3] = header[i+4];
+    content = (len[0]<<24) | (len[1]<<16) | (len[2]<<8) | len[3];
+  }
+  else {
+    // indeterminate length
+    LOG_PRINT("Partial length header!\n");
+    *header_len = 2;
+    *is_partial = 1;
+    content = 1 << (len[0] & 0x1F);
+  }
+	return content;
+}
+
 static uint8_t spgp_parse_user_id(uint8_t *msg, uint32_t *idx, 
           												uint32_t length, spgp_packet_t *pkt) {
 	spgp_userid_pkt_t *userid;
@@ -454,7 +559,7 @@ static uint8_t spgp_generate_fingerprint(spgp_packet_t *pkt) {
   }
       
   // Give data to hash to gcrypt
-	if (gcry_md_open (&md, GCRY_MD_SHA1, 0) > 0) RAISE(GCRY_ERROR);
+	if (gcry_md_open (&md, GCRY_MD_SHA1, 0) != 0) RAISE(GCRY_ERROR);
   gcry_md_putc(md, 0x99 );
   gcry_md_putc(md, packetSize >> 8);
   gcry_md_putc(md, packetSize);
@@ -494,24 +599,184 @@ static uint8_t spgp_generate_fingerprint(spgp_packet_t *pkt) {
   return 0;
 }
 
-static uint8_t spgp_parse_secret_key(uint8_t *msg, uint32_t *idx, 
+static uint8_t spgp_verify_decrypted_data(uint8_t *data, uint32_t length) {
+  gcry_md_hd_t md;
+  uint32_t hashlen = length - 20; // SHA1 hash is 20 bytes
+  uint8_t *hashResult;
+  int result;
+  
+  if (gcry_md_open (&md, GCRY_MD_SHA1, 0) != 0) RAISE(GCRY_ERROR);
+  gcry_md_write(md, data, hashlen);
+  gcry_md_final(md);
+  hashResult = gcry_md_read(md, 0);
+  if (NULL == hashResult) RAISE(GCRY_ERROR);
+	result = memcmp(data+hashlen, hashResult, 20);
+	gcry_md_close(md);
+	return result;
+}
+
+/**
+ * Generate cipher key to decrypt secret key packet
+ *
+ * The secret portion of a secret key packet can be encrypted with a 
+ * symmetric cipher.  This function generates the 'key' that is used as
+ * the input to the symmetric cipher.  This key is generated by hashing
+ * a randomly generated salt, included in the packet, and the user's
+ * passphrase (which must be provided).
+ *
+ * OpenPGP's standard allows multiple ways of generating the key by varying
+ * the hash algorithm.
+ *
+ * @param pkt A secret key or secret subkey packet
+ * @param passphrase User's passphrase to decrypt with
+ * @param length Length (in bytes) of user's passphrase
+ *
+ * @return 0 on success.  Raises exception on error.
+ *
+ */
+static uint8_t spgp_generate_cipher_key(spgp_packet_t *pkt,
+																			  uint8_t *passphrase, uint32_t length) {
+	spgp_secret_pkt_t *secret;
+  spgp_public_pkt_t *pub;
+  gcry_md_hd_t md;
+  uint32_t i;
+  uint32_t keyBytesRemaining;// Bytes left to generate for key
+  uint32_t hashLen;          // How long the hash is (algo-dependent)
+  uint32_t hashIters;        // How many hash results to combine into key
+  uint32_t hashBytes;        // Total number of bytes to hash each time
+  uint32_t bufLen;           // Length of salt+passphrase
+  uint32_t curHashCount;     // How many times we have performed full hash
+  uint32_t hashCopies;       // How many integer copies of hashBuf per round
+  uint32_t hashExtraBytes;   // How many extra bytes to hash for last round
+  uint8_t *hashBuf;          // Store concatenated salt+passphrase
+  uint8_t *hashResult;       // Store result of actual hash algorithm
+  
+  if (NULL == pkt || NULL == passphrase) RAISE(INVALID_ARGS);
+  
+	secret = pkt->c.secret;
+  pub = pkt->c.pub;
+
+	if (pkt->header->type != PKT_TYPE_SECRET_KEY &&
+  		pkt->header->type != PKT_TYPE_SECRET_SUBKEY)
+      RAISE(INVALID_ARGS);
+  
+  // Determine how many bytes we need to produce for this cipher
+  // Only supporting 3DES for this
+  switch(secret->s2kEncryption) {
+  case SYM_ALGO_3DES: secret->keyLength = 24; break;
+  case SYM_ALGO_CAST5: secret->keyLength = 16; break;
+  default: RAISE(FORMAT_UNSUPPORTED);
+  }
+   
+  
+  // Initialize hash algorithm, determine how many bytes produces per round
+	switch (secret->s2kHashAlgo) {  
+  	case HASH_ALGO_SHA1:
+  		if (gcry_md_open (&md, GCRY_MD_SHA1, 0) != 0) RAISE(GCRY_ERROR);
+      hashLen = 20;
+      break;
+		default:
+    	RAISE(FORMAT_UNSUPPORTED);
+      break;
+  }
+  
+  // Determine how many times we have to hash to generate a large enough key
+  // Ex: 3DES needs 24 bytes, SHA1 makes 20 bytes, so need to SHA1 hashes.
+  hashIters = (secret->keyLength/hashLen) + (secret->keyLength%hashLen>0)?1:0;
+  
+  // What hashing mode to use.
+  // Currently only supporting salted+iterated
+  switch (secret->s2kSpecifier) {
+  	case S2K_TYPE_ITERATED:
+    	break;
+    default:
+    	RAISE(FORMAT_UNSUPPORTED);
+      break;
+  }
+   
+  // Allocate space for the key
+  secret->key = malloc(secret->keyLength);
+  if (NULL == secret->key) RAISE(OUT_OF_MEMORY);
+  
+  // Allocate a buffer to store the salt and passphrase combined
+  // Since this buffer is local only, no exceptions can be raised after
+  // this point or memory will be leaked.
+  bufLen = secret->s2kSaltLength + length;
+  hashBuf = malloc(bufLen);
+  if (NULL == hashBuf) RAISE(OUT_OF_MEMORY);
+  
+  // Concatenate salt and passphrase into hashBuf
+  memcpy(hashBuf, secret->s2kSalt, secret->s2kSaltLength);
+  memcpy(hashBuf + secret->s2kSaltLength, passphrase, length);
+  
+  // Magic formula from RFC 4880.  This is number of bytes to hash over.
+  hashBytes = (16 + (secret->s2kCount & 15)) << ((secret->s2kCount >> 4) + 6);
+  
+  // Figure out how many times to iterate over hashBuf to get hashBytes,
+  // and how many extra bytes are needed at the end if not an even multiple.
+  hashCopies = hashBytes / (bufLen);
+  hashExtraBytes = hashBytes % (bufLen);
+  
+  keyBytesRemaining = secret->keyLength;
+  
+  // Loop until we have enough hash bytes to make the key
+  curHashCount = 0;
+  while (curHashCount <= hashIters && keyBytesRemaining) {
+    for (i = 0; i < curHashCount; i++) {
+    	// pad front with 1 NUL byte per round (none on first round)
+      gcry_md_putc(md, '\0'); 
+    }
+    // Copy the salt+passphrase combo into hash buffer as many times as fits
+    for (i = 0; i < hashCopies; i++) {
+    	gcry_md_write(md, hashBuf, bufLen);
+    }
+    // Copy any leftover bytes into hash buffer to reach |hashBytes|
+    if (hashExtraBytes) {
+    	gcry_md_write(md, hashBuf, hashExtraBytes);
+    }
+    // Perform the hash and append to the key
+	  gcry_md_final(md);
+  	hashResult = gcry_md_read(md, 0);
+    
+    if (keyBytesRemaining < hashLen) {
+      memcpy(secret->key+(curHashCount*hashLen), 
+             hashResult, 
+             keyBytesRemaining);   
+      keyBytesRemaining = 0;
+    }
+    else {
+      memcpy(secret->key+(curHashCount*hashLen), 
+             hashResult, 
+             hashLen);
+      keyBytesRemaining -= hashLen;
+    }
+    // Reset hash algorithm for next round
+    gcry_md_reset(md);
+    curHashCount++;
+  }
+
+	gcry_md_close(md);
+	free(hashBuf);
+	return 0;
+}
+
+static uint8_t spgp_parse_public_key(uint8_t *msg, uint32_t *idx, 
           													 uint32_t length, spgp_packet_t *pkt) {
-  spgp_secret_pkt_t *secret;
   spgp_public_pkt_t *pub;
-  uint32_t startIdx = *idx;
   
-  LOG_PRINT("Parsing secret key.\n");
+  LOG_PRINT("Parsing public key.\n");
 
 	// Make sure we have enough bytes remaining for parsing
   if (length - *idx < pkt->header->contentLength) RAISE(BUFFER_OVERFLOW);
 
-	// Allocate secret key in packet  
-  pkt->c.secret = malloc(sizeof(*(pkt->c.secret)));
-  if (NULL == pkt->c.secret) RAISE(OUT_OF_MEMORY);
-  memset(pkt->c.secret, 0, sizeof(*(pkt->c.secret)));
+	// Allocate public key if it doesn't already exist.  It might exist if
+  // this packet is a secret key.
+  if (!(pkt->c.pub)) {
+    pkt->c.pub = malloc(sizeof(*(pkt->c.pub)));
+    if (NULL == pkt->c.pub) RAISE(OUT_OF_MEMORY);
+    memset(pkt->c.pub, 0, sizeof(*(pkt->c.pub)));
+	}
   
-  // Convenient pointers to secret key, and public portion
-	secret = pkt->c.secret;
   pub = pkt->c.pub;
   
   pub->version = msg[*idx]; 
@@ -533,9 +798,36 @@ static uint8_t spgp_parse_secret_key(uint8_t *msg, uint32_t *idx,
   
   // Read variable number of MPIs (depends on asymmetric algorithm), each
   // of which are variable size.
-	spgp_read_all_public_mpis(msg, idx, length, secret);
+	spgp_read_all_public_mpis(msg, idx, length, pkt->c.pub);
   LOG_PRINT("Read %u MPIs\n", pub->mpiCount);
   
+  return 0;
+}
+
+static uint8_t spgp_parse_secret_key(uint8_t *msg, uint32_t *idx, 
+          													 uint32_t length, spgp_packet_t *pkt) {
+  spgp_secret_pkt_t *secret;
+  spgp_public_pkt_t *pub;
+  uint32_t startIdx = *idx;
+  
+  LOG_PRINT("Parsing secret key.\n");
+
+	// Make sure we have enough bytes remaining for parsing
+  if (length - *idx < pkt->header->contentLength) RAISE(BUFFER_OVERFLOW);
+
+	// Allocate secret key in packet  
+  pkt->c.secret = malloc(sizeof(*(pkt->c.secret)));
+  if (NULL == pkt->c.secret) RAISE(OUT_OF_MEMORY);
+  memset(pkt->c.secret, 0, sizeof(*(pkt->c.secret)));
+
+	secret = pkt->c.secret;
+  pub = pkt->c.pub;
+
+	// Parse the public key section that starts it
+	spgp_parse_public_key(msg, idx, length, pkt);
+  // idx ends on last byte of public key.  One more to start secret key.
+  SAFE_IDX_INCREMENT(*idx, length);
+  
   // S2K Type byte tells how to (or if to) decrypt secret exponent
   secret->s2kType = msg[*idx];
   SAFE_IDX_INCREMENT(*idx, length);
@@ -600,24 +892,411 @@ static uint8_t spgp_parse_secret_key(uint8_t *msg, uint32_t *idx,
   	spgp_read_iv(msg, idx, length, secret);
     LOG_PRINT("IV length: %u\n", secret->ivLength);
   
+  	// Figure out how much is left, and make sure it's available
   	uint32_t packetOffset = *idx - startIdx;
   	uint32_t remaining = pkt->header->contentLength - packetOffset;
 		if (packetOffset >= pkt->header->contentLength) RAISE(BUFFER_OVERFLOW);
+    
+    // Allocate buffer and copy data
   	secret->encryptedData = malloc(remaining);
     if (NULL == secret->encryptedData) RAISE(OUT_OF_MEMORY);
     memcpy(secret->encryptedData, msg+*idx, remaining);
+    secret->encryptedDataLength = remaining;
+    
     *idx += remaining-1;
     LOG_PRINT("Stored %u encrypted bytes.\n", remaining);
     // This is the end of the data, so we do NOT do a final idx increment
   }
   
   // Create and store fingerprint for this packet
-  if (pkt->header->type == PKT_TYPE_SECRET_KEY)
-	  spgp_generate_fingerprint(pkt);
+  spgp_generate_fingerprint(pkt);
     
 	return 0;
 }
 
+static spgp_packet_t *spgp_next_secret_key_packet(spgp_packet_t *msg) {
+	spgp_packet_t *cur = msg;
+	while (cur) {
+  	if (cur->header->type == PKT_TYPE_SECRET_KEY ||
+    		cur->header->type == PKT_TYPE_SECRET_SUBKEY)
+        return cur;
+  	cur = cur->next;
+  }
+  return NULL;
+}
+
+static uint8_t spgp_decrypt_secret_key(spgp_packet_t *pkt, 
+                                			 uint8_t *passphrase, uint32_t length) {
+  gcry_cipher_hd_t hd;
+	spgp_secret_pkt_t *secret;
+  spgp_public_pkt_t *pub;
+  spgp_mpi_t *curMpi;
+  uint32_t idx;
+  uint32_t secretMpiCount;
+  uint8_t *secdata;
+  uint8_t i;
+  uint8_t err = 0;
+
+	if (NULL == pkt || NULL == passphrase || length == 0) RAISE(INVALID_ARGS);
+
+	secret = pkt->c.secret;
+  pub = pkt->c.pub;
+  
+	if (pkt->header->type != PKT_TYPE_SECRET_KEY &&
+  		pkt->header->type != PKT_TYPE_SECRET_SUBKEY)
+      RAISE(INVALID_ARGS);
+
+  if (secret->isDecrypted) return err; // already decrypted!
+      
+  spgp_generate_cipher_key(pkt, passphrase, length);
+
+  switch (secret->s2kEncryption) {
+  	case SYM_ALGO_3DES:
+    case SYM_ALGO_CAST5:
+		  if (gcry_cipher_open(&hd,
+      										 spgp_pgp_to_gcrypt_symmetric_algo(secret->s2kEncryption), 
+                           GCRY_CIPHER_MODE_CFB, 
+    	    	               GCRY_CIPHER_SECURE | GCRY_CIPHER_ENABLE_SYNC) != 0)
+      	RAISE(GCRY_ERROR);
+      break;
+    default:
+    	RAISE(FORMAT_UNSUPPORTED);
+	}
+
+	if (NULL == secret->key || NULL == secret->iv) RAISE(INCOMPLETE_PACKET);
+
+	if (gcry_cipher_setkey(hd, secret->key, secret->keyLength) != 0)
+  	RAISE(GCRY_ERROR);
+	if (gcry_cipher_setiv(hd, secret->iv, secret->ivLength) != 0)
+  	RAISE(GCRY_ERROR);
+    
+  // Allocate secret data memory.  Must free it before raising any exceptions!
+  secdata = malloc(secret->encryptedDataLength);
+  if (NULL == secdata) RAISE(OUT_OF_MEMORY);
+  if (gcry_cipher_decrypt(hd, 
+  												secdata, 
+  												secret->encryptedDataLength, 
+      		                secret->encryptedData, 
+                          secret->encryptedDataLength) != 0) {
+    free(secdata);
+  	RAISE(GCRY_ERROR);
+  }
+  
+  // Verify checksum
+  if (spgp_verify_decrypted_data(secdata, secret->encryptedDataLength) != 0)
+  	RAISE(DECRYPT_FAILED);
+  
+  // Decode and store the secret MPIs (algo-specific):
+  switch(pub->asymAlgo) {
+  	case ASYM_ALGO_DSA:
+    case ASYM_ALGO_ELGAMAL:
+    	secretMpiCount = 1;
+      break;
+    default:
+    	RAISE(FORMAT_UNSUPPORTED);
+  }
+    
+  // Get to the last valid MPI
+  if (NULL == pub->mpiHead) RAISE(INCOMPLETE_PACKET);
+  curMpi = pub->mpiHead;
+  while (curMpi->next) curMpi = curMpi->next;
+  
+  idx = 0;
+  for (i = 0; i < secretMpiCount; i++) {
+	  curMpi->next = spgp_read_mpi(secdata, &idx, secret->encryptedDataLength);
+    if (NULL == curMpi->next) RAISE(GENERIC_ERROR);
+    curMpi = curMpi->next;
+    pub->mpiCount++;
+  }
+  secret->isDecrypted = 1;
+  
+  gcry_cipher_close(hd);
+  free(secdata);
+  
+  end:
+	return err;
+}
+
+static uint8_t spgp_parse_encrypted_packet(uint8_t *msg, 
+                                           uint32_t *idx, 
+          														 		 uint32_t length, 
+                                           spgp_packet_t *pkt) {
+  spgp_packet_t *session_pkt;
+  spgp_session_pkt_t *session;
+  gcry_cipher_hd_t cipher_hd;
+	gcry_error_t err;
+  int version;
+  unsigned long blksize;
+  uint32_t encbytes;
+  uint32_t startidx;
+  uint32_t i;
+  uint8_t headerlen;
+  uint8_t is_done;
+  uint8_t is_partial;
+  
+  if (NULL == msg || NULL == idx || length == 0 || NULL == pkt)
+  	RAISE(INVALID_ARGS);
+    
+  version = msg[*idx];
+  SAFE_IDX_INCREMENT(*idx, length);
+  
+  // As of this writing, only version 1 exists
+  if (version != 1) RAISE(FORMAT_UNSUPPORTED);
+  
+  session_pkt = spgp_find_session_packet(pkt);
+  if (NULL == session_pkt) {
+  	LOG_PRINT("No session key found!\n");
+  	RAISE(DECRYPT_FAILED);
+  }
+  session = session_pkt->c.session;
+  
+  startidx = *idx;
+  is_done = 0;
+  is_partial = pkt->header->isPartial;
+  
+  // Drop 1 from contentLength to account for version
+  encbytes = pkt->header->contentLength - 1;
+  
+  // Since data packets can have partial length, we loop and decrypt
+  // here until the whole blasted thing is decrypted.
+  while (!is_done) {
+    err = gcry_cipher_open (&cipher_hd, 
+            spgp_pgp_to_gcrypt_symmetric_algo(session->symAlgo),
+            GCRY_CIPHER_MODE_CFB,
+            (GCRY_CIPHER_SECURE | GCRY_CIPHER_ENABLE_SYNC |
+            GCRY_CIPHER_ENABLE_SYNC));
+           
+    blksize = spgp_iv_length_for_symmetric_algo(session->symAlgo);
+           
+    err |= gcry_cipher_setkey(cipher_hd, session->key, session->keylen);
+    err |= gcry_cipher_setiv(cipher_hd, 0, blksize);
+    err |= gcry_cipher_decrypt(cipher_hd, 
+          	                   msg+*idx, 
+                               encbytes, 
+                               NULL, 
+                               0);
+    if (err) RAISE(GCRY_ERROR);
+    
+    *idx += encbytes - 1; // increment to last byte of data
+    
+    // Check if we're done
+    if (!(is_partial)) {
+    	is_done = 1;
+      continue;
+    }
+    
+    // We are processing a partial packet, so figure out next length
+	  SAFE_IDX_INCREMENT(*idx, length); // inc to first byte of header
+    encbytes = spgp_new_header_length(msg+*idx, 
+               						            &(headerlen),
+                          						&(is_partial));
+    // Change the header bytes to zero so the packet parser knows to skip them
+    // later.
+    for (i = 0; i < headerlen; i++) {
+    	msg[*idx + i] = 0x00;
+    }
+    // Move ahead to the next data byte
+    *idx += headerlen - 2;
+	  SAFE_IDX_INCREMENT(*idx, length); // inc to first byte of data
+  }
+
+	// Validate decryption with PGP's MDC doo-hickey.  
+  if (memcmp(msg+startidx+blksize-2, msg+startidx+blksize, 2) != 0) {
+  	LOG_PRINT("Decrypted data block fails validation!\n");
+    RAISE(DECRYPT_FAILED);
+  }
+
+  // At this point, msg has been decrypted in place and now contains
+  // a bunch of packets.  Since it was decoded in place, and since we're
+  // already in the middle of a packet decode loop, we can just teleport
+  // idx back to the beginning of the data and exit.
+  //
+  // Packet data starts blocksize+2 bytes above decrypted data.  One block
+  // of random data, and 2 extra bytes of verification.
+  //
+  // Subtract 1 because startidx is the first byte of the decrypted packet, 
+  // but the packet parser loop expects us to end on the last byte of the 
+  // previous packet.
+  *idx = startidx + blksize + 2 - 1;
+  
+	return 0;
+}
+
+static spgp_packet_t *spgp_find_session_packet(spgp_packet_t *chain) {
+	spgp_packet_t *cur;
+  
+  if (NULL == chain) RAISE(INVALID_ARGS);
+  
+  cur = chain;
+  
+  while (cur) {
+    if (cur->header->type == PKT_TYPE_SESSION &&
+        cur->c.session->key != NULL)
+        return cur;
+    cur = cur->prev;
+	}
+    
+  return NULL;
+}
+
+static uint8_t spgp_parse_session_packet(uint8_t *msg, uint32_t *idx, 
+          													 		 uint32_t length, spgp_packet_t *pkt) {
+	spgp_session_pkt_t *session;
+  spgp_packet_t *key, *chain;
+  gcry_sexp_t sexp_key, sexp_data, sexp_result;
+  gcry_mpi_t mpis[10], mpi_result;
+  spgp_mpi_t *cur;
+  uint32_t checksum, sum;
+  int i;
+  unsigned long frame_len;
+  uint8_t *frame;
+  
+  LOG_PRINT("Parsing session packet.\n");
+
+	if (NULL == msg || NULL == idx || length == 0 || NULL == pkt)
+  	RAISE(INVALID_ARGS);
+
+	// Make sure we have enough bytes remaining for parsing
+  if (length - *idx < pkt->header->contentLength) RAISE(BUFFER_OVERFLOW);
+
+	// Allocate a session packet
+	pkt->c.session = malloc(sizeof(*(pkt->c.session)));
+  if (NULL == pkt->c.session) RAISE(OUT_OF_MEMORY);
+  memset(pkt->c.session, 0, sizeof(*(pkt->c.session)));
+
+	session = pkt->c.session;	
+  
+  session->version = msg[*idx];
+  SAFE_IDX_INCREMENT(*idx, length);
+  LOG_PRINT("Version: %u\n", session->version);
+
+	memcpy(session->keyid, msg+*idx, 8);
+  *idx += 7;
+  SAFE_IDX_INCREMENT(*idx, length);
+  LOG_PRINT("Session for key ID: ");
+  for (i = 0; i < 8; i++) printf("%.2X",session->keyid[i]);
+  printf("\n");
+
+  session->algo = msg[*idx];
+  SAFE_IDX_INCREMENT(*idx, length);
+	
+  // Read first MPI.  RSA only has one
+  session->mpi1 = spgp_read_mpi(msg, idx, length);
+  // Elgamal has a second MPI
+	if (session->algo == ASYM_ALGO_ELGAMAL) {
+	  SAFE_IDX_INCREMENT(*idx, length);    
+  	session->mpi2 = spgp_read_mpi(msg, idx, length);
+  }
+  
+  // DONE READING FROM STREAM AT THIS POINT
+  // BELOW HERE -- DECRYPT SESSION KEY
+  
+  if (!spgp_keychain_is_valid()) RAISE(KEYCHAIN_ERROR);
+  spgp_keychain_iter_start();
+  while ((chain = spgp_keychain_iter_next()) != NULL) {
+  	if ((key = spgp_secret_key_matching_id(chain, session->keyid)) != NULL) {
+    	LOG_PRINT("Found a matching key in keychain.\n");
+      break;
+    }
+  }
+  spgp_keychain_iter_end();
+  
+  if (!key) return -1;
+  
+  
+  for (cur=key->c.pub->mpiHead,i = 0; cur != NULL; cur = cur->next,i++) {
+	  gcry_mpi_scan (&(mpis[i]), GCRYMPI_FMT_PGP, cur->data, cur->count+2, NULL);
+  }
+  gcry_mpi_scan (&(mpis[i++]), GCRYMPI_FMT_PGP, 
+                 session->mpi1->data, session->mpi1->count+2, NULL);
+  if (session->mpi2) {
+  	gcry_mpi_scan (&(mpis[i++]), GCRYMPI_FMT_PGP, 
+                   session->mpi2->data, session->mpi2->count+2, NULL);
+  }
+
+  
+  switch (session->algo) {
+  	case ASYM_ALGO_ELGAMAL:
+		  gcry_sexp_build(&sexp_key, NULL,
+				"(private-key(elg(p%m)(g%m)(y%m)(x%m)))",
+				mpis[0], mpis[1], mpis[2], mpis[3]);
+		  gcry_sexp_build (&sexp_data, NULL,
+			   "(enc-val(elg(a%m)(b%m)))", mpis[4], mpis[5]);
+		  gcry_pk_decrypt (&sexp_result, sexp_data, sexp_key);
+  		mpi_result = gcry_sexp_nth_mpi (sexp_result, 0, GCRYMPI_FMT_STD);
+    	break;
+    default:
+    	RAISE(FORMAT_UNSUPPORTED);
+  }
+
+  gcry_mpi_print(GCRYMPI_FMT_PGP, NULL, 0, &frame_len, mpi_result);
+  frame = malloc(frame_len);
+  if (NULL == frame) RAISE(OUT_OF_MEMORY);
+  gcry_mpi_print(GCRYMPI_FMT_PGP, frame, frame_len, NULL, mpi_result);
+
+	i = 2; // skip first two bytes, they're the length of the mpi
+  if (frame[i++] != 2) RAISE(DECRYPT_FAILED);
+
+	while (frame[i++] != 0 && i < frame_len) ; // Find the next 0 in frame
+  
+  // Algorithm is first byte after the 0
+  session->symAlgo = frame[i];
+  
+  // Key length is determined from current index.  Drop 3 bytes: 1 for
+  // algorithm, and 2 for the checksum at the end.
+  session->keylen = frame_len - i - 3;
+	i++;
+
+	// Actual session key is the remaining bytes, except for the last two
+	session->key = malloc(session->keylen);
+  if (NULL == session->key) RAISE(OUT_OF_MEMORY);
+  if (i+session->keylen >= frame_len) RAISE(DECRYPT_FAILED);
+	memcpy(session->key, frame+i, session->keylen);
+
+	// Checksum is last two bytes in buffer
+	checksum = frame[frame_len-2]<<8 | frame[frame_len-1];
+  
+  // Verify checksum
+  sum = 0;
+  for (i = 0; i < session->keylen; i++) {
+  	sum = sum + (session->key[i] & 0xFF);
+  }
+  if (sum % 65536 != checksum) {
+  	LOG_PRINT("Session key checksum failed!\n");
+  	RAISE(DECRYPT_FAILED);
+  }
+	LOG_PRINT("Decrypted session key.\n");
+  return 0;
+}
+
+/**
+ * Find a specific secret key in a chain of packets.
+ *
+ * Finds a secret key in the given chain of packets, |chain|, with a key ID
+ * matching |keyid|.  KeyID is the last 8 octets of the 64-octet key
+ * fingerprint.
+ *
+ * @param chain Chain of packets containing at least one secret key
+ * @param keyid 8-octet key ID
+ * @return Packet containing matching secret key, or NULL if not found
+ *
+ */
+static spgp_packet_t *spgp_secret_key_matching_id(spgp_packet_t *chain,
+																									uint8_t *keyid) {
+	spgp_packet_t *cur = NULL;
+  
+  if (NULL == chain || NULL == keyid) RAISE(INVALID_ARGS);
+  
+  cur = chain;
+	while ((cur = spgp_next_secret_key_packet(cur)) != NULL) {
+		if (memcmp((void*)((cur->c.pub->fingerprint)+12),keyid,8) == 0)
+    	return cur;
+  	cur = cur->next;
+  }
+  
+  return NULL;
+}
+
 static uint8_t spgp_read_salt(uint8_t *msg, 
                               uint32_t *idx,
                               uint32_t length, 
@@ -668,10 +1347,28 @@ static uint8_t spgp_read_iv(uint8_t *msg,
 	return 0;
 }
 
+static uint8_t spgp_pgp_to_gcrypt_symmetric_algo(uint8_t pgpalgo) {
+  switch (pgpalgo) {
+  case 1: return GCRY_CIPHER_IDEA;
+  case 2: return GCRY_CIPHER_3DES;
+  case 3: return GCRY_CIPHER_CAST5;
+  case 4: return GCRY_CIPHER_BLOWFISH;
+  case 7: return GCRY_CIPHER_AES128;
+  case 8: return GCRY_CIPHER_AES192;
+  case 9: return GCRY_CIPHER_AES256;
+  case 10:return GCRY_CIPHER_TWOFISH;
+  default: return 0xFF;
+  }
+}
+
 static uint8_t spgp_iv_length_for_symmetric_algo(uint8_t algo) {
-	if (algo == SYM_ALGO_3DES) return 8;
-  else RAISE(FORMAT_UNSUPPORTED); // not implemented
-  return 0;
+	size_t ivlen = 0;
+	if (gcry_cipher_algo_info(spgp_pgp_to_gcrypt_symmetric_algo(algo), 
+  													GCRYCTL_GET_BLKLEN, 
+                            NULL, 
+                            &ivlen) != 0)
+  	RAISE(FORMAT_UNSUPPORTED);
+  return ivlen;
 }
 
 static uint8_t spgp_salt_length_for_hash_algo(uint8_t algo) {
@@ -683,47 +1380,36 @@ static uint8_t spgp_salt_length_for_hash_algo(uint8_t algo) {
 static uint8_t spgp_read_all_public_mpis(uint8_t *msg, 
                                          uint32_t *idx,
 														 						 uint32_t length, 
-                                         spgp_secret_pkt_t *secret) {
+                                         spgp_public_pkt_t *pub) {
   spgp_mpi_t *curMpi, *newMpi;
-  spgp_public_pkt_t *pub = (spgp_public_pkt_t*)secret;
   uint32_t i;
+  uint8_t mpiCount;
   
-  if (NULL == msg || NULL == idx || 0 == length || NULL == secret)
+  if (NULL == msg || NULL == idx || 0 == length || NULL == pub)
   	RAISE(INVALID_ARGS);
 
+	switch (pub->asymAlgo) {
+  	case ASYM_ALGO_DSA: mpiCount = 4; break;
+    case ASYM_ALGO_ELGAMAL: mpiCount = 3; break;
+    default: RAISE(FORMAT_UNSUPPORTED);
+  }
+
   // Read all the MPIs
-	if (pub->asymAlgo == ASYM_ALGO_DSA) {
-  	// DSA public MPIs: prime p, order q, generator g, value y
-    for (i = 0; i < 4; i++) {
-      newMpi = spgp_read_mpi(msg, idx, length);
-      if (i == 0) {
-        pub->mpiHead = newMpi;
-        curMpi = pub->mpiHead;
-      }
-      else {
-        curMpi->next = newMpi;
-        curMpi = curMpi->next;
-      }
+  for (i = 0; i < mpiCount; i++) {
+  	// spgp_read_mpi() doesn't increment past the end of the MPI, so if this
+    // isn't the first pass we need to increment once more
+  	if (i) SAFE_IDX_INCREMENT(*idx, length);    
+    newMpi = spgp_read_mpi(msg, idx, length);
+    if (i == 0) {
+      pub->mpiHead = newMpi;
+      curMpi = pub->mpiHead;
     }
-    pub->mpiCount = 4;
-	}
-  else if (pub->asymAlgo == ASYM_ALGO_ELGAMAL) {
-    for (i = 0; i < 3; i++) {
-      newMpi = spgp_read_mpi(msg, idx, length);
-      if (i == 0) {
-        pub->mpiHead = newMpi;
-        curMpi = pub->mpiHead;
-      }
-      else {
-        curMpi->next = newMpi;
-        curMpi = curMpi->next;
-      }
+    else {
+      curMpi->next = newMpi;
+      curMpi = curMpi->next;
     }
-    pub->mpiCount = 3;  
-  }
-  else {
-  	RAISE(FORMAT_UNSUPPORTED);
   }
+  pub->mpiCount = mpiCount;
   
 	return pub->mpiCount;
 }
@@ -747,8 +1433,6 @@ static uint8_t spgp_read_all_secret_mpis(uint8_t *msg,
   	// DSA secte MPIs: exponent x
     curMpi->next = spgp_read_mpi(msg, idx, length);
     pub->mpiCount++;
-    *idx += length - 1;
-    // This is the end of the data, so we do NOT do a final increment. 
 	}
   else {
   	RAISE(FORMAT_UNSUPPORTED);
@@ -788,7 +1472,6 @@ static spgp_mpi_t *spgp_read_mpi(uint8_t *msg, uint32_t *idx,
   // Copy data from input buffer to mpi buffer
   memcpy(mpi->data, msg+*idx, mpi->count + 2);
   *idx += mpi->count + 1;
-  SAFE_IDX_INCREMENT(*idx, length);
   
   return mpi;
 }

diff --git a/src/packet.h b/src/packet.h
line changes: +44/-13
index cb10355..5734781
--- a/src/packet.h
+++ b/src/packet.h
@@ -9,34 +9,45 @@
  
 #ifndef _PACKET_H
 
+#include <stdio.h>
 #include <stdint.h>
 #include "gcrypt.h"
 
+#define LOG_PRINT(fmt, ...) do {\
+	if (debug_log_enabled) {\
+  	fprintf(stderr, "SPGP [%s():%d]: " fmt, \
+    	__FUNCTION__, __LINE__, ## __VA_ARGS__);\
+  } } while(0)
+extern uint8_t debug_log_enabled;
 
 typedef struct spgp_packet_header_struct spgp_pkt_header_t;
 typedef struct spgp_packet_struct spgp_packet_t;
 typedef struct spgp_mpi_struct spgp_mpi_t;
-typedef struct spgp_public_packet_struct spgp_public_pkt_t;
-typedef struct spgp_secret_packet_struct spgp_secret_pkt_t;
-typedef struct spgp_userid_packet_struct spgp_userid_pkt_t;
+typedef struct spgp_public_packet_struct  spgp_public_pkt_t;
+typedef struct spgp_secret_packet_struct  spgp_secret_pkt_t;
+typedef struct spgp_userid_packet_struct  spgp_userid_pkt_t;
+typedef struct spgp_session_packet_struct spgp_session_pkt_t;
 
 struct spgp_packet_header_struct {
 	spgp_packet_t *parent;
+  uint32_t contentLength;
   uint8_t rawTagByte;
   uint8_t isNewFormat;
   uint8_t type;
   uint8_t headerLength;
-  uint32_t contentLength;
+  uint8_t isPartial;
 };
 
 struct spgp_packet_struct {
 	spgp_pkt_header_t *header;
   union {
-  	spgp_public_pkt_t *pub;
-  	spgp_secret_pkt_t *secret;
-    spgp_userid_pkt_t *userid;
+  	spgp_public_pkt_t  *pub;
+  	spgp_secret_pkt_t  *secret;
+    spgp_userid_pkt_t  *userid;
+    spgp_session_pkt_t *session;
   } c;
-	spgp_packet_t *next;	
+	spgp_packet_t *next;
+  spgp_packet_t *prev;
 };
 
 struct spgp_mpi_struct {
@@ -44,12 +55,23 @@ struct spgp_mpi_struct {
   uint32_t bits;
   uint32_t count;
 	spgp_mpi_t *next;
-};
+}; 
 
 struct spgp_userid_packet_struct {
 	uint8_t *data;
 };
 
+struct spgp_session_packet_struct {
+  uint8_t keyid[8];
+	uint8_t version;
+  uint8_t algo;
+  uint8_t symAlgo;
+  uint32_t keylen;
+  char *key;
+  spgp_mpi_t *mpi1;
+  spgp_mpi_t *mpi2;
+};
+
 struct spgp_public_packet_struct {
 // This is public key stuff
 	uint8_t version;
@@ -73,11 +95,12 @@ struct spgp_secret_packet_struct {
   uint8_t s2kSaltLength;
   uint8_t s2kCount;
   uint8_t *encryptedData;
+  uint32_t encryptedDataLength;
   uint8_t *key;
   uint32_t keyLength;
   uint8_t *iv;
   uint8_t ivLength;
-};
+} __attribute__((packed));
 
 typedef enum {
 	GENERIC_ERROR           = 0x100,
@@ -86,16 +109,23 @@ typedef enum {
   FORMAT_UNSUPPORTED,
 	INVALID_ARGS,
 	BUFFER_OVERFLOW,
+  INCOMPLETE_PACKET,
+  DECRYPT_FAILED,
   GCRY_ERROR,
+  KEYCHAIN_ERROR,
 } spgp_error_t;
 
 typedef enum {
+	PKT_TYPE_SESSION           = 1,
 	PKT_TYPE_SIGNATURE         = 2,
 	PKT_TYPE_SECRET_KEY        = 5,
   PKT_TYPE_PUBLIC_KEY        = 6,
 	PKT_TYPE_SECRET_SUBKEY     = 7,
+  PKT_TYPE_COMPRESSED_DATA   = 8,
+  PKT_TYPE_LITERAL_DATA      = 11,
   PKT_TYPE_USER_ID           = 13,
   PKT_TYPE_PUBLIC_SUBKEY     = 14,
+  PKT_TYPE_SYM_ENC_INT_DATA  = 18,
 } spgp_pkt_type_t;
 
 typedef enum {
@@ -129,20 +159,21 @@ typedef enum {
 } spgp_hash_algo_t;
 
 typedef enum {
-	S2K_TYPE_SIMPLE            = 1,
+	S2K_TYPE_SIMPLE            = 0,
   S2K_TYPE_SALTED,
   S2K_TYPE_RESERVED,
   S2K_TYPE_ITERATED,
 } spgp_s2k_type_t;
 
 spgp_packet_t *spgp_decode_message(uint8_t *message, uint32_t length);
+uint8_t spgp_load_keychain_with_keys(spgp_packet_t *msg);
+uint8_t spgp_decrypt_all_secret_keys(spgp_packet_t *msg, 
+                                		 uint8_t *passphrase, uint32_t length);
 void spgp_free_packet(spgp_packet_t **pkt);
 
 uint32_t spgp_err(void);
 const char *spgp_err_str(uint32_t err);
 
-void tsb_test(void);
-
 uint8_t spgp_debug_log_enabled(void);
 void spgp_debug_log_set(uint8_t enable);