Repository: fedefrappi/AePubReader Branch: master Commit: 096fe66b256c Files: 79 Total size: 1.4 MB Directory structure: gitextract_pu6ev6n8/ ├── AePubReader/ │ ├── .gitignore │ ├── AePubReader-Info.plist │ ├── AePubReader.xcodeproj/ │ │ ├── FedeX.mode1v3 │ │ ├── FedeX.pbxuser │ │ ├── project.pbxproj │ │ ├── project.xcworkspace/ │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcuserdata/ │ │ │ └── FedeX.xcuserdatad/ │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── WorkspaceSettings.xcsettings │ │ └── xcuserdata/ │ │ └── FedeX.xcuserdatad/ │ │ ├── xcdebugger/ │ │ │ └── Breakpoints.xcbkptlist │ │ └── xcschemes/ │ │ ├── AePubReader.xcscheme │ │ └── xcschememanagement.plist │ ├── AePubReader_Prefix.pch │ ├── Classes/ │ │ ├── AePubReaderAppDelegate.h │ │ ├── AePubReaderAppDelegate.m │ │ ├── Chapter.h │ │ ├── Chapter.m │ │ ├── ChapterListViewController.h │ │ ├── ChapterListViewController.m │ │ ├── ChapterListViewController.xib │ │ ├── EPub.h │ │ ├── EPub.m │ │ ├── EPubView.xib │ │ ├── EPubViewController.h │ │ ├── EPubViewController.m │ │ ├── GTMDefines.h │ │ ├── GTMNSString+HTML.h │ │ ├── GTMNSString+HTML.m │ │ ├── NSString+HTML.h │ │ ├── NSString+HTML.m │ │ ├── SearchResult.h │ │ ├── SearchResult.m │ │ ├── SearchResultsViewController.h │ │ ├── SearchResultsViewController.m │ │ ├── SearchResultsViewController.xib │ │ ├── UIWebView+SearchWebView.h │ │ ├── UIWebView+SearchWebView.m │ │ ├── ZipArchive.h │ │ ├── ZipArchive.mm │ │ └── minizip/ │ │ ├── crypt.h │ │ ├── ioapi.c │ │ ├── ioapi.h │ │ ├── mztools.c │ │ ├── mztools.h │ │ ├── unzip.c │ │ ├── unzip.h │ │ ├── zip.c │ │ └── zip.h │ ├── MainWindow.xib │ ├── SearchWebView.js │ ├── Source/ │ │ ├── CXHTMLDocument.h │ │ ├── CXHTMLDocument.m │ │ ├── CXMLDocument.h │ │ ├── CXMLDocument.m │ │ ├── CXMLDocument_PrivateExtensions.h │ │ ├── CXMLDocument_PrivateExtensions.m │ │ ├── CXMLElement.h │ │ ├── CXMLElement.m │ │ ├── CXMLElement_CreationExtensions.h │ │ ├── CXMLElement_CreationExtensions.m │ │ ├── CXMLElement_ElementTreeExtensions.h │ │ ├── CXMLElement_ElementTreeExtensions.m │ │ ├── CXMLNamespaceNode.h │ │ ├── CXMLNamespaceNode.m │ │ ├── CXMLNode.h │ │ ├── CXMLNode.m │ │ ├── CXMLNode_PrivateExtensions.h │ │ ├── CXMLNode_PrivateExtensions.m │ │ ├── CXMLNode_XPathExtensions.h │ │ ├── CXMLNode_XPathExtensions.m │ │ ├── Creation/ │ │ │ ├── CXMLDocument_CreationExtensions.h │ │ │ ├── CXMLDocument_CreationExtensions.m │ │ │ ├── CXMLNode_CreationExtensions.h │ │ │ └── CXMLNode_CreationExtensions.m │ │ ├── Tidy/ │ │ │ ├── CTidy.h │ │ │ └── CTidy.m │ │ └── TouchXML.h │ ├── main.m │ └── vhugo.epub └── README ================================================ FILE CONTENTS ================================================ ================================================ FILE: AePubReader/.gitignore ================================================ /build/ ================================================ FILE: AePubReader/AePubReader-Info.plist ================================================ CFBundleDevelopmentRegion English CFBundleDisplayName ${PRODUCT_NAME} CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIconFile CFBundleIdentifier com.yourcompany.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName ${PRODUCT_NAME} CFBundlePackageType APPL CFBundleSignature ???? CFBundleVersion 1.0 LSRequiresIPhoneOS NSMainNibFile MainWindow UISupportedInterfaceOrientations UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight ================================================ FILE: AePubReader/AePubReader.xcodeproj/FedeX.mode1v3 ================================================ ActivePerspectiveName Project AllowedModules BundleLoadPath MaxInstances n Module PBXSmartGroupTreeModule Name Groups and Files Outline View BundleLoadPath MaxInstances n Module PBXNavigatorGroup Name Editor BundleLoadPath MaxInstances n Module XCTaskListModule Name Task List BundleLoadPath MaxInstances n Module XCDetailModule Name File and Smart Group Detail Viewer BundleLoadPath MaxInstances 1 Module PBXBuildResultsModule Name Detailed Build Results Viewer BundleLoadPath MaxInstances 1 Module PBXProjectFindModule Name Project Batch Find Tool BundleLoadPath MaxInstances n Module XCProjectFormatConflictsModule Name Project Format Conflicts List BundleLoadPath MaxInstances n Module PBXBookmarksModule Name Bookmarks Tool BundleLoadPath MaxInstances n Module PBXClassBrowserModule Name Class Browser BundleLoadPath MaxInstances n Module PBXCVSModule Name Source Code Control Tool BundleLoadPath MaxInstances n Module PBXDebugBreakpointsModule Name Debug Breakpoints Tool BundleLoadPath MaxInstances n Module XCDockableInspector Name Inspector BundleLoadPath MaxInstances n Module PBXOpenQuicklyModule Name Open Quickly Tool BundleLoadPath MaxInstances 1 Module PBXDebugSessionModule Name Debugger BundleLoadPath MaxInstances 1 Module PBXDebugCLIModule Name Debug Console BundleLoadPath MaxInstances n Module XCSnapshotModule Name Snapshots Tool BundlePath /Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources Description DefaultDescriptionKey DockingSystemVisible Extension mode1v3 FavBarConfig PBXProjectModuleGUID FAFA8E5A134A0073000291E2 XCBarModuleItemNames XCBarModuleItems FirstTimeWindowDisplayed Identifier com.apple.perspectives.project.mode1v3 MajorVersion 33 MinorVersion 0 Name Default Notifications OpenEditors Content PBXProjectModuleGUID FA80D45A134CE87800C92189 PBXProjectModuleLabel DetailViewController.m PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID FA80D461134CEF0E00C92189 PBXProjectModuleLabel DetailViewController.m _historyCapacity 0 bookmark FA80D491134CEFD700C92189 history FA80D459134CE87800C92189 SplitCount 1 StatusBarVisibility Geometry Frame {{0, 20}, {1315, 702}} PBXModuleWindowStatusBarHidden2 RubberWindowFrame 61 135 1315 743 0 0 1440 878 PerspectiveWidths -1 -1 Perspectives ChosenToolbarItems active-combo-popup action NSToolbarFlexibleSpaceItem debugger-enable-breakpoints build-and-go com.apple.ide.PBXToolbarStopButton get-info NSToolbarFlexibleSpaceItem com.apple.pbx.toolbar.searchfield ControllerClassBaseName IconName WindowOfProjectWithEditor Identifier perspective.project IsVertical Layout BecomeActive ContentConfiguration PBXBottomSmartGroupGIDs 1C37FBAC04509CD000000102 1C37FAAC04509CD000000102 1C37FABC05509CD000000102 1C37FABC05539CD112110102 E2644B35053B69B200211256 1C37FABC04509CD000100104 1CC0EA4004350EF90044410B 1CC0EA4004350EF90041110B PBXProjectModuleGUID 1CE0B1FE06471DED0097A5F4 PBXProjectModuleLabel Files PBXProjectStructureProvided yes PBXSmartGroupTreeModuleColumnData PBXSmartGroupTreeModuleColumnWidthsKey 186 PBXSmartGroupTreeModuleColumnsKey_v4 MainColumn PBXSmartGroupTreeModuleOutlineStateKey_v7 PBXSmartGroupTreeModuleOutlineStateExpansionKey 29B97314FDCFA39411CA2CEA 080E96DDFE201D6D7F000001 29B97317FDCFA39411CA2CEA 1C37FBAC04509CD000000102 1C37FABC05509CD000000102 PBXSmartGroupTreeModuleOutlineStateSelectionKey 9 1 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey {{0, 0}, {186, 694}} PBXTopSmartGroupGIDs XCIncludePerspectivesSwitch XCSharingToken com.apple.Xcode.GFSharingToken GeometryConfiguration Frame {{0, 0}, {203, 712}} GroupTreeTableConfiguration MainColumn 186 RubberWindowFrame 0 125 1440 753 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion 203pt Dock ContentConfiguration PBXProjectModuleGUID 1CE0B20306471E060097A5F4 PBXProjectModuleLabel DetailViewController.m PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID 1CE0B20406471E060097A5F4 PBXProjectModuleLabel DetailViewController.m _historyCapacity 0 bookmark FA80D490134CEFD700C92189 history FAFA8E87134A0624000291E2 FAFA8E88134A0624000291E2 FAFA8E8B134A0624000291E2 FAFA8F01134A0D6A000291E2 FAFA8F09134A0D6A000291E2 FAFA8F4E134A0F46000291E2 FAFA8F9D134A168C000291E2 FAFA8F9E134A168C000291E2 FAF45864134B1A6000D4C0F9 FAF45865134B1A6000D4C0F9 FAF45866134B1A6000D4C0F9 FAF45867134B1A6000D4C0F9 FAF45868134B1A6000D4C0F9 FADF8ECA134C745A00D84A87 FA80D3DF134CB93000C92189 FA80D456134CE7CD00C92189 FA80D45D134CEF0E00C92189 FA80D45E134CEF0E00C92189 FA80D45F134CEF0E00C92189 SplitCount 1 StatusBarVisibility GeometryConfiguration Frame {{0, 0}, {1232, 312}} RubberWindowFrame 0 125 1440 753 0 0 1440 878 Module PBXNavigatorGroup Proportion 312pt ContentConfiguration PBXProjectModuleGUID 1CE0B20506471E060097A5F4 PBXProjectModuleLabel Detail GeometryConfiguration Frame {{0, 317}, {1232, 395}} RubberWindowFrame 0 125 1440 753 0 0 1440 878 Module XCDetailModule Proportion 395pt Proportion 1232pt Name Project ServiceClasses XCModuleDock PBXSmartGroupTreeModule XCModuleDock PBXNavigatorGroup XCDetailModule TableOfContents FA80D3E2134CB93000C92189 1CE0B1FE06471DED0097A5F4 FA80D3E3134CB93000C92189 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarConfiguration xcode.toolbar.config.defaultV3 ControllerClassBaseName IconName WindowOfProject Identifier perspective.morph IsVertical 0 Layout BecomeActive 1 ContentConfiguration PBXBottomSmartGroupGIDs 1C37FBAC04509CD000000102 1C37FAAC04509CD000000102 1C08E77C0454961000C914BD 1C37FABC05509CD000000102 1C37FABC05539CD112110102 E2644B35053B69B200211256 1C37FABC04509CD000100104 1CC0EA4004350EF90044410B 1CC0EA4004350EF90041110B PBXProjectModuleGUID 11E0B1FE06471DED0097A5F4 PBXProjectModuleLabel Files PBXProjectStructureProvided yes PBXSmartGroupTreeModuleColumnData PBXSmartGroupTreeModuleColumnWidthsKey 186 PBXSmartGroupTreeModuleColumnsKey_v4 MainColumn PBXSmartGroupTreeModuleOutlineStateKey_v7 PBXSmartGroupTreeModuleOutlineStateExpansionKey 29B97314FDCFA39411CA2CEA 1C37FABC05509CD000000102 PBXSmartGroupTreeModuleOutlineStateSelectionKey 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey {{0, 0}, {186, 337}} PBXTopSmartGroupGIDs XCIncludePerspectivesSwitch 1 XCSharingToken com.apple.Xcode.GFSharingToken GeometryConfiguration Frame {{0, 0}, {203, 355}} GroupTreeTableConfiguration MainColumn 186 RubberWindowFrame 373 269 690 397 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion 100% Name Morph PreferredWidth 300 ServiceClasses XCModuleDock PBXSmartGroupTreeModule TableOfContents 11E0B1FE06471DED0097A5F4 ToolbarConfiguration xcode.toolbar.config.default.shortV3 PerspectivesBarVisible PinnedNavigatorIdentifier FA80D45A134CE87800C92189 ShelfIsVisible SourceDescription file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec' StatusbarIsVisible TimeStamp 0.0 ToolbarConfigUserDefaultsMinorVersion 2 ToolbarDisplayMode 1 ToolbarIsVisible ToolbarSizeMode 1 Type Perspectives UpdateMessage The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? WindowJustification 5 WindowOrderList FA80D45A134CE87800C92189 FAF45AA2134B7BC400D4C0F9 1C78EAAD065D492600B07095 1CD10A99069EF8BA00B06720 FAFA8E5B134A0073000291E2 /Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj WindowString 0 125 1440 753 0 0 1440 878 WindowToolsV3 FirstTimeWindowDisplayed Identifier windowTool.build IsVertical Layout Dock ContentConfiguration PBXProjectModuleGUID 1CD0528F0623707200166675 PBXProjectModuleLabel DetailViewController.m StatusBarVisibility GeometryConfiguration Frame {{0, 0}, {907, 284}} RubberWindowFrame 328 240 907 566 0 0 1440 878 Module PBXNavigatorGroup Proportion 284pt BecomeActive ContentConfiguration PBXProjectModuleGUID XCMainBuildResultsModuleGUID PBXProjectModuleLabel Build Results XCBuildResultsTrigger_Collapse 1021 XCBuildResultsTrigger_Open 1011 GeometryConfiguration Frame {{0, 289}, {907, 236}} RubberWindowFrame 328 240 907 566 0 0 1440 878 Module PBXBuildResultsModule Proportion 236pt Proportion 525pt Name Build Results ServiceClasses PBXBuildResultsModule StatusbarIsVisible TableOfContents FAFA8E5B134A0073000291E2 FA80D399134CAD3000C92189 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID ToolbarConfiguration xcode.toolbar.config.buildV3 WindowContentMinSize 486 300 WindowString 328 240 907 566 0 0 1440 878 WindowToolGUID FAFA8E5B134A0073000291E2 WindowToolIsVisible FirstTimeWindowDisplayed Identifier windowTool.debugger IsVertical Layout Dock ContentConfiguration Debugger HorizontalSplitView _collapsingFrameDimension 0.0 _indexOfCollapsedView 0 _percentageOfCollapsedView 0.0 isCollapsed yes sizes {{0, 0}, {316, 201}} {{316, 0}, {378, 201}} VerticalSplitView _collapsingFrameDimension 0.0 _indexOfCollapsedView 0 _percentageOfCollapsedView 0.0 isCollapsed yes sizes {{0, 0}, {694, 201}} {{0, 201}, {694, 180}} LauncherConfigVersion 8 PBXProjectModuleGUID 1C162984064C10D400B95A72 PBXProjectModuleLabel Debug - GLUTExamples (Underwater) GeometryConfiguration DebugConsoleVisible None DebugConsoleWindowFrame {{200, 200}, {500, 300}} DebugSTDIOWindowFrame {{200, 200}, {500, 300}} Frame {{0, 0}, {694, 381}} PBXDebugSessionStackFrameViewKey DebugVariablesTableConfiguration Name 120 Value 85 Summary 148 Frame {{316, 0}, {378, 201}} RubberWindowFrame 347 370 694 422 0 0 1440 878 RubberWindowFrame 347 370 694 422 0 0 1440 878 Module PBXDebugSessionModule Proportion 381pt Proportion 381pt Name Debugger ServiceClasses PBXDebugSessionModule StatusbarIsVisible TableOfContents 1CD10A99069EF8BA00B06720 FA80D39A134CAD3000C92189 1C162984064C10D400B95A72 FA80D39B134CAD3000C92189 FA80D39C134CAD3000C92189 FA80D39D134CAD3000C92189 FA80D39E134CAD3000C92189 FA80D39F134CAD3000C92189 ToolbarConfiguration xcode.toolbar.config.debugV3 WindowString 347 370 694 422 0 0 1440 878 WindowToolGUID 1CD10A99069EF8BA00B06720 WindowToolIsVisible Identifier windowTool.find Layout Dock Dock ContentConfiguration PBXProjectModuleGUID 1CDD528C0622207200134675 PBXProjectModuleLabel <No Editor> PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID 1CD0528D0623707200166675 SplitCount 1 StatusBarVisibility 1 GeometryConfiguration Frame {{0, 0}, {781, 167}} RubberWindowFrame 62 385 781 470 0 0 1440 878 Module PBXNavigatorGroup Proportion 781pt Proportion 50% BecomeActive 1 ContentConfiguration PBXProjectModuleGUID 1CD0528E0623707200166675 PBXProjectModuleLabel Project Find GeometryConfiguration Frame {{8, 0}, {773, 254}} RubberWindowFrame 62 385 781 470 0 0 1440 878 Module PBXProjectFindModule Proportion 50% Proportion 428pt Name Project Find ServiceClasses PBXProjectFindModule StatusbarIsVisible 1 TableOfContents 1C530D57069F1CE1000CFCEE 1C530D58069F1CE1000CFCEE 1C530D59069F1CE1000CFCEE 1CDD528C0622207200134675 1C530D5A069F1CE1000CFCEE 1CE0B1FE06471DED0097A5F4 1CD0528E0623707200166675 WindowString 62 385 781 470 0 0 1440 878 WindowToolGUID 1C530D57069F1CE1000CFCEE WindowToolIsVisible 0 Identifier MENUSEPARATOR FirstTimeWindowDisplayed Identifier windowTool.debuggerConsole IsVertical Layout Dock BecomeActive ContentConfiguration PBXProjectModuleGUID 1C78EAAC065D492600B07095 PBXProjectModuleLabel Debugger Console GeometryConfiguration Frame {{0, 0}, {650, 209}} RubberWindowFrame 219 409 650 250 0 0 1440 878 Module PBXDebugCLIModule Proportion 209pt Proportion 209pt Name Debugger Console ServiceClasses PBXDebugCLIModule StatusbarIsVisible TableOfContents 1C78EAAD065D492600B07095 FA80D3A0134CAD3000C92189 1C78EAAC065D492600B07095 ToolbarConfiguration xcode.toolbar.config.consoleV3 WindowString 219 409 650 250 0 0 1440 878 WindowToolGUID 1C78EAAD065D492600B07095 WindowToolIsVisible Identifier windowTool.snapshots Layout Dock Module XCSnapshotModule Proportion 100% Proportion 100% Name Snapshots ServiceClasses XCSnapshotModule StatusbarIsVisible Yes ToolbarConfiguration xcode.toolbar.config.snapshots WindowString 315 824 300 550 0 0 1440 878 WindowToolIsVisible Yes Identifier windowTool.scm Layout Dock ContentConfiguration PBXProjectModuleGUID 1C78EAB2065D492600B07095 PBXProjectModuleLabel <No Editor> PBXSplitModuleInNavigatorKey Split0 PBXProjectModuleGUID 1C78EAB3065D492600B07095 SplitCount 1 StatusBarVisibility 1 GeometryConfiguration Frame {{0, 0}, {452, 0}} RubberWindowFrame 743 379 452 308 0 0 1280 1002 Module PBXNavigatorGroup Proportion 0pt BecomeActive 1 ContentConfiguration PBXProjectModuleGUID 1CD052920623707200166675 PBXProjectModuleLabel SCM GeometryConfiguration ConsoleFrame {{0, 259}, {452, 0}} Frame {{0, 7}, {452, 259}} RubberWindowFrame 743 379 452 308 0 0 1280 1002 TableConfiguration Status 30 FileName 199 Path 197.0950012207031 TableFrame {{0, 0}, {452, 250}} Module PBXCVSModule Proportion 262pt Proportion 266pt Name SCM ServiceClasses PBXCVSModule StatusbarIsVisible 1 TableOfContents 1C78EAB4065D492600B07095 1C78EAB5065D492600B07095 1C78EAB2065D492600B07095 1CD052920623707200166675 ToolbarConfiguration xcode.toolbar.config.scm WindowString 743 379 452 308 0 0 1280 1002 Identifier windowTool.breakpoints IsVertical 0 Layout Dock BecomeActive 1 ContentConfiguration PBXBottomSmartGroupGIDs 1C77FABC04509CD000000102 PBXProjectModuleGUID 1CE0B1FE06471DED0097A5F4 PBXProjectModuleLabel Files PBXProjectStructureProvided no PBXSmartGroupTreeModuleColumnData PBXSmartGroupTreeModuleColumnWidthsKey 168 PBXSmartGroupTreeModuleColumnsKey_v4 MainColumn PBXSmartGroupTreeModuleOutlineStateKey_v7 PBXSmartGroupTreeModuleOutlineStateExpansionKey 1C77FABC04509CD000000102 PBXSmartGroupTreeModuleOutlineStateSelectionKey 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey {{0, 0}, {168, 350}} PBXTopSmartGroupGIDs XCIncludePerspectivesSwitch 0 GeometryConfiguration Frame {{0, 0}, {185, 368}} GroupTreeTableConfiguration MainColumn 168 RubberWindowFrame 315 424 744 409 0 0 1440 878 Module PBXSmartGroupTreeModule Proportion 185pt ContentConfiguration PBXProjectModuleGUID 1CA1AED706398EBD00589147 PBXProjectModuleLabel Detail GeometryConfiguration Frame {{190, 0}, {554, 368}} RubberWindowFrame 315 424 744 409 0 0 1440 878 Module XCDetailModule Proportion 554pt Proportion 368pt MajorVersion 3 MinorVersion 0 Name Breakpoints ServiceClasses PBXSmartGroupTreeModule XCDetailModule StatusbarIsVisible 1 TableOfContents 1CDDB66807F98D9800BB5817 1CDDB66907F98D9800BB5817 1CE0B1FE06471DED0097A5F4 1CA1AED706398EBD00589147 ToolbarConfiguration xcode.toolbar.config.breakpointsV3 WindowString 315 424 744 409 0 0 1440 878 WindowToolGUID 1CDDB66807F98D9800BB5817 WindowToolIsVisible 1 Identifier windowTool.debugAnimator Layout Dock Module PBXNavigatorGroup Proportion 100% Proportion 100% Name Debug Visualizer ServiceClasses PBXNavigatorGroup StatusbarIsVisible 1 ToolbarConfiguration xcode.toolbar.config.debugAnimatorV3 WindowString 100 100 700 500 0 0 1280 1002 Identifier windowTool.bookmarks Layout Dock Module PBXBookmarksModule Proportion 100% Proportion 100% Name Bookmarks ServiceClasses PBXBookmarksModule StatusbarIsVisible 0 WindowString 538 42 401 187 0 0 1280 1002 Identifier windowTool.projectFormatConflicts Layout Dock Module XCProjectFormatConflictsModule Proportion 100% Proportion 100% Name Project Format Conflicts ServiceClasses XCProjectFormatConflictsModule StatusbarIsVisible 0 WindowContentMinSize 450 300 WindowString 50 850 472 307 0 0 1440 877 Identifier windowTool.classBrowser Layout Dock BecomeActive 1 ContentConfiguration OptionsSetName Hierarchy, all classes PBXProjectModuleGUID 1CA6456E063B45B4001379D8 PBXProjectModuleLabel Class Browser - NSObject GeometryConfiguration ClassesFrame {{0, 0}, {374, 96}} ClassesTreeTableConfiguration PBXClassNameColumnIdentifier 208 PBXClassBookColumnIdentifier 22 Frame {{0, 0}, {630, 331}} MembersFrame {{0, 105}, {374, 395}} MembersTreeTableConfiguration PBXMemberTypeIconColumnIdentifier 22 PBXMemberNameColumnIdentifier 216 PBXMemberTypeColumnIdentifier 97 PBXMemberBookColumnIdentifier 22 PBXModuleWindowStatusBarHidden2 1 RubberWindowFrame 385 179 630 352 0 0 1440 878 Module PBXClassBrowserModule Proportion 332pt Proportion 332pt Name Class Browser ServiceClasses PBXClassBrowserModule StatusbarIsVisible 0 TableOfContents 1C0AD2AF069F1E9B00FABCE6 1C0AD2B0069F1E9B00FABCE6 1CA6456E063B45B4001379D8 ToolbarConfiguration xcode.toolbar.config.classbrowser WindowString 385 179 630 352 0 0 1440 878 WindowToolGUID 1C0AD2AF069F1E9B00FABCE6 WindowToolIsVisible 0 FirstTimeWindowDisplayed Identifier windowTool.refactoring IncludeInToolsMenu 0 IsVertical Layout Dock ContentConfiguration PBXProjectModuleGUID FAF45AA1134B7BC400D4C0F9 GeometryConfiguration Frame {{0, 0}, {500, 315}} RubberWindowFrame 426 337 500 356 0 0 1440 878 XCRefactoringSplitViewLowerHeight 112 XCRefactoringSplitViewTotalHeight 232 Module XCRefactoringModule Proportion 315pt Proportion 315pt Name Refactoring ServiceClasses XCRefactoringModule StatusbarIsVisible TableOfContents FAF45AA2134B7BC400D4C0F9 FA80D3A1134CAD3000C92189 FAF45AA1134B7BC400D4C0F9 WindowString 426 337 500 356 0 0 1440 878 WindowToolGUID FAF45AA2134B7BC400D4C0F9 WindowToolIsVisible ================================================ FILE: AePubReader/AePubReader.xcodeproj/FedeX.pbxuser ================================================ // !$*UTF8*$! { 1D3623240D0F684500981E51 /* AePubReaderAppDelegate.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 416}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{158, 637}"; }; }; 1D3623250D0F684500981E51 /* AePubReaderAppDelegate.m */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1965, 1001}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{1527, 499}"; }; }; 1D6058900D05DD3D006BFB54 /* AePubReader */ = { activeExec = 0; executables = ( FAFA8E4C134A006A000291E2 /* AePubReader */, ); }; 28042007108E984D000629CD /* RootViewController.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 261}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 405}"; sepNavWindowFrame = "{{15, 74}, {1315, 799}}"; }; }; 28042008108E984D000629CD /* RootViewController.m */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1048, 2145}}"; sepNavSelRange = "{3768, 0}"; sepNavVisRange = "{3413, 623}"; }; }; 28042009108E984D000629CD /* DetailViewController.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1256, 936}}"; sepNavSelRange = "{1166, 0}"; sepNavVisRange = "{460, 1663}"; sepNavWindowFrame = "{{15, 74}, {1315, 799}}"; }; }; 2804200A108E984D000629CD /* DetailViewController.m */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1104, 4069}}"; sepNavSelRange = "{8878, 0}"; sepNavVisRange = "{8517, 366}"; sepNavWindowFrame = "{{61, 79}, {1315, 799}}"; }; }; 28A0AAE50D9B0CCF005BE974 /* AePubReader_Prefix.pch */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {762, 227}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 328}"; }; }; 29B97313FDCFA39411CA2CEA /* Project object */ = { activeBuildConfigurationName = Debug; activeExecutable = FAFA8E4C134A006A000291E2 /* AePubReader */; activeTarget = 1D6058900D05DD3D006BFB54 /* AePubReader */; addToTargets = ( 1D6058900D05DD3D006BFB54 /* AePubReader */, ); codeSenseManager = FAFA8E65134A0073000291E2 /* Code sense */; executables = ( FAFA8E4C134A006A000291E2 /* AePubReader */, ); perUserDictionary = { PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID; PBXFileTableDataSourceColumnWidthsKey = ( 200, 200, 578, ); PBXFileTableDataSourceColumnsKey = ( PBXBookmarksDataSource_LocationID, PBXBookmarksDataSource_NameID, PBXBookmarksDataSource_CommentsID, ); }; PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, 993, 20, 48, 43, 43, 20, ); PBXFileTableDataSourceColumnsKey = ( PBXFileDataSource_FiletypeID, PBXFileDataSource_Filename_ColumnID, PBXFileDataSource_Built_ColumnID, PBXFileDataSource_ObjectSize_ColumnID, PBXFileDataSource_Errors_ColumnID, PBXFileDataSource_Warnings_ColumnID, PBXFileDataSource_Target_ColumnID, ); }; PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, 728, 60, 20, 48, 43, 43, ); PBXFileTableDataSourceColumnsKey = ( PBXFileDataSource_FiletypeID, PBXFileDataSource_Filename_ColumnID, PBXTargetDataSource_PrimaryAttribute, PBXFileDataSource_Built_ColumnID, PBXFileDataSource_ObjectSize_ColumnID, PBXFileDataSource_Errors_ColumnID, PBXFileDataSource_Warnings_ColumnID, ); }; PBXPerProjectTemplateStateSaveDate = 323790096; PBXWorkspaceStateSaveDate = 323790096; }; perUserProjectItems = { FA80D3DF134CB93000C92189 /* PBXTextBookmark */ = FA80D3DF134CB93000C92189 /* PBXTextBookmark */; FA80D456134CE7CD00C92189 /* PBXTextBookmark */ = FA80D456134CE7CD00C92189 /* PBXTextBookmark */; FA80D459134CE87800C92189 /* PBXBookmark */ = FA80D459134CE87800C92189 /* PBXBookmark */; FA80D45D134CEF0E00C92189 /* PBXTextBookmark */ = FA80D45D134CEF0E00C92189 /* PBXTextBookmark */; FA80D45E134CEF0E00C92189 /* PBXTextBookmark */ = FA80D45E134CEF0E00C92189 /* PBXTextBookmark */; FA80D45F134CEF0E00C92189 /* PBXTextBookmark */ = FA80D45F134CEF0E00C92189 /* PBXTextBookmark */; FA80D490134CEFD700C92189 /* PBXTextBookmark */ = FA80D490134CEFD700C92189 /* PBXTextBookmark */; FA80D491134CEFD700C92189 /* PBXTextBookmark */ = FA80D491134CEFD700C92189 /* PBXTextBookmark */; FADF8ECA134C745A00D84A87 /* PBXTextBookmark */ = FADF8ECA134C745A00D84A87 /* PBXTextBookmark */; FAF45864134B1A6000D4C0F9 /* PBXTextBookmark */ = FAF45864134B1A6000D4C0F9 /* PBXTextBookmark */; FAF45865134B1A6000D4C0F9 /* PBXTextBookmark */ = FAF45865134B1A6000D4C0F9 /* PBXTextBookmark */; FAF45866134B1A6000D4C0F9 /* PBXTextBookmark */ = FAF45866134B1A6000D4C0F9 /* PBXTextBookmark */; FAF45867134B1A6000D4C0F9 /* PBXTextBookmark */ = FAF45867134B1A6000D4C0F9 /* PBXTextBookmark */; FAF45868134B1A6000D4C0F9 /* PBXTextBookmark */ = FAF45868134B1A6000D4C0F9 /* PBXTextBookmark */; FAFA8E87134A0624000291E2 /* PlistBookmark */ = FAFA8E87134A0624000291E2 /* PlistBookmark */; FAFA8E88134A0624000291E2 /* PBXTextBookmark */ = FAFA8E88134A0624000291E2 /* PBXTextBookmark */; FAFA8E8B134A0624000291E2 /* PBXTextBookmark */ = FAFA8E8B134A0624000291E2 /* PBXTextBookmark */; FAFA8F01134A0D6A000291E2 /* PBXTextBookmark */ = FAFA8F01134A0D6A000291E2 /* PBXTextBookmark */; FAFA8F09134A0D6A000291E2 /* PBXTextBookmark */ = FAFA8F09134A0D6A000291E2 /* PBXTextBookmark */; FAFA8F4E134A0F46000291E2 /* PBXTextBookmark */ = FAFA8F4E134A0F46000291E2 /* PBXTextBookmark */; FAFA8F9D134A168C000291E2 /* PBXTextBookmark */ = FAFA8F9D134A168C000291E2 /* PBXTextBookmark */; FAFA8F9E134A168C000291E2 /* PBXTextBookmark */ = FAFA8F9E134A168C000291E2 /* PBXTextBookmark */; }; sourceControlManager = FAFA8E64134A0073000291E2 /* Source Control */; userBuildSettings = { }; }; 29B97316FDCFA39411CA2CEA /* main.m */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 330}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 369}"; }; }; FA80D3DF134CB93000C92189 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = FAF45878134B1B6C00D4C0F9 /* EPub.m */; name = "EPub.m: 116"; rLen = 0; rLoc = 4401; rType = 0; vrLen = 1001; vrLoc = 3415; }; FA80D456134CE7CD00C92189 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 28042009108E984D000629CD /* DetailViewController.h */; name = "DetailViewController.h: 52"; rLen = 0; rLoc = 1358; rType = 0; vrLen = 481; vrLoc = 156; }; FA80D459134CE87800C92189 /* PBXBookmark */ = { isa = PBXBookmark; fRef = 2804200A108E984D000629CD /* DetailViewController.m */; }; FA80D45D134CEF0E00C92189 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 28042007108E984D000629CD /* RootViewController.h */; name = "RootViewController.h: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 405; vrLoc = 0; }; FA80D45E134CEF0E00C92189 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 28042008108E984D000629CD /* RootViewController.m */; name = "RootViewController.m: 134"; rLen = 0; rLoc = 3768; rType = 0; vrLen = 623; vrLoc = 3413; }; FA80D45F134CEF0E00C92189 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2804200A108E984D000629CD /* DetailViewController.m */; name = "DetailViewController.m: 295"; rLen = 0; rLoc = 8878; rType = 0; vrLen = 367; vrLoc = 8459; }; FA80D490134CEFD700C92189 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2804200A108E984D000629CD /* DetailViewController.m */; name = "DetailViewController.m: 297"; rLen = 0; rLoc = 8878; rType = 0; vrLen = 652; vrLoc = 220; }; FA80D491134CEFD700C92189 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 2804200A108E984D000629CD /* DetailViewController.m */; name = "DetailViewController.m: 165"; rLen = 0; rLoc = 5218; rType = 0; vrLen = 2026; vrLoc = 3561; }; FADF8ECA134C745A00D84A87 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = FAF45877134B1B6C00D4C0F9 /* EPub.h */; name = "EPub.h: 37"; rLen = 0; rLoc = 773; rType = 0; vrLen = 404; vrLoc = 180; }; FAF45847134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 1040}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 898}"; }; }; FAF4584B134B18F400D4C0F9 /* TouchXML.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 494}}"; sepNavSelRange = "{1241, 1}"; sepNavVisRange = "{675, 848}"; }; }; FAF45864134B1A6000D4C0F9 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = FAF45847134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m */; name = "CXMLNode_XPathExtensions.m: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 898; vrLoc = 0; }; FAF45865134B1A6000D4C0F9 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = FAF4584B134B18F400D4C0F9 /* TouchXML.h */; name = "TouchXML.h: 28"; rLen = 1; rLoc = 1241; rType = 0; vrLen = 848; vrLoc = 675; }; FAF45866134B1A6000D4C0F9 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = FAFA8EA6134A06D6000291E2 /* ZipArchive.mm */; name = "ZipArchive.mm: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 333; vrLoc = 458; }; FAF45867134B1A6000D4C0F9 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 1D3623240D0F684500981E51 /* AePubReaderAppDelegate.h */; name = "AePubReaderAppDelegate.h: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 637; vrLoc = 158; }; FAF45868134B1A6000D4C0F9 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 1D3623250D0F684500981E51 /* AePubReaderAppDelegate.m */; name = "AePubReaderAppDelegate.m: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 499; vrLoc = 1527; }; FAF45877134B1B6C00D4C0F9 /* EPub.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 494}}"; sepNavSelRange = "{773, 0}"; sepNavVisRange = "{180, 404}"; sepNavWindowFrame = "{{114, 79}, {1315, 799}}"; }; }; FAF45878134B1B6C00D4C0F9 /* EPub.m */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {1272, 1300}}"; sepNavSelRange = "{4401, 0}"; sepNavVisRange = "{3415, 1001}"; sepNavWindowFrame = "{{19, 74}, {1315, 799}}"; }; }; FAFA8E4C134A006A000291E2 /* AePubReader */ = { isa = PBXExecutable; activeArgIndices = ( ); argumentStrings = ( ); autoAttachOnCrash = 1; breakpointsEnabled = 0; configStateDict = { }; customDataFormattersEnabled = 1; dataTipCustomDataFormattersEnabled = 1; dataTipShowTypeColumn = 1; dataTipSortType = 0; debuggerPlugin = GDBDebugging; disassemblyDisplayState = 0; dylibVariantSuffix = ""; enableDebugStr = 1; environmentEntries = ( ); executableSystemSymbolLevel = 0; executableUserSymbolLevel = 0; libgmallocEnabled = 0; name = AePubReader; savedGlobals = { }; showTypeColumn = 0; sourceDirectories = ( ); }; FAFA8E64134A0073000291E2 /* Source Control */ = { isa = PBXSourceControlManager; fallbackIsa = XCSourceControlManager; isSCMEnabled = 0; scmConfiguration = { repositoryNamesForRoots = { "" = ""; }; }; }; FAFA8E65134A0073000291E2 /* Code sense */ = { isa = PBXCodeSenseManager; indexTemplatePath = ""; }; FAFA8E87134A0624000291E2 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 8D1107310486CEB800E47090 /* AePubReader-Info.plist */; fallbackIsa = PBXBookmark; isK = 0; kPath = ( ); name = "/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader-Info.plist"; rLen = 0; rLoc = 9223372036854775808; }; FAFA8E88134A0624000291E2 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 28A0AAE50D9B0CCF005BE974 /* AePubReader_Prefix.pch */; name = "AePubReader_Prefix.pch: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 328; vrLoc = 0; }; FAFA8E8B134A0624000291E2 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 29B97316FDCFA39411CA2CEA /* main.m */; name = "main.m: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 369; vrLoc = 0; }; FAFA8E9B134A06D6000291E2 /* ZipArchive.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 702}}"; sepNavSelRange = "{409, 0}"; sepNavVisRange = "{20, 496}"; }; }; FAFA8E9D134A06D6000291E2 /* crypt.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 1729}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 952}"; }; }; FAFA8EA2134A06D6000291E2 /* unzip.c */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {846, 20774}}"; sepNavSelRange = "{49247, 0}"; sepNavVisRange = "{48931, 560}"; }; }; FAFA8EA3134A06D6000291E2 /* unzip.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 4550}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 891}"; }; }; FAFA8EA5134A06D6000291E2 /* zip.h */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 3107}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 850}"; }; }; FAFA8EA6134A06D6000291E2 /* ZipArchive.mm */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {946, 4602}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{458, 333}"; }; }; FAFA8F01134A0D6A000291E2 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = FAFA8EA5134A06D6000291E2 /* zip.h */; name = "zip.h: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 850; vrLoc = 0; }; FAFA8F09134A0D6A000291E2 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = FAFA8E9D134A06D6000291E2 /* crypt.h */; name = "crypt.h: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 952; vrLoc = 0; }; FAFA8F4E134A0F46000291E2 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = FAFA8EA2134A06D6000291E2 /* unzip.c */; name = "unzip.c: 1537"; rLen = 0; rLoc = 49247; rType = 0; vrLen = 568; vrLoc = 48923; }; FAFA8F9D134A168C000291E2 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = FAFA8EA3134A06D6000291E2 /* unzip.h */; name = "unzip.h: 1"; rLen = 0; rLoc = 0; rType = 0; vrLen = 891; vrLoc = 0; }; FAFA8F9E134A168C000291E2 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = FAFA8E9B134A06D6000291E2 /* ZipArchive.h */; name = "ZipArchive.h: 20"; rLen = 0; rLoc = 409; rType = 0; vrLen = 496; vrLoc = 20; }; } ================================================ FILE: AePubReader/AePubReader.xcodeproj/project.pbxproj ================================================ // !$*UTF8*$! { archiveVersion = 1; classes = { }; objectVersion = 46; objects = { /* Begin PBXBuildFile section */ 1D3623260D0F684500981E51 /* AePubReaderAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AePubReaderAppDelegate.m */; }; 1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; }; 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; }; 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; }; 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; }; CA7E023515E388F3001F520B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CA7E023415E388F3001F520B /* libz.dylib */; }; FA11955A13BA921100025A2B /* UIWebView+SearchWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = FA11955913BA921100025A2B /* UIWebView+SearchWebView.m */; }; FA11956013BA924400025A2B /* GTMNSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = FA11955E13BA924400025A2B /* GTMNSString+HTML.m */; }; FA11956113BA924400025A2B /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = FA11955F13BA924400025A2B /* NSString+HTML.m */; }; FA11956413BA92CD00025A2B /* EPubViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FA11956313BA92CD00025A2B /* EPubViewController.m */; }; FA11956613BA93F100025A2B /* EPubView.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA11956513BA93F100025A2B /* EPubView.xib */; }; FA307A3C1371E2B000959622 /* ChapterListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FA307A3A1371E2B000959622 /* ChapterListViewController.m */; }; FA307A3D1371E2B000959622 /* ChapterListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA307A3B1371E2B000959622 /* ChapterListViewController.xib */; }; FA3B29B7137440380055A954 /* SearchWebView.js in Resources */ = {isa = PBXBuildFile; fileRef = FA3B29B5137434330055A954 /* SearchWebView.js */; }; FA4FBE561372F6A400C4E728 /* SearchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = FA4FBE551372F6A400C4E728 /* SearchResult.m */; }; FA881E4E1372CA9200FBD25F /* orangeslide.png in Resources */ = {isa = PBXBuildFile; fileRef = FA881E4B1372CA9200FBD25F /* orangeslide.png */; }; FA881E4F1372CA9200FBD25F /* slider_ball.png in Resources */ = {isa = PBXBuildFile; fileRef = FA881E4C1372CA9200FBD25F /* slider_ball.png */; }; FA881E501372CA9200FBD25F /* yellowslide.png in Resources */ = {isa = PBXBuildFile; fileRef = FA881E4D1372CA9200FBD25F /* yellowslide.png */; }; FA881E591372E96000FBD25F /* SearchResultsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FA881E571372E96000FBD25F /* SearchResultsViewController.m */; }; FA881E5A1372E96000FBD25F /* SearchResultsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA881E581372E96000FBD25F /* SearchResultsViewController.xib */; }; FAA85387134F422F0035F235 /* Chapter.m in Sources */ = {isa = PBXBuildFile; fileRef = FAA85386134F422F0035F235 /* Chapter.m */; }; FAF4584C134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45831134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.m */; }; FAF4584D134B18F400D4C0F9 /* CXMLNode_CreationExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45833134B18F400D4C0F9 /* CXMLNode_CreationExtensions.m */; }; FAF4584E134B18F400D4C0F9 /* CXHTMLDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45835134B18F400D4C0F9 /* CXHTMLDocument.m */; }; FAF4584F134B18F400D4C0F9 /* CXMLDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45837134B18F400D4C0F9 /* CXMLDocument.m */; }; FAF45850134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45839134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.m */; }; FAF45851134B18F400D4C0F9 /* CXMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF4583B134B18F400D4C0F9 /* CXMLElement.m */; }; FAF45852134B18F400D4C0F9 /* CXMLElement_CreationExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF4583D134B18F400D4C0F9 /* CXMLElement_CreationExtensions.m */; }; FAF45853134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF4583F134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.m */; }; FAF45854134B18F400D4C0F9 /* CXMLNamespaceNode.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45841134B18F400D4C0F9 /* CXMLNamespaceNode.m */; }; FAF45855134B18F400D4C0F9 /* CXMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45843134B18F400D4C0F9 /* CXMLNode.m */; }; FAF45856134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45845134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.m */; }; FAF45857134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45847134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m */; }; FAF45858134B18F400D4C0F9 /* CTidy.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF4584A134B18F400D4C0F9 /* CTidy.m */; }; FAF45879134B1B6C00D4C0F9 /* EPub.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45878134B1B6C00D4C0F9 /* EPub.m */; }; FAFA8E86134A0603000291E2 /* vhugo.epub in Resources */ = {isa = PBXBuildFile; fileRef = FAFA8E85134A0603000291E2 /* vhugo.epub */; }; FAFA8EA7134A06D6000291E2 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = FAFA8E9E134A06D6000291E2 /* ioapi.c */; }; FAFA8EA8134A06D6000291E2 /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = FAFA8EA0134A06D6000291E2 /* mztools.c */; }; FAFA8EA9134A06D6000291E2 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = FAFA8EA2134A06D6000291E2 /* unzip.c */; }; FAFA8EAA134A06D6000291E2 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = FAFA8EA4134A06D6000291E2 /* zip.c */; }; FAFA8EAB134A06D6000291E2 /* ZipArchive.mm in Sources */ = {isa = PBXBuildFile; fileRef = FAFA8EA6134A06D6000291E2 /* ZipArchive.mm */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ 1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 1D3623240D0F684500981E51 /* AePubReaderAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AePubReaderAppDelegate.h; sourceTree = ""; }; 1D3623250D0F684500981E51 /* AePubReaderAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AePubReaderAppDelegate.m; sourceTree = ""; wrapsLines = 0; }; 1D6058910D05DD3D006BFB54 /* AePubReader.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AePubReader.app; sourceTree = BUILT_PRODUCTS_DIR; }; 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; 28A0AAE50D9B0CCF005BE974 /* AePubReader_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AePubReader_Prefix.pch; sourceTree = ""; }; 28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 8D1107310486CEB800E47090 /* AePubReader-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "AePubReader-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; CA7E023415E388F3001F520B /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; FA11955813BA921100025A2B /* UIWebView+SearchWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIWebView+SearchWebView.h"; sourceTree = ""; }; FA11955913BA921100025A2B /* UIWebView+SearchWebView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWebView+SearchWebView.m"; sourceTree = ""; }; FA11955B13BA924400025A2B /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; }; FA11955C13BA924400025A2B /* GTMNSString+HTML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+HTML.h"; sourceTree = ""; }; FA11955D13BA924400025A2B /* NSString+HTML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+HTML.h"; sourceTree = ""; }; FA11955E13BA924400025A2B /* GTMNSString+HTML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+HTML.m"; sourceTree = ""; }; FA11955F13BA924400025A2B /* NSString+HTML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+HTML.m"; sourceTree = ""; }; FA11956213BA92CD00025A2B /* EPubViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EPubViewController.h; sourceTree = ""; }; FA11956313BA92CD00025A2B /* EPubViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EPubViewController.m; sourceTree = ""; }; FA11956513BA93F100025A2B /* EPubView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = EPubView.xib; path = Classes/EPubView.xib; sourceTree = ""; }; FA307A391371E2B000959622 /* ChapterListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChapterListViewController.h; sourceTree = ""; }; FA307A3A1371E2B000959622 /* ChapterListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChapterListViewController.m; sourceTree = ""; }; FA307A3B1371E2B000959622 /* ChapterListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ChapterListViewController.xib; path = Classes/ChapterListViewController.xib; sourceTree = ""; }; FA3B29B5137434330055A954 /* SearchWebView.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = SearchWebView.js; sourceTree = ""; }; FA4FBE541372F6A400C4E728 /* SearchResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchResult.h; sourceTree = ""; }; FA4FBE551372F6A400C4E728 /* SearchResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchResult.m; sourceTree = ""; wrapsLines = 0; }; FA881E4B1372CA9200FBD25F /* orangeslide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = orangeslide.png; sourceTree = ""; }; FA881E4C1372CA9200FBD25F /* slider_ball.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = slider_ball.png; sourceTree = ""; }; FA881E4D1372CA9200FBD25F /* yellowslide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = yellowslide.png; sourceTree = ""; }; FA881E561372E96000FBD25F /* SearchResultsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchResultsViewController.h; sourceTree = ""; wrapsLines = 0; }; FA881E571372E96000FBD25F /* SearchResultsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchResultsViewController.m; sourceTree = ""; wrapsLines = 0; }; FA881E581372E96000FBD25F /* SearchResultsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = SearchResultsViewController.xib; path = Classes/SearchResultsViewController.xib; sourceTree = ""; }; FAA85385134F422F0035F235 /* Chapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Chapter.h; sourceTree = ""; }; FAA85386134F422F0035F235 /* Chapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Chapter.m; sourceTree = ""; wrapsLines = 0; }; FAF45830134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLDocument_CreationExtensions.h; sourceTree = ""; }; FAF45831134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLDocument_CreationExtensions.m; sourceTree = ""; }; FAF45832134B18F400D4C0F9 /* CXMLNode_CreationExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNode_CreationExtensions.h; sourceTree = ""; }; FAF45833134B18F400D4C0F9 /* CXMLNode_CreationExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLNode_CreationExtensions.m; sourceTree = ""; }; FAF45834134B18F400D4C0F9 /* CXHTMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXHTMLDocument.h; sourceTree = ""; }; FAF45835134B18F400D4C0F9 /* CXHTMLDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXHTMLDocument.m; sourceTree = ""; }; FAF45836134B18F400D4C0F9 /* CXMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLDocument.h; sourceTree = ""; }; FAF45837134B18F400D4C0F9 /* CXMLDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLDocument.m; sourceTree = ""; }; FAF45838134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLDocument_PrivateExtensions.h; sourceTree = ""; }; FAF45839134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLDocument_PrivateExtensions.m; sourceTree = ""; }; FAF4583A134B18F400D4C0F9 /* CXMLElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLElement.h; sourceTree = ""; }; FAF4583B134B18F400D4C0F9 /* CXMLElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLElement.m; sourceTree = ""; }; FAF4583C134B18F400D4C0F9 /* CXMLElement_CreationExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLElement_CreationExtensions.h; sourceTree = ""; }; FAF4583D134B18F400D4C0F9 /* CXMLElement_CreationExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLElement_CreationExtensions.m; sourceTree = ""; }; FAF4583E134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLElement_ElementTreeExtensions.h; sourceTree = ""; }; FAF4583F134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLElement_ElementTreeExtensions.m; sourceTree = ""; }; FAF45840134B18F400D4C0F9 /* CXMLNamespaceNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNamespaceNode.h; sourceTree = ""; }; FAF45841134B18F400D4C0F9 /* CXMLNamespaceNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLNamespaceNode.m; sourceTree = ""; }; FAF45842134B18F400D4C0F9 /* CXMLNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNode.h; sourceTree = ""; }; FAF45843134B18F400D4C0F9 /* CXMLNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLNode.m; sourceTree = ""; }; FAF45844134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNode_PrivateExtensions.h; sourceTree = ""; }; FAF45845134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLNode_PrivateExtensions.m; sourceTree = ""; }; FAF45846134B18F400D4C0F9 /* CXMLNode_XPathExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNode_XPathExtensions.h; sourceTree = ""; }; FAF45847134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLNode_XPathExtensions.m; sourceTree = ""; }; FAF45849134B18F400D4C0F9 /* CTidy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CTidy.h; sourceTree = ""; }; FAF4584A134B18F400D4C0F9 /* CTidy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CTidy.m; sourceTree = ""; }; FAF4584B134B18F400D4C0F9 /* TouchXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchXML.h; sourceTree = ""; }; FAF45877134B1B6C00D4C0F9 /* EPub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EPub.h; sourceTree = ""; }; FAF45878134B1B6C00D4C0F9 /* EPub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EPub.m; sourceTree = ""; wrapsLines = 0; }; FAFA8E85134A0603000291E2 /* vhugo.epub */ = {isa = PBXFileReference; lastKnownFileType = file; path = vhugo.epub; sourceTree = ""; }; FAFA8E9B134A06D6000291E2 /* ZipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZipArchive.h; sourceTree = ""; }; FAFA8E9D134A06D6000291E2 /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; }; FAFA8E9E134A06D6000291E2 /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; }; FAFA8E9F134A06D6000291E2 /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; }; FAFA8EA0134A06D6000291E2 /* mztools.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mztools.c; sourceTree = ""; }; FAFA8EA1134A06D6000291E2 /* mztools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mztools.h; sourceTree = ""; }; FAFA8EA2134A06D6000291E2 /* unzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; }; FAFA8EA3134A06D6000291E2 /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; }; FAFA8EA4134A06D6000291E2 /* zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; FAFA8EA5134A06D6000291E2 /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; }; FAFA8EA6134A06D6000291E2 /* ZipArchive.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ZipArchive.mm; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ 1D60588F0D05DD3D006BFB54 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( CA7E023515E388F3001F520B /* libz.dylib in Frameworks */, 1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */, 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */, 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ 080E96DDFE201D6D7F000001 /* Classes */ = { isa = PBXGroup; children = ( FAF4582D134B18D600D4C0F9 /* TouchXML */, FAF4585B134B195500D4C0F9 /* ZipArchive */, 1D3623240D0F684500981E51 /* AePubReaderAppDelegate.h */, 1D3623250D0F684500981E51 /* AePubReaderAppDelegate.m */, FA307A391371E2B000959622 /* ChapterListViewController.h */, FA307A3A1371E2B000959622 /* ChapterListViewController.m */, FAF45877134B1B6C00D4C0F9 /* EPub.h */, FAF45878134B1B6C00D4C0F9 /* EPub.m */, FA11956213BA92CD00025A2B /* EPubViewController.h */, FA11956313BA92CD00025A2B /* EPubViewController.m */, FAA85385134F422F0035F235 /* Chapter.h */, FAA85386134F422F0035F235 /* Chapter.m */, FA881E561372E96000FBD25F /* SearchResultsViewController.h */, FA881E571372E96000FBD25F /* SearchResultsViewController.m */, FA4FBE541372F6A400C4E728 /* SearchResult.h */, FA4FBE551372F6A400C4E728 /* SearchResult.m */, FA11955813BA921100025A2B /* UIWebView+SearchWebView.h */, FA11955913BA921100025A2B /* UIWebView+SearchWebView.m */, FA11955B13BA924400025A2B /* GTMDefines.h */, FA11955C13BA924400025A2B /* GTMNSString+HTML.h */, FA11955D13BA924400025A2B /* NSString+HTML.h */, FA11955E13BA924400025A2B /* GTMNSString+HTML.m */, FA11955F13BA924400025A2B /* NSString+HTML.m */, ); path = Classes; sourceTree = ""; }; 19C28FACFE9D520D11CA2CBB /* Products */ = { isa = PBXGroup; children = ( 1D6058910D05DD3D006BFB54 /* AePubReader.app */, ); name = Products; sourceTree = ""; }; 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( 080E96DDFE201D6D7F000001 /* Classes */, 29B97315FDCFA39411CA2CEA /* Other Sources */, 29B97317FDCFA39411CA2CEA /* Resources */, 29B97323FDCFA39411CA2CEA /* Frameworks */, 19C28FACFE9D520D11CA2CBB /* Products */, ); name = CustomTemplate; sourceTree = ""; }; 29B97315FDCFA39411CA2CEA /* Other Sources */ = { isa = PBXGroup; children = ( 28A0AAE50D9B0CCF005BE974 /* AePubReader_Prefix.pch */, 29B97316FDCFA39411CA2CEA /* main.m */, ); name = "Other Sources"; sourceTree = ""; }; 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( FA3B29B5137434330055A954 /* SearchWebView.js */, FA881E4B1372CA9200FBD25F /* orangeslide.png */, FA881E4C1372CA9200FBD25F /* slider_ball.png */, FA881E4D1372CA9200FBD25F /* yellowslide.png */, FAFA8E85134A0603000291E2 /* vhugo.epub */, FA11956513BA93F100025A2B /* EPubView.xib */, FA881E581372E96000FBD25F /* SearchResultsViewController.xib */, FA307A3B1371E2B000959622 /* ChapterListViewController.xib */, 28AD735F0D9D9599002E5188 /* MainWindow.xib */, 8D1107310486CEB800E47090 /* AePubReader-Info.plist */, ); name = Resources; sourceTree = ""; }; 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( CA7E023415E388F3001F520B /* libz.dylib */, 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */, 1D30AB110D05D00D00671497 /* Foundation.framework */, 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */, ); name = Frameworks; sourceTree = ""; }; FAF4582D134B18D600D4C0F9 /* TouchXML */ = { isa = PBXGroup; children = ( FAF4582E134B18F400D4C0F9 /* Source */, ); name = TouchXML; path = ..; sourceTree = ""; }; FAF4582E134B18F400D4C0F9 /* Source */ = { isa = PBXGroup; children = ( FAF4582F134B18F400D4C0F9 /* Creation */, FAF45834134B18F400D4C0F9 /* CXHTMLDocument.h */, FAF45835134B18F400D4C0F9 /* CXHTMLDocument.m */, FAF45836134B18F400D4C0F9 /* CXMLDocument.h */, FAF45837134B18F400D4C0F9 /* CXMLDocument.m */, FAF45838134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.h */, FAF45839134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.m */, FAF4583A134B18F400D4C0F9 /* CXMLElement.h */, FAF4583B134B18F400D4C0F9 /* CXMLElement.m */, FAF4583C134B18F400D4C0F9 /* CXMLElement_CreationExtensions.h */, FAF4583D134B18F400D4C0F9 /* CXMLElement_CreationExtensions.m */, FAF4583E134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.h */, FAF4583F134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.m */, FAF45840134B18F400D4C0F9 /* CXMLNamespaceNode.h */, FAF45841134B18F400D4C0F9 /* CXMLNamespaceNode.m */, FAF45842134B18F400D4C0F9 /* CXMLNode.h */, FAF45843134B18F400D4C0F9 /* CXMLNode.m */, FAF45844134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.h */, FAF45845134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.m */, FAF45846134B18F400D4C0F9 /* CXMLNode_XPathExtensions.h */, FAF45847134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m */, FAF45848134B18F400D4C0F9 /* Tidy */, FAF4584B134B18F400D4C0F9 /* TouchXML.h */, ); path = Source; sourceTree = ""; }; FAF4582F134B18F400D4C0F9 /* Creation */ = { isa = PBXGroup; children = ( FAF45830134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.h */, FAF45831134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.m */, FAF45832134B18F400D4C0F9 /* CXMLNode_CreationExtensions.h */, FAF45833134B18F400D4C0F9 /* CXMLNode_CreationExtensions.m */, ); path = Creation; sourceTree = ""; }; FAF45848134B18F400D4C0F9 /* Tidy */ = { isa = PBXGroup; children = ( FAF45849134B18F400D4C0F9 /* CTidy.h */, FAF4584A134B18F400D4C0F9 /* CTidy.m */, ); path = Tidy; sourceTree = ""; }; FAF4585B134B195500D4C0F9 /* ZipArchive */ = { isa = PBXGroup; children = ( FAFA8E9B134A06D6000291E2 /* ZipArchive.h */, FAFA8E9C134A06D6000291E2 /* minizip */, FAFA8EA6134A06D6000291E2 /* ZipArchive.mm */, ); name = ZipArchive; sourceTree = ""; }; FAFA8E9C134A06D6000291E2 /* minizip */ = { isa = PBXGroup; children = ( FAFA8E9D134A06D6000291E2 /* crypt.h */, FAFA8E9E134A06D6000291E2 /* ioapi.c */, FAFA8E9F134A06D6000291E2 /* ioapi.h */, FAFA8EA0134A06D6000291E2 /* mztools.c */, FAFA8EA1134A06D6000291E2 /* mztools.h */, FAFA8EA2134A06D6000291E2 /* unzip.c */, FAFA8EA3134A06D6000291E2 /* unzip.h */, FAFA8EA4134A06D6000291E2 /* zip.c */, FAFA8EA5134A06D6000291E2 /* zip.h */, ); path = minizip; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ 1D6058900D05DD3D006BFB54 /* AePubReader */ = { isa = PBXNativeTarget; buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AePubReader" */; buildPhases = ( 1D60588D0D05DD3D006BFB54 /* Resources */, 1D60588E0D05DD3D006BFB54 /* Sources */, 1D60588F0D05DD3D006BFB54 /* Frameworks */, ); buildRules = ( ); dependencies = ( ); name = AePubReader; productName = AePubReader; productReference = 1D6058910D05DD3D006BFB54 /* AePubReader.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ 29B97313FDCFA39411CA2CEA /* Project object */ = { isa = PBXProject; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AePubReader" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( English, Japanese, French, German, en, ); mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */; projectDirPath = ""; projectRoot = ""; targets = ( 1D6058900D05DD3D006BFB54 /* AePubReader */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ 1D60588D0D05DD3D006BFB54 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( FA3B29B7137440380055A954 /* SearchWebView.js in Resources */, 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */, FAFA8E86134A0603000291E2 /* vhugo.epub in Resources */, FA307A3D1371E2B000959622 /* ChapterListViewController.xib in Resources */, FA881E4E1372CA9200FBD25F /* orangeslide.png in Resources */, FA881E4F1372CA9200FBD25F /* slider_ball.png in Resources */, FA881E501372CA9200FBD25F /* yellowslide.png in Resources */, FA881E5A1372E96000FBD25F /* SearchResultsViewController.xib in Resources */, FA11956613BA93F100025A2B /* EPubView.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ 1D60588E0D05DD3D006BFB54 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( 1D60589B0D05DD56006BFB54 /* main.m in Sources */, 1D3623260D0F684500981E51 /* AePubReaderAppDelegate.m in Sources */, FAFA8EA7134A06D6000291E2 /* ioapi.c in Sources */, FAFA8EA8134A06D6000291E2 /* mztools.c in Sources */, FAFA8EA9134A06D6000291E2 /* unzip.c in Sources */, FAFA8EAA134A06D6000291E2 /* zip.c in Sources */, FAFA8EAB134A06D6000291E2 /* ZipArchive.mm in Sources */, FAF4584C134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.m in Sources */, FAF4584D134B18F400D4C0F9 /* CXMLNode_CreationExtensions.m in Sources */, FAF4584E134B18F400D4C0F9 /* CXHTMLDocument.m in Sources */, FAF4584F134B18F400D4C0F9 /* CXMLDocument.m in Sources */, FAF45850134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.m in Sources */, FAF45851134B18F400D4C0F9 /* CXMLElement.m in Sources */, FAF45852134B18F400D4C0F9 /* CXMLElement_CreationExtensions.m in Sources */, FAF45853134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.m in Sources */, FAF45854134B18F400D4C0F9 /* CXMLNamespaceNode.m in Sources */, FAF45855134B18F400D4C0F9 /* CXMLNode.m in Sources */, FAF45856134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.m in Sources */, FAF45857134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m in Sources */, FAF45858134B18F400D4C0F9 /* CTidy.m in Sources */, FAF45879134B1B6C00D4C0F9 /* EPub.m in Sources */, FAA85387134F422F0035F235 /* Chapter.m in Sources */, FA307A3C1371E2B000959622 /* ChapterListViewController.m in Sources */, FA881E591372E96000FBD25F /* SearchResultsViewController.m in Sources */, FA4FBE561372F6A400C4E728 /* SearchResult.m in Sources */, FA11955A13BA921100025A2B /* UIWebView+SearchWebView.m in Sources */, FA11956013BA924400025A2B /* GTMNSString+HTML.m in Sources */, FA11956113BA924400025A2B /* NSString+HTML.m in Sources */, FA11956413BA92CD00025A2B /* EPubViewController.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ 1D6058940D05DD3E006BFB54 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)\"", ); GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = AePubReader_Prefix.pch; INFOPLIST_FILE = "AePubReader-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 3.2; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)\"", ); OTHER_LDFLAGS = ( "-lxml2", "-ObjC", "-lstdc++", ); PRODUCT_NAME = AePubReader; }; name = Debug; }; 1D6058950D05DD3E006BFB54 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; COPY_PHASE_STRIP = YES; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)\"", ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = AePubReader_Prefix.pch; INFOPLIST_FILE = "AePubReader-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 3.2; LIBRARY_SEARCH_PATHS = ( "$(inherited)", "\"$(SRCROOT)\"", ); OTHER_LDFLAGS = ( "-lxml2", "-ObjC", "-lstdc++", ); PRODUCT_NAME = AePubReader; VALIDATE_PRODUCT = YES; }; name = Release; }; C01FCF4F08A954540054247B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = /usr/include/libxml2; OTHER_LDFLAGS = "-lxml2"; PREBINDING = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = 2; }; name = Debug; }; C01FCF5008A954540054247B /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; HEADER_SEARCH_PATHS = /usr/include/libxml2; OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; OTHER_LDFLAGS = "-lxml2"; PREBINDING = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = 2; }; name = Release; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AePubReader" */ = { isa = XCConfigurationList; buildConfigurations = ( 1D6058940D05DD3E006BFB54 /* Debug */, 1D6058950D05DD3E006BFB54 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AePubReader" */ = { isa = XCConfigurationList; buildConfigurations = ( C01FCF4F08A954540054247B /* Debug */, C01FCF5008A954540054247B /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; } ================================================ FILE: AePubReader/AePubReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata ================================================ ================================================ FILE: AePubReader/AePubReader.xcodeproj/project.xcworkspace/xcuserdata/FedeX.xcuserdatad/UserInterfaceState.xcuserstate ================================================ $archiver NSKeyedArchiver $objects $null $class CF$UID 116 NS.keys CF$UID 2 CF$UID 3 CF$UID 4 CF$UID 5 CF$UID 6 CF$UID 7 CF$UID 8 CF$UID 9 CF$UID 10 CF$UID 11 CF$UID 12 CF$UID 13 CF$UID 14 CF$UID 15 CF$UID 16 CF$UID 17 CF$UID 18 CF$UID 19 CF$UID 20 CF$UID 21 CF$UID 22 CF$UID 23 NS.objects CF$UID 24 CF$UID 201 CF$UID 287 CF$UID 372 CF$UID 453 CF$UID 532 CF$UID 627 CF$UID 1552 CF$UID 1634 CF$UID 1712 CF$UID 2012 CF$UID 2092 CF$UID 2171 CF$UID 2259 CF$UID 2641 CF$UID 2718 CF$UID 2795 CF$UID 2874 CF$UID 2952 CF$UID 3028 CF$UID 3109 CF$UID 3188 2916DB77-8E56-4922-A079-E74A2AA44706 9136BC6B-CE52-4594-BCD7-DEE2ACC1E915 84A36473-5649-40AE-97D0-3F631E0177AF 2666C229-14F9-4626-8A99-95534E4DACD9 283EACD3-D2D1-4222-99FC-5602696EFD4B 3A800955-F8BD-4BD0-AF2A-7E9152A5CBC4 IDEWorkspaceDocument 2846AA22-629E-4ECE-AC3B-C2ED0AC3B27E BF8658B1-C27E-4B3F-98E7-7AF34EA0AD0C 36BA9D39-456C-4A37-BDAC-2469D71E2213 1E4F5274-CE8E-49C8-94BB-23815E1760E8 1EC1684E-FBC2-4F16-ACAD-3575A2AE2DAE 92E4610E-DF92-407D-BB13-A1FB8055DD3F 74E795D0-F5B6-4B5B-9C37-5933577E5787 795925F7-E3F8-442F-8A68-0FC2F62AA6AB 0801AC4D-2887-4BC3-9421-FA873663EDEF 864E389C-56F2-4BFC-A034-80B8A5C8A4D0 9D813ED7-B8AA-4808-BAB8-964201EA7F19 BD9A2B18-403D-46CD-9D48-E74BCDE84B1A D5EB7738-534F-4A95-82B7-F431E2422B0A AC6BF77F-D59A-4E12-8CC5-C5D1765D4045 02FC5047-DCB0-425A-8F97-A32B4B42F5CD $class CF$UID 105 NS.keys CF$UID 25 CF$UID 26 CF$UID 27 CF$UID 28 CF$UID 29 CF$UID 30 NS.objects CF$UID 31 CF$UID 33 CF$UID 34 CF$UID 27 CF$UID 200 CF$UID 2 IDEOrderedWorkspaceTabControllers IDEWindowToolbarIsVisible IDEWorkspaceTabController_C306670D-703D-4B4E-BF6B-D42AA2D88A94 IDEActiveWorkspaceTabController IDEWindowFrame IDEWorkspaceWindowControllerUniqueIdentifier $class CF$UID 32 NS.objects CF$UID 27 $classes NSArray NSObject $classname NSArray $class CF$UID 105 NS.keys CF$UID 35 CF$UID 36 CF$UID 37 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 42 NS.objects CF$UID 43 CF$UID 33 CF$UID 58 CF$UID 163 CF$UID 170 CF$UID 191 CF$UID 33 CF$UID 64 IDEEditorArea IDEShowNavigator IDETabLabel IDEWorkspaceTabControllerUtilityAreaSplitView IDENavigatorArea IDEWorkspaceTabControllerDesignAreaSplitView IDEShowUtilities AssistantEditorsLayout $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 52 CF$UID 74 CF$UID 124 CF$UID 153 CF$UID 64 CF$UID 154 CF$UID 162 CF$UID 33 layoutTree IDEEditorMode_Standard IDEEDitorArea_DebugArea IDEShowEditor EditorMode DebuggerSplitView DefaultPersistentRepresentations ShowDebuggerArea $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 53 rootLayoutTreeNode CF$UID 70 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 54 orientation 0 parent CF$UID 70 $class CF$UID 69 DocumentLocation CF$UID 65 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 56 IndexOfDocumentIdentifier CF$UID 64 Xcode.IDENavigableItemDomain.WorkspaceStructure $class CF$UID 32 NS.objects CF$UID 57 CF$UID 60 CF$UID 62 $class CF$UID 59 Identifier CF$UID 58 ChapterListViewController.xib $classes IDEArchivableStringIndexPair NSObject $classname IDEArchivableStringIndexPair $class CF$UID 59 Identifier CF$UID 61 Resources $class CF$UID 59 Identifier CF$UID 63 AePubReader 0 $class CF$UID 68 documentURL CF$UID 66 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.xib $classes NSMutableString NSString NSObject $classname NSMutableString $classes DVTDocumentLocation NSObject $classname DVTDocumentLocation $classes IDENavigableItemArchivableRepresentation NSObject $classname IDENavigableItemArchivableRepresentation $class CF$UID 72 children CF$UID 71 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 53 $classes IDEWorkspaceTabControllerLayoutTreeNode NSObject $classname IDEWorkspaceTabControllerLayoutTreeNode $classes IDEWorkspaceTabControllerLayoutTree NSObject $classname IDEWorkspaceTabControllerLayoutTree $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 76 EditorLayout_PersistentRepresentation $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 78 Main $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 82 CF$UID 64 CF$UID 122 EditorLayout_StateSavingStateDictionaries EditorLayout_Selected EditorLayout_Geometry $class CF$UID 32 NS.objects CF$UID 83 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 91 CF$UID 92 CF$UID 97 CF$UID 117 CF$UID 58 CF$UID 118 CF$UID 119 FileDataType ArchivableRepresentation EditorState NavigableItemName DocumentNavigableItemName DocumentExtensionIdentifier DocumentURL com.apple.InterfaceBuilder3.CocoaTouch.XIB $class CF$UID 69 DocumentLocation CF$UID 65 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 93 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 94 CF$UID 95 CF$UID 96 $class CF$UID 59 Identifier CF$UID 58 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 102 CF$UID 106 CF$UID 101 CF$UID 109 IBDockViewController SelectedObjectIDs SelectionProvider IBCanvasViewController $class CF$UID 105 NS.keys CF$UID 103 NS.objects CF$UID 104 LastKnownOutlineViewWidth 270 $classes NSMutableDictionary NSDictionary NSObject $classname NSMutableDictionary $class CF$UID 108 NS.objects CF$UID 107 4 $classes NSMutableArray NSArray NSObject $classname NSMutableArray $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 112 CF$UID 115 ObjectIDToLastKnownCanvasPositionMap EditedTopLevelObjectIDs $class CF$UID 105 NS.keys CF$UID 113 NS.objects CF$UID 114 1 {124, -28} $class CF$UID 108 NS.objects CF$UID 107 $classes NSDictionary NSObject $classname NSDictionary Table View Xcode.IDEKit.CocoaTouchIntegration.EditorDocument.CocoaTouch $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 120 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.xib $classes NSURL NSObject $classname NSURL $class CF$UID 32 NS.objects CF$UID 123 {{0, 0}, {600, 600}} $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 129 CF$UID 130 NS.objects CF$UID 113 CF$UID 131 CF$UID 133 CF$UID 113 CF$UID 136 CF$UID 147 LayoutFocusMode console variables LayoutMode IDEDebugArea_SplitView IDEDebuggerAreaSplitView $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 ConsoleFilterMode $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 DBGVariablesViewFilterMode 2 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 138 DVTSplitViewItems $class CF$UID 108 NS.objects CF$UID 139 CF$UID 144 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 143 DVTIdentifier DVTViewMagnitude VariablesView 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 146 ConsoleArea 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 148 $class CF$UID 108 NS.objects CF$UID 149 CF$UID 151 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 150 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 152 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 155 $class CF$UID 108 NS.objects CF$UID 156 CF$UID 159 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 158 IDEEditor 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 161 IDEDebuggerArea 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 164 $class CF$UID 108 NS.objects CF$UID 165 CF$UID 168 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 167 376 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 169 224 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 173 SelectedNavigator Xcode.IDEKit.Navigator.Structure $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 184 CF$UID 186 IDEVisibleRect IDEUnsavedDocumentFilteringEnabled IDENavigatorExpandedItemsBeforeFilteringSet IDERecentDocumentFilteringEnabled IDESCMStatusFilteringEnabled IDESelectedObjects IDEExpandedItemsSet {{0, 0}, {0, 0}} $class CF$UID 183 NS.objects $classes NSSet NSObject $classname NSSet $class CF$UID 32 NS.objects CF$UID 185 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 58 $class CF$UID 183 NS.objects CF$UID 187 CF$UID 188 CF$UID 189 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 Classes $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 192 $class CF$UID 108 NS.objects CF$UID 193 CF$UID 195 CF$UID 197 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 194 224 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 196 916 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 199 IDEUtilitiesArea 260 {{20, 254}, {600, 624}} $class CF$UID 105 NS.keys CF$UID 29 CF$UID 26 CF$UID 202 CF$UID 25 CF$UID 30 CF$UID 28 NS.objects CF$UID 203 CF$UID 33 CF$UID 204 CF$UID 286 CF$UID 3 CF$UID 202 IDEWorkspaceTabController_EF8D204A-CE21-4F04-97BB-7D8278442720 {{10, 70}, {832, 808}} $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 205 CF$UID 263 CF$UID 269 CF$UID 277 CF$UID 33 CF$UID 285 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 206 CF$UID 218 CF$UID 241 CF$UID 153 CF$UID 64 CF$UID 256 CF$UID 262 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 207 rootLayoutTreeNode CF$UID 216 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 208 orientation 0 parent CF$UID 216 $class CF$UID 69 DocumentLocation CF$UID 214 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 209 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 210 CF$UID 212 CF$UID 213 $class CF$UID 59 Identifier CF$UID 211 DetailView.xib $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 215 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib $class CF$UID 72 children CF$UID 217 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 207 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 219 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 220 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 221 CF$UID 64 CF$UID 239 $class CF$UID 32 NS.objects CF$UID 222 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 91 CF$UID 223 CF$UID 228 CF$UID 236 CF$UID 211 CF$UID 118 CF$UID 237 $class CF$UID 69 DocumentLocation CF$UID 214 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 224 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 225 CF$UID 226 CF$UID 227 $class CF$UID 59 Identifier CF$UID 211 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 229 CF$UID 230 CF$UID 101 CF$UID 232 $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects CF$UID 231 93 $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 233 CF$UID 234 $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects CF$UID 235 8 Horizontal Slider $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 238 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib $class CF$UID 32 NS.objects CF$UID 240 {{0, 0}, {832, 762}} $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 130 CF$UID 129 NS.objects CF$UID 113 CF$UID 242 CF$UID 243 CF$UID 113 CF$UID 244 CF$UID 250 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 245 $class CF$UID 108 NS.objects CF$UID 246 CF$UID 248 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 247 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 249 533 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 251 $class CF$UID 108 NS.objects CF$UID 252 CF$UID 254 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 253 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 255 533 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 257 $class CF$UID 108 NS.objects CF$UID 258 CF$UID 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 259 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 261 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 264 $class CF$UID 108 NS.objects CF$UID 265 CF$UID 267 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 266 560 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 268 224 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 270 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 271 CF$UID 273 $class CF$UID 32 NS.objects CF$UID 272 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 211 $class CF$UID 183 NS.objects CF$UID 274 CF$UID 275 CF$UID 276 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 278 $class CF$UID 108 NS.objects CF$UID 279 CF$UID 281 CF$UID 283 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 280 225 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 282 915 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 284 260 DetailView $class CF$UID 32 NS.objects CF$UID 202 $class CF$UID 105 NS.keys CF$UID 26 CF$UID 25 CF$UID 288 CF$UID 28 CF$UID 30 CF$UID 29 NS.objects CF$UID 33 CF$UID 289 CF$UID 290 CF$UID 288 CF$UID 4 CF$UID 371 IDEWorkspaceTabController_81B4B492-A96C-4963-8EC5-09C7111283D0 $class CF$UID 32 NS.objects CF$UID 288 $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 291 CF$UID 349 CF$UID 355 CF$UID 363 CF$UID 33 CF$UID 297 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 292 CF$UID 304 CF$UID 327 CF$UID 153 CF$UID 64 CF$UID 342 CF$UID 348 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 293 rootLayoutTreeNode CF$UID 302 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 294 orientation 0 parent CF$UID 302 $class CF$UID 69 DocumentLocation CF$UID 300 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 295 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 296 CF$UID 298 CF$UID 299 $class CF$UID 59 Identifier CF$UID 297 SearchWebView.js $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 301 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js $class CF$UID 72 children CF$UID 303 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 293 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 305 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 306 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 307 CF$UID 64 CF$UID 326 $class CF$UID 32 NS.objects CF$UID 308 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 309 CF$UID 310 CF$UID 315 CF$UID 297 CF$UID 297 CF$UID 323 CF$UID 324 com.apple.dashcode.javascript $class CF$UID 69 DocumentLocation CF$UID 300 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 311 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 312 CF$UID 313 CF$UID 314 $class CF$UID 59 Identifier CF$UID 297 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 320 CF$UID 321 CF$UID 33 CF$UID 322 PrimaryDocumentTimestamp PrimaryDocumentVisibleCharacterRange HideAllIssues PrimaryDocumentSelectedCharacterRange 326389596.99610698 {0, 1887} {595, 0} Xcode.IDEKit.EditorDocument.SourceCode $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 325 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 129 CF$UID 130 NS.objects CF$UID 113 CF$UID 328 CF$UID 329 CF$UID 113 CF$UID 330 CF$UID 336 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 331 $class CF$UID 108 NS.objects CF$UID 332 CF$UID 334 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 333 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 335 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 337 $class CF$UID 108 NS.objects CF$UID 338 CF$UID 340 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 339 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 341 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 343 $class CF$UID 108 NS.objects CF$UID 344 CF$UID 346 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 345 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 347 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 350 $class CF$UID 108 NS.objects CF$UID 351 CF$UID 353 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 352 398 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 354 224 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 356 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 357 CF$UID 359 $class CF$UID 32 NS.objects CF$UID 358 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 297 $class CF$UID 183 NS.objects CF$UID 360 CF$UID 361 CF$UID 362 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 364 $class CF$UID 108 NS.objects CF$UID 365 CF$UID 367 CF$UID 369 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 366 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 368 920 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 370 260 {{20, 232}, {600, 646}} $class CF$UID 105 NS.keys CF$UID 28 CF$UID 25 CF$UID 26 CF$UID 29 CF$UID 30 CF$UID 373 NS.objects CF$UID 373 CF$UID 374 CF$UID 33 CF$UID 200 CF$UID 5 CF$UID 375 IDEWorkspaceTabController_5EC9B8CD-EA93-4DC4-A085-CC2647AFF2CE $class CF$UID 32 NS.objects CF$UID 373 $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 376 CF$UID 431 CF$UID 437 CF$UID 445 CF$UID 33 CF$UID 382 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 377 CF$UID 389 CF$UID 409 CF$UID 153 CF$UID 64 CF$UID 424 CF$UID 430 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 378 rootLayoutTreeNode CF$UID 387 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 379 orientation 0 parent CF$UID 387 $class CF$UID 69 DocumentLocation CF$UID 385 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 380 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 381 CF$UID 383 CF$UID 384 $class CF$UID 59 Identifier CF$UID 382 SearchWebView.h $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 386 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchWebView.h $class CF$UID 72 children CF$UID 388 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 378 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 390 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 391 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 392 CF$UID 64 CF$UID 407 $class CF$UID 32 NS.objects CF$UID 393 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 394 CF$UID 395 CF$UID 400 CF$UID 404 CF$UID 382 CF$UID 323 CF$UID 405 public.c-header $class CF$UID 69 DocumentLocation CF$UID 385 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 396 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 397 CF$UID 398 CF$UID 399 $class CF$UID 59 Identifier CF$UID 382 $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 401 CF$UID 402 CF$UID 33 CF$UID 403 326386089.00041503 {0, 173} {36, 0} @interface UIWebView(SearchWebView) $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 406 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchWebView.h $class CF$UID 32 NS.objects CF$UID 408 {{0, 0}, {600, 578}} $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 129 CF$UID 130 NS.objects CF$UID 113 CF$UID 410 CF$UID 411 CF$UID 113 CF$UID 412 CF$UID 418 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 413 $class CF$UID 108 NS.objects CF$UID 414 CF$UID 416 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 415 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 417 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 419 $class CF$UID 108 NS.objects CF$UID 420 CF$UID 422 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 421 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 423 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 425 $class CF$UID 108 NS.objects CF$UID 426 CF$UID 428 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 427 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 429 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 432 $class CF$UID 108 NS.objects CF$UID 433 CF$UID 435 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 434 376 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 436 224 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 438 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 439 CF$UID 441 $class CF$UID 32 NS.objects CF$UID 440 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 CF$UID 382 $class CF$UID 183 NS.objects CF$UID 442 CF$UID 443 CF$UID 444 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 446 $class CF$UID 108 NS.objects CF$UID 447 CF$UID 449 CF$UID 451 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 448 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 450 920 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 452 260 $class CF$UID 105 NS.keys CF$UID 454 CF$UID 25 CF$UID 26 CF$UID 28 CF$UID 29 CF$UID 30 NS.objects CF$UID 455 CF$UID 530 CF$UID 33 CF$UID 454 CF$UID 531 CF$UID 6 IDEWorkspaceTabController_4E44448E-12EB-4E2B-B169-1D9583287B4F $class CF$UID 105 NS.keys CF$UID 35 CF$UID 36 CF$UID 37 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 42 NS.objects CF$UID 456 CF$UID 33 CF$UID 465 CF$UID 508 CF$UID 514 CF$UID 522 CF$UID 33 CF$UID 64 $class CF$UID 105 NS.keys CF$UID 51 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 44 NS.objects CF$UID 33 CF$UID 457 CF$UID 477 CF$UID 153 CF$UID 64 CF$UID 492 CF$UID 498 CF$UID 499 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 458 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 459 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 460 CF$UID 64 CF$UID 476 $class CF$UID 32 NS.objects CF$UID 461 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 394 CF$UID 462 CF$UID 470 CF$UID 465 CF$UID 465 CF$UID 323 CF$UID 474 $class CF$UID 69 DocumentLocation CF$UID 468 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 463 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 464 CF$UID 466 CF$UID 467 $class CF$UID 59 Identifier CF$UID 465 AePubReaderAppDelegate.h $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 469 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.h $class CF$UID 116 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 471 CF$UID 472 CF$UID 33 CF$UID 473 323910354.96845502 {0, 801} {0, 0} $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 475 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.h $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 130 CF$UID 128 CF$UID 129 CF$UID 127 NS.objects CF$UID 113 CF$UID 478 CF$UID 479 CF$UID 113 CF$UID 485 CF$UID 491 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 480 $class CF$UID 108 NS.objects CF$UID 481 CF$UID 483 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 482 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 484 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 486 $class CF$UID 108 NS.objects CF$UID 487 CF$UID 489 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 488 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 490 301 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 493 $class CF$UID 108 NS.objects CF$UID 494 CF$UID 496 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 495 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 497 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 500 rootLayoutTreeNode CF$UID 506 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 501 orientation 0 parent CF$UID 506 $class CF$UID 69 DocumentLocation CF$UID 468 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 502 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 503 CF$UID 504 CF$UID 505 $class CF$UID 59 Identifier CF$UID 465 $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 72 children CF$UID 507 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 500 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 509 $class CF$UID 108 NS.objects CF$UID 510 CF$UID 512 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 511 232 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 513 368 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 515 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 516 CF$UID 518 $class CF$UID 32 NS.objects CF$UID 517 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 CF$UID 465 $class CF$UID 183 NS.objects CF$UID 519 CF$UID 520 CF$UID 521 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 523 $class CF$UID 108 NS.objects CF$UID 524 CF$UID 526 CF$UID 528 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 525 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 527 1140 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 529 260 $class CF$UID 32 NS.objects CF$UID 454 {{1603, 199}, {600, 624}} $class CF$UID 105 NS.keys CF$UID 533 CF$UID 25 CF$UID 26 CF$UID 28 CF$UID 29 CF$UID 30 NS.objects CF$UID 534 CF$UID 625 CF$UID 33 CF$UID 533 CF$UID 626 CF$UID 7 IDEWorkspaceTabController_989DA917-CF50-4304-9B6A-73BD74BC6C3E $class CF$UID 105 NS.keys CF$UID 35 CF$UID 36 CF$UID 37 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 42 NS.objects CF$UID 535 CF$UID 33 CF$UID 602 CF$UID 603 CF$UID 609 CF$UID 617 CF$UID 33 CF$UID 64 $class CF$UID 105 NS.keys CF$UID 51 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 44 NS.objects CF$UID 33 CF$UID 536 CF$UID 572 CF$UID 153 CF$UID 64 CF$UID 587 CF$UID 593 CF$UID 594 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 537 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 538 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 539 CF$UID 64 CF$UID 571 $class CF$UID 32 NS.objects CF$UID 540 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 541 CF$UID 542 CF$UID 548 CF$UID 63 CF$UID 63 CF$UID 569 CF$UID 570 com.apple.xcode.project $class CF$UID 69 DocumentLocation CF$UID 546 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 543 IndexOfDocumentIdentifier CF$UID 545 $class CF$UID 32 NS.objects CF$UID 544 $class CF$UID 59 Identifier CF$UID 63 9223372036854775807 $class CF$UID 68 documentURL CF$UID 547 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj/ $class CF$UID 116 NS.keys CF$UID 549 CF$UID 550 CF$UID 551 CF$UID 552 NS.objects CF$UID 553 CF$UID 554 CF$UID 560 CF$UID 561 Xcode3ProjectEditorPreviousProjectEditorClass Xcode3ProjectEditor.sourceList.splitview Xcode3ProjectEditorPreviousTargetEditorClass Xcode3ProjectEditorSelectedDocumentLocations Xcode3ProjectInfoEditor $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 555 $class CF$UID 108 NS.objects CF$UID 556 CF$UID 558 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 557 170 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 559 450 Xcode3TargetEditor $class CF$UID 32 NS.objects CF$UID 562 $class CF$UID 568 documentURL CF$UID 563 selection CF$UID 565 timestamp CF$UID 564 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj/ 323910351.61847901 $class CF$UID 105 NS.keys CF$UID 566 CF$UID 567 NS.objects CF$UID 63 CF$UID 553 Project Editor $classes Xcode3ProjectDocumentLocation DVTDocumentLocation NSObject $classname Xcode3ProjectDocumentLocation Xcode.Xcode3ProjectSupport.EditorDocument.Xcode3Project $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 563 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 130 CF$UID 128 CF$UID 129 CF$UID 127 NS.objects CF$UID 113 CF$UID 573 CF$UID 574 CF$UID 113 CF$UID 580 CF$UID 586 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 575 $class CF$UID 108 NS.objects CF$UID 576 CF$UID 578 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 577 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 579 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 581 $class CF$UID 108 NS.objects CF$UID 582 CF$UID 584 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 583 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 585 301 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 588 $class CF$UID 108 NS.objects CF$UID 589 CF$UID 591 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 590 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 592 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 595 rootLayoutTreeNode CF$UID 600 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 596 orientation 0 parent CF$UID 600 $class CF$UID 69 DocumentLocation CF$UID 546 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 597 IndexOfDocumentIdentifier CF$UID 599 $class CF$UID 32 NS.objects CF$UID 598 $class CF$UID 59 Identifier CF$UID 63 9223372036854775807 $class CF$UID 72 children CF$UID 601 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 595 AePubReader.xcodeproj $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 604 $class CF$UID 108 NS.objects CF$UID 605 CF$UID 607 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 606 232 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 608 368 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 610 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 611 CF$UID 613 $class CF$UID 32 NS.objects CF$UID 612 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 183 NS.objects CF$UID 614 CF$UID 615 CF$UID 616 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 618 $class CF$UID 108 NS.objects CF$UID 619 CF$UID 621 CF$UID 623 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 620 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 622 1140 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 624 260 $class CF$UID 32 NS.objects CF$UID 533 {{1582, 222}, {600, 624}} $class CF$UID 105 NS.keys CF$UID 628 CF$UID 629 CF$UID 630 CF$UID 631 CF$UID 632 CF$UID 633 CF$UID 634 CF$UID 635 CF$UID 636 CF$UID 637 CF$UID 638 NS.objects CF$UID 153 CF$UID 639 CF$UID 64 CF$UID 1446 CF$UID 1451 CF$UID 1454 CF$UID 1484 CF$UID 1485 CF$UID 1532 CF$UID 33 CF$UID 33 BreakpointsActivated DefaultEditorStatesForURLs DebuggingWindowBehavior ActiveRunDestination ActiveScheme LastCompletedPersistentSchemeBasedActivityReport DocumentWindows DefaultEditorFrameSizeForURLs RecentEditorDocumentURLs AppFocusInMiniDebugging MiniDebuggingConsole $class CF$UID 105 NS.keys CF$UID 640 CF$UID 641 CF$UID 642 CF$UID 643 CF$UID 118 CF$UID 644 CF$UID 323 CF$UID 645 CF$UID 569 CF$UID 646 NS.objects CF$UID 647 CF$UID 664 CF$UID 723 CF$UID 734 CF$UID 739 CF$UID 828 CF$UID 858 CF$UID 1285 CF$UID 1290 CF$UID 1388 Xcode.IDEKit.EditorDocument.DebuggerLogDocument IDEQuickLookEditor.Editor Xcode.IDEKit.EditorDocument.PlistEditor Xcode.IDEKit.EditorDocument.SourceCode-from-Xcode3Project Xcode.IDEKit.EditorDocument.SourceCodeComparisonEditor Xcode.IDEKit.EditorDocument.QuickLookComparisonEditor Xcode.IDEKit.EditorDocument.LogDocument $class CF$UID 105 NS.keys CF$UID 648 CF$UID 650 CF$UID 652 CF$UID 654 NS.objects CF$UID 656 CF$UID 659 CF$UID 661 CF$UID 663 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 649 x-xcode-log://05358A75-A0B3-4C3B-87C2-9206EF188FF1 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 651 x-xcode-log://C13DE095-D218-44A0-BFFB-272F99A02619 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 653 x-xcode-log://36E3D388-9D1F-477E-93FF-75E535E6D81C $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 655 x-xcode-log://97820E31-22E5-4730-A67B-9825E5B579B6 $class CF$UID 105 NS.keys CF$UID 657 NS.objects CF$UID 658 DBGConsoleLogEditorScrollRange {0, 3020} $class CF$UID 105 NS.keys CF$UID 657 NS.objects CF$UID 660 {0, 566} $class CF$UID 105 NS.keys CF$UID 657 NS.objects CF$UID 662 {0, 2740} $class CF$UID 105 NS.keys CF$UID 657 NS.objects CF$UID 660 $class CF$UID 105 NS.keys CF$UID 665 CF$UID 667 CF$UID 669 CF$UID 671 CF$UID 673 CF$UID 675 CF$UID 677 CF$UID 679 NS.objects CF$UID 681 CF$UID 688 CF$UID 693 CF$UID 698 CF$UID 703 CF$UID 708 CF$UID 713 CF$UID 718 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 666 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/yellowslide.png $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 668 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/slider_ball.png $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 670 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/mining.epub $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 672 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/orangeslide.png $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 674 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/vhugo.epub $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 676 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/hugo.epub $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 678 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/shak.epub $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 680 $class CF$UID 67 NS.string file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/libsqlite3.dylib $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 683 SelectedDocumentLocations $class CF$UID 32 NS.objects CF$UID 684 $class CF$UID 687 IDEQuickLookPageNumber CF$UID 64 documentURL CF$UID 685 timestamp CF$UID 686 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/yellowslide.png 326306798.90969598 $classes IDEQuickLookDocumentLocation DVTDocumentLocation NSObject $classname IDEQuickLookDocumentLocation $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 689 $class CF$UID 32 NS.objects CF$UID 690 $class CF$UID 687 IDEQuickLookPageNumber CF$UID 64 documentURL CF$UID 691 timestamp CF$UID 692 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/slider_ball.png 326385416.62035698 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 694 $class CF$UID 32 NS.objects CF$UID 695 $class CF$UID 687 IDEQuickLookPageNumber CF$UID 64 documentURL CF$UID 696 timestamp CF$UID 697 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/mining.epub 326326809.97582799 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 699 $class CF$UID 32 NS.objects CF$UID 700 $class CF$UID 687 IDEQuickLookPageNumber CF$UID 64 documentURL CF$UID 701 timestamp CF$UID 702 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/orangeslide.png 326649159.31639999 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 704 $class CF$UID 32 NS.objects CF$UID 705 $class CF$UID 687 IDEQuickLookPageNumber CF$UID 64 documentURL CF$UID 706 timestamp CF$UID 707 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/vhugo.epub 326326812.77815598 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 709 $class CF$UID 32 NS.objects CF$UID 710 $class CF$UID 687 IDEQuickLookPageNumber CF$UID 64 documentURL CF$UID 711 timestamp CF$UID 712 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/hugo.epub 325693009.88674802 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 714 $class CF$UID 32 NS.objects CF$UID 715 $class CF$UID 687 IDEQuickLookPageNumber CF$UID 64 documentURL CF$UID 716 timestamp CF$UID 717 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/shak.epub 326649153.96313 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 719 $class CF$UID 32 NS.objects CF$UID 720 $class CF$UID 687 IDEQuickLookPageNumber CF$UID 64 documentURL CF$UID 721 timestamp CF$UID 722 file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/libsqlite3.dylib 326280652.35165799 $class CF$UID 105 NS.keys CF$UID 724 NS.objects CF$UID 726 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 725 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader-Info.plist $class CF$UID 105 NS.keys CF$UID 727 CF$UID 728 CF$UID 729 NS.objects CF$UID 730 CF$UID 731 CF$UID 732 IDE_PLIST_EDITOR_SELECTION_KEY IDE_PLIST_EDITOR_VISIBLERECT_KEY IDE_PLIST_EDITOR_EXPANSION_KEY $class CF$UID 32 NS.objects {{0, 0}, {916, 486}} $class CF$UID 733 NS.objects $classes NSMutableSet NSSet NSObject $classname NSMutableSet $class CF$UID 105 NS.keys CF$UID 735 NS.objects CF$UID 737 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 736 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj/project.pbxproj $class CF$UID 105 NS.keys CF$UID 319 CF$UID 316 CF$UID 317 NS.objects CF$UID 473 CF$UID 738 CF$UID 473 323910088.77252901 $class CF$UID 105 NS.keys CF$UID 740 CF$UID 742 CF$UID 744 CF$UID 746 CF$UID 748 CF$UID 750 CF$UID 752 CF$UID 754 NS.objects CF$UID 756 CF$UID 763 CF$UID 779 CF$UID 785 CF$UID 791 CF$UID 803 CF$UID 809 CF$UID 819 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 741 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/ChapterListViewController.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 743 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubView.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 745 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 747 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 749 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/MainWindow.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 751 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultViewController.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 753 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchResultCell.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 755 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultsViewController.xib $class CF$UID 105 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 757 CF$UID 759 CF$UID 101 CF$UID 760 $class CF$UID 105 NS.keys CF$UID 103 NS.objects CF$UID 758 270 $class CF$UID 108 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 761 CF$UID 762 $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 764 CF$UID 765 CF$UID 766 CF$UID 767 NS.objects CF$UID 768 CF$UID 771 CF$UID 773 CF$UID 774 IBDockViewController SelectedObjectIDs SelectionProvider IBCanvasViewController $class CF$UID 105 NS.keys CF$UID 769 NS.objects CF$UID 770 LastKnownOutlineViewWidth 270 $class CF$UID 108 NS.objects CF$UID 772 -1 IBStructureViewController $class CF$UID 105 NS.keys CF$UID 775 CF$UID 776 NS.objects CF$UID 777 CF$UID 778 ObjectIDToLastKnownCanvasPositionMap EditedTopLevelObjectIDs $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects CF$UID 235 $class CF$UID 105 NS.keys CF$UID 764 CF$UID 765 CF$UID 766 CF$UID 767 NS.objects CF$UID 780 CF$UID 782 CF$UID 767 CF$UID 783 $class CF$UID 105 NS.keys CF$UID 769 NS.objects CF$UID 781 270 $class CF$UID 108 NS.objects CF$UID 107 $class CF$UID 105 NS.keys CF$UID 775 CF$UID 776 NS.objects CF$UID 112 CF$UID 784 $class CF$UID 108 NS.objects CF$UID 107 $class CF$UID 105 NS.keys CF$UID 764 CF$UID 765 CF$UID 766 CF$UID 767 NS.objects CF$UID 786 CF$UID 788 CF$UID 767 CF$UID 789 $class CF$UID 105 NS.keys CF$UID 769 NS.objects CF$UID 787 270 $class CF$UID 108 NS.objects CF$UID 235 $class CF$UID 105 NS.keys CF$UID 775 CF$UID 776 NS.objects CF$UID 233 CF$UID 790 $class CF$UID 108 NS.objects CF$UID 235 $class CF$UID 105 NS.keys CF$UID 764 CF$UID 765 CF$UID 766 CF$UID 767 NS.objects CF$UID 792 CF$UID 794 CF$UID 773 CF$UID 796 $class CF$UID 105 NS.keys CF$UID 769 NS.objects CF$UID 793 270 $class CF$UID 108 NS.objects CF$UID 795 50 $class CF$UID 105 NS.keys CF$UID 775 CF$UID 776 NS.objects CF$UID 797 CF$UID 801 $class CF$UID 105 NS.keys CF$UID 135 CF$UID 798 NS.objects CF$UID 799 CF$UID 800 50 {-134, -135} {-60, -210} $class CF$UID 108 NS.objects CF$UID 802 CF$UID 135 50 $class CF$UID 105 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 804 CF$UID 805 CF$UID 101 CF$UID 806 $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects CF$UID 107 $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 807 CF$UID 808 $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects CF$UID 107 $class CF$UID 105 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 810 CF$UID 812 CF$UID 814 CF$UID 815 $class CF$UID 105 NS.keys CF$UID 103 NS.objects CF$UID 811 270 $class CF$UID 108 NS.objects CF$UID 107 CF$UID 813 5 IBStructureViewController $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 816 CF$UID 817 $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects CF$UID 818 3 $class CF$UID 105 NS.keys CF$UID 764 CF$UID 765 CF$UID 766 CF$UID 767 NS.objects CF$UID 820 CF$UID 822 CF$UID 773 CF$UID 823 $class CF$UID 105 NS.keys CF$UID 769 NS.objects CF$UID 821 270 $class CF$UID 108 NS.objects CF$UID 113 $class CF$UID 105 NS.keys CF$UID 775 CF$UID 776 NS.objects CF$UID 824 CF$UID 827 $class CF$UID 105 NS.keys CF$UID 113 CF$UID 235 NS.objects CF$UID 825 CF$UID 826 {71, 97} {501, 369} $class CF$UID 108 NS.objects CF$UID 113 $class CF$UID 105 NS.keys CF$UID 829 CF$UID 735 CF$UID 831 CF$UID 833 CF$UID 835 CF$UID 837 NS.objects CF$UID 839 CF$UID 842 CF$UID 845 CF$UID 848 CF$UID 851 CF$UID 855 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 830 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Chapter.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 832 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 834 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/RootViewController.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 836 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultsViewController.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 838 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.h $class CF$UID 105 NS.keys CF$UID 319 CF$UID 317 CF$UID 316 NS.objects CF$UID 473 CF$UID 840 CF$UID 841 {0, 1019} 324236254.45765197 $class CF$UID 105 NS.keys CF$UID 319 CF$UID 317 CF$UID 316 NS.objects CF$UID 473 CF$UID 843 CF$UID 844 {224, 2139} 323910150.37661302 $class CF$UID 105 NS.keys CF$UID 319 CF$UID 317 CF$UID 316 NS.objects CF$UID 473 CF$UID 846 CF$UID 847 {0, 513} 326220021.54131103 $class CF$UID 105 NS.keys CF$UID 319 CF$UID 317 CF$UID 316 NS.objects CF$UID 473 CF$UID 849 CF$UID 850 {3298, 979} 323963631.647192 $class CF$UID 105 NS.keys CF$UID 319 CF$UID 317 CF$UID 316 NS.objects CF$UID 852 CF$UID 853 CF$UID 854 {579, 9} {0, 603} 326298516.906501 $class CF$UID 105 NS.keys CF$UID 319 CF$UID 317 CF$UID 316 NS.objects CF$UID 473 CF$UID 856 CF$UID 857 {786, 1391} 324232431.67370999 $class CF$UID 105 NS.keys CF$UID 859 CF$UID 861 CF$UID 863 CF$UID 865 CF$UID 867 CF$UID 869 CF$UID 871 CF$UID 873 CF$UID 875 CF$UID 877 CF$UID 879 CF$UID 881 CF$UID 883 CF$UID 885 CF$UID 887 CF$UID 837 CF$UID 889 CF$UID 891 CF$UID 893 CF$UID 895 CF$UID 897 CF$UID 899 CF$UID 901 CF$UID 903 CF$UID 835 CF$UID 905 CF$UID 907 CF$UID 909 CF$UID 911 CF$UID 913 CF$UID 915 CF$UID 917 CF$UID 919 CF$UID 921 CF$UID 923 CF$UID 925 CF$UID 927 CF$UID 929 CF$UID 931 CF$UID 933 CF$UID 935 CF$UID 937 CF$UID 939 CF$UID 941 CF$UID 943 CF$UID 945 CF$UID 947 CF$UID 949 CF$UID 951 CF$UID 953 CF$UID 955 CF$UID 957 CF$UID 959 CF$UID 961 CF$UID 833 CF$UID 963 CF$UID 965 CF$UID 967 CF$UID 969 CF$UID 971 CF$UID 973 CF$UID 975 CF$UID 829 CF$UID 977 CF$UID 979 CF$UID 981 CF$UID 983 CF$UID 985 CF$UID 987 CF$UID 989 CF$UID 991 CF$UID 993 CF$UID 995 CF$UID 997 CF$UID 999 CF$UID 1001 CF$UID 1003 CF$UID 1005 CF$UID 1007 CF$UID 1009 CF$UID 1011 NS.objects CF$UID 1013 CF$UID 1016 CF$UID 1019 CF$UID 1022 CF$UID 1025 CF$UID 1029 CF$UID 1033 CF$UID 1037 CF$UID 1043 CF$UID 1046 CF$UID 1049 CF$UID 1052 CF$UID 1055 CF$UID 1063 CF$UID 1066 CF$UID 1070 CF$UID 1074 CF$UID 1077 CF$UID 1080 CF$UID 1084 CF$UID 1087 CF$UID 1090 CF$UID 1094 CF$UID 1096 CF$UID 1100 CF$UID 1104 CF$UID 1107 CF$UID 1110 CF$UID 1113 CF$UID 1117 CF$UID 1119 CF$UID 1123 CF$UID 1126 CF$UID 1130 CF$UID 1133 CF$UID 1137 CF$UID 1141 CF$UID 1144 CF$UID 1148 CF$UID 1152 CF$UID 1155 CF$UID 1158 CF$UID 1161 CF$UID 1164 CF$UID 1167 CF$UID 1171 CF$UID 1174 CF$UID 1176 CF$UID 1180 CF$UID 1184 CF$UID 1188 CF$UID 1191 CF$UID 1194 CF$UID 1199 CF$UID 1202 CF$UID 1206 CF$UID 1209 CF$UID 1212 CF$UID 1215 CF$UID 1218 CF$UID 1221 CF$UID 1223 CF$UID 1226 CF$UID 1230 CF$UID 1233 CF$UID 1236 CF$UID 1239 CF$UID 1242 CF$UID 1245 CF$UID 1248 CF$UID 1252 CF$UID 1256 CF$UID 1258 CF$UID 1261 CF$UID 1264 CF$UID 1267 CF$UID 1270 CF$UID 1273 CF$UID 1276 CF$UID 1279 CF$UID 1282 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 860 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/CDataChunk.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 862 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/oldsqlite3_compat.c $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 864 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Element.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 866 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/objc_msgSend_disassembly_0x01099098.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 868 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 870 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/GTMNSString+HTML.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 872 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/Tidy/CTidy.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 874 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 876 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/ChapterListViewController.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 878 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/Tidy/CTidy.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 880 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLDocument.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 882 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterProtocol.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 884 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 886 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/UIWebView+Highlight.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 888 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResult.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 890 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode_PrivateExtensions.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 892 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXHTMLDocument.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 894 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResult.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 896 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/RRFTS3ExtensionLoader.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 898 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/URLParser.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 900 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchWebView.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 902 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Downloads/sqlite-fts3-extension-2.0/RRFTS3ExtensionLoader.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 904 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultsViewController.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 906 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode_XPathExtensions.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 908 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/read$UNIX2003_disassembly_0x986f93fe.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 910 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode_PrivateExtensions.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 912 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchWebView.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 914 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/UIWebView+Highlight.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 916 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPub.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 918 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXHTMLDocument.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 920 $class CF$UID 67 NS.string file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 922 $class CF$UID 67 NS.string file://localhost/Users/FedeX/ElementParser/Classes/CSSSelectorMatcher.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 924 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Chapter.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 926 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/minizip/unzip.c $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 928 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/NSString_HTML.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 930 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 932 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubViewController.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 934 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/RootViewController.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 936 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ElementParser.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 938 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/__workq_kernreturn_disassembly_0x987139b2.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 940 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/_NSURLConnectionDidReceiveData_disassembly_0x001b1835.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 942 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 944 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ZipArchive.mm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 946 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/RRFTS3ExtensionLoader.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 948 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Downloads/sqlite-fts3-extension-2.0/RRFTS3ExtensionLoader.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 950 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultCell.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 952 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 954 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/ChapterListViewController.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 956 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/-%5BNSURLCache%20initWithExistingSharedCFURLCache:%5D_disassembly_0x0026a78a.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 958 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/UIApplicationMain_disassembly_0x0041ec93.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 960 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultViewController.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 962 $class CF$UID 67 NS.string file://localhost/Users/FedeX/ElementParser/Classes/CSSSelector.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 964 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/oldsqlite3_compat.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 966 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/kevent_disassembly_0x98714922.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 968 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/URLParser.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 970 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultViewController.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 972 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ElementParser.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 974 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/UIApplicationMain_disassembly_0x0041fc93.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 976 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader_Prefix.pch $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 978 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/HTMLParser.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 980 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/GTMNSString+HTML.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 982 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode_XPathExtensions.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 984 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 986 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/CSSSelector.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 988 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPub.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 990 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultCell.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 992 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubViewController.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 994 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/objc_msgSend_disassembly_0x0109a09b.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 996 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Element.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 998 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/CFEqual_disassembly_0x00e2cd80.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1000 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/objc_setProperty_non_gc_disassembly_0x01083dba.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1002 $class CF$UID 67 NS.string file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/objc_msgSend_disassembly_0x0109e09b.nasm $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1004 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/CSSSelectorMatcher.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1006 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterProtocol.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1008 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/TouchXML.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1010 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/main.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1012 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode.h $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1014 CF$UID 1015 CF$UID 33 CF$UID 473 326908430.71185899 {0, 1061} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1017 CF$UID 1018 CF$UID 33 CF$UID 473 326280902.64561403 {0, 1756} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1020 CF$UID 1021 CF$UID 33 CF$UID 473 326321919.46735501 {0, 2128} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1023 CF$UID 1024 CF$UID 33 CF$UID 473 326321814.80774897 {0, 2004} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1026 CF$UID 1027 CF$UID 33 CF$UID 1028 326647656.03100401 {617, 1805} {1974, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1030 CF$UID 1031 CF$UID 33 CF$UID 1032 326645357.04611403 {0, 1094} {688, 10} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1034 CF$UID 1035 CF$UID 33 CF$UID 1036 326306770.57094002 {605, 1285} {1366, 0} $class CF$UID 105 NS.keys CF$UID 1038 CF$UID 316 CF$UID 318 CF$UID 317 CF$UID 319 NS.objects CF$UID 1039 CF$UID 1040 CF$UID 33 CF$UID 1041 CF$UID 1042 CodeFolds $class CF$UID 67 NS.string { c = ( { l = DetailViewController; r = "{4445, 24}"; s = 1; }, { l = DetailViewController; r = "{4496, 24}"; s = 1; }, { l = "Nib name"; r = "{4546, 12}"; s = 1; } ); r = "{0, 4920}"; s = 0; } 326908435.15870601 {1457, 1025} {2379, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1044 CF$UID 1045 CF$UID 33 CF$UID 473 326222896.56628501 {0, 768} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1047 CF$UID 1048 CF$UID 33 CF$UID 473 326305497.66323602 {0, 1347} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1050 CF$UID 1051 CF$UID 33 CF$UID 473 326305491.25383902 {0, 1432} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1053 CF$UID 1054 CF$UID 33 CF$UID 473 323968394.720617 {0, 240} $class CF$UID 105 NS.keys CF$UID 1056 CF$UID 1057 CF$UID 1058 CF$UID 1059 NS.objects CF$UID 1060 CF$UID 1061 CF$UID 33 CF$UID 1062 PrimaryDocumentTimestamp PrimaryDocumentVisibleCharacterRange HideAllIssues PrimaryDocumentSelectedCharacterRange 330994646.07511503 {0, 513} {483, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1064 CF$UID 1065 CF$UID 33 CF$UID 473 326382617.89477998 {0, 243} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1067 CF$UID 1068 CF$UID 33 CF$UID 1069 326647658.47997802 {0, 827} {728, 0} $class CF$UID 105 NS.keys CF$UID 1056 CF$UID 1057 CF$UID 1058 CF$UID 1059 NS.objects CF$UID 1071 CF$UID 1072 CF$UID 33 CF$UID 1073 330994325.99601001 {0, 763} {299, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1075 CF$UID 1076 CF$UID 33 CF$UID 473 326305772.62737602 {0, 1567} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1078 CF$UID 1079 CF$UID 33 CF$UID 473 326305771.63682598 {0, 1577} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1081 CF$UID 1082 CF$UID 33 CF$UID 1083 326645364.23642403 {0, 671} {471, 18} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1085 CF$UID 1086 CF$UID 33 CF$UID 473 326280744.45126998 {0, 274} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1088 CF$UID 1089 CF$UID 33 CF$UID 473 326321791.71086401 {1841, 2446} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1091 CF$UID 1092 CF$UID 33 CF$UID 1093 326645455.83700401 {0, 865} {633, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1095 CF$UID 1086 CF$UID 33 CF$UID 473 326281149.27626199 $class CF$UID 105 NS.keys CF$UID 1056 CF$UID 1057 CF$UID 1058 CF$UID 1059 NS.objects CF$UID 1097 CF$UID 1098 CF$UID 33 CF$UID 1099 330994729.84948498 {5413, 2389} {7426, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1101 CF$UID 1102 CF$UID 33 CF$UID 1103 326648752.944543 {53, 1268} {460, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1105 CF$UID 1106 CF$UID 33 CF$UID 473 326305773.11666799 {0, 1532} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1108 CF$UID 1109 CF$UID 33 CF$UID 473 326321680.999327 {0, 387} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1111 CF$UID 1112 CF$UID 33 CF$UID 473 326305772.87428099 {0, 1538} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1114 CF$UID 1115 CF$UID 33 CF$UID 1116 326647659.61284 {0, 176} {34, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1118 CF$UID 1054 CF$UID 33 CF$UID 473 326382617.85956198 $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1120 CF$UID 1121 CF$UID 33 CF$UID 1122 326385433.46156299 {140, 649} {4426, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1124 CF$UID 1125 CF$UID 33 CF$UID 473 326305770.73017502 {24, 1545} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1127 CF$UID 1128 CF$UID 33 CF$UID 1129 326327684.03656501 {8944, 1937} {10501, 77} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1131 CF$UID 1132 CF$UID 33 CF$UID 473 326307290.32014 {0, 1289} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1134 CF$UID 1135 CF$UID 33 CF$UID 1136 326627527.34786397 {1969, 1330} {3141, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1138 CF$UID 1139 CF$UID 33 CF$UID 1140 323910374.69534498 {48667, 1221} {49247, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1142 CF$UID 1143 CF$UID 33 CF$UID 473 326321821.19554102 {13976, 2277} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1145 CF$UID 1146 CF$UID 33 CF$UID 1147 326648832.82147598 {0, 942} {606, 0} $class CF$UID 105 NS.keys CF$UID 1056 CF$UID 1057 CF$UID 1058 CF$UID 1059 NS.objects CF$UID 1149 CF$UID 1150 CF$UID 33 CF$UID 1151 330994641.57964098 {514, 1576} {1460, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1153 CF$UID 1154 CF$UID 33 CF$UID 473 326219238.643264 {0, 405} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1156 CF$UID 1157 CF$UID 33 CF$UID 473 326320814.702654 {0, 1566} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1159 CF$UID 1160 CF$UID 33 CF$UID 473 326321792.99167502 {0, 456} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1162 CF$UID 1163 CF$UID 33 CF$UID 473 326321814.558393 {0, 2455} $class CF$UID 105 NS.keys CF$UID 1056 CF$UID 1057 CF$UID 1058 CF$UID 1059 NS.objects CF$UID 1165 CF$UID 1166 CF$UID 33 CF$UID 473 330994788.332901 {0, 796} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1168 CF$UID 1169 CF$UID 33 CF$UID 1170 326381123.00514197 {4039, 1122} {4940, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1172 CF$UID 1173 CF$UID 33 CF$UID 473 326280744.57300699 {0, 601} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1175 CF$UID 1173 CF$UID 33 CF$UID 473 326281139.08533502 $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1177 CF$UID 1178 CF$UID 33 CF$UID 1179 326624215.84716702 {0, 717} {263, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1181 CF$UID 1182 CF$UID 33 CF$UID 1183 326908677.65724999 {0, 408} {327, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1185 CF$UID 1186 CF$UID 33 CF$UID 1187 326222982.02420002 {0, 258} {249, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1189 CF$UID 1190 CF$UID 33 CF$UID 473 326321681.226246 {0, 2493} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1192 CF$UID 1193 CF$UID 33 CF$UID 473 326321797.235322 {774, 2448} $class CF$UID 105 NS.keys CF$UID 1038 CF$UID 316 CF$UID 318 CF$UID 317 CF$UID 319 NS.objects CF$UID 1195 CF$UID 1196 CF$UID 33 CF$UID 1197 CF$UID 1198 $class CF$UID 67 NS.string { c = ( { l = DetailViewController; r = "{4159, 24}"; s = 1; }, { l = DetailViewController; r = "{4210, 24}"; s = 1; }, { l = "Nib name"; r = "{4260, 12}"; s = 1; } ); r = "{0, 4500}"; s = 0; } 326296931.097691 {0, 703} {246, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1200 CF$UID 1201 CF$UID 33 CF$UID 473 326307290.26786101 {0, 1253} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1203 CF$UID 1204 CF$UID 33 CF$UID 1205 326219238.93791503 {3826, 934} {4094, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1207 CF$UID 1208 CF$UID 33 CF$UID 473 326280744.29490697 {0, 237} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1210 CF$UID 1211 CF$UID 33 CF$UID 473 326321792.77827197 {0, 342} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1213 CF$UID 1214 CF$UID 33 CF$UID 473 326320852.245915 {0, 1754} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1216 CF$UID 1217 CF$UID 33 CF$UID 473 326296930.55030501 {0, 265} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1219 CF$UID 1220 CF$UID 33 CF$UID 473 326321821.57881898 {5532, 2591} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1222 CF$UID 1193 CF$UID 33 CF$UID 473 326325130.38256699 $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1224 CF$UID 1225 CF$UID 33 CF$UID 473 326407901.37959498 {0, 328} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1227 CF$UID 1228 CF$UID 33 CF$UID 1229 326624214.78815401 {0, 1136} {942, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1231 CF$UID 1232 CF$UID 33 CF$UID 473 326305020.94233602 {1504, 937} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1234 CF$UID 1235 CF$UID 33 CF$UID 473 326645357.18054801 {0, 1294} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1237 CF$UID 1238 CF$UID 33 CF$UID 473 326305774.09890598 {1322, 1251} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1240 CF$UID 1241 CF$UID 33 CF$UID 473 326305772.33734101 {0, 1481} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1243 CF$UID 1244 CF$UID 33 CF$UID 473 326322825.22246599 {0, 1643} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1246 CF$UID 1247 CF$UID 33 CF$UID 473 326648217.54613501 {36, 742} $class CF$UID 105 NS.keys CF$UID 1056 CF$UID 1057 CF$UID 1058 CF$UID 1059 NS.objects CF$UID 1249 CF$UID 1250 CF$UID 33 CF$UID 1251 330994181.13915402 {0, 380} {373, 0} $class CF$UID 105 NS.keys CF$UID 1056 CF$UID 1057 CF$UID 1058 CF$UID 1059 NS.objects CF$UID 1253 CF$UID 1254 CF$UID 33 CF$UID 1255 330994645.195669 {0, 1242} {441, 0} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1257 CF$UID 1024 CF$UID 33 CF$UID 473 326325130.14443702 $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1259 CF$UID 1260 CF$UID 33 CF$UID 473 326320810.24024802 {0, 1668} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1262 CF$UID 1263 CF$UID 33 CF$UID 473 325692615.28632402 {1564, 1871} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1265 CF$UID 1266 CF$UID 33 CF$UID 473 326321814.96283001 {0, 2499} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1268 CF$UID 1269 CF$UID 33 CF$UID 473 326645449.25927198 {0, 1390} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1271 CF$UID 1272 CF$UID 33 CF$UID 473 326320790.94390398 {0, 1700} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1274 CF$UID 1275 CF$UID 33 CF$UID 473 323961378.65326899 {0, 219} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1277 CF$UID 1278 CF$UID 33 CF$UID 473 326305783.78507102 {0, 1523} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1280 CF$UID 1281 CF$UID 33 CF$UID 473 326627680.77136397 {0, 369} $class CF$UID 105 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1283 CF$UID 1284 CF$UID 33 CF$UID 473 326305772.09035301 {0, 1496} $class CF$UID 105 NS.keys CF$UID 669 NS.objects CF$UID 1286 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 1287 $class CF$UID 32 NS.objects CF$UID 1288 $class CF$UID 687 IDEQuickLookPageNumber CF$UID 64 documentURL CF$UID 696 timestamp CF$UID 1289 324236355.67969197 $class CF$UID 105 NS.keys CF$UID 1291 CF$UID 1293 CF$UID 1295 CF$UID 1297 NS.objects CF$UID 1299 CF$UID 1327 CF$UID 1341 CF$UID 1373 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1292 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj/ $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1294 $class CF$UID 67 NS.string file://localhost/Users/FedeX/ElementParser/ElementParser.xcodeproj $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1296 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Downloads/sqlite-fts3-extension-2.0/sqlite-fts3-extension.xcodeproj $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1298 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/sqlite-fts3-extension.xcodeproj $class CF$UID 105 NS.keys CF$UID 1300 CF$UID 1301 CF$UID 1302 CF$UID 1303 CF$UID 1304 NS.objects CF$UID 1305 CF$UID 1306 CF$UID 1316 CF$UID 1317 CF$UID 1326 Xcode3ProjectEditorPreviousProjectEditorClass Xcode3ProjectEditor.sourceList.splitview Xcode3ProjectEditorPreviousTargetEditorClass Xcode3ProjectEditorSelectedDocumentLocations Xcode3ProjectEditor_Xcode3TargetEditor Xcode3BuildSettingsEditor $class CF$UID 105 NS.keys CF$UID 1307 NS.objects CF$UID 1308 DVTSplitViewItems $class CF$UID 108 NS.objects CF$UID 1309 CF$UID 1314 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 1312 CF$UID 1313 DVTIdentifier DVTViewMagnitude 170 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 1312 CF$UID 1315 750 Xcode3TargetEditor $class CF$UID 32 NS.objects CF$UID 1318 $class CF$UID 568 documentURL CF$UID 1319 selection CF$UID 1321 timestamp CF$UID 1320 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj/ 330994794.29663998 $class CF$UID 105 NS.keys CF$UID 1322 CF$UID 1323 NS.objects CF$UID 1324 CF$UID 1325 Editor Target Xcode3TargetEditor AePubReader $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 549 CF$UID 550 CF$UID 551 CF$UID 552 NS.objects CF$UID 553 CF$UID 1328 CF$UID 1334 CF$UID 1335 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1329 $class CF$UID 108 NS.objects CF$UID 1330 CF$UID 1332 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1331 170 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1333 710 Xcode3BuildSettingsEditor $class CF$UID 32 NS.objects CF$UID 1336 $class CF$UID 568 documentURL CF$UID 1337 selection CF$UID 1339 timestamp CF$UID 1338 file://localhost/Users/FedeX/ElementParser/ElementParser.xcodeproj/ 326307231.60411298 $class CF$UID 105 NS.keys CF$UID 566 CF$UID 567 NS.objects CF$UID 1340 CF$UID 553 ElementParser $class CF$UID 105 NS.keys CF$UID 549 CF$UID 550 CF$UID 551 CF$UID 552 CF$UID 1342 NS.objects CF$UID 1334 CF$UID 1343 CF$UID 1349 CF$UID 1350 CF$UID 1360 Xcode3ProjectEditor_Xcode3BuildPhasesEditor $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1344 $class CF$UID 108 NS.objects CF$UID 1345 CF$UID 1347 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1346 170 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1348 746 Xcode3BuildPhasesEditor $class CF$UID 32 NS.objects CF$UID 1351 $class CF$UID 568 documentURL CF$UID 1352 selection CF$UID 1354 timestamp CF$UID 1353 file://localhost/Users/FedeX/Downloads/sqlite-fts3-extension-2.0/sqlite-fts3-extension.xcodeproj/ 326281144.57011998 $class CF$UID 105 NS.keys CF$UID 567 CF$UID 1355 CF$UID 1356 NS.objects CF$UID 1349 CF$UID 1357 CF$UID 1358 Target Xcode3BuildPhasesEditorLocations sqlite-3.6.23.1-fts3-ext $class CF$UID 32 NS.objects CF$UID 1359 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 1361 CF$UID 1362 CF$UID 1363 CF$UID 1364 CF$UID 1365 CF$UID 1366 CF$UID 1367 NS.objects CF$UID 166 CF$UID 1368 CF$UID 1369 CF$UID 1370 CF$UID 1371 CF$UID 1372 CF$UID 473 Xcode3BuildPhasesEditorFilterKey 342BCD8511D922620069D2C2 342BCD8311D922620069D2C2 Xcode3BuildPhasesEditorDisclosedNamesKey 342BCD8411D922620069D2C2 342BCD8611D922620069D2C2 kXcode3BuildPhasesEditorScrollPointKey $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 549 CF$UID 1374 CF$UID 551 CF$UID 552 CF$UID 550 NS.objects CF$UID 553 CF$UID 1375 CF$UID 1376 CF$UID 1377 CF$UID 1382 Xcode3ProjectEditor_Xcode3BuildRulesEditor $class CF$UID 105 NS.keys NS.objects Xcode3BuildRulesEditor $class CF$UID 32 NS.objects CF$UID 1378 $class CF$UID 568 documentURL CF$UID 1379 selection CF$UID 1381 timestamp CF$UID 1380 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/sqlite-fts3-extension.xcodeproj/ 326280818.03611201 $class CF$UID 105 NS.keys CF$UID 567 CF$UID 1355 NS.objects CF$UID 1376 CF$UID 1357 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1383 $class CF$UID 108 NS.objects CF$UID 1384 CF$UID 1386 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1385 170 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1387 746 $class CF$UID 105 NS.keys CF$UID 1389 CF$UID 1391 CF$UID 1393 CF$UID 1395 CF$UID 1397 CF$UID 1399 CF$UID 1401 CF$UID 1403 CF$UID 1405 CF$UID 1407 CF$UID 1409 CF$UID 1411 NS.objects CF$UID 1413 CF$UID 1414 CF$UID 1422 CF$UID 1423 CF$UID 1428 CF$UID 1429 CF$UID 1432 CF$UID 1433 CF$UID 1434 CF$UID 1435 CF$UID 1440 CF$UID 1443 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1390 x-xcode-log://DEA7C0C8-7FA8-4325-852B-64B4C1A0637A $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1392 x-xcode-log://D73CB91A-A6D7-4F3F-B10C-87BE4355F136 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1394 x-xcode-log://41753FF8-5E62-4D25-8A9C-B25420DB3E7B $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1396 x-xcode-log://F8DBCA58-BE63-436A-9547-0A439A10465C $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1398 x-xcode-log://5396EC27-7EF5-4A6A-BD74-9ED585324ABC $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1400 x-xcode-log://F2890061-0D3F-4B8B-A371-A5D47D87B5C0 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1402 x-xcode-log://C2107091-1500-4225-ABF0-0408469E7400 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1404 x-xcode-log://114CCE52-13AF-40BC-BA29-AFBABD057264 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1406 x-xcode-log://2080DF2A-44EC-4D54-A346-436BCA9B0166 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1408 x-xcode-log://26C2F4E0-0995-4A9E-BC96-C0F9C48836D2 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1410 x-xcode-log://4A766C2F-9A7E-4848-BAAB-6F1FB6B7C4D1 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1412 x-xcode-log://FE53E7E1-8546-4D71-9871-1623DAD87241 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 730 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 1415 $class CF$UID 32 NS.objects CF$UID 1416 $class CF$UID 1421 documentURL CF$UID 1392 expandTranscript indexPath CF$UID 1417 timestamp CF$UID 0 $class CF$UID 1420 NSIndexPathData CF$UID 1418 NSIndexPathLength 2 $class CF$UID 1419 NS.data ADo= $classes NSMutableData NSData NSObject $classname NSMutableData $classes NSIndexPath NSObject $classname NSIndexPath $classes IDELogDocumentLocation DVTDocumentLocation NSObject $classname IDELogDocumentLocation $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 730 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 1424 $class CF$UID 32 NS.objects CF$UID 1425 $class CF$UID 1421 documentURL CF$UID 1396 expandTranscript indexPath CF$UID 1426 timestamp CF$UID 0 $class CF$UID 1420 NSIndexPathData CF$UID 1427 NSIndexPathLength 2 $class CF$UID 1419 NS.data AAA= $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 730 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 1430 $class CF$UID 32 NS.objects CF$UID 1431 $class CF$UID 1421 documentURL CF$UID 1400 expandTranscript indexPath CF$UID 1426 timestamp CF$UID 0 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 730 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 730 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 730 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 1436 $class CF$UID 32 NS.objects CF$UID 1437 $class CF$UID 1421 documentURL CF$UID 1408 expandTranscript indexPath CF$UID 1438 timestamp CF$UID 0 $class CF$UID 1420 NSIndexPathData CF$UID 1439 NSIndexPathLength 2 $class CF$UID 1419 NS.data AC4= $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 1441 $class CF$UID 32 NS.objects CF$UID 1442 $class CF$UID 1421 documentURL CF$UID 1410 expandTranscript indexPath CF$UID 1417 timestamp CF$UID 0 $class CF$UID 105 NS.keys CF$UID 682 NS.objects CF$UID 1444 $class CF$UID 32 NS.objects CF$UID 1445 $class CF$UID 1421 documentURL CF$UID 1412 expandTranscript indexPath CF$UID 1438 timestamp CF$UID 0 $class CF$UID 105 NS.keys CF$UID 1447 CF$UID 1448 NS.objects CF$UID 1449 CF$UID 1450 IDEDeviceLocation IDEDeviceArchitecture dvtdevice-iphonesimulator:/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk-iPad i386 $class CF$UID 105 NS.keys CF$UID 1452 NS.objects CF$UID 1453 IDENameString AePubReader $class CF$UID 105 NS.keys CF$UID 1455 CF$UID 1456 CF$UID 1457 NS.objects CF$UID 1458 CF$UID 1483 CF$UID 1325 IDEActivityReportCompletionSummaryStringSegments IDEActivityReportOptions IDEActivityReportTitle $class CF$UID 108 NS.objects CF$UID 1459 CF$UID 1466 CF$UID 1470 CF$UID 1474 $class CF$UID 105 NS.keys CF$UID 1460 CF$UID 1461 CF$UID 1462 NS.objects CF$UID 1463 CF$UID 1464 CF$UID 1465 IDEActivityReportStringSegmentPriority IDEActivityReportStringSegmentBackSeparator IDEActivityReportStringSegmentStringValue 2 Build $class CF$UID 105 NS.keys CF$UID 1460 CF$UID 1461 CF$UID 1462 NS.objects CF$UID 1467 CF$UID 1468 CF$UID 1469 4 : AePubReader $class CF$UID 105 NS.keys CF$UID 1460 CF$UID 1461 CF$UID 1462 NS.objects CF$UID 1471 CF$UID 1472 CF$UID 1473 1 $class CF$UID 1419 NS.data YnBsaXN0MDDUAQIDBAUGOzxYJHZlcnNpb25YJG9iamVjdHNZJGFy Y2hpdmVyVCR0b3ASAAGGoK0HCA8QGhscJCUrMTQ3VSRudWxs0wkK CwwNDlxOU0F0dHJpYnV0ZXNWJGNsYXNzWE5TU3RyaW5ngAOADIAC WVN1Y2NlZWRlZNMKERITFBdXTlMua2V5c1pOUy5vYmplY3RzgAui FRaABIAFohgZgAaACVZOU0ZvbnRXTlNDb2xvctQKHR4fICEiI1ZO U05hbWVWTlNTaXplWE5TZkZsYWdzgAiAByNAJgAAAAAAABENEF8Q EUx1Y2lkYUdyYW5kZS1Cb2xk0iYnKClaJGNsYXNzbmFtZVgkY2xh c3Nlc1ZOU0ZvbnSiKCpYTlNPYmplY3TTCiwtLi8wXE5TQ29sb3JT cGFjZVdOU1doaXRlgAoQA0IwANImJzIzV05TQ29sb3KiMirSJic1 NlxOU0RpY3Rpb25hcnmiNSrSJic4OV8QEk5TQXR0cmlidXRlZFN0 cmluZ6I6Kl8QEk5TQXR0cmlidXRlZFN0cmluZ18QD05TS2V5ZWRB cmNoaXZlctE9PlRyb290gAEACAARABoAIwAtADIANwBFAEsAUgBf AGYAbwBxAHMAdQB/AIYAjgCZAJsAngCgAKIApQCnAKkAsAC4AMEA yADPANgA2gDcAOUA6AD8AQEBDAEVARwBHwEoAS8BPAFEAUYBSAFL AVABWAFbAWABbQFwAXUBigGNAaIBtAG3AbwAAAAAAAACAQAAAAAA AAA/AAAAAAAAAAAAAAAAAAABvg== $class CF$UID 105 NS.keys CF$UID 1460 CF$UID 1475 CF$UID 1476 CF$UID 1462 CF$UID 1477 CF$UID 1478 NS.objects CF$UID 1479 CF$UID 113 CF$UID 1480 CF$UID 1482 CF$UID 113 CF$UID 113 IDEActivityReportStringSegmentType IDEActivityReportStringSegmentDate IDEActivityReportStringSegmentDateStyle IDEActivityReportStringSegmentTimeStyle 3 $class CF$UID 1481 NS.time 330994813.74293 $classes NSDate NSObject $classname NSDate Today at 01.00 106 $class CF$UID 108 NS.objects CF$UID 15 $class CF$UID 105 NS.keys CF$UID 1486 CF$UID 1487 CF$UID 1489 CF$UID 1491 CF$UID 1492 CF$UID 1493 CF$UID 1495 CF$UID 1497 CF$UID 1498 CF$UID 1499 NS.objects CF$UID 1500 CF$UID 1505 CF$UID 1508 CF$UID 1511 CF$UID 1514 CF$UID 1517 CF$UID 1520 CF$UID 1523 CF$UID 1526 CF$UID 1529 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 120 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1488 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Chapter.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1490 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1379 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 563 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1494 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1496 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/MainWindow.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 406 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 325 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 475 $class CF$UID 116 NS.keys CF$UID 1501 CF$UID 1502 NS.objects CF$UID 1503 CF$UID 1504 width height 600 600 $class CF$UID 116 NS.keys CF$UID 1501 CF$UID 1502 NS.objects CF$UID 1506 CF$UID 1507 600 600 $class CF$UID 116 NS.keys CF$UID 1501 CF$UID 1502 NS.objects CF$UID 1509 CF$UID 1510 600 600 $class CF$UID 116 NS.keys CF$UID 1501 CF$UID 1502 NS.objects CF$UID 1512 CF$UID 1513 600 600 $class CF$UID 116 NS.keys CF$UID 1501 CF$UID 1502 NS.objects CF$UID 1515 CF$UID 1516 600 600 $class CF$UID 116 NS.keys CF$UID 1501 CF$UID 1502 NS.objects CF$UID 1518 CF$UID 1519 832 784 $class CF$UID 116 NS.keys CF$UID 1501 CF$UID 1502 NS.objects CF$UID 1521 CF$UID 1522 600 600 $class CF$UID 116 NS.keys CF$UID 1501 CF$UID 1502 NS.objects CF$UID 1524 CF$UID 1525 600 578 $class CF$UID 116 NS.keys CF$UID 1501 CF$UID 1502 NS.objects CF$UID 1527 CF$UID 1528 600 600 $class CF$UID 116 NS.keys CF$UID 1501 CF$UID 1502 NS.objects CF$UID 1530 CF$UID 1531 600 600 $class CF$UID 108 NS.objects CF$UID 1533 CF$UID 1535 CF$UID 1536 CF$UID 1538 CF$UID 1540 CF$UID 1542 CF$UID 1544 CF$UID 1546 CF$UID 1548 CF$UID 1550 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1534 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/MainWindow.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1319 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1537 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1539 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubView.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1541 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultsViewController.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1543 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultsViewController.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1545 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.xib $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1547 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.h $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1549 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubViewController.m $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1551 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubViewController.h $class CF$UID 105 NS.keys CF$UID 1553 CF$UID 25 CF$UID 26 CF$UID 29 CF$UID 28 CF$UID 30 NS.objects CF$UID 1554 CF$UID 1632 CF$UID 33 CF$UID 1633 CF$UID 1553 CF$UID 9 IDEWorkspaceTabController_97519CC1-5356-4471-8587-F3F9B91EC839 $class CF$UID 105 NS.keys CF$UID 35 CF$UID 36 CF$UID 37 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 42 NS.objects CF$UID 1555 CF$UID 33 CF$UID 285 CF$UID 1610 CF$UID 1616 CF$UID 1624 CF$UID 33 CF$UID 64 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 1556 CF$UID 1567 CF$UID 1588 CF$UID 153 CF$UID 64 CF$UID 1603 CF$UID 1609 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 1557 rootLayoutTreeNode CF$UID 1565 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 1558 orientation 0 parent CF$UID 1565 $class CF$UID 69 DocumentLocation CF$UID 1563 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 1559 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 1560 CF$UID 1561 CF$UID 1562 $class CF$UID 59 Identifier CF$UID 211 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 1564 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib $class CF$UID 72 children CF$UID 1566 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 1557 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 1568 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 1569 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 1570 CF$UID 64 CF$UID 1586 $class CF$UID 32 NS.objects CF$UID 1571 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 91 CF$UID 1572 CF$UID 1577 CF$UID 1584 CF$UID 211 CF$UID 118 CF$UID 1585 $class CF$UID 69 DocumentLocation CF$UID 1563 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 1573 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 1574 CF$UID 1575 CF$UID 1576 $class CF$UID 59 Identifier CF$UID 211 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 1578 CF$UID 1580 CF$UID 101 CF$UID 1582 $class CF$UID 105 NS.keys CF$UID 103 NS.objects CF$UID 1579 270 $class CF$UID 108 NS.objects CF$UID 1581 124 $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 233 CF$UID 1583 $class CF$UID 108 NS.objects Search Bar $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 238 $class CF$UID 32 NS.objects CF$UID 1587 {{0, 0}, {832, 784}} $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 130 CF$UID 129 NS.objects CF$UID 113 CF$UID 1589 CF$UID 1590 CF$UID 113 CF$UID 1591 CF$UID 1597 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1592 $class CF$UID 108 NS.objects CF$UID 1593 CF$UID 1595 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 1594 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 1596 533 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1598 $class CF$UID 108 NS.objects CF$UID 1599 CF$UID 1601 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 1600 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 1602 533 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1604 $class CF$UID 108 NS.objects CF$UID 1605 CF$UID 1607 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 1606 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 1608 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1611 $class CF$UID 108 NS.objects CF$UID 1612 CF$UID 1614 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1613 560 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1615 224 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 1617 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 1618 CF$UID 1620 $class CF$UID 32 NS.objects CF$UID 1619 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 211 $class CF$UID 183 NS.objects CF$UID 1621 CF$UID 1622 CF$UID 1623 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1625 $class CF$UID 108 NS.objects CF$UID 1626 CF$UID 1628 CF$UID 1630 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 1627 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 1629 1180 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 1631 260 $class CF$UID 32 NS.objects CF$UID 1553 {{360, 70}, {832, 808}} $class CF$UID 105 NS.keys CF$UID 29 CF$UID 26 CF$UID 25 CF$UID 1635 CF$UID 28 CF$UID 30 NS.objects CF$UID 1636 CF$UID 33 CF$UID 1637 CF$UID 1638 CF$UID 1635 CF$UID 10 IDEWorkspaceTabController_9C9ACCB2-683B-44D1-8A2D-26DCFEC51FE5 {{1624, 254}, {600, 624}} $class CF$UID 32 NS.objects CF$UID 1635 $class CF$UID 105 NS.keys CF$UID 35 CF$UID 36 CF$UID 37 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 42 NS.objects CF$UID 1639 CF$UID 33 CF$UID 1649 CF$UID 1691 CF$UID 1697 CF$UID 1704 CF$UID 33 CF$UID 64 $class CF$UID 105 NS.keys CF$UID 51 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 44 NS.objects CF$UID 33 CF$UID 1640 CF$UID 1660 CF$UID 153 CF$UID 64 CF$UID 1675 CF$UID 1681 CF$UID 1682 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 1641 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 1642 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 1643 CF$UID 64 CF$UID 1659 $class CF$UID 32 NS.objects CF$UID 1644 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 1645 CF$UID 1646 CF$UID 1654 CF$UID 1649 CF$UID 1649 CF$UID 323 CF$UID 1658 public.objective-c-source $class CF$UID 69 DocumentLocation CF$UID 1652 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 1647 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 1648 CF$UID 1650 CF$UID 1651 $class CF$UID 59 Identifier CF$UID 1649 Chapter.m $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 1653 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Chapter.m $class CF$UID 116 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 1655 CF$UID 1656 CF$UID 33 CF$UID 1657 326320583.452537 {0, 1472} {163, 0} $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1488 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 130 CF$UID 128 CF$UID 129 CF$UID 127 NS.objects CF$UID 113 CF$UID 1661 CF$UID 1662 CF$UID 113 CF$UID 1668 CF$UID 1674 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1663 $class CF$UID 108 NS.objects CF$UID 1664 CF$UID 1666 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 1665 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 1667 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1669 $class CF$UID 108 NS.objects CF$UID 1670 CF$UID 1672 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 1671 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 1673 301 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1676 $class CF$UID 108 NS.objects CF$UID 1677 CF$UID 1679 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 1678 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 1680 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 1683 rootLayoutTreeNode CF$UID 1689 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 1684 orientation 0 parent CF$UID 1689 $class CF$UID 69 DocumentLocation CF$UID 1652 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 1685 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 1686 CF$UID 1687 CF$UID 1688 $class CF$UID 59 Identifier CF$UID 1649 $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 72 children CF$UID 1690 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 1683 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1692 $class CF$UID 108 NS.objects CF$UID 1693 CF$UID 1695 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1694 232 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1696 368 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 1698 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 1699 CF$UID 1701 $class CF$UID 32 NS.objects CF$UID 1700 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 CF$UID 1649 $class CF$UID 183 NS.objects CF$UID 1702 CF$UID 1703 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1705 $class CF$UID 108 NS.objects CF$UID 1706 CF$UID 1708 CF$UID 1710 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 1707 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 1709 880 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 1711 260 $class CF$UID 105 NS.keys CF$UID 1713 CF$UID 25 CF$UID 26 CF$UID 28 CF$UID 29 CF$UID 30 NS.objects CF$UID 1714 CF$UID 2011 CF$UID 33 CF$UID 1713 CF$UID 200 CF$UID 11 IDEWorkspaceTabController_A2BDB5D8-7500-406C-A80D-698B5E86BF8D $class CF$UID 105 NS.keys CF$UID 37 CF$UID 36 CF$UID 42 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 35 NS.objects CF$UID 1715 CF$UID 33 CF$UID 64 CF$UID 1716 CF$UID 1722 CF$UID 1732 CF$UID 33 CF$UID 1740 sqlite-fts3-extension.xcodeproj $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1717 $class CF$UID 108 NS.objects CF$UID 1718 CF$UID 1720 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1719 376 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1721 224 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 1723 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 1724 CF$UID 1727 $class CF$UID 32 NS.objects CF$UID 1725 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 1726 CF$UID 1715 sqlite-fts3-extension-2.0 $class CF$UID 183 NS.objects CF$UID 1728 CF$UID 1729 CF$UID 1730 CF$UID 1731 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 1726 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1733 $class CF$UID 108 NS.objects CF$UID 1734 CF$UID 1736 CF$UID 1738 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 1735 224 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 1737 916 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 1739 260 $class CF$UID 105 NS.keys CF$UID 51 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 44 NS.objects CF$UID 33 CF$UID 1741 CF$UID 1979 CF$UID 153 CF$UID 64 CF$UID 1994 CF$UID 2000 CF$UID 2001 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 1742 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 1743 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 1744 CF$UID 64 CF$UID 1978 $class CF$UID 32 NS.objects CF$UID 1745 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 541 CF$UID 1746 CF$UID 1754 CF$UID 1715 CF$UID 1715 CF$UID 569 CF$UID 1977 $class CF$UID 69 DocumentLocation CF$UID 1752 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 1747 IndexOfDocumentIdentifier CF$UID 1751 $class CF$UID 32 NS.objects CF$UID 1748 CF$UID 1749 CF$UID 1750 $class CF$UID 59 Identifier CF$UID 1715 $class CF$UID 59 Identifier CF$UID 1726 $class CF$UID 59 Identifier CF$UID 63 9223372036854775807 $class CF$UID 68 documentURL CF$UID 1753 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/sqlite-fts3-extension.xcodeproj/ $class CF$UID 116 NS.keys CF$UID 549 CF$UID 1374 CF$UID 551 CF$UID 552 CF$UID 1755 CF$UID 550 NS.objects CF$UID 553 CF$UID 1756 CF$UID 1334 CF$UID 1757 CF$UID 1970 CF$UID 1971 Xcode3ProjectEditor_Xcode3BuildSettingsEditor $class CF$UID 105 NS.keys NS.objects $class CF$UID 32 NS.objects CF$UID 1758 $class CF$UID 568 documentURL CF$UID 1379 selection CF$UID 1760 timestamp CF$UID 1759 326280754.58657598 $class CF$UID 105 NS.keys CF$UID 567 CF$UID 1355 CF$UID 1761 NS.objects CF$UID 1334 CF$UID 1357 CF$UID 1762 Xcode3BuildSettingsEditorLocations $class CF$UID 32 NS.objects CF$UID 1763 $class CF$UID 105 NS.keys CF$UID 1764 CF$UID 1765 CF$UID 1766 CF$UID 1767 CF$UID 1768 CF$UID 1769 NS.objects CF$UID 113 CF$UID 1770 CF$UID 64 CF$UID 64 CF$UID 1771 CF$UID 64 Xcode3BuildPropertyNameDisplayMode Selected Build Properties Xcode3BuildSettingsEditorDisplayMode Xcode3BuildPropertyValueDisplayMode Collapsed Build Property Categories Xcode3BuildSettingsEditorMode $class CF$UID 108 NS.objects $class CF$UID 108 NS.objects CF$UID 1772 CF$UID 1773 CF$UID 1774 CF$UID 1775 CF$UID 1776 CF$UID 1777 CF$UID 1778 CF$UID 1779 CF$UID 1780 CF$UID 1781 CF$UID 1782 CF$UID 1783 CF$UID 1784 CF$UID 1785 CF$UID 1786 CF$UID 1787 CF$UID 1788 CF$UID 1789 CF$UID 1790 CF$UID 1791 CF$UID 1792 CF$UID 1793 CF$UID 1794 CF$UID 1795 CF$UID 1796 CF$UID 1797 CF$UID 1798 CF$UID 1799 CF$UID 1800 CF$UID 1801 CF$UID 1802 CF$UID 1803 CF$UID 1804 CF$UID 1805 CF$UID 1806 CF$UID 1807 CF$UID 1808 CF$UID 1809 CF$UID 1810 CF$UID 1811 CF$UID 1812 CF$UID 1813 CF$UID 1814 CF$UID 1815 CF$UID 1816 CF$UID 1817 CF$UID 1818 CF$UID 1819 CF$UID 1820 CF$UID 1821 CF$UID 1822 CF$UID 1823 CF$UID 1824 CF$UID 1825 CF$UID 1826 CF$UID 1827 CF$UID 1828 CF$UID 1829 CF$UID 1830 CF$UID 1831 CF$UID 1832 CF$UID 1833 CF$UID 1834 CF$UID 1835 CF$UID 1836 CF$UID 1837 CF$UID 1838 CF$UID 1839 CF$UID 1840 CF$UID 1841 CF$UID 1842 CF$UID 1843 CF$UID 1844 CF$UID 1845 CF$UID 1846 CF$UID 1847 CF$UID 1848 CF$UID 1849 CF$UID 1850 CF$UID 1851 CF$UID 1852 CF$UID 1853 CF$UID 1854 CF$UID 1855 CF$UID 1856 CF$UID 1857 CF$UID 1858 CF$UID 1859 CF$UID 1860 CF$UID 1861 CF$UID 1862 CF$UID 1863 CF$UID 1864 CF$UID 1865 CF$UID 1866 CF$UID 1867 CF$UID 1868 CF$UID 1869 CF$UID 1870 CF$UID 1871 CF$UID 1872 CF$UID 1873 CF$UID 1874 CF$UID 1875 CF$UID 1876 CF$UID 1877 CF$UID 1878 CF$UID 1879 CF$UID 1880 CF$UID 1881 CF$UID 1882 CF$UID 1883 CF$UID 1884 CF$UID 1885 CF$UID 1886 CF$UID 1887 CF$UID 1888 CF$UID 1889 CF$UID 1890 CF$UID 1891 CF$UID 1892 CF$UID 1893 CF$UID 1894 CF$UID 1895 CF$UID 1896 CF$UID 1897 CF$UID 1898 CF$UID 1899 CF$UID 1900 CF$UID 1901 CF$UID 1902 CF$UID 1903 CF$UID 1904 CF$UID 1905 CF$UID 1906 CF$UID 1907 CF$UID 1908 CF$UID 1909 CF$UID 1910 CF$UID 1911 CF$UID 1912 CF$UID 1913 CF$UID 1914 CF$UID 1915 CF$UID 1916 CF$UID 1917 CF$UID 1918 CF$UID 1919 CF$UID 1920 CF$UID 1921 CF$UID 1922 CF$UID 1923 CF$UID 1924 CF$UID 1925 CF$UID 1926 CF$UID 1927 CF$UID 1928 CF$UID 1929 CF$UID 1930 CF$UID 1931 CF$UID 1932 CF$UID 1933 CF$UID 1934 CF$UID 1935 CF$UID 1936 CF$UID 1937 CF$UID 1938 CF$UID 1939 CF$UID 1940 CF$UID 1941 CF$UID 1942 CF$UID 1943 CF$UID 1944 CF$UID 1945 CF$UID 1946 CF$UID 1947 CF$UID 1948 CF$UID 1949 CF$UID 1950 CF$UID 1951 CF$UID 1952 CF$UID 1953 CF$UID 1954 CF$UID 1955 CF$UID 1956 CF$UID 1957 CF$UID 1958 CF$UID 1959 CF$UID 1960 CF$UID 1961 CF$UID 1962 CF$UID 1963 CF$UID 1964 CF$UID 1965 CF$UID 1966 CF$UID 1967 CF$UID 1968 CF$UID 1969 $class CF$UID 67 NS.string Architectures||ADDITIONAL_SDKS $class CF$UID 67 NS.string Architectures||ARCHS $class CF$UID 67 NS.string Architectures||SDKROOT $class CF$UID 67 NS.string Architectures||ONLY_ACTIVE_ARCH $class CF$UID 67 NS.string Architectures||SUPPORTED_PLATFORMS $class CF$UID 67 NS.string Architectures||VALID_ARCHS $class CF$UID 67 NS.string Build Locations||SYMROOT $class CF$UID 67 NS.string Build Locations||OBJROOT $class CF$UID 67 NS.string Build Locations||SHARED_PRECOMPS_DIR $class CF$UID 67 NS.string Build Options||BUILD_VARIANTS $class CF$UID 67 NS.string Build Options||DEBUG_INFORMATION_FORMAT $class CF$UID 67 NS.string Build Options||ENABLE_OPENMP_SUPPORT $class CF$UID 67 NS.string Build Options||GENERATE_PROFILING_CODE $class CF$UID 67 NS.string Build Options||PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR $class CF$UID 67 NS.string Build Options||RUN_CLANG_STATIC_ANALYZER $class CF$UID 67 NS.string Build Options||SCAN_ALL_SOURCE_FILES_FOR_INCLUDES $class CF$UID 67 NS.string Build Options||VALIDATE_PRODUCT $class CF$UID 67 NS.string Code Signing||CODE_SIGN_ENTITLEMENTS $class CF$UID 67 NS.string Code Signing||CODE_SIGN_IDENTITY $class CF$UID 67 NS.string Code Signing||CODE_SIGN_RESOURCE_RULES_PATH $class CF$UID 67 NS.string Code Signing||OTHER_CODE_SIGN_FLAGS $class CF$UID 67 NS.string Compiler Version||GCC_VERSION $class CF$UID 67 NS.string Deployment||STRIPFLAGS $class CF$UID 67 NS.string Deployment||ALTERNATE_GROUP $class CF$UID 67 NS.string Deployment||ALTERNATE_OWNER $class CF$UID 67 NS.string Deployment||ALTERNATE_MODE $class CF$UID 67 NS.string Deployment||ALTERNATE_PERMISSIONS_FILES $class CF$UID 67 NS.string Deployment||COMBINE_HIDPI_IMAGES $class CF$UID 67 NS.string Deployment||DEPLOYMENT_LOCATION $class CF$UID 67 NS.string Deployment||DEPLOYMENT_POSTPROCESSING $class CF$UID 67 NS.string Deployment||INSTALL_GROUP $class CF$UID 67 NS.string Deployment||INSTALL_OWNER $class CF$UID 67 NS.string Deployment||INSTALL_MODE_FLAG $class CF$UID 67 NS.string Deployment||DSTROOT $class CF$UID 67 NS.string Deployment||INSTALL_PATH $class CF$UID 67 NS.string Deployment||MACOSX_DEPLOYMENT_TARGET $class CF$UID 67 NS.string Deployment||SKIP_INSTALL $class CF$UID 67 NS.string Deployment||STRIP_INSTALLED_PRODUCT $class CF$UID 67 NS.string Deployment||STRIP_STYLE $class CF$UID 67 NS.string Deployment||TARGETED_DEVICE_FAMILY $class CF$UID 67 NS.string Deployment||SEPARATE_STRIP $class CF$UID 67 NS.string Deployment||IPHONEOS_DEPLOYMENT_TARGET $class CF$UID 67 NS.string Kernel Module||MODULE_NAME $class CF$UID 67 NS.string Kernel Module||MODULE_START $class CF$UID 67 NS.string Kernel Module||MODULE_STOP $class CF$UID 67 NS.string Kernel Module||MODULE_VERSION $class CF$UID 67 NS.string Linking||BUNDLE_LOADER $class CF$UID 67 NS.string Linking||STANDARD_C_PLUS_PLUS_LIBRARY_TYPE $class CF$UID 67 NS.string Linking||DYLIB_COMPATIBILITY_VERSION $class CF$UID 67 NS.string Linking||DYLIB_CURRENT_VERSION $class CF$UID 67 NS.string Linking||DEAD_CODE_STRIPPING $class CF$UID 67 NS.string Linking||LINKER_DISPLAYS_MANGLED_NAMES $class CF$UID 67 NS.string Linking||LD_NO_PIE $class CF$UID 67 NS.string Linking||PRESERVE_DEAD_CODE_INITS_AND_TERMS $class CF$UID 67 NS.string Linking||LD_DYLIB_INSTALL_NAME $class CF$UID 67 NS.string Linking||EXPORTED_SYMBOLS_FILE $class CF$UID 67 NS.string Linking||INIT_ROUTINE $class CF$UID 67 NS.string Linking||LINK_WITH_STANDARD_LIBRARIES $class CF$UID 67 NS.string Linking||MACH_O_TYPE $class CF$UID 67 NS.string Linking||LD_OPENMP_FLAGS $class CF$UID 67 NS.string Linking||ORDER_FILE $class CF$UID 67 NS.string Linking||OTHER_LDFLAGS $class CF$UID 67 NS.string Linking||GENERATE_MASTER_OBJECT_FILE $class CF$UID 67 NS.string Linking||PRELINK_LIBS $class CF$UID 67 NS.string Linking||KEEP_PRIVATE_EXTERNS $class CF$UID 67 NS.string Linking||LD_RUNPATH_SEARCH_PATHS $class CF$UID 67 NS.string Linking||SEPARATE_SYMBOL_EDIT $class CF$UID 67 NS.string Linking||PRELINK_FLAGS $class CF$UID 67 NS.string Linking||SECTORDER_FLAGS $class CF$UID 67 NS.string Linking||UNEXPORTED_SYMBOLS_FILE $class CF$UID 67 NS.string Linking||WARNING_LDFLAGS $class CF$UID 67 NS.string Linking||LD_GENERATE_MAP_FILE $class CF$UID 67 NS.string Packaging||COMPRESS_PNG_FILES $class CF$UID 67 NS.string Packaging||APPLY_RULES_IN_COPY_FILES $class CF$UID 67 NS.string Packaging||EXECUTABLE_EXTENSION $class CF$UID 67 NS.string Packaging||EXECUTABLE_PREFIX $class CF$UID 67 NS.string Packaging||INFOPLIST_EXPAND_BUILD_SETTINGS $class CF$UID 67 NS.string Packaging||GENERATE_PKGINFO_FILE $class CF$UID 67 NS.string Packaging||FRAMEWORK_VERSION $class CF$UID 67 NS.string Packaging||INFOPLIST_FILE $class CF$UID 67 NS.string Packaging||INFOPLIST_OTHER_PREPROCESSOR_FLAGS $class CF$UID 67 NS.string Packaging||INFOPLIST_OUTPUT_FORMAT $class CF$UID 67 NS.string Packaging||INFOPLIST_PREPROCESSOR_DEFINITIONS $class CF$UID 67 NS.string Packaging||INFOPLIST_PREFIX_HEADER $class CF$UID 67 NS.string Packaging||INFOPLIST_PREPROCESS $class CF$UID 67 NS.string Packaging||COPYING_PRESERVES_HFS_DATA $class CF$UID 67 NS.string Packaging||PRIVATE_HEADERS_FOLDER_PATH $class CF$UID 67 NS.string Packaging||PRODUCT_NAME $class CF$UID 67 NS.string Packaging||PLIST_FILE_OUTPUT_FORMAT $class CF$UID 67 NS.string Packaging||PUBLIC_HEADERS_FOLDER_PATH $class CF$UID 67 NS.string Packaging||STRINGS_FILE_OUTPUT_ENCODING $class CF$UID 67 NS.string Packaging||WRAPPER_EXTENSION $class CF$UID 67 NS.string Search Paths||ALWAYS_SEARCH_USER_PATHS $class CF$UID 67 NS.string Search Paths||FRAMEWORK_SEARCH_PATHS $class CF$UID 67 NS.string Search Paths||HEADER_SEARCH_PATHS $class CF$UID 67 NS.string Search Paths||LIBRARY_SEARCH_PATHS $class CF$UID 67 NS.string Search Paths||REZ_SEARCH_PATHS $class CF$UID 67 NS.string Search Paths||EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES $class CF$UID 67 NS.string Search Paths||INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES $class CF$UID 67 NS.string Search Paths||USER_HEADER_SEARCH_PATHS $class CF$UID 67 NS.string Unit Testing||OTHER_TEST_FLAGS $class CF$UID 67 NS.string Unit Testing||TEST_AFTER_BUILD $class CF$UID 67 NS.string Unit Testing||TEST_HOST $class CF$UID 67 NS.string Unit Testing||TEST_RIG $class CF$UID 67 NS.string Versioning||CURRENT_PROJECT_VERSION $class CF$UID 67 NS.string Versioning||VERSION_INFO_FILE $class CF$UID 67 NS.string Versioning||VERSION_INFO_EXPORT_DECL $class CF$UID 67 NS.string Versioning||VERSION_INFO_PREFIX $class CF$UID 67 NS.string Versioning||VERSION_INFO_SUFFIX $class CF$UID 67 NS.string Versioning||VERSIONING_SYSTEM $class CF$UID 67 NS.string Versioning||VERSION_INFO_BUILDER $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_FAST_OBJC_DISPATCH $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_OBJC_CALL_CXX_CDTORS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_THUMB_SUPPORT $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_ENABLE_SSE3_EXTENSIONS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_ENABLE_SSE41_EXTENSIONS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_ENABLE_SSE42_EXTENSIONS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_STRICT_ALIASING $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_FEEDBACK_DIRECTED_OPTIMIZATION $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_GENERATE_DEBUGGING_SYMBOLS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_DYNAMIC_NO_PIC $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_GENERATE_TEST_COVERAGE_FILES $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_INLINES_ARE_PRIVATE_EXTERN $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_INSTRUMENT_PROGRAM_FLOW_ARCS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_ENABLE_KERNEL_DEVELOPMENT $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_DEBUGGING_SYMBOLS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_REUSE_STRINGS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_NO_COMMON_BLOCKS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_ENABLE_OBJC_GC $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_FAST_MATH $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_ENABLE_SYMBOL_SEPARATION $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_THREADSAFE_STATICS $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_SYMBOLS_PRIVATE_EXTERN $class CF$UID 67 NS.string GCC 4.2 - Code Generation||GCC_UNROLL_LOOPS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_CHAR_IS_UNSIGNED_CHAR $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_ENABLE_ASM_KEYWORD $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_C_LANGUAGE_STANDARD $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_CHECK_RETURN_VALUE_OF_OPERATOR_NEW $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_CW_ASM_SYNTAX $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_INPUT_FILETYPE $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_ENABLE_CPP_EXCEPTIONS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_ENABLE_CPP_RTTI $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_LINK_WITH_DYNAMIC_LIBRARIES $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_ENABLE_OBJC_EXCEPTIONS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_ENABLE_TRIGRAPHS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_USE_INDIRECT_FUNCTION_CALLS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_USE_REGISTER_FUNCTION_CALLS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_INCREASE_PRECOMPILED_HEADER_SHARING $class CF$UID 67 NS.string GCC 4.2 - Language||OTHER_CFLAGS $class CF$UID 67 NS.string GCC 4.2 - Language||OTHER_CPLUSPLUSFLAGS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_PRECOMPILE_PREFIX_HEADER $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_PREFIX_HEADER $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_ENABLE_BUILTIN_FUNCTIONS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_ENABLE_PASCAL_STRINGS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_FORCE_CPU_SUBTYPE_ALL $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_SHORT_ENUMS $class CF$UID 67 NS.string GCC 4.2 - Language||GCC_USE_STANDARD_INCLUDE_SEARCHING $class CF$UID 67 NS.string GCC 4.2 - Preprocessing||GCC_PREPROCESSOR_DEFINITIONS $class CF$UID 67 NS.string GCC 4.2 - Preprocessing||GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_CHECK_SWITCH_STATEMENTS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_FOUR_CHARACTER_CONSTANTS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_SHADOW $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_64_TO_32_BIT_CONVERSION $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_INHIBIT_ALL_WARNINGS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_ABOUT_RETURN_TYPE $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_MISSING_PARENTHESES $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_ABOUT_MISSING_PROTOTYPES $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_ABOUT_MISSING_NEWLINE $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_NON_VIRTUAL_DESTRUCTOR $class CF$UID 67 NS.string GCC 4.2 - Warnings||WARNING_CFLAGS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_PEDANTIC $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_ABOUT_POINTER_SIGNEDNESS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_PROTOTYPE_CONVERSION $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_SIGN_COMPARE $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_STRICT_SELECTOR_MATCH $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_TREAT_WARNINGS_AS_ERRORS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_TYPECHECK_CALLS_TO_PRINTF $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_UNDECLARED_SELECTOR $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_UNINITIALIZED_AUTOS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_UNKNOWN_PRAGMAS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_UNUSED_FUNCTION $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_UNUSED_LABEL $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_UNUSED_PARAMETER $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_UNUSED_VALUE $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_UNUSED_VARIABLE $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS $class CF$UID 67 NS.string GCC 4.2 - Warnings||GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO $class CF$UID 67 NS.string User-Defined||PREBINDING $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1972 $class CF$UID 108 NS.objects CF$UID 1973 CF$UID 1975 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1974 170 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 1976 450 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1379 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 130 CF$UID 128 CF$UID 129 CF$UID 127 NS.objects CF$UID 113 CF$UID 1980 CF$UID 1981 CF$UID 113 CF$UID 1987 CF$UID 1993 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1982 $class CF$UID 108 NS.objects CF$UID 1983 CF$UID 1985 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 1984 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 1986 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1988 $class CF$UID 108 NS.objects CF$UID 1989 CF$UID 1991 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 1990 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 1992 301 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 1995 $class CF$UID 108 NS.objects CF$UID 1996 CF$UID 1998 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 1997 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 1999 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2002 rootLayoutTreeNode CF$UID 2009 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2003 orientation 0 parent CF$UID 2009 $class CF$UID 69 DocumentLocation CF$UID 1752 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2004 IndexOfDocumentIdentifier CF$UID 2008 $class CF$UID 32 NS.objects CF$UID 2005 CF$UID 2006 CF$UID 2007 $class CF$UID 59 Identifier CF$UID 1715 $class CF$UID 59 Identifier CF$UID 1726 $class CF$UID 59 Identifier CF$UID 63 9223372036854775807 $class CF$UID 72 children CF$UID 2010 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2002 $class CF$UID 32 NS.objects CF$UID 1713 $class CF$UID 105 NS.keys CF$UID 2013 CF$UID 25 CF$UID 26 CF$UID 28 CF$UID 29 CF$UID 30 NS.objects CF$UID 2014 CF$UID 2090 CF$UID 33 CF$UID 2013 CF$UID 2091 CF$UID 12 IDEWorkspaceTabController_33F789A1-53E8-4028-9690-E4897D217FEE $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 2015 CF$UID 2068 CF$UID 2074 CF$UID 2082 CF$UID 33 CF$UID 285 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 2016 CF$UID 2027 CF$UID 2046 CF$UID 153 CF$UID 64 CF$UID 2061 CF$UID 2067 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2017 rootLayoutTreeNode CF$UID 2025 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2018 orientation 0 parent CF$UID 2025 $class CF$UID 69 DocumentLocation CF$UID 2023 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2019 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2020 CF$UID 2021 CF$UID 2022 $class CF$UID 59 Identifier CF$UID 211 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 2024 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib $class CF$UID 72 children CF$UID 2026 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2017 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 2028 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 2029 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2030 CF$UID 64 CF$UID 2045 $class CF$UID 32 NS.objects CF$UID 2031 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 91 CF$UID 2032 CF$UID 2037 CF$UID 2043 CF$UID 211 CF$UID 118 CF$UID 2044 $class CF$UID 69 DocumentLocation CF$UID 2023 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2033 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2034 CF$UID 2035 CF$UID 2036 $class CF$UID 59 Identifier CF$UID 211 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 2038 CF$UID 2040 CF$UID 101 CF$UID 2041 $class CF$UID 105 NS.keys CF$UID 103 NS.objects CF$UID 2039 270 $class CF$UID 108 NS.objects CF$UID 235 $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 233 CF$UID 2042 $class CF$UID 108 NS.objects CF$UID 235 View $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 238 $class CF$UID 32 NS.objects CF$UID 240 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 130 CF$UID 129 NS.objects CF$UID 113 CF$UID 2047 CF$UID 2048 CF$UID 113 CF$UID 2049 CF$UID 2055 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2050 $class CF$UID 108 NS.objects CF$UID 2051 CF$UID 2053 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2052 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2054 533 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2056 $class CF$UID 108 NS.objects CF$UID 2057 CF$UID 2059 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2058 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2060 533 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2062 $class CF$UID 108 NS.objects CF$UID 2063 CF$UID 2065 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 2064 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 2066 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2069 $class CF$UID 108 NS.objects CF$UID 2070 CF$UID 2072 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2071 537 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2073 225 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 2075 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 2076 CF$UID 2078 $class CF$UID 32 NS.objects CF$UID 2077 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 211 $class CF$UID 183 NS.objects CF$UID 2079 CF$UID 2080 CF$UID 2081 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2083 $class CF$UID 108 NS.objects CF$UID 2084 CF$UID 2086 CF$UID 2088 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 2085 224 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 2087 916 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 2089 260 $class CF$UID 32 NS.objects CF$UID 2013 {{20, 92}, {832, 786}} $class CF$UID 105 NS.keys CF$UID 2093 CF$UID 25 CF$UID 26 CF$UID 28 CF$UID 29 CF$UID 30 NS.objects CF$UID 2094 CF$UID 2169 CF$UID 33 CF$UID 2093 CF$UID 2170 CF$UID 13 IDEWorkspaceTabController_5125517E-9AC8-4141-8CF8-1AAE0C39E0E8 $class CF$UID 105 NS.keys CF$UID 37 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 42 NS.objects CF$UID 58 CF$UID 33 CF$UID 2095 CF$UID 2147 CF$UID 2153 CF$UID 2161 CF$UID 33 CF$UID 64 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 2096 CF$UID 2107 CF$UID 2125 CF$UID 153 CF$UID 64 CF$UID 2140 CF$UID 2146 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2097 rootLayoutTreeNode CF$UID 2105 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2098 orientation 0 parent CF$UID 2105 $class CF$UID 69 DocumentLocation CF$UID 2103 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2099 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2100 CF$UID 2101 CF$UID 2102 $class CF$UID 59 Identifier CF$UID 58 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 2104 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.xib $class CF$UID 72 children CF$UID 2106 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2097 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 2108 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 2109 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2110 CF$UID 64 CF$UID 2124 $class CF$UID 32 NS.objects CF$UID 2111 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 91 CF$UID 2112 CF$UID 2117 CF$UID 2043 CF$UID 58 CF$UID 118 CF$UID 2123 $class CF$UID 69 DocumentLocation CF$UID 2103 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2113 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2114 CF$UID 2115 CF$UID 2116 $class CF$UID 59 Identifier CF$UID 58 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 2118 CF$UID 2120 CF$UID 101 CF$UID 2121 $class CF$UID 105 NS.keys CF$UID 103 NS.objects CF$UID 2119 270 $class CF$UID 108 NS.objects CF$UID 113 $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 112 CF$UID 2122 $class CF$UID 108 NS.objects CF$UID 113 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 120 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 130 CF$UID 129 NS.objects CF$UID 113 CF$UID 2126 CF$UID 2127 CF$UID 113 CF$UID 2128 CF$UID 2134 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2129 $class CF$UID 108 NS.objects CF$UID 2130 CF$UID 2132 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2131 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2133 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2135 $class CF$UID 108 NS.objects CF$UID 2136 CF$UID 2138 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2137 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2139 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2141 $class CF$UID 108 NS.objects CF$UID 2142 CF$UID 2144 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 2143 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 2145 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2148 $class CF$UID 108 NS.objects CF$UID 2149 CF$UID 2151 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2150 375 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2152 225 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 2154 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 2155 CF$UID 2157 $class CF$UID 32 NS.objects CF$UID 2156 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 58 $class CF$UID 183 NS.objects CF$UID 2158 CF$UID 2159 CF$UID 2160 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2162 $class CF$UID 108 NS.objects CF$UID 2163 CF$UID 2165 CF$UID 2167 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 2164 224 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 2166 916 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 2168 260 $class CF$UID 32 NS.objects CF$UID 2093 {{40, 254}, {600, 624}} $class CF$UID 105 NS.keys CF$UID 30 CF$UID 25 CF$UID 26 CF$UID 29 CF$UID 2172 CF$UID 28 NS.objects CF$UID 14 CF$UID 2173 CF$UID 33 CF$UID 200 CF$UID 2174 CF$UID 2172 IDEWorkspaceTabController_1B67AACB-6F28-4F95-B789-8AB8598E75C4 $class CF$UID 32 NS.objects CF$UID 2172 $class CF$UID 105 NS.keys CF$UID 37 CF$UID 36 CF$UID 42 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 35 NS.objects CF$UID 1649 CF$UID 33 CF$UID 64 CF$UID 2175 CF$UID 2181 CF$UID 2200 CF$UID 33 CF$UID 2208 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2176 $class CF$UID 108 NS.objects CF$UID 2177 CF$UID 2179 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2178 376 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2180 224 $class CF$UID 105 NS.keys CF$UID 172 CF$UID 171 CF$UID 2182 NS.objects CF$UID 2183 CF$UID 2182 CF$UID 2185 Xcode.IDEKit.Navigator.Issues $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 2184 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 730 CF$UID 182 {{0, 0}, {259, 688}} $class CF$UID 105 NS.keys CF$UID 2186 CF$UID 174 CF$UID 2187 CF$UID 2188 CF$UID 2189 CF$UID 2190 CF$UID 2191 CF$UID 2192 CF$UID 2193 CF$UID 2194 NS.objects CF$UID 33 CF$UID 181 CF$UID 2195 CF$UID 2196 CF$UID 2197 CF$UID 33 CF$UID 33 CF$UID 2198 CF$UID 33 CF$UID 2199 IDEErrorFilteringEnabled IDECollapsedFiles IDEExpandedIssues IDESelectedNavigables IDEShowsByType IDESchemeFilteringEnabled IDECollapsedTypes IDERecentFilteringEnabled IDECollapsedGroups $class CF$UID 733 NS.objects $class CF$UID 733 NS.objects $class CF$UID 108 NS.objects $class CF$UID 733 NS.objects $class CF$UID 733 NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2201 $class CF$UID 108 NS.objects CF$UID 2202 CF$UID 2204 CF$UID 2206 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 2203 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 2205 880 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 2207 260 $class CF$UID 105 NS.keys CF$UID 51 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 44 NS.objects CF$UID 33 CF$UID 2209 CF$UID 2228 CF$UID 153 CF$UID 64 CF$UID 2243 CF$UID 2249 CF$UID 2250 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 2210 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 2211 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2212 CF$UID 64 CF$UID 2227 $class CF$UID 32 NS.objects CF$UID 2213 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 1645 CF$UID 2214 CF$UID 2221 CF$UID 2225 CF$UID 1649 CF$UID 323 CF$UID 2226 $class CF$UID 69 DocumentLocation CF$UID 2219 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2215 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2216 CF$UID 2217 CF$UID 2218 $class CF$UID 59 Identifier CF$UID 1649 $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 2220 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Chapter.m $class CF$UID 116 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 2222 CF$UID 2223 CF$UID 33 CF$UID 2224 323961475.51630199 {0, 221} {217, 0} @implementation Chapter $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1488 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 129 CF$UID 128 CF$UID 130 CF$UID 127 NS.objects CF$UID 113 CF$UID 2229 CF$UID 2230 CF$UID 113 CF$UID 2236 CF$UID 2242 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2231 $class CF$UID 108 NS.objects CF$UID 2232 CF$UID 2234 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2233 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2235 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2237 $class CF$UID 108 NS.objects CF$UID 2238 CF$UID 2240 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2239 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2241 301 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2244 $class CF$UID 108 NS.objects CF$UID 2245 CF$UID 2247 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 2246 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 2248 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2251 rootLayoutTreeNode CF$UID 2257 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2252 orientation 0 parent CF$UID 2257 $class CF$UID 69 DocumentLocation CF$UID 2219 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2253 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2254 CF$UID 2255 CF$UID 2256 $class CF$UID 59 Identifier CF$UID 1649 $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 72 children CF$UID 2258 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2251 $class CF$UID 105 NS.keys CF$UID 2260 CF$UID 2261 CF$UID 2262 CF$UID 30 CF$UID 2263 CF$UID 2264 CF$UID 2265 NS.objects CF$UID 2266 CF$UID 2267 CF$UID 2539 CF$UID 15 CF$UID 2261 CF$UID 2540 CF$UID 153 IDEWindowFrame IDEWorkspaceTabController_DE52840D-5D59-477E-838E-AA91ED2E3D9A IDEOrderedWorkspaceTabControllers IDEActiveWorkspaceTabController IDEWorkspaceTabController_0AA7FC19-ACC5-4DC2-ACAC-688BB9B64ECE IDEWindowToolbarIsVisible {{1536, -19}, {1440, 808}} $class CF$UID 105 NS.keys CF$UID 2268 CF$UID 2269 CF$UID 2270 CF$UID 2271 CF$UID 2272 CF$UID 2273 CF$UID 2274 CF$UID 2275 NS.objects CF$UID 2276 CF$UID 153 CF$UID 64 CF$UID 2277 CF$UID 2283 CF$UID 2365 CF$UID 153 CF$UID 2374 IDETabLabel IDEShowNavigator AssistantEditorsLayout IDEWorkspaceTabControllerUtilityAreaSplitView IDENavigatorArea IDEWorkspaceTabControllerDesignAreaSplitView IDEShowUtilities IDEEditorArea MainWindow $class CF$UID 105 NS.keys CF$UID 1307 NS.objects CF$UID 2278 $class CF$UID 108 NS.objects CF$UID 2279 CF$UID 2281 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 1312 CF$UID 2280 508 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 1312 CF$UID 2282 224 $class CF$UID 105 NS.keys CF$UID 2284 CF$UID 2285 CF$UID 2286 CF$UID 2287 CF$UID 2288 CF$UID 2289 CF$UID 2290 CF$UID 2291 NS.objects CF$UID 2292 CF$UID 2302 CF$UID 2306 CF$UID 2290 CF$UID 2319 CF$UID 2336 CF$UID 2340 CF$UID 2358 Xcode.IDEKit.Navigator.Symbol Xcode.DebuggerKit.ThreadsStacksNavigator Xcode.IDEKit.Navigator.BatchFind SelectedNavigator Xcode.IDEKit.Navigator.Issues Xcode.IDEKit.Navigator.Breakpoints Xcode.IDEKit.Navigator.Structure Xcode.IDEKit.Navigator.Logs $class CF$UID 105 NS.keys CF$UID 2293 CF$UID 2294 CF$UID 2295 CF$UID 2296 CF$UID 2297 CF$UID 2298 CF$UID 2299 NS.objects CF$UID 2300 CF$UID 153 CF$UID 153 CF$UID 153 CF$UID 166 CF$UID 2301 CF$UID 33 IDEExpandedItems IDESymbolNavigatorShowHierarchy IDESymbolNavigatorShowWorkspaceOnly IDESymbolNavigatorShowClassesOnly IDESymbolNamePatternString IDESymbolNavigatorSelectedSymbols IDESymbolNavigatorShowContainersOnly $class CF$UID 108 NS.objects $class CF$UID 108 NS.objects $class CF$UID 105 NS.keys CF$UID 2303 CF$UID 2304 CF$UID 2305 NS.objects CF$UID 135 CF$UID 64 CF$UID 33 IDEStackCompressionValue IDEThreadsOrQueuesMode IDEHideAncestorForNonInterestingFrames $class CF$UID 105 NS.keys CF$UID 2307 CF$UID 2308 CF$UID 2309 CF$UID 2310 CF$UID 2311 CF$UID 2312 CF$UID 2313 NS.objects CF$UID 64 CF$UID 33 CF$UID 166 CF$UID 2314 CF$UID 2315 CF$UID 64 CF$UID 2317 IDEBatchFindNavigatorScrollPosition IDEBatchFindNavigatorShowsOptions IDEBatchFindNavigatorReplaceString IDEBatchFindNavigatorFindString IDEBatchFindNavigatorSelectedRowIndexes IDEBatchFindNavigatorFindMode IDEBatchFindNavigatorCollapsedGroups index epub $class CF$UID 2316 NSRangeCount 0 $classes NSIndexSet NSObject $classname NSIndexSet $class CF$UID 2318 NSRangeCount 0 $classes NSMutableIndexSet NSIndexSet NSObject $classname NSMutableIndexSet $class CF$UID 105 NS.keys CF$UID 2320 CF$UID 2321 CF$UID 2322 CF$UID 2323 CF$UID 2324 CF$UID 2325 CF$UID 2326 CF$UID 2327 CF$UID 2328 CF$UID 2329 NS.objects CF$UID 33 CF$UID 2330 CF$UID 2331 CF$UID 2332 CF$UID 2333 CF$UID 33 CF$UID 33 CF$UID 2334 CF$UID 33 CF$UID 2335 IDEErrorFilteringEnabled IDEVisibleRect IDECollapsedFiles IDEExpandedIssues IDESelectedNavigables IDEShowsByType IDESchemeFilteringEnabled IDECollapsedTypes IDERecentFilteringEnabled IDECollapsedGroups {{0, 0}, {259, 666}} $class CF$UID 733 NS.objects $class CF$UID 733 NS.objects $class CF$UID 108 NS.objects $class CF$UID 733 NS.objects $class CF$UID 733 NS.objects $class CF$UID 105 NS.keys CF$UID 2337 CF$UID 2338 CF$UID 179 CF$UID 174 NS.objects CF$UID 182 CF$UID 33 CF$UID 730 CF$UID 2339 IDECollapsedtemsSet IDEBreakpointNavigatorFilterOnEnabled {{0, 0}, {223, 688}} $class CF$UID 105 NS.keys CF$UID 2341 CF$UID 2342 CF$UID 2343 CF$UID 2344 CF$UID 2345 CF$UID 2346 CF$UID 2347 NS.objects CF$UID 2348 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 2349 CF$UID 2353 IDEVisibleRect IDEUnsavedDocumentFilteringEnabled IDENavigatorExpandedItemsBeforeFilteringSet IDERecentDocumentFilteringEnabled IDESCMStatusFilteringEnabled IDESelectedObjects IDEExpandedItemsSet {{0, 0}, {259, 688}} $class CF$UID 32 NS.objects CF$UID 2350 $class CF$UID 108 NS.objects CF$UID 2351 CF$UID 61 CF$UID 2352 AePubReader MainWindow.xib $class CF$UID 183 NS.objects CF$UID 2354 CF$UID 2356 CF$UID 2357 $class CF$UID 108 NS.objects CF$UID 2351 CF$UID 2355 Classes $class CF$UID 108 NS.objects CF$UID 2351 $class CF$UID 108 NS.objects CF$UID 2351 CF$UID 61 $class CF$UID 105 NS.keys CF$UID 2359 CF$UID 2360 CF$UID 2361 CF$UID 2362 NS.objects CF$UID 2363 CF$UID 2364 CF$UID 33 CF$UID 2184 IDELogNavigatorExpandedItemsStateKey IDELogNavigatorSelectedObjectsStateKey IDELogNavigatorRecentFilterStateKey IDELogNavigatorVisibleRectStateKey $class CF$UID 108 NS.objects $class CF$UID 108 NS.objects $class CF$UID 105 NS.keys CF$UID 1307 NS.objects CF$UID 2366 $class CF$UID 108 NS.objects CF$UID 2367 CF$UID 2369 CF$UID 2371 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 2272 CF$UID 2368 260 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 2275 CF$UID 2370 920 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 2372 CF$UID 2373 IDEUtilitiesArea 260 $class CF$UID 105 NS.keys CF$UID 2375 CF$UID 2376 CF$UID 2377 CF$UID 2378 CF$UID 2379 CF$UID 2380 CF$UID 2381 CF$UID 2382 CF$UID 2383 CF$UID 2384 NS.objects CF$UID 2385 CF$UID 2396 CF$UID 2433 CF$UID 153 CF$UID 64 CF$UID 2458 CF$UID 2475 CF$UID 2483 CF$UID 2484 CF$UID 153 layoutTree IDEEditorMode_Standard IDEEDitorArea_DebugArea IDEShowEditor EditorMode IDEEditorMode_Version DebuggerSplitView DefaultPersistentRepresentations IDEEditorMode_Genius ShowDebuggerArea $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2386 rootLayoutTreeNode CF$UID 2394 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2387 orientation 0 parent CF$UID 2394 $class CF$UID 69 DocumentLocation CF$UID 2393 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2388 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2389 CF$UID 2390 CF$UID 2391 $class CF$UID 59 Identifier CF$UID 2352 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 2392 AePubReader $class CF$UID 68 documentURL CF$UID 749 timestamp CF$UID 0 $class CF$UID 72 children CF$UID 2395 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2386 $class CF$UID 105 NS.keys CF$UID 2397 NS.objects CF$UID 2398 EditorLayout_PersistentRepresentation $class CF$UID 105 NS.keys CF$UID 2399 NS.objects CF$UID 2400 Main $class CF$UID 116 NS.keys CF$UID 2401 CF$UID 2402 CF$UID 2403 NS.objects CF$UID 2404 CF$UID 64 CF$UID 2431 EditorLayout_StateSavingStateDictionaries EditorLayout_Selected EditorLayout_Geometry $class CF$UID 32 NS.objects CF$UID 2405 $class CF$UID 105 NS.keys CF$UID 2406 CF$UID 2407 CF$UID 2408 CF$UID 2409 CF$UID 2410 CF$UID 2411 CF$UID 2412 NS.objects CF$UID 2413 CF$UID 2414 CF$UID 2420 CF$UID 2427 CF$UID 2352 CF$UID 2428 CF$UID 2429 FileDataType ArchivableRepresentation EditorState NavigableItemName DocumentNavigableItemName DocumentExtensionIdentifier DocumentURL com.apple.InterfaceBuilder3.CocoaTouch.XIB $class CF$UID 69 DocumentLocation CF$UID 2393 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2415 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2416 CF$UID 2417 CF$UID 2418 $class CF$UID 59 Identifier CF$UID 2352 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 2419 AePubReader $class CF$UID 116 NS.keys CF$UID 764 CF$UID 765 CF$UID 766 CF$UID 767 NS.objects CF$UID 2421 CF$UID 2422 CF$UID 773 CF$UID 2424 $class CF$UID 105 NS.keys CF$UID 769 NS.objects CF$UID 793 $class CF$UID 108 NS.objects CF$UID 2423 50 $class CF$UID 105 NS.keys CF$UID 775 CF$UID 776 NS.objects CF$UID 797 CF$UID 2425 $class CF$UID 108 NS.objects CF$UID 2426 CF$UID 135 50 Pub View Controller Xcode.IDEKit.CocoaTouchIntegration.EditorDocument.CocoaTouch $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 2430 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/MainWindow.xib $class CF$UID 32 NS.objects CF$UID 2432 {{0, 0}, {920, 458}} $class CF$UID 105 NS.keys CF$UID 2434 CF$UID 2435 CF$UID 2436 CF$UID 2437 CF$UID 2438 CF$UID 2439 NS.objects CF$UID 113 CF$UID 2440 CF$UID 2442 CF$UID 113 CF$UID 2444 CF$UID 2452 LayoutFocusMode console variables LayoutMode IDEDebuggerAreaSplitView IDEDebugArea_SplitView $class CF$UID 105 NS.keys CF$UID 2441 NS.objects CF$UID 64 ConsoleFilterMode $class CF$UID 105 NS.keys CF$UID 2443 NS.objects CF$UID 135 DBGVariablesViewFilterMode $class CF$UID 105 NS.keys CF$UID 1307 NS.objects CF$UID 2445 $class CF$UID 108 NS.objects CF$UID 2446 CF$UID 2449 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 2447 CF$UID 2448 VariablesView 330 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 2450 CF$UID 2451 ConsoleArea 589 $class CF$UID 105 NS.keys CF$UID 1307 NS.objects CF$UID 2453 $class CF$UID 108 NS.objects CF$UID 2454 CF$UID 2456 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 2447 CF$UID 2455 330 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 2450 CF$UID 2457 589 $class CF$UID 105 NS.keys CF$UID 2459 CF$UID 75 NS.objects CF$UID 64 CF$UID 2460 VersionsEditorSubmode $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 2461 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2462 CF$UID 64 CF$UID 2473 $class CF$UID 32 NS.objects CF$UID 2463 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 541 CF$UID 2464 CF$UID 2469 CF$UID 63 CF$UID 63 CF$UID 643 CF$UID 2472 $class CF$UID 69 DocumentLocation CF$UID 2468 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2465 IndexOfDocumentIdentifier CF$UID 2467 $class CF$UID 32 NS.objects CF$UID 2466 $class CF$UID 59 Identifier CF$UID 63 9223372036854775807 $class CF$UID 68 documentURL CF$UID 547 timestamp CF$UID 0 $class CF$UID 116 NS.keys CF$UID 319 CF$UID 317 CF$UID 316 NS.objects CF$UID 473 CF$UID 2470 CF$UID 2471 {0, 1613} 323910136.03779298 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 563 $class CF$UID 32 NS.objects CF$UID 2474 {{0, 0}, {1140, 595}} $class CF$UID 105 NS.keys CF$UID 1307 NS.objects CF$UID 2476 $class CF$UID 108 NS.objects CF$UID 2477 CF$UID 2480 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 2478 CF$UID 2479 IDEEditor 480 $class CF$UID 116 NS.keys CF$UID 1310 CF$UID 1311 NS.objects CF$UID 2481 CF$UID 2482 IDEDebuggerArea 252 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 2485 CF$UID 75 NS.objects CF$UID 2486 CF$UID 2487 SplitPosition 0.5 $class CF$UID 105 NS.keys CF$UID 2488 CF$UID 77 NS.objects CF$UID 2489 CF$UID 2516 Alternate $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2490 CF$UID 64 CF$UID 2514 $class CF$UID 108 NS.objects CF$UID 2491 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 541 CF$UID 2492 CF$UID 2502 CF$UID 63 CF$UID 63 CF$UID 569 CF$UID 2513 $class CF$UID 69 DocumentLocation CF$UID 2501 DomainIdentifier CF$UID 0 IdentifierPath CF$UID 2493 IndexOfDocumentIdentifier CF$UID 2500 $class CF$UID 32 NS.objects CF$UID 2494 CF$UID 2497 $class CF$UID 105 NS.keys CF$UID 2495 CF$UID 2496 NS.objects CF$UID 55 CF$UID 63 manualDomainIdentifier navigableItem_name $class CF$UID 105 NS.keys CF$UID 2498 NS.objects CF$UID 2499 identifier Xcode.IDEKit.GeniusCategory.Manual 9223372036854775807 $class CF$UID 68 documentURL CF$UID 547 timestamp CF$UID 0 $class CF$UID 116 NS.keys CF$UID 549 CF$UID 550 CF$UID 551 CF$UID 552 NS.objects CF$UID 553 CF$UID 2503 CF$UID 560 CF$UID 2509 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2504 $class CF$UID 108 NS.objects CF$UID 2505 CF$UID 2507 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2506 170 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2508 450 $class CF$UID 32 NS.objects CF$UID 2510 $class CF$UID 568 documentURL CF$UID 563 selection CF$UID 2512 timestamp CF$UID 2511 323910138.13453901 $class CF$UID 105 NS.keys CF$UID 566 CF$UID 567 NS.objects CF$UID 63 CF$UID 553 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 563 $class CF$UID 108 NS.objects CF$UID 2515 {{0, 0}, {569, 595}} $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2517 CF$UID 64 CF$UID 2538 $class CF$UID 32 NS.objects CF$UID 2518 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 541 CF$UID 2519 CF$UID 2524 CF$UID 63 CF$UID 63 CF$UID 569 CF$UID 2537 $class CF$UID 69 DocumentLocation CF$UID 2523 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2520 IndexOfDocumentIdentifier CF$UID 2522 $class CF$UID 32 NS.objects CF$UID 2521 $class CF$UID 59 Identifier CF$UID 63 9223372036854775807 $class CF$UID 68 documentURL CF$UID 547 timestamp CF$UID 0 $class CF$UID 116 NS.keys CF$UID 549 CF$UID 550 CF$UID 551 CF$UID 552 CF$UID 2525 NS.objects CF$UID 553 CF$UID 2526 CF$UID 560 CF$UID 2532 CF$UID 2536 Xcode3ProjectEditor_Xcode3TargetEditor $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2527 $class CF$UID 108 NS.objects CF$UID 2528 CF$UID 2530 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2529 112 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2531 508 $class CF$UID 32 NS.objects CF$UID 2533 $class CF$UID 568 documentURL CF$UID 563 selection CF$UID 2535 timestamp CF$UID 2534 323910138.13428801 $class CF$UID 105 NS.keys CF$UID 567 CF$UID 1355 NS.objects CF$UID 560 CF$UID 63 $class CF$UID 105 NS.keys NS.objects $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 563 $class CF$UID 32 NS.objects CF$UID 2474 $class CF$UID 32 NS.objects CF$UID 2261 $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 37 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 35 NS.objects CF$UID 64 CF$UID 153 CF$UID 2541 CF$UID 2542 CF$UID 2548 CF$UID 2582 CF$UID 153 CF$UID 2590 DetailViewController.m $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2543 $class CF$UID 108 NS.objects CF$UID 2544 CF$UID 2546 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2545 486 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2547 224 $class CF$UID 105 NS.keys CF$UID 2284 CF$UID 2549 CF$UID 2286 CF$UID 171 CF$UID 2182 CF$UID 2289 CF$UID 172 CF$UID 2291 NS.objects CF$UID 2550 CF$UID 2553 CF$UID 2557 CF$UID 2549 CF$UID 2561 CF$UID 2568 CF$UID 2570 CF$UID 2577 Xcode.DebuggerKit.ThreadsStacksNavigator $class CF$UID 105 NS.keys CF$UID 2293 CF$UID 2294 CF$UID 2295 CF$UID 2296 CF$UID 2297 CF$UID 2298 CF$UID 2299 NS.objects CF$UID 2551 CF$UID 153 CF$UID 153 CF$UID 153 CF$UID 166 CF$UID 2552 CF$UID 33 $class CF$UID 108 NS.objects $class CF$UID 108 NS.objects $class CF$UID 105 NS.keys CF$UID 2554 CF$UID 2555 CF$UID 2556 NS.objects CF$UID 135 CF$UID 64 CF$UID 33 IDEStackCompressionValue IDEThreadsOrQueuesMode IDEHideAncestorForNonInterestingFrames $class CF$UID 105 NS.keys CF$UID 2307 CF$UID 2308 CF$UID 2309 CF$UID 2310 CF$UID 2311 CF$UID 2312 CF$UID 2313 NS.objects CF$UID 64 CF$UID 33 CF$UID 166 CF$UID 2558 CF$UID 2559 CF$UID 64 CF$UID 2560 updatePagination $class CF$UID 2316 NSRangeCount 0 $class CF$UID 2318 NSRangeCount 0 $class CF$UID 105 NS.keys CF$UID 2186 CF$UID 174 CF$UID 2187 CF$UID 2188 CF$UID 2189 CF$UID 2190 CF$UID 2191 CF$UID 2192 CF$UID 2193 CF$UID 2194 NS.objects CF$UID 33 CF$UID 2562 CF$UID 2563 CF$UID 2564 CF$UID 2565 CF$UID 33 CF$UID 33 CF$UID 2566 CF$UID 33 CF$UID 2567 {{0, 0}, {223, 644}} $class CF$UID 733 NS.objects $class CF$UID 733 NS.objects $class CF$UID 108 NS.objects $class CF$UID 733 NS.objects $class CF$UID 733 NS.objects $class CF$UID 105 NS.keys CF$UID 2337 CF$UID 2338 CF$UID 179 CF$UID 174 NS.objects CF$UID 182 CF$UID 33 CF$UID 730 CF$UID 2569 {{0, 0}, {223, 666}} $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 2569 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 2571 CF$UID 2573 $class CF$UID 32 NS.objects CF$UID 2572 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 CF$UID 465 $class CF$UID 183 NS.objects CF$UID 2574 CF$UID 2575 CF$UID 2576 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 105 NS.keys CF$UID 2359 CF$UID 2360 CF$UID 2361 CF$UID 2362 NS.objects CF$UID 2578 CF$UID 2579 CF$UID 33 CF$UID 2184 $class CF$UID 108 NS.objects $class CF$UID 108 NS.objects CF$UID 2580 $class CF$UID 108 NS.objects CF$UID 2581 Debug AePubReader : 18.43.13 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2583 $class CF$UID 108 NS.objects CF$UID 2584 CF$UID 2586 CF$UID 2588 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 2585 224 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 2587 916 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 2589 260 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 2380 CF$UID 49 CF$UID 50 CF$UID 2383 CF$UID 51 NS.objects CF$UID 2591 CF$UID 2602 CF$UID 2619 CF$UID 153 CF$UID 64 CF$UID 2458 CF$UID 2634 CF$UID 2640 CF$UID 2484 CF$UID 153 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2592 rootLayoutTreeNode CF$UID 2600 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2593 orientation 0 parent CF$UID 2600 $class CF$UID 69 DocumentLocation CF$UID 2598 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2594 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2595 CF$UID 2596 CF$UID 2597 $class CF$UID 59 Identifier CF$UID 2541 $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 2599 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.m $class CF$UID 72 children CF$UID 2601 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2592 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 2603 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 2604 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2605 CF$UID 64 CF$UID 2617 $class CF$UID 32 NS.objects CF$UID 2606 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 1645 CF$UID 2607 CF$UID 2612 CF$UID 2541 CF$UID 2541 CF$UID 323 CF$UID 2615 $class CF$UID 69 DocumentLocation CF$UID 2598 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2608 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2609 CF$UID 2610 CF$UID 2611 $class CF$UID 59 Identifier CF$UID 2541 $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 2613 CF$UID 2614 CF$UID 33 CF$UID 473 326220505.31120998 {0, 1224} $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 2616 file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.m $class CF$UID 32 NS.objects CF$UID 2618 {{0, 0}, {916, 481}} $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 130 CF$UID 129 NS.objects CF$UID 113 CF$UID 2620 CF$UID 2621 CF$UID 113 CF$UID 2622 CF$UID 2628 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2623 $class CF$UID 108 NS.objects CF$UID 2624 CF$UID 2626 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2625 386 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2627 529 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2629 $class CF$UID 108 NS.objects CF$UID 2630 CF$UID 2632 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2631 386 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2633 529 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2635 $class CF$UID 108 NS.objects CF$UID 2636 CF$UID 2638 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 2637 503 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 2639 207 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 28 CF$UID 25 CF$UID 26 CF$UID 29 CF$UID 30 CF$UID 2642 NS.objects CF$UID 2642 CF$UID 2643 CF$UID 33 CF$UID 2644 CF$UID 16 CF$UID 2645 IDEWorkspaceTabController_CCAE46AC-647E-49F6-861B-2F57EA304532 $class CF$UID 32 NS.objects CF$UID 2642 {{10, 232}, {600, 646}} $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 2646 CF$UID 2696 CF$UID 2702 CF$UID 2710 CF$UID 33 CF$UID 297 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 2647 CF$UID 2658 CF$UID 2674 CF$UID 153 CF$UID 64 CF$UID 2689 CF$UID 2695 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2648 rootLayoutTreeNode CF$UID 2656 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2649 orientation 0 parent CF$UID 2656 $class CF$UID 69 DocumentLocation CF$UID 2654 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2650 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2651 CF$UID 2652 CF$UID 2653 $class CF$UID 59 Identifier CF$UID 297 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 2655 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js $class CF$UID 72 children CF$UID 2657 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2648 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 2659 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 2660 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2661 CF$UID 64 CF$UID 2673 $class CF$UID 32 NS.objects CF$UID 2662 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 309 CF$UID 2663 CF$UID 2668 CF$UID 297 CF$UID 297 CF$UID 323 CF$UID 2672 $class CF$UID 69 DocumentLocation CF$UID 2654 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2664 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2665 CF$UID 2666 CF$UID 2667 $class CF$UID 59 Identifier CF$UID 297 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 2669 CF$UID 2670 CF$UID 33 CF$UID 2671 326386185.61865801 {0, 1757} {351, 0} $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 325 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 129 CF$UID 130 NS.objects CF$UID 113 CF$UID 2675 CF$UID 2676 CF$UID 113 CF$UID 2677 CF$UID 2683 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2678 $class CF$UID 108 NS.objects CF$UID 2679 CF$UID 2681 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2680 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2682 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2684 $class CF$UID 108 NS.objects CF$UID 2685 CF$UID 2687 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2686 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2688 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2690 $class CF$UID 108 NS.objects CF$UID 2691 CF$UID 2693 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 2692 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 2694 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2697 $class CF$UID 108 NS.objects CF$UID 2698 CF$UID 2700 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2699 397 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2701 225 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 2703 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 2704 CF$UID 2706 $class CF$UID 32 NS.objects CF$UID 2705 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 297 $class CF$UID 183 NS.objects CF$UID 2707 CF$UID 2708 CF$UID 2709 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2711 $class CF$UID 108 NS.objects CF$UID 2712 CF$UID 2714 CF$UID 2716 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 2713 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 2715 920 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 2717 260 $class CF$UID 105 NS.keys CF$UID 26 CF$UID 2719 CF$UID 25 CF$UID 28 CF$UID 30 CF$UID 29 NS.objects CF$UID 33 CF$UID 2720 CF$UID 2793 CF$UID 2719 CF$UID 17 CF$UID 2794 IDEWorkspaceTabController_36035F7F-D36B-4BCA-AADE-9D9F10D56B67 $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 2721 CF$UID 2771 CF$UID 2777 CF$UID 2785 CF$UID 33 CF$UID 297 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 2722 CF$UID 2733 CF$UID 2749 CF$UID 153 CF$UID 64 CF$UID 2764 CF$UID 2770 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2723 rootLayoutTreeNode CF$UID 2731 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2724 orientation 0 parent CF$UID 2731 $class CF$UID 69 DocumentLocation CF$UID 2729 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2725 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2726 CF$UID 2727 CF$UID 2728 $class CF$UID 59 Identifier CF$UID 297 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 2730 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js $class CF$UID 72 children CF$UID 2732 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2723 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 2734 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 2735 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2736 CF$UID 64 CF$UID 2748 $class CF$UID 32 NS.objects CF$UID 2737 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 309 CF$UID 2738 CF$UID 2743 CF$UID 297 CF$UID 297 CF$UID 323 CF$UID 2747 $class CF$UID 69 DocumentLocation CF$UID 2729 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2739 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2740 CF$UID 2741 CF$UID 2742 $class CF$UID 59 Identifier CF$UID 297 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 2744 CF$UID 2745 CF$UID 33 CF$UID 2746 326388529.15704799 {0, 1763} {543, 0} $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 325 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 129 CF$UID 130 NS.objects CF$UID 113 CF$UID 2750 CF$UID 2751 CF$UID 113 CF$UID 2752 CF$UID 2758 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2753 $class CF$UID 108 NS.objects CF$UID 2754 CF$UID 2756 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2755 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2757 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2759 $class CF$UID 108 NS.objects CF$UID 2760 CF$UID 2762 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2761 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2763 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2765 $class CF$UID 108 NS.objects CF$UID 2766 CF$UID 2768 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 2767 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 2769 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2772 $class CF$UID 108 NS.objects CF$UID 2773 CF$UID 2775 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2774 397 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2776 225 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 2778 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 2779 CF$UID 2781 $class CF$UID 32 NS.objects CF$UID 2780 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 297 $class CF$UID 183 NS.objects CF$UID 2782 CF$UID 2783 CF$UID 2784 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2786 $class CF$UID 108 NS.objects CF$UID 2787 CF$UID 2789 CF$UID 2791 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 2788 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 2790 920 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 2792 260 $class CF$UID 32 NS.objects CF$UID 2719 {{31, 232}, {600, 646}} $class CF$UID 105 NS.keys CF$UID 29 CF$UID 26 CF$UID 2796 CF$UID 25 CF$UID 30 CF$UID 28 NS.objects CF$UID 2794 CF$UID 33 CF$UID 2797 CF$UID 2873 CF$UID 18 CF$UID 2796 IDEWorkspaceTabController_2EF224D6-301A-4FD0-8EBA-372293A8DCAD $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 2798 CF$UID 2851 CF$UID 2857 CF$UID 2865 CF$UID 33 CF$UID 2804 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 2799 CF$UID 2811 CF$UID 2829 CF$UID 153 CF$UID 64 CF$UID 2844 CF$UID 2850 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2800 rootLayoutTreeNode CF$UID 2809 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2801 orientation 0 parent CF$UID 2809 $class CF$UID 69 DocumentLocation CF$UID 2807 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2802 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2803 CF$UID 2805 CF$UID 2806 $class CF$UID 59 Identifier CF$UID 2804 MainWindow.xib $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 2808 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/MainWindow.xib $class CF$UID 72 children CF$UID 2810 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2800 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 2812 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 2813 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2814 CF$UID 64 CF$UID 2828 $class CF$UID 32 NS.objects CF$UID 2815 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 91 CF$UID 2816 CF$UID 2821 CF$UID 2826 CF$UID 2804 CF$UID 118 CF$UID 2827 $class CF$UID 69 DocumentLocation CF$UID 2807 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2817 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2818 CF$UID 2819 CF$UID 2820 $class CF$UID 59 Identifier CF$UID 2804 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 2822 CF$UID 2823 CF$UID 101 CF$UID 2824 $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 797 CF$UID 2825 $class CF$UID 108 NS.objects CF$UID 135 Window $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1496 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 130 CF$UID 129 NS.objects CF$UID 113 CF$UID 2830 CF$UID 2831 CF$UID 113 CF$UID 2832 CF$UID 2838 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2833 $class CF$UID 108 NS.objects CF$UID 2834 CF$UID 2836 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2835 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2837 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2839 $class CF$UID 108 NS.objects CF$UID 2840 CF$UID 2842 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2841 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2843 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2845 $class CF$UID 108 NS.objects CF$UID 2846 CF$UID 2848 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 2847 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 2849 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2852 $class CF$UID 108 NS.objects CF$UID 2853 CF$UID 2855 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2854 398 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2856 224 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 2858 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 2859 CF$UID 2861 $class CF$UID 32 NS.objects CF$UID 2860 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 2804 $class CF$UID 183 NS.objects CF$UID 2862 CF$UID 2863 CF$UID 2864 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2866 $class CF$UID 108 NS.objects CF$UID 2867 CF$UID 2869 CF$UID 2871 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 2868 224 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 2870 916 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 2872 260 $class CF$UID 32 NS.objects CF$UID 2796 $class CF$UID 105 NS.keys CF$UID 29 CF$UID 25 CF$UID 26 CF$UID 2875 CF$UID 30 CF$UID 28 NS.objects CF$UID 2876 CF$UID 2877 CF$UID 33 CF$UID 2878 CF$UID 19 CF$UID 2875 IDEWorkspaceTabController_F55A91BD-2D2D-41F5-A225-35FAE4B82027 {{30, 254}, {600, 624}} $class CF$UID 32 NS.objects CF$UID 2875 $class CF$UID 105 NS.keys CF$UID 37 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 42 NS.objects CF$UID 58 CF$UID 33 CF$UID 2879 CF$UID 2930 CF$UID 2936 CF$UID 2944 CF$UID 33 CF$UID 64 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 2880 CF$UID 2890 CF$UID 2908 CF$UID 153 CF$UID 64 CF$UID 2923 CF$UID 2929 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2881 rootLayoutTreeNode CF$UID 2888 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2882 orientation 0 parent CF$UID 2888 $class CF$UID 69 DocumentLocation CF$UID 2887 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2883 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2884 CF$UID 2885 CF$UID 2886 $class CF$UID 59 Identifier CF$UID 58 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 2104 timestamp CF$UID 0 $class CF$UID 72 children CF$UID 2889 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2881 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 2891 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 2892 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2893 CF$UID 64 CF$UID 2907 $class CF$UID 32 NS.objects CF$UID 2894 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 91 CF$UID 2895 CF$UID 2900 CF$UID 2043 CF$UID 58 CF$UID 118 CF$UID 2906 $class CF$UID 69 DocumentLocation CF$UID 2887 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2896 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2897 CF$UID 2898 CF$UID 2899 $class CF$UID 59 Identifier CF$UID 58 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 2901 CF$UID 2903 CF$UID 101 CF$UID 2904 $class CF$UID 105 NS.keys CF$UID 103 NS.objects CF$UID 2902 270 $class CF$UID 108 NS.objects CF$UID 113 $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 112 CF$UID 2905 $class CF$UID 108 NS.objects CF$UID 113 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 120 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 130 CF$UID 129 NS.objects CF$UID 113 CF$UID 2909 CF$UID 2910 CF$UID 113 CF$UID 2911 CF$UID 2917 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2912 $class CF$UID 108 NS.objects CF$UID 2913 CF$UID 2915 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2914 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2916 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2918 $class CF$UID 108 NS.objects CF$UID 2919 CF$UID 2921 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2920 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2922 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2924 $class CF$UID 108 NS.objects CF$UID 2925 CF$UID 2927 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 2926 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 2928 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2931 $class CF$UID 108 NS.objects CF$UID 2932 CF$UID 2934 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2933 375 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 2935 225 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 2937 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 2938 CF$UID 2940 $class CF$UID 32 NS.objects CF$UID 2939 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 58 $class CF$UID 183 NS.objects CF$UID 2941 CF$UID 2942 CF$UID 2943 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2945 $class CF$UID 108 NS.objects CF$UID 2946 CF$UID 2948 CF$UID 2950 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 2947 224 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 2949 916 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 2951 260 $class CF$UID 105 NS.keys CF$UID 2953 CF$UID 25 CF$UID 26 CF$UID 28 CF$UID 29 CF$UID 30 NS.objects CF$UID 2954 CF$UID 3027 CF$UID 33 CF$UID 2953 CF$UID 371 CF$UID 20 IDEWorkspaceTabController_F1F630EF-7B76-43F6-85AE-5E66A23AA831 $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 2955 CF$UID 3005 CF$UID 3011 CF$UID 3019 CF$UID 33 CF$UID 2804 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 2956 CF$UID 2966 CF$UID 2983 CF$UID 153 CF$UID 64 CF$UID 2998 CF$UID 3004 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 2957 rootLayoutTreeNode CF$UID 2964 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 2958 orientation 0 parent CF$UID 2964 $class CF$UID 69 DocumentLocation CF$UID 2963 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2959 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2960 CF$UID 2961 CF$UID 2962 $class CF$UID 59 Identifier CF$UID 2804 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 2808 timestamp CF$UID 0 $class CF$UID 72 children CF$UID 2965 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 2957 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 2967 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 2968 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 2969 CF$UID 64 CF$UID 2982 $class CF$UID 32 NS.objects CF$UID 2970 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 91 CF$UID 2971 CF$UID 2976 CF$UID 2826 CF$UID 2804 CF$UID 118 CF$UID 2981 $class CF$UID 69 DocumentLocation CF$UID 2963 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 2972 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 2973 CF$UID 2974 CF$UID 2975 $class CF$UID 59 Identifier CF$UID 2804 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 2977 CF$UID 2978 CF$UID 101 CF$UID 2979 $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 797 CF$UID 2980 $class CF$UID 108 NS.objects CF$UID 135 $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1496 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 130 CF$UID 129 NS.objects CF$UID 113 CF$UID 2984 CF$UID 2985 CF$UID 113 CF$UID 2986 CF$UID 2992 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2987 $class CF$UID 108 NS.objects CF$UID 2988 CF$UID 2990 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2989 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2991 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2993 $class CF$UID 108 NS.objects CF$UID 2994 CF$UID 2996 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 2995 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 2997 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 2999 $class CF$UID 108 NS.objects CF$UID 3000 CF$UID 3002 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 3001 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 3003 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3006 $class CF$UID 108 NS.objects CF$UID 3007 CF$UID 3009 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 3008 398 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 3010 224 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 3012 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 3013 CF$UID 3015 $class CF$UID 32 NS.objects CF$UID 3014 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 2804 $class CF$UID 183 NS.objects CF$UID 3016 CF$UID 3017 CF$UID 3018 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3020 $class CF$UID 108 NS.objects CF$UID 3021 CF$UID 3023 CF$UID 3025 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 3022 225 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 3024 915 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 3026 260 $class CF$UID 32 NS.objects CF$UID 2953 $class CF$UID 105 NS.keys CF$UID 3029 CF$UID 25 CF$UID 26 CF$UID 28 CF$UID 29 CF$UID 30 NS.objects CF$UID 3030 CF$UID 3107 CF$UID 33 CF$UID 3029 CF$UID 3108 CF$UID 21 IDEWorkspaceTabController_F6C7896F-541B-4A6F-841A-6B61449611E5 $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 3031 CF$UID 3085 CF$UID 3091 CF$UID 3099 CF$UID 33 CF$UID 285 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 3032 CF$UID 3043 CF$UID 3063 CF$UID 153 CF$UID 64 CF$UID 3078 CF$UID 3084 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 3033 rootLayoutTreeNode CF$UID 3041 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 3034 orientation 0 parent CF$UID 3041 $class CF$UID 69 DocumentLocation CF$UID 3039 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 3035 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 3036 CF$UID 3037 CF$UID 3038 $class CF$UID 59 Identifier CF$UID 211 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 3040 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib $class CF$UID 72 children CF$UID 3042 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 3033 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 3044 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 3045 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 3046 CF$UID 64 CF$UID 3061 $class CF$UID 32 NS.objects CF$UID 3047 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 91 CF$UID 3048 CF$UID 3053 CF$UID 3059 CF$UID 211 CF$UID 118 CF$UID 3060 $class CF$UID 69 DocumentLocation CF$UID 3039 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 3049 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 3050 CF$UID 3051 CF$UID 3052 $class CF$UID 59 Identifier CF$UID 211 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 98 CF$UID 99 CF$UID 100 CF$UID 101 NS.objects CF$UID 3054 CF$UID 3055 CF$UID 101 CF$UID 3057 $class CF$UID 105 NS.keys NS.objects $class CF$UID 108 NS.objects CF$UID 3056 69 $class CF$UID 105 NS.keys CF$UID 110 CF$UID 111 NS.objects CF$UID 233 CF$UID 3058 $class CF$UID 108 NS.objects CF$UID 235 Web View $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 238 $class CF$UID 32 NS.objects CF$UID 3062 {{0, 0}, {832, 768}} $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 129 CF$UID 130 NS.objects CF$UID 113 CF$UID 3064 CF$UID 3065 CF$UID 113 CF$UID 3066 CF$UID 3072 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3067 $class CF$UID 108 NS.objects CF$UID 3068 CF$UID 3070 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 3069 413 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 3071 418 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3073 $class CF$UID 108 NS.objects CF$UID 3074 CF$UID 3076 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 3075 413 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 3077 418 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3079 $class CF$UID 108 NS.objects CF$UID 3080 CF$UID 3082 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 3081 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 3083 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3086 $class CF$UID 108 NS.objects CF$UID 3087 CF$UID 3089 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 3088 544 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 3090 224 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 3092 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 3093 CF$UID 3095 $class CF$UID 32 NS.objects CF$UID 3094 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 211 $class CF$UID 183 NS.objects CF$UID 3096 CF$UID 3097 CF$UID 3098 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3100 $class CF$UID 108 NS.objects CF$UID 3101 CF$UID 3103 CF$UID 3105 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 3102 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 3104 880 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 3106 260 $class CF$UID 32 NS.objects CF$UID 3029 {{20, 86}, {832, 792}} $class CF$UID 105 NS.keys CF$UID 29 CF$UID 25 CF$UID 26 CF$UID 3110 CF$UID 30 CF$UID 28 NS.objects CF$UID 3111 CF$UID 3112 CF$UID 33 CF$UID 3113 CF$UID 22 CF$UID 3110 IDEWorkspaceTabController_DACBA8D1-6CFA-43C3-8DDD-6596F570F63D {{0, 232}, {600, 646}} $class CF$UID 32 NS.objects CF$UID 3110 $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 3114 CF$UID 3166 CF$UID 3172 CF$UID 3180 CF$UID 33 CF$UID 3120 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 3115 CF$UID 3127 CF$UID 3144 CF$UID 153 CF$UID 64 CF$UID 3159 CF$UID 3165 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 3116 rootLayoutTreeNode CF$UID 3125 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 3117 orientation 0 parent CF$UID 3125 $class CF$UID 69 DocumentLocation CF$UID 3123 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 3118 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 3119 CF$UID 3121 CF$UID 3122 $class CF$UID 59 Identifier CF$UID 3120 DetailViewController.h $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 3124 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.h $class CF$UID 72 children CF$UID 3126 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 3116 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 3128 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 3129 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 3130 CF$UID 64 CF$UID 3143 $class CF$UID 32 NS.objects CF$UID 3131 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 394 CF$UID 3132 CF$UID 3137 CF$UID 3141 CF$UID 3120 CF$UID 323 CF$UID 3142 $class CF$UID 69 DocumentLocation CF$UID 3123 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 3133 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 3134 CF$UID 3135 CF$UID 3136 $class CF$UID 59 Identifier CF$UID 3120 $class CF$UID 59 Identifier CF$UID 190 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 3138 CF$UID 3139 CF$UID 33 CF$UID 3140 326234243.58982199 {888, 1525} {1503, 0} -webViewDidFinishLoad: $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 1490 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 130 CF$UID 129 NS.objects CF$UID 113 CF$UID 3145 CF$UID 3146 CF$UID 113 CF$UID 3147 CF$UID 3153 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3148 $class CF$UID 108 NS.objects CF$UID 3149 CF$UID 3151 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 3150 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 3152 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3154 $class CF$UID 108 NS.objects CF$UID 3155 CF$UID 3157 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 3156 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 3158 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3160 $class CF$UID 108 NS.objects CF$UID 3161 CF$UID 3163 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 3162 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 3164 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3167 $class CF$UID 108 NS.objects CF$UID 3168 CF$UID 3170 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 3169 396 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 3171 226 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 3173 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 3174 CF$UID 3176 $class CF$UID 32 NS.objects CF$UID 3175 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 CF$UID 3120 $class CF$UID 183 NS.objects CF$UID 3177 CF$UID 3178 CF$UID 3179 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3181 $class CF$UID 108 NS.objects CF$UID 3182 CF$UID 3184 CF$UID 3186 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 3183 224 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 3185 916 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 3187 260 $class CF$UID 105 NS.keys CF$UID 3189 CF$UID 25 CF$UID 26 CF$UID 28 CF$UID 29 CF$UID 30 NS.objects CF$UID 3190 CF$UID 3263 CF$UID 33 CF$UID 3189 CF$UID 3264 CF$UID 23 IDEWorkspaceTabController_1703B649-D902-458A-A650-6A5F37CF9024 $class CF$UID 105 NS.keys CF$UID 42 CF$UID 36 CF$UID 35 CF$UID 38 CF$UID 39 CF$UID 40 CF$UID 41 CF$UID 37 NS.objects CF$UID 64 CF$UID 33 CF$UID 3191 CF$UID 3241 CF$UID 3247 CF$UID 3255 CF$UID 33 CF$UID 297 $class CF$UID 105 NS.keys CF$UID 44 CF$UID 45 CF$UID 46 CF$UID 47 CF$UID 48 CF$UID 49 CF$UID 50 CF$UID 51 NS.objects CF$UID 3192 CF$UID 3203 CF$UID 3219 CF$UID 153 CF$UID 64 CF$UID 3234 CF$UID 3240 CF$UID 33 $class CF$UID 73 geniusEditorContextNode CF$UID 0 primaryEditorContextNode CF$UID 3193 rootLayoutTreeNode CF$UID 3201 $class CF$UID 72 children CF$UID 0 contentType 1 documentArchivableRepresentation CF$UID 3194 orientation 0 parent CF$UID 3201 $class CF$UID 69 DocumentLocation CF$UID 3199 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 3195 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 3196 CF$UID 3197 CF$UID 3198 $class CF$UID 59 Identifier CF$UID 297 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 68 documentURL CF$UID 3200 timestamp CF$UID 0 $class CF$UID 67 NS.string file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js $class CF$UID 72 children CF$UID 3202 contentType 0 documentArchivableRepresentation CF$UID 0 orientation 0 parent CF$UID 0 $class CF$UID 32 NS.objects CF$UID 3193 $class CF$UID 105 NS.keys CF$UID 75 NS.objects CF$UID 3204 $class CF$UID 105 NS.keys CF$UID 77 NS.objects CF$UID 3205 $class CF$UID 116 NS.keys CF$UID 79 CF$UID 80 CF$UID 81 NS.objects CF$UID 3206 CF$UID 64 CF$UID 3218 $class CF$UID 32 NS.objects CF$UID 3207 $class CF$UID 105 NS.keys CF$UID 84 CF$UID 85 CF$UID 86 CF$UID 87 CF$UID 88 CF$UID 89 CF$UID 90 NS.objects CF$UID 309 CF$UID 3208 CF$UID 3213 CF$UID 297 CF$UID 297 CF$UID 323 CF$UID 3217 $class CF$UID 69 DocumentLocation CF$UID 3199 DomainIdentifier CF$UID 55 IdentifierPath CF$UID 3209 IndexOfDocumentIdentifier CF$UID 64 $class CF$UID 32 NS.objects CF$UID 3210 CF$UID 3211 CF$UID 3212 $class CF$UID 59 Identifier CF$UID 297 $class CF$UID 59 Identifier CF$UID 61 $class CF$UID 59 Identifier CF$UID 63 $class CF$UID 116 NS.keys CF$UID 316 CF$UID 317 CF$UID 318 CF$UID 319 NS.objects CF$UID 3214 CF$UID 3215 CF$UID 33 CF$UID 3216 326390327.80046099 {136, 1921} {729, 0} $class CF$UID 121 NS.base CF$UID 0 NS.relative CF$UID 325 $class CF$UID 32 NS.objects CF$UID 123 $class CF$UID 105 NS.keys CF$UID 125 CF$UID 126 CF$UID 127 CF$UID 128 CF$UID 129 CF$UID 130 NS.objects CF$UID 113 CF$UID 3220 CF$UID 3221 CF$UID 113 CF$UID 3222 CF$UID 3228 $class CF$UID 105 NS.keys CF$UID 132 NS.objects CF$UID 64 $class CF$UID 105 NS.keys CF$UID 134 NS.objects CF$UID 135 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3223 $class CF$UID 108 NS.objects CF$UID 3224 CF$UID 3226 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 3225 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 3227 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3229 $class CF$UID 108 NS.objects CF$UID 3230 CF$UID 3232 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 142 CF$UID 3231 298 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 145 CF$UID 3233 301 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3235 $class CF$UID 108 NS.objects CF$UID 3236 CF$UID 3238 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 157 CF$UID 3237 203 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 160 CF$UID 3239 115 $class CF$UID 105 NS.keys NS.objects $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3242 $class CF$UID 108 NS.objects CF$UID 3243 CF$UID 3245 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 3244 398 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 166 CF$UID 3246 224 $class CF$UID 105 NS.keys CF$UID 171 CF$UID 172 NS.objects CF$UID 172 CF$UID 3248 $class CF$UID 105 NS.keys CF$UID 174 CF$UID 175 CF$UID 176 CF$UID 177 CF$UID 178 CF$UID 179 CF$UID 180 NS.objects CF$UID 181 CF$UID 33 CF$UID 182 CF$UID 33 CF$UID 33 CF$UID 3249 CF$UID 3251 $class CF$UID 32 NS.objects CF$UID 3250 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 CF$UID 297 $class CF$UID 183 NS.objects CF$UID 3252 CF$UID 3253 CF$UID 3254 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 61 $class CF$UID 108 NS.objects CF$UID 63 $class CF$UID 108 NS.objects CF$UID 63 CF$UID 190 $class CF$UID 105 NS.keys CF$UID 137 NS.objects CF$UID 3256 $class CF$UID 108 NS.objects CF$UID 3257 CF$UID 3259 CF$UID 3261 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 39 CF$UID 3258 260 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 35 CF$UID 3260 1180 $class CF$UID 116 NS.keys CF$UID 140 CF$UID 141 NS.objects CF$UID 198 CF$UID 3262 260 $class CF$UID 32 NS.objects CF$UID 3189 {{30, 232}, {600, 646}} $top State CF$UID 1 $version 100000 ================================================ FILE: AePubReader/AePubReader.xcodeproj/project.xcworkspace/xcuserdata/FedeX.xcuserdatad/WorkspaceSettings.xcsettings ================================================ IDEWorkspaceUserSettings_HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges IDEWorkspaceUserSettings_SnapshotAutomaticallyBeforeSignificantChanges ================================================ FILE: AePubReader/AePubReader.xcodeproj/xcuserdata/FedeX.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist ================================================ ================================================ FILE: AePubReader/AePubReader.xcodeproj/xcuserdata/FedeX.xcuserdatad/xcschemes/AePubReader.xcscheme ================================================ ================================================ FILE: AePubReader/AePubReader.xcodeproj/xcuserdata/FedeX.xcuserdatad/xcschemes/xcschememanagement.plist ================================================ SchemeUserState AePubReader.xcscheme orderHint 0 SuppressBuildableAutocreation 1D6058900D05DD3D006BFB54 primary ================================================ FILE: AePubReader/AePubReader_Prefix.pch ================================================ // // Prefix header for all source files of the 'AePubReader' target in the 'AePubReader' project // #import #ifndef __IPHONE_3_2 #warning "This project uses features only available in iPhone SDK 3.2 and later." #endif #ifdef __OBJC__ #import #import #endif ================================================ FILE: AePubReader/Classes/AePubReaderAppDelegate.h ================================================ // // AePubReaderAppDelegate.h // AePubReader // // Created by Federico Frappi on 04/04/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import @class EPubViewController; @interface AePubReaderAppDelegate : NSObject { UIWindow *window; EPubViewController *detailViewController; } @property (nonatomic, retain) IBOutlet UIWindow *window; @property (nonatomic, retain) IBOutlet EPubViewController *detailViewController; @end ================================================ FILE: AePubReader/Classes/AePubReaderAppDelegate.m ================================================ // // AePubReaderAppDelegate.m // AePubReader // // Created by Federico Frappi on 04/04/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "AePubReaderAppDelegate.h" #import "EPubViewController.h" @implementation AePubReaderAppDelegate @synthesize window, detailViewController; #pragma mark - #pragma mark Application lifecycle - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after app launch. self.window.rootViewController = self.detailViewController; [self.window makeKeyAndVisible]; [detailViewController loadEpub:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"vhugo" ofType:@"epub"]]]; return YES; } - (void)applicationWillResignActive:(UIApplication *)application { /* Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. */ } - (void)applicationDidBecomeActive:(UIApplication *)application { /* Restart any tasks that were paused (or not yet started) while the application was inactive. */ } - (void)applicationWillTerminate:(UIApplication *)application { /* Called when the application is about to terminate. */ } #pragma mark - #pragma mark Memory management - (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { /* Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later. */ } - (void)dealloc { [window release]; [super dealloc]; } @end ================================================ FILE: AePubReader/Classes/Chapter.h ================================================ // // Chapter.h // AePubReader // // Created by Federico Frappi on 08/04/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import @class Chapter; @protocol ChapterDelegate @required - (void) chapterDidFinishLoad:(Chapter*)chapter; @end @interface Chapter : NSObject { NSString* spinePath; NSString* title; NSString* text; id delegate; int pageCount; int chapterIndex; CGRect windowSize; int fontPercentSize; } @property (nonatomic, assign) id delegate; @property (nonatomic, readonly) int pageCount, chapterIndex, fontPercentSize; @property (nonatomic, readonly) NSString *spinePath, *title, *text; @property (nonatomic, readonly) CGRect windowSize; - (id) initWithPath:(NSString*)theSpinePath title:(NSString*)theTitle chapterIndex:(int) theIndex; - (void) loadChapterWithWindowSize:(CGRect)theWindowSize fontPercentSize:(int) theFontPercentSize; @end ================================================ FILE: AePubReader/Classes/Chapter.m ================================================ // // Chapter.m // AePubReader // // Created by Federico Frappi on 08/04/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "Chapter.h" #import "NSString+HTML.h" @implementation Chapter @synthesize delegate, chapterIndex, title, pageCount, spinePath, text, windowSize, fontPercentSize; - (id) initWithPath:(NSString*)theSpinePath title:(NSString*)theTitle chapterIndex:(int) theIndex{ if((self=[super init])){ spinePath = [theSpinePath retain]; title = [theTitle retain]; chapterIndex = theIndex; NSString* html = [[NSString alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL fileURLWithPath:theSpinePath]] encoding:NSUTF8StringEncoding]; text = [[html stringByConvertingHTMLToPlainText] retain]; [html release]; } return self; } - (void) loadChapterWithWindowSize:(CGRect)theWindowSize fontPercentSize:(int) theFontPercentSize{ fontPercentSize = theFontPercentSize; windowSize = theWindowSize; // NSLog(@"webviewSize: %f * %f, fontPercentSize: %d", theWindowSize.size.width, theWindowSize.size.height,theFontPercentSize); UIWebView* webView = [[UIWebView alloc] initWithFrame:windowSize]; [webView setDelegate:self]; NSURLRequest* urlRequest = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:spinePath]]; [webView loadRequest:urlRequest]; } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ NSLog(@"%@", error); [webView dealloc]; } - (void) webViewDidFinishLoad:(UIWebView*)webView{ NSString *varMySheet = @"var mySheet = document.styleSheets[0];"; NSString *addCSSRule = @"function addCSSRule(selector, newRule) {" "if (mySheet.addRule) {" "mySheet.addRule(selector, newRule);" // For Internet Explorer "} else {" "ruleIndex = mySheet.cssRules.length;" "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);" // For Firefox, Chrome, etc. "}" "}"; // NSLog(@"w:%f h:%f", webView.bounds.size.width, webView.bounds.size.height); NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", webView.frame.size.height, webView.frame.size.width]; NSString *insertRule2 = [NSString stringWithFormat:@"addCSSRule('p', 'text-align: justify;')"]; NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",fontPercentSize]; [webView stringByEvaluatingJavaScriptFromString:varMySheet]; [webView stringByEvaluatingJavaScriptFromString:addCSSRule]; [webView stringByEvaluatingJavaScriptFromString:insertRule1]; [webView stringByEvaluatingJavaScriptFromString:insertRule2]; [webView stringByEvaluatingJavaScriptFromString:setTextSizeRule]; int totalWidth = [[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollWidth"] intValue]; pageCount = (int)((float)totalWidth/webView.bounds.size.width); // NSLog(@"Chapter %d: %@ -> %d pages", chapterIndex, title, pageCount); [webView dealloc]; [delegate chapterDidFinishLoad:self]; } - (void)dealloc { [title release]; [spinePath release]; [text release]; [super dealloc]; } @end ================================================ FILE: AePubReader/Classes/ChapterListViewController.h ================================================ // // ChapterListViewController.h // AePubReader // // Created by Federico Frappi on 04/05/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import #import "EPubViewController.h" @interface ChapterListViewController : UITableViewController { EPubViewController* epubViewController; } @property(nonatomic, assign) EPubViewController* epubViewController; @end ================================================ FILE: AePubReader/Classes/ChapterListViewController.m ================================================ // // ChapterListViewController.m // AePubReader // // Created by Federico Frappi on 04/05/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "ChapterListViewController.h" @implementation ChapterListViewController @synthesize epubViewController; - (id)initWithStyle:(UITableViewStyle)style { self = [super initWithStyle:style]; return self; } - (void)dealloc { [super dealloc]; } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; // Uncomment the following line to preserve selection between presentations. // self.clearsSelectionOnViewWillAppear = NO; // Uncomment the following line to display an Edit button in the navigation bar for this view controller. // self.navigationItem.rightBarButtonItem = self.editButtonItem; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. // e.g. self.myOutlet = nil; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; } - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; } - (void)viewDidDisappear:(BOOL)animated { [super viewDidDisappear:animated]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return [epubViewController.loadedEpub.spineArray count]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; } cell.textLabel.numberOfLines = 2; cell.textLabel.lineBreakMode = UILineBreakModeMiddleTruncation; cell.textLabel.adjustsFontSizeToFitWidth = YES; cell.textLabel.text = [[epubViewController.loadedEpub.spineArray objectAtIndex:[indexPath row]] title]; return cell; } #pragma mark - Table view delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; [epubViewController loadSpine:[indexPath row] atPageIndex:0 highlightSearchResult:nil]; } @end ================================================ FILE: AePubReader/Classes/ChapterListViewController.xib ================================================ 1056 10J869 1306 1038.35 461.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 301 YES IBProxyObject IBUITableView YES com.apple.InterfaceBuilder.IBCocoaTouchPlugin YES YES YES IBFilesOwner IBCocoaTouchFramework IBFirstResponder IBCocoaTouchFramework 274 {{0, 20}, {320, 460}} 3 MQA NO YES NO IBCocoaTouchFramework NO 1 0 YES 60 22 22 YES view 5 dataSource 6 delegate 7 YES 0 -1 File's Owner -2 4 YES YES -1.CustomClassName -2.CustomClassName 4.IBEditorWindowLastContentRect 4.IBPluginDependency YES ChapterListViewController UIResponder {{329, 504}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin YES YES 7 0 IBCocoaTouchFramework com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 YES 3 301 ================================================ FILE: AePubReader/Classes/EPub.h ================================================ // // EPubParser.h // AePubReader // // Created by Federico Frappi on 05/04/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import #import "TouchXML.h" @interface EPub : NSObject { NSArray* spineArray; NSString* epubFilePath; } @property(nonatomic, retain) NSArray* spineArray; - (id) initWithEPubPath:(NSString*)path; @end ================================================ FILE: AePubReader/Classes/EPub.m ================================================ // // EPub.m // AePubReader // // Created by Federico Frappi on 05/04/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "EPub.h" #import "ZipArchive.h" #import "Chapter.h" @interface EPub() - (void) parseEpub; - (void) unzipAndSaveFileNamed:(NSString*)fileName; - (NSString*) applicationDocumentsDirectory; - (NSString*) parseManifestFile; - (void) parseOPF:(NSString*)opfPath; @end @implementation EPub @synthesize spineArray; - (id) initWithEPubPath:(NSString *)path{ if((self=[super init])){ epubFilePath = [path retain]; spineArray = [[NSMutableArray alloc] init]; [self parseEpub]; } return self; } - (void) parseEpub{ [self unzipAndSaveFileNamed:epubFilePath]; NSString* opfPath = [self parseManifestFile]; [self parseOPF:opfPath]; } - (void)unzipAndSaveFileNamed:(NSString*)fileName{ ZipArchive* za = [[ZipArchive alloc] init]; // NSLog(@"%@", fileName); // NSLog(@"unzipping %@", epubFilePath); if( [za UnzipOpenFile:epubFilePath]){ NSString *strPath=[NSString stringWithFormat:@"%@/UnzippedEpub",[self applicationDocumentsDirectory]]; // NSLog(@"%@", strPath); //Delete all the previous files NSFileManager *filemanager=[[NSFileManager alloc] init]; if ([filemanager fileExistsAtPath:strPath]) { NSError *error; [filemanager removeItemAtPath:strPath error:&error]; } [filemanager release]; filemanager=nil; //start unzip BOOL ret = [za UnzipFileTo:[NSString stringWithFormat:@"%@/",strPath] overWrite:YES]; if( NO==ret ){ // error handler here UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Error" message:@"Error while unzipping the epub" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alert show]; [alert release]; alert=nil; } [za UnzipCloseFile]; } [za release]; } - (NSString *)applicationDocumentsDirectory { NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; return basePath; } - (NSString*) parseManifestFile{ NSString* manifestFilePath = [NSString stringWithFormat:@"%@/UnzippedEpub/META-INF/container.xml", [self applicationDocumentsDirectory]]; // NSLog(@"%@", manifestFilePath); NSFileManager *fileManager = [[NSFileManager alloc] init]; if ([fileManager fileExistsAtPath:manifestFilePath]) { // NSLog(@"Valid epub"); CXMLDocument* manifestFile = [[[CXMLDocument alloc] initWithContentsOfURL:[NSURL fileURLWithPath:manifestFilePath] options:0 error:nil] autorelease]; CXMLNode* opfPath = [manifestFile nodeForXPath:@"//@full-path[1]" error:nil]; // NSLog(@"%@", [NSString stringWithFormat:@"%@/UnzippedEpub/%@", [self applicationDocumentsDirectory], [opfPath stringValue]]); return [NSString stringWithFormat:@"%@/UnzippedEpub/%@", [self applicationDocumentsDirectory], [opfPath stringValue]]; } else { NSLog(@"ERROR: ePub not Valid"); return nil; } [fileManager release]; } - (void) parseOPF:(NSString*)opfPath{ CXMLDocument* opfFile = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL fileURLWithPath:opfPath] options:0 error:nil]; NSArray* itemsArray = [opfFile nodesForXPath:@"//opf:item" namespaceMappings:[NSDictionary dictionaryWithObject:@"http://www.idpf.org/2007/opf" forKey:@"opf"] error:nil]; // NSLog(@"itemsArray size: %d", [itemsArray count]); NSString* ncxFileName; NSMutableDictionary* itemDictionary = [[NSMutableDictionary alloc] init]; for (CXMLElement* element in itemsArray) { [itemDictionary setValue:[[element attributeForName:@"href"] stringValue] forKey:[[element attributeForName:@"id"] stringValue]]; if([[[element attributeForName:@"media-type"] stringValue] isEqualToString:@"application/x-dtbncx+xml"]){ ncxFileName = [[element attributeForName:@"href"] stringValue]; // NSLog(@"%@ : %@", [[element attributeForName:@"id"] stringValue], [[element attributeForName:@"href"] stringValue]); } if([[[element attributeForName:@"media-type"] stringValue] isEqualToString:@"application/xhtml+xml"]){ ncxFileName = [[element attributeForName:@"href"] stringValue]; // NSLog(@"%@ : %@", [[element attributeForName:@"id"] stringValue], [[element attributeForName:@"href"] stringValue]); } } int lastSlash = [opfPath rangeOfString:@"/" options:NSBackwardsSearch].location; NSString* ebookBasePath = [opfPath substringToIndex:(lastSlash +1)]; CXMLDocument* ncxToc = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@", ebookBasePath, ncxFileName]] options:0 error:nil]; NSMutableDictionary* titleDictionary = [[NSMutableDictionary alloc] init]; for (CXMLElement* element in itemsArray) { NSString* href = [[element attributeForName:@"href"] stringValue]; NSString* xpath = [NSString stringWithFormat:@"//ncx:content[@src='%@']/../ncx:navLabel/ncx:text", href]; NSArray* navPoints = [ncxToc nodesForXPath:xpath namespaceMappings:[NSDictionary dictionaryWithObject:@"http://www.daisy.org/z3986/2005/ncx/" forKey:@"ncx"] error:nil]; if([navPoints count]!=0){ CXMLElement* titleElement = [navPoints objectAtIndex:0]; [titleDictionary setValue:[titleElement stringValue] forKey:href]; } } NSArray* itemRefsArray = [opfFile nodesForXPath:@"//opf:itemref" namespaceMappings:[NSDictionary dictionaryWithObject:@"http://www.idpf.org/2007/opf" forKey:@"opf"] error:nil]; // NSLog(@"itemRefsArray size: %d", [itemRefsArray count]); NSMutableArray* tmpArray = [[NSMutableArray alloc] init]; int count = 0; for (CXMLElement* element in itemRefsArray) { NSString* chapHref = [itemDictionary valueForKey:[[element attributeForName:@"idref"] stringValue]]; Chapter* tmpChapter = [[Chapter alloc] initWithPath:[NSString stringWithFormat:@"%@%@", ebookBasePath, chapHref] title:[titleDictionary valueForKey:chapHref] chapterIndex:count++]; [tmpArray addObject:tmpChapter]; [tmpChapter release]; } self.spineArray = [NSArray arrayWithArray:tmpArray]; [opfFile release]; [tmpArray release]; [ncxToc release]; [itemDictionary release]; [titleDictionary release]; } - (void)dealloc { [spineArray release]; [epubFilePath release]; [super dealloc]; } @end ================================================ FILE: AePubReader/Classes/EPubView.xib ================================================ 1056 10K540 1306 1038.36 461.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 301 YES IBProxyObject IBUIBarButtonItem IBUILabel IBUIToolbar IBUISearchBar IBUIWebView IBUISlider IBUIView YES com.apple.InterfaceBuilder.IBCocoaTouchPlugin YES YES YES IBFilesOwner IBIPadFramework IBFirstResponder IBIPadFramework 274 YES 290 YES 290 {{464, 0}, {237, 44}} 3 IBIPadFramework 1 IBCocoaTouchFramework YES {768, 44} NO NO IBIPadFramework 1 YES Chapters IBIPadFramework 1 IBIPadFramework 5 a IBIPadFramework 1 A IBIPadFramework 1 IBIPadFramework 5 IBIPadFramework IBIPadFramework 2 0 266 {{18, 962}, {732, 23}} NO IBIPadFramework 0 0 0.0099999997764825821 100 271 {{334, 933}, {100, 21}} NO YES 7 NO IBIPadFramework 0/0 Helvetica 17 16 3 MC42NjY2NjY2NjY3AA 1 10 1 274 {{20, 63}, {728, 862}} 1 MSAxIDEAA YES IBIPadFramework {{0, 20}, {768, 1004}} 3 MQA NO 2 IBIPadFramework YES view 12 toolbar 65 webView 71 decreaseTextSizeClicked: 89 increaseTextSizeClicked: 90 decTextSizeButton 91 incTextSizeButton 92 currentPageLabel 95 pageSlider 96 slidingStarted: 13 97 slidingEnded: 7 101 slidingEnded: 8 102 chapterListButton 112 showChapterIndex: 113 delegate 126 doneClicked: 128 YES 0 -1 File's Owner -2 8 YES 63 YES 73 86 87 88 93 94 103 125 YES 124 127 69 Web View YES YES -1.CustomClassName -2.CustomClassName 103.IBPluginDependency 124.IBPluginDependency 127.IBPluginDependency 63.IBPluginDependency 63.IBViewBoundsToFrameTransform 69.IBPluginDependency 69.IBViewBoundsToFrameTransform 73.IBPluginDependency 8.IBEditorWindowLastContentRect 8.IBPluginDependency 86.IBPluginDependency 87.IBPluginDependency 88.IBPluginDependency 93.IBPluginDependency 94.IBPluginDependency YES EPubViewController UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin P4AAAL+AAAAAAAAAwigAAA com.apple.InterfaceBuilder.IBCocoaTouchPlugin P4AAAL+AAABCigAAw3AAAA com.apple.InterfaceBuilder.IBCocoaTouchPlugin {{318, 70}, {783, 786}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin YES YES 131 YES EPubViewController UIViewController YES YES decreaseTextSizeClicked: doneClicked: increaseTextSizeClicked: nextButtonClicked: nextPageClicked: prevButtonClicked: prevPageClicked: showChapterIndex: slidingEnded: slidingStarted: YES id id id id id id id id id id YES YES decreaseTextSizeClicked: doneClicked: increaseTextSizeClicked: nextButtonClicked: nextPageClicked: prevButtonClicked: prevPageClicked: showChapterIndex: slidingEnded: slidingStarted: YES decreaseTextSizeClicked: id doneClicked: id increaseTextSizeClicked: id nextButtonClicked: id nextPageClicked: id prevButtonClicked: id prevPageClicked: id showChapterIndex: id slidingEnded: id slidingStarted: id YES YES chapterListButton currentPageLabel decTextSizeButton incTextSizeButton pageSlider toolbar webView YES UIBarButtonItem UILabel UIBarButtonItem UIBarButtonItem UISlider UIToolbar UIWebView YES YES chapterListButton currentPageLabel decTextSizeButton incTextSizeButton pageSlider toolbar webView YES chapterListButton UIBarButtonItem currentPageLabel UILabel decTextSizeButton UIBarButtonItem incTextSizeButton UIBarButtonItem pageSlider UISlider toolbar UIToolbar webView UIWebView IBProjectSource ./Classes/EPubViewController.h 0 IBIPadFramework com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 YES 3 301 ================================================ FILE: AePubReader/Classes/EPubViewController.h ================================================ // // DetailViewController.h // AePubReader // // Created by Federico Frappi on 04/04/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import #import "ZipArchive.h" #import "EPub.h" #import "Chapter.h" @class SearchResultsViewController; @class SearchResult; @interface EPubViewController : UIViewController { UIToolbar *toolbar; UIWebView *webView; UIBarButtonItem* chapterListButton; UIBarButtonItem* decTextSizeButton; UIBarButtonItem* incTextSizeButton; UISlider* pageSlider; UILabel* currentPageLabel; EPub* loadedEpub; int currentSpineIndex; int currentPageInSpineIndex; int pagesInCurrentSpineCount; int currentTextSize; int totalPagesCount; BOOL epubLoaded; BOOL paginating; BOOL searching; UIPopoverController* chaptersPopover; UIPopoverController* searchResultsPopover; SearchResultsViewController* searchResViewController; SearchResult* currentSearchResult; } - (IBAction) showChapterIndex:(id)sender; - (IBAction) increaseTextSizeClicked:(id)sender; - (IBAction) decreaseTextSizeClicked:(id)sender; - (IBAction) slidingStarted:(id)sender; - (IBAction) slidingEnded:(id)sender; - (IBAction) doneClicked:(id)sender; - (void) loadSpine:(int)spineIndex atPageIndex:(int)pageIndex highlightSearchResult:(SearchResult*)theResult; - (void) loadEpub:(NSURL*) epubURL; @property (nonatomic, retain) EPub* loadedEpub; @property (nonatomic, retain) SearchResult* currentSearchResult; @property (nonatomic, retain) IBOutlet UIToolbar *toolbar; @property (nonatomic, retain) IBOutlet UIWebView *webView; @property (nonatomic, retain) IBOutlet UIBarButtonItem *chapterListButton; @property (nonatomic, retain) IBOutlet UIBarButtonItem *decTextSizeButton; @property (nonatomic, retain) IBOutlet UIBarButtonItem *incTextSizeButton; @property (nonatomic, retain) IBOutlet UISlider *pageSlider; @property (nonatomic, retain) IBOutlet UILabel *currentPageLabel; @property BOOL searching; @end ================================================ FILE: AePubReader/Classes/EPubViewController.m ================================================ // // DetailViewController.m // AePubReader // // Created by Federico Frappi on 04/04/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "EPubViewController.h" #import "ChapterListViewController.h" #import "SearchResultsViewController.h" #import "SearchResult.h" #import "UIWebView+SearchWebView.h" #import "Chapter.h" @interface EPubViewController() - (void) gotoNextSpine; - (void) gotoPrevSpine; - (void) gotoNextPage; - (void) gotoPrevPage; - (int) getGlobalPageCount; - (void) gotoPageInCurrentSpine: (int)pageIndex; - (void) updatePagination; - (void) loadSpine:(int)spineIndex atPageIndex:(int)pageIndex; @end @implementation EPubViewController @synthesize loadedEpub, toolbar, webView; @synthesize chapterListButton, decTextSizeButton, incTextSizeButton; @synthesize currentPageLabel, pageSlider, searching; @synthesize currentSearchResult; #pragma mark - - (void) loadEpub:(NSURL*) epubURL{ currentSpineIndex = 0; currentPageInSpineIndex = 0; pagesInCurrentSpineCount = 0; totalPagesCount = 0; searching = NO; epubLoaded = NO; self.loadedEpub = [[EPub alloc] initWithEPubPath:[epubURL path]]; epubLoaded = YES; NSLog(@"loadEpub"); [self updatePagination]; } - (void) chapterDidFinishLoad:(Chapter *)chapter{ totalPagesCount+=chapter.pageCount; if(chapter.chapterIndex + 1 < [loadedEpub.spineArray count]){ [[loadedEpub.spineArray objectAtIndex:chapter.chapterIndex+1] setDelegate:self]; [[loadedEpub.spineArray objectAtIndex:chapter.chapterIndex+1] loadChapterWithWindowSize:webView.bounds fontPercentSize:currentTextSize]; [currentPageLabel setText:[NSString stringWithFormat:@"?/%d", totalPagesCount]]; } else { [currentPageLabel setText:[NSString stringWithFormat:@"%d/%d",[self getGlobalPageCount], totalPagesCount]]; [pageSlider setValue:(float)100*(float)[self getGlobalPageCount]/(float)totalPagesCount animated:YES]; paginating = NO; NSLog(@"Pagination Ended!"); } } - (int) getGlobalPageCount{ int pageCount = 0; for(int i=0; i=pagesInCurrentSpineCount){ pageIndex = pagesInCurrentSpineCount - 1; currentPageInSpineIndex = pagesInCurrentSpineCount - 1; } float pageOffset = pageIndex*webView.bounds.size.width; NSString* goToOffsetFunc = [NSString stringWithFormat:@" function pageScroll(xOffset){ window.scroll(xOffset,0); } "]; NSString* goTo =[NSString stringWithFormat:@"pageScroll(%f)", pageOffset]; [webView stringByEvaluatingJavaScriptFromString:goToOffsetFunc]; [webView stringByEvaluatingJavaScriptFromString:goTo]; if(!paginating){ [currentPageLabel setText:[NSString stringWithFormat:@"%d/%d",[self getGlobalPageCount], totalPagesCount]]; [pageSlider setValue:(float)100*(float)[self getGlobalPageCount]/(float)totalPagesCount animated:YES]; } webView.hidden = NO; } - (void) gotoNextSpine { if(!paginating){ if(currentSpineIndex+1<[loadedEpub.spineArray count]){ [self loadSpine:++currentSpineIndex atPageIndex:0]; } } } - (void) gotoPrevSpine { if(!paginating){ if(currentSpineIndex-1>=0){ [self loadSpine:--currentSpineIndex atPageIndex:0]; } } } - (void) gotoNextPage { if(!paginating){ if(currentPageInSpineIndex+1=0){ [self gotoPageInCurrentSpine:--currentPageInSpineIndex]; } else { if(currentSpineIndex!=0){ int targetPage = [[loadedEpub.spineArray objectAtIndex:(currentSpineIndex-1)] pageCount]; [self loadSpine:--currentSpineIndex atPageIndex:targetPage-1]; } } } } - (IBAction) increaseTextSizeClicked:(id)sender{ if(!paginating){ if(currentTextSize+25<=200){ currentTextSize+=25; [self updatePagination]; if(currentTextSize == 200){ [incTextSizeButton setEnabled:NO]; } [decTextSizeButton setEnabled:YES]; } } } - (IBAction) decreaseTextSizeClicked:(id)sender{ if(!paginating){ if(currentTextSize-25>=50){ currentTextSize-=25; [self updatePagination]; if(currentTextSize==50){ [decTextSizeButton setEnabled:NO]; } [incTextSizeButton setEnabled:YES]; } } } - (IBAction) doneClicked:(id)sender{ [self dismissModalViewControllerAnimated:YES]; } - (IBAction) slidingStarted:(id)sender{ int targetPage = ((pageSlider.value/(float)100)*(float)totalPagesCount); if (targetPage==0) { targetPage++; } [currentPageLabel setText:[NSString stringWithFormat:@"%d/%d", targetPage, totalPagesCount]]; } - (IBAction) slidingEnded:(id)sender{ int targetPage = (int)((pageSlider.value/(float)100)*(float)totalPagesCount); if (targetPage==0) { targetPage++; } int pageSum = 0; int chapterIndex = 0; int pageIndex = 0; for(chapterIndex=0; chapterIndex<[loadedEpub.spineArray count]; chapterIndex++){ pageSum+=[[loadedEpub.spineArray objectAtIndex:chapterIndex] pageCount]; // NSLog(@"Chapter %d, targetPage: %d, pageSum: %d, pageIndex: %d", chapterIndex, targetPage, pageSum, (pageSum-targetPage)); if(pageSum>=targetPage){ pageIndex = [[loadedEpub.spineArray objectAtIndex:chapterIndex] pageCount] - 1 - pageSum + targetPage; break; } } [self loadSpine:chapterIndex atPageIndex:pageIndex]; } - (IBAction) showChapterIndex:(id)sender{ if(chaptersPopover==nil){ ChapterListViewController* chapterListView = [[ChapterListViewController alloc] initWithNibName:@"ChapterListViewController" bundle:[NSBundle mainBundle]]; [chapterListView setEpubViewController:self]; chaptersPopover = [[UIPopoverController alloc] initWithContentViewController:chapterListView]; [chaptersPopover setPopoverContentSize:CGSizeMake(400, 600)]; [chapterListView release]; } if ([chaptersPopover isPopoverVisible]) { [chaptersPopover dismissPopoverAnimated:YES]; }else{ [chaptersPopover presentPopoverFromBarButtonItem:chapterListButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; } } - (void)webViewDidFinishLoad:(UIWebView *)theWebView{ NSString *varMySheet = @"var mySheet = document.styleSheets[0];"; NSString *addCSSRule = @"function addCSSRule(selector, newRule) {" "if (mySheet.addRule) {" "mySheet.addRule(selector, newRule);" // For Internet Explorer "} else {" "ruleIndex = mySheet.cssRules.length;" "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);" // For Firefox, Chrome, etc. "}" "}"; NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", webView.frame.size.height, webView.frame.size.width]; NSString *insertRule2 = [NSString stringWithFormat:@"addCSSRule('p', 'text-align: justify;')"]; NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')", currentTextSize]; NSString *setHighlightColorRule = [NSString stringWithFormat:@"addCSSRule('highlight', 'background-color: yellow;')"]; [webView stringByEvaluatingJavaScriptFromString:varMySheet]; [webView stringByEvaluatingJavaScriptFromString:addCSSRule]; [webView stringByEvaluatingJavaScriptFromString:insertRule1]; [webView stringByEvaluatingJavaScriptFromString:insertRule2]; [webView stringByEvaluatingJavaScriptFromString:setTextSizeRule]; [webView stringByEvaluatingJavaScriptFromString:setHighlightColorRule]; if(currentSearchResult!=nil){ // NSLog(@"Highlighting %@", currentSearchResult.originatingQuery); [webView highlightAllOccurencesOfString:currentSearchResult.originatingQuery]; } int totalWidth = [[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollWidth"] intValue]; pagesInCurrentSpineCount = (int)((float)totalWidth/webView.bounds.size.width); [self gotoPageInCurrentSpine:currentPageInSpineIndex]; } - (void) updatePagination{ if(epubLoaded){ if(!paginating){ NSLog(@"Pagination Started!"); paginating = YES; totalPagesCount=0; [self loadSpine:currentSpineIndex atPageIndex:currentPageInSpineIndex]; [[loadedEpub.spineArray objectAtIndex:0] setDelegate:self]; [[loadedEpub.spineArray objectAtIndex:0] loadChapterWithWindowSize:webView.bounds fontPercentSize:currentTextSize]; [currentPageLabel setText:@"?/?"]; } } } - (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{ if(searchResultsPopover==nil){ searchResultsPopover = [[UIPopoverController alloc] initWithContentViewController:searchResViewController]; [searchResultsPopover setPopoverContentSize:CGSizeMake(400, 600)]; } if (![searchResultsPopover isPopoverVisible]) { [searchResultsPopover presentPopoverFromRect:searchBar.bounds inView:searchBar permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES]; } // NSLog(@"Searching for %@", [searchBar text]); if(!searching){ searching = YES; [searchResViewController searchString:[searchBar text]]; [searchBar resignFirstResponder]; } } #pragma mark - #pragma mark Rotation support // Ensure that the view controller supports rotation and that the split view can therefore show in both portrait and landscape. - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { NSLog(@"shouldAutorotate"); [self updatePagination]; return YES; } #pragma mark - #pragma mark View lifecycle // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; [webView setDelegate:self]; UIScrollView* sv = nil; for (UIView* v in webView.subviews) { if([v isKindOfClass:[UIScrollView class]]){ sv = (UIScrollView*) v; sv.scrollEnabled = NO; sv.bounces = NO; } } currentTextSize = 100; UISwipeGestureRecognizer* rightSwipeRecognizer = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(gotoNextPage)] autorelease]; [rightSwipeRecognizer setDirection:UISwipeGestureRecognizerDirectionLeft]; UISwipeGestureRecognizer* leftSwipeRecognizer = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(gotoPrevPage)] autorelease]; [leftSwipeRecognizer setDirection:UISwipeGestureRecognizerDirectionRight]; [webView addGestureRecognizer:rightSwipeRecognizer]; [webView addGestureRecognizer:leftSwipeRecognizer]; [pageSlider setThumbImage:[UIImage imageNamed:@"slider_ball.png"] forState:UIControlStateNormal]; [pageSlider setMinimumTrackImage:[[UIImage imageNamed:@"orangeSlide.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0] forState:UIControlStateNormal]; [pageSlider setMaximumTrackImage:[[UIImage imageNamed:@"yellowSlide.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0] forState:UIControlStateNormal]; searchResViewController = [[SearchResultsViewController alloc] initWithNibName:@"SearchResultsViewController" bundle:[NSBundle mainBundle]]; searchResViewController.epubViewController = self; } - (void)viewDidUnload { self.toolbar = nil; self.webView = nil; self.chapterListButton = nil; self.decTextSizeButton = nil; self.incTextSizeButton = nil; self.pageSlider = nil; self.currentPageLabel = nil; } #pragma mark - #pragma mark Memory management /* - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } */ - (void)dealloc { self.toolbar = nil; self.webView = nil; self.chapterListButton = nil; self.decTextSizeButton = nil; self.incTextSizeButton = nil; self.pageSlider = nil; self.currentPageLabel = nil; [loadedEpub release]; [chaptersPopover release]; [searchResultsPopover release]; [searchResViewController release]; [currentSearchResult release]; [super dealloc]; } @end ================================================ FILE: AePubReader/Classes/GTMDefines.h ================================================ // // GTMDefines.h // // Copyright 2008 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy // of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. // // ============================================================================ #include #include #if TARGET_OS_IPHONE #include #endif // TARGET_OS_IPHONE // Not all MAC_OS_X_VERSION_10_X macros defined in past SDKs #ifndef MAC_OS_X_VERSION_10_5 #define MAC_OS_X_VERSION_10_5 1050 #endif #ifndef MAC_OS_X_VERSION_10_6 #define MAC_OS_X_VERSION_10_6 1060 #endif // Not all __IPHONE_X macros defined in past SDKs #ifndef __IPHONE_2_1 #define __IPHONE_2_1 20100 #endif #ifndef __IPHONE_2_2 #define __IPHONE_2_2 20200 #endif #ifndef __IPHONE_3_0 #define __IPHONE_3_0 30000 #endif #ifndef __IPHONE_3_1 #define __IPHONE_3_1 30100 #endif #ifndef __IPHONE_3_2 #define __IPHONE_3_2 30200 #endif #ifndef __IPHONE_4_0 #define __IPHONE_4_0 40000 #endif // ---------------------------------------------------------------------------- // CPP symbols that can be overridden in a prefix to control how the toolbox // is compiled. // ---------------------------------------------------------------------------- // By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and // GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens // when a validation fails. If you implement your own validators, you may want // to control their internals using the same macros for consistency. #ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT #define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT 0 #endif // Give ourselves a consistent way to do inlines. Apple's macros even use // a few different actual definitions, so we're based off of the foundation // one. #if !defined(GTM_INLINE) #if defined (__GNUC__) && (__GNUC__ == 4) #define GTM_INLINE static __inline__ __attribute__((always_inline)) #else #define GTM_INLINE static __inline__ #endif #endif // Give ourselves a consistent way of doing externs that links up nicely // when mixing objc and objc++ #if !defined (GTM_EXTERN) #if defined __cplusplus #define GTM_EXTERN extern "C" #else #define GTM_EXTERN extern #endif #endif // Give ourselves a consistent way of exporting things if we have visibility // set to hidden. #if !defined (GTM_EXPORT) #define GTM_EXPORT __attribute__((visibility("default"))) #endif // _GTMDevLog & _GTMDevAssert // // _GTMDevLog & _GTMDevAssert are meant to be a very lightweight shell for // developer level errors. This implementation simply macros to NSLog/NSAssert. // It is not intended to be a general logging/reporting system. // // Please see http://code.google.com/p/google-toolbox-for-mac/wiki/DevLogNAssert // for a little more background on the usage of these macros. // // _GTMDevLog log some error/problem in debug builds // _GTMDevAssert assert if conditon isn't met w/in a method/function // in all builds. // // To replace this system, just provide different macro definitions in your // prefix header. Remember, any implementation you provide *must* be thread // safe since this could be called by anything in what ever situtation it has // been placed in. // // We only define the simple macros if nothing else has defined this. #ifndef _GTMDevLog #ifdef DEBUG #define _GTMDevLog(...) NSLog(__VA_ARGS__) #else #define _GTMDevLog(...) do { } while (0) #endif #endif // _GTMDevLog // Declared here so that it can easily be used for logging tracking if // necessary. See GTMUnitTestDevLog.h for details. @class NSString; GTM_EXTERN void _GTMUnitTestDevLog(NSString *format, ...); #ifndef _GTMDevAssert // we directly invoke the NSAssert handler so we can pass on the varargs // (NSAssert doesn't have a macro we can use that takes varargs) #if !defined(NS_BLOCK_ASSERTIONS) #define _GTMDevAssert(condition, ...) \ do { \ if (!(condition)) { \ [[NSAssertionHandler currentHandler] \ handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \ file:[NSString stringWithUTF8String:__FILE__] \ lineNumber:__LINE__ \ description:__VA_ARGS__]; \ } \ } while(0) #else // !defined(NS_BLOCK_ASSERTIONS) #define _GTMDevAssert(condition, ...) do { } while (0) #endif // !defined(NS_BLOCK_ASSERTIONS) #endif // _GTMDevAssert // _GTMCompileAssert // _GTMCompileAssert is an assert that is meant to fire at compile time if you // want to check things at compile instead of runtime. For example if you // want to check that a wchar is 4 bytes instead of 2 you would use // _GTMCompileAssert(sizeof(wchar_t) == 4, wchar_t_is_4_bytes_on_OS_X) // Note that the second "arg" is not in quotes, and must be a valid processor // symbol in it's own right (no spaces, punctuation etc). // Wrapping this in an #ifndef allows external groups to define their own // compile time assert scheme. #ifndef _GTMCompileAssert // We got this technique from here: // http://unixjunkie.blogspot.com/2007/10/better-compile-time-asserts_29.html #define _GTMCompileAssertSymbolInner(line, msg) _GTMCOMPILEASSERT ## line ## __ ## msg #define _GTMCompileAssertSymbol(line, msg) _GTMCompileAssertSymbolInner(line, msg) #define _GTMCompileAssert(test, msg) \ typedef char _GTMCompileAssertSymbol(__LINE__, msg) [ ((test) ? 1 : -1) ] #endif // _GTMCompileAssert // Macro to allow you to create NSStrings out of other macros. // #define FOO foo // NSString *fooString = GTM_NSSTRINGIFY(FOO); #if !defined (GTM_NSSTRINGIFY) #define GTM_NSSTRINGIFY_INNER(x) @#x #define GTM_NSSTRINGIFY(x) GTM_NSSTRINGIFY_INNER(x) #endif // Macro to allow fast enumeration when building for 10.5 or later, and // reliance on NSEnumerator for 10.4. Remember, NSDictionary w/ FastEnumeration // does keys, so pick the right thing, nothing is done on the FastEnumeration // side to be sure you're getting what you wanted. #ifndef GTM_FOREACH_OBJECT #if TARGET_OS_IPHONE || !(MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5) #define GTM_FOREACH_ENUMEREE(element, enumeration) \ for (element in enumeration) #define GTM_FOREACH_OBJECT(element, collection) \ for (element in collection) #define GTM_FOREACH_KEY(element, collection) \ for (element in collection) #else #define GTM_FOREACH_ENUMEREE(element, enumeration) \ for (NSEnumerator *_ ## element ## _enum = enumeration; \ (element = [_ ## element ## _enum nextObject]) != nil; ) #define GTM_FOREACH_OBJECT(element, collection) \ GTM_FOREACH_ENUMEREE(element, [collection objectEnumerator]) #define GTM_FOREACH_KEY(element, collection) \ GTM_FOREACH_ENUMEREE(element, [collection keyEnumerator]) #endif #endif // ============================================================================ // ---------------------------------------------------------------------------- // CPP symbols defined based on the project settings so the GTM code has // simple things to test against w/o scattering the knowledge of project // setting through all the code. // ---------------------------------------------------------------------------- // Provide a single constant CPP symbol that all of GTM uses for ifdefing // iPhone code. #if TARGET_OS_IPHONE // iPhone SDK // For iPhone specific stuff #define GTM_IPHONE_SDK 1 #if TARGET_IPHONE_SIMULATOR #define GTM_IPHONE_SIMULATOR 1 #else #define GTM_IPHONE_DEVICE 1 #endif // TARGET_IPHONE_SIMULATOR #else // For MacOS specific stuff #define GTM_MACOS_SDK 1 #endif // Some of our own availability macros #if GTM_MACOS_SDK #define GTM_AVAILABLE_ONLY_ON_IPHONE UNAVAILABLE_ATTRIBUTE #define GTM_AVAILABLE_ONLY_ON_MACOS #else #define GTM_AVAILABLE_ONLY_ON_IPHONE #define GTM_AVAILABLE_ONLY_ON_MACOS UNAVAILABLE_ATTRIBUTE #endif // Provide a symbol to include/exclude extra code for GC support. (This mainly // just controls the inclusion of finalize methods). #ifndef GTM_SUPPORT_GC #if GTM_IPHONE_SDK // iPhone never needs GC #define GTM_SUPPORT_GC 0 #else // We can't find a symbol to tell if GC is supported/required, so best we // do on Mac targets is include it if we're on 10.5 or later. #if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 #define GTM_SUPPORT_GC 0 #else #define GTM_SUPPORT_GC 1 #endif #endif #endif // To simplify support for 64bit (and Leopard in general), we provide the type // defines for non Leopard SDKs #if !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5) // NSInteger/NSUInteger and Max/Mins #ifndef NSINTEGER_DEFINED #if __LP64__ || NS_BUILD_32_LIKE_64 typedef long NSInteger; typedef unsigned long NSUInteger; #else typedef int NSInteger; typedef unsigned int NSUInteger; #endif #define NSIntegerMax LONG_MAX #define NSIntegerMin LONG_MIN #define NSUIntegerMax ULONG_MAX #define NSINTEGER_DEFINED 1 #endif // NSINTEGER_DEFINED // CGFloat #ifndef CGFLOAT_DEFINED #if defined(__LP64__) && __LP64__ // This really is an untested path (64bit on Tiger?) typedef double CGFloat; #define CGFLOAT_MIN DBL_MIN #define CGFLOAT_MAX DBL_MAX #define CGFLOAT_IS_DOUBLE 1 #else /* !defined(__LP64__) || !__LP64__ */ typedef float CGFloat; #define CGFLOAT_MIN FLT_MIN #define CGFLOAT_MAX FLT_MAX #define CGFLOAT_IS_DOUBLE 0 #endif /* !defined(__LP64__) || !__LP64__ */ #define CGFLOAT_DEFINED 1 #endif // CGFLOAT_DEFINED #endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 // Some support for advanced clang static analysis functionality // See http://clang-analyzer.llvm.org/annotations.html #ifndef __has_feature // Optional. #define __has_feature(x) 0 // Compatibility with non-clang compilers. #endif #ifndef NS_RETURNS_RETAINED #if __has_feature(attribute_ns_returns_retained) #define NS_RETURNS_RETAINED __attribute__((ns_returns_retained)) #else #define NS_RETURNS_RETAINED #endif #endif #ifndef NS_RETURNS_NOT_RETAINED #if __has_feature(attribute_ns_returns_not_retained) #define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained)) #else #define NS_RETURNS_NOT_RETAINED #endif #endif #ifndef CF_RETURNS_RETAINED #if __has_feature(attribute_cf_returns_retained) #define CF_RETURNS_RETAINED __attribute__((cf_returns_retained)) #else #define CF_RETURNS_RETAINED #endif #endif #ifndef CF_RETURNS_NOT_RETAINED #if __has_feature(attribute_cf_returns_not_retained) #define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained)) #else #define CF_RETURNS_NOT_RETAINED #endif #endif // Defined on 10.6 and above. #ifndef NS_FORMAT_ARGUMENT #define NS_FORMAT_ARGUMENT(A) #endif // Defined on 10.6 and above. #ifndef NS_FORMAT_FUNCTION #define NS_FORMAT_FUNCTION(F,A) #endif #ifndef GTM_NONNULL #define GTM_NONNULL(x) __attribute__((nonnull(x))) #endif // To simplify support for both Leopard and Snow Leopard we declare // the Snow Leopard protocols that we need here. #if !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6) #define GTM_10_6_PROTOCOLS_DEFINED 1 @protocol NSConnectionDelegate @end @protocol NSAnimationDelegate @end @protocol NSImageDelegate @end @protocol NSTabViewDelegate @end #endif // !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6) ================================================ FILE: AePubReader/Classes/GTMNSString+HTML.h ================================================ // // GTMNSString+HTML.h // Dealing with NSStrings that contain HTML // // Copyright 2006-2008 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy // of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. // #import /// Utilities for NSStrings containing HTML @interface NSString (GTMNSStringHTMLAdditions) /// Get a string where internal characters that need escaping for HTML are escaped // /// For example, '&' become '&'. This will only cover characters from table /// A.2.2 of http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters /// which is what you want for a unicode encoded webpage. If you have a ascii /// or non-encoded webpage, please use stringByEscapingAsciiHTML which will /// encode all characters. /// /// For obvious reasons this call is only safe once. // // Returns: // Autoreleased NSString // - (NSString *)gtm_stringByEscapingForHTML; /// Get a string where internal characters that need escaping for HTML are escaped // /// For example, '&' become '&' /// All non-mapped characters (unicode that don't have a &keyword; mapping) /// will be converted to the appropriate &#xxx; value. If your webpage is /// unicode encoded (UTF16 or UTF8) use stringByEscapingHTML instead as it is /// faster, and produces less bloated and more readable HTML (as long as you /// are using a unicode compliant HTML reader). /// /// For obvious reasons this call is only safe once. // // Returns: // Autoreleased NSString // - (NSString *)gtm_stringByEscapingForAsciiHTML; /// Get a string where internal characters that are escaped for HTML are unescaped // /// For example, '&' becomes '&' /// Handles and 2 cases as well /// // Returns: // Autoreleased NSString // - (NSString *)gtm_stringByUnescapingFromHTML; @end ================================================ FILE: AePubReader/Classes/GTMNSString+HTML.m ================================================ // // GTMNSString+HTML.m // Dealing with NSStrings that contain HTML // // Copyright 2006-2008 Google Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy // of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. // #import "GTMDefines.h" #import "GTMNSString+HTML.h" typedef struct { NSString *escapeSequence; unichar uchar; } HTMLEscapeMap; // Taken from http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters // Ordered by uchar lowest to highest for bsearching static HTMLEscapeMap gAsciiHTMLEscapeMap[] = { // A.2.2. Special characters { @""", 34 }, { @"&", 38 }, { @"'", 39 }, { @"<", 60 }, { @">", 62 }, // A.2.1. Latin-1 characters { @" ", 160 }, { @"¡", 161 }, { @"¢", 162 }, { @"£", 163 }, { @"¤", 164 }, { @"¥", 165 }, { @"¦", 166 }, { @"§", 167 }, { @"¨", 168 }, { @"©", 169 }, { @"ª", 170 }, { @"«", 171 }, { @"¬", 172 }, { @"­", 173 }, { @"®", 174 }, { @"¯", 175 }, { @"°", 176 }, { @"±", 177 }, { @"²", 178 }, { @"³", 179 }, { @"´", 180 }, { @"µ", 181 }, { @"¶", 182 }, { @"·", 183 }, { @"¸", 184 }, { @"¹", 185 }, { @"º", 186 }, { @"»", 187 }, { @"¼", 188 }, { @"½", 189 }, { @"¾", 190 }, { @"¿", 191 }, { @"À", 192 }, { @"Á", 193 }, { @"Â", 194 }, { @"Ã", 195 }, { @"Ä", 196 }, { @"Å", 197 }, { @"Æ", 198 }, { @"Ç", 199 }, { @"È", 200 }, { @"É", 201 }, { @"Ê", 202 }, { @"Ë", 203 }, { @"Ì", 204 }, { @"Í", 205 }, { @"Î", 206 }, { @"Ï", 207 }, { @"Ð", 208 }, { @"Ñ", 209 }, { @"Ò", 210 }, { @"Ó", 211 }, { @"Ô", 212 }, { @"Õ", 213 }, { @"Ö", 214 }, { @"×", 215 }, { @"Ø", 216 }, { @"Ù", 217 }, { @"Ú", 218 }, { @"Û", 219 }, { @"Ü", 220 }, { @"Ý", 221 }, { @"Þ", 222 }, { @"ß", 223 }, { @"à", 224 }, { @"á", 225 }, { @"â", 226 }, { @"ã", 227 }, { @"ä", 228 }, { @"å", 229 }, { @"æ", 230 }, { @"ç", 231 }, { @"è", 232 }, { @"é", 233 }, { @"ê", 234 }, { @"ë", 235 }, { @"ì", 236 }, { @"í", 237 }, { @"î", 238 }, { @"ï", 239 }, { @"ð", 240 }, { @"ñ", 241 }, { @"ò", 242 }, { @"ó", 243 }, { @"ô", 244 }, { @"õ", 245 }, { @"ö", 246 }, { @"÷", 247 }, { @"ø", 248 }, { @"ù", 249 }, { @"ú", 250 }, { @"û", 251 }, { @"ü", 252 }, { @"ý", 253 }, { @"þ", 254 }, { @"ÿ", 255 }, // A.2.2. Special characters cont'd { @"Œ", 338 }, { @"œ", 339 }, { @"Š", 352 }, { @"š", 353 }, { @"Ÿ", 376 }, // A.2.3. Symbols { @"ƒ", 402 }, // A.2.2. Special characters cont'd { @"ˆ", 710 }, { @"˜", 732 }, // A.2.3. Symbols cont'd { @"Α", 913 }, { @"Β", 914 }, { @"Γ", 915 }, { @"Δ", 916 }, { @"Ε", 917 }, { @"Ζ", 918 }, { @"Η", 919 }, { @"Θ", 920 }, { @"Ι", 921 }, { @"Κ", 922 }, { @"Λ", 923 }, { @"Μ", 924 }, { @"Ν", 925 }, { @"Ξ", 926 }, { @"Ο", 927 }, { @"Π", 928 }, { @"Ρ", 929 }, { @"Σ", 931 }, { @"Τ", 932 }, { @"Υ", 933 }, { @"Φ", 934 }, { @"Χ", 935 }, { @"Ψ", 936 }, { @"Ω", 937 }, { @"α", 945 }, { @"β", 946 }, { @"γ", 947 }, { @"δ", 948 }, { @"ε", 949 }, { @"ζ", 950 }, { @"η", 951 }, { @"θ", 952 }, { @"ι", 953 }, { @"κ", 954 }, { @"λ", 955 }, { @"μ", 956 }, { @"ν", 957 }, { @"ξ", 958 }, { @"ο", 959 }, { @"π", 960 }, { @"ρ", 961 }, { @"ς", 962 }, { @"σ", 963 }, { @"τ", 964 }, { @"υ", 965 }, { @"φ", 966 }, { @"χ", 967 }, { @"ψ", 968 }, { @"ω", 969 }, { @"ϑ", 977 }, { @"ϒ", 978 }, { @"ϖ", 982 }, // A.2.2. Special characters cont'd { @" ", 8194 }, { @" ", 8195 }, { @" ", 8201 }, { @"‌", 8204 }, { @"‍", 8205 }, { @"‎", 8206 }, { @"‏", 8207 }, { @"–", 8211 }, { @"—", 8212 }, { @"‘", 8216 }, { @"’", 8217 }, { @"‚", 8218 }, { @"“", 8220 }, { @"”", 8221 }, { @"„", 8222 }, { @"†", 8224 }, { @"‡", 8225 }, // A.2.3. Symbols cont'd { @"•", 8226 }, { @"…", 8230 }, // A.2.2. Special characters cont'd { @"‰", 8240 }, // A.2.3. Symbols cont'd { @"′", 8242 }, { @"″", 8243 }, // A.2.2. Special characters cont'd { @"‹", 8249 }, { @"›", 8250 }, // A.2.3. Symbols cont'd { @"‾", 8254 }, { @"⁄", 8260 }, // A.2.2. Special characters cont'd { @"€", 8364 }, // A.2.3. Symbols cont'd { @"ℑ", 8465 }, { @"℘", 8472 }, { @"ℜ", 8476 }, { @"™", 8482 }, { @"ℵ", 8501 }, { @"←", 8592 }, { @"↑", 8593 }, { @"→", 8594 }, { @"↓", 8595 }, { @"↔", 8596 }, { @"↵", 8629 }, { @"⇐", 8656 }, { @"⇑", 8657 }, { @"⇒", 8658 }, { @"⇓", 8659 }, { @"⇔", 8660 }, { @"∀", 8704 }, { @"∂", 8706 }, { @"∃", 8707 }, { @"∅", 8709 }, { @"∇", 8711 }, { @"∈", 8712 }, { @"∉", 8713 }, { @"∋", 8715 }, { @"∏", 8719 }, { @"∑", 8721 }, { @"−", 8722 }, { @"∗", 8727 }, { @"√", 8730 }, { @"∝", 8733 }, { @"∞", 8734 }, { @"∠", 8736 }, { @"∧", 8743 }, { @"∨", 8744 }, { @"∩", 8745 }, { @"∪", 8746 }, { @"∫", 8747 }, { @"∴", 8756 }, { @"∼", 8764 }, { @"≅", 8773 }, { @"≈", 8776 }, { @"≠", 8800 }, { @"≡", 8801 }, { @"≤", 8804 }, { @"≥", 8805 }, { @"⊂", 8834 }, { @"⊃", 8835 }, { @"⊄", 8836 }, { @"⊆", 8838 }, { @"⊇", 8839 }, { @"⊕", 8853 }, { @"⊗", 8855 }, { @"⊥", 8869 }, { @"⋅", 8901 }, { @"⌈", 8968 }, { @"⌉", 8969 }, { @"⌊", 8970 }, { @"⌋", 8971 }, { @"⟨", 9001 }, { @"⟩", 9002 }, { @"◊", 9674 }, { @"♠", 9824 }, { @"♣", 9827 }, { @"♥", 9829 }, { @"♦", 9830 } }; // Taken from http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters // This is table A.2.2 Special Characters static HTMLEscapeMap gUnicodeHTMLEscapeMap[] = { // C0 Controls and Basic Latin { @""", 34 }, { @"&", 38 }, { @"'", 39 }, { @"<", 60 }, { @">", 62 }, // Latin Extended-A { @"Œ", 338 }, { @"œ", 339 }, { @"Š", 352 }, { @"š", 353 }, { @"Ÿ", 376 }, // Spacing Modifier Letters { @"ˆ", 710 }, { @"˜", 732 }, // General Punctuation { @" ", 8194 }, { @" ", 8195 }, { @" ", 8201 }, { @"‌", 8204 }, { @"‍", 8205 }, { @"‎", 8206 }, { @"‏", 8207 }, { @"–", 8211 }, { @"—", 8212 }, { @"‘", 8216 }, { @"’", 8217 }, { @"‚", 8218 }, { @"“", 8220 }, { @"”", 8221 }, { @"„", 8222 }, { @"†", 8224 }, { @"‡", 8225 }, { @"‰", 8240 }, { @"‹", 8249 }, { @"›", 8250 }, { @"€", 8364 }, }; // Utility function for Bsearching table above static int EscapeMapCompare(const void *ucharVoid, const void *mapVoid) { const unichar *uchar = (const unichar*)ucharVoid; const HTMLEscapeMap *map = (const HTMLEscapeMap*)mapVoid; int val; if (*uchar > map->uchar) { val = 1; } else if (*uchar < map->uchar) { val = -1; } else { val = 0; } return val; } @implementation NSString (GTMNSStringHTMLAdditions) - (NSString *)gtm_stringByEscapingHTMLUsingTable:(HTMLEscapeMap*)table ofSize:(NSUInteger)size escapingUnicode:(BOOL)escapeUnicode { NSUInteger length = [self length]; if (!length) { return self; } NSMutableString *finalString = [NSMutableString string]; NSMutableData *data2 = [NSMutableData dataWithCapacity:sizeof(unichar) * length]; // this block is common between GTMNSString+HTML and GTMNSString+XML but // it's so short that it isn't really worth trying to share. const unichar *buffer = CFStringGetCharactersPtr((CFStringRef)self); if (!buffer) { // We want this buffer to be autoreleased. NSMutableData *data = [NSMutableData dataWithLength:length * sizeof(UniChar)]; if (!data) { // COV_NF_START - Memory fail case _GTMDevLog(@"couldn't alloc buffer"); return nil; // COV_NF_END } [self getCharacters:[data mutableBytes]]; buffer = [data bytes]; } if (!buffer || !data2) { // COV_NF_START _GTMDevLog(@"Unable to allocate buffer or data2"); return nil; // COV_NF_END } unichar *buffer2 = (unichar *)[data2 mutableBytes]; NSUInteger buffer2Length = 0; for (NSUInteger i = 0; i < length; ++i) { HTMLEscapeMap *val = bsearch(&buffer[i], table, size / sizeof(HTMLEscapeMap), sizeof(HTMLEscapeMap), EscapeMapCompare); if (val || (escapeUnicode && buffer[i] > 127)) { if (buffer2Length) { CFStringAppendCharacters((CFMutableStringRef)finalString, buffer2, buffer2Length); buffer2Length = 0; } if (val) { [finalString appendString:val->escapeSequence]; } else { _GTMDevAssert(escapeUnicode && buffer[i] > 127, @"Illegal Character"); [finalString appendFormat:@"&#%d;", buffer[i]]; } } else { buffer2[buffer2Length] = buffer[i]; buffer2Length += 1; } } if (buffer2Length) { CFStringAppendCharacters((CFMutableStringRef)finalString, buffer2, buffer2Length); } return finalString; } - (NSString *)gtm_stringByEscapingForHTML { return [self gtm_stringByEscapingHTMLUsingTable:gUnicodeHTMLEscapeMap ofSize:sizeof(gUnicodeHTMLEscapeMap) escapingUnicode:NO]; } // gtm_stringByEscapingHTML - (NSString *)gtm_stringByEscapingForAsciiHTML { return [self gtm_stringByEscapingHTMLUsingTable:gAsciiHTMLEscapeMap ofSize:sizeof(gAsciiHTMLEscapeMap) escapingUnicode:YES]; } // gtm_stringByEscapingAsciiHTML - (NSString *)gtm_stringByUnescapingFromHTML { NSRange range = NSMakeRange(0, [self length]); NSRange subrange = [self rangeOfString:@"&" options:NSBackwardsSearch range:range]; // if no ampersands, we've got a quick way out if (subrange.length == 0) return self; NSMutableString *finalString = [NSMutableString stringWithString:self]; do { NSRange semiColonRange = NSMakeRange(subrange.location, NSMaxRange(range) - subrange.location); semiColonRange = [self rangeOfString:@";" options:0 range:semiColonRange]; range = NSMakeRange(0, subrange.location); // if we don't find a semicolon in the range, we don't have a sequence if (semiColonRange.location == NSNotFound) { continue; } NSRange escapeRange = NSMakeRange(subrange.location, semiColonRange.location - subrange.location + 1); NSString *escapeString = [self substringWithRange:escapeRange]; NSUInteger length = [escapeString length]; // a squence must be longer than 3 (<) and less than 11 (ϑ) if (length > 3 && length < 11) { if ([escapeString characterAtIndex:1] == '#') { unichar char2 = [escapeString characterAtIndex:2]; if (char2 == 'x' || char2 == 'X') { // Hex escape squences £ NSString *hexSequence = [escapeString substringWithRange:NSMakeRange(3, length - 4)]; NSScanner *scanner = [NSScanner scannerWithString:hexSequence]; unsigned value; if ([scanner scanHexInt:&value] && value < USHRT_MAX && value > 0 && [scanner scanLocation] == length - 4) { unichar uchar = value; NSString *charString = [NSString stringWithCharacters:&uchar length:1]; [finalString replaceCharactersInRange:escapeRange withString:charString]; } } else { // Decimal Sequences { NSString *numberSequence = [escapeString substringWithRange:NSMakeRange(2, length - 3)]; NSScanner *scanner = [NSScanner scannerWithString:numberSequence]; int value; if ([scanner scanInt:&value] && value < USHRT_MAX && value > 0 && [scanner scanLocation] == length - 3) { unichar uchar = value; NSString *charString = [NSString stringWithCharacters:&uchar length:1]; [finalString replaceCharactersInRange:escapeRange withString:charString]; } } } else { // "standard" sequences for (unsigned i = 0; i < sizeof(gAsciiHTMLEscapeMap) / sizeof(HTMLEscapeMap); ++i) { if ([escapeString isEqualToString:gAsciiHTMLEscapeMap[i].escapeSequence]) { [finalString replaceCharactersInRange:escapeRange withString:[NSString stringWithCharacters:&gAsciiHTMLEscapeMap[i].uchar length:1]]; break; } } } } } while ((subrange = [self rangeOfString:@"&" options:NSBackwardsSearch range:range]).length != 0); return finalString; } // gtm_stringByUnescapingHTML @end ================================================ FILE: AePubReader/Classes/NSString+HTML.h ================================================ // // NSString+HTML.h // MWFeedParser // // Copyright (c) 2010 Michael Waterfall // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // 1. The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // 2. This Software cannot be used to archive or collect data such as (but not // limited to) that of events, news, experiences and activities, for the // purpose of any concept relating to diary/journal keeping. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // #import // Dependant upon GTMNSString+HTML @interface NSString (HTML) // Instance Methods - (NSString *)stringByConvertingHTMLToPlainText; - (NSString *)stringByDecodingHTMLEntities; - (NSString *)stringByEncodingHTMLEntities; - (NSString *)stringWithNewLinesAsBRs; - (NSString *)stringByRemovingNewLinesAndWhitespace; // DEPRECIATED - Please use NSString stringByConvertingHTMLToPlainText - (NSString *)stringByStrippingTags; @end ================================================ FILE: AePubReader/Classes/NSString+HTML.m ================================================ // // NSString+HTML.m // MWFeedParser // // Copyright (c) 2010 Michael Waterfall // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // 1. The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // 2. This Software cannot be used to archive or collect data such as (but not // limited to) that of events, news, experiences and activities, for the // purpose of any concept relating to diary/journal keeping. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // #import "NSString+HTML.h" #import "GTMNSString+HTML.h" @implementation NSString (HTML) #pragma mark - #pragma mark Class Methods #pragma mark - #pragma mark Instance Methods // Strip HTML tags - (NSString *)stringByConvertingHTMLToPlainText { // Pool NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Character sets NSCharacterSet *stopCharacters = [NSCharacterSet characterSetWithCharactersInString:[NSString stringWithFormat:@"< \t\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]]; NSCharacterSet *newLineAndWhitespaceCharacters = [NSCharacterSet characterSetWithCharactersInString:[NSString stringWithFormat:@" \t\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]]; NSCharacterSet *tagNameCharacters = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"]; /**/ // Scan and find all tags NSMutableString *result = [[NSMutableString alloc] initWithCapacity:self.length]; NSScanner *scanner = [[NSScanner alloc] initWithString:self]; [scanner setCharactersToBeSkipped:nil]; [scanner setCaseSensitive:YES]; NSString *str = nil, *tagName = nil; BOOL dontReplaceTagWithSpace = NO; do { // Scan up to the start of a tag or whitespace if ([scanner scanUpToCharactersFromSet:stopCharacters intoString:&str]) { [result appendString:str]; str = nil; // reset } // Check if we've stopped at a tag/comment or whitespace if ([scanner scanString:@"<" intoString:NULL]) { // Stopped at a comment or tag if ([scanner scanString:@"!--" intoString:NULL]) { // Comment [scanner scanUpToString:@"-->" intoString:NULL]; [scanner scanString:@"-->" intoString:NULL]; } else { // Tag - remove and replace with space unless it's // a closing inline tag then dont replace with a space if ([scanner scanString:@"/" intoString:NULL]) { // Closing tag - replace with space unless it's inline tagName = nil; dontReplaceTagWithSpace = NO; if ([scanner scanCharactersFromSet:tagNameCharacters intoString:&tagName]) { tagName = [tagName lowercaseString]; dontReplaceTagWithSpace = ([tagName isEqualToString:@"a"] || [tagName isEqualToString:@"b"] || [tagName isEqualToString:@"i"] || [tagName isEqualToString:@"q"] || [tagName isEqualToString:@"span"] || [tagName isEqualToString:@"em"] || [tagName isEqualToString:@"strong"] || [tagName isEqualToString:@"cite"] || [tagName isEqualToString:@"abbr"] || [tagName isEqualToString:@"acronym"] || [tagName isEqualToString:@"label"]); } // Replace tag with string unless it was an inline if (!dontReplaceTagWithSpace && result.length > 0 && ![scanner isAtEnd]) [result appendString:@" "]; } // Scan past tag [scanner scanUpToString:@">" intoString:NULL]; [scanner scanString:@">" intoString:NULL]; } } else { // Stopped at whitespace - replace all whitespace and newlines with a space if ([scanner scanCharactersFromSet:newLineAndWhitespaceCharacters intoString:NULL]) { if (result.length > 0 && ![scanner isAtEnd]) [result appendString:@" "]; // Dont append space to beginning or end of result } } } while (![scanner isAtEnd]); // Cleanup [scanner release]; // Decode HTML entities and return NSString *retString = [[result stringByDecodingHTMLEntities] retain]; [result release]; // Drain [pool drain]; // Return return [retString autorelease]; } // Decode all HTML entities using GTM - (NSString *)stringByDecodingHTMLEntities { // gtm_stringByUnescapingFromHTML can return self so create new string ;) return [NSString stringWithString:[self gtm_stringByUnescapingFromHTML]]; } // Encode all HTML entities using GTM - (NSString *)stringByEncodingHTMLEntities { // gtm_stringByUnescapingFromHTML can return self so create new string ;) return [NSString stringWithString:[self gtm_stringByEscapingForAsciiHTML]]; } // Replace newlines with
tags - (NSString *)stringWithNewLinesAsBRs { // Pool NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Strange New lines: // Next Line, U+0085 // Form Feed, U+000C // Line Separator, U+2028 // Paragraph Separator, U+2029 // Scanner NSScanner *scanner = [[NSScanner alloc] initWithString:self]; [scanner setCharactersToBeSkipped:nil]; NSMutableString *result = [[NSMutableString alloc] init]; NSString *temp; NSCharacterSet *newLineCharacters = [NSCharacterSet characterSetWithCharactersInString: [NSString stringWithFormat:@"\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]]; // Scan do { // Get non new line characters temp = nil; [scanner scanUpToCharactersFromSet:newLineCharacters intoString:&temp]; if (temp) [result appendString:temp]; temp = nil; // Add
s if ([scanner scanString:@"\r\n" intoString:nil]) { // Combine \r\n into just 1
[result appendString:@"
"]; } else if ([scanner scanCharactersFromSet:newLineCharacters intoString:&temp]) { // Scan other new line characters and add
s if (temp) { for (int i = 0; i < temp.length; i++) { [result appendString:@"
"]; } } } } while (![scanner isAtEnd]); // Cleanup & return [scanner release]; NSString *retString = [[NSString stringWithString:result] retain]; [result release]; // Drain [pool drain]; // Return return [retString autorelease]; } // Remove newlines and white space from strong - (NSString *)stringByRemovingNewLinesAndWhitespace { // Pool NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Strange New lines: // Next Line, U+0085 // Form Feed, U+000C // Line Separator, U+2028 // Paragraph Separator, U+2029 // Scanner NSScanner *scanner = [[NSScanner alloc] initWithString:self]; [scanner setCharactersToBeSkipped:nil]; NSMutableString *result = [[NSMutableString alloc] init]; NSString *temp; NSCharacterSet *newLineAndWhitespaceCharacters = [NSCharacterSet characterSetWithCharactersInString: [NSString stringWithFormat:@" \t\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]]; // Scan while (![scanner isAtEnd]) { // Get non new line or whitespace characters temp = nil; [scanner scanUpToCharactersFromSet:newLineAndWhitespaceCharacters intoString:&temp]; if (temp) [result appendString:temp]; // Replace with a space if ([scanner scanCharactersFromSet:newLineAndWhitespaceCharacters intoString:NULL]) { if (result.length > 0 && ![scanner isAtEnd]) // Dont append space to beginning or end of result [result appendString:@" "]; } } // Cleanup [scanner release]; // Return NSString *retString = [[NSString stringWithString:result] retain]; [result release]; // Drain [pool drain]; // Return return [retString autorelease]; } // Strip HTML tags // DEPRECIATED - Please use NSString stringByConvertingHTMLToPlainText - (NSString *)stringByStrippingTags { // Pool NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; // Find first & and short-cut if we can NSUInteger ampIndex = [self rangeOfString:@"<" options:NSLiteralSearch].location; if (ampIndex == NSNotFound) { return [NSString stringWithString:self]; // return copy of string as no tags found } // Scan and find all tags NSScanner *scanner = [NSScanner scannerWithString:self]; [scanner setCharactersToBeSkipped:nil]; NSMutableSet *tags = [[NSMutableSet alloc] init]; NSString *tag; do { // Scan up to < tag = nil; [scanner scanUpToString:@"<" intoString:NULL]; [scanner scanUpToString:@">" intoString:&tag]; // Add to set if (tag) { NSString *t = [[NSString alloc] initWithFormat:@"%@>", tag]; [tags addObject:t]; [t release]; } } while (![scanner isAtEnd]); // Strings NSMutableString *result = [[NSMutableString alloc] initWithString:self]; NSString *finalString; // Replace tags NSString *replacement; for (NSString *t in tags) { // Replace tag with space unless it's an inline element replacement = @" "; if ([t isEqualToString:@""] || [t isEqualToString:@""] || [t isEqualToString:@""] || [t isEqualToString:@""] || [t isEqualToString:@""] || [t isEqualToString:@""] || [t isEqualToString:@""] || [t isEqualToString:@""]) { replacement = @""; } // Replace [result replaceOccurrencesOfString:t withString:replacement options:NSLiteralSearch range:NSMakeRange(0, result.length)]; } // Remove multi-spaces and line breaks finalString = [[result stringByRemovingNewLinesAndWhitespace] retain]; // Cleanup [result release]; [tags release]; // Drain [pool drain]; // Return return [finalString autorelease]; } @end ================================================ FILE: AePubReader/Classes/SearchResult.h ================================================ // // SearchResult.h // AePubReader // // Created by Federico Frappi on 05/05/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import @interface SearchResult : NSObject { int chapterIndex; int hitIndex; int pageIndex; NSString* neighboringText; NSString* originatingQuery; } @property int chapterIndex, pageIndex, hitIndex; @property (nonatomic, retain) NSString *neighboringText, *originatingQuery; - initWithChapterIndex:(int)theChapterIndex pageIndex:(int)thePageIndex hitIndex:(int)theHitIndex neighboringText:(NSString*)theNeighboringText originatingQuery:(NSString*)theOriginatingQuery; @end ================================================ FILE: AePubReader/Classes/SearchResult.m ================================================ // // SearchResult.m // AePubReader // // Created by Federico Frappi on 05/05/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "SearchResult.h" @implementation SearchResult @synthesize pageIndex, chapterIndex, neighboringText, hitIndex, originatingQuery; - initWithChapterIndex:(int)theChapterIndex pageIndex:(int)thePageIndex hitIndex:(int)theHitIndex neighboringText:(NSString*)theNeighboringText originatingQuery:(NSString*)theOriginatingQuery{ if((self=[super init])){ chapterIndex = theChapterIndex; pageIndex = thePageIndex; hitIndex = theHitIndex; self.neighboringText = [theNeighboringText stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; self.originatingQuery = theOriginatingQuery; } return self; } - (void)dealloc { [neighboringText release]; [originatingQuery release]; [super dealloc]; } @end ================================================ FILE: AePubReader/Classes/SearchResultsViewController.h ================================================ // // SearchResultsViewController.h // AePubReader // // Created by Federico Frappi on 05/05/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import #import "EPubViewController.h" @interface SearchResultsViewController : UIViewController { UITableView* resultsTableView; NSMutableArray* results; EPubViewController* epubViewController; int currentChapterIndex; NSString* currentQuery; } @property (nonatomic, retain) IBOutlet UITableView* resultsTableView; @property (nonatomic, assign) EPubViewController* epubViewController; @property (nonatomic, retain) NSMutableArray* results; @property (nonatomic, retain) NSString* currentQuery; - (void) searchString:(NSString*)query; @end ================================================ FILE: AePubReader/Classes/SearchResultsViewController.m ================================================ // // SearchResultsViewController.m // AePubReader // // Created by Federico Frappi on 05/05/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import "SearchResultsViewController.h" #import "SearchResult.h" #import "UIWebView+SearchWebView.h" @interface SearchResultsViewController() - (void) searchString:(NSString *)query inChapterAtIndex:(int)index; @end @implementation SearchResultsViewController @synthesize resultsTableView, epubViewController, currentQuery, results; - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static NSString *CellIdentifier = @"Cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; } cell.textLabel.adjustsFontSizeToFitWidth = YES; SearchResult* hit = (SearchResult*)[results objectAtIndex:[indexPath row]]; cell.textLabel.text = [NSString stringWithFormat:@"...%@...", hit.neighboringText]; cell.detailTextLabel.text = [NSString stringWithFormat:@"Chapter %d - page %d", hit.chapterIndex, hit.pageIndex+1]; return cell; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [results count]; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ SearchResult* hit = (SearchResult*)[results objectAtIndex:[indexPath row]]; [epubViewController loadSpine:hit.chapterIndex atPageIndex:hit.pageIndex highlightSearchResult:hit]; } - (void) searchString:(NSString*)query{ self.results = [[NSMutableArray alloc] init]; [resultsTableView reloadData]; self.currentQuery=query; [self searchString:query inChapterAtIndex:0]; } - (void) searchString:(NSString *)query inChapterAtIndex:(int)index{ currentChapterIndex = index; Chapter* chapter = [epubViewController.loadedEpub.spineArray objectAtIndex:index]; NSRange range = NSMakeRange(0, chapter.text.length); range = [chapter.text rangeOfString:query options:NSCaseInsensitiveSearch range:range locale:nil]; int hitCount=0; while (range.location != NSNotFound) { range = NSMakeRange(range.location+range.length, chapter.text.length-(range.location+range.length)); range = [chapter.text rangeOfString:query options:NSCaseInsensitiveSearch range:range locale:nil]; hitCount++; } if(hitCount!=0){ UIWebView* webView = [[UIWebView alloc] initWithFrame:chapter.windowSize]; [webView setDelegate:self]; NSURLRequest* urlRequest = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:chapter.spinePath]]; [webView loadRequest:urlRequest]; } else { if((currentChapterIndex+1)<[epubViewController.loadedEpub.spineArray count]){ [self searchString:currentQuery inChapterAtIndex:(currentChapterIndex+1)]; } else { epubViewController.searching = NO; } } } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{ NSLog(@"%@", error); [webView release]; } - (void) webViewDidFinishLoad:(UIWebView*)webView{ NSString *varMySheet = @"var mySheet = document.styleSheets[0];"; NSString *addCSSRule = @"function addCSSRule(selector, newRule) {" "if (mySheet.addRule) {" "mySheet.addRule(selector, newRule);" // For Internet Explorer "} else {" "ruleIndex = mySheet.cssRules.length;" "mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);" // For Firefox, Chrome, etc. "}" "}"; // NSLog(@"w:%f h:%f", webView.bounds.size.width, webView.bounds.size.height); NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", webView.frame.size.height, webView.frame.size.width]; NSString *insertRule2 = [NSString stringWithFormat:@"addCSSRule('p', 'text-align: justify;')"]; NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",[[epubViewController.loadedEpub.spineArray objectAtIndex:currentChapterIndex] fontPercentSize]]; [webView stringByEvaluatingJavaScriptFromString:varMySheet]; [webView stringByEvaluatingJavaScriptFromString:addCSSRule]; [webView stringByEvaluatingJavaScriptFromString:insertRule1]; [webView stringByEvaluatingJavaScriptFromString:insertRule2]; [webView stringByEvaluatingJavaScriptFromString:setTextSizeRule]; [webView highlightAllOccurencesOfString:currentQuery]; NSString* foundHits = [webView stringByEvaluatingJavaScriptFromString:@"results"]; // NSLog(@"%@", foundHits); NSMutableArray* objects = [[NSMutableArray alloc] init]; NSArray* stringObjects = [foundHits componentsSeparatedByString:@";"]; for(int i=0; i<[stringObjects count]; i++){ NSArray* strObj = [[stringObjects objectAtIndex:i] componentsSeparatedByString:@","]; if([strObj count]==3){ [objects addObject:strObj]; } } NSArray* orderedRes = [objects sortedArrayUsingComparator:^(id obj1, id obj2){ int x1 = [[obj1 objectAtIndex:0] intValue]; int x2 = [[obj2 objectAtIndex:0] intValue]; int y1 = [[obj1 objectAtIndex:1] intValue]; int y2 = [[obj2 objectAtIndex:1] intValue]; if(y1y2){ return NSOrderedDescending; } else { if(x1x2){ return NSOrderedDescending; } else { return NSOrderedSame; } } }]; [objects release]; for(int i=0; i<[orderedRes count]; i++){ NSArray* currObj = [orderedRes objectAtIndex:i]; SearchResult* searchRes = [[SearchResult alloc] initWithChapterIndex:currentChapterIndex pageIndex:([[currObj objectAtIndex:1] intValue]/webView.bounds.size.height) hitIndex:0 neighboringText:[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"unescape('%@')", [currObj objectAtIndex:2]]] originatingQuery:currentQuery]; [results addObject:searchRes]; [searchRes release]; } [webView dealloc]; [resultsTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]; if((currentChapterIndex+1)<[epubViewController.loadedEpub.spineArray count]){ [self searchString:currentQuery inChapterAtIndex:(currentChapterIndex+1)]; } else { epubViewController.searching = NO; } } - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization } return self; } - (void)dealloc { self.resultsTableView = nil; [results release]; [currentQuery release]; [super dealloc]; } - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } #pragma mark - View lifecycle - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. self.resultsTableView = nil; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { // Return YES for supported orientations return (interfaceOrientation == UIInterfaceOrientationPortrait); } @end ================================================ FILE: AePubReader/Classes/SearchResultsViewController.xib ================================================ 1056 10J869 1306 1038.35 461.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 301 YES IBProxyObject IBUIView IBUITableView YES com.apple.InterfaceBuilder.IBCocoaTouchPlugin YES YES YES IBFilesOwner IBCocoaTouchFramework IBFirstResponder IBCocoaTouchFramework 274 YES 274 {407, 446} 3 MQA YES IBCocoaTouchFramework YES 1 0 YES 60 22 22 {407, 446} 3 MQA 2 IBCocoaTouchFramework YES view 3 dataSource 5 delegate 6 resultsTableView 7 YES 0 1 YES -1 File's Owner -2 4 YES YES -1.CustomClassName -2.CustomClassName 1.IBEditorWindowLastContentRect 1.IBPluginDependency 4.IBPluginDependency YES SearchResultsViewController UIResponder {{556, 412}, {320, 480}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin YES YES 13 YES SearchResultCell UITableViewCell YES YES foundTextLabel positionInfoLabel YES UILabel UILabel YES YES foundTextLabel positionInfoLabel YES foundTextLabel UILabel positionInfoLabel UILabel IBProjectSource ./Classes/SearchResultCell.h SearchResultsViewController UIViewController YES YES resultsTableView tblCell YES UITableView SearchResultCell YES YES resultsTableView tblCell YES resultsTableView UITableView tblCell SearchResultCell IBProjectSource ./Classes/SearchResultsViewController.h 0 IBCocoaTouchFramework com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 YES 3 301 ================================================ FILE: AePubReader/Classes/UIWebView+SearchWebView.h ================================================ #import @interface UIWebView (SearchWebView) - (NSInteger)highlightAllOccurencesOfString:(NSString*)str; - (void)removeAllHighlights; @end ================================================ FILE: AePubReader/Classes/UIWebView+SearchWebView.m ================================================ @implementation UIWebView (SearchWebView) - (NSInteger)highlightAllOccurencesOfString:(NSString*)str { NSString *path = [[NSBundle mainBundle] pathForResource:@"SearchWebView" ofType:@"js"]; NSString *jsCode = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil]; [self stringByEvaluatingJavaScriptFromString:jsCode]; NSString *startSearch = [NSString stringWithFormat:@"MyApp_HighlightAllOccurencesOfString('%@');",str]; [self stringByEvaluatingJavaScriptFromString:startSearch]; // NSLog(@"%@", [self stringByEvaluatingJavaScriptFromString:@"console"]); return [[self stringByEvaluatingJavaScriptFromString:@"MyApp_SearchResultCount;"] intValue]; } - (void)removeAllHighlights { [self stringByEvaluatingJavaScriptFromString:@"MyApp_RemoveAllHighlights()"]; } @end ================================================ FILE: AePubReader/Classes/ZipArchive.h ================================================ // // ZipArchive.h // // // Created by aish on 08-9-11. // acsolu@gmail.com // Copyright 2008 Inc. All rights reserved. // // History: // 09-11-2008 version 1.0 release // 10-18-2009 version 1.1 support password protected zip files // 10-21-2009 version 1.2 fix date bug #import #include "minizip/zip.h" #include "minizip/unzip.h" @protocol ZipArchiveDelegate @optional -(void) ErrorMessage:(NSString*) msg; -(BOOL) OverWriteOperation:(NSString*) file; @end @interface ZipArchive : NSObject { @private zipFile _zipFile; unzFile _unzFile; NSString* _password; id _delegate; } @property (nonatomic, retain) id delegate; -(BOOL) CreateZipFile2:(NSString*) zipFile; -(BOOL) CreateZipFile2:(NSString*) zipFile Password:(NSString*) password; -(BOOL) addFileToZip:(NSString*) file newname:(NSString*) newname; -(BOOL) CloseZipFile2; -(BOOL) UnzipOpenFile:(NSString*) zipFile; -(BOOL) UnzipOpenFile:(NSString*) zipFile Password:(NSString*) password; -(BOOL) UnzipFileTo:(NSString*) path overWrite:(BOOL) overwrite; -(BOOL) UnzipCloseFile; @end ================================================ FILE: AePubReader/Classes/ZipArchive.mm ================================================ // // ZipArchive.mm // // // Created by aish on 08-9-11. // acsolu@gmail.com // Copyright 2008 Inc. All rights reserved. // #import "ZipArchive.h" #import "zlib.h" #import "zconf.h" @interface ZipArchive (Private) -(void) OutputErrorMessage:(NSString*) msg; -(BOOL) OverWrite:(NSString*) file; -(NSDate*) Date1980; @end @implementation ZipArchive @synthesize delegate = _delegate; -(id) init { if( self=[super init] ) { _zipFile = NULL ; } return self; } -(void) dealloc { [self CloseZipFile2]; [super dealloc]; } -(BOOL) CreateZipFile2:(NSString*) zipFile { _zipFile = zipOpen( (const char*)[zipFile UTF8String], 0 ); if( !_zipFile ) return NO; return YES; } -(BOOL) CreateZipFile2:(NSString*) zipFile Password:(NSString*) password { _password = password; return [self CreateZipFile2:zipFile]; } -(BOOL) addFileToZip:(NSString*) file newname:(NSString*) newname; { if( !_zipFile ) return NO; // tm_zip filetime; time_t current; time( ¤t ); zip_fileinfo zipInfo = {0}; // zipInfo.dosDate = (unsigned long) current; NSDictionary* attr = [[NSFileManager defaultManager] fileAttributesAtPath:file traverseLink:YES]; if( attr ) { NSDate* fileDate = (NSDate*)[attr objectForKey:NSFileModificationDate]; if( fileDate ) { // some application does use dosDate, but tmz_date instead // zipInfo.dosDate = [fileDate timeIntervalSinceDate:[self Date1980] ]; NSCalendar* currCalendar = [NSCalendar currentCalendar]; uint flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ; NSDateComponents* dc = [currCalendar components:flags fromDate:fileDate]; zipInfo.tmz_date.tm_sec = [dc second]; zipInfo.tmz_date.tm_min = [dc minute]; zipInfo.tmz_date.tm_hour = [dc hour]; zipInfo.tmz_date.tm_mday = [dc day]; zipInfo.tmz_date.tm_mon = [dc month] - 1; zipInfo.tmz_date.tm_year = [dc year]; } } int ret ; NSData* data = nil; if( [_password length] == 0 ) { ret = zipOpenNewFileInZip( _zipFile, (const char*) [newname UTF8String], &zipInfo, NULL,0, NULL,0, NULL,//comment Z_DEFLATED, Z_DEFAULT_COMPRESSION ); } else { data = [ NSData dataWithContentsOfFile:file]; uLong crcValue = crc32( 0L,NULL, 0L ); crcValue = crc32( crcValue, (const Bytef*)[data bytes], [data length] ); ret = zipOpenNewFileInZip3( _zipFile, (const char*) [newname UTF8String], &zipInfo, NULL,0, NULL,0, NULL,//comment Z_DEFLATED, Z_DEFAULT_COMPRESSION, 0, 15, 8, Z_DEFAULT_STRATEGY, [_password cStringUsingEncoding:NSASCIIStringEncoding], crcValue ); } if( ret!=Z_OK ) { return NO; } if( data==nil ) { data = [ NSData dataWithContentsOfFile:file]; } unsigned int dataLen = [data length]; ret = zipWriteInFileInZip( _zipFile, (const void*)[data bytes], dataLen); if( ret!=Z_OK ) { return NO; } ret = zipCloseFileInZip( _zipFile ); if( ret!=Z_OK ) return NO; return YES; } -(BOOL) CloseZipFile2 { _password = nil; if( _zipFile==NULL ) return NO; BOOL ret = zipClose( _zipFile,NULL )==Z_OK?YES:NO; _zipFile = NULL; return ret; } -(BOOL) UnzipOpenFile:(NSString*) zipFile { _unzFile = unzOpen( (const char*)[zipFile UTF8String] ); if( _unzFile ) { unz_global_info globalInfo = {0}; if( unzGetGlobalInfo(_unzFile, &globalInfo )==UNZ_OK ) { NSLog([NSString stringWithFormat:@"%d entries in the zip file",globalInfo.number_entry] ); } } return _unzFile!=NULL; } -(BOOL) UnzipOpenFile:(NSString*) zipFile Password:(NSString*) password { _password = password; return [self UnzipOpenFile:zipFile]; } -(BOOL) UnzipFileTo:(NSString*) path overWrite:(BOOL) overwrite { BOOL success = YES; int ret = unzGoToFirstFile( _unzFile ); unsigned char buffer[4096] = {0}; NSFileManager* fman = [NSFileManager defaultManager]; if( ret!=UNZ_OK ) { [self OutputErrorMessage:@"Failed"]; } do{ if( [_password length]==0 ) ret = unzOpenCurrentFile( _unzFile ); else ret = unzOpenCurrentFilePassword( _unzFile, [_password cStringUsingEncoding:NSASCIIStringEncoding] ); if( ret!=UNZ_OK ) { [self OutputErrorMessage:@"Error occurs"]; success = NO; break; } // reading data and write to file int read ; unz_file_info fileInfo ={0}; ret = unzGetCurrentFileInfo(_unzFile, &fileInfo, NULL, 0, NULL, 0, NULL, 0); if( ret!=UNZ_OK ) { [self OutputErrorMessage:@"Error occurs while getting file info"]; success = NO; unzCloseCurrentFile( _unzFile ); break; } char* filename = (char*) malloc( fileInfo.size_filename +1 ); unzGetCurrentFileInfo(_unzFile, &fileInfo, filename, fileInfo.size_filename + 1, NULL, 0, NULL, 0); filename[fileInfo.size_filename] = '\0'; // check if it contains directory NSString * strPath = [NSString stringWithCString:filename]; BOOL isDirectory = NO; if( filename[fileInfo.size_filename-1]=='/' || filename[fileInfo.size_filename-1]=='\\') isDirectory = YES; free( filename ); if( [strPath rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"/\\"]].location!=NSNotFound ) {// contains a path strPath = [strPath stringByReplacingOccurrencesOfString:@"\\" withString:@"/"]; } NSString* fullPath = [path stringByAppendingPathComponent:strPath]; if( isDirectory ) [fman createDirectoryAtPath:fullPath withIntermediateDirectories:YES attributes:nil error:nil]; else [fman createDirectoryAtPath:[fullPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil]; if( [fman fileExistsAtPath:fullPath] && !isDirectory && !overwrite ) { if( ![self OverWrite:fullPath] ) { unzCloseCurrentFile( _unzFile ); ret = unzGoToNextFile( _unzFile ); continue; } } FILE* fp = fopen( (const char*)[fullPath UTF8String], "wb"); while( fp ) { read=unzReadCurrentFile(_unzFile, buffer, 4096); if( read > 0 ) { fwrite(buffer, read, 1, fp ); } else if( read<0 ) { [self OutputErrorMessage:@"Failed to reading zip file"]; break; } else break; } if( fp ) { fclose( fp ); // set the orignal datetime property NSDate* orgDate = nil; //{{ thanks to brad.eaton for the solution NSDateComponents *dc = [[NSDateComponents alloc] init]; dc.second = fileInfo.tmu_date.tm_sec; dc.minute = fileInfo.tmu_date.tm_min; dc.hour = fileInfo.tmu_date.tm_hour; dc.day = fileInfo.tmu_date.tm_mday; dc.month = fileInfo.tmu_date.tm_mon+1; dc.year = fileInfo.tmu_date.tm_year; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; orgDate = [gregorian dateFromComponents:dc] ; [dc release]; [gregorian release]; //}} NSDictionary* attr = [NSDictionary dictionaryWithObject:orgDate forKey:NSFileModificationDate]; //[[NSFileManager defaultManager] fileAttributesAtPath:fullPath traverseLink:YES]; if( attr ) { // [attr setValue:orgDate forKey:NSFileCreationDate]; if( ![[NSFileManager defaultManager] setAttributes:attr ofItemAtPath:fullPath error:nil] ) { // cann't set attributes NSLog(@"Failed to set attributes"); } } } unzCloseCurrentFile( _unzFile ); ret = unzGoToNextFile( _unzFile ); }while( ret==UNZ_OK && UNZ_OK!=UNZ_END_OF_LIST_OF_FILE ); return success; } -(BOOL) UnzipCloseFile { _password = nil; if( _unzFile ) return unzClose( _unzFile )==UNZ_OK; return YES; } #pragma mark wrapper for delegate -(void) OutputErrorMessage:(NSString*) msg { if( _delegate && [_delegate respondsToSelector:@selector(ErrorMessage)] ) [_delegate ErrorMessage:msg]; } -(BOOL) OverWrite:(NSString*) file { if( _delegate && [_delegate respondsToSelector:@selector(OverWriteOperation)] ) return [_delegate OverWriteOperation:file]; return YES; } #pragma mark get NSDate object for 1980-01-01 -(NSDate*) Date1980 { NSDateComponents *comps = [[NSDateComponents alloc] init]; [comps setDay:1]; [comps setMonth:1]; [comps setYear:1980]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *date = [gregorian dateFromComponents:comps]; [comps release]; [gregorian release]; return date; } @end ================================================ FILE: AePubReader/Classes/minizip/crypt.h ================================================ /* crypt.h -- base code for crypt/uncrypt ZIPfile Version 1.01e, February 12th, 2005 Copyright (C) 1998-2005 Gilles Vollant This code is a modified version of crypting code in Infozip distribution The encryption/decryption parts of this source code (as opposed to the non-echoing password parts) were originally written in Europe. The whole source package can be freely distributed, including from the USA. (Prior to January 2000, re-export from the US was a violation of US law.) This encryption code is a direct transcription of the algorithm from Roger Schlafly, described by Phil Katz in the file appnote.txt. This file (appnote.txt) is distributed with the PKZIP program (even in the version without encryption capabilities). If you don't need crypting in your application, just define symbols NOCRYPT and NOUNCRYPT. This code support the "Traditional PKWARE Encryption". The new AES encryption added on Zip format by Winzip (see the page http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong Encryption is not supported. */ #define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8)) /*********************************************************************** * Return the next byte in the pseudo-random sequence */ static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab) { unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an * unpredictable manner on 16-bit systems; not a problem * with any known compiler so far, though */ temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2; return (int)(((temp * (temp ^ 1)) >> 8) & 0xff); } /*********************************************************************** * Update the encryption keys with the next byte of plain text */ static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c) { (*(pkeys+0)) = CRC32((*(pkeys+0)), c); (*(pkeys+1)) += (*(pkeys+0)) & 0xff; (*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1; { register int keyshift = (int)((*(pkeys+1)) >> 24); (*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift); } return c; } /*********************************************************************** * Initialize the encryption keys and the random header according to * the given password. */ static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab) { *(pkeys+0) = 305419896L; *(pkeys+1) = 591751049L; *(pkeys+2) = 878082192L; while (*passwd != '\0') { update_keys(pkeys,pcrc_32_tab,(int)*passwd); passwd++; } } #define zdecode(pkeys,pcrc_32_tab,c) \ (update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab))) #define zencode(pkeys,pcrc_32_tab,c,t) \ (t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c)) #ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED #define RAND_HEAD_LEN 12 /* "last resort" source for second part of crypt seed pattern */ # ifndef ZCR_SEED2 # define ZCR_SEED2 3141592654UL /* use PI as default pattern */ # endif static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting) const char *passwd; /* password string */ unsigned char *buf; /* where to write header */ int bufSize; unsigned long* pkeys; const unsigned long* pcrc_32_tab; unsigned long crcForCrypting; { int n; /* index in random header */ int t; /* temporary */ int c; /* random byte */ unsigned char header[RAND_HEAD_LEN-2]; /* random header */ static unsigned calls = 0; /* ensure different random header each time */ if (bufSize> 7) & 0xff; header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t); } /* Encrypt random header (last two bytes is high word of crc) */ init_keys(passwd, pkeys, pcrc_32_tab); for (n = 0; n < RAND_HEAD_LEN-2; n++) { buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t); } buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t); buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t); return n; } #endif ================================================ FILE: AePubReader/Classes/minizip/ioapi.c ================================================ /* ioapi.c -- IO base function header for compress/uncompress .zip files using zlib + zip or unzip API Version 1.01e, February 12th, 2005 Copyright (C) 1998-2005 Gilles Vollant */ #include #include #include #include "zlib.h" #include "ioapi.h" /* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ #ifndef SEEK_CUR #define SEEK_CUR 1 #endif #ifndef SEEK_END #define SEEK_END 2 #endif #ifndef SEEK_SET #define SEEK_SET 0 #endif voidpf ZCALLBACK fopen_file_func OF(( voidpf opaque, const char* filename, int mode)); uLong ZCALLBACK fread_file_func OF(( voidpf opaque, voidpf stream, void* buf, uLong size)); uLong ZCALLBACK fwrite_file_func OF(( voidpf opaque, voidpf stream, const void* buf, uLong size)); long ZCALLBACK ftell_file_func OF(( voidpf opaque, voidpf stream)); long ZCALLBACK fseek_file_func OF(( voidpf opaque, voidpf stream, uLong offset, int origin)); int ZCALLBACK fclose_file_func OF(( voidpf opaque, voidpf stream)); int ZCALLBACK ferror_file_func OF(( voidpf opaque, voidpf stream)); voidpf ZCALLBACK fopen_file_func (opaque, filename, mode) voidpf opaque; const char* filename; int mode; { FILE* file = NULL; const char* mode_fopen = NULL; if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ) mode_fopen = "rb"; else if (mode & ZLIB_FILEFUNC_MODE_EXISTING) mode_fopen = "r+b"; else if (mode & ZLIB_FILEFUNC_MODE_CREATE) mode_fopen = "wb"; if ((filename!=NULL) && (mode_fopen != NULL)) file = fopen(filename, mode_fopen); return file; } uLong ZCALLBACK fread_file_func (opaque, stream, buf, size) voidpf opaque; voidpf stream; void* buf; uLong size; { uLong ret; ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream); return ret; } uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size) voidpf opaque; voidpf stream; const void* buf; uLong size; { uLong ret; ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream); return ret; } long ZCALLBACK ftell_file_func (opaque, stream) voidpf opaque; voidpf stream; { long ret; ret = ftell((FILE *)stream); return ret; } long ZCALLBACK fseek_file_func (opaque, stream, offset, origin) voidpf opaque; voidpf stream; uLong offset; int origin; { int fseek_origin=0; long ret; switch (origin) { case ZLIB_FILEFUNC_SEEK_CUR : fseek_origin = SEEK_CUR; break; case ZLIB_FILEFUNC_SEEK_END : fseek_origin = SEEK_END; break; case ZLIB_FILEFUNC_SEEK_SET : fseek_origin = SEEK_SET; break; default: return -1; } ret = 0; fseek((FILE *)stream, offset, fseek_origin); return ret; } int ZCALLBACK fclose_file_func (opaque, stream) voidpf opaque; voidpf stream; { int ret; ret = fclose((FILE *)stream); return ret; } int ZCALLBACK ferror_file_func (opaque, stream) voidpf opaque; voidpf stream; { int ret; ret = ferror((FILE *)stream); return ret; } void fill_fopen_filefunc (pzlib_filefunc_def) zlib_filefunc_def* pzlib_filefunc_def; { pzlib_filefunc_def->zopen_file = fopen_file_func; pzlib_filefunc_def->zread_file = fread_file_func; pzlib_filefunc_def->zwrite_file = fwrite_file_func; pzlib_filefunc_def->ztell_file = ftell_file_func; pzlib_filefunc_def->zseek_file = fseek_file_func; pzlib_filefunc_def->zclose_file = fclose_file_func; pzlib_filefunc_def->zerror_file = ferror_file_func; pzlib_filefunc_def->opaque = NULL; } ================================================ FILE: AePubReader/Classes/minizip/ioapi.h ================================================ /* ioapi.h -- IO base function header for compress/uncompress .zip files using zlib + zip or unzip API Version 1.01e, February 12th, 2005 Copyright (C) 1998-2005 Gilles Vollant */ #ifndef _ZLIBIOAPI_H #define _ZLIBIOAPI_H #define ZLIB_FILEFUNC_SEEK_CUR (1) #define ZLIB_FILEFUNC_SEEK_END (2) #define ZLIB_FILEFUNC_SEEK_SET (0) #define ZLIB_FILEFUNC_MODE_READ (1) #define ZLIB_FILEFUNC_MODE_WRITE (2) #define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3) #define ZLIB_FILEFUNC_MODE_EXISTING (4) #define ZLIB_FILEFUNC_MODE_CREATE (8) #ifndef ZCALLBACK #if (defined(WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK) #define ZCALLBACK CALLBACK #else #define ZCALLBACK #endif #endif #ifdef __cplusplus extern "C" { #endif typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode)); typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size)); typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size)); typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream)); typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin)); typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream)); typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream)); typedef struct zlib_filefunc_def_s { open_file_func zopen_file; read_file_func zread_file; write_file_func zwrite_file; tell_file_func ztell_file; seek_file_func zseek_file; close_file_func zclose_file; testerror_file_func zerror_file; voidpf opaque; } zlib_filefunc_def; void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def)); #define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size)) #define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size)) #define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream)) #define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode)) #define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream)) #define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream)) #ifdef __cplusplus } #endif #endif ================================================ FILE: AePubReader/Classes/minizip/mztools.c ================================================ /* Additional tools for Minizip Code: Xavier Roche '2004 License: Same as ZLIB (www.gzip.org) */ /* Code */ #include #include #include #include "zlib.h" #include "unzip.h" #define READ_8(adr) ((unsigned char)*(adr)) #define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) ) #define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) ) #define WRITE_8(buff, n) do { \ *((unsigned char*)(buff)) = (unsigned char) ((n) & 0xff); \ } while(0) #define WRITE_16(buff, n) do { \ WRITE_8((unsigned char*)(buff), n); \ WRITE_8(((unsigned char*)(buff)) + 1, (n) >> 8); \ } while(0) #define WRITE_32(buff, n) do { \ WRITE_16((unsigned char*)(buff), (n) & 0xffff); \ WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \ } while(0) extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered) const char* file; const char* fileOut; const char* fileOutTmp; uLong* nRecovered; uLong* bytesRecovered; { int err = Z_OK; FILE* fpZip = fopen(file, "rb"); FILE* fpOut = fopen(fileOut, "wb"); FILE* fpOutCD = fopen(fileOutTmp, "wb"); if (fpZip != NULL && fpOut != NULL) { int entries = 0; uLong totalBytes = 0; char header[30]; char filename[256]; char extra[1024]; int offset = 0; int offsetCD = 0; while ( fread(header, 1, 30, fpZip) == 30 ) { int currentOffset = offset; /* File entry */ if (READ_32(header) == 0x04034b50) { unsigned int version = READ_16(header + 4); unsigned int gpflag = READ_16(header + 6); unsigned int method = READ_16(header + 8); unsigned int filetime = READ_16(header + 10); unsigned int filedate = READ_16(header + 12); unsigned int crc = READ_32(header + 14); /* crc */ unsigned int cpsize = READ_32(header + 18); /* compressed size */ unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */ unsigned int fnsize = READ_16(header + 26); /* file name length */ unsigned int extsize = READ_16(header + 28); /* extra field length */ filename[0] = extra[0] = '\0'; /* Header */ if (fwrite(header, 1, 30, fpOut) == 30) { offset += 30; } else { err = Z_ERRNO; break; } /* Filename */ if (fnsize > 0) { if (fread(filename, 1, fnsize, fpZip) == fnsize) { if (fwrite(filename, 1, fnsize, fpOut) == fnsize) { offset += fnsize; } else { err = Z_ERRNO; break; } } else { err = Z_ERRNO; break; } } else { err = Z_STREAM_ERROR; break; } /* Extra field */ if (extsize > 0) { if (fread(extra, 1, extsize, fpZip) == extsize) { if (fwrite(extra, 1, extsize, fpOut) == extsize) { offset += extsize; } else { err = Z_ERRNO; break; } } else { err = Z_ERRNO; break; } } /* Data */ { int dataSize = cpsize; if (dataSize == 0) { dataSize = uncpsize; } if (dataSize > 0) { char* data = malloc(dataSize); if (data != NULL) { if ((int)fread(data, 1, dataSize, fpZip) == dataSize) { if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) { offset += dataSize; totalBytes += dataSize; } else { err = Z_ERRNO; } } else { err = Z_ERRNO; } free(data); if (err != Z_OK) { break; } } else { err = Z_MEM_ERROR; break; } } } /* Central directory entry */ { char header[46]; char* comment = ""; int comsize = (int) strlen(comment); WRITE_32(header, 0x02014b50); WRITE_16(header + 4, version); WRITE_16(header + 6, version); WRITE_16(header + 8, gpflag); WRITE_16(header + 10, method); WRITE_16(header + 12, filetime); WRITE_16(header + 14, filedate); WRITE_32(header + 16, crc); WRITE_32(header + 20, cpsize); WRITE_32(header + 24, uncpsize); WRITE_16(header + 28, fnsize); WRITE_16(header + 30, extsize); WRITE_16(header + 32, comsize); WRITE_16(header + 34, 0); /* disk # */ WRITE_16(header + 36, 0); /* int attrb */ WRITE_32(header + 38, 0); /* ext attrb */ WRITE_32(header + 42, currentOffset); /* Header */ if (fwrite(header, 1, 46, fpOutCD) == 46) { offsetCD += 46; /* Filename */ if (fnsize > 0) { if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) { offsetCD += fnsize; } else { err = Z_ERRNO; break; } } else { err = Z_STREAM_ERROR; break; } /* Extra field */ if (extsize > 0) { if (fwrite(extra, 1, extsize, fpOutCD) == extsize) { offsetCD += extsize; } else { err = Z_ERRNO; break; } } /* Comment field */ if (comsize > 0) { if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) { offsetCD += comsize; } else { err = Z_ERRNO; break; } } } else { err = Z_ERRNO; break; } } /* Success */ entries++; } else { break; } } /* Final central directory */ { int entriesZip = entries; char header[22]; char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools"; int comsize = (int) strlen(comment); if (entriesZip > 0xffff) { entriesZip = 0xffff; } WRITE_32(header, 0x06054b50); WRITE_16(header + 4, 0); /* disk # */ WRITE_16(header + 6, 0); /* disk # */ WRITE_16(header + 8, entriesZip); /* hack */ WRITE_16(header + 10, entriesZip); /* hack */ WRITE_32(header + 12, offsetCD); /* size of CD */ WRITE_32(header + 16, offset); /* offset to CD */ WRITE_16(header + 20, comsize); /* comment */ /* Header */ if (fwrite(header, 1, 22, fpOutCD) == 22) { /* Comment field */ if (comsize > 0) { if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) { err = Z_ERRNO; } } } else { err = Z_ERRNO; } } /* Final merge (file + central directory) */ fclose(fpOutCD); if (err == Z_OK) { fpOutCD = fopen(fileOutTmp, "rb"); if (fpOutCD != NULL) { int nRead; char buffer[8192]; while ( (nRead = (int)fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) { if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) { err = Z_ERRNO; break; } } fclose(fpOutCD); } } /* Close */ fclose(fpZip); fclose(fpOut); /* Wipe temporary file */ (void)remove(fileOutTmp); /* Number of recovered entries */ if (err == Z_OK) { if (nRecovered != NULL) { *nRecovered = entries; } if (bytesRecovered != NULL) { *bytesRecovered = totalBytes; } } } else { err = Z_STREAM_ERROR; } return err; } ================================================ FILE: AePubReader/Classes/minizip/mztools.h ================================================ /* Additional tools for Minizip Code: Xavier Roche '2004 License: Same as ZLIB (www.gzip.org) */ #ifndef _zip_tools_H #define _zip_tools_H #ifdef __cplusplus extern "C" { #endif #ifndef _ZLIB_H #include "zlib.h" #endif #include "unzip.h" /* Repair a ZIP file (missing central directory) file: file to recover fileOut: output file after recovery fileOutTmp: temporary file name used for recovery */ extern int ZEXPORT unzRepair(const char* file, const char* fileOut, const char* fileOutTmp, uLong* nRecovered, uLong* bytesRecovered); #endif ================================================ FILE: AePubReader/Classes/minizip/unzip.c ================================================ /* unzip.c -- IO for uncompress .zip files using zlib Version 1.01e, February 12th, 2005 Copyright (C) 1998-2005 Gilles Vollant Read unzip.h for more info */ /* Decryption code comes from crypt.c by Info-ZIP but has been greatly reduced in terms of compatibility with older software. The following is from the original crypt.c. Code woven in by Terry Thorsen 1/2003. */ /* Copyright (c) 1990-2000 Info-ZIP. All rights reserved. See the accompanying file LICENSE, version 2000-Apr-09 or later (the contents of which are also included in zip.h) for terms of use. If, for some reason, all these files are missing, the Info-ZIP license also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html */ /* crypt.c (full version) by Info-ZIP. Last revised: [see crypt.h] The encryption/decryption parts of this source code (as opposed to the non-echoing password parts) were originally written in Europe. The whole source package can be freely distributed, including from the USA. (Prior to January 2000, re-export from the US was a violation of US law.) */ /* This encryption code is a direct transcription of the algorithm from Roger Schlafly, described by Phil Katz in the file appnote.txt. This file (appnote.txt) is distributed with the PKZIP program (even in the version without encryption capabilities). */ #include #include #include #include "zlib.h" #include "unzip.h" #ifdef STDC # include # include # include #endif #ifdef NO_ERRNO_H extern int errno; #else # include #endif #ifndef local # define local static #endif /* compile with -Dlocal if your debugger can't find static symbols */ #ifndef CASESENSITIVITYDEFAULT_NO # if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES) # define CASESENSITIVITYDEFAULT_NO # endif #endif #ifndef UNZ_BUFSIZE #define UNZ_BUFSIZE (16384) #endif #ifndef UNZ_MAXFILENAMEINZIP #define UNZ_MAXFILENAMEINZIP (256) #endif #ifndef ALLOC # define ALLOC(size) (malloc(size)) #endif #ifndef TRYFREE # define TRYFREE(p) {if (p) free(p);} #endif #define SIZECENTRALDIRITEM (0x2e) #define SIZEZIPLOCALHEADER (0x1e) const char unz_copyright[] = " unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; /* unz_file_info_interntal contain internal info about a file in zipfile*/ typedef struct unz_file_info_internal_s { uLong offset_curfile;/* relative offset of local header 4 bytes */ } unz_file_info_internal; /* file_in_zip_read_info_s contain internal information about a file in zipfile, when reading and decompress it */ typedef struct { char *read_buffer; /* internal buffer for compressed data */ z_stream stream; /* zLib stream structure for inflate */ uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/ uLong stream_initialised; /* flag set if stream structure is initialised*/ uLong offset_local_extrafield;/* offset of the local extra field */ uInt size_local_extrafield;/* size of the local extra field */ uLong pos_local_extrafield; /* position in the local extra field in read*/ uLong crc32; /* crc32 of all data uncompressed */ uLong crc32_wait; /* crc32 we must obtain after decompress all */ uLong rest_read_compressed; /* number of byte to be decompressed */ uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/ zlib_filefunc_def z_filefunc; voidpf filestream; /* io structore of the zipfile */ uLong compression_method; /* compression method (0==store) */ uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ int raw; } file_in_zip_read_info_s; /* unz_s contain internal information about the zipfile */ typedef struct { zlib_filefunc_def z_filefunc; voidpf filestream; /* io structore of the zipfile */ unz_global_info gi; /* public global information */ uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ uLong num_file; /* number of the current file in the zipfile*/ uLong pos_in_central_dir; /* pos of the current file in the central dir*/ uLong current_file_ok; /* flag about the usability of the current file*/ uLong central_pos; /* position of the beginning of the central dir*/ uLong size_central_dir; /* size of the central directory */ uLong offset_central_dir; /* offset of start of central directory with respect to the starting disk number */ unz_file_info cur_file_info; /* public info about the current file in zip*/ unz_file_info_internal cur_file_info_internal; /* private info about it*/ file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current file if we are decompressing it */ int encrypted; # ifndef NOUNCRYPT unsigned long keys[3]; /* keys defining the pseudo-random sequence */ const unsigned long* pcrc_32_tab; # endif } unz_s; #ifndef NOUNCRYPT #include "crypt.h" #endif /* =========================================================================== Read a byte from a gz_stream; update next_in and avail_in. Return EOF for end of file. IN assertion: the stream s has been sucessfully opened for reading. */ local int unzlocal_getByte OF(( const zlib_filefunc_def* pzlib_filefunc_def, voidpf filestream, int *pi)); local int unzlocal_getByte(pzlib_filefunc_def,filestream,pi) const zlib_filefunc_def* pzlib_filefunc_def; voidpf filestream; int *pi; { unsigned char c; int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1); if (err==1) { *pi = (int)c; return UNZ_OK; } else { if (ZERROR(*pzlib_filefunc_def,filestream)) return UNZ_ERRNO; else return UNZ_EOF; } } /* =========================================================================== Reads a long in LSB order from the given gz_stream. Sets */ local int unzlocal_getShort OF(( const zlib_filefunc_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); local int unzlocal_getShort (pzlib_filefunc_def,filestream,pX) const zlib_filefunc_def* pzlib_filefunc_def; voidpf filestream; uLong *pX; { uLong x ; int i; int err; err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); x = (uLong)i; if (err==UNZ_OK) err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); x += ((uLong)i)<<8; if (err==UNZ_OK) *pX = x; else *pX = 0; return err; } local int unzlocal_getLong OF(( const zlib_filefunc_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); local int unzlocal_getLong (pzlib_filefunc_def,filestream,pX) const zlib_filefunc_def* pzlib_filefunc_def; voidpf filestream; uLong *pX; { uLong x ; int i; int err; err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); x = (uLong)i; if (err==UNZ_OK) err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); x += ((uLong)i)<<8; if (err==UNZ_OK) err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); x += ((uLong)i)<<16; if (err==UNZ_OK) err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i); x += ((uLong)i)<<24; if (err==UNZ_OK) *pX = x; else *pX = 0; return err; } /* My own strcmpi / strcasecmp */ local int strcmpcasenosensitive_internal (fileName1,fileName2) const char* fileName1; const char* fileName2; { for (;;) { char c1=*(fileName1++); char c2=*(fileName2++); if ((c1>='a') && (c1<='z')) c1 -= 0x20; if ((c2>='a') && (c2<='z')) c2 -= 0x20; if (c1=='\0') return ((c2=='\0') ? 0 : -1); if (c2=='\0') return 1; if (c1c2) return 1; } } #ifdef CASESENSITIVITYDEFAULT_NO #define CASESENSITIVITYDEFAULTVALUE 2 #else #define CASESENSITIVITYDEFAULTVALUE 1 #endif #ifndef STRCMPCASENOSENTIVEFUNCTION #define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal #endif /* Compare two filename (fileName1,fileName2). If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi or strcasecmp) If iCaseSenisivity = 0, case sensitivity is defaut of your operating system (like 1 on Unix, 2 on Windows) */ extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity) const char* fileName1; const char* fileName2; int iCaseSensitivity; { if (iCaseSensitivity==0) iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE; if (iCaseSensitivity==1) return strcmp(fileName1,fileName2); return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2); } #ifndef BUFREADCOMMENT #define BUFREADCOMMENT (0x400) #endif /* Locate the Central directory of a zipfile (at the end, just before the global comment) */ local uLong unzlocal_SearchCentralDir OF(( const zlib_filefunc_def* pzlib_filefunc_def, voidpf filestream)); local uLong unzlocal_SearchCentralDir(pzlib_filefunc_def,filestream) const zlib_filefunc_def* pzlib_filefunc_def; voidpf filestream; { unsigned char* buf; uLong uSizeFile; uLong uBackRead; uLong uMaxBack=0xffff; /* maximum size of global comment */ uLong uPosFound=0; if (ZSEEK(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) return 0; uSizeFile = ZTELL(*pzlib_filefunc_def,filestream); if (uMaxBack>uSizeFile) uMaxBack = uSizeFile; buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); if (buf==NULL) return 0; uBackRead = 4; while (uBackReaduMaxBack) uBackRead = uMaxBack; else uBackRead+=BUFREADCOMMENT; uReadPos = uSizeFile-uBackRead ; uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); if (ZSEEK(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) break; if (ZREAD(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) break; for (i=(int)uReadSize-3; (i--)>0;) if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) { uPosFound = uReadPos+i; break; } if (uPosFound!=0) break; } TRYFREE(buf); return uPosFound; } /* Open a Zip file. path contain the full pathname (by example, on a Windows NT computer "c:\\test\\zlib114.zip" or on an Unix computer "zlib/zlib114.zip". If the zipfile cannot be opened (file doesn't exist or in not valid), the return value is NULL. Else, the return value is a unzFile Handle, usable with other function of this unzip package. */ extern unzFile ZEXPORT unzOpen2 (path, pzlib_filefunc_def) const char *path; zlib_filefunc_def* pzlib_filefunc_def; { unz_s us; unz_s *s; uLong central_pos,uL; uLong number_disk; /* number of the current dist, used for spaning ZIP, unsupported, always 0*/ uLong number_disk_with_CD; /* number the the disk with central dir, used for spaning ZIP, unsupported, always 0*/ uLong number_entry_CD; /* total number of entries in the central dir (same than number_entry on nospan) */ int err=UNZ_OK; if (unz_copyright[0]!=' ') return NULL; if (pzlib_filefunc_def==NULL) fill_fopen_filefunc(&us.z_filefunc); else us.z_filefunc = *pzlib_filefunc_def; us.filestream= (*(us.z_filefunc.zopen_file))(us.z_filefunc.opaque, path, ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_EXISTING); if (us.filestream==NULL) return NULL; central_pos = unzlocal_SearchCentralDir(&us.z_filefunc,us.filestream); if (central_pos==0) err=UNZ_ERRNO; if (ZSEEK(us.z_filefunc, us.filestream, central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) err=UNZ_ERRNO; /* the signature, already checked */ if (unzlocal_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK) err=UNZ_ERRNO; /* number of this disk */ if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK) err=UNZ_ERRNO; /* number of the disk with the start of the central directory */ if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK) err=UNZ_ERRNO; /* total number of entries in the central dir on this disk */ if (unzlocal_getShort(&us.z_filefunc, us.filestream,&us.gi.number_entry)!=UNZ_OK) err=UNZ_ERRNO; /* total number of entries in the central dir */ if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_entry_CD)!=UNZ_OK) err=UNZ_ERRNO; if ((number_entry_CD!=us.gi.number_entry) || (number_disk_with_CD!=0) || (number_disk!=0)) err=UNZ_BADZIPFILE; /* size of the central directory */ if (unzlocal_getLong(&us.z_filefunc, us.filestream,&us.size_central_dir)!=UNZ_OK) err=UNZ_ERRNO; /* offset of start of central directory with respect to the starting disk number */ if (unzlocal_getLong(&us.z_filefunc, us.filestream,&us.offset_central_dir)!=UNZ_OK) err=UNZ_ERRNO; /* zipfile comment length */ if (unzlocal_getShort(&us.z_filefunc, us.filestream,&us.gi.size_comment)!=UNZ_OK) err=UNZ_ERRNO; if ((central_pospfile_in_zip_read!=NULL) unzCloseCurrentFile(file); ZCLOSE(s->z_filefunc, s->filestream); TRYFREE(s); return UNZ_OK; } /* Write info about the ZipFile in the *pglobal_info structure. No preparation of the structure is needed return UNZ_OK if there is no problem. */ extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info) unzFile file; unz_global_info *pglobal_info; { unz_s* s; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; *pglobal_info=s->gi; return UNZ_OK; } /* Translate date/time from Dos format to tm_unz (readable more easilty) */ local void unzlocal_DosDateToTmuDate (ulDosDate, ptm) uLong ulDosDate; tm_unz* ptm; { uLong uDate; uDate = (uLong)(ulDosDate>>16); ptm->tm_mday = (uInt)(uDate&0x1f) ; ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ; ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ; ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800); ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ; ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ; } /* Get Info about the current file in the zipfile, with internal only info */ local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file, unz_file_info *pfile_info, unz_file_info_internal *pfile_info_internal, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)); local int unzlocal_GetCurrentFileInfoInternal (file, pfile_info, pfile_info_internal, szFileName, fileNameBufferSize, extraField, extraFieldBufferSize, szComment, commentBufferSize) unzFile file; unz_file_info *pfile_info; unz_file_info_internal *pfile_info_internal; char *szFileName; uLong fileNameBufferSize; void *extraField; uLong extraFieldBufferSize; char *szComment; uLong commentBufferSize; { unz_s* s; unz_file_info file_info; unz_file_info_internal file_info_internal; int err=UNZ_OK; uLong uMagic; long lSeek=0; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; if (ZSEEK(s->z_filefunc, s->filestream, s->pos_in_central_dir+s->byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET)!=0) err=UNZ_ERRNO; /* we check the magic */ if (err==UNZ_OK) if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) err=UNZ_ERRNO; else if (uMagic!=0x02014b50) err=UNZ_BADZIPFILE; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version_needed) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.flag) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.compression_method) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.dosDate) != UNZ_OK) err=UNZ_ERRNO; unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date); if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.crc) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_filename) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_extra) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_comment) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.internal_fa) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.external_fa) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK) err=UNZ_ERRNO; lSeek+=file_info.size_filename; if ((err==UNZ_OK) && (szFileName!=NULL)) { uLong uSizeRead ; if (file_info.size_filename0) && (fileNameBufferSize>0)) if (ZREAD(s->z_filefunc, s->filestream,szFileName,uSizeRead)!=uSizeRead) err=UNZ_ERRNO; lSeek -= uSizeRead; } if ((err==UNZ_OK) && (extraField!=NULL)) { uLong uSizeRead ; if (file_info.size_file_extraz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) lSeek=0; else err=UNZ_ERRNO; if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0)) if (ZREAD(s->z_filefunc, s->filestream,extraField,uSizeRead)!=uSizeRead) err=UNZ_ERRNO; lSeek += file_info.size_file_extra - uSizeRead; } else lSeek+=file_info.size_file_extra; if ((err==UNZ_OK) && (szComment!=NULL)) { uLong uSizeRead ; if (file_info.size_file_commentz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0) lSeek=0; else err=UNZ_ERRNO; if ((file_info.size_file_comment>0) && (commentBufferSize>0)) if (ZREAD(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead) err=UNZ_ERRNO; lSeek+=file_info.size_file_comment - uSizeRead; } else lSeek+=file_info.size_file_comment; if ((err==UNZ_OK) && (pfile_info!=NULL)) *pfile_info=file_info; if ((err==UNZ_OK) && (pfile_info_internal!=NULL)) *pfile_info_internal=file_info_internal; return err; } /* Write info about the ZipFile in the *pglobal_info structure. No preparation of the structure is needed return UNZ_OK if there is no problem. */ extern int ZEXPORT unzGetCurrentFileInfo (file, pfile_info, szFileName, fileNameBufferSize, extraField, extraFieldBufferSize, szComment, commentBufferSize) unzFile file; unz_file_info *pfile_info; char *szFileName; uLong fileNameBufferSize; void *extraField; uLong extraFieldBufferSize; char *szComment; uLong commentBufferSize; { return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL, szFileName,fileNameBufferSize, extraField,extraFieldBufferSize, szComment,commentBufferSize); } /* Set the current file of the zipfile to the first file. return UNZ_OK if there is no problem */ extern int ZEXPORT unzGoToFirstFile (file) unzFile file; { int err=UNZ_OK; unz_s* s; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; s->pos_in_central_dir=s->offset_central_dir; s->num_file=0; err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, &s->cur_file_info_internal, NULL,0,NULL,0,NULL,0); s->current_file_ok = (err == UNZ_OK); return err; } /* Set the current file of the zipfile to the next file. return UNZ_OK if there is no problem return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. */ extern int ZEXPORT unzGoToNextFile (file) unzFile file; { unz_s* s; int err; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; if (!s->current_file_ok) return UNZ_END_OF_LIST_OF_FILE; if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */ if (s->num_file+1==s->gi.number_entry) return UNZ_END_OF_LIST_OF_FILE; s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename + s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ; s->num_file++; err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, &s->cur_file_info_internal, NULL,0,NULL,0,NULL,0); s->current_file_ok = (err == UNZ_OK); return err; } /* Try locate the file szFileName in the zipfile. For the iCaseSensitivity signification, see unzipStringFileNameCompare return value : UNZ_OK if the file is found. It becomes the current file. UNZ_END_OF_LIST_OF_FILE if the file is not found */ extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity) unzFile file; const char *szFileName; int iCaseSensitivity; { unz_s* s; int err; /* We remember the 'current' position in the file so that we can jump * back there if we fail. */ unz_file_info cur_file_infoSaved; unz_file_info_internal cur_file_info_internalSaved; uLong num_fileSaved; uLong pos_in_central_dirSaved; if (file==NULL) return UNZ_PARAMERROR; if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP) return UNZ_PARAMERROR; s=(unz_s*)file; if (!s->current_file_ok) return UNZ_END_OF_LIST_OF_FILE; /* Save the current state */ num_fileSaved = s->num_file; pos_in_central_dirSaved = s->pos_in_central_dir; cur_file_infoSaved = s->cur_file_info; cur_file_info_internalSaved = s->cur_file_info_internal; err = unzGoToFirstFile(file); while (err == UNZ_OK) { char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1]; err = unzGetCurrentFileInfo(file,NULL, szCurrentFileName,sizeof(szCurrentFileName)-1, NULL,0,NULL,0); if (err == UNZ_OK) { if (unzStringFileNameCompare(szCurrentFileName, szFileName,iCaseSensitivity)==0) return UNZ_OK; err = unzGoToNextFile(file); } } /* We failed, so restore the state of the 'current file' to where we * were. */ s->num_file = num_fileSaved ; s->pos_in_central_dir = pos_in_central_dirSaved ; s->cur_file_info = cur_file_infoSaved; s->cur_file_info_internal = cur_file_info_internalSaved; return err; } /* /////////////////////////////////////////// // Contributed by Ryan Haksi (mailto://cryogen@infoserve.net) // I need random access // // Further optimization could be realized by adding an ability // to cache the directory in memory. The goal being a single // comprehensive file read to put the file I need in a memory. */ /* typedef struct unz_file_pos_s { uLong pos_in_zip_directory; // offset in file uLong num_of_file; // # of file } unz_file_pos; */ extern int ZEXPORT unzGetFilePos(file, file_pos) unzFile file; unz_file_pos* file_pos; { unz_s* s; if (file==NULL || file_pos==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; if (!s->current_file_ok) return UNZ_END_OF_LIST_OF_FILE; file_pos->pos_in_zip_directory = s->pos_in_central_dir; file_pos->num_of_file = s->num_file; return UNZ_OK; } extern int ZEXPORT unzGoToFilePos(file, file_pos) unzFile file; unz_file_pos* file_pos; { unz_s* s; int err; if (file==NULL || file_pos==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; /* jump to the right spot */ s->pos_in_central_dir = file_pos->pos_in_zip_directory; s->num_file = file_pos->num_of_file; /* set the current file */ err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, &s->cur_file_info_internal, NULL,0,NULL,0,NULL,0); /* return results */ s->current_file_ok = (err == UNZ_OK); return err; } /* // Unzip Helper Functions - should be here? /////////////////////////////////////////// */ /* Read the local header of the current zipfile Check the coherency of the local header and info in the end of central directory about this file store in *piSizeVar the size of extra info in local header (filename and size of extra field data) */ local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar, poffset_local_extrafield, psize_local_extrafield) unz_s* s; uInt* piSizeVar; uLong *poffset_local_extrafield; uInt *psize_local_extrafield; { uLong uMagic,uData,uFlags; uLong size_filename; uLong size_extra_field; int err=UNZ_OK; *piSizeVar = 0; *poffset_local_extrafield = 0; *psize_local_extrafield = 0; if (ZSEEK(s->z_filefunc, s->filestream,s->cur_file_info_internal.offset_curfile + s->byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0) return UNZ_ERRNO; if (err==UNZ_OK) if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK) err=UNZ_ERRNO; else if (uMagic!=0x04034b50) err=UNZ_BADZIPFILE; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) err=UNZ_ERRNO; /* else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion)) err=UNZ_BADZIPFILE; */ if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK) err=UNZ_ERRNO; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) err=UNZ_ERRNO; else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method)) err=UNZ_BADZIPFILE; if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) && (s->cur_file_info.compression_method!=Z_DEFLATED)) err=UNZ_BADZIPFILE; if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* date/time */ err=UNZ_ERRNO; if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* crc */ err=UNZ_ERRNO; else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) && ((uFlags & 8)==0)) err=UNZ_BADZIPFILE; if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size compr */ err=UNZ_ERRNO; else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) && ((uFlags & 8)==0)) err=UNZ_BADZIPFILE; if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size uncompr */ err=UNZ_ERRNO; else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) && ((uFlags & 8)==0)) err=UNZ_BADZIPFILE; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_filename) != UNZ_OK) err=UNZ_ERRNO; else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename)) err=UNZ_BADZIPFILE; *piSizeVar += (uInt)size_filename; if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_extra_field) != UNZ_OK) err=UNZ_ERRNO; *poffset_local_extrafield= s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + size_filename; *psize_local_extrafield = (uInt)size_extra_field; *piSizeVar += (uInt)size_extra_field; return err; } /* Open for reading data the current file in the zipfile. If there is no error and the file is opened, the return value is UNZ_OK. */ extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password) unzFile file; int* method; int* level; int raw; const char* password; { int err=UNZ_OK; uInt iSizeVar; unz_s* s; file_in_zip_read_info_s* pfile_in_zip_read_info; uLong offset_local_extrafield; /* offset of the local extra field */ uInt size_local_extrafield; /* size of the local extra field */ # ifndef NOUNCRYPT char source[12]; # else if (password != NULL) return UNZ_PARAMERROR; # endif if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; if (!s->current_file_ok) return UNZ_PARAMERROR; if (s->pfile_in_zip_read != NULL) unzCloseCurrentFile(file); if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar, &offset_local_extrafield,&size_local_extrafield)!=UNZ_OK) return UNZ_BADZIPFILE; pfile_in_zip_read_info = (file_in_zip_read_info_s*) ALLOC(sizeof(file_in_zip_read_info_s)); if (pfile_in_zip_read_info==NULL) return UNZ_INTERNALERROR; pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE); pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield; pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield; pfile_in_zip_read_info->pos_local_extrafield=0; pfile_in_zip_read_info->raw=raw; if (pfile_in_zip_read_info->read_buffer==NULL) { TRYFREE(pfile_in_zip_read_info); return UNZ_INTERNALERROR; } pfile_in_zip_read_info->stream_initialised=0; if (method!=NULL) *method = (int)s->cur_file_info.compression_method; if (level!=NULL) { *level = 6; switch (s->cur_file_info.flag & 0x06) { case 6 : *level = 1; break; case 4 : *level = 2; break; case 2 : *level = 9; break; } } if ((s->cur_file_info.compression_method!=0) && (s->cur_file_info.compression_method!=Z_DEFLATED)) err=UNZ_BADZIPFILE; pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc; pfile_in_zip_read_info->crc32=0; pfile_in_zip_read_info->compression_method = s->cur_file_info.compression_method; pfile_in_zip_read_info->filestream=s->filestream; pfile_in_zip_read_info->z_filefunc=s->z_filefunc; pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile; pfile_in_zip_read_info->stream.total_out = 0; if ((s->cur_file_info.compression_method==Z_DEFLATED) && (!raw)) { pfile_in_zip_read_info->stream.zalloc = (alloc_func)0; pfile_in_zip_read_info->stream.zfree = (free_func)0; pfile_in_zip_read_info->stream.opaque = (voidpf)0; pfile_in_zip_read_info->stream.next_in = (voidpf)0; pfile_in_zip_read_info->stream.avail_in = 0; err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS); if (err == Z_OK) pfile_in_zip_read_info->stream_initialised=1; else { TRYFREE(pfile_in_zip_read_info); return err; } /* windowBits is passed < 0 to tell that there is no zlib header. * Note that in this case inflate *requires* an extra "dummy" byte * after the compressed stream in order to complete decompression and * return Z_STREAM_END. * In unzip, i don't wait absolutely Z_STREAM_END because I known the * size of both compressed and uncompressed data */ } pfile_in_zip_read_info->rest_read_compressed = s->cur_file_info.compressed_size ; pfile_in_zip_read_info->rest_read_uncompressed = s->cur_file_info.uncompressed_size ; pfile_in_zip_read_info->pos_in_zipfile = s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER + iSizeVar; pfile_in_zip_read_info->stream.avail_in = (uInt)0; s->pfile_in_zip_read = pfile_in_zip_read_info; # ifndef NOUNCRYPT if (password != NULL) { int i; s->pcrc_32_tab = get_crc_table(); init_keys(password,s->keys,s->pcrc_32_tab); if (ZSEEK(s->z_filefunc, s->filestream, s->pfile_in_zip_read->pos_in_zipfile + s->pfile_in_zip_read->byte_before_the_zipfile, SEEK_SET)!=0) return UNZ_INTERNALERROR; if(ZREAD(s->z_filefunc, s->filestream,source, 12)<12) return UNZ_INTERNALERROR; for (i = 0; i<12; i++) zdecode(s->keys,s->pcrc_32_tab,source[i]); s->pfile_in_zip_read->pos_in_zipfile+=12; s->encrypted=1; } # endif return UNZ_OK; } extern int ZEXPORT unzOpenCurrentFile (file) unzFile file; { return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL); } extern int ZEXPORT unzOpenCurrentFilePassword (file, password) unzFile file; const char* password; { return unzOpenCurrentFile3(file, NULL, NULL, 0, password); } extern int ZEXPORT unzOpenCurrentFile2 (file,method,level,raw) unzFile file; int* method; int* level; int raw; { return unzOpenCurrentFile3(file, method, level, raw, NULL); } /* Read bytes from the current file. buf contain buffer where data must be copied len the size of buf. return the number of byte copied if somes bytes are copied return 0 if the end of file was reached return <0 with error code if there is an error (UNZ_ERRNO for IO error, or zLib error for uncompress error) */ extern int ZEXPORT unzReadCurrentFile (file, buf, len) unzFile file; voidp buf; unsigned len; { int err=UNZ_OK; uInt iRead = 0; unz_s* s; file_in_zip_read_info_s* pfile_in_zip_read_info; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; pfile_in_zip_read_info=s->pfile_in_zip_read; if (pfile_in_zip_read_info==NULL) return UNZ_PARAMERROR; if ((pfile_in_zip_read_info->read_buffer == NULL)) return UNZ_END_OF_LIST_OF_FILE; if (len==0) return 0; pfile_in_zip_read_info->stream.next_out = (Bytef*)buf; pfile_in_zip_read_info->stream.avail_out = (uInt)len; if ((len>pfile_in_zip_read_info->rest_read_uncompressed) && (!(pfile_in_zip_read_info->raw))) pfile_in_zip_read_info->stream.avail_out = (uInt)pfile_in_zip_read_info->rest_read_uncompressed; if ((len>pfile_in_zip_read_info->rest_read_compressed+ pfile_in_zip_read_info->stream.avail_in) && (pfile_in_zip_read_info->raw)) pfile_in_zip_read_info->stream.avail_out = (uInt)pfile_in_zip_read_info->rest_read_compressed+ pfile_in_zip_read_info->stream.avail_in; while (pfile_in_zip_read_info->stream.avail_out>0) { if ((pfile_in_zip_read_info->stream.avail_in==0) && (pfile_in_zip_read_info->rest_read_compressed>0)) { uInt uReadThis = UNZ_BUFSIZE; if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed; if (uReadThis == 0) return UNZ_EOF; if (ZSEEK(pfile_in_zip_read_info->z_filefunc, pfile_in_zip_read_info->filestream, pfile_in_zip_read_info->pos_in_zipfile + pfile_in_zip_read_info->byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET)!=0) return UNZ_ERRNO; if (ZREAD(pfile_in_zip_read_info->z_filefunc, pfile_in_zip_read_info->filestream, pfile_in_zip_read_info->read_buffer, uReadThis)!=uReadThis) return UNZ_ERRNO; # ifndef NOUNCRYPT if(s->encrypted) { uInt i; for(i=0;iread_buffer[i] = zdecode(s->keys,s->pcrc_32_tab, pfile_in_zip_read_info->read_buffer[i]); } # endif pfile_in_zip_read_info->pos_in_zipfile += uReadThis; pfile_in_zip_read_info->rest_read_compressed-=uReadThis; pfile_in_zip_read_info->stream.next_in = (Bytef*)pfile_in_zip_read_info->read_buffer; pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis; } if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw)) { uInt uDoCopy,i ; if ((pfile_in_zip_read_info->stream.avail_in == 0) && (pfile_in_zip_read_info->rest_read_compressed == 0)) return (iRead==0) ? UNZ_EOF : iRead; if (pfile_in_zip_read_info->stream.avail_out < pfile_in_zip_read_info->stream.avail_in) uDoCopy = pfile_in_zip_read_info->stream.avail_out ; else uDoCopy = pfile_in_zip_read_info->stream.avail_in ; for (i=0;istream.next_out+i) = *(pfile_in_zip_read_info->stream.next_in+i); pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32, pfile_in_zip_read_info->stream.next_out, uDoCopy); pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy; pfile_in_zip_read_info->stream.avail_in -= uDoCopy; pfile_in_zip_read_info->stream.avail_out -= uDoCopy; pfile_in_zip_read_info->stream.next_out += uDoCopy; pfile_in_zip_read_info->stream.next_in += uDoCopy; pfile_in_zip_read_info->stream.total_out += uDoCopy; iRead += uDoCopy; } else { uLong uTotalOutBefore,uTotalOutAfter; const Bytef *bufBefore; uLong uOutThis; int flush=Z_SYNC_FLUSH; uTotalOutBefore = pfile_in_zip_read_info->stream.total_out; bufBefore = pfile_in_zip_read_info->stream.next_out; /* if ((pfile_in_zip_read_info->rest_read_uncompressed == pfile_in_zip_read_info->stream.avail_out) && (pfile_in_zip_read_info->rest_read_compressed == 0)) flush = Z_FINISH; */ err=inflate(&pfile_in_zip_read_info->stream,flush); if ((err>=0) && (pfile_in_zip_read_info->stream.msg!=NULL)) err = Z_DATA_ERROR; uTotalOutAfter = pfile_in_zip_read_info->stream.total_out; uOutThis = uTotalOutAfter-uTotalOutBefore; pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32,bufBefore, (uInt)(uOutThis)); pfile_in_zip_read_info->rest_read_uncompressed -= uOutThis; iRead += (uInt)(uTotalOutAfter - uTotalOutBefore); if (err==Z_STREAM_END) return (iRead==0) ? UNZ_EOF : iRead; if (err!=Z_OK) break; } } if (err==Z_OK) return iRead; return err; } /* Give the current position in uncompressed data */ extern z_off_t ZEXPORT unztell (file) unzFile file; { unz_s* s; file_in_zip_read_info_s* pfile_in_zip_read_info; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; pfile_in_zip_read_info=s->pfile_in_zip_read; if (pfile_in_zip_read_info==NULL) return UNZ_PARAMERROR; return (z_off_t)pfile_in_zip_read_info->stream.total_out; } /* return 1 if the end of file was reached, 0 elsewhere */ extern int ZEXPORT unzeof (file) unzFile file; { unz_s* s; file_in_zip_read_info_s* pfile_in_zip_read_info; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; pfile_in_zip_read_info=s->pfile_in_zip_read; if (pfile_in_zip_read_info==NULL) return UNZ_PARAMERROR; if (pfile_in_zip_read_info->rest_read_uncompressed == 0) return 1; else return 0; } /* Read extra field from the current file (opened by unzOpenCurrentFile) This is the local-header version of the extra field (sometimes, there is more info in the local-header version than in the central-header) if buf==NULL, it return the size of the local extra field that can be read if buf!=NULL, len is the size of the buffer, the extra header is copied in buf. the return value is the number of bytes copied in buf, or (if <0) the error code */ extern int ZEXPORT unzGetLocalExtrafield (file,buf,len) unzFile file; voidp buf; unsigned len; { unz_s* s; file_in_zip_read_info_s* pfile_in_zip_read_info; uInt read_now; uLong size_to_read; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; pfile_in_zip_read_info=s->pfile_in_zip_read; if (pfile_in_zip_read_info==NULL) return UNZ_PARAMERROR; size_to_read = (pfile_in_zip_read_info->size_local_extrafield - pfile_in_zip_read_info->pos_local_extrafield); if (buf==NULL) return (int)size_to_read; if (len>size_to_read) read_now = (uInt)size_to_read; else read_now = (uInt)len ; if (read_now==0) return 0; if (ZSEEK(pfile_in_zip_read_info->z_filefunc, pfile_in_zip_read_info->filestream, pfile_in_zip_read_info->offset_local_extrafield + pfile_in_zip_read_info->pos_local_extrafield, ZLIB_FILEFUNC_SEEK_SET)!=0) return UNZ_ERRNO; if (ZREAD(pfile_in_zip_read_info->z_filefunc, pfile_in_zip_read_info->filestream, buf,read_now)!=read_now) return UNZ_ERRNO; return (int)read_now; } /* Close the file in zip opened with unzipOpenCurrentFile Return UNZ_CRCERROR if all the file was read but the CRC is not good */ extern int ZEXPORT unzCloseCurrentFile (file) unzFile file; { int err=UNZ_OK; unz_s* s; file_in_zip_read_info_s* pfile_in_zip_read_info; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; pfile_in_zip_read_info=s->pfile_in_zip_read; if (pfile_in_zip_read_info==NULL) return UNZ_PARAMERROR; if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) && (!pfile_in_zip_read_info->raw)) { if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait) err=UNZ_CRCERROR; } TRYFREE(pfile_in_zip_read_info->read_buffer); pfile_in_zip_read_info->read_buffer = NULL; if (pfile_in_zip_read_info->stream_initialised) inflateEnd(&pfile_in_zip_read_info->stream); pfile_in_zip_read_info->stream_initialised = 0; TRYFREE(pfile_in_zip_read_info); s->pfile_in_zip_read=NULL; return err; } /* Get the global comment string of the ZipFile, in the szComment buffer. uSizeBuf is the size of the szComment buffer. return the number of byte copied or an error code <0 */ extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf) unzFile file; char *szComment; uLong uSizeBuf; { int err=UNZ_OK; unz_s* s; uLong uReadThis ; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; uReadThis = uSizeBuf; if (uReadThis>s->gi.size_comment) uReadThis = s->gi.size_comment; if (ZSEEK(s->z_filefunc,s->filestream,s->central_pos+22,ZLIB_FILEFUNC_SEEK_SET)!=0) return UNZ_ERRNO; if (uReadThis>0) { *szComment='\0'; if (ZREAD(s->z_filefunc,s->filestream,szComment,uReadThis)!=uReadThis) return UNZ_ERRNO; } if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment)) *(szComment+s->gi.size_comment)='\0'; return (int)uReadThis; } /* Additions by RX '2004 */ extern uLong ZEXPORT unzGetOffset (file) unzFile file; { unz_s* s; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; if (!s->current_file_ok) return 0; if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff) if (s->num_file==s->gi.number_entry) return 0; return s->pos_in_central_dir; } extern int ZEXPORT unzSetOffset (file, pos) unzFile file; uLong pos; { unz_s* s; int err; if (file==NULL) return UNZ_PARAMERROR; s=(unz_s*)file; s->pos_in_central_dir = pos; s->num_file = s->gi.number_entry; /* hack */ err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info, &s->cur_file_info_internal, NULL,0,NULL,0,NULL,0); s->current_file_ok = (err == UNZ_OK); return err; } ================================================ FILE: AePubReader/Classes/minizip/unzip.h ================================================ /* unzip.h -- IO for uncompress .zip files using zlib Version 1.01e, February 12th, 2005 Copyright (C) 1998-2005 Gilles Vollant This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g WinZip, InfoZip tools and compatible. Multi volume ZipFile (span) are not supported. Encryption compatible with pkzip 2.04g only supported Old compressions used by old PKZip 1.x are not supported I WAIT FEEDBACK at mail info@winimage.com Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution Condition of use and distribution are the same than zlib : This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ /* for more info about .ZIP format, see http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip http://www.info-zip.org/pub/infozip/doc/ PkWare has also a specification at : ftp://ftp.pkware.com/probdesc.zip */ #ifndef _unz_H #define _unz_H #ifdef __cplusplus extern "C" { #endif #ifndef _ZLIB_H #include "zlib.h" #endif #ifndef _ZLIBIOAPI_H #include "ioapi.h" #endif #if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP) /* like the STRICT of WIN32, we define a pointer that cannot be converted from (void*) without cast */ typedef struct TagunzFile__ { int unused; } unzFile__; typedef unzFile__ *unzFile; #else typedef voidp unzFile; #endif #define UNZ_OK (0) #define UNZ_END_OF_LIST_OF_FILE (-100) #define UNZ_ERRNO (Z_ERRNO) #define UNZ_EOF (0) #define UNZ_PARAMERROR (-102) #define UNZ_BADZIPFILE (-103) #define UNZ_INTERNALERROR (-104) #define UNZ_CRCERROR (-105) /* tm_unz contain date/time info */ typedef struct tm_unz_s { uInt tm_sec; /* seconds after the minute - [0,59] */ uInt tm_min; /* minutes after the hour - [0,59] */ uInt tm_hour; /* hours since midnight - [0,23] */ uInt tm_mday; /* day of the month - [1,31] */ uInt tm_mon; /* months since January - [0,11] */ uInt tm_year; /* years - [1980..2044] */ } tm_unz; /* unz_global_info structure contain global data about the ZIPfile These data comes from the end of central dir */ typedef struct unz_global_info_s { uLong number_entry; /* total number of entries in the central dir on this disk */ uLong size_comment; /* size of the global comment of the zipfile */ } unz_global_info; /* unz_file_info contain information about a file in the zipfile */ typedef struct unz_file_info_s { uLong version; /* version made by 2 bytes */ uLong version_needed; /* version needed to extract 2 bytes */ uLong flag; /* general purpose bit flag 2 bytes */ uLong compression_method; /* compression method 2 bytes */ uLong dosDate; /* last mod file date in Dos fmt 4 bytes */ uLong crc; /* crc-32 4 bytes */ uLong compressed_size; /* compressed size 4 bytes */ uLong uncompressed_size; /* uncompressed size 4 bytes */ uLong size_filename; /* filename length 2 bytes */ uLong size_file_extra; /* extra field length 2 bytes */ uLong size_file_comment; /* file comment length 2 bytes */ uLong disk_num_start; /* disk number start 2 bytes */ uLong internal_fa; /* internal file attributes 2 bytes */ uLong external_fa; /* external file attributes 4 bytes */ tm_unz tmu_date; } unz_file_info; extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1, const char* fileName2, int iCaseSensitivity)); /* Compare two filename (fileName1,fileName2). If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp) If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi or strcasecmp) If iCaseSenisivity = 0, case sensitivity is defaut of your operating system (like 1 on Unix, 2 on Windows) */ extern unzFile ZEXPORT unzOpen OF((const char *path)); /* Open a Zip file. path contain the full pathname (by example, on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer "zlib/zlib113.zip". If the zipfile cannot be opened (file don't exist or in not valid), the return value is NULL. Else, the return value is a unzFile Handle, usable with other function of this unzip package. */ extern unzFile ZEXPORT unzOpen2 OF((const char *path, zlib_filefunc_def* pzlib_filefunc_def)); /* Open a Zip file, like unzOpen, but provide a set of file low level API for read/write the zip file (see ioapi.h) */ extern int ZEXPORT unzClose OF((unzFile file)); /* Close a ZipFile opened with unzipOpen. If there is files inside the .Zip opened with unzOpenCurrentFile (see later), these files MUST be closed with unzipCloseCurrentFile before call unzipClose. return UNZ_OK if there is no problem. */ extern int ZEXPORT unzGetGlobalInfo OF((unzFile file, unz_global_info *pglobal_info)); /* Write info about the ZipFile in the *pglobal_info structure. No preparation of the structure is needed return UNZ_OK if there is no problem. */ extern int ZEXPORT unzGetGlobalComment OF((unzFile file, char *szComment, uLong uSizeBuf)); /* Get the global comment string of the ZipFile, in the szComment buffer. uSizeBuf is the size of the szComment buffer. return the number of byte copied or an error code <0 */ /***************************************************************************/ /* Unzip package allow you browse the directory of the zipfile */ extern int ZEXPORT unzGoToFirstFile OF((unzFile file)); /* Set the current file of the zipfile to the first file. return UNZ_OK if there is no problem */ extern int ZEXPORT unzGoToNextFile OF((unzFile file)); /* Set the current file of the zipfile to the next file. return UNZ_OK if there is no problem return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest. */ extern int ZEXPORT unzLocateFile OF((unzFile file, const char *szFileName, int iCaseSensitivity)); /* Try locate the file szFileName in the zipfile. For the iCaseSensitivity signification, see unzStringFileNameCompare return value : UNZ_OK if the file is found. It becomes the current file. UNZ_END_OF_LIST_OF_FILE if the file is not found */ /* ****************************************** */ /* Ryan supplied functions */ /* unz_file_info contain information about a file in the zipfile */ typedef struct unz_file_pos_s { uLong pos_in_zip_directory; /* offset in zip file directory */ uLong num_of_file; /* # of file */ } unz_file_pos; extern int ZEXPORT unzGetFilePos( unzFile file, unz_file_pos* file_pos); extern int ZEXPORT unzGoToFilePos( unzFile file, unz_file_pos* file_pos); /* ****************************************** */ extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file, unz_file_info *pfile_info, char *szFileName, uLong fileNameBufferSize, void *extraField, uLong extraFieldBufferSize, char *szComment, uLong commentBufferSize)); /* Get Info about the current file if pfile_info!=NULL, the *pfile_info structure will contain somes info about the current file if szFileName!=NULL, the filemane string will be copied in szFileName (fileNameBufferSize is the size of the buffer) if extraField!=NULL, the extra field information will be copied in extraField (extraFieldBufferSize is the size of the buffer). This is the Central-header version of the extra field if szComment!=NULL, the comment string of the file will be copied in szComment (commentBufferSize is the size of the buffer) */ /***************************************************************************/ /* for reading the content of the current zipfile, you can open it, read data from it, and close it (you can close it before reading all the file) */ extern int ZEXPORT unzOpenCurrentFile OF((unzFile file)); /* Open for reading data the current file in the zipfile. If there is no error, the return value is UNZ_OK. */ extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file, const char* password)); /* Open for reading data the current file in the zipfile. password is a crypting password If there is no error, the return value is UNZ_OK. */ extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file, int* method, int* level, int raw)); /* Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) if raw==1 *method will receive method of compression, *level will receive level of compression note : you can set level parameter as NULL (if you did not want known level, but you CANNOT set method parameter as NULL */ extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file, int* method, int* level, int raw, const char* password)); /* Same than unzOpenCurrentFile, but open for read raw the file (not uncompress) if raw==1 *method will receive method of compression, *level will receive level of compression note : you can set level parameter as NULL (if you did not want known level, but you CANNOT set method parameter as NULL */ extern int ZEXPORT unzCloseCurrentFile OF((unzFile file)); /* Close the file in zip opened with unzOpenCurrentFile Return UNZ_CRCERROR if all the file was read but the CRC is not good */ extern int ZEXPORT unzReadCurrentFile OF((unzFile file, voidp buf, unsigned len)); /* Read bytes from the current file (opened by unzOpenCurrentFile) buf contain buffer where data must be copied len the size of buf. return the number of byte copied if somes bytes are copied return 0 if the end of file was reached return <0 with error code if there is an error (UNZ_ERRNO for IO error, or zLib error for uncompress error) */ extern z_off_t ZEXPORT unztell OF((unzFile file)); /* Give the current position in uncompressed data */ extern int ZEXPORT unzeof OF((unzFile file)); /* return 1 if the end of file was reached, 0 elsewhere */ extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file, voidp buf, unsigned len)); /* Read extra field from the current file (opened by unzOpenCurrentFile) This is the local-header version of the extra field (sometimes, there is more info in the local-header version than in the central-header) if buf==NULL, it return the size of the local extra field if buf!=NULL, len is the size of the buffer, the extra header is copied in buf. the return value is the number of bytes copied in buf, or (if <0) the error code */ /***************************************************************************/ /* Get the current file offset */ extern uLong ZEXPORT unzGetOffset (unzFile file); /* Set the current file offset */ extern int ZEXPORT unzSetOffset (unzFile file, uLong pos); #ifdef __cplusplus } #endif #endif /* _unz_H */ ================================================ FILE: AePubReader/Classes/minizip/zip.c ================================================ /* zip.c -- IO on .zip files using zlib Version 1.01e, February 12th, 2005 27 Dec 2004 Rolf Kalbermatter Modification to zipOpen2 to support globalComment retrieval. Copyright (C) 1998-2005 Gilles Vollant Read zip.h for more info */ #include #include #include #include #include "zlib.h" #include "zip.h" #ifdef STDC # include # include # include #endif #ifdef NO_ERRNO_H extern int errno; #else # include #endif #ifndef local # define local static #endif /* compile with -Dlocal if your debugger can't find static symbols */ #ifndef VERSIONMADEBY # define VERSIONMADEBY (0x0) /* platform depedent */ #endif #ifndef Z_BUFSIZE #define Z_BUFSIZE (16384) #endif #ifndef Z_MAXFILENAMEINZIP #define Z_MAXFILENAMEINZIP (256) #endif #ifndef ALLOC # define ALLOC(size) (malloc(size)) #endif #ifndef TRYFREE # define TRYFREE(p) {if (p) free(p);} #endif /* #define SIZECENTRALDIRITEM (0x2e) #define SIZEZIPLOCALHEADER (0x1e) */ /* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */ #ifndef SEEK_CUR #define SEEK_CUR 1 #endif #ifndef SEEK_END #define SEEK_END 2 #endif #ifndef SEEK_SET #define SEEK_SET 0 #endif #ifndef DEF_MEM_LEVEL #if MAX_MEM_LEVEL >= 8 # define DEF_MEM_LEVEL 8 #else # define DEF_MEM_LEVEL MAX_MEM_LEVEL #endif #endif const char zip_copyright[] = " zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll"; #define SIZEDATA_INDATABLOCK (4096-(4*4)) #define LOCALHEADERMAGIC (0x04034b50) #define CENTRALHEADERMAGIC (0x02014b50) #define ENDHEADERMAGIC (0x06054b50) #define FLAG_LOCALHEADER_OFFSET (0x06) #define CRC_LOCALHEADER_OFFSET (0x0e) #define SIZECENTRALHEADER (0x2e) /* 46 */ typedef struct linkedlist_datablock_internal_s { struct linkedlist_datablock_internal_s* next_datablock; uLong avail_in_this_block; uLong filled_in_this_block; uLong unused; /* for future use and alignement */ unsigned char data[SIZEDATA_INDATABLOCK]; } linkedlist_datablock_internal; typedef struct linkedlist_data_s { linkedlist_datablock_internal* first_block; linkedlist_datablock_internal* last_block; } linkedlist_data; typedef struct { z_stream stream; /* zLib stream structure for inflate */ int stream_initialised; /* 1 is stream is initialised */ uInt pos_in_buffered_data; /* last written byte in buffered_data */ uLong pos_local_header; /* offset of the local header of the file currenty writing */ char* central_header; /* central header data for the current file */ uLong size_centralheader; /* size of the central header for cur file */ uLong flag; /* flag of the file currently writing */ int method; /* compression method of file currenty wr.*/ int raw; /* 1 for directly writing raw data */ Byte buffered_data[Z_BUFSIZE];/* buffer contain compressed data to be writ*/ uLong dosDate; uLong crc32; int encrypt; #ifndef NOCRYPT unsigned long keys[3]; /* keys defining the pseudo-random sequence */ const unsigned long* pcrc_32_tab; int crypt_header_size; #endif } curfile_info; typedef struct { zlib_filefunc_def z_filefunc; voidpf filestream; /* io structore of the zipfile */ linkedlist_data central_dir;/* datablock with central dir in construction*/ int in_opened_file_inzip; /* 1 if a file in the zip is currently writ.*/ curfile_info ci; /* info on the file curretly writing */ uLong begin_pos; /* position of the beginning of the zipfile */ uLong add_position_when_writting_offset; uLong number_entry; #ifndef NO_ADDFILEINEXISTINGZIP char *globalcomment; #endif } zip_internal; #ifndef NOCRYPT #define INCLUDECRYPTINGCODE_IFCRYPTALLOWED #include "crypt.h" #endif local linkedlist_datablock_internal* allocate_new_datablock() { linkedlist_datablock_internal* ldi; ldi = (linkedlist_datablock_internal*) ALLOC(sizeof(linkedlist_datablock_internal)); if (ldi!=NULL) { ldi->next_datablock = NULL ; ldi->filled_in_this_block = 0 ; ldi->avail_in_this_block = SIZEDATA_INDATABLOCK ; } return ldi; } local void free_datablock(ldi) linkedlist_datablock_internal* ldi; { while (ldi!=NULL) { linkedlist_datablock_internal* ldinext = ldi->next_datablock; TRYFREE(ldi); ldi = ldinext; } } local void init_linkedlist(ll) linkedlist_data* ll; { ll->first_block = ll->last_block = NULL; } local void free_linkedlist(ll) linkedlist_data* ll; { free_datablock(ll->first_block); ll->first_block = ll->last_block = NULL; } local int add_data_in_datablock(ll,buf,len) linkedlist_data* ll; const void* buf; uLong len; { linkedlist_datablock_internal* ldi; const unsigned char* from_copy; if (ll==NULL) return ZIP_INTERNALERROR; if (ll->last_block == NULL) { ll->first_block = ll->last_block = allocate_new_datablock(); if (ll->first_block == NULL) return ZIP_INTERNALERROR; } ldi = ll->last_block; from_copy = (unsigned char*)buf; while (len>0) { uInt copy_this; uInt i; unsigned char* to_copy; if (ldi->avail_in_this_block==0) { ldi->next_datablock = allocate_new_datablock(); if (ldi->next_datablock == NULL) return ZIP_INTERNALERROR; ldi = ldi->next_datablock ; ll->last_block = ldi; } if (ldi->avail_in_this_block < len) copy_this = (uInt)ldi->avail_in_this_block; else copy_this = (uInt)len; to_copy = &(ldi->data[ldi->filled_in_this_block]); for (i=0;ifilled_in_this_block += copy_this; ldi->avail_in_this_block -= copy_this; from_copy += copy_this ; len -= copy_this; } return ZIP_OK; } /****************************************************************************/ #ifndef NO_ADDFILEINEXISTINGZIP /* =========================================================================== Inputs a long in LSB order to the given file nbByte == 1, 2 or 4 (byte, short or long) */ local int ziplocal_putValue OF((const zlib_filefunc_def* pzlib_filefunc_def, voidpf filestream, uLong x, int nbByte)); local int ziplocal_putValue (pzlib_filefunc_def, filestream, x, nbByte) const zlib_filefunc_def* pzlib_filefunc_def; voidpf filestream; uLong x; int nbByte; { unsigned char buf[4]; int n; for (n = 0; n < nbByte; n++) { buf[n] = (unsigned char)(x & 0xff); x >>= 8; } if (x != 0) { /* data overflow - hack for ZIP64 (X Roche) */ for (n = 0; n < nbByte; n++) { buf[n] = 0xff; } } if (ZWRITE(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte) return ZIP_ERRNO; else return ZIP_OK; } local void ziplocal_putValue_inmemory OF((void* dest, uLong x, int nbByte)); local void ziplocal_putValue_inmemory (dest, x, nbByte) void* dest; uLong x; int nbByte; { unsigned char* buf=(unsigned char*)dest; int n; for (n = 0; n < nbByte; n++) { buf[n] = (unsigned char)(x & 0xff); x >>= 8; } if (x != 0) { /* data overflow - hack for ZIP64 */ for (n = 0; n < nbByte; n++) { buf[n] = 0xff; } } } /****************************************************************************/ local uLong ziplocal_TmzDateToDosDate(ptm,dosDate) const tm_zip* ptm; uLong dosDate; { uLong year = (uLong)ptm->tm_year; if (year>1980) year-=1980; else if (year>80) year-=80; return (uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) | ((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour)); } /****************************************************************************/ local int ziplocal_getByte OF(( const zlib_filefunc_def* pzlib_filefunc_def, voidpf filestream, int *pi)); local int ziplocal_getByte(pzlib_filefunc_def,filestream,pi) const zlib_filefunc_def* pzlib_filefunc_def; voidpf filestream; int *pi; { unsigned char c; int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1); if (err==1) { *pi = (int)c; return ZIP_OK; } else { if (ZERROR(*pzlib_filefunc_def,filestream)) return ZIP_ERRNO; else return ZIP_EOF; } } /* =========================================================================== Reads a long in LSB order from the given gz_stream. Sets */ local int ziplocal_getShort OF(( const zlib_filefunc_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); local int ziplocal_getShort (pzlib_filefunc_def,filestream,pX) const zlib_filefunc_def* pzlib_filefunc_def; voidpf filestream; uLong *pX; { uLong x ; int i; int err; err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); x = (uLong)i; if (err==ZIP_OK) err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); x += ((uLong)i)<<8; if (err==ZIP_OK) *pX = x; else *pX = 0; return err; } local int ziplocal_getLong OF(( const zlib_filefunc_def* pzlib_filefunc_def, voidpf filestream, uLong *pX)); local int ziplocal_getLong (pzlib_filefunc_def,filestream,pX) const zlib_filefunc_def* pzlib_filefunc_def; voidpf filestream; uLong *pX; { uLong x ; int i; int err; err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); x = (uLong)i; if (err==ZIP_OK) err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); x += ((uLong)i)<<8; if (err==ZIP_OK) err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); x += ((uLong)i)<<16; if (err==ZIP_OK) err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i); x += ((uLong)i)<<24; if (err==ZIP_OK) *pX = x; else *pX = 0; return err; } #ifndef BUFREADCOMMENT #define BUFREADCOMMENT (0x400) #endif /* Locate the Central directory of a zipfile (at the end, just before the global comment) */ local uLong ziplocal_SearchCentralDir OF(( const zlib_filefunc_def* pzlib_filefunc_def, voidpf filestream)); local uLong ziplocal_SearchCentralDir(pzlib_filefunc_def,filestream) const zlib_filefunc_def* pzlib_filefunc_def; voidpf filestream; { unsigned char* buf; uLong uSizeFile; uLong uBackRead; uLong uMaxBack=0xffff; /* maximum size of global comment */ uLong uPosFound=0; if (ZSEEK(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0) return 0; uSizeFile = ZTELL(*pzlib_filefunc_def,filestream); if (uMaxBack>uSizeFile) uMaxBack = uSizeFile; buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4); if (buf==NULL) return 0; uBackRead = 4; while (uBackReaduMaxBack) uBackRead = uMaxBack; else uBackRead+=BUFREADCOMMENT; uReadPos = uSizeFile-uBackRead ; uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ? (BUFREADCOMMENT+4) : (uSizeFile-uReadPos); if (ZSEEK(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0) break; if (ZREAD(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize) break; for (i=(int)uReadSize-3; (i--)>0;) if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) && ((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06)) { uPosFound = uReadPos+i; break; } if (uPosFound!=0) break; } TRYFREE(buf); return uPosFound; } #endif /* !NO_ADDFILEINEXISTINGZIP*/ /************************************************************/ extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc_def) const char *pathname; int append; zipcharpc* globalcomment; zlib_filefunc_def* pzlib_filefunc_def; { zip_internal ziinit; zip_internal* zi; int err=ZIP_OK; if (pzlib_filefunc_def==NULL) fill_fopen_filefunc(&ziinit.z_filefunc); else ziinit.z_filefunc = *pzlib_filefunc_def; ziinit.filestream = (*(ziinit.z_filefunc.zopen_file)) (ziinit.z_filefunc.opaque, pathname, (append == APPEND_STATUS_CREATE) ? (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE) : (ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING)); if (ziinit.filestream == NULL) return NULL; ziinit.begin_pos = ZTELL(ziinit.z_filefunc,ziinit.filestream); ziinit.in_opened_file_inzip = 0; ziinit.ci.stream_initialised = 0; ziinit.number_entry = 0; ziinit.add_position_when_writting_offset = 0; init_linkedlist(&(ziinit.central_dir)); zi = (zip_internal*)ALLOC(sizeof(zip_internal)); if (zi==NULL) { ZCLOSE(ziinit.z_filefunc,ziinit.filestream); return NULL; } /* now we add file in a zipfile */ # ifndef NO_ADDFILEINEXISTINGZIP ziinit.globalcomment = NULL; if (append == APPEND_STATUS_ADDINZIP) { uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/ uLong size_central_dir; /* size of the central directory */ uLong offset_central_dir; /* offset of start of central directory */ uLong central_pos,uL; uLong number_disk; /* number of the current dist, used for spaning ZIP, unsupported, always 0*/ uLong number_disk_with_CD; /* number the the disk with central dir, used for spaning ZIP, unsupported, always 0*/ uLong number_entry; uLong number_entry_CD; /* total number of entries in the central dir (same than number_entry on nospan) */ uLong size_comment; central_pos = ziplocal_SearchCentralDir(&ziinit.z_filefunc,ziinit.filestream); if (central_pos==0) err=ZIP_ERRNO; if (ZSEEK(ziinit.z_filefunc, ziinit.filestream, central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0) err=ZIP_ERRNO; /* the signature, already checked */ if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&uL)!=ZIP_OK) err=ZIP_ERRNO; /* number of this disk */ if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_disk)!=ZIP_OK) err=ZIP_ERRNO; /* number of the disk with the start of the central directory */ if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_disk_with_CD)!=ZIP_OK) err=ZIP_ERRNO; /* total number of entries in the central dir on this disk */ if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_entry)!=ZIP_OK) err=ZIP_ERRNO; /* total number of entries in the central dir */ if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_entry_CD)!=ZIP_OK) err=ZIP_ERRNO; if ((number_entry_CD!=number_entry) || (number_disk_with_CD!=0) || (number_disk!=0)) err=ZIP_BADZIPFILE; /* size of the central directory */ if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&size_central_dir)!=ZIP_OK) err=ZIP_ERRNO; /* offset of start of central directory with respect to the starting disk number */ if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&offset_central_dir)!=ZIP_OK) err=ZIP_ERRNO; /* zipfile global comment length */ if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&size_comment)!=ZIP_OK) err=ZIP_ERRNO; if ((central_pos0) { ziinit.globalcomment = ALLOC(size_comment+1); if (ziinit.globalcomment) { size_comment = ZREAD(ziinit.z_filefunc, ziinit.filestream,ziinit.globalcomment,size_comment); ziinit.globalcomment[size_comment]=0; } } byte_before_the_zipfile = central_pos - (offset_central_dir+size_central_dir); ziinit.add_position_when_writting_offset = byte_before_the_zipfile; { uLong size_central_dir_to_read = size_central_dir; size_t buf_size = SIZEDATA_INDATABLOCK; void* buf_read = (void*)ALLOC(buf_size); if (ZSEEK(ziinit.z_filefunc, ziinit.filestream, offset_central_dir + byte_before_the_zipfile, ZLIB_FILEFUNC_SEEK_SET) != 0) err=ZIP_ERRNO; while ((size_central_dir_to_read>0) && (err==ZIP_OK)) { uLong read_this = SIZEDATA_INDATABLOCK; if (read_this > size_central_dir_to_read) read_this = size_central_dir_to_read; if (ZREAD(ziinit.z_filefunc, ziinit.filestream,buf_read,read_this) != read_this) err=ZIP_ERRNO; if (err==ZIP_OK) err = add_data_in_datablock(&ziinit.central_dir,buf_read, (uLong)read_this); size_central_dir_to_read-=read_this; } TRYFREE(buf_read); } ziinit.begin_pos = byte_before_the_zipfile; ziinit.number_entry = number_entry_CD; if (ZSEEK(ziinit.z_filefunc, ziinit.filestream, offset_central_dir+byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0) err=ZIP_ERRNO; } if (globalcomment) { *globalcomment = ziinit.globalcomment; } # endif /* !NO_ADDFILEINEXISTINGZIP*/ if (err != ZIP_OK) { # ifndef NO_ADDFILEINEXISTINGZIP TRYFREE(ziinit.globalcomment); # endif /* !NO_ADDFILEINEXISTINGZIP*/ TRYFREE(zi); return NULL; } else { *zi = ziinit; return (zipFile)zi; } } extern zipFile ZEXPORT zipOpen (pathname, append) const char *pathname; int append; { return zipOpen2(pathname,append,NULL,NULL); } extern int ZEXPORT zipOpenNewFileInZip3 (file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, raw, windowBits, memLevel, strategy, password, crcForCrypting) zipFile file; const char* filename; const zip_fileinfo* zipfi; const void* extrafield_local; uInt size_extrafield_local; const void* extrafield_global; uInt size_extrafield_global; const char* comment; int method; int level; int raw; int windowBits; int memLevel; int strategy; const char* password; uLong crcForCrypting; { zip_internal* zi; uInt size_filename; uInt size_comment; uInt i; int err = ZIP_OK; # ifdef NOCRYPT if (password != NULL) return ZIP_PARAMERROR; # endif if (file == NULL) return ZIP_PARAMERROR; if ((method!=0) && (method!=Z_DEFLATED)) return ZIP_PARAMERROR; zi = (zip_internal*)file; if (zi->in_opened_file_inzip == 1) { err = zipCloseFileInZip (file); if (err != ZIP_OK) return err; } if (filename==NULL) filename="-"; if (comment==NULL) size_comment = 0; else size_comment = (uInt)strlen(comment); size_filename = (uInt)strlen(filename); if (zipfi == NULL) zi->ci.dosDate = 0; else { if (zipfi->dosDate != 0) zi->ci.dosDate = zipfi->dosDate; else zi->ci.dosDate = ziplocal_TmzDateToDosDate(&zipfi->tmz_date,zipfi->dosDate); } zi->ci.flag = 0; if ((level==8) || (level==9)) zi->ci.flag |= 2; if ((level==2)) zi->ci.flag |= 4; if ((level==1)) zi->ci.flag |= 6; if (password != NULL) zi->ci.flag |= 1; zi->ci.crc32 = 0; zi->ci.method = method; zi->ci.encrypt = 0; zi->ci.stream_initialised = 0; zi->ci.pos_in_buffered_data = 0; zi->ci.raw = raw; zi->ci.pos_local_header = ZTELL(zi->z_filefunc,zi->filestream) ; zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename + size_extrafield_global + size_comment; zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader); ziplocal_putValue_inmemory(zi->ci.central_header,(uLong)CENTRALHEADERMAGIC,4); /* version info */ ziplocal_putValue_inmemory(zi->ci.central_header+4,(uLong)VERSIONMADEBY,2); ziplocal_putValue_inmemory(zi->ci.central_header+6,(uLong)20,2); ziplocal_putValue_inmemory(zi->ci.central_header+8,(uLong)zi->ci.flag,2); ziplocal_putValue_inmemory(zi->ci.central_header+10,(uLong)zi->ci.method,2); ziplocal_putValue_inmemory(zi->ci.central_header+12,(uLong)zi->ci.dosDate,4); ziplocal_putValue_inmemory(zi->ci.central_header+16,(uLong)0,4); /*crc*/ ziplocal_putValue_inmemory(zi->ci.central_header+20,(uLong)0,4); /*compr size*/ ziplocal_putValue_inmemory(zi->ci.central_header+24,(uLong)0,4); /*uncompr size*/ ziplocal_putValue_inmemory(zi->ci.central_header+28,(uLong)size_filename,2); ziplocal_putValue_inmemory(zi->ci.central_header+30,(uLong)size_extrafield_global,2); ziplocal_putValue_inmemory(zi->ci.central_header+32,(uLong)size_comment,2); ziplocal_putValue_inmemory(zi->ci.central_header+34,(uLong)0,2); /*disk nm start*/ if (zipfi==NULL) ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)0,2); else ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)zipfi->internal_fa,2); if (zipfi==NULL) ziplocal_putValue_inmemory(zi->ci.central_header+38,(uLong)0,4); else ziplocal_putValue_inmemory(zi->ci.central_header+38,(uLong)zipfi->external_fa,4); ziplocal_putValue_inmemory(zi->ci.central_header+42,(uLong)zi->ci.pos_local_header- zi->add_position_when_writting_offset,4); for (i=0;ici.central_header+SIZECENTRALHEADER+i) = *(filename+i); for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+i) = *(((const char*)extrafield_global)+i); for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+ size_extrafield_global+i) = *(comment+i); if (zi->ci.central_header == NULL) return ZIP_INTERNALERROR; /* write the local header */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)LOCALHEADERMAGIC,4); if (err==ZIP_OK) err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)20,2);/* version needed to extract */ if (err==ZIP_OK) err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.flag,2); if (err==ZIP_OK) err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.method,2); if (err==ZIP_OK) err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.dosDate,4); if (err==ZIP_OK) err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* crc 32, unknown */ if (err==ZIP_OK) err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* compressed size, unknown */ if (err==ZIP_OK) err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* uncompressed size, unknown */ if (err==ZIP_OK) err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_filename,2); if (err==ZIP_OK) err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_extrafield_local,2); if ((err==ZIP_OK) && (size_filename>0)) if (ZWRITE(zi->z_filefunc,zi->filestream,filename,size_filename)!=size_filename) err = ZIP_ERRNO; if ((err==ZIP_OK) && (size_extrafield_local>0)) if (ZWRITE(zi->z_filefunc,zi->filestream,extrafield_local,size_extrafield_local) !=size_extrafield_local) err = ZIP_ERRNO; zi->ci.stream.avail_in = (uInt)0; zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; zi->ci.stream.next_out = zi->ci.buffered_data; zi->ci.stream.total_in = 0; zi->ci.stream.total_out = 0; if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) { zi->ci.stream.zalloc = (alloc_func)0; zi->ci.stream.zfree = (free_func)0; zi->ci.stream.opaque = (voidpf)0; if (windowBits>0) windowBits = -windowBits; err = deflateInit2(&zi->ci.stream, level, Z_DEFLATED, windowBits, memLevel, strategy); if (err==Z_OK) zi->ci.stream_initialised = 1; } # ifndef NOCRYPT zi->ci.crypt_header_size = 0; if ((err==Z_OK) && (password != NULL)) { unsigned char bufHead[RAND_HEAD_LEN]; unsigned int sizeHead; zi->ci.encrypt = 1; zi->ci.pcrc_32_tab = get_crc_table(); /*init_keys(password,zi->ci.keys,zi->ci.pcrc_32_tab);*/ sizeHead=crypthead(password,bufHead,RAND_HEAD_LEN,zi->ci.keys,zi->ci.pcrc_32_tab,crcForCrypting); zi->ci.crypt_header_size = sizeHead; if (ZWRITE(zi->z_filefunc,zi->filestream,bufHead,sizeHead) != sizeHead) err = ZIP_ERRNO; } # endif if (err==Z_OK) zi->in_opened_file_inzip = 1; return err; } extern int ZEXPORT zipOpenNewFileInZip2(file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, raw) zipFile file; const char* filename; const zip_fileinfo* zipfi; const void* extrafield_local; uInt size_extrafield_local; const void* extrafield_global; uInt size_extrafield_global; const char* comment; int method; int level; int raw; { return zipOpenNewFileInZip3 (file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, raw, -MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY, NULL, 0); } extern int ZEXPORT zipOpenNewFileInZip (file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level) zipFile file; const char* filename; const zip_fileinfo* zipfi; const void* extrafield_local; uInt size_extrafield_local; const void* extrafield_global; uInt size_extrafield_global; const char* comment; int method; int level; { return zipOpenNewFileInZip2 (file, filename, zipfi, extrafield_local, size_extrafield_local, extrafield_global, size_extrafield_global, comment, method, level, 0); } local int zipFlushWriteBuffer(zi) zip_internal* zi; { int err=ZIP_OK; if (zi->ci.encrypt != 0) { #ifndef NOCRYPT uInt i; int t; for (i=0;ici.pos_in_buffered_data;i++) zi->ci.buffered_data[i] = zencode(zi->ci.keys, zi->ci.pcrc_32_tab, zi->ci.buffered_data[i],t); #endif } if (ZWRITE(zi->z_filefunc,zi->filestream,zi->ci.buffered_data,zi->ci.pos_in_buffered_data) !=zi->ci.pos_in_buffered_data) err = ZIP_ERRNO; zi->ci.pos_in_buffered_data = 0; return err; } extern int ZEXPORT zipWriteInFileInZip (file, buf, len) zipFile file; const void* buf; unsigned len; { zip_internal* zi; int err=ZIP_OK; if (file == NULL) return ZIP_PARAMERROR; zi = (zip_internal*)file; if (zi->in_opened_file_inzip == 0) return ZIP_PARAMERROR; zi->ci.stream.next_in = (void*)buf; zi->ci.stream.avail_in = len; zi->ci.crc32 = crc32(zi->ci.crc32,buf,len); while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0)) { if (zi->ci.stream.avail_out == 0) { if (zipFlushWriteBuffer(zi) == ZIP_ERRNO) err = ZIP_ERRNO; zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; zi->ci.stream.next_out = zi->ci.buffered_data; } if(err != ZIP_OK) break; if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) { uLong uTotalOutBefore = zi->ci.stream.total_out; err=deflate(&zi->ci.stream, Z_NO_FLUSH); zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; } else { uInt copy_this,i; if (zi->ci.stream.avail_in < zi->ci.stream.avail_out) copy_this = zi->ci.stream.avail_in; else copy_this = zi->ci.stream.avail_out; for (i=0;ici.stream.next_out)+i) = *(((const char*)zi->ci.stream.next_in)+i); { zi->ci.stream.avail_in -= copy_this; zi->ci.stream.avail_out-= copy_this; zi->ci.stream.next_in+= copy_this; zi->ci.stream.next_out+= copy_this; zi->ci.stream.total_in+= copy_this; zi->ci.stream.total_out+= copy_this; zi->ci.pos_in_buffered_data += copy_this; } } } return err; } extern int ZEXPORT zipCloseFileInZipRaw (file, uncompressed_size, crc32) zipFile file; uLong uncompressed_size; uLong crc32; { zip_internal* zi; uLong compressed_size; int err=ZIP_OK; if (file == NULL) return ZIP_PARAMERROR; zi = (zip_internal*)file; if (zi->in_opened_file_inzip == 0) return ZIP_PARAMERROR; zi->ci.stream.avail_in = 0; if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) while (err==ZIP_OK) { uLong uTotalOutBefore; if (zi->ci.stream.avail_out == 0) { if (zipFlushWriteBuffer(zi) == ZIP_ERRNO) err = ZIP_ERRNO; zi->ci.stream.avail_out = (uInt)Z_BUFSIZE; zi->ci.stream.next_out = zi->ci.buffered_data; } uTotalOutBefore = zi->ci.stream.total_out; err=deflate(&zi->ci.stream, Z_FINISH); zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ; } if (err==Z_STREAM_END) err=ZIP_OK; /* this is normal */ if ((zi->ci.pos_in_buffered_data>0) && (err==ZIP_OK)) if (zipFlushWriteBuffer(zi)==ZIP_ERRNO) err = ZIP_ERRNO; if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw)) { err=deflateEnd(&zi->ci.stream); zi->ci.stream_initialised = 0; } if (!zi->ci.raw) { crc32 = (uLong)zi->ci.crc32; uncompressed_size = (uLong)zi->ci.stream.total_in; } compressed_size = (uLong)zi->ci.stream.total_out; # ifndef NOCRYPT compressed_size += zi->ci.crypt_header_size; # endif ziplocal_putValue_inmemory(zi->ci.central_header+16,crc32,4); /*crc*/ ziplocal_putValue_inmemory(zi->ci.central_header+20, compressed_size,4); /*compr size*/ if (zi->ci.stream.data_type == Z_ASCII) ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)Z_ASCII,2); ziplocal_putValue_inmemory(zi->ci.central_header+24, uncompressed_size,4); /*uncompr size*/ if (err==ZIP_OK) err = add_data_in_datablock(&zi->central_dir,zi->ci.central_header, (uLong)zi->ci.size_centralheader); free(zi->ci.central_header); if (err==ZIP_OK) { long cur_pos_inzip = ZTELL(zi->z_filefunc,zi->filestream); if (ZSEEK(zi->z_filefunc,zi->filestream, zi->ci.pos_local_header + 14,ZLIB_FILEFUNC_SEEK_SET)!=0) err = ZIP_ERRNO; if (err==ZIP_OK) err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */ if (err==ZIP_OK) /* compressed size, unknown */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,compressed_size,4); if (err==ZIP_OK) /* uncompressed size, unknown */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,uncompressed_size,4); if (ZSEEK(zi->z_filefunc,zi->filestream, cur_pos_inzip,ZLIB_FILEFUNC_SEEK_SET)!=0) err = ZIP_ERRNO; } zi->number_entry ++; zi->in_opened_file_inzip = 0; return err; } extern int ZEXPORT zipCloseFileInZip (file) zipFile file; { return zipCloseFileInZipRaw (file,0,0); } extern int ZEXPORT zipClose (file, global_comment) zipFile file; const char* global_comment; { zip_internal* zi; int err = 0; uLong size_centraldir = 0; uLong centraldir_pos_inzip; uInt size_global_comment; if (file == NULL) return ZIP_PARAMERROR; zi = (zip_internal*)file; if (zi->in_opened_file_inzip == 1) { err = zipCloseFileInZip (file); } #ifndef NO_ADDFILEINEXISTINGZIP if (global_comment==NULL) global_comment = zi->globalcomment; #endif if (global_comment==NULL) size_global_comment = 0; else size_global_comment = (uInt)strlen(global_comment); centraldir_pos_inzip = ZTELL(zi->z_filefunc,zi->filestream); if (err==ZIP_OK) { linkedlist_datablock_internal* ldi = zi->central_dir.first_block ; while (ldi!=NULL) { if ((err==ZIP_OK) && (ldi->filled_in_this_block>0)) if (ZWRITE(zi->z_filefunc,zi->filestream, ldi->data,ldi->filled_in_this_block) !=ldi->filled_in_this_block ) err = ZIP_ERRNO; size_centraldir += ldi->filled_in_this_block; ldi = ldi->next_datablock; } } free_datablock(zi->central_dir.first_block); if (err==ZIP_OK) /* Magic End */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)ENDHEADERMAGIC,4); if (err==ZIP_OK) /* number of this disk */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2); if (err==ZIP_OK) /* number of the disk with the start of the central directory */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2); if (err==ZIP_OK) /* total number of entries in the central dir on this disk */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2); if (err==ZIP_OK) /* total number of entries in the central dir */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2); if (err==ZIP_OK) /* size of the central directory */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_centraldir,4); if (err==ZIP_OK) /* offset of start of central directory with respect to the starting disk number */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream, (uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4); if (err==ZIP_OK) /* zipfile comment length */ err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_global_comment,2); if ((err==ZIP_OK) && (size_global_comment>0)) if (ZWRITE(zi->z_filefunc,zi->filestream, global_comment,size_global_comment) != size_global_comment) err = ZIP_ERRNO; if (ZCLOSE(zi->z_filefunc,zi->filestream) != 0) if (err == ZIP_OK) err = ZIP_ERRNO; #ifndef NO_ADDFILEINEXISTINGZIP TRYFREE(zi->globalcomment); #endif TRYFREE(zi); return err; } ================================================ FILE: AePubReader/Classes/minizip/zip.h ================================================ /* zip.h -- IO for compress .zip files using zlib Version 1.01e, February 12th, 2005 Copyright (C) 1998-2005 Gilles Vollant This unzip package allow creates .ZIP file, compatible with PKZip 2.04g WinZip, InfoZip tools and compatible. Multi volume ZipFile (span) are not supported. Encryption compatible with pkzip 2.04g only supported Old compressions used by old PKZip 1.x are not supported For uncompress .zip file, look at unzip.h I WAIT FEEDBACK at mail info@winimage.com Visit also http://www.winimage.com/zLibDll/unzip.html for evolution Condition of use and distribution are the same than zlib : This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered source versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any source distribution. */ /* for more info about .ZIP format, see http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip http://www.info-zip.org/pub/infozip/doc/ PkWare has also a specification at : ftp://ftp.pkware.com/probdesc.zip */ #ifndef _zip_H #define _zip_H #ifdef __cplusplus extern "C" { #endif #ifndef _ZLIB_H #include "zlib.h" #endif #ifndef _ZLIBIOAPI_H #include "ioapi.h" #endif #if defined(STRICTZIP) || defined(STRICTZIPUNZIP) /* like the STRICT of WIN32, we define a pointer that cannot be converted from (void*) without cast */ typedef struct TagzipFile__ { int unused; } zipFile__; typedef zipFile__ *zipFile; #else typedef voidp zipFile; #endif #define ZIP_OK (0) #define ZIP_EOF (0) #define ZIP_ERRNO (Z_ERRNO) #define ZIP_PARAMERROR (-102) #define ZIP_BADZIPFILE (-103) #define ZIP_INTERNALERROR (-104) #ifndef DEF_MEM_LEVEL # if MAX_MEM_LEVEL >= 8 # define DEF_MEM_LEVEL 8 # else # define DEF_MEM_LEVEL MAX_MEM_LEVEL # endif #endif /* default memLevel */ /* tm_zip contain date/time info */ typedef struct tm_zip_s { uInt tm_sec; /* seconds after the minute - [0,59] */ uInt tm_min; /* minutes after the hour - [0,59] */ uInt tm_hour; /* hours since midnight - [0,23] */ uInt tm_mday; /* day of the month - [1,31] */ uInt tm_mon; /* months since January - [0,11] */ uInt tm_year; /* years - [1980..2044] */ } tm_zip; typedef struct { tm_zip tmz_date; /* date in understandable format */ uLong dosDate; /* if dos_date == 0, tmu_date is used */ /* uLong flag; */ /* general purpose bit flag 2 bytes */ uLong internal_fa; /* internal file attributes 2 bytes */ uLong external_fa; /* external file attributes 4 bytes */ } zip_fileinfo; typedef const char* zipcharpc; #define APPEND_STATUS_CREATE (0) #define APPEND_STATUS_CREATEAFTER (1) #define APPEND_STATUS_ADDINZIP (2) extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append)); /* Create a zipfile. pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on an Unix computer "zlib/zlib113.zip". if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip will be created at the end of the file. (useful if the file contain a self extractor code) if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will add files in existing zip (be sure you don't add file that doesn't exist) If the zipfile cannot be opened, the return value is NULL. Else, the return value is a zipFile Handle, usable with other function of this zip package. */ /* Note : there is no delete function into a zipfile. If you want delete file into a zipfile, you must open a zipfile, and create another Of couse, you can use RAW reading and writing to copy the file you did not want delte */ extern zipFile ZEXPORT zipOpen2 OF((const char *pathname, int append, zipcharpc* globalcomment, zlib_filefunc_def* pzlib_filefunc_def)); extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level)); /* Open a file in the ZIP for writing. filename : the filename in zip (if NULL, '-' without quote will be used *zipfi contain supplemental information if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local contains the extrafield data the the local header if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global contains the extrafield data the the local header if comment != NULL, comment contain the comment string method contain the compression method (0 for store, Z_DEFLATED for deflate) level contain the level of compression (can be Z_DEFAULT_COMPRESSION) */ extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw)); /* Same than zipOpenNewFileInZip, except if raw=1, we write raw file */ extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file, const char* filename, const zip_fileinfo* zipfi, const void* extrafield_local, uInt size_extrafield_local, const void* extrafield_global, uInt size_extrafield_global, const char* comment, int method, int level, int raw, int windowBits, int memLevel, int strategy, const char* password, uLong crcForCtypting)); /* Same than zipOpenNewFileInZip2, except windowBits,memLevel,,strategy : see parameter strategy in deflateInit2 password : crypting password (NULL for no crypting) crcForCtypting : crc of file to compress (needed for crypting) */ extern int ZEXPORT zipWriteInFileInZip OF((zipFile file, const void* buf, unsigned len)); /* Write data in the zipfile */ extern int ZEXPORT zipCloseFileInZip OF((zipFile file)); /* Close the current file in the zipfile */ extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file, uLong uncompressed_size, uLong crc32)); /* Close the current file in the zipfile, for fiel opened with parameter raw=1 in zipOpenNewFileInZip2 uncompressed_size and crc32 are value for the uncompressed size */ extern int ZEXPORT zipClose OF((zipFile file, const char* global_comment)); /* Close the zipfile */ #ifdef __cplusplus } #endif #endif /* _zip_H */ ================================================ FILE: AePubReader/MainWindow.xib ================================================ 800 10K540 1306 1038.36 461.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin 301 IBUIWindow IBUICustomObject IBUIViewController IBProxyObject com.apple.InterfaceBuilder.IBCocoaTouchPlugin IBFilesOwner IBIPadFramework IBFirstResponder IBIPadFramework 292 {768, 1024} 1 MSAxIDEAA NO NO 2 IBIPadFramework YES IBIPadFramework 2 1 1 IBIPadFramework NO window 4 delegate 17 rootViewController 51 detailViewController 53 0 -1 File's Owner -2 2 3 50 UIApplication UIResponder {{190, 57}, {783, 799}} com.apple.InterfaceBuilder.IBCocoaTouchPlugin AePubReaderAppDelegate com.apple.InterfaceBuilder.IBCocoaTouchPlugin EPubViewController com.apple.InterfaceBuilder.IBCocoaTouchPlugin 54 AePubReaderAppDelegate NSObject EPubViewController UIWindow detailViewController EPubViewController window UIWindow IBProjectSource ./Classes/AePubReaderAppDelegate.h EPubViewController UIViewController id id id id id id decreaseTextSizeClicked: id doneClicked: id increaseTextSizeClicked: id showChapterIndex: id slidingEnded: id slidingStarted: id UIBarButtonItem UILabel UIBarButtonItem UIBarButtonItem UISlider UIToolbar UIWebView chapterListButton UIBarButtonItem currentPageLabel UILabel decTextSizeButton UIBarButtonItem incTextSizeButton UIBarButtonItem pageSlider UISlider toolbar UIToolbar webView UIWebView IBProjectSource ./Classes/EPubViewController.h 0 IBIPadFramework com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3 YES 3 301 ================================================ FILE: AePubReader/SearchWebView.js ================================================ // We're using a global variable to store the number of occurrences var MyApp_SearchResultCount = 0; var console = "\n"; var results = ""; var neighSize = 20; // helper function, recursively searches in elements and their child nodes function MyApp_HighlightAllOccurencesOfStringForElement(element,keyword) { if (element) { if (element.nodeType == 3) {// Text node while (true) { var value = element.nodeValue; // Search for keyword in text node var idx = value.toLowerCase().indexOf(keyword); if (idx < 0) break; // not found, abort var span = document.createElement("highlight"); span.className = "MyAppHighlight"; var text = document.createTextNode(value.substr(idx,keyword.length)); span.appendChild(text); var rightText = document.createTextNode(value.substr(idx+keyword.length)); element.deleteData(idx, value.length - idx); var next = element.nextSibling; element.parentNode.insertBefore(rightText, next); element.parentNode.insertBefore(span, rightText); var leftNeighText = element.nodeValue.substr(element.length - neighSize, neighSize); var rightNeighText = rightText.nodeValue.substr(0, neighSize); element = rightText; MyApp_SearchResultCount++; // update the counter console += "Span className: " + span.className + "\n"; console += "Span position: (" + getPos(span).x + ", " + getPos(span).y + ")\n"; results += getPos(span).x + "," + getPos(span).y + "," + escape(leftNeighText + text.nodeValue + rightNeighText) + ";"; results; } } else if (element.nodeType == 1) { // Element node if (element.style.display != "none" && element.nodeName.toLowerCase() != 'select') { for (var i=element.childNodes.length-1; i>=0; i--) { MyApp_HighlightAllOccurencesOfStringForElement(element.childNodes[i],keyword); } } } } } function getPos(el) { // yay readability for (var lx=0, ly=0; el != null; lx += el.offsetLeft, ly += el.offsetTop, el = el.offsetParent); return {x: lx,y: ly}; } // the main entry point to start the search function MyApp_HighlightAllOccurencesOfString(keyword) { MyApp_RemoveAllHighlights(); MyApp_HighlightAllOccurencesOfStringForElement(document.body, keyword.toLowerCase()); } // helper function, recursively removes the highlights in elements and their childs function MyApp_RemoveAllHighlightsForElement(element) { if (element) { if (element.nodeType == 1) { if (element.getAttribute("class") == "MyAppHighlight") { var text = element.removeChild(element.firstChild); element.parentNode.insertBefore(text,element); element.parentNode.removeChild(element); return true; } else { var normalize = false; for (var i=element.childNodes.length-1; i>=0; i--) { if (MyApp_RemoveAllHighlightsForElement(element.childNodes[i])) { normalize = true; } } if (normalize) { element.normalize(); } } } } return false; } // the main entry point to remove the highlights function MyApp_RemoveAllHighlights() { MyApp_SearchResultCount = 0; MyApp_RemoveAllHighlightsForElement(document.body); } ================================================ FILE: AePubReader/Source/CXHTMLDocument.h ================================================ // // CXHTMLDocument.h // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLDocument.h" @interface CXHTMLDocument : CXMLDocument { } - (id)initWithXHTMLData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError; - (id)initWithXHTMLString:(NSString *)inString options:(NSUInteger)inOptions error:(NSError **)outError; @end ================================================ FILE: AePubReader/Source/CXHTMLDocument.m ================================================ // // CXHTMLDocument.m // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // // This is an experiment to see if we can utilize the HTMLParser functionality // of libXML to serve as a XHTML parser, I question if this is a good idea or not // need to test some of the following // [-] How are xml namespaces handled // [-] Can we support DTD // [-] #import "CXHTMLDocument.h" #include #include #include #include #import "CXMLNode_PrivateExtensions.h" #import "CXMLElement.h" #if TOUCHXMLUSETIDY #import "CTidy.h" #endif /* TOUCHXMLUSETIDY */ @implementation CXHTMLDocument // Differs from initWithXMLString by using libXML's HTML parser, which automatically decodes XHTML/HTML entities found within the document // which eliminates the need to resanitize strings extracted from the document // libXML treats a htmlDocPtr the same as xmlDocPtr - (id)initWithXHTMLString:(NSString *)inString options:(NSUInteger)inOptions error:(NSError **)outError { #pragma unused (inOptions) if ((self = [super init]) != NULL) { NSError *theError = NULL; htmlDocPtr theDoc = htmlParseDoc(BAD_CAST[inString UTF8String], xmlGetCharEncodingName(XML_CHAR_ENCODING_UTF8)); if (theDoc != NULL) { // TODO: change code to not depend on XPATH, should be a task simple enough to do // alternatively see if we can prevent the HTML parser from adding implied tags xmlXPathContextPtr xpathContext = xmlXPathNewContext (theDoc); xmlXPathObjectPtr xpathObject = NULL; if (xpathContext) xpathObject = xmlXPathEvalExpression (BAD_CAST("/html/body"), xpathContext); xmlNodePtr bodyNode = NULL; if (xpathObject && xpathObject->nodesetval->nodeMax) bodyNode = xpathObject->nodesetval->nodeTab[0]; // TODO: Determine if this is sufficient to handle memory in libXML, is the old root removed / deleted, etc if (bodyNode) xmlDocSetRootElement(theDoc, bodyNode->children); _node = (xmlNodePtr)theDoc; NSAssert(_node->_private == NULL, @"TODO"); _node->_private = self; // Note. NOT retained (TODO think more about _private usage) if (xpathObject) xmlXPathFreeObject (xpathObject); if (xpathContext) xmlXPathFreeContext (xpathContext); } else { xmlErrorPtr theLastErrorPtr = xmlGetLastError(); NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: theLastErrorPtr ? [NSString stringWithUTF8String:theLastErrorPtr->message] : @"unknown", NSLocalizedDescriptionKey, NULL]; theError = [NSError errorWithDomain:@"CXMLErrorDomain" code:1 userInfo:theUserInfo]; xmlResetLastError(); } if (outError) *outError = theError; if (theError != NULL) { [self release]; self = NULL; } } return(self); } - (id)initWithXHTMLData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError { #pragma unused (inOptions) if ((self = [super init]) != NULL) { NSError *theError = NULL; if (theError == NULL) { xmlDocPtr theDoc = NULL; if (inData && inData.length > 0) { CFStringEncoding cfenc = CFStringConvertNSStringEncodingToEncoding(encoding); CFStringRef cfencstr = CFStringConvertEncodingToIANACharSetName(cfenc); const char *enc = CFStringGetCStringPtr(cfencstr, 0); theDoc = htmlReadMemory([inData bytes], [inData length], NULL, enc, HTML_PARSE_NONET | HTML_PARSE_NOBLANKS | HTML_PARSE_NOWARNING); } if (theDoc != NULL) { _node = (xmlNodePtr)theDoc; _node->_private = self; // Note. NOT retained (TODO think more about _private usage) } else { theError = [NSError errorWithDomain:@"CXMLErrorDomain" code:-1 userInfo:NULL]; } } if (outError) *outError = theError; if (theError != NULL) { [self release]; self = NULL; } } return(self); } @end ================================================ FILE: AePubReader/Source/CXMLDocument.h ================================================ // // CXMLDocument.h // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLNode.h" enum { CXMLDocumentTidyHTML = 1 << 9, // Based on NSXMLDocumentTidyHTML CXMLDocumentTidyXML = 1 << 10, // Based on NSXMLDocumentTidyXML }; @class CXMLElement; @interface CXMLDocument : CXMLNode { NSMutableSet *nodePool; } - (id)initWithData:(NSData *)inData options:(NSUInteger)inOptions error:(NSError **)outError; - (id)initWithData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError; - (id)initWithXMLString:(NSString *)inString options:(NSUInteger)inOptions error:(NSError **)outError; - (id)initWithContentsOfURL:(NSURL *)inURL options:(NSUInteger)inOptions error:(NSError **)outError; - (id)initWithContentsOfURL:(NSURL *)inURL encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError; //- (NSString *)characterEncoding; //- (NSString *)version; //- (BOOL)isStandalone; //- (CXMLDocumentContentKind)documentContentKind; //- (NSString *)MIMEType; //- (CXMLDTD *)DTD; - (CXMLElement *)rootElement; - (NSData *)XMLData; - (NSData *)XMLDataWithOptions:(NSUInteger)options; //- (id)objectByApplyingXSLT:(NSData *)xslt arguments:(NSDictionary *)arguments error:(NSError **)error; //- (id)objectByApplyingXSLTString:(NSString *)xslt arguments:(NSDictionary *)arguments error:(NSError **)error; //- (id)objectByApplyingXSLTAtURL:(NSURL *)xsltURL arguments:(NSDictionary *)argument error:(NSError **)error; - (id)XMLStringWithOptions:(NSUInteger)options; @end ================================================ FILE: AePubReader/Source/CXMLDocument.m ================================================ // // CXMLDocument.m // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLDocument.h" #include #import "CXMLNode_PrivateExtensions.h" #import "CXMLElement.h" #if TOUCHXMLUSETIDY #import "CTidy.h" #endif /* TOUCHXMLUSETIDY */ @implementation CXMLDocument - (id)initWithXMLString:(NSString *)inString options:(NSUInteger)inOptions error:(NSError **)outError { #pragma unused (inOptions) if ((self = [super init]) != NULL) { NSError *theError = NULL; #if TOUCHXMLUSETIDY if (inOptions & CXMLDocumentTidyHTML) { inString = [[CTidy tidy] tidyString:inString inputFormat:TidyFormat_HTML outputFormat:TidyFormat_XHTML diagnostics:NULL error:&theError]; } else if (inOptions & CXMLDocumentTidyXML) { inString = [[CTidy tidy] tidyString:inString inputFormat:TidyFormat_XML outputFormat:TidyFormat_XML diagnostics:NULL error:&theError]; } #endif xmlDocPtr theDoc = xmlParseDoc((xmlChar *)[inString UTF8String]); if (theDoc != NULL) { _node = (xmlNodePtr)theDoc; NSAssert(_node->_private == NULL, @"TODO"); _node->_private = self; // Note. NOT retained (TODO think more about _private usage) } else { xmlErrorPtr theLastErrorPtr = xmlGetLastError(); NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithUTF8String:theLastErrorPtr->message], NSLocalizedDescriptionKey, NULL]; theError = [NSError errorWithDomain:@"CXMLErrorDomain" code:1 userInfo:theUserInfo]; xmlResetLastError(); } if (outError) *outError = theError; if (theError != NULL) { [self release]; self = NULL; } } return(self); } - (id)initWithData:(NSData *)inData options:(NSUInteger)inOptions error:(NSError **)outError { return [self initWithData:inData encoding:NSUTF8StringEncoding options:inOptions error:outError]; } - (id)initWithData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError { #pragma unused (inOptions) if ((self = [super init]) != NULL) { NSError *theError = NULL; #if TOUCHXMLUSETIDY if (inOptions & CXMLDocumentTidyHTML) { inData = [[CTidy tidy] tidyData:inData inputFormat:TidyFormat_HTML outputFormat:TidyFormat_XHTML diagnostics:NULL error:&theError]; } else if (inOptions & CXMLDocumentTidyXML) { inData = [[CTidy tidy] tidyData:inData inputFormat:TidyFormat_XML outputFormat:TidyFormat_XML diagnostics:NULL error:&theError]; } #endif if (theError == NULL) { xmlDocPtr theDoc = NULL; if (inData && inData.length > 0) { CFStringEncoding cfenc = CFStringConvertNSStringEncodingToEncoding(encoding); CFStringRef cfencstr = CFStringConvertEncodingToIANACharSetName(cfenc); const char *enc = CFStringGetCStringPtr(cfencstr, 0); theDoc = xmlReadMemory([inData bytes], [inData length], NULL, enc, XML_PARSE_RECOVER | XML_PARSE_NOWARNING); } if (theDoc != NULL && xmlDocGetRootElement(theDoc) != NULL) { _node = (xmlNodePtr)theDoc; _node->_private = self; // Note. NOT retained (TODO think more about _private usage) } else { xmlErrorPtr theLastErrorPtr = xmlGetLastError(); NSString* message = [NSString stringWithUTF8String: (theLastErrorPtr ? theLastErrorPtr->message : "Unknown error")]; NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: message, NSLocalizedDescriptionKey, NULL]; theError = [NSError errorWithDomain:@"CXMLErrorDomain" code:1 userInfo:theUserInfo]; xmlResetLastError(); } } if (outError) *outError = theError; if (theError != NULL) { [self release]; self = NULL; } } return(self); } - (id)initWithContentsOfURL:(NSURL *)inURL options:(NSUInteger)inOptions error:(NSError **)outError { return [self initWithContentsOfURL:inURL encoding:NSUTF8StringEncoding options:inOptions error:outError]; } - (id)initWithContentsOfURL:(NSURL *)inURL encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError { if (outError) *outError = NULL; NSData *theData = [NSData dataWithContentsOfURL:inURL options:NSUncachedRead error:outError]; if (theData) { self = [self initWithData:theData encoding:encoding options:inOptions error:outError]; } else { self = NULL; } return(self); } - (void)dealloc { // Fix for #35 http://code.google.com/p/touchcode/issues/detail?id=35 -- clear up the node objects first (inside a pool so I _know_ they're cleared) and then freeing the document NSAutoreleasePool *thePool = [[NSAutoreleasePool alloc] init]; [nodePool release]; nodePool = NULL; [thePool release]; // xmlFreeDoc((xmlDocPtr)_node); _node = NULL; // [super dealloc]; } //- (NSString *)characterEncoding; //- (NSString *)version; //- (BOOL)isStandalone; //- (CXMLDocumentContentKind)documentContentKind; //- (NSString *)MIMEType; //- (CXMLDTD *)DTD; - (CXMLElement *)rootElement { xmlNodePtr theLibXMLNode = xmlDocGetRootElement((xmlDocPtr)_node); return([CXMLNode nodeWithLibXMLNode:theLibXMLNode freeOnDealloc:NO]); } - (NSData *)XMLData { return([self XMLDataWithOptions:0]); } - (NSData *)XMLDataWithOptions:(NSUInteger)options { #pragma unused (options) xmlChar *theBuffer = NULL; int theBufferSize = 0; xmlDocDumpMemory((xmlDocPtr)self->_node, &theBuffer, &theBufferSize); NSData *theData = [NSData dataWithBytes:theBuffer length:theBufferSize]; xmlFree(theBuffer); return(theData); } //- (id)objectByApplyingXSLT:(NSData *)xslt arguments:(NSDictionary *)arguments error:(NSError **)error; //- (id)objectByApplyingXSLTString:(NSString *)xslt arguments:(NSDictionary *)arguments error:(NSError **)error; //- (id)objectByApplyingXSLTAtURL:(NSURL *)xsltURL arguments:(NSDictionary *)argument error:(NSError **)error; - (id)XMLStringWithOptions:(NSUInteger)options { id root = [self rootElement]; NSMutableString* xmlString = [NSMutableString string]; [xmlString appendString:[root XMLStringWithOptions:options]]; return xmlString; } - (NSString *)description { NSAssert(_node != NULL, @"TODO"); NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p [%p]> ", NSStringFromClass([self class]), self, self->_node]; xmlChar *xmlbuff; int buffersize; xmlDocDumpFormatMemory((xmlDocPtr)(self->_node), &xmlbuff, &buffersize, 1); NSString *dump = [[[NSString alloc] initWithBytes:xmlbuff length:buffersize encoding:NSUTF8StringEncoding] autorelease]; xmlFree(xmlbuff); [result appendString:dump]; return result; } @end ================================================ FILE: AePubReader/Source/CXMLDocument_PrivateExtensions.h ================================================ // // CXMLDocument_PrivateExtensions.h // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLDocument.h" #include @interface CXMLDocument (CXMLDocument_PrivateExtensions) //- (id)initWithLibXmlParserContext:(xmlParserCtxtPtr)inContext options:(NSUInteger)inOptions error:(NSError **)outError; - (NSMutableSet *)nodePool; @end ================================================ FILE: AePubReader/Source/CXMLDocument_PrivateExtensions.m ================================================ // // CXMLDocument_PrivateExtensions.m // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLDocument_PrivateExtensions.h" @implementation CXMLDocument (CXMLDocument_PrivateExtensions) /* - (id)initWithLibXmlParserContext:(xmlParserCtxtPtr)inContext options:(NSUInteger)inOptions error:(NSError **)outError { xmlParseDocument(inContext); } */ - (NSMutableSet *)nodePool { if (nodePool == NULL) { nodePool = [[NSMutableSet alloc] init]; } return(nodePool); } @end ================================================ FILE: AePubReader/Source/CXMLElement.h ================================================ // // CXMLElement.h // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLNode.h" // NSXMLElement @interface CXMLElement : CXMLNode { } - (NSArray *)elementsForName:(NSString *)name; - (NSArray *)elementsForLocalName:(NSString *)localName URI:(NSString *)URI; - (NSArray *)attributes; - (CXMLNode *)attributeForName:(NSString *)name; - (CXMLNode *)attributeForLocalName:(NSString *)localName URI:(NSString *)URI; - (NSArray *)namespaces; - (CXMLNode *)namespaceForPrefix:(NSString *)name; - (CXMLNode *)resolveNamespaceForName:(NSString *)name; - (NSString *)resolvePrefixForNamespaceURI:(NSString *)namespaceURI; //- (NSString*)_XMLStringWithOptions:(NSUInteger)options appendingToString:(NSMutableString*)str; @end ================================================ FILE: AePubReader/Source/CXMLElement.m ================================================ // // CXMLElement.m // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLElement.h" #import "CXMLNode_PrivateExtensions.h" #import "CXMLNode_CreationExtensions.h" #import "CXMLNamespaceNode.h" @implementation CXMLElement - (NSArray *)elementsForName:(NSString *)name { NSMutableArray *theElements = [NSMutableArray array]; // TODO -- native xml api? const xmlChar *theName = (const xmlChar *)[name UTF8String]; xmlNodePtr theCurrentNode = _node->children; while (theCurrentNode != NULL) { if (theCurrentNode->type == XML_ELEMENT_NODE && xmlStrcmp(theName, theCurrentNode->name) == 0) { CXMLNode *theNode = [CXMLNode nodeWithLibXMLNode:(xmlNodePtr)theCurrentNode freeOnDealloc:NO]; [theElements addObject:theNode]; } theCurrentNode = theCurrentNode->next; } return(theElements); } - (NSArray *)elementsForLocalName:(NSString *)localName URI:(NSString *)URI { if (URI == nil || [URI length] == 0) return [self elementsForName:localName]; NSMutableArray *theElements = [NSMutableArray array]; const xmlChar *theLocalName = (const xmlChar *)[localName UTF8String]; const xmlChar *theNamespaceName = (const xmlChar *)[URI UTF8String]; xmlNodePtr theCurrentNode = _node->children; while (theCurrentNode != NULL) { if (theCurrentNode->type == XML_ELEMENT_NODE && xmlStrcmp(theLocalName, theCurrentNode->name) == 0 && theCurrentNode->ns && xmlStrcmp(theNamespaceName, theCurrentNode->ns->href) == 0) { CXMLNode *theNode = [CXMLNode nodeWithLibXMLNode:(xmlNodePtr)theCurrentNode freeOnDealloc:NO]; [theElements addObject:theNode]; } theCurrentNode = theCurrentNode->next; } return theElements; } - (NSArray *)attributes { NSMutableArray *theAttributes = [NSMutableArray array]; xmlAttrPtr theCurrentNode = _node->properties; while (theCurrentNode != NULL) { CXMLNode *theAttribute = [CXMLNode nodeWithLibXMLNode:(xmlNodePtr)theCurrentNode freeOnDealloc:NO]; [theAttributes addObject:theAttribute]; theCurrentNode = theCurrentNode->next; } return(theAttributes); } - (CXMLNode *)attributeForName:(NSString *)name { // TODO -- look for native libxml2 function for finding a named attribute (like xmlGetProp) NSRange split = [name rangeOfString:@":"]; xmlChar *theLocalName = NULL; xmlChar *thePrefix = NULL; if (split.length > 0) { theLocalName = (xmlChar *)[[name substringFromIndex:split.location + 1] UTF8String]; thePrefix = (xmlChar *)[[name substringToIndex:split.location] UTF8String]; } else { theLocalName = (xmlChar *)[name UTF8String]; } xmlAttrPtr theCurrentNode = _node->properties; while (theCurrentNode != NULL) { if (xmlStrcmp(theLocalName, theCurrentNode->name) == 0) { if (thePrefix == NULL || (theCurrentNode->ns && theCurrentNode->ns->prefix && xmlStrcmp(thePrefix, theCurrentNode->ns->prefix) == 0)) { CXMLNode *theAttribute = [CXMLNode nodeWithLibXMLNode:(xmlNodePtr)theCurrentNode freeOnDealloc:NO]; return(theAttribute); } } theCurrentNode = theCurrentNode->next; } return(NULL); } - (CXMLNode *)attributeForLocalName:(NSString *)localName URI:(NSString *)URI { if (URI == nil) return [self attributeForName:localName]; // TODO -- look for native libxml2 function for finding a named attribute (like xmlGetProp) const xmlChar *theLocalName = (const xmlChar *)[localName UTF8String]; const xmlChar *theNamespaceName = (const xmlChar *)[URI UTF8String]; xmlAttrPtr theCurrentNode = _node->properties; while (theCurrentNode != NULL) { if (theCurrentNode->ns && theCurrentNode->ns->href && xmlStrcmp(theLocalName, theCurrentNode->name) == 0 && xmlStrcmp(theNamespaceName, theCurrentNode->ns->href) == 0) { CXMLNode *theAttribute = [CXMLNode nodeWithLibXMLNode:(xmlNodePtr)theCurrentNode freeOnDealloc:NO]; return(theAttribute); } theCurrentNode = theCurrentNode->next; } return(NULL); } - (NSArray *)namespaces { NSMutableArray *theNamespaces = [[[NSMutableArray alloc] init] autorelease]; xmlNsPtr theCurrentNamespace = _node->nsDef; while (theCurrentNamespace != NULL) { NSString *thePrefix = theCurrentNamespace->prefix ? [NSString stringWithUTF8String:(const char *)theCurrentNamespace->prefix] : @""; NSString *theURI = [NSString stringWithUTF8String:(const char *)theCurrentNamespace->href]; CXMLNamespaceNode *theNode = [[CXMLNamespaceNode alloc] initWithPrefix:thePrefix URI:theURI parentElement:self]; [theNamespaces addObject:theNode]; [theNode release]; theCurrentNamespace = theCurrentNamespace->next; } return theNamespaces; } - (CXMLNode *)namespaceForPrefix:(NSString *)name { const xmlChar *thePrefix = (const xmlChar *)[name UTF8String]; xmlNsPtr theCurrentNamespace = _node->nsDef; while (theCurrentNamespace != NULL) { if (xmlStrcmp(theCurrentNamespace->prefix, thePrefix) == 0) { NSString *thePrefix = theCurrentNamespace->prefix ? [NSString stringWithUTF8String:(const char *)theCurrentNamespace->prefix] : @""; NSString *theURI = [NSString stringWithUTF8String:(const char *)theCurrentNamespace->href]; return [[[CXMLNamespaceNode alloc] initWithPrefix:thePrefix URI:theURI parentElement:self] autorelease]; } theCurrentNamespace = theCurrentNamespace->next; } return nil; } - (CXMLNode *)resolveNamespaceForName:(NSString *)name { NSRange split = [name rangeOfString:@":"]; if (split.length > 0) return [self namespaceForPrefix:[name substringToIndex:split.location]]; xmlNsPtr theCurrentNamespace = _node->nsDef; while (theCurrentNamespace != NULL) { if (theCurrentNamespace->prefix == 0 || (theCurrentNamespace->prefix)[0] == 0) { NSString *thePrefix = theCurrentNamespace->prefix ? [NSString stringWithUTF8String:(const char *)theCurrentNamespace->prefix] : @""; NSString *theURI = [NSString stringWithUTF8String:(const char *)theCurrentNamespace->href]; return [[[CXMLNamespaceNode alloc] initWithPrefix:thePrefix URI:theURI parentElement:self] autorelease]; } theCurrentNamespace = theCurrentNamespace->next; } return nil; } - (NSString *)resolvePrefixForNamespaceURI:(NSString *)namespaceURI { const xmlChar *theXMLURI = (const xmlChar *)[namespaceURI UTF8String]; xmlNsPtr theCurrentNamespace = _node->nsDef; while (theCurrentNamespace != NULL) { if (xmlStrcmp(theCurrentNamespace->href, theXMLURI) == 0) { if(theCurrentNamespace->prefix) return [NSString stringWithUTF8String:(const char *)theCurrentNamespace->prefix]; return @""; } theCurrentNamespace = theCurrentNamespace->next; } return nil; } //- (NSString*)_XMLStringWithOptions:(NSUInteger)options appendingToString:(NSMutableString*)str //{ //NSString* name = [self name]; //[str appendString:[NSString stringWithFormat:@"<%@", name]]; // //for (id attribute in [self attributes] ) // { // [attribute _XMLStringWithOptions:options appendingToString:str]; // } // //if ( ! _node->children ) // { // bool isEmpty = NO; // NSArray *emptyTags = [NSArray arrayWithObjects: @"br", @"area", @"link", @"img", @"param", @"hr", @"input", @"col", @"base", @"meta", nil ]; // for (id s in emptyTags) // { // if ( [s isEqualToString:@"base"] ) // { // isEmpty = YES; // break; // } // } // if ( isEmpty ) // { // [str appendString:@"/>"]; // return str; // } // } // //[str appendString:@">"]; // //if ( _node->children ) // { // for (id child in [self children]) // [child _XMLStringWithOptions:options appendingToString:str]; // } //[str appendString:[NSString stringWithFormat:@"", name]]; //return str; //} - (NSString *)description { NSAssert(_node != NULL, @"TODO"); return([NSString stringWithFormat:@"<%@ %p [%p] %@ %@>", NSStringFromClass([self class]), self, self->_node, [self name], [self XMLStringWithOptions:0]]); } @end ================================================ FILE: AePubReader/Source/CXMLElement_CreationExtensions.h ================================================ // // CXMLElement_CreationExtensions.h // TouchCode // // Created by Jonathan Wight on 04/01/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLElement.h" @interface CXMLElement (CXMLElement_CreationExtensions) - (void)addChild:(CXMLNode *)inNode; - (void)addNamespace:(CXMLNode *)inNamespace; @end ================================================ FILE: AePubReader/Source/CXMLElement_CreationExtensions.m ================================================ // // CXMLElement_CreationExtensions.m // TouchCode // // Created by Jonathan Wight on 04/01/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLElement_CreationExtensions.h" @implementation CXMLElement (CXMLElement_CreationExtensions) - (void)addChild:(CXMLNode *)inNode { NSAssert(inNode->_node->doc == NULL, @"Cannot addChild with a node that already is part of a document. Copy it first!"); NSAssert(self->_node != NULL, @"_node should not be null"); NSAssert(inNode->_node != NULL, @"_node should not be null"); xmlAddChild(self->_node, inNode->_node); } - (void)addNamespace:(CXMLNode *)inNamespace { xmlSetNs(self->_node, (xmlNsPtr)inNamespace->_node); } - (void)setStringValue:(NSString *)inStringValue { NSAssert(inStringValue != NULL, @"CXMLElement setStringValue should not be null"); xmlNodePtr theContentNode = xmlNewText((const xmlChar *)[inStringValue UTF8String]); NSAssert(self->_node != NULL, @"_node should not be null"); xmlAddChild(self->_node, theContentNode); } @end ================================================ FILE: AePubReader/Source/CXMLElement_ElementTreeExtensions.h ================================================ // // CXMLElement_ElementTreeExtensions.h // TouchCode // // Created by Jonathan Wight on 11/14/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLElement.h" @interface CXMLElement (CXMLElement_ElementTreeExtensions) - (CXMLElement *)subelement:(NSString *)inName; @end ================================================ FILE: AePubReader/Source/CXMLElement_ElementTreeExtensions.m ================================================ // // CXMLElement_ElementTreeExtensions.m // TouchCode // // Created by Jonathan Wight on 11/14/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLElement_ElementTreeExtensions.h" #import "CXMLElement_CreationExtensions.h" #import "CXMLNode_CreationExtensions.h" @implementation CXMLElement (CXMLElement_ElementTreeExtensions) - (CXMLElement *)subelement:(NSString *)inName; { CXMLElement *theSubelement = [CXMLNode elementWithName:inName]; [self addChild:theSubelement]; return(theSubelement); } @end ================================================ FILE: AePubReader/Source/CXMLNamespaceNode.h ================================================ // // CXMLNamespaceNode.h // TouchXML // #import #import "CXMLNode.h" #import "CXMLElement.h" @interface CXMLNamespaceNode : CXMLNode { NSString *_prefix; NSString *_uri; CXMLElement *_parent; } - (id) initWithPrefix:(NSString *)prefix URI:(NSString *)uri parentElement:(CXMLElement *)parent; @end ================================================ FILE: AePubReader/Source/CXMLNamespaceNode.m ================================================ // // CXMLNamespaceNode.m // TouchXML // #import "CXMLNamespaceNode.h" @implementation CXMLNamespaceNode #pragma mark - #pragma mark Init and dealloc - (id) initWithPrefix:(NSString *)prefix URI:(NSString *)uri parentElement:(CXMLElement *)parent { if ((self = [super init]) != NULL) { _prefix = [prefix copy]; _uri = [uri copy]; _parent = parent; // Don't retain parent } return self; } - (void) dealloc { [_prefix release], _prefix = nil; [_uri release], _uri = nil; _parent = nil; // Parent not retained [super dealloc]; } #pragma mark - #pragma mark Overidden methods // NB: We need to override every method that relies on _node as namespaces in libXML don't have a xmlNode - (CXMLNodeKind)kind { return CXMLNamespaceKind; } - (NSString *)name { return _prefix ? [[_prefix copy] autorelease] : @""; } - (NSString *)stringValue { return _uri ? [[_uri copy] autorelease] : @""; } - (NSUInteger)index { return 0; // TODO: Write tets, Fix } - (NSUInteger)level { return _parent ? [_parent level] + 1 : 2; } - (CXMLDocument *)rootDocument { return [_parent rootDocument]; } - (CXMLNode *)parent { return _parent; } - (NSUInteger)childCount { return 0; } - (NSArray *)children { return nil; } - (CXMLNode *)childAtIndex:(NSUInteger)index { return nil; } - (CXMLNode *)previousSibling { return nil; // TODO: Write tets, Fix } - (CXMLNode *)nextSibling { return nil; // TODO: Write tets, Fix } //- (CXMLNode *)previousNode; //- (CXMLNode *)nextNode; //- (NSString *)XPath; - (NSString *)localName { return [self name]; } - (NSString *)prefix { return @""; } - (NSString *)URI { return nil; } //+ (NSString *)localNameForName:(NSString *)name; //+ (NSString *)prefixForName:(NSString *)name; //+ (CXMLNode *)predefinedNamespaceForPrefix:(NSString *)name; - (NSString *)description { if (_prefix && [_prefix length] > 0) return [NSString stringWithFormat:@"xmlns:%@=\"%@\"", _prefix, _uri]; return [NSString stringWithFormat:@"xmlns=\"%@\"", _uri]; } - (NSString *)XMLString { return [self description]; } - (NSString *)XMLStringWithOptions:(NSUInteger)options { return [self description]; } //- (NSString *)canonicalXMLStringPreservingComments:(BOOL)comments; - (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error { return nil; } @end ================================================ FILE: AePubReader/Source/CXMLNode.h ================================================ // // CXMLNode.h // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import #include typedef enum { CXMLInvalidKind = 0, CXMLElementKind = XML_ELEMENT_NODE, CXMLAttributeKind = XML_ATTRIBUTE_NODE, CXMLTextKind = XML_TEXT_NODE, CXMLProcessingInstructionKind = XML_PI_NODE, CXMLCommentKind = XML_COMMENT_NODE, CXMLNotationDeclarationKind = XML_NOTATION_NODE, CXMLDTDKind = XML_DTD_NODE, CXMLElementDeclarationKind = XML_ELEMENT_DECL, CXMLAttributeDeclarationKind = XML_ATTRIBUTE_DECL, CXMLEntityDeclarationKind = XML_ENTITY_DECL, CXMLNamespaceKind = XML_NAMESPACE_DECL, } CXMLNodeKind; @class CXMLDocument; // NSXMLNode @interface CXMLNode : NSObject { xmlNodePtr _node; BOOL _freeNodeOnRelease; } - (CXMLNodeKind)kind; - (NSString *)name; - (NSString *)stringValue; - (NSUInteger)index; - (NSUInteger)level; - (CXMLDocument *)rootDocument; - (CXMLNode *)parent; - (NSUInteger)childCount; - (NSArray *)children; - (CXMLNode *)childAtIndex:(NSUInteger)index; - (CXMLNode *)previousSibling; - (CXMLNode *)nextSibling; //- (CXMLNode *)previousNode; //- (CXMLNode *)nextNode; //- (NSString *)XPath; - (NSString *)localName; - (NSString *)prefix; - (NSString *)URI; + (NSString *)localNameForName:(NSString *)name; + (NSString *)prefixForName:(NSString *)name; + (CXMLNode *)predefinedNamespaceForPrefix:(NSString *)name; - (NSString *)description; - (NSString *)XMLString; - (NSString *)XMLStringWithOptions:(NSUInteger)options; //- (NSString *)canonicalXMLStringPreservingComments:(BOOL)comments; - (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error; @end ================================================ FILE: AePubReader/Source/CXMLNode.m ================================================ // // CXMLNode.m // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLNode.h" #import "CXMLNode_PrivateExtensions.h" #import "CXMLDocument.h" #import "CXMLElement.h" #import "CXMLNode_CreationExtensions.h" #include #include #include static int MyXmlOutputWriteCallback(void * context, const char * buffer, int len); static int MyXmlOutputCloseCallback(void * context); @implementation CXMLNode - (void)dealloc { if (_node) { if (_node->_private == self) _node->_private = NULL; if (_freeNodeOnRelease) { xmlFreeNode(_node); } _node = NULL; } // [super dealloc]; } - (id)copyWithZone:(NSZone *)zone; { #pragma unused (zone) xmlNodePtr theNewNode = xmlCopyNode(_node, 1); CXMLNode *theNode = [[[self class] alloc] initWithLibXMLNode:theNewNode freeOnDealloc:YES]; theNewNode->_private = theNode; return(theNode); } #pragma mark - - (CXMLNodeKind)kind { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); return(_node->type); // TODO this isn't 100% accurate! } - (NSString *)name { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); // TODO use xmlCheckUTF8 to check name if (_node->name == NULL) return(NULL); NSString *localName = [NSString stringWithUTF8String:(const char *)_node->name]; if (_node->ns == NULL || _node->ns->prefix == NULL) return localName; return [NSString stringWithFormat:@"%@:%@", [NSString stringWithUTF8String:(const char *)_node->ns->prefix], localName]; } - (NSString *)stringValue { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); if (_node->type == XML_TEXT_NODE || _node->type == XML_CDATA_SECTION_NODE) return [NSString stringWithUTF8String:(const char *)_node->content]; if (_node->type == XML_ATTRIBUTE_NODE) return [NSString stringWithUTF8String:(const char *)_node->children->content]; NSMutableString *theStringValue = [[[NSMutableString alloc] init] autorelease]; for (CXMLNode *child in [self children]) { [theStringValue appendString:[child stringValue]]; } return theStringValue; } - (NSUInteger)index { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); xmlNodePtr theCurrentNode = _node->prev; NSUInteger N; for (N = 0; theCurrentNode != NULL; ++N, theCurrentNode = theCurrentNode->prev) ; return(N); } - (NSUInteger)level { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); xmlNodePtr theCurrentNode = _node->parent; NSUInteger N; for (N = 0; theCurrentNode != NULL; ++N, theCurrentNode = theCurrentNode->parent) ; return(N); } - (CXMLDocument *)rootDocument { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); return(_node->doc->_private); } - (CXMLNode *)parent { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); if (_node->parent == NULL) return(NULL); else return (_node->parent->_private); } - (NSUInteger)childCount { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); if (_node->type == CXMLAttributeKind) return 0; // NSXMLNodes of type NSXMLAttributeKind can't have children xmlNodePtr theCurrentNode = _node->children; NSUInteger N; for (N = 0; theCurrentNode != NULL; ++N, theCurrentNode = theCurrentNode->next) ; return(N); } - (NSArray *)children { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); NSMutableArray *theChildren = [NSMutableArray array]; if (_node->type != CXMLAttributeKind) // NSXML Attribs don't have children. { xmlNodePtr theCurrentNode = _node->children; while (theCurrentNode != NULL) { CXMLNode *theNode = [CXMLNode nodeWithLibXMLNode:theCurrentNode freeOnDealloc:NO]; [theChildren addObject:theNode]; theCurrentNode = theCurrentNode->next; } } return(theChildren); } - (CXMLNode *)childAtIndex:(NSUInteger)index { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); xmlNodePtr theCurrentNode = _node->children; NSUInteger N; for (N = 0; theCurrentNode != NULL && N != index; ++N, theCurrentNode = theCurrentNode->next) ; if (theCurrentNode) return([CXMLNode nodeWithLibXMLNode:theCurrentNode freeOnDealloc:NO]); return(NULL); } - (CXMLNode *)previousSibling { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); if (_node->prev == NULL) return(NULL); else return([CXMLNode nodeWithLibXMLNode:_node->prev freeOnDealloc:NO]); } - (CXMLNode *)nextSibling { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); if (_node->next == NULL) return(NULL); else return([CXMLNode nodeWithLibXMLNode:_node->next freeOnDealloc:NO]); } //- (CXMLNode *)previousNode; //- (CXMLNode *)nextNode; //- (NSString *)XPath; - (NSString *)localName { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); // TODO use xmlCheckUTF8 to check name if (_node->name == NULL) return(NULL); else return([NSString stringWithUTF8String:(const char *)_node->name]); } - (NSString *)prefix { if (_node->ns && _node->ns->prefix) return([NSString stringWithUTF8String:(const char *)_node->ns->prefix]); else return(@""); } - (NSString *)URI { if (_node->ns) return([NSString stringWithUTF8String:(const char *)_node->ns->href]); else return(NULL); } + (NSString *)localNameForName:(NSString *)name { NSRange split = [name rangeOfString:@":"]; if (split.length > 0) return [name substringFromIndex:split.location + 1]; return name; } + (NSString *)prefixForName:(NSString *)name { NSRange split = [name rangeOfString:@":"]; if (split.length > 0) return [name substringToIndex:split.location]; return @""; } + (CXMLNode *)predefinedNamespaceForPrefix:(NSString *)name { if ([name isEqualToString:@"xml"]) return [CXMLNode namespaceWithName:@"xml" stringValue:@"http://www.w3.org/XML/1998/namespace"]; if ([name isEqualToString:@"xs"]) return [CXMLNode namespaceWithName:@"xs" stringValue:@"http://www.w3.org/2001/XMLSchema"]; if ([name isEqualToString:@"xsi"]) return [CXMLNode namespaceWithName:@"xsi" stringValue:@"http://www.w3.org/2001/XMLSchema-instance"]; if ([name isEqualToString:@"xmlns"]) // Not in Cocoa, but should be as it's reserved by W3C return [CXMLNode namespaceWithName:@"xmlns" stringValue:@"http://www.w3.org/2000/xmlns/"]; return nil; } - (NSString *)description { NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); return([NSString stringWithFormat:@"<%@ %p [%p] %@ %@>", NSStringFromClass([self class]), self, self->_node, [self name], [self XMLStringWithOptions:0]]); } - (NSString *)XMLString { return([self XMLStringWithOptions:0]); } - (NSString *)XMLStringWithOptions:(NSUInteger)options { #pragma unused (options) NSMutableData *theData = [[[NSMutableData alloc] init] autorelease]; xmlOutputBufferPtr theOutputBuffer = xmlOutputBufferCreateIO(MyXmlOutputWriteCallback, MyXmlOutputCloseCallback, theData, NULL); xmlNodeDumpOutput(theOutputBuffer, _node->doc, _node, 0, 0, "utf-8"); xmlOutputBufferFlush(theOutputBuffer); NSString *theString = [[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding] autorelease]; xmlOutputBufferClose(theOutputBuffer); return(theString); } //- (NSString *)canonicalXMLStringPreservingComments:(BOOL)comments; - (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error { #pragma unused (error) NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node."); NSArray *theResult = NULL; xmlXPathContextPtr theXPathContext = xmlXPathNewContext(_node->doc); theXPathContext->node = _node; // TODO considering putting xmlChar <-> UTF8 into a NSString category xmlXPathObjectPtr theXPathObject = xmlXPathEvalExpression((const xmlChar *)[xpath UTF8String], theXPathContext); if (theXPathObject == NULL) { if (error) *error = [NSError errorWithDomain:@"TODO_DOMAIN" code:-1 userInfo:NULL]; return(NULL); } if (xmlXPathNodeSetIsEmpty(theXPathObject->nodesetval)) theResult = [NSArray array]; // TODO better to return NULL? else { NSMutableArray *theArray = [NSMutableArray array]; int N; for (N = 0; N < theXPathObject->nodesetval->nodeNr; N++) { xmlNodePtr theNode = theXPathObject->nodesetval->nodeTab[N]; [theArray addObject:[CXMLNode nodeWithLibXMLNode:theNode freeOnDealloc:NO]]; } theResult = theArray; } xmlXPathFreeObject(theXPathObject); xmlXPathFreeContext(theXPathContext); return(theResult); } //- (NSArray *)objectsForXQuery:(NSString *)xquery constants:(NSDictionary *)constants error:(NSError **)error; //- (NSArray *)objectsForXQuery:(NSString *)xquery error:(NSError **)error; @end static int MyXmlOutputWriteCallback(void * context, const char * buffer, int len) { NSMutableData *theData = context; [theData appendBytes:buffer length:len]; return(len); } static int MyXmlOutputCloseCallback(void * context) { return(0); } ================================================ FILE: AePubReader/Source/CXMLNode_PrivateExtensions.h ================================================ // // CXMLNode_PrivateExtensions.h // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLNode.h" @interface CXMLNode (CXMLNode_PrivateExtensions) @property (readonly, nonatomic, assign) xmlNodePtr node; - (id)initWithLibXMLNode:(xmlNodePtr)inLibXMLNode freeOnDealloc:(BOOL)infreeOnDealloc; + (id)nodeWithLibXMLNode:(xmlNodePtr)inLibXMLNode freeOnDealloc:(BOOL)infreeOnDealloc; @end ================================================ FILE: AePubReader/Source/CXMLNode_PrivateExtensions.m ================================================ // // CXMLNode_PrivateExtensions.m // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLNode_PrivateExtensions.h" #import "CXMLElement.h" #import "CXMLDocument_PrivateExtensions.h" @implementation CXMLNode (CXMLNode_PrivateExtensions) - (id)initWithLibXMLNode:(xmlNodePtr)inLibXMLNode freeOnDealloc:(BOOL)infreeOnDealloc { if (inLibXMLNode == NULL) return nil; if ((self = [super init]) != NULL) { _node = inLibXMLNode; _freeNodeOnRelease = infreeOnDealloc; } return(self); } + (id)nodeWithLibXMLNode:(xmlNodePtr)inLibXMLNode freeOnDealloc:(BOOL)infreeOnDealloc { // TODO more checking. if (inLibXMLNode == NULL) return nil; if (inLibXMLNode->_private) return(inLibXMLNode->_private); Class theClass = [CXMLNode class]; switch (inLibXMLNode->type) { case XML_ELEMENT_NODE: theClass = [CXMLElement class]; break; case XML_DOCUMENT_NODE: theClass = [CXMLDocument class]; break; case XML_ATTRIBUTE_NODE: case XML_TEXT_NODE: case XML_CDATA_SECTION_NODE: case XML_COMMENT_NODE: break; default: NSAssert1(NO, @"TODO Unhandled type (%d).", inLibXMLNode->type); return(NULL); } CXMLNode *theNode = [[[theClass alloc] initWithLibXMLNode:inLibXMLNode freeOnDealloc:infreeOnDealloc] autorelease]; if (inLibXMLNode->doc != NULL) { CXMLDocument *theXMLDocument = inLibXMLNode->doc->_private; if (theXMLDocument != NULL) { NSAssert([theXMLDocument isKindOfClass:[CXMLDocument class]] == YES, @"TODO"); [[theXMLDocument nodePool] addObject:theNode]; theNode->_node->_private = theNode; } } return(theNode); } - (xmlNodePtr)node { return(_node); } @end ================================================ FILE: AePubReader/Source/CXMLNode_XPathExtensions.h ================================================ // // CXMLNode_XPathExtensions.h // TouchCode // // Created by Jonathan Wight on 04/01/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLNode.h" @interface CXMLNode (CXMLNode_XPathExtensions) - (NSArray *)nodesForXPath:(NSString *)xpath namespaceMappings:(NSDictionary *)inNamespaceMappings error:(NSError **)error; - (CXMLNode *)nodeForXPath:(NSString *)xpath error:(NSError **)outError; @end ================================================ FILE: AePubReader/Source/CXMLNode_XPathExtensions.m ================================================ // // CXMLNode_XPathExtensions.m // TouchCode // // Created by Jonathan Wight on 04/01/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLNode_XPathExtensions.h" #import "CXMLDocument.h" #import "CXMLNode_PrivateExtensions.h" #include #include @implementation CXMLNode (CXMLNode_NamespaceExtensions) - (NSArray *)nodesForXPath:(NSString *)xpath namespaceMappings:(NSDictionary *)inNamespaceMappings error:(NSError **)error; { #pragma unused (error) NSAssert(_node != NULL, @"TODO"); NSArray *theResult = NULL; xmlXPathContextPtr theXPathContext = xmlXPathNewContext(_node->doc); theXPathContext->node = _node; for (NSString *thePrefix in inNamespaceMappings) { xmlXPathRegisterNs(theXPathContext, (xmlChar *)[thePrefix UTF8String], (xmlChar *)[[inNamespaceMappings objectForKey:thePrefix] UTF8String]); } // TODO considering putting xmlChar <-> UTF8 into a NSString category xmlXPathObjectPtr theXPathObject = xmlXPathEvalExpression((const xmlChar *)[xpath UTF8String], theXPathContext); if (xmlXPathNodeSetIsEmpty(theXPathObject->nodesetval)) theResult = [NSArray array]; // TODO better to return NULL? else { NSMutableArray *theArray = [NSMutableArray array]; int N; for (N = 0; N < theXPathObject->nodesetval->nodeNr; N++) { xmlNodePtr theNode = theXPathObject->nodesetval->nodeTab[N]; [theArray addObject:[CXMLNode nodeWithLibXMLNode:theNode freeOnDealloc:NO]]; } theResult = theArray; } xmlXPathFreeObject(theXPathObject); xmlXPathFreeContext(theXPathContext); return(theResult); } - (CXMLNode *)nodeForXPath:(NSString *)xpath error:(NSError **)outError { return([[self nodesForXPath:xpath error:outError] lastObject]); } @end ================================================ FILE: AePubReader/Source/Creation/CXMLDocument_CreationExtensions.h ================================================ // // CXMLDocument_CreationExtensions.h // TouchCode // // Created by Jonathan Wight on 11/11/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLDocument.h" @interface CXMLDocument (CXMLDocument_CreationExtensions) //- (void)setVersion:(NSString *)version; //primitive //- (void)setStandalone:(BOOL)standalone; //primitive //- (void)setDocumentContentKind:(CXMLDocumentContentKind)kind; //primitive //- (void)setMIMEType:(NSString *)MIMEType; //primitive //- (void)setDTD:(CXMLDTD *)documentTypeDeclaration; //primitive //- (void)setRootElement:(CXMLNode *)root; - (void)insertChild:(CXMLNode *)child atIndex:(NSUInteger)index; //- (void)insertChildren:(NSArray *)children atIndex:(NSUInteger)index; //- (void)removeChildAtIndex:(NSUInteger)index; //primitive //- (void)setChildren:(NSArray *)children; //primitive - (void)addChild:(CXMLNode *)child; //- (void)replaceChildAtIndex:(NSUInteger)index withNode:(CXMLNode *)node; @end ================================================ FILE: AePubReader/Source/Creation/CXMLDocument_CreationExtensions.m ================================================ // // CXMLDocument_CreationExtensions.m // TouchCode // // Created by Jonathan Wight on 11/11/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLDocument_CreationExtensions.h" #import "CXMLElement.h" #import "CXMLNode_PrivateExtensions.h" #import "CXMLDocument_PrivateExtensions.h" @implementation CXMLDocument (CXMLDocument_CreationExtensions) - (void)insertChild:(CXMLNode *)child atIndex:(NSUInteger)index { [self.nodePool addObject:child]; CXMLNode *theCurrentNode = [self.children objectAtIndex:index]; xmlAddPrevSibling(theCurrentNode->_node, child->_node); } - (void)addChild:(CXMLNode *)child { [self.nodePool addObject:child]; xmlAddChild(self->_node, child->_node); } @end ================================================ FILE: AePubReader/Source/Creation/CXMLNode_CreationExtensions.h ================================================ // // CXMLNode_CreationExtensions.h // TouchCode // // Created by Jonathan Wight on 04/01/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLNode.h" @class CXMLElement; @interface CXMLNode (CXMLNode_CreationExtensions) //- (id)initWithKind:(NSXMLNodeKind)kind; //- (id)initWithKind:(NSXMLNodeKind)kind options:(NSUInteger)options; //primitive + (id)document; + (id)documentWithRootElement:(CXMLElement *)element; + (id)elementWithName:(NSString *)name; + (id)elementWithName:(NSString *)name URI:(NSString *)URI; + (id)elementWithName:(NSString *)name stringValue:(NSString *)string; //+ (id)elementWithName:(NSString *)name children:(NSArray *)children attributes:(NSArray *)attributes; //+ (id)attributeWithName:(NSString *)name stringValue:(NSString *)stringValue; //+ (id)attributeWithName:(NSString *)name URI:(NSString *)URI stringValue:(NSString *)stringValue; + (id)namespaceWithName:(NSString *)name stringValue:(NSString *)stringValue; + (id)processingInstructionWithName:(NSString *)name stringValue:(NSString *)stringValue; //+ (id)commentWithStringValue:(NSString *)stringValue; //+ (id)textWithStringValue:(NSString *)stringValue; //+ (id)DTDNodeWithXMLString:(NSString *)string; - (void)setStringValue:(NSString *)inStringValue; @end ================================================ FILE: AePubReader/Source/Creation/CXMLNode_CreationExtensions.m ================================================ // // CXMLNode_CreationExtensions.m // TouchCode // // Created by Jonathan Wight on 04/01/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLNode_CreationExtensions.h" #import "CXMLDocument.h" #import "CXMLElement.h" #import "CXMLNode_PrivateExtensions.h" #import "CXMLDocument_PrivateExtensions.h" #import "CXMLNamespaceNode.h" @implementation CXMLNode (CXMLNode_CreationExtensions) + (id)document; { xmlDocPtr theDocumentNode = xmlNewDoc((const xmlChar *)"1.0"); NSAssert(theDocumentNode != NULL, @"xmlNewDoc failed"); CXMLDocument *theDocument = [[[CXMLDocument alloc] initWithLibXMLNode:(xmlNodePtr)theDocumentNode freeOnDealloc:NO] autorelease]; return(theDocument); } + (id)documentWithRootElement:(CXMLElement *)element; { xmlDocPtr theDocumentNode = xmlNewDoc((const xmlChar *)"1.0"); NSAssert(theDocumentNode != NULL, @"xmlNewDoc failed"); xmlDocSetRootElement(theDocumentNode, element.node); CXMLDocument *theDocument = [[[CXMLDocument alloc] initWithLibXMLNode:(xmlNodePtr)theDocumentNode freeOnDealloc:NO] autorelease]; [theDocument.nodePool addObject:element]; return(theDocument); } + (id)elementWithName:(NSString *)name { xmlNodePtr theElementNode = xmlNewNode(NULL, (const xmlChar *)[name UTF8String]); CXMLElement *theElement = [[[CXMLElement alloc] initWithLibXMLNode:(xmlNodePtr)theElementNode freeOnDealloc:NO] autorelease]; return(theElement); } + (id)elementWithName:(NSString *)name URI:(NSString *)URI { xmlNodePtr theElementNode = xmlNewNode(NULL, (const xmlChar *)[name UTF8String]); xmlNsPtr theNSNode = xmlNewNs(theElementNode, (const xmlChar *)[URI UTF8String], NULL); theElementNode->ns = theNSNode; CXMLElement *theElement = [[[CXMLElement alloc] initWithLibXMLNode:(xmlNodePtr)theElementNode freeOnDealloc:NO] autorelease]; return(theElement); } + (id)elementWithName:(NSString *)name stringValue:(NSString *)string { xmlNodePtr theElementNode = xmlNewNode(NULL, (const xmlChar *)[name UTF8String]); CXMLElement *theElement = [[[CXMLElement alloc] initWithLibXMLNode:(xmlNodePtr)theElementNode freeOnDealloc:NO] autorelease]; theElement.stringValue = string; return(theElement); } + (id)namespaceWithName:(NSString *)name stringValue:(NSString *)stringValue { return [[[CXMLNamespaceNode alloc] initWithPrefix:name URI:stringValue parentElement:nil] autorelease]; } + (id)processingInstructionWithName:(NSString *)name stringValue:(NSString *)stringValue; { xmlNodePtr theNode = xmlNewPI((const xmlChar *)[name UTF8String], (const xmlChar *)[stringValue UTF8String]); NSAssert(theNode != NULL, @"xmlNewPI failed"); CXMLNode *theNodeObject = [[[CXMLNode alloc] initWithLibXMLNode:theNode freeOnDealloc:NO] autorelease]; return(theNodeObject); } - (void)setStringValue:(NSString *)inStringValue { NSAssert(_node->type == XML_TEXT_NODE, @"CNode setStringValue only implemented for text nodes"); xmlNodeSetContent(_node, (const xmlChar *)[inStringValue UTF8String]); } @end ================================================ FILE: AePubReader/Source/Tidy/CTidy.h ================================================ // // CTidy.h // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #ifdef TOUCHXMLUSETIDY #import #include "tidy.h" #include "buffio.h" typedef enum { TidyFormat_HTML, TidyFormat_XML, TidyFormat_XHTML, } CTidyFormat; @interface CTidy : NSObject { } + (CTidy *)tidy; - (NSData *)tidyData:(NSData *)inData inputFormat:(CTidyFormat)inInputFormat outputFormat:(CTidyFormat)inOutputFormat diagnostics:(NSString **)outDiagnostics error:(NSError **)outError; - (NSString *)tidyString:(NSString *)inString inputFormat:(CTidyFormat)inInputFormat outputFormat:(CTidyFormat)inOutputFormat diagnostics:(NSString **)outDiagnostics error:(NSError **)outError; @end #endif /* TOUCHXMLUSETIDY */ ================================================ FILE: AePubReader/Source/Tidy/CTidy.m ================================================ // // CTidy.m // TouchCode // // Created by Jonathan Wight on 03/07/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #ifdef TOUCHXMLUSETIDY #import "CTidy.h" @interface CTidy () @end #pragma mark - @implementation CTidy + (CTidy *)tidy { return([[[self alloc] init] autorelease]); } - (NSData *)tidyData:(NSData *)inData inputFormat:(CTidyFormat)inInputFormat outputFormat:(CTidyFormat)inOutputFormat diagnostics:(NSString **)outDiagnostics error:(NSError **)outError { TidyDoc theTidyDocument = tidyCreate(); int theResultCode = 0; // Set input format if input is XML (xhtml & html are the tidy 'default') if (inInputFormat == TidyFormat_XML) { theResultCode = tidyOptSetBool(theTidyDocument, TidyXmlTags, YES); NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0"); } // Set output format TidyOptionId theOutputValue = TidyXmlOut; if (inOutputFormat == TidyFormat_HTML) theOutputValue = TidyHtmlOut; else if (inOutputFormat == TidyFormat_XHTML) theOutputValue = TidyXhtmlOut; theResultCode = tidyOptSetBool(theTidyDocument, theOutputValue, YES); NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0"); // Force output even if errors found theResultCode = tidyOptSetBool(theTidyDocument, TidyForceOutput, YES); NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0"); theResultCode = tidySetOutCharEncoding(theTidyDocument, "utf8"); NSAssert(theResultCode >= 0, @"tidySetOutCharEncoding() should return 0"); // Create an error buffer TidyBuffer theErrorBuffer; tidyBufInit(&theErrorBuffer); theResultCode = tidySetErrorBuffer(theTidyDocument, &theErrorBuffer); NSAssert(theResultCode >= 0, @"tidySetErrorBuffer() should return 0"); // ############################################################################# // Create an input buffer and copy input to it (TODO uses 2X memory == bad!) TidyBuffer theInputBuffer; tidyBufAlloc(&theInputBuffer, [inData length]); memcpy(theInputBuffer.bp, [inData bytes], [inData length]); theInputBuffer.size = [inData length]; // Parse the data. theResultCode = tidyParseBuffer(theTidyDocument, &theInputBuffer); if (theResultCode < 0) { if (outError) { NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithUTF8String:(char *)theErrorBuffer.bp], NSLocalizedDescriptionKey, NULL]; *outError = [NSError errorWithDomain:@"TODO_DOMAIN" code:theResultCode userInfo:theUserInfo]; } return(NO); } // Clean up input buffer. tidyBufFree(&theInputBuffer); // Repair the data theResultCode = tidyCleanAndRepair(theTidyDocument); if (theResultCode < 0) { return(NULL); } //theResultCode = tidyRunDiagnostics(theTidyDocument); // TidyBuffer theOutputBuffer; tidyBufInit(&theOutputBuffer); theResultCode = tidySaveBuffer(theTidyDocument, &theOutputBuffer); if (theResultCode < 0) return(NULL); NSAssert(theOutputBuffer.bp != NULL, @"The buffer should not be null."); NSData *theOutput = [NSData dataWithBytes:theOutputBuffer.bp length:theOutputBuffer.size]; tidyBufFree(&theOutputBuffer); // if (outDiagnostics && theErrorBuffer.bp != NULL) { NSData *theErrorData = [NSData dataWithBytes:theErrorBuffer.bp length:theErrorBuffer.size]; *outDiagnostics = [[[NSString alloc] initWithData:theErrorData encoding:NSUTF8StringEncoding] autorelease]; } tidyBufFree(&theErrorBuffer); // ############################################################################# tidyRelease(theTidyDocument); return(theOutput); } - (NSString *)tidyString:(NSString *)inString inputFormat:(CTidyFormat)inInputFormat outputFormat:(CTidyFormat)inOutputFormat diagnostics:(NSString **)outDiagnostics error:(NSError **)outError { TidyDoc theTidyDocument = tidyCreate(); int theResultCode = 0; // Set input format if input is XML (xhtml & html are the tidy 'default') if (inInputFormat == TidyFormat_XML) { theResultCode = tidyOptSetBool(theTidyDocument, TidyXmlTags, YES); NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0"); } // Set output format TidyOptionId theOutputValue = TidyXmlOut; if (inOutputFormat == TidyFormat_HTML) theOutputValue = TidyHtmlOut; else if (inOutputFormat == TidyFormat_XHTML) theOutputValue = TidyXhtmlOut; theResultCode = tidyOptSetBool(theTidyDocument, theOutputValue, YES); NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0"); // Force output even if errors found theResultCode = tidyOptSetBool(theTidyDocument, TidyForceOutput, YES); NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0"); theResultCode = tidySetCharEncoding(theTidyDocument, "utf8"); NSAssert(theResultCode >= 0, @"tidySetOutCharEncoding() should return 0"); // Create an error buffer TidyBuffer theErrorBuffer; tidyBufInit(&theErrorBuffer); theResultCode = tidySetErrorBuffer(theTidyDocument, &theErrorBuffer); NSAssert(theResultCode >= 0, @"tidySetErrorBuffer() should return 0"); // ############################################################################# // Parse the data. theResultCode = tidyParseString(theTidyDocument, [inString UTF8String]); if (theResultCode < 0) { if (outError) { NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys: [NSString stringWithUTF8String:(char *)theErrorBuffer.bp], NSLocalizedDescriptionKey, NULL]; *outError = [NSError errorWithDomain:@"TODO_DOMAIN" code:theResultCode userInfo:theUserInfo]; } return(NO); } // Repair the data theResultCode = tidyCleanAndRepair(theTidyDocument); if (theResultCode < 0) { return(NULL); } //theResultCode = tidyRunDiagnostics(theTidyDocument); // uint theBufferLength = 0; theResultCode = tidySaveString(theTidyDocument, NULL, &theBufferLength); NSMutableData *theOutputBuffer = [NSMutableData dataWithLength:theBufferLength]; theResultCode = tidySaveString(theTidyDocument, [theOutputBuffer mutableBytes], &theBufferLength); NSString *theString = [[[NSString alloc] initWithData:theOutputBuffer encoding:NSUTF8StringEncoding] autorelease]; // if (outDiagnostics && theErrorBuffer.bp != NULL) { NSData *theErrorData = [NSData dataWithBytes:theErrorBuffer.bp length:theErrorBuffer.size]; *outDiagnostics = [[[NSString alloc] initWithData:theErrorData encoding:NSUTF8StringEncoding] autorelease]; } tidyBufFree(&theErrorBuffer); // ############################################################################# tidyRelease(theTidyDocument); return(theString); } @end #endif /* TOUCHXMLUSETIDY */ ================================================ FILE: AePubReader/Source/TouchXML.h ================================================ // // TouchXML.h // TouchCode // // Created by Jonathan Wight on 07/11/08. // Copyright 2008 toxicsoftware.com. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // #import "CXMLDocument.h" #import "CXMLDocument_CreationExtensions.h" #import "CXMLElement.h" #import "CXMLElement_CreationExtensions.h" #import "CXMLElement_ElementTreeExtensions.h" #import "CXMLNode.h" #import "CXMLNode_CreationExtensions.h" #import "CXMLNode_XPathExtensions.h" ================================================ FILE: AePubReader/main.m ================================================ // // main.m // AePubReader // // Created by Federico Frappi on 04/04/11. // Copyright 2011 __MyCompanyName__. All rights reserved. // #import int main(int argc, char *argv[]) { NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init]; int retVal = UIApplicationMain(argc, argv, nil, nil); [pool release]; return retVal; } ================================================ FILE: README ================================================