Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

added software update, crash reporting, fixed some bugs

  • Loading branch information...
commit 1f9f130bd33228ed20d0f096de47629f9d130d4d 1 parent 1717c87
@jessegrosjean jessegrosjean authored
Showing with 6,258 additions and 420 deletions.
  1. +0 −71 BBAppSessionLoginState.h
  2. +0 −220 BBAppSessionLoginState.m
  3. +35 −0 CrashReporter.h
  4. +201 −0 CrashReporter.m
  5. +1,777 −0 English.lproj/CrashReporterWindow.xib
  6. +156 −83 English.lproj/MainMenu.xib
  7. +1,450 −0 Markdown.pl
  8. +2 −2 ODBEditor.m
  9. +96 −0 PTKeyCodes.plist
  10. +4 −2 QCAppDelegate.h
  11. +77 −24 QCAppDelegate.m
  12. +5 −1 QuickCursor-Info.plist
  13. +63 −17 QuickCursor.xcodeproj/project.pbxproj
  14. +1 −0  Sparkle.framework/Headers
  15. +1 −0  Sparkle.framework/Resources
  16. +1 −0  Sparkle.framework/Sparkle
  17. +33 −0 Sparkle.framework/Versions/A/Headers/SUAppcast.h
  18. +47 −0 Sparkle.framework/Versions/A/Headers/SUAppcastItem.h
  19. +118 −0 Sparkle.framework/Versions/A/Headers/SUUpdater.h
  20. +27 −0 Sparkle.framework/Versions/A/Headers/SUVersionComparisonProtocol.h
  21. +21 −0 Sparkle.framework/Versions/A/Headers/Sparkle.h
  22. +24 −0 Sparkle.framework/Versions/A/Resources/Info.plist
  23. +7 −0 Sparkle.framework/Versions/A/Resources/License.txt
  24. +174 −0 Sparkle.framework/Versions/A/Resources/SUModelTranslation.plist
  25. +56 −0 Sparkle.framework/Versions/A/Resources/SUStatus.nib/classes.nib
  26. +20 −0 Sparkle.framework/Versions/A/Resources/SUStatus.nib/info.nib
  27. BIN  Sparkle.framework/Versions/A/Resources/SUStatus.nib/keyedobjects.nib
  28. +50 −0 Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/classes.nib
  29. +20 −0 Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/info.nib
  30. BIN  Sparkle.framework/Versions/A/Resources/de.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
  31. +67 −0 Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/classes.nib
  32. +20 −0 Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/info.nib
  33. BIN  Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdateAlert.nib/keyedobjects.nib
  34. +59 −0 Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/classes.nib
  35. +20 −0 Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/info.nib
  36. BIN  Sparkle.framework/Versions/A/Resources/de.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
  37. BIN  Sparkle.framework/Versions/A/Resources/de.lproj/Sparkle.strings
  38. +50 −0 Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/classes.nib
  39. +20 −0 Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/info.nib
  40. BIN  Sparkle.framework/Versions/A/Resources/en.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
  41. +67 −0 Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/classes.nib
  42. +20 −0 Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/info.nib
  43. BIN  Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdateAlert.nib/keyedobjects.nib
  44. +59 −0 Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/classes.nib
  45. +21 −0 Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/info.nib
  46. BIN  Sparkle.framework/Versions/A/Resources/en.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
  47. BIN  Sparkle.framework/Versions/A/Resources/en.lproj/Sparkle.strings
  48. +50 −0 Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/classes.nib
  49. +20 −0 Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/info.nib
  50. BIN  Sparkle.framework/Versions/A/Resources/es.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
  51. +67 −0 Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/classes.nib
  52. +20 −0 Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/info.nib
  53. BIN  Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdateAlert.nib/keyedobjects.nib
  54. +59 −0 Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/classes.nib
  55. +20 −0 Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/info.nib
  56. BIN  Sparkle.framework/Versions/A/Resources/es.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
  57. BIN  Sparkle.framework/Versions/A/Resources/es.lproj/Sparkle.strings
  58. +50 −0 Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/classes.nib
  59. +16 −0 Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/info.nib
  60. BIN  Sparkle.framework/Versions/A/Resources/fr.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
  61. +67 −0 Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/classes.nib
  62. +16 −0 Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/info.nib
  63. BIN  Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdateAlert.nib/keyedobjects.nib
  64. +59 −0 Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/classes.nib
  65. +16 −0 Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/info.nib
  66. BIN  Sparkle.framework/Versions/A/Resources/fr.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
  67. BIN  Sparkle.framework/Versions/A/Resources/fr.lproj/Sparkle.strings
  68. +1 −0  Sparkle.framework/Versions/A/Resources/fr.lproj/fr.lproj
  69. +1 −0  Sparkle.framework/Versions/A/Resources/fr_CA.lproj
  70. +50 −0 Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/classes.nib
  71. +20 −0 Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/info.nib
  72. BIN  Sparkle.framework/Versions/A/Resources/it.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
  73. +67 −0 Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/classes.nib
  74. +20 −0 Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/info.nib
  75. BIN  Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdateAlert.nib/keyedobjects.nib
  76. +59 −0 Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/classes.nib
  77. +20 −0 Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/info.nib
  78. BIN  Sparkle.framework/Versions/A/Resources/it.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
  79. BIN  Sparkle.framework/Versions/A/Resources/it.lproj/Sparkle.strings
  80. +50 −0 Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/classes.nib
  81. +18 −0 Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/info.nib
  82. BIN  Sparkle.framework/Versions/A/Resources/nl.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
  83. +67 −0 Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/classes.nib
  84. +16 −0 Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/info.nib
  85. BIN  Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdateAlert.nib/keyedobjects.nib
  86. +59 −0 Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/classes.nib
  87. +16 −0 Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/info.nib
  88. BIN  Sparkle.framework/Versions/A/Resources/nl.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
  89. BIN  Sparkle.framework/Versions/A/Resources/nl.lproj/Sparkle.strings
  90. BIN  Sparkle.framework/Versions/A/Resources/relaunch
  91. +50 −0 Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/classes.nib
  92. +20 −0 Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/info.nib
  93. BIN  Sparkle.framework/Versions/A/Resources/ru.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
  94. +67 −0 Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/classes.nib
  95. +20 −0 Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/info.nib
  96. BIN  Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdateAlert.nib/keyedobjects.nib
  97. +59 −0 Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/classes.nib
  98. +18 −0 Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/info.nib
  99. BIN  Sparkle.framework/Versions/A/Resources/ru.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
  100. BIN  Sparkle.framework/Versions/A/Resources/ru.lproj/Sparkle.strings
  101. +50 −0 Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/classes.nib
  102. +20 −0 Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/info.nib
  103. BIN  Sparkle.framework/Versions/A/Resources/sv.lproj/SUAutomaticUpdateAlert.nib/keyedobjects.nib
  104. +39 −0 Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/classes.nib
  105. +18 −0 Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/info.nib
  106. BIN  Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdateAlert.nib/keyedobjects.nib
  107. +59 −0 Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/classes.nib
  108. +20 −0 Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/info.nib
  109. BIN  Sparkle.framework/Versions/A/Resources/sv.lproj/SUUpdatePermissionPrompt.nib/keyedobjects.nib
  110. BIN  Sparkle.framework/Versions/A/Resources/sv.lproj/Sparkle.strings
  111. BIN  Sparkle.framework/Versions/A/Sparkle
  112. +1 −0  Sparkle.framework/Versions/Current
  113. +4 −0 release_notes
  114. +20 −0 sparkle_dsa_pub.pem
View
71 BBAppSessionLoginState.h
@@ -1,71 +0,0 @@
-//
-// NSLoginItems.h
-//
-// Created by BrotherBard on 4/18/09.
-// Copyright 2009 BrotherBard <nkinsinger at earthlink dot net>. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-// * Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-
-#import <Cocoa/Cocoa.h>
-
-
-// This singleton class handles the state of the running app in the users login items list (called
-// Session Login items by the LSSharedFileList API).
-
-// It sets up an observer of the Session Login List and keeps track if the user changes the state
-// in System Preferences or any other outside app. The property isAppInSessionLoginList will be updated
-// when that happens.
-
-// isAppInSessionLoginList is only meant to represent the state, so do not set it yourself.
-// Use the four instance methods for that. When changing the state, the state is re-read from LSSharedFileList
-// so isAppInSessionLoginList should never not represent the current state.
-
-// Since there is no way to recover or re-apply a state change there are no returned errors. If it doesn't
-// work then isAppInSessionLoginList will not be updated.
-
-// NOTE: The LSSharedFileList API is only documented in the header file at:
-// file://localhost/Developer/SDKs/MacOSX10.5.sdk/System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/LSSharedFileList.h
-
-
-
-@interface BBAppSessionLoginState : NSObject
-{
- LSSharedFileListRef _sessionLoginItemsList;
- NSString *_appPath;
-
- BOOL isAppInSessionLoginList;
-}
-// this is the latest state of whether the app is in the login list
-// observe it for KVC changes, setting it will have no effect, use the methods below
-@property (assign) BOOL isAppInSessionLoginList;
-
-
-// designated init/access of singleton
-+ (id)sharedController;
-
-
-- (void)toggleAppSessionLoginListState;
-- (void)setAppSessionLoginListState:(BOOL)state;
-
-- (void)removeAppFromSessionLoginList;
-- (void)addAppToSessionLoginList;
-
-@end
View
220 BBAppSessionLoginState.m
@@ -1,220 +0,0 @@
-//
-// NSLoginItems.m
-//
-// Created by BrotherBard on 4/18/09.
-// Copyright 2009 BrotherBard <nkinsinger at earthlink dot net>. All rights reserved.
-//
-// Redistribution and use in source and binary forms, with or without modification,
-// are permitted provided that the following conditions are met:
-// * Redistributions of source code must retain the above copyright notice, this
-// list of conditions and the following disclaimer.
-// * Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
-// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-//
-
-#import "BBAppSessionLoginState.h"
-
-// Private
-@interface BBAppSessionLoginState()
-
-- (LSSharedFileListItemRef)itemRefForApp;
-- (void)updateLoginItemState;
-
-@end
-
-
-
-@implementation BBAppSessionLoginState
-
-@synthesize isAppInSessionLoginList;
-
-
-- (void)setIsAppInSessionLoginList:(BOOL)isInList {
- if (isAppInSessionLoginList != isInList) {
- isAppInSessionLoginList = isInList;
- if (isInList) {
- [self addAppToSessionLoginList];
- } else {
- [self removeAppFromSessionLoginList];
- }
- }
-}
-
-// When something changes I get six calls to this method. The first two have the same seed and
-// the last four do too. I'm not sure if it is something wierd on my computer, but I compare the
-// seed to the previous one to stop updating the login state too often.
-static void SharedFileListChanged(LSSharedFileListRef list, void *context)
-{
- static UInt32 previousSeed = 0;
-
- // there are other types of lists, so make sure we are just looking at the Session Login list
- LSSharedFileListRef sessionLoginList = (LSSharedFileListRef)context;
-
- if (list == sessionLoginList) {
- UInt32 seed = LSSharedFileListGetSeedValue(list);
- if (seed > previousSeed) {
- [[BBAppSessionLoginState sharedController] updateLoginItemState];
- previousSeed = seed;
- }
- }
-}
-
-
-+ (id)sharedController
-{
- static BBAppSessionLoginState *sharedController = nil;
- if (!sharedController)
- sharedController = [[self alloc] init];
-
- return sharedController;
-}
-
-
-- (id)init
-{
- self = [super init];
- if(!self) return nil;
-
- _sessionLoginItemsList = LSSharedFileListCreate(kCFAllocatorDefault, // inAllocator
- kLSSharedFileListSessionLoginItems, // inListType
- NULL); // listOptions
- if(!_sessionLoginItemsList) {
- [self release];
- return nil;
- }
-
- LSSharedFileListAddObserver(_sessionLoginItemsList, // inList
- [[NSRunLoop mainRunLoop] getCFRunLoop], // inRunloop
- kCFRunLoopDefaultMode, // inRunloopMode
- SharedFileListChanged, // callback
- _sessionLoginItemsList); // context
-
- _appPath = [[NSBundle mainBundle] bundlePath];
- [self updateLoginItemState];
-
- return self;
-}
-
-
-- (void)dealloc
-{
- if (_sessionLoginItemsList) {
- LSSharedFileListRemoveObserver(_sessionLoginItemsList, // inList
- [[NSRunLoop mainRunLoop] getCFRunLoop], // inRunloop
- kCFRunLoopDefaultMode, // inRunloopMode
- SharedFileListChanged, // callback
- _sessionLoginItemsList); // context
-
- CFRelease(_sessionLoginItemsList);
- }
-
- [super dealloc];
-}
-
-
-- (LSSharedFileListItemRef)itemRefForApp
-{
- UInt32 seed;
- NSArray *items = (NSArray *)LSSharedFileListCopySnapshot(_sessionLoginItemsList, &seed);
-
- for (id item in items) {
- LSSharedFileListItemRef itemRef = (LSSharedFileListItemRef)item;
-
- NSURL *theURL;
- LSSharedFileListItemResolve(itemRef, // inItem
- kLSSharedFileListNoUserInteraction, // inFlags
- (CFURLRef*)&theURL, // outURL
- NULL); // outFSRef
- [theURL autorelease];
-
- if ([_appPath isEqualToString:[theURL path]])
- return itemRef;
- }
-
- return NULL;
-}
-
-
-- (void)updateLoginItemState
-{
- BOOL currentState = [self itemRefForApp] ? YES : NO;
- if (self.isAppInSessionLoginList != currentState)
- isAppInSessionLoginList = currentState;
-}
-
-
-- (void)toggleAppSessionLoginListState
-{
- if (isAppInSessionLoginList)
- [self removeAppFromSessionLoginList];
- else
- [self addAppToSessionLoginList];
-}
-
-
-- (void)setAppSessionLoginListState:(BOOL)state
-{
- if (state)
- [self addAppToSessionLoginList];
- else
- [self removeAppFromSessionLoginList];
-}
-
-
-- (void)removeAppFromSessionLoginList
-{
- LSSharedFileListItemRef itemRef = [self itemRefForApp];
-
- if (itemRef) {
- OSStatus error = LSSharedFileListItemRemove(_sessionLoginItemsList, itemRef);
- if (error != noErr)
- NSLog(@"Failed to remove App from Session Login Items");
- }
-
- [self updateLoginItemState];
-}
-
-
-- (void)addAppToSessionLoginList
-{
- LSSharedFileListItemRef itemRef = [self itemRefForApp];
-
- if (!itemRef) {
- // I believe the default is to not Hide the app, but I'm not really sure because the
- // kLSSharedFileListItemHidden property is not read corretly by LSSharedFileListItemCopyProperty.
- // I'm just setting it here to have a default value.
- NSDictionary* propertiesToSet = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO]
- forKey:(id)kLSSharedFileListItemHidden];
- NSURL *url = [NSURL fileURLWithPath:_appPath];
- NSLog(@"%@", url);
-
- itemRef = LSSharedFileListInsertItemURL(_sessionLoginItemsList, // inList
- kLSSharedFileListItemLast, // insertAfterThisItem
- NULL, // inDisplayName - NULL = will use app name
- NULL, // inIconRef - NULL = will use app icon
- (CFURLRef)url, // inURL
- (CFDictionaryRef)propertiesToSet, // inPropertiesToSet
- NULL); // inPropertiesToClear
-
- if (itemRef)
- CFRelease(itemRef);
- else
- NSLog(@"Failed to add App to Session Login Items");
- }
-
- [self updateLoginItemState];
-}
-
-@end
View
35 CrashReporter.h
@@ -0,0 +1,35 @@
+//
+// CrashReporter.h
+// Documents
+//
+// Created by Jesse Grosjean on 9/6/07.
+// Copyright 2007 __MyCompanyName__. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+
+@interface CrashReporter : NSWindowController {
+ IBOutlet NSTextField *titleTextField;
+ IBOutlet NSTextField *statusMessageTextField;
+ IBOutlet NSTextView *problemCommentsTextView;
+ IBOutlet NSTextView *problemDetailsTextView;
+ IBOutlet NSButton *sendReportButton;
+ IBOutlet NSProgressIndicator *statusProgressIndicator;
+
+ NSMutableDictionary *crashReport;
+}
+
+#pragma mark class methods
+
++ (id)sharedInstance;
+
+#pragma mark actions
+
+- (IBAction)check:(id)sender;
+- (IBAction)sendReport:(id)sender;
+- (IBAction)ignore:(id)sender;
+
+@end
+
+extern NSString *CrashReporterLastCheckDateDefaultsKey;
View
201 CrashReporter.m
@@ -0,0 +1,201 @@
+//
+// CrashReporter.m
+// Documents
+//
+// Created by Jesse Grosjean on 9/6/07.
+// Copyright 2007 __MyCompanyName__. All rights reserved.
+//
+
+#import "CrashReporter.h"
+
+
+@implementation CrashReporter
+
+#pragma mark class methods
+
++ (id)sharedInstance {
+ static id sharedInstance = nil;
+ if (sharedInstance == nil) {
+ sharedInstance = [[self alloc] init];
+ }
+ return sharedInstance;
+}
+
+#pragma dealloc
+
+- (id)init {
+ if (self = [super initWithWindowNibName:@"CrashReporterWindow"]) {
+ crashReport = [[NSMutableDictionary dictionary] retain];
+ }
+ return self;
+}
+
+- (void)dealloc {
+ [crashReport release];
+ [super dealloc];
+}
+
+#pragma awake from nib like methods
+
+- (void)awakeFromNib {
+ [statusMessageTextField setStringValue:@""];
+ [[self window] setLevel:NSFloatingWindowLevel];
+}
+
+#pragma mark accessors
+
+- (NSString *)latestCrashPath {
+ NSString *name = [[NSProcessInfo processInfo] processName];
+ NSString *crashLogPrefix = [NSString stringWithFormat: @"%@_", name];
+ NSString *crashLogSuffix = @".crash";
+ NSString *crashReporterFolder = [@"~/Library/Logs/CrashReporter/" stringByExpandingTildeInPath];
+ NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:crashReporterFolder];
+ NSDate *currentDate = nil;
+ NSString *foundName = nil;
+ NSDate *foundDate = nil;
+
+ for (NSString *currentName in enumerator) {
+ if ([currentName hasPrefix:crashLogPrefix] && [currentName hasSuffix:crashLogSuffix]) {
+ currentDate = [[enumerator fileAttributes] fileModificationDate];
+ if (foundName) {
+ if ([currentDate isGreaterThan:foundDate]) {
+ foundName = currentName;
+ foundDate = currentDate;
+ }
+ } else {
+ foundName = currentName;
+ foundDate = currentDate;
+ }
+ }
+ }
+
+ if (!foundName) {
+ return nil;
+ } else {
+ return [crashReporterFolder stringByAppendingPathComponent:foundName];
+ }
+}
+
+- (void)setStatusMessage:(NSString *)message {
+ if ([message length]) {
+ [statusProgressIndicator startAnimation:nil];
+ } else {
+ [statusProgressIndicator stopAnimation:nil];
+ }
+
+ [statusMessageTextField setStringValue:message];
+ [statusMessageTextField display];
+}
+
+#pragma mark actions
+
+- (IBAction)check:(id)sender {
+ @try {
+ NSFileManager *fileManager = [NSFileManager defaultManager];
+ NSString *latestCrashPath = [self latestCrashPath];
+ NSDictionary *lastCrashFileAttributes = [fileManager fileAttributesAtPath:latestCrashPath traverseLink:YES];
+
+ if (lastCrashFileAttributes) {
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
+ NSDate *lastCheckDate = [defaults objectForKey:CrashReporterLastCheckDateDefaultsKey];
+ NSDate *lastCrashDate = [lastCrashFileAttributes fileModificationDate];
+
+ if (lastCheckDate == nil || [lastCheckDate isLessThan:lastCrashDate]) {
+ [defaults setObject:lastCrashDate forKey:CrashReporterLastCheckDateDefaultsKey];
+ [defaults synchronize];
+
+ NSWindow *window = [self window];
+ NSString *processName = [[NSProcessInfo processInfo] processName];
+ NSMutableString *crashLogs = [NSMutableString string];
+
+ [statusProgressIndicator setUsesThreadedAnimation:YES];
+
+ [window setTitle:[NSString stringWithFormat:[window title], processName]];
+ [titleTextField setStringValue:[NSString stringWithFormat:[titleTextField stringValue], processName]];
+
+ [window center];
+ [window orderFront:self];
+
+ NSString *crashLog = [NSString stringWithContentsOfFile:latestCrashPath encoding:NSUTF8StringEncoding error:NULL];
+ if ([crashLog length] > 0) {
+ [crashLogs appendString:crashLog];
+ }
+
+ [[problemDetailsTextView textStorage] replaceCharactersInRange:NSMakeRange(0, 0) withString:crashLogs];
+
+ [crashReport setObject:crashLogs forKey:@"log"];
+ [crashReport setObject:@"jesse@hogbaysoftware.com" forKey:@"email"];
+ }
+ }
+ } @catch (NSException * e) {
+ NSLog(@"Exception while checking for crash reports %@", [e description]);
+ }
+}
+
+- (IBAction)sendReport:(id)sender {
+ NSString *crashReportURLString = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CrashReporterPostToURL"];
+
+ if (!crashReportURLString) {
+ NSRunAlertPanel(NSLocalizedString(@"Unable to send crash report", nil),
+ NSLocalizedString(@"No value has been set for the CrashReporterPostToURL key in the applications Info.plist. Please contact the applictions developer.", nil),
+ NSLocalizedString(@"OK", nil),
+ nil,
+ nil);
+ return;
+ }
+
+ [crashReport setObject:[[problemCommentsTextView textStorage] string] forKey:@"description"];
+
+ NSMutableString *reportString = [[[NSMutableString alloc] init] autorelease];
+ NSEnumerator *enumerator = [[crashReport allKeys] objectEnumerator];
+ NSString *key;
+
+ while(key = [enumerator nextObject]) {
+ if ([reportString length] != 0) [reportString appendString:@"&"];
+ [reportString appendFormat:@"%@=%@", key, [[crashReport objectForKey:key] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
+ }
+
+ NSData *data = nil;
+
+ while(!data) {
+ NSError *error;
+ NSURLResponse *reply;
+ NSURL *crashReportURL = [NSURL URLWithString:crashReportURLString];
+ NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:crashReportURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:120];
+ [request addValue:[[NSProcessInfo processInfo] processName] forHTTPHeaderField:[NSString stringWithFormat:@"%@-Bug-Report", [[NSProcessInfo processInfo] processName]]];
+ [request setHTTPMethod:@"POST"];
+ [request setHTTPBody:[reportString dataUsingEncoding:NSUTF8StringEncoding]];
+
+ [self setStatusMessage:NSLocalizedString(@"Sending Report...", nil)];
+
+ data = [NSURLConnection sendSynchronousRequest:request returningResponse:&reply error:&error];
+
+ [self setStatusMessage:@""];
+
+ if (!data) {
+ if (NSRunAlertPanel(NSLocalizedString(@"Unable to send crash report", nil),
+ error != nil ? [error localizedDescription] : @"",
+ NSLocalizedString(@"Try Again", nil),
+ NSLocalizedString(@"Cancel", nil),
+ nil) == NSAlertAlternateReturn) {
+ break;
+ }
+ } else {
+ NSRunAlertPanel(NSLocalizedString(@"Thank You", nil),
+ NSLocalizedString(@"The crash report has been sent.", nil),
+ NSLocalizedString(@"OK", nil),
+ nil,
+ nil);
+ }
+ }
+
+ [self close];
+}
+
+- (IBAction)ignore:(id)sender {
+ [self close];
+}
+
+@end
+
+NSString *CrashReporterLastCheckDateDefaultsKey = @"CrashReporterLastCheckDateDefaultsKey";
View
1,777 English.lproj/CrashReporterWindow.xib
@@ -0,0 +1,1777 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
+ <data>
+ <int key="IBDocument.SystemTarget">1050</int>
+ <string key="IBDocument.SystemVersion">10B504</string>
+ <string key="IBDocument.InterfaceBuilderVersion">732</string>
+ <string key="IBDocument.AppKitVersion">1038.2</string>
+ <string key="IBDocument.HIToolboxVersion">437.00</string>
+ <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
+ <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string key="NS.object.0">732</string>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <integer value="2"/>
+ </object>
+ <object class="NSArray" key="IBDocument.PluginDependencies">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ </object>
+ <object class="NSMutableDictionary" key="IBDocument.Metadata">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys" id="0">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSCustomObject" id="1001">
+ <string key="NSClassName">CrashReporter</string>
+ </object>
+ <object class="NSCustomObject" id="1003">
+ <string key="NSClassName">FirstResponder</string>
+ </object>
+ <object class="NSCustomObject" id="1004">
+ <string key="NSClassName">NSApplication</string>
+ </object>
+ <object class="NSWindowTemplate" id="1005">
+ <int key="NSWindowStyleMask">15</int>
+ <int key="NSWindowBacking">2</int>
+ <string key="NSWindowRect">{{196, 161}, {714, 349}}</string>
+ <int key="NSWTFlags">544735232</int>
+ <string key="NSWindowTitle">%@ Crash Report</string>
+ <string key="NSWindowClass">NSWindow</string>
+ <nil key="NSViewClass"/>
+ <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ <object class="NSView" key="NSWindowView" id="1006">
+ <reference key="NSNextResponder"/>
+ <int key="NSvFlags">256</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextField" id="424097362">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{98, 312}, {525, 17}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="571196273">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">4194304</int>
+ <string key="NSContents">%@ unexpectedly quit during the last session.</string>
+ <object class="NSFont" key="NSSupport">
+ <string key="NSName">LucidaGrande-Bold</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">2072</int>
+ </object>
+ <reference key="NSControlView" ref="424097362"/>
+ <object class="NSColor" key="NSBackgroundColor" id="691939010">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlColor</string>
+ <object class="NSColor" key="NSColor" id="867461778">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MC42NjY2NjY2NjY3AA</bytes>
+ </object>
+ </object>
+ <object class="NSColor" key="NSTextColor" id="853728282">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">controlTextColor</string>
+ <object class="NSColor" key="NSColor" id="1033094978">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MAA</bytes>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSButton" id="327211885">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{578, 12}, {122, 32}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="906451702">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Send Report</string>
+ <object class="NSFont" key="NSSupport" id="725672096">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">13</double>
+ <int key="NSfFlags">1044</int>
+ </object>
+ <reference key="NSControlView" ref="327211885"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="725672096"/>
+ <string key="NSAlternateContents"/>
+ <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSButton" id="450828624">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">289</int>
+ <string key="NSFrame">{{456, 12}, {122, 32}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSButtonCell" key="NSCell" id="786938885">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">134217728</int>
+ <string key="NSContents">Ignore</string>
+ <reference key="NSSupport" ref="725672096"/>
+ <reference key="NSControlView" ref="450828624"/>
+ <int key="NSButtonFlags">-2038284033</int>
+ <int key="NSButtonFlags2">1</int>
+ <reference key="NSAlternateImage" ref="725672096"/>
+ <string key="NSAlternateContents"/>
+ <object class="NSMutableString" key="NSKeyEquivalent">
+ <characters key="NS.bytes"/>
+ </object>
+ <int key="NSPeriodicDelay">200</int>
+ <int key="NSPeriodicInterval">25</int>
+ </object>
+ </object>
+ <object class="NSScrollView" id="102354965">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">266</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="474315846">
+ <reference key="NSNextResponder" ref="102354965"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextView" id="437623250">
+ <reference key="NSNextResponder" ref="474315846"/>
+ <int key="NSvFlags">2322</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple HTML pasteboard type</string>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>Apple URL pasteboard type</string>
+ <string>CorePasteboardFlavorType 0x6D6F6F76</string>
+ <string>NSColor pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NSStringPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT RTFD pasteboard type</string>
+ <string>NeXT Rich Text Format v1.0 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ <string>NeXT font pasteboard type</string>
+ <string>NeXT ruler pasteboard type</string>
+ <string>WebURLsWithTitlesPboardType</string>
+ <string>public.url</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{576, 14}</string>
+ <reference key="NSSuperview" ref="474315846"/>
+ <object class="NSTextContainer" key="NSTextContainer" id="350940703">
+ <object class="NSLayoutManager" key="NSLayoutManager">
+ <object class="NSTextStorage" key="NSTextStorage">
+ <object class="NSMutableString" key="NSString">
+ <characters key="NS.bytes"/>
+ </object>
+ <nil key="NSDelegate"/>
+ </object>
+ <object class="NSMutableArray" key="NSTextContainers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="350940703"/>
+ </object>
+ <int key="NSLMFlags">6</int>
+ <nil key="NSDelegate"/>
+ </object>
+ <reference key="NSTextView" ref="437623250"/>
+ <double key="NSWidth">576</double>
+ <int key="NSTCFlags">1</int>
+ </object>
+ <object class="NSTextViewSharedData" key="NSSharedData">
+ <int key="NSFlags">12035</int>
+ <int key="NSTextCheckingTypes">0</int>
+ <nil key="NSMarkedAttributes"/>
+ <object class="NSColor" key="NSBackgroundColor" id="582501146">
+ <int key="NSColorSpace">3</int>
+ <bytes key="NSWhite">MQA</bytes>
+ </object>
+ <object class="NSDictionary" key="NSSelectedAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSBackgroundColor</string>
+ <string>NSColor</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSColor" id="1010504435">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">selectedTextBackgroundColor</string>
+ <reference key="NSColor" ref="867461778"/>
+ </object>
+ <object class="NSColor" id="246992641">
+ <int key="NSColorSpace">6</int>
+ <string key="NSCatalogName">System</string>
+ <string key="NSColorName">selectedTextColor</string>
+ <reference key="NSColor" ref="1033094978"/>
+ </object>
+ </object>
+ </object>
+ <reference key="NSInsertionColor" ref="1033094978"/>
+ <object class="NSDictionary" key="NSLinkAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSColor</string>
+ <string>NSCursor</string>
+ <string>NSUnderline</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSColor" id="362543287">
+ <int key="NSColorSpace">1</int>
+ <bytes key="NSRGB">MCAwIDEAA</bytes>
+ </object>
+ <object class="NSCursor" id="1009410137">
+ <string key="NSHotSpot">{8, -8}</string>
+ <int key="NSCursorType">13</int>
+ </object>
+ <integer value="1"/>
+ </object>
+ </object>
+ <nil key="NSDefaultParagraphStyle"/>
+ </object>
+ <int key="NSTVFlags">6</int>
+ <string key="NSMaxSize">{1169, 1e+07}</string>
+ <string key="NSMinize">{502, 0}</string>
+ <nil key="NSDelegate"/>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 1}, {576, 48}}</string>
+ <reference key="NSSuperview" ref="102354965"/>
+ <reference key="NSNextKeyView" ref="437623250"/>
+ <reference key="NSDocView" ref="437623250"/>
+ <reference key="NSBGColor" ref="582501146"/>
+ <object class="NSCursor" key="NSCursor" id="469925489">
+ <string key="NSHotSpot">{4, -5}</string>
+ <int key="NSCursorType">1</int>
+ </object>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="957522197">
+ <reference key="NSNextResponder" ref="102354965"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{577, 1}, {15, 48}}</string>
+ <reference key="NSSuperview" ref="102354965"/>
+ <reference key="NSTarget" ref="102354965"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ </object>
+ <object class="NSScroller" id="282017310">
+ <reference key="NSNextResponder" ref="102354965"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
+ <reference key="NSSuperview" ref="102354965"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="102354965"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ <double key="NSPercent">0.94565218687057495</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{101, 193}, {593, 50}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <reference key="NSNextKeyView" ref="474315846"/>
+ <int key="NSsFlags">18</int>
+ <reference key="NSVScroller" ref="957522197"/>
+ <reference key="NSHScroller" ref="282017310"/>
+ <reference key="NSContentView" ref="474315846"/>
+ <bytes key="NSScrollAmts">AAAAAAAAAAAAAAAAAAAAAA</bytes>
+ </object>
+ <object class="NSScrollView" id="409710185">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">274</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="1023965428">
+ <reference key="NSNextResponder" ref="409710185"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextView" id="828003658">
+ <reference key="NSNextResponder" ref="1023965428"/>
+ <int key="NSvFlags">2322</int>
+ <string key="NSFrameSize">{576, 14}</string>
+ <reference key="NSSuperview" ref="1023965428"/>
+ <object class="NSTextContainer" key="NSTextContainer" id="183237123">
+ <object class="NSLayoutManager" key="NSLayoutManager">
+ <object class="NSTextStorage" key="NSTextStorage">
+ <object class="NSMutableString" key="NSString">
+ <characters key="NS.bytes"/>
+ </object>
+ <nil key="NSDelegate"/>
+ </object>
+ <object class="NSMutableArray" key="NSTextContainers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="183237123"/>
+ </object>
+ <int key="NSLMFlags">6</int>
+ <nil key="NSDelegate"/>
+ </object>
+ <reference key="NSTextView" ref="828003658"/>
+ <double key="NSWidth">576</double>
+ <int key="NSTCFlags">1</int>
+ </object>
+ <object class="NSTextViewSharedData" key="NSSharedData">
+ <int key="NSFlags">10497</int>
+ <int key="NSTextCheckingTypes">0</int>
+ <nil key="NSMarkedAttributes"/>
+ <reference key="NSBackgroundColor" ref="582501146"/>
+ <object class="NSDictionary" key="NSSelectedAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSBackgroundColor</string>
+ <string>NSColor</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1010504435"/>
+ <reference ref="246992641"/>
+ </object>
+ </object>
+ <reference key="NSInsertionColor" ref="1033094978"/>
+ <object class="NSDictionary" key="NSLinkAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSColor</string>
+ <string>NSCursor</string>
+ <string>NSUnderline</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="362543287"/>
+ <reference ref="1009410137"/>
+ <integer value="1"/>
+ </object>
+ </object>
+ <nil key="NSDefaultParagraphStyle"/>
+ </object>
+ <int key="NSTVFlags">6</int>
+ <string key="NSMaxSize">{1169, 1e+07}</string>
+ <string key="NSMinize">{502, 0}</string>
+ <nil key="NSDelegate"/>
+ </object>
+ </object>
+ <string key="NSFrame">{{1, 1}, {576, 98}}</string>
+ <reference key="NSSuperview" ref="409710185"/>
+ <reference key="NSNextKeyView" ref="828003658"/>
+ <reference key="NSDocView" ref="828003658"/>
+ <reference key="NSBGColor" ref="582501146"/>
+ <reference key="NSCursor" ref="469925489"/>
+ <int key="NScvFlags">4</int>
+ </object>
+ <object class="NSScroller" id="276062255">
+ <reference key="NSNextResponder" ref="409710185"/>
+ <int key="NSvFlags">256</int>
+ <string key="NSFrame">{{577, 1}, {15, 98}}</string>
+ <reference key="NSSuperview" ref="409710185"/>
+ <reference key="NSTarget" ref="409710185"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ </object>
+ <object class="NSScroller" id="172228688">
+ <reference key="NSNextResponder" ref="409710185"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
+ <reference key="NSSuperview" ref="409710185"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="409710185"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ <double key="NSPercent">0.94565218687057495</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{101, 60}, {593, 100}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <reference key="NSNextKeyView" ref="1023965428"/>
+ <int key="NSsFlags">18</int>
+ <reference key="NSVScroller" ref="276062255"/>
+ <reference key="NSHScroller" ref="172228688"/>
+ <reference key="NSContentView" ref="1023965428"/>
+ <bytes key="NSScrollAmts">AAAAAAAAAAAAAAAAAAAAAA</bytes>
+ </object>
+ <object class="NSScrollView" id="585627226">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">4362</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSClipView" id="553810414">
+ <reference key="NSNextResponder" ref="585627226"/>
+ <int key="NSvFlags">2304</int>
+ <object class="NSMutableArray" key="NSSubviews">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextView" id="400271132">
+ <reference key="NSNextResponder" ref="553810414"/>
+ <int key="NSvFlags">6162</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple HTML pasteboard type</string>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>Apple URL pasteboard type</string>
+ <string>CorePasteboardFlavorType 0x6D6F6F76</string>
+ <string>NSColor pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NSStringPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT RTFD pasteboard type</string>
+ <string>NeXT Rich Text Format v1.0 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ <string>NeXT font pasteboard type</string>
+ <string>NeXT ruler pasteboard type</string>
+ <string>WebURLsWithTitlesPboardType</string>
+ <string>public.url</string>
+ </object>
+ </object>
+ <string key="NSFrameSize">{599, 26}</string>
+ <reference key="NSSuperview" ref="553810414"/>
+ <object class="NSTextContainer" key="NSTextContainer" id="772692025">
+ <object class="NSLayoutManager" key="NSLayoutManager">
+ <object class="NSTextStorage" key="NSTextStorage">
+ <object class="NSMutableString" key="NSString">
+ <bytes key="NS.bytes">Q2xpY2sgIlNlbmQgUmVwb3J0IiB0byBzdWJtaXQgdGhpcyByZXBvcnQgdG8gSG9nIEJheSBTb2Z0d2Fy
+ZS4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjb2xsZWN0ZWQgYW5vbnltb3VzbHkuIFlvdSB3aWxsIG5vdCBi
+ZSBjb250YWN0ZWQgYWJvdXQgdGhpcyByZXBvcnQuIFRvIGNvbnRhY3QgSG9nIEJheSBTb2Z0d2FyZSBw
+bGVhc2UgdmlzaXQgdGhlIHVzZXIgZm9ydW1zLg</bytes>
+ </object>
+ <object class="NSMutableArray" key="NSAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSDictionary">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSFont</string>
+ <string>NSParagraphStyle</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSFont" id="818915481">
+ <string key="NSName">LucidaGrande</string>
+ <double key="NSSize">11</double>
+ <int key="NSfFlags">16</int>
+ </object>
+ <object class="NSParagraphStyle">
+ <int key="NSAlignment">4</int>
+ <object class="NSArray" key="NSTabStops">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSTextTab">
+ <double key="NSLocation">28</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">56</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">84</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">112</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">140</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">168</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">196</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">224</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">252</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">280</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">308</double>
+ </object>
+ <object class="NSTextTab">
+ <double key="NSLocation">336</double>
+ </object>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSDictionary">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSFont</string>
+ <string>NSLink</string>
+ <string>NSParagraphStyle</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="818915481"/>
+ <object class="NSURL">
+ <nil key="NS.base"/>
+ <string key="NS.relative">http://www.hogbaysoftware.com/forums</string>
+ </object>
+ <object class="NSParagraphStyle">
+ <int key="NSAlignment">4</int>
+ <nil key="NSTabStops"/>
+ </object>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableData" key="NSAttributeInfo">
+ <bytes key="NS.bytes">xAEACwEBAA</bytes>
+ </object>
+ <nil key="NSDelegate"/>
+ </object>
+ <object class="NSMutableArray" key="NSTextContainers">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="772692025"/>
+ </object>
+ <int key="NSLMFlags">6</int>
+ <nil key="NSDelegate"/>
+ </object>
+ <reference key="NSTextView" ref="400271132"/>
+ <double key="NSWidth">599</double>
+ <int key="NSTCFlags">1</int>
+ </object>
+ <object class="NSTextViewSharedData" key="NSSharedData">
+ <int key="NSFlags">2055</int>
+ <int key="NSTextCheckingTypes">0</int>
+ <nil key="NSMarkedAttributes"/>
+ <reference key="NSBackgroundColor" ref="582501146"/>
+ <object class="NSDictionary" key="NSSelectedAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSBackgroundColor</string>
+ <string>NSColor</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1010504435"/>
+ <reference ref="246992641"/>
+ </object>
+ </object>
+ <reference key="NSInsertionColor" ref="1033094978"/>
+ <object class="NSDictionary" key="NSLinkAttributes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSColor</string>
+ <string>NSCursor</string>
+ <string>NSUnderline</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="362543287"/>
+ <reference ref="1009410137"/>
+ <integer value="1"/>
+ </object>
+ </object>
+ <nil key="NSDefaultParagraphStyle"/>
+ </object>
+ <int key="NSTVFlags">6</int>
+ <string key="NSMaxSize">{1198, 1e+07}</string>
+ <string key="NSMinize">{439, 0}</string>
+ <nil key="NSDelegate"/>
+ </object>
+ </object>
+ <string key="NSFrameSize">{599, 28}</string>
+ <reference key="NSSuperview" ref="585627226"/>
+ <reference key="NSNextKeyView" ref="400271132"/>
+ <reference key="NSDocView" ref="400271132"/>
+ <reference key="NSBGColor" ref="582501146"/>
+ <reference key="NSCursor" ref="469925489"/>
+ <int key="NScvFlags">2</int>
+ </object>
+ <object class="NSScroller" id="734035046">
+ <reference key="NSNextResponder" ref="585627226"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {15, 123}}</string>
+ <reference key="NSSuperview" ref="585627226"/>
+ <reference key="NSTarget" ref="585627226"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ </object>
+ <object class="NSScroller" id="667168594">
+ <reference key="NSNextResponder" ref="585627226"/>
+ <int key="NSvFlags">-2147483392</int>
+ <string key="NSFrame">{{-100, -100}, {87, 18}}</string>
+ <reference key="NSSuperview" ref="585627226"/>
+ <int key="NSsFlags">1</int>
+ <reference key="NSTarget" ref="585627226"/>
+ <string key="NSAction">_doScroller:</string>
+ <double key="NSCurValue">1</double>
+ <double key="NSPercent">0.94565218687057495</double>
+ </object>
+ </object>
+ <string key="NSFrame">{{95, 276}, {599, 28}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <reference key="NSNextKeyView" ref="553810414"/>
+ <int key="NSsFlags">0</int>
+ <reference key="NSVScroller" ref="734035046"/>
+ <reference key="NSHScroller" ref="667168594"/>
+ <reference key="NSContentView" ref="553810414"/>
+ <bytes key="NSScrollAmts">AAAAAAAAAAAAAAAAAAAAAA</bytes>
+ </object>
+ <object class="NSTextField" id="566733792">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{98, 251}, {599, 17}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="376681427">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">4194304</int>
+ <string key="NSContents">Comments</string>
+ <reference key="NSSupport" ref="725672096"/>
+ <reference key="NSControlView" ref="566733792"/>
+ <reference key="NSBackgroundColor" ref="691939010"/>
+ <reference key="NSTextColor" ref="853728282"/>
+ </object>
+ </object>
+ <object class="NSTextField" id="461899648">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">266</int>
+ <string key="NSFrame">{{98, 168}, {599, 17}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="386409888">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">4194304</int>
+ <string key="NSContents">Problem Details and System Configuration</string>
+ <reference key="NSSupport" ref="725672096"/>
+ <reference key="NSControlView" ref="461899648"/>
+ <reference key="NSBackgroundColor" ref="691939010"/>
+ <reference key="NSTextColor" ref="853728282"/>
+ </object>
+ </object>
+ <object class="NSProgressIndicator" id="476328279">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">1316</int>
+ <object class="NSPSMatrix" key="NSDrawMatrix"/>
+ <string key="NSFrame">{{101, 22}, {16, 16}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <int key="NSpiFlags">28938</int>
+ <double key="NSMaxValue">100</double>
+ </object>
+ <object class="NSTextField" id="76632638">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">290</int>
+ <string key="NSFrame">{{122, 22}, {335, 17}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSTextFieldCell" key="NSCell" id="369128118">
+ <int key="NSCellFlags">67239424</int>
+ <int key="NSCellFlags2">4194304</int>
+ <string key="NSContents">Status Message...</string>
+ <reference key="NSSupport" ref="725672096"/>
+ <reference key="NSControlView" ref="76632638"/>
+ <reference key="NSBackgroundColor" ref="691939010"/>
+ <reference key="NSTextColor" ref="853728282"/>
+ </object>
+ </object>
+ <object class="NSImageView" id="312034778">
+ <reference key="NSNextResponder" ref="1006"/>
+ <int key="NSvFlags">268</int>
+ <object class="NSMutableSet" key="NSDragTypes">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="set.sortedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>Apple PDF pasteboard type</string>
+ <string>Apple PICT pasteboard type</string>
+ <string>Apple PNG pasteboard type</string>
+ <string>NSFilenamesPboardType</string>
+ <string>NeXT Encapsulated PostScript v1.2 pasteboard type</string>
+ <string>NeXT TIFF v4.0 pasteboard type</string>
+ </object>
+ </object>
+ <string key="NSFrame">{{20, 265}, {64, 64}}</string>
+ <reference key="NSSuperview" ref="1006"/>
+ <bool key="NSEnabled">YES</bool>
+ <object class="NSImageCell" key="NSCell" id="109865741">
+ <int key="NSCellFlags">130560</int>
+ <int key="NSCellFlags2">33554432</int>
+ <object class="NSCustomResource" key="NSContents">
+ <string key="NSClassName">NSImage</string>
+ <string key="NSResourceName">NSApplicationIcon</string>
+ </object>
+ <int key="NSAlign">0</int>
+ <int key="NSScale">1</int>
+ <int key="NSStyle">0</int>
+ <bool key="NSAnimates">YES</bool>
+ </object>
+ <bool key="NSEditable">YES</bool>
+ </object>
+ </object>
+ <string key="NSFrameSize">{714, 349}</string>
+ <reference key="NSSuperview"/>
+ </object>
+ <string key="NSScreenRect">{{0, 0}, {1680, 1028}}</string>
+ <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
+ </object>
+ </object>
+ <object class="IBObjectContainer" key="IBDocument.Objects">
+ <object class="NSMutableArray" key="connectionRecords">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">sendReportButton</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="327211885"/>
+ </object>
+ <int key="connectionID">29</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">statusMessageTextField</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="76632638"/>
+ </object>
+ <int key="connectionID">30</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">statusProgressIndicator</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="476328279"/>
+ </object>
+ <int key="connectionID">31</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">titleTextField</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="424097362"/>
+ </object>
+ <int key="connectionID">33</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">window</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="1005"/>
+ </object>
+ <int key="connectionID">34</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">ignore:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="450828624"/>
+ </object>
+ <int key="connectionID">35</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBActionConnection" key="connection">
+ <string key="label">sendReport:</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="327211885"/>
+ </object>
+ <int key="connectionID">36</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">delegate</string>
+ <reference key="source" ref="1005"/>
+ <reference key="destination" ref="1001"/>
+ </object>
+ <int key="connectionID">37</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">problemDetailsTextView</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="828003658"/>
+ </object>
+ <int key="connectionID">52</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">problemCommentsTextView</string>
+ <reference key="source" ref="1001"/>
+ <reference key="destination" ref="437623250"/>
+ </object>
+ <int key="connectionID">53</int>
+ </object>
+ <object class="IBConnectionRecord">
+ <object class="IBOutletConnection" key="connection">
+ <string key="label">initialFirstResponder</string>
+ <reference key="source" ref="1005"/>
+ <reference key="destination" ref="102354965"/>
+ </object>
+ <int key="connectionID">54</int>
+ </object>
+ </object>
+ <object class="IBMutableOrderedSet" key="objectRecords">
+ <object class="NSArray" key="orderedObjects">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBObjectRecord">
+ <int key="objectID">0</int>
+ <reference key="object" ref="0"/>
+ <reference key="children" ref="1000"/>
+ <nil key="parent"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-2</int>
+ <reference key="object" ref="1001"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">File's Owner</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-1</int>
+ <reference key="object" ref="1003"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">First Responder</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">-3</int>
+ <reference key="object" ref="1004"/>
+ <reference key="parent" ref="0"/>
+ <string key="objectName">Application</string>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">1</int>
+ <reference key="object" ref="1005"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="1006"/>
+ </object>
+ <reference key="parent" ref="0"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">2</int>
+ <reference key="object" ref="1006"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="424097362"/>
+ <reference ref="312034778"/>
+ <reference ref="585627226"/>
+ <reference ref="566733792"/>
+ <reference ref="102354965"/>
+ <reference ref="461899648"/>
+ <reference ref="409710185"/>
+ <reference ref="327211885"/>
+ <reference ref="450828624"/>
+ <reference ref="476328279"/>
+ <reference ref="76632638"/>
+ </object>
+ <reference key="parent" ref="1005"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">3</int>
+ <reference key="object" ref="424097362"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="571196273"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">4</int>
+ <reference key="object" ref="327211885"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="906451702"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">5</int>
+ <reference key="object" ref="450828624"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="786938885"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">6</int>
+ <reference key="object" ref="102354965"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="282017310"/>
+ <reference ref="957522197"/>
+ <reference ref="437623250"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">7</int>
+ <reference key="object" ref="566733792"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="376681427"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">10</int>
+ <reference key="object" ref="476328279"/>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">11</int>
+ <reference key="object" ref="76632638"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="369128118"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">12</int>
+ <reference key="object" ref="312034778"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="109865741"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">15</int>
+ <reference key="object" ref="109865741"/>
+ <reference key="parent" ref="312034778"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">16</int>
+ <reference key="object" ref="369128118"/>
+ <reference key="parent" ref="76632638"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">19</int>
+ <reference key="object" ref="376681427"/>
+ <reference key="parent" ref="566733792"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">20</int>
+ <reference key="object" ref="282017310"/>
+ <reference key="parent" ref="102354965"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">21</int>
+ <reference key="object" ref="957522197"/>
+ <reference key="parent" ref="102354965"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">22</int>
+ <reference key="object" ref="437623250"/>
+ <reference key="parent" ref="102354965"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">23</int>
+ <reference key="object" ref="786938885"/>
+ <reference key="parent" ref="450828624"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">24</int>
+ <reference key="object" ref="906451702"/>
+ <reference key="parent" ref="327211885"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">25</int>
+ <reference key="object" ref="571196273"/>
+ <reference key="parent" ref="424097362"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">42</int>
+ <reference key="object" ref="585627226"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="400271132"/>
+ <reference ref="734035046"/>
+ <reference ref="667168594"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">43</int>
+ <reference key="object" ref="400271132"/>
+ <reference key="parent" ref="585627226"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">44</int>
+ <reference key="object" ref="734035046"/>
+ <reference key="parent" ref="585627226"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">45</int>
+ <reference key="object" ref="667168594"/>
+ <reference key="parent" ref="585627226"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">46</int>
+ <reference key="object" ref="461899648"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="386409888"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">47</int>
+ <reference key="object" ref="386409888"/>
+ <reference key="parent" ref="461899648"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">48</int>
+ <reference key="object" ref="409710185"/>
+ <object class="NSMutableArray" key="children">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference ref="828003658"/>
+ <reference ref="276062255"/>
+ <reference ref="172228688"/>
+ </object>
+ <reference key="parent" ref="1006"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">49</int>
+ <reference key="object" ref="828003658"/>
+ <reference key="parent" ref="409710185"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">50</int>
+ <reference key="object" ref="276062255"/>
+ <reference key="parent" ref="409710185"/>
+ </object>
+ <object class="IBObjectRecord">
+ <int key="objectID">51</int>
+ <reference key="object" ref="172228688"/>
+ <reference key="parent" ref="409710185"/>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="flattenedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>-3.IBPluginDependency</string>
+ <string>1.IBEditorWindowLastContentRect</string>
+ <string>1.IBPluginDependency</string>
+ <string>1.IBWindowTemplateEditedContentRect</string>
+ <string>1.NSWindowTemplate.visibleAtLaunch</string>
+ <string>1.WindowOrigin</string>
+ <string>1.editorWindowContentRectSynchronizationRect</string>
+ <string>10.IBPluginDependency</string>
+ <string>10.ImportedFromIB2</string>
+ <string>11.IBPluginDependency</string>
+ <string>11.ImportedFromIB2</string>
+ <string>12.IBPluginDependency</string>
+ <string>12.ImportedFromIB2</string>
+ <string>15.IBPluginDependency</string>
+ <string>16.IBPluginDependency</string>
+ <string>19.IBPluginDependency</string>
+ <string>2.IBPluginDependency</string>
+ <string>20.IBPluginDependency</string>
+ <string>20.IBShouldRemoveOnLegacySave</string>
+ <string>21.IBPluginDependency</string>
+ <string>21.IBShouldRemoveOnLegacySave</string>
+ <string>22.IBPluginDependency</string>
+ <string>22.ImportedFromIB2</string>
+ <string>23.IBPluginDependency</string>
+ <string>24.IBPluginDependency</string>
+ <string>25.IBPluginDependency</string>
+ <string>3.IBPluginDependency</string>
+ <string>3.ImportedFromIB2</string>
+ <string>4.IBPluginDependency</string>
+ <string>4.ImportedFromIB2</string>
+ <string>42.IBPluginDependency</string>
+ <string>42.ImportedFromIB2</string>
+ <string>43.IBPluginDependency</string>
+ <string>43.ImportedFromIB2</string>
+ <string>44.IBPluginDependency</string>
+ <string>44.IBShouldRemoveOnLegacySave</string>
+ <string>45.IBPluginDependency</string>
+ <string>45.IBShouldRemoveOnLegacySave</string>
+ <string>46.IBPluginDependency</string>
+ <string>46.ImportedFromIB2</string>
+ <string>47.IBPluginDependency</string>
+ <string>48.IBPluginDependency</string>
+ <string>48.ImportedFromIB2</string>
+ <string>49.IBPluginDependency</string>
+ <string>49.ImportedFromIB2</string>
+ <string>5.IBPluginDependency</string>
+ <string>5.ImportedFromIB2</string>
+ <string>50.IBPluginDependency</string>
+ <string>50.IBShouldRemoveOnLegacySave</string>
+ <string>51.IBPluginDependency</string>
+ <string>51.IBShouldRemoveOnLegacySave</string>
+ <string>6.IBPluginDependency</string>
+ <string>6.ImportedFromIB2</string>
+ <string>7.IBPluginDependency</string>
+ <string>7.ImportedFromIB2</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{456, 715}, {714, 349}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>{{456, 715}, {714, 349}}</string>
+ <boolean value="NO"/>
+ <string>{196, 240}</string>
+ <string>{{202, 428}, {480, 270}}</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+ <boolean value="YES"/>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="unlocalizedProperties">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="activeLocalization"/>
+ <object class="NSMutableDictionary" key="localizations">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <reference key="dict.sortedKeys" ref="0"/>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ </object>
+ </object>
+ <nil key="sourceID"/>
+ <int key="maxID">54</int>
+ </object>
+ <object class="IBClassDescriber" key="IBDocument.Classes">
+ <object class="NSMutableArray" key="referencedPartialClassDescriptions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">CrashReporter</string>
+ <string key="superclassName">NSWindowController</string>
+ <object class="NSMutableDictionary" key="actions">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>check:</string>
+ <string>ignore:</string>
+ <string>sendReport:</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>id</string>
+ <string>id</string>
+ <string>id</string>
+ </object>
+ </object>
+ <object class="NSMutableDictionary" key="outlets">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="NSArray" key="dict.sortedKeys">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>problemCommentsTextView</string>
+ <string>problemDetailsTextView</string>
+ <string>sendReportButton</string>
+ <string>statusMessageTextField</string>
+ <string>statusProgressIndicator</string>
+ <string>titleTextField</string>
+ </object>
+ <object class="NSMutableArray" key="dict.values">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <string>NSTextView</string>
+ <string>NSTextView</string>
+ <string>NSButton</string>
+ <string>NSTextField</string>
+ <string>NSProgressIndicator</string>
+ <string>NSTextField</string>
+ </object>
+ </object>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">CrashReporter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBProjectSource</string>
+ <string key="minorKey">ODBEditor.h</string>
+ </object>
+ </object>
+ </object>
+ <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
+ <bool key="EncodedWithXMLCoder">YES</bool>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSActionCell</string>
+ <string key="superclassName">NSCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <string key="superclassName">NSResponder</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="696339003">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="835536837">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="726998911">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSApplication</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSButton</string>
+ <string key="superclassName">NSControl</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSButtonCell</string>
+ <string key="superclassName">NSActionCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSCell</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSControl</string>
+ <string key="superclassName">NSView</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier" id="798692969">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSFormatter</string>
+ <string key="superclassName">NSObject</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">
+ <string key="className">NSImageCell</string>
+ <string key="superclassName">NSCell</string>
+ <object class="IBClassDescriptionSource" key="sourceIdentifier">
+ <string key="majorKey">IBFrameworkSource</string>
+ <string key="minorKey">AppKit.framework/Headers/NSImageCell.h</string>
+ </object>
+ </object>
+ <object class="IBPartialClassDescription">