Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/APEMain.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/APEMain.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/APEMain.m	(revision 124)
@@ -0,0 +1,262 @@
+// ===========================================================================
+//
+//	File:		APEMain.m
+//
+//	Contains:	ICeCoffEE APE Module code
+//
+//	Copyright:	Copyright (c) 2003, Nicholas Riley
+//			All Rights Reserved.
+//
+//	Author(s):	Nicholas Riley (Sun Jan 19 2003)
+//
+// ===========================================================================
+
+#import <Carbon/Carbon.h>
+#import <ApplicationEnhancer/ApplicationEnhancer.h>
+#import <ApplicationEnhancer/APETools.h>
+#import <objc/objc-runtime.h>
+#import "ICeCoffEE.h"
+#import "ICeCoffEETextEdit.h"
+#import "CPS.h"
+
+//¥¥¥ Our settings
+
+//¥¥¥ Function prototypes
+static void ICCF_ReloadPrefs();				// reloads our preferences
+static void ICCF_MigratePrefs();			// migrates prefs from 1.0Ð1.2
+
+//¥¥¥ Enter sandman, the code begins --
+
+#define ICCF_GET_PATCHCLASS(patchclass) \
+    struct objc_class *patchclass = objc_getClass(patchclass ## Name); \
+    if (patchclass == NULL) { \
+        ICapeprintf("can't get %s\n", patchclass ## Name); \
+        return NO; \
+    }
+
+#define ICCF_GET_METHOD(name, patchclass, sel) \
+    Method name = class_getInstanceMethod(patchclass, sel); \
+    if (name == NULL) { \
+        ICapeprintf("can't get %s\n", patchclass ## Name); \
+        return NO; \
+    }
+
+BOOL ICCF_PatchMethod(char *patcheeClassName,
+                      char *patchClassName,
+                      char *patchSuperclassName,
+                      char *selectorString) {
+
+    ICCF_GET_PATCHCLASS(patcheeClass);
+    ICCF_GET_PATCHCLASS(patchClass);
+    ICCF_GET_PATCHCLASS(patchSuperclass);
+
+    SEL selector = sel_getUid(selectorString);
+
+    ICCF_GET_METHOD(patcheeMethod, patcheeClass, selector);
+    ICCF_GET_METHOD(patchMethod, patchClass, selector);
+    ICCF_GET_METHOD(patchSuperMethod, patchSuperclass, selector);
+
+    if (APEPatchCreate(patchSuperMethod->method_imp,
+                       APEPatchCreate(patcheeMethod->method_imp, patchMethod->method_imp)) == NULL) {
+        ICapeprintf("can't patch class %s with [%s %s] super %s", patcheeClassName, patchClassName, selectorString, patchSuperclassName);
+        return NO;
+    }
+    return YES;
+}
+
+CFBundleRef ICCF_bundle;
+
+void APEBundleMain(CFBundleRef inBundle)
+{
+    ICCF_MigratePrefs();
+
+    UInt32 icVersion = CFBundleGetVersionNumber(inBundle);
+    ICapeprintf("ICeCoffEE APE: bundle version is %ld (0x%x)\n", icVersion, icVersion);
+    CFNumberRef icVersionRef = CFNumberCreate(NULL, kCFNumberLongType, &icVersion);
+    CFPreferencesSetAppValue(kICLastLoadedVersion, icVersionRef, kICBundleIdentifier);
+    SAFE_RELEASE(icVersionRef);
+
+    // first check if this application is in the exclude list;
+    // if it is, simply return and do not apply any patches.
+    // APETools will help us with that; APE Manager will take care of
+    // exclude list management for us.
+    if (APEToolsIsInExcludeList(kICBundleIdentifier, NULL)) {
+        ICapeprintf("ICeCoffEE APE: not loading as this application is excluded.\n");
+        return;
+    }
+
+    CPSProcessSerNum psn;
+    OSStatus err = CPSGetCurrentProcess(&psn);
+    if (err != noErr) {
+#if ICCF_DEBUG
+        apeprintf("ICeCoffEE APE: Can't get process serial number for current process (error %ld); still loading because of ICCF_DEBUG\n", err);
+#else
+        apeprintf("ICeCoffEE APE: Can't get process serial number for current process (error %ld); not loading in this application\n", err);
+        return;
+#endif
+    }
+    
+    CPSProcessInfoRec info;
+    err = CPSGetProcessInfo(&psn, &info, NULL, 0, NULL, NULL, 0);
+    if (err != noErr) {
+#if ICCF_DEBUG
+        apeprintf("ICeCoffEE APE: Can't get process information (error %ld); still loading because of ICCF_DEBUG\n", err);
+#else
+        apeprintf("ICeCoffEE APE: Can't get process information (error %ld); not loading in this application\n", err);
+        return;
+#endif
+    }
+    ICapeprintf("ICeCoffEE APE: got process attributes = 0x%lx\n", info.Attributes);
+    if (info.Attributes & (kCPSBGOnlyAttr | kCPSUIElementAttr | kCPSFullScreenAttr)) {
+        ICapeprintf("ICeCoffEE APE: not loading as this application is background-only\n");
+        return;
+    }
+
+    ICCF_bundle = CFBundleGetBundleWithIdentifier(kICBundleIdentifier);
+    CFStringRef bundleID = CFBundleGetIdentifier(CFBundleGetMainBundle());
+    BOOL shouldLoadInNSTextView = YES;
+
+    // XXX handle patching error return from ICCF_PatchMethod
+    if (bundleID != NULL) {
+        if (CFStringCompare(bundleID, CFSTR("com.apple.projectbuilder"), kCFCompareCaseInsensitive) == kCFCompareEqualTo) {
+            ICCF_PatchMethod("PBXTextView", "ICeCoffEEMenuOnly", "ICeCoffEEMenuSuper", "menuForEvent:");
+            ICapeprintf("ICeCoffEE APE: loaded in PBXTextView for PB!\n");
+            shouldLoadInNSTextView = NO;
+        } else if (CFStringCompare(bundleID, CFSTR("com.apple.terminal"), kCFCompareCaseInsensitive) == kCFCompareEqualTo) {
+            ICCF_PatchMethod("TermSubview", "ICeCoffEEMenuOnly", "ICeCoffEEMenuSuper", "menuForEvent:") &&
+            ICCF_PatchMethod("TermSubview", "ICeCoffEETerminal", "ICECoffEETermSubviewSuper", "selectedRange") &&
+            ICCF_PatchMethod("TermSubview", "ICeCoffEETerminal", "ICECoffEETermSubviewSuper", "attributedSubstringFromRange:") &&
+            ICCF_PatchMethod("TermSubview", "ICeCoffEETerminal", "ICECoffEETermSubviewSuper", "mouseDown:") &&
+            ICCF_PatchMethod("TermSubview", "ICeCoffEETerminal", "ICECoffEETermSubviewSuper", "mouseUp:") &&
+            ICCF_PatchMethod("TermSubview", "ICeCoffEETerminal", "ICECoffEETermSubviewSuper", "_optionClickEvent:::") ,
+            ICapeprintf("ICeCoffEE APE: loaded in TermSubview for Terminal!\n");
+        } else if (CFStringCompare(bundleID, CFSTR("com.apple.safari"), kCFCompareCaseInsensitive) == kCFCompareEqualTo) {
+#if ICCF_WEBKIT
+            ICCF_PatchMethod("WebHTMLView", "ICeCoffEEWebKit", "ICeCoffEEWebKitSuper", "mouseUp:") &&
+            ICCF_PatchMethod("WebHTMLView", "ICeCoffEEWebKit", "ICeCoffEEWebKitSuper", "mouseDown:") &&
+            ICCF_PatchMethod("WebHTMLView", "ICeCoffEEWebKit", "ICeCoffEEWebKitSuper", "menuForEvent:") , 
+            ICapeprintf("ICeCoffEE APE: loaded in WebHTMLView for Safari!\n");
+#endif
+        }
+    }
+
+    if (shouldLoadInNSTextView) {
+        ICCF_PatchMethod("NSTextView", "ICeCoffEE", "ICeCoffEESuper", "mouseDown:") &&
+        ICCF_PatchMethod("NSTextView", "ICeCoffEE", "ICeCoffEESuper", "menuForEvent:") ,
+        ICapeprintf("ICeCoffEE APE: loaded generic NSTextView support\n");
+    }
+
+    gTEClick = APEPatchCreate(&TEClick, &ICCF_TEClick);
+    if (gTEClick != NULL) {
+        ICapeprintf("ICeCoffEE APE: patched TEClick\n");
+    }
+
+    ICCF_ReloadPrefs();
+        
+    return;
+}
+
+// We define APEBundleMessage so we can receive messages from our preference pane.  We actually only know the Refresh message that instructs our APE module to reload the preferences.  Why do we reload preferences here and not do it in our patch? Well, although you can poll CFPreferences in every patch call, that'll result in some performance loss - we better cache the settings in a static variable and refresh them from prefs only when needed.
+OSStatus APEBundleMessage(CFStringRef message,CFDataRef inData,CFDataRef *outData)
+{
+    ICapeprintf("ICeCoffEE APE: message '%@' (inData = %@)\n", message, inData);
+    
+    if (CFStringCompare(message, kICPreferencesChanged, NULL) == kCFCompareEqualTo)		
+    {	// request to reload prefs from our preference pane
+        ICCF_ReloadPrefs();
+    }
+    
+    return noErr;
+}
+
+Boolean ICCF_GetBooleanPref(CFStringRef prefKey, Boolean defaultValue) {
+    Boolean keyExists;
+    Boolean value = CFPreferencesGetAppBooleanValue(prefKey, kICBundleIdentifier, &keyExists);
+    if (keyExists) return value;
+    CFPreferencesSetAppValue(prefKey, defaultValue ? kCFBooleanTrue : kCFBooleanFalse, kICBundleIdentifier);
+    return defaultValue;
+}
+
+CFIndex ICCF_GetCFIndexPref(CFStringRef prefKey, CFIndex defaultValue) {
+    Boolean keyExists;
+    CFIndex value = CFPreferencesGetAppIntegerValue(prefKey, kICBundleIdentifier, &keyExists);
+    if (keyExists) return value;
+    CFNumberRef defaultValueNumber = CFNumberCreate(NULL, kCFNumberCFIndexType, &defaultValue);
+    CFPreferencesSetAppValue(prefKey, defaultValueNumber, kICBundleIdentifier);
+    CFRelease(defaultValueNumber);
+    return defaultValue;
+}
+
+// to test: defaults write net.sabi.ICeCoffEE "Excluded Applications" -array '{CFBundleID = "com.apple.projectbuilder"; }' '{CFBundleID = "net.sabi.Pester"; }' '{CFBundleID = "com.apple.foobar"; }'
+static void ICCF_MigratePrefs() {
+    
+    CFArrayRef prefExcludedApps = CFPreferencesCopyAppValue(kIC12PrefExcluded, kICBundleIdentifier);
+
+    if (prefExcludedApps == NULL) return;
+
+    if (CFGetTypeID(prefExcludedApps) != CFArrayGetTypeID()) {
+        CFRelease(prefExcludedApps);
+        return;
+    }
+    
+    CFMutableArrayRef excludedApps = CFArrayCreateMutableCopy(NULL, 0, prefExcludedApps);
+    CFRelease(prefExcludedApps); prefExcludedApps = NULL;
+
+    ICapeprintf("Excluded apps: %@\n", excludedApps);
+
+    CFIndex excludedAppCount = CFArrayGetCount(excludedApps);
+    CFIndex excludedAppIndex;
+
+    CFDictionaryRef excludedAppSpecifiers = NULL;
+    CFStringRef excludedAppBundleID = NULL;
+    CFURLRef excludedAppURL = NULL;
+    CFBundleRef excludedAppBundle = NULL;
+
+    BOOL postponeMigrationForApp;
+
+    for (excludedAppIndex = excludedAppCount - 1 ; excludedAppIndex >= 0 ; excludedAppIndex--) {
+        if ( (excludedAppSpecifiers = CFArrayGetValueAtIndex(excludedApps, excludedAppIndex)) == NULL || CFGetTypeID(excludedAppSpecifiers) != CFDictionaryGetTypeID()) {
+            CFArrayRemoveValueAtIndex(excludedApps, excludedAppIndex);
+            continue;
+        }
+
+        postponeMigrationForApp = NO;
+        if ( (excludedAppBundleID = CFDictionaryGetValue(excludedAppSpecifiers, kIC12PrefExcludedAppSpecifierBundleID)) != NULL
+             && CFGetTypeID(excludedAppBundleID) == CFStringGetTypeID()
+             && CFStringCompare(excludedAppBundleID, CFSTR("com.apple.projectbuilder"), kCFCompareCaseInsensitive) != kCFCompareEqualTo) {
+            if (LSFindApplicationForInfo(kLSUnknownCreator, excludedAppBundleID, NULL, NULL, &excludedAppURL) == noErr) {
+                excludedAppBundle = CFBundleCreate(NULL, excludedAppURL);
+                if (excludedAppBundle != NULL) {
+                    APEToolsAddToExcludeList(kICBundleIdentifier, excludedAppBundle);
+                } else postponeMigrationForApp = YES; // can't create bundle
+            } else postponeMigrationForApp = YES; // can't find app
+        }
+        // don't release excludedAppSpecifiers, used Get
+        // don't release excludedAppBundleID, used Get
+        if (excludedAppURL != NULL) { CFRelease(excludedAppURL); excludedAppURL = NULL; }
+        if (excludedAppBundle != NULL) { CFRelease(excludedAppBundle); excludedAppBundle = NULL; }
+        if (!postponeMigrationForApp) CFArrayRemoveValueAtIndex(excludedApps, excludedAppIndex);
+    }
+
+    ICapeprintf("Excluded apps remaining: %@\n", excludedApps);
+    CFPreferencesSetAppValue(kIC12PrefExcluded, (CFArrayGetCount(excludedApps) == 0 ? NULL : excludedApps), kICBundleIdentifier);
+    CFRelease(excludedApps);
+
+    CFPreferencesAppSynchronize(kICBundleIdentifier);
+}
+
+static void ICCF_ReloadPrefs() {
+    CFPreferencesAppSynchronize(kICBundleIdentifier);
+
+    ICCF_prefs.commandClickEnabled = ICCF_GetBooleanPref(kICCommandClickEnabled, YES);
+    ICCF_prefs.textBlinkEnabled = ICCF_GetBooleanPref(kICTextBlinkEnabled, YES);
+    ICCF_prefs.textBlinkCount = ICCF_GetCFIndexPref(kICTextBlinkCount, 3);
+    ICCF_prefs.servicesInContextualMenu = ICCF_GetBooleanPref(kICServicesInContextualMenu, YES);
+    ICCF_prefs.servicesInMenuBar = ICCF_GetBooleanPref(kICServicesInMenuBar, NO);
+    ICCF_prefs.errorSoundEnabled = ICCF_GetBooleanPref(kICErrorSoundEnabled, NO);
+    ICCF_prefs.errorDialogEnabled = ICCF_GetBooleanPref(kICErrorDialogEnabled, YES);
+
+    CFPreferencesAppSynchronize(kICBundleIdentifier);
+
+    ICCF_AddRemoveServicesMenu();
+}
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/CFPreferencesWrapper.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/CFPreferencesWrapper.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/CFPreferencesWrapper.h	(revision 124)
@@ -0,0 +1,30 @@
+#import <Foundation/Foundation.h>
+
+@interface CFPreferencesWrapper_ICeCoffEE : NSObject
+{
+    NSString *identifier;
+}
+
+- initWithApplication:(NSString*)appIdentifier;
++ preferencesWithApplication:(NSString*)appIdentifier;
+
+- (NSArray*)arrayForKey:(NSString*)key;
+- (BOOL)boolForKey:(NSString*)key;
+- (NSData*)dataForKey:(NSString*)key;
+- (NSDictionary*)dictionaryForKey:(NSString*)key;
+- (float)floatForKey:(NSString*)key;
+- (int)integerForKey:(NSString*)key;
+- (id)objectForKey:(NSString*)key;
+- (NSArray*)stringArrayForKey:(NSString*)key;
+- (NSString*)stringForKey:(NSString*)key;
+
+- (BOOL)keyExists:(NSString*)key;
+
+- (void)removeObjectForKey:(NSString*)key;
+- (void)setBool:(BOOL)value forKey:(NSString*)key;
+- (void)setFloat:(float)value forKey:(NSString*)key;
+- (void)setInteger:(int)value forKey:(NSString*)key;
+- (void)setObject:(id)value forKey:(NSString*)key;
+- (BOOL)synchronize;
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/CFPreferencesWrapper.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/CFPreferencesWrapper.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/CFPreferencesWrapper.m	(revision 124)
@@ -0,0 +1,208 @@
+#import <Carbon/Carbon.h>
+#import "CFPreferencesWrapper.h"
+
+
+@implementation CFPreferencesWrapper_ICeCoffEE
+
+- initWithApplication:(NSString*)appIdentifier
+{
+    self = [super init];
+    
+    if( !self || !appIdentifier )
+    {
+        [self release];
+        return nil;
+    }
+    
+    identifier = [appIdentifier retain];
+    
+    return self;
+}
+
+- (void)dealloc
+{
+    [identifier release];
+    
+    [super dealloc];
+}
+
++ preferencesWithApplication:(NSString*)appIdentifier
+{
+    return [[[self alloc] initWithApplication:appIdentifier] autorelease];
+}
+
+
+- (NSArray*)arrayForKey:(NSString*)key
+{
+    id object;
+    
+    object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier);
+    
+    if( object && (CFGetTypeID( object) == CFArrayGetTypeID()) )
+    	return [object autorelease];
+    else
+    {
+        [object release];
+        return nil;
+    }
+}
+
+- (BOOL)boolForKey:(NSString*)key
+{
+    Boolean dummy;
+    
+    return CFPreferencesGetAppBooleanValue( (CFStringRef) key, (CFStringRef) identifier, &dummy);
+}
+
+- (NSData*)dataForKey:(NSString*)key
+{
+    id object;
+    
+    object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier);
+    
+    if( object && (CFGetTypeID( object) == CFDataGetTypeID()) )
+    	return [object autorelease];
+    else
+    {
+        [object release];
+        return nil;
+    }
+}
+
+- (NSDictionary*)dictionaryForKey:(NSString*)key
+{
+    id object;
+    
+    object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier);
+    
+    if( object && (CFGetTypeID( object) == CFDictionaryGetTypeID()) )
+    	return [object autorelease];
+    else
+    {
+        [object release];
+        return nil;
+    }
+}
+
+- (float)floatForKey:(NSString*)key
+{
+    id object;
+    float retVal;
+    
+    object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier);
+    
+    if( object && (CFGetTypeID( object) == CFNumberGetTypeID()) )
+    {
+        retVal = [object floatValue];
+        [object release];
+    	return retVal;
+    }
+    else
+    {
+        [object release];
+        return 0;
+    }
+}
+
+- (int)integerForKey:(NSString*)key
+{
+    Boolean dummy;
+    
+    return CFPreferencesGetAppIntegerValue( (CFStringRef) key, (CFStringRef) identifier, &dummy);
+}
+
+- (id)objectForKey:(NSString*)key
+{
+    return [(id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier) autorelease];
+}
+
+- (NSArray*)stringArrayForKey:(NSString*)key
+{
+    id object;
+    
+    object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier);
+    
+    if( object && (CFGetTypeID( object) == CFArrayGetTypeID()) )
+    {
+        NSEnumerator *enumerator = [object objectEnumerator];
+        id element;
+        
+        while( (element = [enumerator nextObject]) )
+        {
+            if( CFGetTypeID( element) != CFStringGetTypeID() )
+            {
+                [object release];
+                return nil;
+            }
+        }
+        
+    	return [object autorelease];
+    }
+    else
+    {
+        [object release];
+        return nil;
+    }
+}
+
+- (NSString*)stringForKey:(NSString*)key
+{
+    id object;
+    
+    object = (id) CFPreferencesCopyAppValue( (CFStringRef) key, (CFStringRef) identifier);
+    
+    if( object && (CFGetTypeID( object) == CFStringGetTypeID()) )
+    	return [object autorelease];
+    else
+    {
+        [object release];
+        return nil;
+    }
+}
+
+
+- (void)removeObjectForKey:(NSString*)key
+{
+    CFPreferencesSetAppValue( (CFStringRef) key, (CFPropertyListRef) NULL, (CFStringRef) identifier);
+}
+
+- (void)setBool:(BOOL)value forKey:(NSString*)key
+{
+    CFPreferencesSetAppValue( (CFStringRef) key, (CFPropertyListRef) (value ? kCFBooleanTrue : kCFBooleanFalse), (CFStringRef) identifier);
+}
+
+- (void)setFloat:(float)value forKey:(NSString*)key
+{
+    CFPreferencesSetAppValue( (CFStringRef) key, (CFPropertyListRef) [NSNumber numberWithFloat:value], (CFStringRef) identifier);
+}
+
+- (void)setInteger:(int)value forKey:(NSString*)key
+{
+    CFPreferencesSetAppValue( (CFStringRef) key, (CFPropertyListRef) [NSNumber numberWithInt:value], (CFStringRef) identifier);
+}
+
+- (void)setObject:(id)value forKey:(NSString*)key
+{
+    CFPreferencesSetAppValue( (CFStringRef) key, (CFPropertyListRef) value, (CFStringRef) identifier);
+}
+
+- (BOOL)keyExists:(NSString*)key
+{
+    BOOL exist = NO;
+    
+    CFPropertyListRef value = CFPreferencesCopyAppValue((CFStringRef)key, (CFStringRef)identifier);
+    if (value)
+    {
+        exist = YES;
+        CFRelease(value);
+    }
+    
+    return exist;
+}
+
+- (BOOL)synchronize
+{
+    return CFPreferencesAppSynchronize( (CFStringRef) identifier);
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/CPS.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/CPS.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/CPS.h	(revision 124)
@@ -0,0 +1,299 @@
+// CPS.h
+
+#pragma once
+
+#include <ApplicationServices/ApplicationServices.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if PRAGMA_STRUCT_ALIGN
+    #pragma options align=mac68k
+#elif PRAGMA_STRUCT_PACKPUSH
+    #pragma pack(push, 2)
+#elif PRAGMA_STRUCT_PACK
+    #pragma pack(2)
+#endif
+
+
+struct CPSProcessSerNum
+{
+	UInt32		lo;
+	UInt32		hi;
+};
+
+typedef struct CPSProcessSerNum	CPSProcessSerNum;
+
+enum
+{
+	kCPSNoProcess		=	0,
+	kCPSSystemProcess	=	1,
+	kCPSCurrentProcess	=	2
+};
+
+
+enum
+{
+	bfCPSIntraProcessSwitch =	1,
+	bfCPSDeathBySignal	=	2
+};
+
+typedef UInt16	CPSEventFlags;
+
+
+enum
+{
+	kCPSBlueApp	=	0,
+	kCPSBlueBox	=	1,
+	kCPSCarbonApp	=	2,
+	kCPSYellowApp	=	3,
+	kCPSUnknownApp	=	4
+};
+
+typedef UInt32	CPSAppFlavour;
+
+
+enum
+{
+	kCPSBGOnlyAttr		=	1024,
+	kCPSUIElementAttr	=	65536,
+	kCPSHiddenAttr		=	131072,
+	kCPSNoConnectAttr	=	262144,
+	kCPSFullScreenAttr	=	524288,
+	kCPSClassicReqAttr	=	1048576,
+	kCPSNativeReqAttr	=	2097152
+};
+
+typedef UInt32	CPSProcAttributes;
+
+
+struct CPSProcessInfoRec
+{
+	CPSProcessSerNum 	Parent;
+	UInt64			LaunchDate;
+	CPSAppFlavour		Flavour;
+	CPSProcAttributes	Attributes;
+	UInt32			ExecFileType;
+	UInt32			ExecFileCreator;
+	UInt32			UnixPID;
+};
+
+typedef struct CPSProcessInfoRec	CPSProcessInfoRec;
+
+
+enum
+{
+	kCPSNotifyChildDeath	=	1,
+	kCPSNotifyNewFront	=	2,
+	kCPSNotifyAppBirth	=	4,
+	kCPSNotifyAppDeath	=	8,
+	kCPSNotifyLaunch	=	9,
+	kCPSNotifyServiceReq	=	16,
+	kCPSNotifyAppHidden	=	32,
+	kCPSNotifyAppRevealed	=	64,
+	kCPSNotifyFGEnabled	=	128,
+	kCPSNotifyLaunchStart	=	256,
+	kCPSNotifyAppReady	=	512,
+	kCPSNotifyLaunchFail	=	1024,
+	kCPSNotifyAppDeathExt	=	2048,
+	kCPSNotifyLostKeyFocus	=	4096
+};
+
+typedef UInt32	CPSNotificationCodes;
+
+
+enum
+{
+	bfCPSLaunchInhibitDaemon	=	128,
+	bfCPSLaunchDontSwitch		=	512,
+	bfCPSLaunchNoProcAttr		=	2048,
+	bfCPSLaunchAsync		=	65536,
+	bfCPSLaunchStartClassic		=	131072,
+	bfCPSLaunchInClassic		=	262144,
+	bfCPSLaunchInstance		=	524288,
+	bfCPSLaunchAndHide		=	1048576,
+	bfCPSLaunchAndHideOthers	=	2097152
+};
+
+typedef UInt32	CPSLaunchOptions;
+
+
+typedef	UInt8	*CPSLaunchRefcon;
+
+
+typedef	UInt8	*CPSLaunchData;
+
+
+enum
+{
+	bfCPSExtLaunchWithData	=	2,
+	bfCPSExtLaunchByParent	=	4,
+	bfCPSExtLaunchAsUidGid	=	8
+};
+
+typedef UInt32	CPSLaunchPBFields;
+
+
+struct CPSLaunchPB
+{
+	CPSLaunchPBFields	Contents;
+	CPSLaunchData		pData;
+	UInt32			DataLen;
+	UInt32			DataTag;
+	UInt32			RefCon;
+	CPSProcessSerNum	Parent;
+	UInt32			ChildUID;
+	UInt32			ChildGID;
+};
+
+typedef struct CPSLaunchPB	CPSLaunchPB;
+
+
+enum
+{
+	bfCPSKillHard		=	1,
+	bfCPSKillAllClassicApps	=	2
+};
+
+typedef UInt32	CPSKillOptions;
+
+
+enum
+{
+	kCPSLaunchService	=	0,
+	kCPSKillService		=	1,
+	kCPSHideService		=	2,
+	kCPSShowService		=	3,
+	kCPSPrivService		=	4,
+	kCPSExtDeathNoteService	=	5
+};
+
+typedef UInt32	CPSServiceReqType;
+
+
+struct CPSLaunchRequest
+{
+	CPSProcessSerNum	TargetPSN;
+	CPSLaunchOptions 	Options;
+	CPSProcAttributes 	ProcAttributes;
+	UInt8			*pUTF8TargetPath;
+	UInt32			PathLen;
+};
+
+typedef struct CPSLaunchRequest	CPSLaunchRequest;
+
+
+struct CPSKillRequest
+{
+	CPSProcessSerNum	TargetPSN;
+	CPSKillOptions		Options;
+};
+
+typedef struct CPSKillRequest	CPSKillRequest;
+
+
+struct CPSHideRequest
+{
+	CPSProcessSerNum 	TargetPSN;
+};
+
+typedef struct CPSHideRequest	CPSHideRequest;
+
+
+struct CPSShowRequest
+{
+	CPSProcessSerNum 	TargetPSN;
+};
+
+typedef struct CPSShowRequest	CPSShowRequest;
+
+
+struct CPSExtDeathNotice
+{
+	CPSProcessSerNum 	DeadPSN;
+	UInt32			Flags;
+	UInt8			*pUTF8AppPath;
+	UInt32			PathLen;
+};
+
+typedef struct CPSExtDeathNotice	CPSExtDeathNotice;
+
+
+union CPSRequestDetails
+{
+	CPSLaunchRequest 	LaunchReq;
+	CPSKillRequest 		KillReq;
+	CPSHideRequest 		HideReq;
+	CPSShowRequest 		ShowReq;
+	CPSExtDeathNotice 	DeathNotice;
+};
+
+typedef union CPSRequestDetails	CPSRequestDetails;
+
+
+struct CPSServiceRequest
+{
+	CPSServiceReqType 	Type;
+	SInt32			ID;
+	CPSRequestDetails 	Details;
+};
+
+typedef struct CPSServiceRequest	CPSServiceRequest;
+
+
+enum
+{
+	kCPSProcessInterruptKey	=	0,
+	kCPSAppSwitchFwdKey	=	1,
+	kCPSAppSwitchBackKey	=	2,
+	kCPSSessionInterruptKey	=	3,
+	kCPSScreenSaverKey	=	4,
+	kCPSDiskEjectKey	=	5,
+	kCPSSpecialKeyCount	=	6
+};
+
+typedef SInt32	CPSSpecialKeyID;
+
+
+extern Boolean	CPSEqualProcess( CPSProcessSerNum *psn1, CPSProcessSerNum *psn2);
+
+extern OSErr	CPSGetCurrentProcess( CPSProcessSerNum *psn);
+
+extern OSErr	CPSGetFrontProcess( CPSProcessSerNum *psn);
+
+extern OSErr	CPSGetNextProcess( CPSProcessSerNum *psn);
+
+extern OSErr	CPSGetNextToFrontProcess( CPSProcessSerNum *psn);
+
+extern OSErr	CPSGetProcessInfo( CPSProcessSerNum *psn, CPSProcessInfoRec *info, char *path, int maxPathLen, int *len, char *name, int maxNameLen);
+
+extern OSErr	CPSPostHideMostReq( CPSProcessSerNum *psn);
+
+extern OSErr	CPSPostHideReq( CPSProcessSerNum *psn);
+
+extern OSErr	CPSPostKillRequest( CPSProcessSerNum *psn, CPSKillOptions options);
+
+extern OSErr	CPSPostShowAllReq( CPSProcessSerNum *psn);
+
+extern OSErr	CPSPostShowReq( CPSProcessSerNum *psn);
+
+extern OSErr	CPSSetFrontProcess( CPSProcessSerNum *psn);
+
+extern OSErr	CPSReleaseKeyFocus( CPSProcessSerNum *psn);
+
+extern OSErr	CPSStealKeyFocus( CPSProcessSerNum *psn);
+
+
+#if PRAGMA_STRUCT_ALIGN
+    #pragma options align=reset
+#elif PRAGMA_STRUCT_PACKPUSH
+    #pragma pack(pop)
+#elif PRAGMA_STRUCT_PACK
+    #pragma pack()
+#endif
+
+#ifdef __cplusplus
+}
+#endif
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/English.lproj/APE Manager plugin.nib/classes.nib
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/English.lproj/APE Manager plugin.nib/classes.nib	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/English.lproj/APE Manager plugin.nib/classes.nib	(revision 124)
@@ -0,0 +1,31 @@
+{
+    IBClasses = (
+        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
+        {
+            ACTIONS = {
+                commandClickEnabled = id; 
+                errorDialogEnabled = id; 
+                errorSoundEnabled = id; 
+                servicesInContextualMenu = id; 
+                servicesInMenuBar = id; 
+                textBlinkCount = id; 
+                textBlinkEnabled = id; 
+            }; 
+            CLASS = ICeCoffEEController; 
+            LANGUAGE = ObjC; 
+            OUTLETS = {
+                commandClickEnabled = NSButton; 
+                errorDialogEnabled = NSButton; 
+                errorSoundEnabled = NSButton; 
+                servicesInContextualMenu = NSButton; 
+                servicesInMenuBar = NSButton; 
+                tabView = NSTabView; 
+                textBlinkCount = NSPopUpButton; 
+                textBlinkEnabled = NSButton; 
+                window = NSWindow; 
+            }; 
+            SUPERCLASS = NSObject; 
+        }
+    ); 
+    IBVersion = 1; 
+}
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/English.lproj/APE Manager plugin.nib/info.nib
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/English.lproj/APE Manager plugin.nib/info.nib	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/English.lproj/APE Manager plugin.nib/info.nib	(revision 124)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IBDocumentLocation</key>
+	<string>355 114 356 240 0 0 1280 832 </string>
+	<key>IBFramework Version</key>
+	<string>291.0</string>
+	<key>IBGroupedObjects</key>
+	<dict>
+		<key>1</key>
+		<array>
+			<string>253</string>
+			<string>256</string>
+			<string>258</string>
+			<string>260</string>
+			<string>262</string>
+			<string>263</string>
+			<string>264</string>
+			<string>266</string>
+			<string>270</string>
+		</array>
+	</dict>
+	<key>IBLastGroupID</key>
+	<string>3</string>
+	<key>IBOpenObjects</key>
+	<array>
+		<integer>195</integer>
+	</array>
+	<key>IBSystem Version</key>
+	<string>6I32</string>
+	<key>IBUserGuides</key>
+	<dict>
+		<key>195</key>
+		<dict>
+			<key>guideLocations</key>
+			<array>
+				<string>Horizontal:245.000000</string>
+			</array>
+			<key>guidesLocked</key>
+			<false/>
+		</dict>
+	</dict>
+</dict>
+</plist>
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/English.lproj/Localizable.strings
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/English.lproj/Localizable.strings	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/English.lproj/Localizable.strings	(revision 124)
@@ -0,0 +1,108 @@
+﻿/**** "Open With" menu ****/
+
+/* Format for 'default app', e.g "Internet Explorer (5.2) (default)" */
+"DefaultApp%@" = "%@ (default)";
+
+/* Format for app location, e.g "Internet Explorer (5.2) -- /Applications" */
+"App%@Location%@" = "%@ — %@";
+
+/* First (disabled, label) element of menu */
+"Open Location With" = "Open Location With";
+
+/* Disabled item above bookmark helper application */
+"Add Bookmark" = "Add Bookmark";
+
+
+/**** Add Bookmark dialog box ****/
+
+/* Title from "Add Bookmark" above */
+
+/* Message */
+"Bookmark name and description are optional." = "Bookmark name and description are optional.";
+
+/* URL text field label */
+"Location:" = "Location:";
+
+/* Bookmark name text field label */
+"Name:" = "Name:";
+
+/* Bookmark description text field label */
+"Description:" = "Description:";
+
+/* Buttons */
+"Add" = "Add";
+"Cancel" = "Cancel";
+
+
+/**** Shared URL launching errors ****/
+
+/* Alert (presented on OSStatus or NSException) */
+"AlertTitle" = "Open Internet Location";
+"AlertMessage%@" = "The selected Internet location could not be opened.\n\n%@.";
+"AlertDisableButton" = "Disable ICeCoffEE…";
+
+/* Session disable alert */
+"DisableAlertTitle" = "Disable ICeCoffEE";
+"DisableAlertMessage" = "If you believe ICeCoffEE is interfering with the normal functioning of this application, you can turn it off in this application until the application has quit.\n\nIf this is the first time you are experiencing this problem, please email icecoffee@sabi.net with the details of the conflict.\n\nTo disable ICeCoffEE permanently, use APE Manager in System Preferences.";
+"DisableAlertDisableButton" = "Disable";
+"DisableAlertDontDisableButton" = "Don’t Disable";
+
+
+/**** Shared URL parsing errors ****/
+
+/* After processing, the URL is too long */
+"The potential URL is longer than %lu characters" = "The potential URL is longer than %lu characters";
+
+/* After processing, no URL could be found */
+"No URL is selected" = "No URL is selected";
+
+/* ICStart error */
+"Unable to start Internet Config (error %d)" = "Unable to start Internet Config (error %d)";
+
+
+/**** NSTextView launching errors ****/
+
+/* Can't get selected range */
+"There is no insertion point or selection in the text field where you clicked" = "There is no insertion point or selection in the text field where you clicked";
+
+/* Can't get text storage */
+"Sorry, ICeCoffEE is unable to locate the insertion point or selection" = "Sorry, ICeCoffEE is unable to locate the insertion point or selection";
+
+/* Text storage has zero length */
+"No text was found" = "No text was found";
+
+
+/**** Terminal launching errors ****/
+
+/* Word selection produced nothing */
+"Sorry, ICeCoffEE was unable to find anything to select" = "Sorry, ICeCoffEE was unable to find anything to select";
+
+
+/**** Internet Config errors ****/
+
+/* icPrefNotFoundErr */
+"-666" = "No helper application is set for the selected URL’s scheme (e.g. http:)";
+
+/* icNoURLErr */
+"-673" = "The selection is not a URL";
+
+/* icInternalErr */
+"-669" = "Internet Config experienced an internal error";
+
+
+/**** Launch Services errors ****/
+
+/* kLSApplicationNotFoundErr */
+"-10814" = "No helper applications are available for the selected URL’s scheme (e.g. http:)";
+
+
+/**** Misc. errors ****/
+
+/* paramErr */
+"-50" = "The selection is not a complete URL";
+
+/* kTECNoConversionPathErr */
+"-8749" = "The selected URL contains invalid (non-ASCII) characters";
+
+/* Message to use if no OSError lookup message is available; substitutes context */
+"An unknown error occurred in %@" = "An unknown error occurred in %@";
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/Exports.exp
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/Exports.exp	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/Exports.exp	(revision 124)
@@ -0,0 +1,2 @@
+_APEBundleMain
+_APEBundleMessage
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/ICFindFilesToRemove_Prefix.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/ICFindFilesToRemove_Prefix.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/ICFindFilesToRemove_Prefix.h	(revision 124)
@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'ICFindFilesToRemove' target in the 'ICFindFilesToRemove' project.
+//
+
+#ifdef __OBJC__
+    #import <Foundation/Foundation.h>
+#endif
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/UICookieMonster.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/UICookieMonster.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/UICookieMonster.h	(revision 124)
@@ -0,0 +1,37 @@
+//
+//  UICookieMonster.h
+//  Unsanity Installer
+//
+//  Created by Slava Karpenko on Thu Nov 28 2002.
+//  Copyright (c) 2002 Unsanity LLC. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+@interface UICookieMonster : NSObject {
+    NSString* productID;
+    NSMutableArray* files;
+    BOOL dirty;
+    BOOL isGlobal;
+    UInt32 version;
+    UInt32 cachedVersion;
+}
+
++ monsterWithProductID:(NSString*)pid global:(BOOL)global version:(UInt32)inVersion;
++ monsterWithProductID:(NSString*)pid global:(BOOL)global;
++ monsterWithProductID:(NSString*)pid;
++ (void)removeProductID:(NSString*)pid;
+
+- initWithProductID:(NSString*)pid globalVersionValid:(BOOL)gvValid global:(BOOL)global version:(UInt32)inVersion;
+
+- (void)addFile:(NSString*)path;
+- (void)removeFile:(NSString*)path;
+
+- (UInt32)productVersion;
+- (BOOL)isGlobal;
+
+- (NSArray*)filesToRemove;
+
+- (void)flush;
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/UICookieMonster.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/UICookieMonster.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/UICookieMonster.m	(revision 124)
@@ -0,0 +1,154 @@
+//
+//  UICookieMonster.m
+//  Unsanity Installer
+//
+//  Created by Slava Karpenko on Thu Nov 28 2002.
+//  Copyright (c) 2002 Unsanity LLC. All rights reserved.
+//
+
+#import "UICookieMonster.h"
+
+#define kCookieID CFSTR("Unsanity Installer Receipts")
+
+@implementation UICookieMonster
++ monsterWithProductID:(NSString*)pid global:(BOOL)global version:(UInt32)inVersion
+{
+    if (!pid)
+        return nil;
+        
+    return [[[UICookieMonster alloc] initWithProductID:pid globalVersionValid:YES global:global version:inVersion] autorelease];
+}
+
++ monsterWithProductID:(NSString*)pid global:(BOOL)global
+{
+    if (!pid)
+        return nil;
+
+    return [[[UICookieMonster alloc] initWithProductID:pid globalVersionValid:NO global:global version:0] autorelease];
+}
+
++ monsterWithProductID:(NSString*)pid
+{
+    if (!pid)
+        return nil;
+        
+    return [[[UICookieMonster alloc] initWithProductID:pid globalVersionValid:NO global:NO version:0] autorelease];
+}
+
+- initWithProductID:(NSString*)pid globalVersionValid:(BOOL)gvValid global:(BOOL)global version:(UInt32)inVersion
+{
+    CFDictionaryRef dict;
+    
+    productID = [pid retain];
+    isGlobal = global;
+    version = inVersion;
+    cachedVersion = NULL;
+    
+    files = [[NSMutableArray arrayWithCapacity:0] retain];
+    
+    CFPreferencesSynchronize(kCookieID, kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
+    CFPreferencesSynchronize(kCookieID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+    
+    dict = CFPreferencesCopyValue((CFStringRef)productID, kCookieID, kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
+    
+    if (dict)
+    {
+        NSNumber* vers = (NSNumber*)CFDictionaryGetValue(dict, CFSTR("Version"));
+        [files addObjectsFromArray:(NSArray*)CFDictionaryGetValue(dict, CFSTR("Files"))];
+        cachedVersion = [vers intValue];
+        
+        if (!gvValid) isGlobal = YES;
+        
+        //NSLog(@"Global data read = %@", dict);
+        CFRelease(dict);
+    }
+    else
+    {
+        dict = CFPreferencesCopyValue((CFStringRef)productID, kCookieID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+        
+        if (dict)
+        {
+            NSNumber* vers = (NSNumber*)CFDictionaryGetValue(dict, CFSTR("Version"));
+            [files addObjectsFromArray:(NSArray*)CFDictionaryGetValue(dict, CFSTR("Files"))];
+            cachedVersion = [vers intValue];
+            if (!gvValid) isGlobal = NO;
+            
+            //NSLog(@"Local data read = %@", dict);
+            CFRelease(dict);
+        }
+    
+    }
+    
+    if (!cachedVersion) cachedVersion = version;
+    if (!gvValid) version = cachedVersion;
+    
+    dirty = NO;
+    
+    return self;
+}
+
+- (BOOL)isGlobal
+{
+    return isGlobal;
+}
+
+- (UInt32)productVersion
+{
+    return cachedVersion;
+}
+
+- (void)dealloc
+{
+    [self flush];
+    
+    [productID release];
+    [files release];
+}
+
+- (void)addFile:(NSString*)path
+{
+    if (![files containsObject:path])
+    {
+        [files addObject:path];
+        dirty = YES;
+    }
+}
+
+- (void)removeFile:(NSString*)path
+{
+}
+
+- (NSArray*)filesToRemove
+{
+    return files;
+}
+
+- (void)flush
+{
+    NSMutableDictionary* dict = [NSMutableDictionary dictionaryWithCapacity:0];
+    
+    if (!dirty)
+        return;
+    
+    [dict setObject:[NSNumber numberWithInt:version] forKey:@"Version"];
+    [dict setObject:files forKey:@"Files"];
+    
+    CFPreferencesSetValue((CFStringRef)productID, NULL, kCookieID, isGlobal?kCFPreferencesCurrentUser:kCFPreferencesAnyUser, isGlobal?kCFPreferencesAnyHost:kCFPreferencesCurrentHost);
+    CFPreferencesSetValue((CFStringRef)productID, (CFPropertyListRef)dict, kCookieID, isGlobal?kCFPreferencesAnyUser:kCFPreferencesCurrentUser, isGlobal?kCFPreferencesCurrentHost:kCFPreferencesAnyHost);
+    
+    CFPreferencesSynchronize(kCookieID, kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
+    CFPreferencesSynchronize(kCookieID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+    
+    dirty = NO;
+}
+
++ (void)removeProductID:(NSString*)pid
+{
+    CFPreferencesSetValue((CFStringRef)pid, NULL, kCookieID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+    CFPreferencesSetValue((CFStringRef)pid, NULL, kCookieID, kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
+    
+    CFPreferencesSynchronize(kCookieID, kCFPreferencesAnyUser, kCFPreferencesCurrentHost);
+    CFPreferencesSynchronize(kCookieID, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/main.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/main.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICFindFilesToRemove/main.m	(revision 124)
@@ -0,0 +1,55 @@
+#import <Foundation/Foundation.h>
+#import "UICookieMonster.h"
+
+#define kProductID 		@"net.sabi.ICeCoffEE"
+
+// if the first path exists, it and all subsequent paths will be removed
+
+NSString* gGlobalPaths[] = {
+    @"/Library/InputManagers/ICeCoffEE",
+    @"/Library/Application Enhancers/ICeCoffEE.ape",
+    nil
+};
+
+NSString* gLocalPaths[] = {
+    @"~/Library/InputManagers/ICeCoffEE",
+    @"~/Library/Application Enhancers/ICeCoffEE.ape",
+    nil
+};
+
+int main (int argc, const char * argv[]) {
+    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
+    UICookieMonster* monster = [UICookieMonster monsterWithProductID:kProductID];
+    NSArray* files = [monster filesToRemove];
+    
+    if (!files || ![files count])
+    {
+        if ([[NSFileManager defaultManager] fileExistsAtPath:[gGlobalPaths[0] stringByExpandingTildeInPath]])
+        {
+            UICookieMonster* mons = [UICookieMonster monsterWithProductID:kProductID global:YES];
+            int i;
+            
+            for (i=0;gGlobalPaths[i];i++)
+            {
+                [mons addFile:[gGlobalPaths[i] stringByExpandingTildeInPath]];
+            }
+            
+            [mons flush];
+        }
+        else if ([[NSFileManager defaultManager] fileExistsAtPath:[gLocalPaths[0] stringByExpandingTildeInPath]])
+        {
+            UICookieMonster* mons = [UICookieMonster monsterWithProductID:kProductID global:NO];
+            int i;
+            
+            for (i=0;gLocalPaths[i];i++)
+            {
+                [mons addFile:[gLocalPaths[i] stringByExpandingTildeInPath]];
+            }
+            
+            [mons flush];
+        }
+    }
+    
+    [pool release];
+    return 0;
+}
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE APE.pbproj/nicholas.pbxuser
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE APE.pbproj/nicholas.pbxuser	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE APE.pbproj/nicholas.pbxuser	(revision 124)
@@ -0,0 +1,4902 @@
+// !$*UTF8*$!
+{
+	29B97313FDCFA39411CA2CEA = {
+		activeBuildStyle = 4A9504CDFFE6A4B311CA0CBA;
+		activeExecutable = E1BF159D03DBA71000050002;
+		activeTarget = F5CD5E9D02DAE2C901AA4DA5;
+		addToTargets = (
+			E1BF159B03DBA71000050002,
+		);
+		breakpoints = (
+			E1317A3703DF244600050002,
+			E1317A3803DF24F800050002,
+			E136EAA903E48B0400050002,
+			E18A7D2903ED430100050001,
+			E120D7B00419702800050002,
+		);
+		executables = (
+			E1BF159D03DBA71000050002,
+			E19EB4E903DD355C00050002,
+			E1317A3503DF242100050002,
+			E15E6A7404188D6900050002,
+			E136EAA103E42F7500050002,
+			E175F28303E7445700050002,
+			E165AB3C03E7BCDE00050002,
+			E104851C040C1E3900050002,
+			E1ABE98B040D48E700050002,
+		);
+		perUserDictionary = {
+			PBXPerProjectTemplateStateSaveDate = 69308845;
+			"PBXTemplateGeometry-F5314676015831810DCA290F" = {
+				ContentSize = "{685, 434}";
+				LeftSlideOut = {
+					Collapsed = NO;
+					Frame = "{{0, 23}, {685, 411}}";
+					Split0 = {
+						ActiveTab = 2;
+						ActiveTabName = PBXBuildResultsModule;
+						Collapsed = NO;
+						Frame = "{{0, 0}, {685, 411}}";
+						Split0 = {
+							Frame = "{{0, 301}, {685, 110}}";
+						};
+						SplitCount = 1;
+						Tab0 = {
+							Frame = "{{0, 0}, {952, 321}}";
+						};
+						Tab1 = {
+							Debugger = {
+								Collapsed = NO;
+								Frame = "{{0, 0}, {781, 452}}";
+								Split0 = {
+									Frame = "{{0, 24}, {781, 428}}";
+									Split0 = {
+										Frame = "{{0, 0}, {383, 428}}";
+									};
+									Split1 = {
+										DebugVariablesTableConfiguration = (
+											Name,
+											123,
+											Value,
+											85,
+											Summary,
+											155.123,
+										);
+										Frame = "{{392, 0}, {389, 428}}";
+									};
+									SplitCount = 2;
+								};
+								SplitCount = 1;
+								Tab0 = {
+									Frame = "{{0, 0}, {100, 50}}";
+								};
+								Tab1 = {
+									Frame = "{{0, 0}, {100, 50}}";
+								};
+								TabCount = 2;
+								TabsVisible = YES;
+							};
+							Frame = "{{0, 0}, {781, 452}}";
+							LauncherConfigVersion = 7;
+						};
+						Tab2 = {
+							Frame = "{{0, 0}, {685, 215}}";
+							LauncherConfigVersion = 3;
+							Runner = {
+								Frame = "{{0, 0}, {685, 215}}";
+							};
+						};
+						Tab3 = {
+							BuildMessageFrame = "{{0, 0}, {687, 262}}";
+							BuildTranscriptFrame = "{{0, 271}, {687, 2}}";
+							BuildTranscriptFrameExpanded = YES;
+							Frame = "{{0, 0}, {685, 295}}";
+						};
+						Tab4 = {
+							Frame = "{{0, 0}, {612, 295}}";
+						};
+						TabCount = 5;
+						TabsVisible = NO;
+					};
+					SplitCount = 1;
+					Tab0 = {
+						Frame = "{{0, 0}, {300, 533}}";
+						GroupTreeTableConfiguration = (
+							TargetStatusColumn,
+							18,
+							MainColumn,
+							267,
+						);
+					};
+					Tab1 = {
+						ClassesFrame = "{{0, 0}, {280, 398}}";
+						ClassesTreeTableConfiguration = (
+							PBXBookColumnIdentifier,
+							20,
+							PBXClassColumnIdentifier,
+							237,
+						);
+						Frame = "{{0, 0}, {278, 659}}";
+						MembersFrame = "{{0, 407}, {280, 252}}";
+						MembersTreeTableConfiguration = (
+							PBXBookColumnIdentifier,
+							20,
+							PBXMethodColumnIdentifier,
+							236,
+						);
+					};
+					Tab2 = {
+						Frame = "{{0, 0}, {200, 100}}";
+					};
+					Tab3 = {
+						Frame = "{{0, 0}, {200, 100}}";
+						TargetTableConfiguration = (
+							ActiveObject,
+							16,
+							ObjectNames,
+							202.296,
+						);
+					};
+					Tab4 = {
+						BreakpointsTreeTableConfiguration = (
+							breakpointColumn,
+							197,
+							enabledColumn,
+							31,
+						);
+						Frame = "{{0, 0}, {250, 100}}";
+					};
+					TabCount = 5;
+					TabsVisible = NO;
+				};
+				NavBarShownByDefault = YES;
+				StatusViewVisible = YES;
+				Template = F5314676015831810DCA290F;
+				ToolbarVisible = YES;
+				WindowLocation = "{7, 336}";
+			};
+			"PBXTemplateGeometry-F5CA7EC9015C08ED0DCA290F" = {
+				ContentSize = "{665, 594}";
+				LeftSlideOut = {
+					Collapsed = NO;
+					Frame = "{{0, 0}, {665, 594}}";
+					Split0 = {
+						ActiveTab = 3;
+						ActiveTabName = PBXProjectFindModule;
+						Collapsed = NO;
+						Frame = "{{0, 0}, {665, 594}}";
+						Split0 = {
+							Frame = "{{0, 301}, {665, 293}}";
+						};
+						SplitCount = 1;
+						Tab0 = {
+							Frame = "{{0, 0}, {484, 208}}";
+						};
+						Tab1 = {
+							Debugger = {
+								Collapsed = NO;
+								Frame = "{{0, 0}, {664, 208}}";
+								Split0 = {
+									Frame = "{{0, 24}, {664, 184}}";
+									Split0 = {
+										Frame = "{{0, 0}, {325, 184}}";
+									};
+									Split1 = {
+										DebugVariablesTableConfiguration = (
+											Name,
+											123,
+											Value,
+											85,
+											Summary,
+											96.123,
+										);
+										Frame = "{{334, 0}, {330, 184}}";
+									};
+									SplitCount = 2;
+								};
+								SplitCount = 1;
+								Tab0 = {
+									Frame = "{{0, 0}, {100, 50}}";
+								};
+								Tab1 = {
+									Frame = "{{0, 0}, {100, 50}}";
+								};
+								TabCount = 2;
+								TabsVisible = YES;
+							};
+							Frame = "{{0, 0}, {664, 208}}";
+							LauncherConfigVersion = 7;
+						};
+						Tab2 = {
+							Frame = "{{0, 0}, {664, 50}}";
+							LauncherConfigVersion = 3;
+							Runner = {
+								Frame = "{{0, 0}, {664, 50}}";
+							};
+						};
+						Tab3 = {
+							BuildMessageFrame = "{{0, 0}, {667, 265}}";
+							BuildTranscriptFrame = "{{0, 274}, {667, 2}}";
+							BuildTranscriptFrameExpanded = YES;
+							Frame = "{{0, 0}, {665, 298}}";
+						};
+						Tab4 = {
+							Frame = "{{0, 0}, {665, 295}}";
+						};
+						TabCount = 5;
+						TabsVisible = NO;
+					};
+					SplitCount = 1;
+					Tab0 = {
+						Frame = "{{0, 0}, {313, 531}}";
+						GroupTreeTableConfiguration = (
+							TargetStatusColumn,
+							18,
+							MainColumn,
+							280,
+						);
+					};
+					Tab1 = {
+						ClassesFrame = "{{0, 0}, {280, 398}}";
+						ClassesTreeTableConfiguration = (
+							PBXBookColumnIdentifier,
+							20,
+							PBXClassColumnIdentifier,
+							237,
+						);
+						Frame = "{{0, 0}, {278, 659}}";
+						MembersFrame = "{{0, 407}, {280, 252}}";
+						MembersTreeTableConfiguration = (
+							PBXBookColumnIdentifier,
+							20,
+							PBXMethodColumnIdentifier,
+							236,
+						);
+					};
+					Tab2 = {
+						Frame = "{{0, 0}, {200, 100}}";
+					};
+					Tab3 = {
+						Frame = "{{0, 0}, {200, 557}}";
+						TargetTableConfiguration = (
+							ActiveObject,
+							16,
+							ObjectNames,
+							202.296,
+						);
+					};
+					Tab4 = {
+						BreakpointsTreeTableConfiguration = (
+							breakpointColumn,
+							197,
+							enabledColumn,
+							31,
+						);
+						Frame = "{{0, 0}, {250, 100}}";
+					};
+					TabCount = 5;
+					TabsVisible = NO;
+				};
+				NavBarShownByDefault = YES;
+				StatusViewVisible = NO;
+				Template = F5CA7EC9015C08ED0DCA290F;
+				ToolbarVisible = NO;
+				WindowLocation = "{350, 55}";
+			};
+			PBXWorkspaceContents = (
+				{
+					LeftSlideOut = {
+						Split0 = {
+							Split0 = {
+								NavContent0 = {
+									bookmark = E1293A7404218D2D00050002;
+									history = (
+										E11854FB03F27D4A00050002,
+										E11854FC03F27D4A00050002,
+										E11854FE03F27D4A00050002,
+										E11854FF03F27D4A00050002,
+										E118550003F27D4A00050002,
+										E118550203F27D4A00050002,
+										E118550303F27D4A00050002,
+										E118550603F27D4A00050002,
+										E118550703F27D4A00050002,
+										E118550803F27D4A00050002,
+										E118550903F27D4A00050002,
+										E118550A03F27D4A00050002,
+										E118550B03F27D4A00050002,
+										E118550E03F27D4A00050002,
+										E166E9AA03F2F8F100050002,
+										E166ECD903F41C6200050002,
+										E166ECDA03F41C6200050002,
+										E16C833C03F759D800050002,
+										E16C833D03F759D800050002,
+										E16C834003F759D800050002,
+										E16C834103F759D800050002,
+										E16C834203F759D800050002,
+										E16C834303F759D800050002,
+										E16C834703F759D800050002,
+										E16C834803F759D800050002,
+										E16C834903F759D800050002,
+										E16C834A03F759D800050002,
+										E16C834B03F759D800050002,
+										E16C834C03F759D800050002,
+										E16C834D03F759D800050002,
+										E16C834E03F759D800050002,
+										E16C834F03F759D800050002,
+										E1ABE98F040D4E8F00050002,
+										E1ABE990040D4E8F00050002,
+										E1ABE991040D4E8F00050002,
+										E1669BDA04133AFF00050002,
+										E120D7B20419848000050002,
+										E120D7B30419848000050002,
+										E120D7B40419848000050002,
+										E120D7BB0419848000050002,
+										E120D7BE0419848000050002,
+										E120D7BF0419848000050002,
+										E120D7C20419848000050002,
+										E120D7C60419848000050002,
+										E1F7C3BE041B372700FEF34D,
+										E1F7C3C0041B372700FEF34D,
+										E1F7C604041B3F8300FEF34D,
+										E1F7C60D041B404E00FEF34D,
+										E1F7C60E041B404E00FEF34D,
+										E1F7C60F041B404E00FEF34D,
+										E144826E041D4AB700050002,
+										E144826F041D4AB700050002,
+										E1448270041D4AB700050002,
+										E1373452041FE49500050002,
+										E1293A57042181EB00050002,
+										E1293A6404218D2D00050002,
+										E1293A6504218D2D00050002,
+										E1293A6604218D2D00050002,
+										E1293A6704218D2D00050002,
+										E1293A6804218D2D00050002,
+										E1293A6904218D2D00050002,
+									);
+									prevStack = (
+										E120348303EDEBC100000ABE,
+										E120348403EDEBC100000ABE,
+										E120348503EDEBC100000ABE,
+										E120348703EDEBC100000ABE,
+										E120348803EDEBC100000ABE,
+										E120348903EDEBC100000ABE,
+										E120348A03EDEBC100000ABE,
+										E120348B03EDEBC100000ABE,
+										E120348C03EDEBC100000ABE,
+										E120348D03EDEBC100000ABE,
+										E157EE6D03F059E300050002,
+										E157EE6F03F059E300050002,
+										E118551403F27D4A00050002,
+										E118551503F27D4A00050002,
+										E118551603F27D4A00050002,
+										E118551703F27D4A00050002,
+										E118551903F27D4A00050002,
+										E118551A03F27D4A00050002,
+										E118551B03F27D4A00050002,
+										E118551C03F27D4A00050002,
+										E118551E03F27D4A00050002,
+										E118551F03F27D4A00050002,
+										E118552003F27D4A00050002,
+										E118552203F27D4A00050002,
+										E118552303F27D4A00050002,
+										E118552403F27D4A00050002,
+										E118552503F27D4A00050002,
+										E118552603F27D4A00050002,
+										E118552703F27D4A00050002,
+										E118552803F27D4A00050002,
+										E118552903F27D4A00050002,
+										E118552A03F27D4A00050002,
+										E118552B03F27D4A00050002,
+										E118552C03F27D4A00050002,
+										E118552D03F27D4A00050002,
+										E118552E03F27D4A00050002,
+										E118552F03F27D4A00050002,
+										E118553103F27D4A00050002,
+										E166E9AF03F2F8F100050002,
+										E166E9B003F2F8F100050002,
+										E166E9B103F2F8F100050002,
+										E166ECDC03F41C6200050002,
+										E166ECDD03F41C6200050002,
+										E166ECDE03F41C6200050002,
+										E166ECDF03F41C6200050002,
+										E166ECE003F41C6200050002,
+										E15FA26603F6528F00050002,
+										E15FA26803F6528F00050002,
+										E15FA26903F6528F00050002,
+										E15FA26A03F6528F00050002,
+										E15FA26B03F6528F00050002,
+										E15FA26C03F6528F00050002,
+										E15FA26D03F6528F00050002,
+										E15FA26E03F6528F00050002,
+										E16C835803F759D800050002,
+										E16C835903F759D800050002,
+										E16C835A03F759D800050002,
+										E16C835B03F759D800050002,
+										E16C835C03F759D800050002,
+										E16C835D03F759D800050002,
+										E16C835E03F759D800050002,
+										E16C835F03F759D800050002,
+										E16C836003F759D800050002,
+										E16C836203F759D800050002,
+										E16C836403F759D800050002,
+										E16C836503F759D800050002,
+										E16C836603F759D800050002,
+										E16C836703F759D800050002,
+										E16C836803F759D800050002,
+										E16C836903F759D800050002,
+										E16C836A03F759D800050002,
+										E16C836B03F759D800050002,
+										E16C836C03F759D800050002,
+										E16C836D03F759D800050002,
+										E16C836E03F759D800050002,
+										E16C836F03F759D800050002,
+										E16C837003F759D800050002,
+										E16C837103F759D800050002,
+										E16C837203F759D800050002,
+										E16C837303F759D800050002,
+										E16C837403F759D800050002,
+										E16C837503F759D800050002,
+										E16C837603F759D800050002,
+										E16C837703F759D800050002,
+										E16C837803F759D800050002,
+										E16C837903F759D800050002,
+										E16C837A03F759D800050002,
+										E16C837B03F759D800050002,
+										E16C837C03F759D800050002,
+										E16C837D03F759D800050002,
+										E16C837E03F759D800050002,
+										E16C837F03F759D800050002,
+										E16C838003F759D800050002,
+										E16C838103F759D800050002,
+										E16C838203F759D800050002,
+										E16C838303F759D800050002,
+										E16C838403F759D800050002,
+										E16C838503F759D800050002,
+										E16C838603F759D800050002,
+										E16C838703F759D800050002,
+										E16C838803F759D800050002,
+										E16C838903F759D800050002,
+										E16C838A03F759D800050002,
+										E16C838C03F759D800050002,
+										E16C838D03F759D800050002,
+										E16C838E03F759D800050002,
+										E16C838F03F759D800050002,
+										E16C839003F759D800050002,
+										E16C839103F759D800050002,
+										E16C839203F759D800050002,
+										E16C839303F759D800050002,
+										E16C839503F759D800050002,
+										E16C839603F759D800050002,
+										E16C839703F759D800050002,
+										E16C839803F759D800050002,
+										E16C839903F759D800050002,
+										E16C839A03F759D800050002,
+										E16C839B03F759D800050002,
+										E16C839C03F759D800050002,
+										E16C839D03F759D800050002,
+										E16C839E03F759D800050002,
+										E16C83A003F759D800050002,
+										E16C83A203F759D800050002,
+										E16C83A303F759D800050002,
+										E16C83A403F759D800050002,
+										E16C83A503F759D800050002,
+										E16C83A603F759D800050002,
+										E16C83A703F759D800050002,
+										E16C83A803F759D800050002,
+										E16C83A903F759D800050002,
+										E16C842703FB6A7200050002,
+										E1C59B0403FDE6DD00050002,
+										E1DEF10F03FF95C900050002,
+										E1DEF11003FF95C900050002,
+										E1DEF11103FF95C900050002,
+										E1F6E3AF040BD0C700050002,
+										E1F6E3B0040BD0C700050002,
+										E1F6E3B1040BD0C700050002,
+										E1937CF1040C300300050002,
+										E1937CF2040C300300050002,
+										E1ABE993040D4E8F00050002,
+										E1ABE994040D4E8F00050002,
+										E1ABE995040D4E8F00050002,
+										E1ABE996040D4E8F00050002,
+										E1ABE997040D4E8F00050002,
+										E1ABE998040D4E8F00050002,
+										E1ABE999040D4E8F00050002,
+										E1ABE99D040D623300050002,
+										E1ABE99E040D623300050002,
+										E1669BDD04133AFF00050002,
+										E1BFDA5C0418987900050002,
+										E1BFDA5D0418987900050002,
+										E120D6A90419601400050002,
+										E120D6AA0419601400050002,
+										E120D7C70419848000050002,
+										E120D7C80419848000050002,
+										E120D7C90419848000050002,
+										E120D7CA0419848000050002,
+										E120D7CB0419848000050002,
+										E120D7CC0419848000050002,
+										E120D7CD0419848000050002,
+										E120D7CE0419848000050002,
+										E120D7CF0419848000050002,
+										E120D7D00419848000050002,
+										E120D7D10419848000050002,
+										E120D7D20419848000050002,
+										E120D7D30419848000050002,
+										E120D7D40419848000050002,
+										E120D7D50419848000050002,
+										E120D7D60419848000050002,
+										E120D7D70419848000050002,
+										E120D7D80419848000050002,
+										E120D7D90419848000050002,
+										E120D7DA0419848000050002,
+										E120D7DB0419848000050002,
+										E120D7DD0419848000050002,
+										E120D7DE0419848000050002,
+										E120D7DF0419848000050002,
+										E120D7E00419848000050002,
+										E120D7E10419848000050002,
+										E120D7E20419848000050002,
+										E120D7E30419848000050002,
+										E120D7E40419848000050002,
+										E120D7E50419848000050002,
+										E120D7E60419848000050002,
+										E120D7E70419848000050002,
+										E120D7E80419848000050002,
+										E120D7E90419848000050002,
+										E120D7EA0419848000050002,
+										E120D7EB0419848000050002,
+										E120D7EC0419848000050002,
+										E120D7ED0419848000050002,
+										E120D7EE0419848000050002,
+										E120D7EF0419848000050002,
+										E120D7F00419848000050002,
+										E120D7F10419848000050002,
+										E120D7F20419848000050002,
+										E120D7F30419848000050002,
+										E120D7F40419848000050002,
+										E120D7F50419848000050002,
+										E120D7F60419848000050002,
+										E120D7F70419848000050002,
+										E120D7F80419848000050002,
+										E120D7F90419848000050002,
+										E120D7FA0419848000050002,
+										E120D7FB0419848000050002,
+										E120D7FC0419848000050002,
+										E120D7FD0419848000050002,
+										E120D7FE0419848000050002,
+										E120D7FF0419848000050002,
+										E120D8000419848000050002,
+										E120D8010419848000050002,
+										E120D8020419848000050002,
+										E120D8030419848000050002,
+										E120D8040419848000050002,
+										E120D8050419848000050002,
+										E120D8060419848000050002,
+										E120D8070419848000050002,
+										E120D8080419848000050002,
+										E120D80A0419848000050002,
+										E120D80C0419848000050002,
+										E120D80D0419848000050002,
+										E120D80F0419848000050002,
+										E120D8110419848000050002,
+										E120D8130419848000050002,
+										E120D8140419848000050002,
+										E120D8150419848000050002,
+										E120D8160419848000050002,
+										E120D8170419848000050002,
+										E120D8180419848000050002,
+										E1EAD74C0419ECC600050002,
+										E1EAD74D0419ECC600050002,
+										E1EAD74E0419ECC600050002,
+										E1EAD7500419ECC600050002,
+										E1EAD7520419ECC600050002,
+										E1F7C3C2041B372700FEF34D,
+										E1F7C3C3041B372700FEF34D,
+										E1F7C3C4041B372700FEF34D,
+										E1F7C3C5041B372700FEF34D,
+										E1F7C3C6041B372700FEF34D,
+										E1F7C3C7041B372700FEF34D,
+										E1F7C3C8041B372700FEF34D,
+										E1F7C3C9041B372700FEF34D,
+										E1F7C3CA041B372700FEF34D,
+										E1F7C3CB041B372700FEF34D,
+										E1F7C607041B3F8300FEF34D,
+										E1F7C608041B3F8300FEF34D,
+										E1F7C610041B404E00FEF34D,
+										E1F7C611041B404E00FEF34D,
+										E1F7C612041B404E00FEF34D,
+										E1448271041D4AB700050002,
+										E1448272041D4AB700050002,
+										E1448273041D4AB700050002,
+										E1373453041FE49500050002,
+										E1293A51042165F100050002,
+										E1293A52042165F100050002,
+										E1293A5A042181EB00050002,
+										E1293A5B042181EB00050002,
+										E1293A5C042181EB00050002,
+										E1293A5D042181EB00050002,
+										E1293A5E042181EB00050002,
+										E1293A5F042181EB00050002,
+										E1293A6A04218D2D00050002,
+										E1293A6B04218D2D00050002,
+										E1293A6C04218D2D00050002,
+										E1293A6D04218D2D00050002,
+										E1293A6E04218D2D00050002,
+										E1293A6F04218D2D00050002,
+										E1293A7004218D2D00050002,
+										E1293A7104218D2D00050002,
+										E1293A7204218D2D00050002,
+										E1293A7304218D2D00050002,
+									);
+								};
+								NavCount = 1;
+								NavGeometry0 = {
+									Frame = "{{0, 0}, {642, 668}}";
+									NavBarVisible = YES;
+								};
+								NavSplitVertical = NO;
+							};
+							SplitCount = 1;
+							Tab1 = {
+								Debugger = {
+									Split0 = {
+										SplitCount = 2;
+									};
+									SplitCount = 1;
+									TabCount = 2;
+								};
+								LauncherConfigVersion = 7;
+							};
+							Tab2 = {
+								LauncherConfigVersion = 3;
+								Runner = {
+								};
+							};
+							TabCount = 5;
+						};
+						SplitCount = 1;
+						Tab1 = {
+							OptionsSetName = "Hierarchy, all classes";
+						};
+						TabCount = 5;
+					};
+				},
+			);
+			PBXWorkspaceGeometries = (
+				{
+					ContentSize = "{925, 691}";
+					LeftSlideOut = {
+						ActiveTab = 0;
+						ActiveTabName = PBXGroupTreeModule;
+						Collapsed = NO;
+						Frame = "{{0, 23}, {925, 668}}";
+						Split0 = {
+							Collapsed = NO;
+							Frame = "{{283, 0}, {642, 668}}";
+							Split0 = {
+								Frame = "{{0, 0}, {642, 668}}";
+							};
+							SplitCount = 1;
+							Tab0 = {
+								Frame = "{{0, 0}, {681, 289}}";
+							};
+							Tab1 = {
+								Debugger = {
+									Collapsed = NO;
+									Frame = "{{0, 0}, {681, 150}}";
+									Split0 = {
+										Frame = "{{0, 24}, {681, 126}}";
+										Split0 = {
+											Frame = "{{0, 0}, {333, 126}}";
+										};
+										Split1 = {
+											DebugVariablesTableConfiguration = (
+												Name,
+												123,
+												Value,
+												85,
+												Summary,
+												105.123,
+											);
+											Frame = "{{342, 0}, {339, 126}}";
+										};
+										SplitCount = 2;
+									};
+									SplitCount = 1;
+									Tab0 = {
+										Frame = "{{0, 0}, {100, 50}}";
+									};
+									Tab1 = {
+										Frame = "{{0, 0}, {100, 50}}";
+									};
+									TabCount = 2;
+									TabsVisible = YES;
+								};
+								Frame = "{{0, 0}, {681, 120}}";
+								LauncherConfigVersion = 7;
+							};
+							Tab2 = {
+								Frame = "{{0, 0}, {681, 234}}";
+								LauncherConfigVersion = 3;
+								Runner = {
+									Frame = "{{0, 0}, {681, 234}}";
+								};
+							};
+							Tab3 = {
+								BuildMessageFrame = "{{0, 0}, {683, 205}}";
+								BuildTranscriptFrame = "{{0, 214}, {683, 2}}";
+								BuildTranscriptFrameExpanded = YES;
+								Frame = "{{0, 0}, {681, 238}}";
+							};
+							Tab4 = {
+								Frame = "{{0, 0}, {612, 295}}";
+							};
+							TabCount = 5;
+							TabsVisible = NO;
+						};
+						SplitCount = 1;
+						Tab0 = {
+							Frame = "{{0, 0}, {259, 668}}";
+							GroupTreeTableConfiguration = (
+								TargetStatusColumn,
+								18,
+								MainColumn,
+								226,
+							);
+						};
+						Tab1 = {
+							ClassesFrame = "{{0, 0}, {250, 402}}";
+							ClassesTreeTableConfiguration = (
+								PBXBookColumnIdentifier,
+								20,
+								PBXClassColumnIdentifier,
+								207,
+							);
+							Frame = "{{0, 0}, {248, 668}}";
+							MembersFrame = "{{0, 411}, {250, 257}}";
+							MembersTreeTableConfiguration = (
+								PBXBookColumnIdentifier,
+								20,
+								PBXMethodColumnIdentifier,
+								206,
+							);
+						};
+						Tab2 = {
+							Frame = "{{0, 0}, {217, 554}}";
+						};
+						Tab3 = {
+							Frame = "{{0, 0}, {239, 698}}";
+							TargetTableConfiguration = (
+								ActiveObject,
+								16,
+								ObjectNames,
+								206.296,
+							);
+						};
+						Tab4 = {
+							BreakpointsTreeTableConfiguration = (
+								breakpointColumn,
+								197,
+								enabledColumn,
+								31,
+							);
+							Frame = "{{0, 0}, {250, 554}}";
+						};
+						TabCount = 5;
+						TabsVisible = YES;
+					};
+					NavBarShownByDefault = YES;
+					StatusViewVisible = YES;
+					Template = 64ABBB4501FA494900185B06;
+					ToolbarVisible = YES;
+					WindowLocation = "{18, 79}";
+				},
+			);
+			PBXWorkspaceStateSaveDate = 69308845;
+		};
+		perUserProjectItems = {
+			E11854FB03F27D4A00050002 = E11854FB03F27D4A00050002;
+			E11854FC03F27D4A00050002 = E11854FC03F27D4A00050002;
+			E11854FE03F27D4A00050002 = E11854FE03F27D4A00050002;
+			E11854FF03F27D4A00050002 = E11854FF03F27D4A00050002;
+			E118550003F27D4A00050002 = E118550003F27D4A00050002;
+			E118550203F27D4A00050002 = E118550203F27D4A00050002;
+			E118550303F27D4A00050002 = E118550303F27D4A00050002;
+			E118550603F27D4A00050002 = E118550603F27D4A00050002;
+			E118550703F27D4A00050002 = E118550703F27D4A00050002;
+			E118550803F27D4A00050002 = E118550803F27D4A00050002;
+			E118550903F27D4A00050002 = E118550903F27D4A00050002;
+			E118550A03F27D4A00050002 = E118550A03F27D4A00050002;
+			E118550B03F27D4A00050002 = E118550B03F27D4A00050002;
+			E118550E03F27D4A00050002 = E118550E03F27D4A00050002;
+			E118551403F27D4A00050002 = E118551403F27D4A00050002;
+			E118551503F27D4A00050002 = E118551503F27D4A00050002;
+			E118551603F27D4A00050002 = E118551603F27D4A00050002;
+			E118551703F27D4A00050002 = E118551703F27D4A00050002;
+			E118551903F27D4A00050002 = E118551903F27D4A00050002;
+			E118551A03F27D4A00050002 = E118551A03F27D4A00050002;
+			E118551B03F27D4A00050002 = E118551B03F27D4A00050002;
+			E118551C03F27D4A00050002 = E118551C03F27D4A00050002;
+			E118551E03F27D4A00050002 = E118551E03F27D4A00050002;
+			E118551F03F27D4A00050002 = E118551F03F27D4A00050002;
+			E118552003F27D4A00050002 = E118552003F27D4A00050002;
+			E118552203F27D4A00050002 = E118552203F27D4A00050002;
+			E118552303F27D4A00050002 = E118552303F27D4A00050002;
+			E118552403F27D4A00050002 = E118552403F27D4A00050002;
+			E118552503F27D4A00050002 = E118552503F27D4A00050002;
+			E118552603F27D4A00050002 = E118552603F27D4A00050002;
+			E118552703F27D4A00050002 = E118552703F27D4A00050002;
+			E118552803F27D4A00050002 = E118552803F27D4A00050002;
+			E118552903F27D4A00050002 = E118552903F27D4A00050002;
+			E118552A03F27D4A00050002 = E118552A03F27D4A00050002;
+			E118552B03F27D4A00050002 = E118552B03F27D4A00050002;
+			E118552C03F27D4A00050002 = E118552C03F27D4A00050002;
+			E118552D03F27D4A00050002 = E118552D03F27D4A00050002;
+			E118552E03F27D4A00050002 = E118552E03F27D4A00050002;
+			E118552F03F27D4A00050002 = E118552F03F27D4A00050002;
+			E118553103F27D4A00050002 = E118553103F27D4A00050002;
+			E120348303EDEBC100000ABE = E120348303EDEBC100000ABE;
+			E120348403EDEBC100000ABE = E120348403EDEBC100000ABE;
+			E120348503EDEBC100000ABE = E120348503EDEBC100000ABE;
+			E120348703EDEBC100000ABE = E120348703EDEBC100000ABE;
+			E120348803EDEBC100000ABE = E120348803EDEBC100000ABE;
+			E120348903EDEBC100000ABE = E120348903EDEBC100000ABE;
+			E120348A03EDEBC100000ABE = E120348A03EDEBC100000ABE;
+			E120348B03EDEBC100000ABE = E120348B03EDEBC100000ABE;
+			E120348C03EDEBC100000ABE = E120348C03EDEBC100000ABE;
+			E120348D03EDEBC100000ABE = E120348D03EDEBC100000ABE;
+			E120D6A90419601400050002 = E120D6A90419601400050002;
+			E120D6AA0419601400050002 = E120D6AA0419601400050002;
+			E120D7B20419848000050002 = E120D7B20419848000050002;
+			E120D7B30419848000050002 = E120D7B30419848000050002;
+			E120D7B40419848000050002 = E120D7B40419848000050002;
+			E120D7BB0419848000050002 = E120D7BB0419848000050002;
+			E120D7BE0419848000050002 = E120D7BE0419848000050002;
+			E120D7BF0419848000050002 = E120D7BF0419848000050002;
+			E120D7C20419848000050002 = E120D7C20419848000050002;
+			E120D7C60419848000050002 = E120D7C60419848000050002;
+			E120D7C70419848000050002 = E120D7C70419848000050002;
+			E120D7C80419848000050002 = E120D7C80419848000050002;
+			E120D7C90419848000050002 = E120D7C90419848000050002;
+			E120D7CA0419848000050002 = E120D7CA0419848000050002;
+			E120D7CB0419848000050002 = E120D7CB0419848000050002;
+			E120D7CC0419848000050002 = E120D7CC0419848000050002;
+			E120D7CD0419848000050002 = E120D7CD0419848000050002;
+			E120D7CE0419848000050002 = E120D7CE0419848000050002;
+			E120D7CF0419848000050002 = E120D7CF0419848000050002;
+			E120D7D00419848000050002 = E120D7D00419848000050002;
+			E120D7D10419848000050002 = E120D7D10419848000050002;
+			E120D7D20419848000050002 = E120D7D20419848000050002;
+			E120D7D30419848000050002 = E120D7D30419848000050002;
+			E120D7D40419848000050002 = E120D7D40419848000050002;
+			E120D7D50419848000050002 = E120D7D50419848000050002;
+			E120D7D60419848000050002 = E120D7D60419848000050002;
+			E120D7D70419848000050002 = E120D7D70419848000050002;
+			E120D7D80419848000050002 = E120D7D80419848000050002;
+			E120D7D90419848000050002 = E120D7D90419848000050002;
+			E120D7DA0419848000050002 = E120D7DA0419848000050002;
+			E120D7DB0419848000050002 = E120D7DB0419848000050002;
+			E120D7DD0419848000050002 = E120D7DD0419848000050002;
+			E120D7DE0419848000050002 = E120D7DE0419848000050002;
+			E120D7DF0419848000050002 = E120D7DF0419848000050002;
+			E120D7E00419848000050002 = E120D7E00419848000050002;
+			E120D7E10419848000050002 = E120D7E10419848000050002;
+			E120D7E20419848000050002 = E120D7E20419848000050002;
+			E120D7E30419848000050002 = E120D7E30419848000050002;
+			E120D7E40419848000050002 = E120D7E40419848000050002;
+			E120D7E50419848000050002 = E120D7E50419848000050002;
+			E120D7E60419848000050002 = E120D7E60419848000050002;
+			E120D7E70419848000050002 = E120D7E70419848000050002;
+			E120D7E80419848000050002 = E120D7E80419848000050002;
+			E120D7E90419848000050002 = E120D7E90419848000050002;
+			E120D7EA0419848000050002 = E120D7EA0419848000050002;
+			E120D7EB0419848000050002 = E120D7EB0419848000050002;
+			E120D7EC0419848000050002 = E120D7EC0419848000050002;
+			E120D7ED0419848000050002 = E120D7ED0419848000050002;
+			E120D7EE0419848000050002 = E120D7EE0419848000050002;
+			E120D7EF0419848000050002 = E120D7EF0419848000050002;
+			E120D7F00419848000050002 = E120D7F00419848000050002;
+			E120D7F10419848000050002 = E120D7F10419848000050002;
+			E120D7F20419848000050002 = E120D7F20419848000050002;
+			E120D7F30419848000050002 = E120D7F30419848000050002;
+			E120D7F40419848000050002 = E120D7F40419848000050002;
+			E120D7F50419848000050002 = E120D7F50419848000050002;
+			E120D7F60419848000050002 = E120D7F60419848000050002;
+			E120D7F70419848000050002 = E120D7F70419848000050002;
+			E120D7F80419848000050002 = E120D7F80419848000050002;
+			E120D7F90419848000050002 = E120D7F90419848000050002;
+			E120D7FA0419848000050002 = E120D7FA0419848000050002;
+			E120D7FB0419848000050002 = E120D7FB0419848000050002;
+			E120D7FC0419848000050002 = E120D7FC0419848000050002;
+			E120D7FD0419848000050002 = E120D7FD0419848000050002;
+			E120D7FE0419848000050002 = E120D7FE0419848000050002;
+			E120D7FF0419848000050002 = E120D7FF0419848000050002;
+			E120D8000419848000050002 = E120D8000419848000050002;
+			E120D8010419848000050002 = E120D8010419848000050002;
+			E120D8020419848000050002 = E120D8020419848000050002;
+			E120D8030419848000050002 = E120D8030419848000050002;
+			E120D8040419848000050002 = E120D8040419848000050002;
+			E120D8050419848000050002 = E120D8050419848000050002;
+			E120D8060419848000050002 = E120D8060419848000050002;
+			E120D8070419848000050002 = E120D8070419848000050002;
+			E120D8080419848000050002 = E120D8080419848000050002;
+			E120D80A0419848000050002 = E120D80A0419848000050002;
+			E120D80C0419848000050002 = E120D80C0419848000050002;
+			E120D80D0419848000050002 = E120D80D0419848000050002;
+			E120D80F0419848000050002 = E120D80F0419848000050002;
+			E120D8110419848000050002 = E120D8110419848000050002;
+			E120D8130419848000050002 = E120D8130419848000050002;
+			E120D8140419848000050002 = E120D8140419848000050002;
+			E120D8150419848000050002 = E120D8150419848000050002;
+			E120D8160419848000050002 = E120D8160419848000050002;
+			E120D8170419848000050002 = E120D8170419848000050002;
+			E120D8180419848000050002 = E120D8180419848000050002;
+			E1293A51042165F100050002 = E1293A51042165F100050002;
+			E1293A52042165F100050002 = E1293A52042165F100050002;
+			E1293A57042181EB00050002 = E1293A57042181EB00050002;
+			E1293A5A042181EB00050002 = E1293A5A042181EB00050002;
+			E1293A5B042181EB00050002 = E1293A5B042181EB00050002;
+			E1293A5C042181EB00050002 = E1293A5C042181EB00050002;
+			E1293A5D042181EB00050002 = E1293A5D042181EB00050002;
+			E1293A5E042181EB00050002 = E1293A5E042181EB00050002;
+			E1293A5F042181EB00050002 = E1293A5F042181EB00050002;
+			E1293A6404218D2D00050002 = E1293A6404218D2D00050002;
+			E1293A6504218D2D00050002 = E1293A6504218D2D00050002;
+			E1293A6604218D2D00050002 = E1293A6604218D2D00050002;
+			E1293A6704218D2D00050002 = E1293A6704218D2D00050002;
+			E1293A6804218D2D00050002 = E1293A6804218D2D00050002;
+			E1293A6904218D2D00050002 = E1293A6904218D2D00050002;
+			E1293A6A04218D2D00050002 = E1293A6A04218D2D00050002;
+			E1293A6B04218D2D00050002 = E1293A6B04218D2D00050002;
+			E1293A6C04218D2D00050002 = E1293A6C04218D2D00050002;
+			E1293A6D04218D2D00050002 = E1293A6D04218D2D00050002;
+			E1293A6E04218D2D00050002 = E1293A6E04218D2D00050002;
+			E1293A6F04218D2D00050002 = E1293A6F04218D2D00050002;
+			E1293A7004218D2D00050002 = E1293A7004218D2D00050002;
+			E1293A7104218D2D00050002 = E1293A7104218D2D00050002;
+			E1293A7204218D2D00050002 = E1293A7204218D2D00050002;
+			E1293A7304218D2D00050002 = E1293A7304218D2D00050002;
+			E1293A7404218D2D00050002 = E1293A7404218D2D00050002;
+			E1373452041FE49500050002 = E1373452041FE49500050002;
+			E1373453041FE49500050002 = E1373453041FE49500050002;
+			E144826E041D4AB700050002 = E144826E041D4AB700050002;
+			E144826F041D4AB700050002 = E144826F041D4AB700050002;
+			E1448270041D4AB700050002 = E1448270041D4AB700050002;
+			E1448271041D4AB700050002 = E1448271041D4AB700050002;
+			E1448272041D4AB700050002 = E1448272041D4AB700050002;
+			E1448273041D4AB700050002 = E1448273041D4AB700050002;
+			E157EE6D03F059E300050002 = E157EE6D03F059E300050002;
+			E157EE6F03F059E300050002 = E157EE6F03F059E300050002;
+			E15FA26603F6528F00050002 = E15FA26603F6528F00050002;
+			E15FA26803F6528F00050002 = E15FA26803F6528F00050002;
+			E15FA26903F6528F00050002 = E15FA26903F6528F00050002;
+			E15FA26A03F6528F00050002 = E15FA26A03F6528F00050002;
+			E15FA26B03F6528F00050002 = E15FA26B03F6528F00050002;
+			E15FA26C03F6528F00050002 = E15FA26C03F6528F00050002;
+			E15FA26D03F6528F00050002 = E15FA26D03F6528F00050002;
+			E15FA26E03F6528F00050002 = E15FA26E03F6528F00050002;
+			E1669BDA04133AFF00050002 = E1669BDA04133AFF00050002;
+			E1669BDD04133AFF00050002 = E1669BDD04133AFF00050002;
+			E166E9AA03F2F8F100050002 = E166E9AA03F2F8F100050002;
+			E166E9AF03F2F8F100050002 = E166E9AF03F2F8F100050002;
+			E166E9B003F2F8F100050002 = E166E9B003F2F8F100050002;
+			E166E9B103F2F8F100050002 = E166E9B103F2F8F100050002;
+			E166ECD903F41C6200050002 = E166ECD903F41C6200050002;
+			E166ECDA03F41C6200050002 = E166ECDA03F41C6200050002;
+			E166ECDC03F41C6200050002 = E166ECDC03F41C6200050002;
+			E166ECDD03F41C6200050002 = E166ECDD03F41C6200050002;
+			E166ECDE03F41C6200050002 = E166ECDE03F41C6200050002;
+			E166ECDF03F41C6200050002 = E166ECDF03F41C6200050002;
+			E166ECE003F41C6200050002 = E166ECE003F41C6200050002;
+			E16C833C03F759D800050002 = E16C833C03F759D800050002;
+			E16C833D03F759D800050002 = E16C833D03F759D800050002;
+			E16C834003F759D800050002 = E16C834003F759D800050002;
+			E16C834103F759D800050002 = E16C834103F759D800050002;
+			E16C834203F759D800050002 = E16C834203F759D800050002;
+			E16C834303F759D800050002 = E16C834303F759D800050002;
+			E16C834703F759D800050002 = E16C834703F759D800050002;
+			E16C834803F759D800050002 = E16C834803F759D800050002;
+			E16C834903F759D800050002 = E16C834903F759D800050002;
+			E16C834A03F759D800050002 = E16C834A03F759D800050002;
+			E16C834B03F759D800050002 = E16C834B03F759D800050002;
+			E16C834C03F759D800050002 = E16C834C03F759D800050002;
+			E16C834D03F759D800050002 = E16C834D03F759D800050002;
+			E16C834E03F759D800050002 = E16C834E03F759D800050002;
+			E16C834F03F759D800050002 = E16C834F03F759D800050002;
+			E16C835803F759D800050002 = E16C835803F759D800050002;
+			E16C835903F759D800050002 = E16C835903F759D800050002;
+			E16C835A03F759D800050002 = E16C835A03F759D800050002;
+			E16C835B03F759D800050002 = E16C835B03F759D800050002;
+			E16C835C03F759D800050002 = E16C835C03F759D800050002;
+			E16C835D03F759D800050002 = E16C835D03F759D800050002;
+			E16C835E03F759D800050002 = E16C835E03F759D800050002;
+			E16C835F03F759D800050002 = E16C835F03F759D800050002;
+			E16C836003F759D800050002 = E16C836003F759D800050002;
+			E16C836203F759D800050002 = E16C836203F759D800050002;
+			E16C836403F759D800050002 = E16C836403F759D800050002;
+			E16C836503F759D800050002 = E16C836503F759D800050002;
+			E16C836603F759D800050002 = E16C836603F759D800050002;
+			E16C836703F759D800050002 = E16C836703F759D800050002;
+			E16C836803F759D800050002 = E16C836803F759D800050002;
+			E16C836903F759D800050002 = E16C836903F759D800050002;
+			E16C836A03F759D800050002 = E16C836A03F759D800050002;
+			E16C836B03F759D800050002 = E16C836B03F759D800050002;
+			E16C836C03F759D800050002 = E16C836C03F759D800050002;
+			E16C836D03F759D800050002 = E16C836D03F759D800050002;
+			E16C836E03F759D800050002 = E16C836E03F759D800050002;
+			E16C836F03F759D800050002 = E16C836F03F759D800050002;
+			E16C837003F759D800050002 = E16C837003F759D800050002;
+			E16C837103F759D800050002 = E16C837103F759D800050002;
+			E16C837203F759D800050002 = E16C837203F759D800050002;
+			E16C837303F759D800050002 = E16C837303F759D800050002;
+			E16C837403F759D800050002 = E16C837403F759D800050002;
+			E16C837503F759D800050002 = E16C837503F759D800050002;
+			E16C837603F759D800050002 = E16C837603F759D800050002;
+			E16C837703F759D800050002 = E16C837703F759D800050002;
+			E16C837803F759D800050002 = E16C837803F759D800050002;
+			E16C837903F759D800050002 = E16C837903F759D800050002;
+			E16C837A03F759D800050002 = E16C837A03F759D800050002;
+			E16C837B03F759D800050002 = E16C837B03F759D800050002;
+			E16C837C03F759D800050002 = E16C837C03F759D800050002;
+			E16C837D03F759D800050002 = E16C837D03F759D800050002;
+			E16C837E03F759D800050002 = E16C837E03F759D800050002;
+			E16C837F03F759D800050002 = E16C837F03F759D800050002;
+			E16C838003F759D800050002 = E16C838003F759D800050002;
+			E16C838103F759D800050002 = E16C838103F759D800050002;
+			E16C838203F759D800050002 = E16C838203F759D800050002;
+			E16C838303F759D800050002 = E16C838303F759D800050002;
+			E16C838403F759D800050002 = E16C838403F759D800050002;
+			E16C838503F759D800050002 = E16C838503F759D800050002;
+			E16C838603F759D800050002 = E16C838603F759D800050002;
+			E16C838703F759D800050002 = E16C838703F759D800050002;
+			E16C838803F759D800050002 = E16C838803F759D800050002;
+			E16C838903F759D800050002 = E16C838903F759D800050002;
+			E16C838A03F759D800050002 = E16C838A03F759D800050002;
+			E16C838C03F759D800050002 = E16C838C03F759D800050002;
+			E16C838D03F759D800050002 = E16C838D03F759D800050002;
+			E16C838E03F759D800050002 = E16C838E03F759D800050002;
+			E16C838F03F759D800050002 = E16C838F03F759D800050002;
+			E16C839003F759D800050002 = E16C839003F759D800050002;
+			E16C839103F759D800050002 = E16C839103F759D800050002;
+			E16C839203F759D800050002 = E16C839203F759D800050002;
+			E16C839303F759D800050002 = E16C839303F759D800050002;
+			E16C839503F759D800050002 = E16C839503F759D800050002;
+			E16C839603F759D800050002 = E16C839603F759D800050002;
+			E16C839703F759D800050002 = E16C839703F759D800050002;
+			E16C839803F759D800050002 = E16C839803F759D800050002;
+			E16C839903F759D800050002 = E16C839903F759D800050002;
+			E16C839A03F759D800050002 = E16C839A03F759D800050002;
+			E16C839B03F759D800050002 = E16C839B03F759D800050002;
+			E16C839C03F759D800050002 = E16C839C03F759D800050002;
+			E16C839D03F759D800050002 = E16C839D03F759D800050002;
+			E16C839E03F759D800050002 = E16C839E03F759D800050002;
+			E16C83A003F759D800050002 = E16C83A003F759D800050002;
+			E16C83A203F759D800050002 = E16C83A203F759D800050002;
+			E16C83A303F759D800050002 = E16C83A303F759D800050002;
+			E16C83A403F759D800050002 = E16C83A403F759D800050002;
+			E16C83A503F759D800050002 = E16C83A503F759D800050002;
+			E16C83A603F759D800050002 = E16C83A603F759D800050002;
+			E16C83A703F759D800050002 = E16C83A703F759D800050002;
+			E16C83A803F759D800050002 = E16C83A803F759D800050002;
+			E16C83A903F759D800050002 = E16C83A903F759D800050002;
+			E16C842703FB6A7200050002 = E16C842703FB6A7200050002;
+			E1937CF1040C300300050002 = E1937CF1040C300300050002;
+			E1937CF2040C300300050002 = E1937CF2040C300300050002;
+			E1ABE98F040D4E8F00050002 = E1ABE98F040D4E8F00050002;
+			E1ABE990040D4E8F00050002 = E1ABE990040D4E8F00050002;
+			E1ABE991040D4E8F00050002 = E1ABE991040D4E8F00050002;
+			E1ABE993040D4E8F00050002 = E1ABE993040D4E8F00050002;
+			E1ABE994040D4E8F00050002 = E1ABE994040D4E8F00050002;
+			E1ABE995040D4E8F00050002 = E1ABE995040D4E8F00050002;
+			E1ABE996040D4E8F00050002 = E1ABE996040D4E8F00050002;
+			E1ABE997040D4E8F00050002 = E1ABE997040D4E8F00050002;
+			E1ABE998040D4E8F00050002 = E1ABE998040D4E8F00050002;
+			E1ABE999040D4E8F00050002 = E1ABE999040D4E8F00050002;
+			E1ABE99D040D623300050002 = E1ABE99D040D623300050002;
+			E1ABE99E040D623300050002 = E1ABE99E040D623300050002;
+			E1BFDA5C0418987900050002 = E1BFDA5C0418987900050002;
+			E1BFDA5D0418987900050002 = E1BFDA5D0418987900050002;
+			E1C59B0403FDE6DD00050002 = E1C59B0403FDE6DD00050002;
+			E1DEF10F03FF95C900050002 = E1DEF10F03FF95C900050002;
+			E1DEF11003FF95C900050002 = E1DEF11003FF95C900050002;
+			E1DEF11103FF95C900050002 = E1DEF11103FF95C900050002;
+			E1EAD74C0419ECC600050002 = E1EAD74C0419ECC600050002;
+			E1EAD74D0419ECC600050002 = E1EAD74D0419ECC600050002;
+			E1EAD74E0419ECC600050002 = E1EAD74E0419ECC600050002;
+			E1EAD7500419ECC600050002 = E1EAD7500419ECC600050002;
+			E1EAD7520419ECC600050002 = E1EAD7520419ECC600050002;
+			E1F6E3AF040BD0C700050002 = E1F6E3AF040BD0C700050002;
+			E1F6E3B0040BD0C700050002 = E1F6E3B0040BD0C700050002;
+			E1F6E3B1040BD0C700050002 = E1F6E3B1040BD0C700050002;
+			E1F7C3BE041B372700FEF34D = E1F7C3BE041B372700FEF34D;
+			E1F7C3C0041B372700FEF34D = E1F7C3C0041B372700FEF34D;
+			E1F7C3C2041B372700FEF34D = E1F7C3C2041B372700FEF34D;
+			E1F7C3C3041B372700FEF34D = E1F7C3C3041B372700FEF34D;
+			E1F7C3C4041B372700FEF34D = E1F7C3C4041B372700FEF34D;
+			E1F7C3C5041B372700FEF34D = E1F7C3C5041B372700FEF34D;
+			E1F7C3C6041B372700FEF34D = E1F7C3C6041B372700FEF34D;
+			E1F7C3C7041B372700FEF34D = E1F7C3C7041B372700FEF34D;
+			E1F7C3C8041B372700FEF34D = E1F7C3C8041B372700FEF34D;
+			E1F7C3C9041B372700FEF34D = E1F7C3C9041B372700FEF34D;
+			E1F7C3CA041B372700FEF34D = E1F7C3CA041B372700FEF34D;
+			E1F7C3CB041B372700FEF34D = E1F7C3CB041B372700FEF34D;
+			E1F7C604041B3F8300FEF34D = E1F7C604041B3F8300FEF34D;
+			E1F7C607041B3F8300FEF34D = E1F7C607041B3F8300FEF34D;
+			E1F7C608041B3F8300FEF34D = E1F7C608041B3F8300FEF34D;
+			E1F7C60D041B404E00FEF34D = E1F7C60D041B404E00FEF34D;
+			E1F7C60E041B404E00FEF34D = E1F7C60E041B404E00FEF34D;
+			E1F7C60F041B404E00FEF34D = E1F7C60F041B404E00FEF34D;
+			E1F7C610041B404E00FEF34D = E1F7C610041B404E00FEF34D;
+			E1F7C611041B404E00FEF34D = E1F7C611041B404E00FEF34D;
+			E1F7C612041B404E00FEF34D = E1F7C612041B404E00FEF34D;
+		};
+		projectwideBuildSettings = {
+		};
+		userBookmarkGroup = E182C8ED03DE6ED300050002;
+		wantsIndex = 1;
+		wantsSCM = -1;
+	};
+	E104851C040C1E3900050002 = {
+		activeArgIndex = 0;
+		activeArgIndices = (
+			YES,
+		);
+		argumentStrings = (
+			"-AppleLanguages '(ja, en)'",
+		);
+		configStateDict = {
+			"PBXLSLaunchAction-0" = {
+				PBXLSLaunchAction = 0;
+				PBXLSLaunchStartAction = 1;
+				PBXLSLaunchStdioStyle = 1;
+				PBXLSLaunchStyle = 0;
+				class = PBXLSRunLaunchConfig;
+				identifier = com.apple.ProjectBuilder.launch.runConfig;
+				remoteHostInfo = "";
+				startActionInfo = "";
+			};
+		};
+		debuggerPlugin = GDBDebugging;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+		);
+		isa = PBXExecutable;
+		launchableReference = E104851D040C1E3900050002;
+		name = "テキストエディット";
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	E104851D040C1E3900050002 = {
+		isa = PBXApplicationReference;
+		name = TextEdit.app;
+		path = /Applications/TextEdit.app;
+		refType = 0;
+	};
+	E11854FB03F27D4A00050002 = {
+		fRef = E118554503F27D4A00050002;
+		glyphRangeLength = 1141;
+		glyphRangeLocation = 6672;
+		isa = PBXDocBookmark;
+		name = "Editing_Data.html: boundary but...";
+	};
+	E11854FC03F27D4A00050002 = {
+		fRef = E118554603F27D4A00050002;
+		isa = PBXTextBookmark;
+		name = "MacTextEditor.h: 2223";
+		rLen = 0;
+		rLoc = 77465;
+		rType = 0;
+		vrLen = 1220;
+		vrLoc = 76924;
+	};
+	E11854FE03F27D4A00050002 = {
+		fRef = E118554803F27D4A00050002;
+		isa = PBXTextBookmark;
+		name = "CFArray.h: 559";
+		rLen = 73;
+		rLoc = 26275;
+		rType = 0;
+		vrLen = 2097;
+		vrLoc = 25238;
+	};
+	E11854FF03F27D4A00050002 = {
+		fRef = E118554903F27D4A00050002;
+		isa = PBXTextBookmark;
+		name = "MacErrors.h: 70";
+		rLen = 0;
+		rLoc = 2869;
+		rType = 0;
+		vrLen = 3114;
+		vrLoc = 1688;
+	};
+	E118550003F27D4A00050002 = {
+		fRef = E118553803F27D4A00050002;
+		isa = PBXTextBookmark;
+		name = "CFString.h: 329";
+		rLen = 7;
+		rLoc = 16745;
+		rType = 0;
+		vrLen = 2332;
+		vrLoc = 15554;
+	};
+	E118550203F27D4A00050002 = {
+		fRef = E118553A03F27D4A00050002;
+		isa = PBXTextBookmark;
+		name = "CFBase.h: 174";
+		rLen = 56;
+		rLoc = 4344;
+		rType = 0;
+		vrLen = 1961;
+		vrLoc = 4409;
+	};
+	E118550303F27D4A00050002 = {
+		fRef = E118553B03F27D4A00050002;
+		isa = PBXTextBookmark;
+		name = "CFDictionary.h: 630";
+		rLen = 0;
+		rLoc = 31495;
+		rType = 0;
+		vrLen = 2409;
+		vrLoc = 30254;
+	};
+	E118550603F27D4A00050002 = {
+		fRef = E118553C03F27D4A00050002;
+		isa = PBXTextBookmark;
+		name = "Processes.h: 103";
+		rLen = 21;
+		rLoc = 3167;
+		rType = 0;
+		vrLen = 2130;
+		vrLoc = 2876;
+	};
+	E118550703F27D4A00050002 = {
+		fRef = E118553D03F27D4A00050002;
+		glyphRangeLength = 1979;
+		glyphRangeLocation = 3056;
+		isa = PBXDocBookmark;
+		name = "Getting_Proc__Information.html: Get informat...";
+	};
+	E118550803F27D4A00050002 = {
+		fRef = E118553E03F27D4A00050002;
+		glyphRangeLength = 1502;
+		glyphRangeLocation = 0;
+		isa = PBXDocBookmark;
+		name = "ProcessInfoRec.html: PATHDocument...";
+	};
+	E118550903F27D4A00050002 = {
+		fRef = E118553F03F27D4A00050002;
+		glyphRangeLength = 2;
+		glyphRangeLocation = 4;
+		isa = PBXDocBookmark;
+		name = "carbon.html: ...";
+	};
+	E118550A03F27D4A00050002 = {
+		fRef = E118554203F27D4A00050002;
+		glyphRangeLength = 4;
+		glyphRangeLocation = 0;
+		isa = PBXDocBookmark;
+		name = "processmanager.html: ...";
+	};
+	E118550B03F27D4A00050002 = {
+		fRef = E118554303F27D4A00050002;
+		glyphRangeLength = 0;
+		glyphRangeLocation = 0;
+		isa = PBXDocBookmark;
+	};
+	E118550E03F27D4A00050002 = {
+		fRef = E11854F703F2709E00050002;
+		isa = PBXTextBookmark;
+		name = "CPS.h: kCPSUIElementAttr";
+		rLen = 17;
+		rLoc = 742;
+		rType = 0;
+		vrLen = 739;
+		vrLoc = 510;
+	};
+	E118551403F27D4A00050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: __VERSION__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1134;
+		vrLoc = 0;
+	};
+	E118551503F27D4A00050002 = {
+		fRef = E169DBA103E4EF5E00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETextEdit.c: 24";
+		rLen = 0;
+		rLoc = 675;
+		rType = 0;
+		vrLen = 1370;
+		vrLoc = 0;
+	};
+	E118551603F27D4A00050002 = {
+		fRef = E118553303F27D4A00050002;
+		isa = PBXTextBookmark;
+		name = "MacTextEditor.h: 2223";
+		rLen = 0;
+		rLoc = 77465;
+		rType = 0;
+		vrLen = 1220;
+		vrLoc = 76924;
+	};
+	E118551703F27D4A00050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: ICCF_DoURLActionMenu";
+		rLen = 0;
+		rLoc = 8343;
+		rType = 0;
+		vrLen = 1734;
+		vrLoc = 4975;
+	};
+	E118551903F27D4A00050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: ICCF_CompareURLsByItemTitle";
+		rLen = 0;
+		rLoc = 5869;
+		rType = 0;
+		vrLen = 1956;
+		vrLoc = 4897;
+	};
+	E118551A03F27D4A00050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 15";
+		rLen = 0;
+		rLoc = 304;
+		rType = 0;
+		vrLen = 1716;
+		vrLoc = 218;
+	};
+	E118551B03F27D4A00050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: 2";
+		rLen = 17;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 1334;
+		vrLoc = 0;
+	};
+	E118551C03F27D4A00050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: ICCF_AddAppItemTitle";
+		rLen = 0;
+		rLoc = 2939;
+		rType = 0;
+		vrLen = 1689;
+		vrLoc = 3599;
+	};
+	E118551E03F27D4A00050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: 2";
+		rLen = 17;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 1334;
+		vrLoc = 0;
+	};
+	E118551F03F27D4A00050002 = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: 16";
+		rLen = 0;
+		rLoc = 357;
+		rType = 0;
+		vrLen = 1491;
+		vrLoc = 0;
+	};
+	E118552003F27D4A00050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 23;
+		rLoc = 2811;
+		rType = 0;
+		vrLen = 2104;
+		vrLoc = 2026;
+	};
+	E118552203F27D4A00050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: 2";
+		rLen = 17;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 1334;
+		vrLoc = 0;
+	};
+	E118552303F27D4A00050002 = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: 16";
+		rLen = 0;
+		rLoc = 357;
+		rType = 0;
+		vrLen = 1491;
+		vrLoc = 0;
+	};
+	E118552403F27D4A00050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: ICCF_ReloadPrefs";
+		rLen = 0;
+		rLoc = 11603;
+		rType = 0;
+		vrLen = 1497;
+		vrLoc = 0;
+	};
+	E118552503F27D4A00050002 = {
+		fRef = E118553603F27D4A00050002;
+		isa = PBXTextBookmark;
+		name = "Processes.h: 103";
+		rLen = 21;
+		rLoc = 3167;
+		rType = 0;
+		vrLen = 2130;
+		vrLoc = 2876;
+	};
+	E118552603F27D4A00050002 = {
+		fRef = E118554103F27D4A00050002;
+		glyphRangeLength = 1979;
+		glyphRangeLocation = 3056;
+		isa = PBXDocBookmark;
+		name = "Getting_Proc__Information.html: Get informat...";
+	};
+	E118552703F27D4A00050002 = {
+		fRef = E118553703F27D4A00050002;
+		glyphRangeLength = 1502;
+		glyphRangeLocation = 0;
+		isa = PBXDocBookmark;
+		name = "ProcessInfoRec.html: PATHDocument...";
+	};
+	E118552803F27D4A00050002 = {
+		fRef = E118553503F27D4A00050002;
+		glyphRangeLength = 2;
+		glyphRangeLocation = 4;
+		isa = PBXDocBookmark;
+		name = "carbon.html: ...";
+	};
+	E118552903F27D4A00050002 = {
+		fRef = E118554003F27D4A00050002;
+		glyphRangeLength = 4;
+		glyphRangeLocation = 0;
+		isa = PBXDocBookmark;
+		name = "processmanager.html: ...";
+	};
+	E118552A03F27D4A00050002 = {
+		fRef = E118553403F27D4A00050002;
+		glyphRangeLength = 0;
+		glyphRangeLocation = 0;
+		isa = PBXDocBookmark;
+	};
+	E118552B03F27D4A00050002 = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: 16";
+		rLen = 0;
+		rLoc = 357;
+		rType = 0;
+		vrLen = 1491;
+		vrLoc = 0;
+	};
+	E118552C03F27D4A00050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: __PTRDIFF_TYPE__";
+		rLen = 0;
+		rLoc = 197;
+		rType = 0;
+		vrLen = 1599;
+		vrLoc = 0;
+	};
+	E118552D03F27D4A00050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 0;
+		rLoc = 3562;
+		rType = 0;
+		vrLen = 1824;
+		vrLoc = 1720;
+	};
+	E118552E03F27D4A00050002 = {
+		fRef = E11854F703F2709E00050002;
+		isa = PBXTextBookmark;
+		name = "CPS.h: kCPSUIElementAttr";
+		rLen = 17;
+		rLoc = 742;
+		rType = 0;
+		vrLen = 739;
+		vrLoc = 510;
+	};
+	E118552F03F27D4A00050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 0;
+		rLoc = 3555;
+		rType = 0;
+		vrLen = 1728;
+		vrLoc = 2080;
+	};
+	E118553103F27D4A00050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 0;
+		rLoc = 2569;
+		rType = 0;
+		vrLen = 1834;
+		vrLoc = 1604;
+	};
+	E118553303F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = MacTextEditor.h;
+		path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/MacTextEditor.h;
+		refType = 0;
+	};
+	E118553403F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = index.html;
+		path = /Developer/Documentation/Carbon/oss/ProcessManager/Process_Manager/index.html;
+		refType = 0;
+	};
+	E118553503F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = carbon.html;
+		path = /Developer/Documentation/Carbon/carbon.html;
+		refType = 0;
+	};
+	E118553603F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = Processes.h;
+		path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Processes.h;
+		refType = 0;
+	};
+	E118553703F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = ProcessInfoRec.html;
+		path = /Developer/Documentation/Carbon/oss/ProcessManager/Process_Manager/DataTypes/ProcessInfoRec.html;
+		refType = 0;
+	};
+	E118553803F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = CFString.h;
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFString.h;
+		refType = 0;
+	};
+	E118553A03F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = CFBase.h;
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBase.h;
+		refType = 0;
+	};
+	E118553B03F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = CFDictionary.h;
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFDictionary.h;
+		refType = 0;
+	};
+	E118553C03F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = Processes.h;
+		path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/Processes.h;
+		refType = 0;
+	};
+	E118553D03F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = Getting_Proc__Information.html;
+		path = /Developer/Documentation/Carbon/oss/ProcessManager/Process_Manager/Functions/Getting_Proc__Information.html;
+		refType = 0;
+	};
+	E118553E03F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = ProcessInfoRec.html;
+		path = /Developer/Documentation/Carbon/oss/ProcessManager/Process_Manager/DataTypes/ProcessInfoRec.html;
+		refType = 0;
+	};
+	E118553F03F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = carbon.html;
+		path = /Developer/Documentation/Carbon/carbon.html;
+		refType = 0;
+	};
+	E118554003F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = processmanager.html;
+		path = /Developer/Documentation/Carbon/oss/ProcessManager/processmanager.html;
+		refType = 0;
+	};
+	E118554103F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = Getting_Proc__Information.html;
+		path = /Developer/Documentation/Carbon/oss/ProcessManager/Process_Manager/Functions/Getting_Proc__Information.html;
+		refType = 0;
+	};
+	E118554203F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = processmanager.html;
+		path = /Developer/Documentation/Carbon/oss/ProcessManager/processmanager.html;
+		refType = 0;
+	};
+	E118554303F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = index.html;
+		path = /Developer/Documentation/Carbon/oss/ProcessManager/Process_Manager/index.html;
+		refType = 0;
+	};
+	E118554503F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = Editing_Data.html;
+		path = /Developer/Documentation/Carbon/text/MultilingualTextEngine/Multilingual_Text_Engine/Functions/Editing_Data.html;
+		refType = 0;
+	};
+	E118554603F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = MacTextEditor.h;
+		path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/MacTextEditor.h;
+		refType = 0;
+	};
+	E118554803F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = CFArray.h;
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFArray.h;
+		refType = 0;
+	};
+	E118554903F27D4A00050002 = {
+		isa = PBXFileReference;
+		name = MacErrors.h;
+		path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacErrors.h;
+		refType = 0;
+	};
+	E120348303EDEBC100000ABE = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: __VERSION__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1401;
+		vrLoc = 0;
+	};
+	E120348403EDEBC100000ABE = {
+		fRef = E1BF15BD03DBBD3E00050002;
+		isa = PBXTextBookmark;
+		name = "package-ICeCoffEE.sh: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1161;
+		vrLoc = 0;
+	};
+	E120348503EDEBC100000ABE = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 230;
+		vrLoc = 0;
+	};
+	E120348703EDEBC100000ABE = {
+		fRef = E1BF166A03DBE27000050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEWebKit.m: __VERSION__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 797;
+		vrLoc = 0;
+	};
+	E120348803EDEBC100000ABE = {
+		fRef = E169DBA103E4EF5E00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETextEdit.c: __VERSION__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1370;
+		vrLoc = 0;
+	};
+	E120348903EDEBC100000ABE = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: mousePoint";
+		rLen = 0;
+		rLoc = 10057;
+		rType = 0;
+		vrLen = 1513;
+		vrLoc = 6908;
+	};
+	E120348A03EDEBC100000ABE = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 230;
+		vrLoc = 0;
+	};
+	E120348B03EDEBC100000ABE = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 33";
+		rLen = 0;
+		rLoc = 744;
+		rType = 0;
+		vrLen = 878;
+		vrLoc = 0;
+	};
+	E120348C03EDEBC100000ABE = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: ICCF_DoURLActionMenu";
+		rLen = 0;
+		rLoc = 10057;
+		rType = 0;
+		vrLen = 1275;
+		vrLoc = 8163;
+	};
+	E120348D03EDEBC100000ABE = {
+		fRef = E13762D203EC636D00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEBookmarks.c: ICCF_DoBookmarkDialog";
+		rLen = 70;
+		rLoc = 6829;
+		rType = 0;
+		vrLen = 1743;
+		vrLoc = 5828;
+	};
+	E120D6A90419601400050002 = {
+		fRef = E1F6E3AC040BCC5700050002;
+		isa = PBXTextBookmark;
+		name = "Japanese: 99";
+		rLen = 0;
+		rLoc = 2831;
+		rType = 0;
+		vrLen = 1065;
+		vrLoc = 1735;
+	};
+	E120D6AA0419601400050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 74";
+		rLen = 0;
+		rLoc = 3276;
+		rType = 0;
+		vrLen = 1772;
+		vrLoc = 0;
+	};
+	E120D7B00419702800050002 = {
+		fileReference = E14343B403DB4CF200050002;
+		isa = PBXFileBreakpoint;
+		lineNumber = 467;
+		state = 1;
+	};
+	E120D7B20419848000050002 = {
+		fRef = E120D81C0419848000050002;
+		isa = PBXTextBookmark;
+		name = "InternetConfig.h: 1379";
+		rLen = 273;
+		rLoc = 46035;
+		rType = 0;
+		vrLen = 1573;
+		vrLoc = 44849;
+	};
+	E120D7B30419848000050002 = {
+		fRef = E120D81A0419848000050002;
+		isa = PBXTextBookmark;
+		name = "LaunchServices.h: 152";
+		rLen = 19;
+		rLoc = 6231;
+		rType = 0;
+		vrLen = 2209;
+		vrLoc = 4831;
+	};
+	E120D7B40419848000050002 = {
+		fRef = E1BF166A03DBE27000050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEWebKit.m: mouseUp:";
+		rLen = 0;
+		rLoc = 4135;
+		rType = 0;
+		vrLen = 1987;
+		vrLoc = 3021;
+	};
+	E120D7BB0419848000050002 = {
+		fRef = E120D81B0419848000050002;
+		isa = PBXTextBookmark;
+		name = "NSEvent.h: 81";
+		rLen = 13;
+		rLoc = 2409;
+		rType = 0;
+		vrLen = 1424;
+		vrLoc = 2875;
+	};
+	E120D7BE0419848000050002 = {
+		fRef = E1317B2F03DFC4DE00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETerminal.m: rangeWithTerminal:pt0:pt1:";
+		rLen = 0;
+		rLoc = 13717;
+		rType = 0;
+		vrLen = 1580;
+		vrLoc = 13504;
+	};
+	E120D7BF0419848000050002 = {
+		fRef = E169DBA103E4EF5E00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETextEdit.c: ICCF_LaunchURLFromTEClick";
+		rLen = 0;
+		rLoc = 2774;
+		rType = 0;
+		vrLen = 1569;
+		vrLoc = 7157;
+	};
+	E120D7C20419848000050002 = {
+		fRef = E1BF15BF03DBBE8900050002;
+		isa = PBXTextBookmark;
+		name = "VERSION: 1";
+		rLen = 0;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 8;
+		vrLoc = 0;
+	};
+	E120D7C60419848000050002 = {
+		fRef = E1BF15A403DBAA5600050002;
+		isa = PBXTextBookmark;
+		name = "Preinstall.sh: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 66;
+		vrLoc = 0;
+	};
+	E120D7C70419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: 235";
+		rLen = 14;
+		rLoc = 8128;
+		rType = 0;
+		vrLen = 1346;
+		vrLoc = 7580;
+	};
+	E120D7C80419848000050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 59";
+		rLen = 0;
+		rLoc = 1644;
+		rType = 0;
+		vrLen = 1507;
+		vrLoc = 456;
+	};
+	E120D7C90419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 236";
+		rLen = 0;
+		rLoc = 9571;
+		rType = 0;
+		vrLen = 2000;
+		vrLoc = 5764;
+	};
+	E120D7CA0419848000050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 59";
+		rLen = 0;
+		rLoc = 1644;
+		rType = 0;
+		vrLen = 1507;
+		vrLoc = 456;
+	};
+	E120D7CB0419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 319;
+		vrLoc = 0;
+	};
+	E120D7CC0419848000050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 45";
+		rLen = 0;
+		rLoc = 970;
+		rType = 0;
+		vrLen = 1507;
+		vrLoc = 456;
+	};
+	E120D7CD0419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: 271";
+		rLen = 0;
+		rLoc = 9222;
+		rType = 0;
+		vrLen = 1378;
+		vrLoc = 8100;
+	};
+	E120D7CE0419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 236";
+		rLen = 0;
+		rLoc = 9571;
+		rType = 0;
+		vrLen = 2062;
+		vrLoc = 5702;
+	};
+	E120D7CF0419848000050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 42";
+		rLen = 0;
+		rLoc = 970;
+		rType = 0;
+		vrLen = 1650;
+		vrLoc = 313;
+	};
+	E120D7D00419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 19";
+		rLen = 0;
+		rLoc = 387;
+		rType = 0;
+		vrLen = 428;
+		vrLoc = 0;
+	};
+	E120D7D10419848000050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 53";
+		rLen = 0;
+		rLoc = 1644;
+		rType = 0;
+		vrLen = 1672;
+		vrLoc = 262;
+	};
+	E120D7D20419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 19";
+		rLen = 0;
+		rLoc = 536;
+		rType = 0;
+		vrLen = 450;
+		vrLoc = 0;
+	};
+	E120D7D30419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 236";
+		rLen = 0;
+		rLoc = 9571;
+		rType = 0;
+		vrLen = 2061;
+		vrLoc = 5702;
+	};
+	E120D7D40419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 19";
+		rLen = 141;
+		rLoc = 362;
+		rType = 0;
+		vrLen = 450;
+		vrLoc = 0;
+	};
+	E120D7D50419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 168";
+		rLen = 0;
+		rLoc = 6404;
+		rType = 0;
+		vrLen = 1787;
+		vrLoc = 4626;
+	};
+	E120D7D60419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 19";
+		rLen = 141;
+		rLoc = 362;
+		rType = 0;
+		vrLen = 450;
+		vrLoc = 0;
+	};
+	E120D7D70419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 168";
+		rLen = 0;
+		rLoc = 6404;
+		rType = 0;
+		vrLen = 1766;
+		vrLoc = 5696;
+	};
+	E120D7D80419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 19";
+		rLen = 141;
+		rLoc = 362;
+		rType = 0;
+		vrLen = 450;
+		vrLoc = 0;
+	};
+	E120D7D90419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 181";
+		rLen = 0;
+		rLoc = 6405;
+		rType = 0;
+		vrLen = 1734;
+		vrLoc = 5426;
+	};
+	E120D7DA0419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 19";
+		rLen = 141;
+		rLoc = 362;
+		rType = 0;
+		vrLen = 450;
+		vrLoc = 0;
+	};
+	E120D7DB0419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 172";
+		rLen = 0;
+		rLoc = 6404;
+		rType = 0;
+		vrLen = 1591;
+		vrLoc = 5979;
+	};
+	E120D7DD0419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 168";
+		rLen = 0;
+		rLoc = 6404;
+		rType = 0;
+		vrLen = 1769;
+		vrLoc = 5426;
+	};
+	E120D7DE0419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 19";
+		rLen = 141;
+		rLoc = 362;
+		rType = 0;
+		vrLen = 450;
+		vrLoc = 0;
+	};
+	E120D7DF0419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 170";
+		rLen = 0;
+		rLoc = 6404;
+		rType = 0;
+		vrLen = 1751;
+		vrLoc = 5771;
+	};
+	E120D7E00419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 19";
+		rLen = 141;
+		rLoc = 362;
+		rType = 0;
+		vrLen = 450;
+		vrLoc = 0;
+	};
+	E120D7E10419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 170";
+		rLen = 0;
+		rLoc = 6404;
+		rType = 0;
+		vrLen = 1549;
+		vrLoc = 6505;
+	};
+	E120D7E20419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 15";
+		rLen = 0;
+		rLoc = 362;
+		rType = 0;
+		vrLen = 448;
+		vrLoc = 0;
+	};
+	E120D7E30419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 288";
+		rLen = 20;
+		rLoc = 11863;
+		rType = 0;
+		vrLen = 1364;
+		vrLoc = 11304;
+	};
+	E120D7E40419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: 273";
+		rLen = 0;
+		rLoc = 9439;
+		rType = 0;
+		vrLen = 1388;
+		vrLoc = 7627;
+	};
+	E120D7E50419848000050002 = {
+		fRef = E14343B303DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.h: ICCF_LaunchURL";
+		rLen = 61;
+		rLoc = 1699;
+		rType = 0;
+		vrLen = 1753;
+		vrLoc = 0;
+	};
+	E120D7E60419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.h: 12";
+		rLen = 0;
+		rLoc = 362;
+		rType = 0;
+		vrLen = 337;
+		vrLoc = 0;
+	};
+	E120D7E70419848000050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 30";
+		rLen = 0;
+		rLoc = 716;
+		rType = 0;
+		vrLen = 1321;
+		vrLoc = 0;
+	};
+	E120D7E80419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.h: 2";
+		rLen = 0;
+		rLoc = 22;
+		rType = 0;
+		vrLen = 444;
+		vrLoc = 0;
+	};
+	E120D7E90419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.c: 2";
+		rLen = 0;
+		rLoc = 22;
+		rType = 0;
+		vrLen = 1768;
+		vrLoc = 0;
+	};
+	E120D7EA0419848000050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 10";
+		rLen = 54;
+		rLoc = 164;
+		rType = 0;
+		vrLen = 1267;
+		vrLoc = 0;
+	};
+	E120D7EB0419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.h: 11";
+		rLen = 0;
+		rLoc = 217;
+		rType = 0;
+		vrLen = 499;
+		vrLoc = 0;
+	};
+	E120D7EC0419848000050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 59";
+		rLen = 31;
+		rLoc = 1932;
+		rType = 0;
+		vrLen = 1672;
+		vrLoc = 291;
+	};
+	E120D7ED0419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.h: 24";
+		rLen = 0;
+		rLoc = 533;
+		rType = 0;
+		vrLen = 532;
+		vrLoc = 0;
+	};
+	E120D7EE0419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: 24";
+		rLen = 0;
+		rLoc = 643;
+		rType = 0;
+		vrLen = 1454;
+		vrLoc = 0;
+	};
+	E120D7EF0419848000050002 = {
+		fRef = E14343B303DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.h: ICCF_LaunchURL";
+		rLen = 61;
+		rLoc = 1699;
+		rType = 0;
+		vrLen = 1753;
+		vrLoc = 0;
+	};
+	E120D7F00419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.h: 24";
+		rLen = 0;
+		rLoc = 533;
+		rType = 0;
+		vrLen = 532;
+		vrLoc = 0;
+	};
+	E120D7F10419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: ICCF_OptionKeyIsDown";
+		rLen = 0;
+		rLoc = 2084;
+		rType = 0;
+		vrLen = 1860;
+		vrLoc = 1421;
+	};
+	E120D7F20419848000050002 = {
+		fRef = E14343B303DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.h: 25";
+		rLen = 0;
+		rLoc = 1132;
+		rType = 0;
+		vrLen = 1761;
+		vrLoc = 0;
+	};
+	E120D7F30419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: ICCF_OptionKeyIsDown";
+		rLen = 0;
+		rLoc = 2084;
+		rType = 0;
+		vrLen = 1920;
+		vrLoc = 1361;
+	};
+	E120D7F40419848000050002 = {
+		fRef = E14343B303DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.h: ICCF_OptionKeyIsDown";
+		rLen = 37;
+		rLoc = 1133;
+		rType = 0;
+		vrLen = 1761;
+		vrLoc = 0;
+	};
+	E120D7F50419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: ICCF_LaunchURLFromTextView";
+		rLen = 0;
+		rLoc = 13988;
+		rType = 0;
+		vrLen = 1964;
+		vrLoc = 12949;
+	};
+	E120D7F60419848000050002 = {
+		fRef = E1BF166A03DBE27000050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEWebKit.m: mouseUp:";
+		rLen = 0;
+		rLoc = 4135;
+		rType = 0;
+		vrLen = 1987;
+		vrLoc = 3021;
+	};
+	E120D7F70419848000050002 = {
+		fRef = E1317B2F03DFC4DE00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETerminal.m: ICCF_LaunchURLFromTerminal";
+		rLen = 0;
+		rLoc = 13039;
+		rType = 0;
+		vrLen = 1520;
+		vrLoc = 12283;
+	};
+	E120D7F80419848000050002 = {
+		fRef = E169DBA103E4EF5E00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETextEdit.c: ICCF_DoCommandClick";
+		rLen = 91;
+		rLoc = 7052;
+		rType = 0;
+		vrLen = 1987;
+		vrLoc = 6157;
+	};
+	E120D7F90419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.c: ICCF_DoURLAction";
+		rLen = 28;
+		rLoc = 12456;
+		rType = 0;
+		vrLen = 1408;
+		vrLoc = 11292;
+	};
+	E120D7FA0419848000050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.h: 24";
+		rLen = 0;
+		rLoc = 533;
+		rType = 0;
+		vrLen = 536;
+		vrLoc = 0;
+	};
+	E120D7FB0419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.c: ICCF_DoURLAction";
+		rLen = 0;
+		rLoc = 12574;
+		rType = 0;
+		vrLen = 1408;
+		vrLoc = 11292;
+	};
+	E120D7FC0419848000050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 59";
+		rLen = 31;
+		rLoc = 1932;
+		rType = 0;
+		vrLen = 1672;
+		vrLoc = 291;
+	};
+	E120D7FD0419848000050002 = {
+		fRef = E14343B303DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.h: ICCF_KeyboardAction";
+		rLen = 0;
+		rLoc = 1152;
+		rType = 0;
+		vrLen = 1761;
+		vrLoc = 0;
+	};
+	E120D7FE0419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: ICCF_LaunchURLFromTextView";
+		rLen = 0;
+		rLoc = 13988;
+		rType = 0;
+		vrLen = 1964;
+		vrLoc = 12949;
+	};
+	E120D7FF0419848000050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 0;
+		rLoc = 5766;
+		rType = 0;
+		vrLen = 2172;
+		vrLoc = 4486;
+	};
+	E120D8000419848000050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: 16";
+		rLen = 0;
+		rLoc = 305;
+		rType = 0;
+		vrLen = 1308;
+		vrLoc = 0;
+	};
+	E120D8010419848000050002 = {
+		fRef = E14343B303DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.h: ICCF_KeyboardAction";
+		rLen = 0;
+		rLoc = 1152;
+		rType = 0;
+		vrLen = 1761;
+		vrLoc = 0;
+	};
+	E120D8020419848000050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: 16";
+		rLen = 0;
+		rLoc = 297;
+		rType = 0;
+		vrLen = 1308;
+		vrLoc = 0;
+	};
+	E120D8030419848000050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 0;
+		rLoc = 6165;
+		rType = 0;
+		vrLen = 2182;
+		vrLoc = 4486;
+	};
+	E120D8040419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: ICCF_EventIsCommandMouseDown";
+		rLen = 0;
+		rLoc = 1982;
+		rType = 0;
+		vrLen = 1835;
+		vrLoc = 1075;
+	};
+	E120D8050419848000050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: ICCF_WEBKIT";
+		rLen = 0;
+		rLoc = 297;
+		rType = 0;
+		vrLen = 1308;
+		vrLoc = 0;
+	};
+	E120D8060419848000050002 = {
+		fRef = E14343B303DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.h: ICCF_KeyboardAction";
+		rLen = 0;
+		rLoc = 1152;
+		rType = 0;
+		vrLen = 1761;
+		vrLoc = 0;
+	};
+	E120D8070419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: ICCF_EventIsCommandMouseDown";
+		rLen = 0;
+		rLoc = 2050;
+		rType = 0;
+		vrLen = 1889;
+		vrLoc = 1075;
+	};
+	E120D8080419848000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.c: lsSpec";
+		rLen = 0;
+		rLoc = 10724;
+		rType = 0;
+		vrLen = 1710;
+		vrLoc = 9859;
+	};
+	E120D80A0419848000050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: mouseDown:";
+		rLen = 0;
+		rLoc = 18064;
+		rType = 0;
+		vrLen = 1490;
+		vrLoc = 17658;
+	};
+	E120D80C0419848000050002 = {
+		fRef = E1317B2F03DFC4DE00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETerminal.m: rangeWithTerminal:pt0:pt1:";
+		rLen = 0;
+		rLoc = 13717;
+		rType = 0;
+		vrLen = 1580;
+		vrLoc = 13504;
+	};
+	E120D80D0419848000050002 = {
+		fRef = E169DBA103E4EF5E00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETextEdit.c: ICCF_LaunchURLFromTEClick";
+		rLen = 0;
+		rLoc = 2774;
+		rType = 0;
+		vrLen = 1569;
+		vrLoc = 7157;
+	};
+	E120D80F0419848000050002 = {
+		fRef = E140C475040BB997009FF178;
+		isa = PBXTextBookmark;
+		name = "Japanese: 48";
+		rLen = 0;
+		rLoc = 2166;
+		rType = 0;
+		vrLen = 0;
+		vrLoc = 10546;
+	};
+	E120D8110419848000050002 = {
+		isa = PBXTargetBookmark;
+		trg = F5CD5E9D02DAE2C901AA4DA5;
+	};
+	E120D8130419848000050002 = {
+		isa = PBXTargetBookmark;
+		trg = F5CD5E9D02DAE2C901AA4DA5;
+	};
+	E120D8140419848000050002 = {
+		fRef = E1BF15BF03DBBE8900050002;
+		isa = PBXTextBookmark;
+		name = "VERSION: 1";
+		rLen = 0;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 8;
+		vrLoc = 0;
+	};
+	E120D8150419848000050002 = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	E120D8160419848000050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 96";
+		rLen = 0;
+		rLoc = 3113;
+		rType = 0;
+		vrLen = 1386;
+		vrLoc = 0;
+	};
+	E120D8170419848000050002 = {
+		isa = PBXTargetBookmark;
+		trg = F5CD5E9D02DAE2C901AA4DA5;
+	};
+	E120D8180419848000050002 = {
+		fRef = E1BF15A403DBAA5600050002;
+		isa = PBXTextBookmark;
+		name = "Preinstall.sh: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 66;
+		vrLoc = 0;
+	};
+	E120D81A0419848000050002 = {
+		isa = PBXFileReference;
+		name = LaunchServices.h;
+		path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LaunchServices.framework/Versions/A/Headers/LaunchServices.h;
+		refType = 0;
+	};
+	E120D81B0419848000050002 = {
+		isa = PBXFileReference;
+		name = NSEvent.h;
+		path = /System/Library/Frameworks/AppKit.framework/Versions/C/Headers/NSEvent.h;
+		refType = 0;
+	};
+	E120D81C0419848000050002 = {
+		isa = PBXFileReference;
+		name = InternetConfig.h;
+		path = /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/HIServices.framework/Versions/A/Headers/InternetConfig.h;
+		refType = 0;
+	};
+	E1293A51042165F100050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 46";
+		rLen = 0;
+		rLoc = 1513;
+		rType = 0;
+		vrLen = 1594;
+		vrLoc = 640;
+	};
+	E1293A52042165F100050002 = {
+		fRef = E13762D203EC636D00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEBookmarks.c: 147";
+		rLen = 0;
+		rLoc = 4983;
+		rType = 0;
+		vrLen = 1626;
+		vrLoc = 4115;
+	};
+	E1293A57042181EB00050002 = {
+		fRef = E140C475040BB997009FF178;
+		isa = PBXTextBookmark;
+		name = "Japanese: 243";
+		rLen = 0;
+		rLoc = 9732;
+		rType = 0;
+		vrLen = 887;
+		vrLoc = 5118;
+	};
+	E1293A5A042181EB00050002 = {
+		fRef = E140C475040BB997009FF178;
+		isa = PBXTextBookmark;
+		name = "Japanese: 243";
+		rLen = 0;
+		rLoc = 9732;
+		rType = 0;
+		vrLen = 887;
+		vrLoc = 5118;
+	};
+	E1293A5B042181EB00050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 7";
+		rLen = 31;
+		rLoc = 214;
+		rType = 0;
+		vrLen = 1386;
+		vrLoc = 0;
+	};
+	E1293A5C042181EB00050002 = {
+		fRef = E1F6E3AC040BCC5700050002;
+		isa = PBXTextBookmark;
+		name = "Japanese: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1297;
+		vrLoc = 0;
+	};
+	E1293A5D042181EB00050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 7";
+		rLen = 31;
+		rLoc = 214;
+		rType = 0;
+		vrLen = 1386;
+		vrLoc = 0;
+	};
+	E1293A5E042181EB00050002 = {
+		fRef = E1F6E3AC040BCC5700050002;
+		isa = PBXTextBookmark;
+		name = "Japanese: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1297;
+		vrLoc = 0;
+	};
+	E1293A5F042181EB00050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 110;
+		rLoc = 135;
+		rType = 0;
+		vrLen = 1386;
+		vrLoc = 0;
+	};
+	E1293A6404218D2D00050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.h: 24";
+		rLen = 0;
+		rLoc = 533;
+		rType = 0;
+		vrLen = 536;
+		vrLoc = 0;
+	};
+	E1293A6504218D2D00050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.c: 23";
+		rLen = 24;
+		rLoc = 789;
+		rType = 0;
+		vrLen = 1865;
+		vrLoc = 222;
+	};
+	E1293A6604218D2D00050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 110;
+		rLoc = 135;
+		rType = 0;
+		vrLen = 1386;
+		vrLoc = 0;
+	};
+	E1293A6704218D2D00050002 = {
+		fRef = E1F6E3AC040BCC5700050002;
+		isa = PBXTextBookmark;
+		name = "Japanese: 20";
+		rLen = 0;
+		rLoc = 521;
+		rType = 0;
+		vrLen = 1265;
+		vrLoc = 0;
+	};
+	E1293A6804218D2D00050002 = {
+		fRef = E13762D103EC636D00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEBookmarks.h: 13";
+		rLen = 52;
+		rLoc = 261;
+		rType = 0;
+		vrLen = 313;
+		vrLoc = 0;
+	};
+	E1293A6904218D2D00050002 = {
+		fRef = E13762D203EC636D00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEBookmarks.c: 163";
+		rLen = 0;
+		rLoc = 5818;
+		rType = 0;
+		vrLen = 2274;
+		vrLoc = 4841;
+	};
+	E1293A6A04218D2D00050002 = {
+		fRef = E1F6E3AC040BCC5700050002;
+		isa = PBXTextBookmark;
+		name = "Japanese: 30";
+		rLen = 0;
+		rLoc = 766;
+		rType = 0;
+		vrLen = 1265;
+		vrLoc = 0;
+	};
+	E1293A6B04218D2D00050002 = {
+		fRef = E13762D203EC636D00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEBookmarks.c: 165";
+		rLen = 0;
+		rLoc = 5938;
+		rType = 0;
+		vrLen = 1556;
+		vrLoc = 3888;
+	};
+	E1293A6C04218D2D00050002 = {
+		fRef = E165AB3503E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.h: 24";
+		rLen = 0;
+		rLoc = 533;
+		rType = 0;
+		vrLen = 536;
+		vrLoc = 0;
+	};
+	E1293A6D04218D2D00050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.c: 23";
+		rLen = 24;
+		rLoc = 789;
+		rType = 0;
+		vrLen = 1865;
+		vrLoc = 222;
+	};
+	E1293A6E04218D2D00050002 = {
+		fRef = E13762D203EC636D00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEBookmarks.c: 163";
+		rLen = 0;
+		rLoc = 5818;
+		rType = 0;
+		vrLen = 2226;
+		vrLoc = 4840;
+	};
+	E1293A6F04218D2D00050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 110;
+		rLoc = 135;
+		rType = 0;
+		vrLen = 1386;
+		vrLoc = 0;
+	};
+	E1293A7004218D2D00050002 = {
+		fRef = E1F6E3AC040BCC5700050002;
+		isa = PBXTextBookmark;
+		name = "Japanese: 30";
+		rLen = 0;
+		rLoc = 766;
+		rType = 0;
+		vrLen = 1265;
+		vrLoc = 0;
+	};
+	E1293A7104218D2D00050002 = {
+		fRef = E13762D203EC636D00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEBookmarks.c: 163";
+		rLen = 0;
+		rLoc = 5818;
+		rType = 0;
+		vrLen = 2274;
+		vrLoc = 4841;
+	};
+	E1293A7204218D2D00050002 = {
+		fRef = E1F6E3AC040BCC5700050002;
+		isa = PBXTextBookmark;
+		name = "Japanese: 20";
+		rLen = 0;
+		rLoc = 521;
+		rType = 0;
+		vrLen = 1265;
+		vrLoc = 0;
+	};
+	E1293A7304218D2D00050002 = {
+		fRef = E13762D103EC636D00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEBookmarks.h: 13";
+		rLen = 52;
+		rLoc = 261;
+		rType = 0;
+		vrLen = 313;
+		vrLoc = 0;
+	};
+	E1293A7404218D2D00050002 = {
+		fRef = E13762D203EC636D00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEBookmarks.c: kICBookmarkNameTooLongErr";
+		rLen = 0;
+		rLoc = 467;
+		rType = 0;
+		vrLen = 1420;
+		vrLoc = 0;
+	};
+	E1317A3503DF242100050002 = {
+		activeArgIndex = 0;
+		activeArgIndices = (
+			YES,
+		);
+		argumentStrings = (
+			"\"/Library/PreferencePanes/APE Manager.prefPane\"",
+		);
+		configStateDict = {
+			"PBXLSLaunchAction-1" = {
+				PBXLSLaunchAction = 1;
+				PBXLSLaunchStartAction = 1;
+				PBXLSLaunchStdioStyle = 2;
+				PBXLSLaunchStyle = 0;
+				class = PBXGDB_LaunchConfig;
+				identifier = com.apple.ProjectBuilder.launch.GDBMI_Config;
+				remoteHostInfo = "";
+				startActionInfo = "";
+			};
+		};
+		debuggerPlugin = GDBDebugging;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+			{
+				active = YES;
+				name = NSZombieEnabled;
+				value = YES;
+			},
+		);
+		isa = PBXExecutable;
+		launchableReference = E1317A3603DF242100050002;
+		name = "System Preferences";
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	E1317A3603DF242100050002 = {
+		isa = PBXApplicationReference;
+		name = "System Preferences.app";
+		path = "/Applications/System Preferences.app";
+		refType = 0;
+	};
+	E1317A3703DF244600050002 = {
+		isa = PBXSymbolicBreakpoint;
+		state = 2;
+		symbolName = "-[NSException raise]";
+	};
+	E1317A3803DF24F800050002 = {
+		isa = PBXSymbolicBreakpoint;
+		state = 2;
+		symbolName = _NSAutoreleaseNoPool;
+	};
+	E1317B3203DFC56300050002 = {
+		fRef = E1317B2E03DFC4DE00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETerminal.h: 11";
+		rLen = 0;
+		rLoc = 183;
+		rType = 0;
+		vrLen = 469;
+		vrLoc = 0;
+	};
+	E136EA9603E3A1AD00050002 = {
+		fRef = E1317B2F03DFC4DE00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETerminal.m: 98";
+		rLen = 0;
+		rLoc = 6658;
+		rType = 0;
+		vrLen = 763;
+		vrLoc = 2916;
+	};
+	E136EAA003E3A98600050002 = {
+		fRef = E1317B2F03DFC4DE00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETerminal.m: 16";
+		rLen = 0;
+		rLoc = 337;
+		rType = 0;
+		vrLen = 855;
+		vrLoc = 217;
+	};
+	E136EAA103E42F7500050002 = {
+		activeArgIndex = 2147483647;
+		activeArgIndices = (
+		);
+		argumentStrings = (
+		);
+		configStateDict = {
+		};
+		debuggerPlugin = GDBDebugging;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+			{
+				active = YES;
+				name = NSZombieEnabled;
+				value = YES;
+			},
+		);
+		isa = PBXExecutable;
+		launchableReference = E136EAA203E42F7500050002;
+		name = Terminal;
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	E136EAA203E42F7500050002 = {
+		isa = PBXApplicationReference;
+		name = Terminal.app;
+		path = /Applications/Utilities/Terminal.app;
+		refType = 0;
+	};
+	E136EAA303E436C500050002 = {
+		fRef = E1317B2F03DFC4DE00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETerminal.m: mouseUp:";
+		rLen = 0;
+		rLoc = 14076;
+		rType = 0;
+		vrLen = 70;
+		vrLoc = 15494;
+	};
+	E136EAA903E48B0400050002 = {
+		fileReference = E1317B2F03DFC4DE00050002;
+		isa = PBXFileBreakpoint;
+		lineNumber = 307;
+		state = 1;
+	};
+	E1373452041FE49500050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: 10";
+		rLen = 0;
+		rLoc = 185;
+		rType = 0;
+		vrLen = 1308;
+		vrLoc = 0;
+	};
+	E1373453041FE49500050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: 10";
+		rLen = 0;
+		rLoc = 185;
+		rType = 0;
+		vrLen = 1308;
+		vrLoc = 0;
+	};
+	E144826E041D4AB700050002 = {
+		fRef = E1BF15A503DBAA5600050002;
+		isa = PBXTextBookmark;
+		name = "ui.plist: 31";
+		rLen = 0;
+		rLoc = 895;
+		rType = 0;
+		vrLen = 1316;
+		vrLoc = 0;
+	};
+	E144826F041D4AB700050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1470;
+		vrLoc = 0;
+	};
+	E1448270041D4AB700050002 = {
+		fRef = E14343B303DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.h: 26";
+		rLen = 0;
+		rLoc = 1152;
+		rType = 0;
+		vrLen = 1761;
+		vrLoc = 0;
+	};
+	E1448271041D4AB700050002 = {
+		fRef = E1BF15A503DBAA5600050002;
+		isa = PBXTextBookmark;
+		name = "ui.plist: 31";
+		rLen = 0;
+		rLoc = 895;
+		rType = 0;
+		vrLen = 1316;
+		vrLoc = 0;
+	};
+	E1448272041D4AB700050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1470;
+		vrLoc = 0;
+	};
+	E1448273041D4AB700050002 = {
+		fRef = E14343B303DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.h: 26";
+		rLen = 0;
+		rLoc = 1152;
+		rType = 0;
+		vrLen = 1761;
+		vrLoc = 0;
+	};
+	E14994BA03DE8A4D00050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: textBlinkCount:";
+		rLen = 52;
+		rLoc = 4163;
+		rType = 0;
+		vrLen = 1360;
+		vrLoc = 2804;
+	};
+	E157EE6D03F059E300050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: ICCF_DEBUG";
+		rLen = 0;
+		rLoc = 305;
+		rType = 0;
+		vrLen = 1001;
+		vrLoc = 0;
+	};
+	E157EE6F03F059E300050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: __VERSION__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1146;
+		vrLoc = 0;
+	};
+	E15E6A7404188D6900050002 = {
+		activeArgIndex = 0;
+		activeArgIndices = (
+			YES,
+		);
+		argumentStrings = (
+			"-AppleLanguages '(ja, en)'",
+		);
+		configStateDict = {
+		};
+		debuggerPlugin = GDBDebugging;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+		);
+		isa = PBXExecutable;
+		launchableReference = E15E6A7504188D6900050002;
+		name = "システム環境設定";
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	E15E6A7504188D6900050002 = {
+		isa = PBXApplicationReference;
+		name = "System Preferences.app";
+		path = "/Applications/System Preferences.app";
+		refType = 0;
+	};
+	E15FA26603F6528F00050002 = {
+		fRef = E1317B2F03DFC4DE00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETerminal.m: ICCF_LaunchURLFromTerminal";
+		rLen = 0;
+		rLoc = 13615;
+		rType = 0;
+		vrLen = 1355;
+		vrLoc = 1868;
+	};
+	E15FA26803F6528F00050002 = {
+		isa = PBXTargetBookmark;
+		trg = F5CD5E9D02DAE2C901AA4DA5;
+	};
+	E15FA26903F6528F00050002 = {
+		fRef = E1BF15BF03DBBE8900050002;
+		isa = PBXTextBookmark;
+		name = "VERSION: 1";
+		rLen = 0;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 6;
+		vrLoc = 0;
+	};
+	E15FA26A03F6528F00050002 = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	E15FA26B03F6528F00050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 33";
+		rLen = 0;
+		rLoc = 744;
+		rType = 0;
+		vrLen = 1563;
+		vrLoc = 0;
+	};
+	E15FA26C03F6528F00050002 = {
+		fRef = E1BF15BF03DBBE8900050002;
+		isa = PBXTextBookmark;
+		name = "VERSION: 1";
+		rLen = 0;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 6;
+		vrLoc = 0;
+	};
+	E15FA26D03F6528F00050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: __VERSION__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1476;
+		vrLoc = 0;
+	};
+	E15FA26E03F6528F00050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: ICCF_DEBUG";
+		rLen = 0;
+		rLoc = 305;
+		rType = 0;
+		vrLen = 1334;
+		vrLoc = 0;
+	};
+	E165AB3B03E7B35000050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAppMenu.c: 44";
+		rLen = 0;
+		rLoc = 9051;
+		rType = 0;
+		vrLen = 1734;
+		vrLoc = 47;
+	};
+	E165AB3C03E7BCDE00050002 = {
+		activeArgIndex = 2147483647;
+		activeArgIndices = (
+		);
+		argumentStrings = (
+		);
+		configStateDict = {
+		};
+		debuggerPlugin = GDBDebugging;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+		);
+		isa = PBXExecutable;
+		launchableReference = E165AB3D03E7BCDE00050002;
+		name = TextEdit;
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	E165AB3D03E7BCDE00050002 = {
+		isa = PBXApplicationReference;
+		name = TextEdit.app;
+		path = /Applications/TextEdit.app;
+		refType = 0;
+	};
+	E1669BDA04133AFF00050002 = {
+		fRef = E1BF15BD03DBBD3E00050002;
+		isa = PBXTextBookmark;
+		name = "package-ICeCoffEE.sh: 35";
+		rLen = 0;
+		rLoc = 1159;
+		rType = 0;
+		vrLen = 1161;
+		vrLoc = 0;
+	};
+	E1669BDD04133AFF00050002 = {
+		fRef = E1BF15BD03DBBD3E00050002;
+		isa = PBXTextBookmark;
+		name = "package-ICeCoffEE.sh: 35";
+		rLen = 0;
+		rLoc = 1159;
+		rType = 0;
+		vrLen = 1161;
+		vrLoc = 0;
+	};
+	E166E9AA03F2F8F100050002 = {
+		fRef = E1BB268F03DB74B700050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEMenuOnly.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 256;
+		vrLoc = 0;
+	};
+	E166E9AF03F2F8F100050002 = {
+		fRef = E1BB268F03DB74B700050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEMenuOnly.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 256;
+		vrLoc = 0;
+	};
+	E166E9B003F2F8F100050002 = {
+		fRef = E1317B2F03DFC4DE00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETerminal.m: __VERSION__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1881;
+		vrLoc = 44;
+	};
+	E166E9B103F2F8F100050002 = {
+		isa = PBXTargetBookmark;
+		trg = F5CD5E9D02DAE2C901AA4DA5;
+	};
+	E166ECD903F41C6200050002 = {
+		fRef = E166ECE403F41C6200050002;
+		glyphRangeLength = 485;
+		glyphRangeLocation = 0;
+		isa = PBXDocBookmark;
+		name = "Reading_the_Keyboard.html: PATHDocument...";
+	};
+	E166ECDA03F41C6200050002 = {
+		fRef = E166ECE503F41C6200050002;
+		isa = PBXTextBookmark;
+		name = "Events.h: 338";
+		rLen = 7;
+		rLoc = 11112;
+		rType = 0;
+		vrLen = 1459;
+		vrLoc = 10469;
+	};
+	E166ECDC03F41C6200050002 = {
+		fRef = E1BF15A503DBAA5600050002;
+		isa = PBXTextBookmark;
+		name = "ui.plist: 45";
+		rLen = 0;
+		rLoc = 1298;
+		rType = 0;
+		vrLen = 1325;
+		vrLoc = 0;
+	};
+	E166ECDD03F41C6200050002 = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 6";
+		rLen = 0;
+		rLoc = 234;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	E166ECDE03F41C6200050002 = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: kIC12PrefExcludedAppSpecifierBundleID";
+		rLen = 0;
+		rLoc = 590;
+		rType = 0;
+		vrLen = 1491;
+		vrLoc = 0;
+	};
+	E166ECDF03F41C6200050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: excludedAppIndex";
+		rLen = 0;
+		rLoc = 8797;
+		rType = 0;
+		vrLen = 1840;
+		vrLoc = 6796;
+	};
+	E166ECE003F41C6200050002 = {
+		fRef = E166ECE303F41C6200050002;
+		isa = PBXTextBookmark;
+		name = "Events.h: 338";
+		rLen = 7;
+		rLoc = 11112;
+		rType = 0;
+		vrLen = 1459;
+		vrLoc = 10469;
+	};
+	E166ECE303F41C6200050002 = {
+		isa = PBXFileReference;
+		name = Events.h;
+		path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h;
+		refType = 0;
+	};
+	E166ECE403F41C6200050002 = {
+		isa = PBXFileReference;
+		name = Reading_the_Keyboard.html;
+		path = /Developer/Documentation/Carbon/oss/EventManager/Event_Manager/Functions/Reading_the_Keyboard.html;
+		refType = 0;
+	};
+	E166ECE503F41C6200050002 = {
+		isa = PBXFileReference;
+		name = Events.h;
+		path = /System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h;
+		refType = 0;
+	};
+	E169DBA603E4F62F00050002 = {
+		fRef = E169DBA103E4EF5E00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEETextEdit.c: MyTEClick";
+		rLen = 56;
+		rLoc = 1292;
+		rType = 0;
+		vrLen = 1606;
+		vrLoc = 0;
+	};
+	E16C833C03F759D800050002 = {
+		fRef = 29B97319FDCFA39411CA2CEA;
+		isa = PBXBookmark;
+	};
+	E16C833D03F759D800050002 = {
+		isa = PBXTargetBookmark;
+		trg = F57E31A00379599E01AA4DA5;
+	};
+	E16C834003F759D800050002 = {
+		fRef = E16C83B103F759D800050002;
+		glyphRangeLength = 689;
+		glyphRangeLocation = 25693;
+		isa = PBXDocBookmark;
+		name = "Miscellaneous.html: UInt32 CFBun...";
+	};
+	E16C834103F759D800050002 = {
+		fRef = F56276B903796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.h: 22";
+		rLen = 0;
+		rLoc = 618;
+		rType = 0;
+		vrLen = 897;
+		vrLoc = 0;
+	};
+	E16C834203F759D800050002 = {
+		fRef = E16C83B203F759D800050002;
+		isa = PBXTextBookmark;
+		name = "NSTabView.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1382;
+		vrLoc = 0;
+	};
+	E16C834303F759D800050002 = {
+		fRef = E16C83B303F759D800050002;
+		isa = PBXTextBookmark;
+		name = "NSPrinter.h: 56";
+		rLen = 60;
+		rLoc = 2499;
+		rType = 0;
+		vrLen = 2530;
+		vrLoc = 1337;
+	};
+	E16C834703F759D800050002 = {
+		fRef = E16C83B503F759D800050002;
+		isa = PBXTextBookmark;
+		name = "MacTypes.h: 72";
+		rLen = 48;
+		rLoc = 1915;
+		rType = 0;
+		vrLen = 1530;
+		vrLoc = 1039;
+	};
+	E16C834803F759D800050002 = {
+		fRef = E16C83B603F759D800050002;
+		isa = PBXTextBookmark;
+		name = "CFNumber.h: 39";
+		rLen = 28;
+		rLoc = 833;
+		rType = 0;
+		vrLen = 1073;
+		vrLoc = 215;
+	};
+	E16C834903F759D800050002 = {
+		fRef = E16C83AF03F759D800050002;
+		isa = PBXTextBookmark;
+		name = "CFPreferences.h: 56";
+		rLen = 122;
+		rLoc = 1933;
+		rType = 0;
+		vrLen = 2278;
+		vrLoc = 775;
+	};
+	E16C834A03F759D800050002 = {
+		fRef = F56276BA03796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.m: integerForKey:";
+		rLen = 31;
+		rLoc = 2183;
+		rType = 0;
+		vrLen = 1104;
+		vrLoc = 1699;
+	};
+	E16C834B03F759D800050002 = {
+		fRef = E16C83B703F759D800050002;
+		isa = PBXTextBookmark;
+		name = "CFBundle.h: 102";
+		rLen = 53;
+		rLoc = 3697;
+		rType = 0;
+		vrLen = 1477;
+		vrLoc = 2946;
+	};
+	E16C834C03F759D800050002 = {
+		fRef = F9A6987003BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.h: setAPEBundle:prefPaneBundle:";
+		rLen = 78;
+		rLoc = 722;
+		rType = 0;
+		vrLen = 1190;
+		vrLoc = 0;
+	};
+	E16C834D03F759D800050002 = {
+		fRef = E16C83BD03F759D800050002;
+		isa = PBXTextBookmark;
+		name = "NSBundle.h: 38";
+		rLen = 24;
+		rLoc = 901;
+		rType = 0;
+		vrLen = 1604;
+		vrLoc = 421;
+	};
+	E16C834E03F759D800050002 = {
+		fRef = E16C83B803F759D800050002;
+		isa = PBXTextBookmark;
+		name = "NSURL.h: 24";
+		rLen = 15;
+		rLoc = 733;
+		rType = 0;
+		vrLen = 2053;
+		vrLoc = 0;
+	};
+	E16C834F03F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: apeBundle";
+		rLen = 0;
+		rLoc = 1967;
+		rType = 0;
+		vrLen = 1561;
+		vrLoc = 1219;
+	};
+	E16C835803F759D800050002 = {
+		fRef = E1BF15A503DBAA5600050002;
+		isa = PBXTextBookmark;
+		name = "ui.plist: 37";
+		rLen = 0;
+		rLoc = 1081;
+		rType = 0;
+		vrLen = 1325;
+		vrLoc = 0;
+	};
+	E16C835903F759D800050002 = {
+		fRef = 29B97319FDCFA39411CA2CEA;
+		isa = PBXBookmark;
+	};
+	E16C835A03F759D800050002 = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	E16C835B03F759D800050002 = {
+		fRef = E1BF15BF03DBBE8900050002;
+		isa = PBXTextBookmark;
+		name = "VERSION: 1";
+		rLen = 0;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 6;
+		vrLoc = 0;
+	};
+	E16C835C03F759D800050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 105";
+		rLen = 0;
+		rLoc = 3435;
+		rType = 0;
+		vrLen = 1477;
+		vrLoc = 1958;
+	};
+	E16C835D03F759D800050002 = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	E16C835E03F759D800050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 105";
+		rLen = 0;
+		rLoc = 3435;
+		rType = 0;
+		vrLen = 1477;
+		vrLoc = 1958;
+	};
+	E16C835F03F759D800050002 = {
+		fRef = 29B97319FDCFA39411CA2CEA;
+		isa = PBXBookmark;
+	};
+	E16C836003F759D800050002 = {
+		fRef = E1BF15BF03DBBE8900050002;
+		isa = PBXTextBookmark;
+		name = "VERSION: 1";
+		rLen = 0;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 6;
+		vrLoc = 0;
+	};
+	E16C836203F759D800050002 = {
+		fRef = F9A6987003BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.h: 13";
+		rLen = 0;
+		rLoc = 412;
+		rType = 0;
+		vrLen = 1092;
+		vrLoc = 0;
+	};
+	E16C836403F759D800050002 = {
+		fRef = F9A6987003BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.h: 16";
+		rLen = 0;
+		rLoc = 500;
+		rType = 0;
+		vrLen = 1125;
+		vrLoc = 0;
+	};
+	E16C836503F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: 67";
+		rLen = 0;
+		rLoc = 2355;
+		rType = 0;
+		vrLen = 1527;
+		vrLoc = 1364;
+	};
+	E16C836603F759D800050002 = {
+		fRef = F56276BA03796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.m: 189";
+		rLen = 0;
+		rLoc = 4313;
+		rType = 0;
+		vrLen = 1190;
+		vrLoc = 3457;
+	};
+	E16C836703F759D800050002 = {
+		fRef = F56276B903796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.h: 21";
+		rLen = 0;
+		rLoc = 601;
+		rType = 0;
+		vrLen = 897;
+		vrLoc = 0;
+	};
+	E16C836803F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: prefPaneHandlerForAPE:andBundle:";
+		rLen = 0;
+		rLoc = 1680;
+		rType = 0;
+		vrLen = 1533;
+		vrLoc = 1364;
+	};
+	E16C836903F759D800050002 = {
+		fRef = F56276B903796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.h: 22";
+		rLen = 0;
+		rLoc = 618;
+		rType = 0;
+		vrLen = 914;
+		vrLoc = 0;
+	};
+	E16C836A03F759D800050002 = {
+		fRef = F56276BA03796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.m: preferencesWithApplication:";
+		rLen = 0;
+		rLoc = 4288;
+		rType = 0;
+		vrLen = 1196;
+		vrLoc = 3353;
+	};
+	E16C836B03F759D800050002 = {
+		fRef = F56276B903796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.h: 22";
+		rLen = 0;
+		rLoc = 618;
+		rType = 0;
+		vrLen = 897;
+		vrLoc = 0;
+	};
+	E16C836C03F759D800050002 = {
+		fRef = F56276BA03796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.m: preferencesWithApplication:";
+		rLen = 0;
+		rLoc = 4288;
+		rType = 0;
+		vrLen = 1196;
+		vrLoc = 3353;
+	};
+	E16C836D03F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: prefPaneHandlerForAPE:andBundle:";
+		rLen = 0;
+		rLoc = 1680;
+		rType = 0;
+		vrLen = 1382;
+		vrLoc = 303;
+	};
+	E16C836E03F759D800050002 = {
+		fRef = F56276BA03796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.m: preferencesWithApplication:";
+		rLen = 0;
+		rLoc = 4288;
+		rType = 0;
+		vrLen = 1196;
+		vrLoc = 3353;
+	};
+	E16C836F03F759D800050002 = {
+		fRef = F9A6987003BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.h: 16";
+		rLen = 0;
+		rLoc = 500;
+		rType = 0;
+		vrLen = 1125;
+		vrLoc = 0;
+	};
+	E16C837003F759D800050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: ICCF_DEBUG";
+		rLen = 0;
+		rLoc = 305;
+		rType = 0;
+		vrLen = 1334;
+		vrLoc = 0;
+	};
+	E16C837103F759D800050002 = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: kIC12PrefExcludedAppSpecifierBundleID";
+		rLen = 0;
+		rLoc = 590;
+		rType = 0;
+		vrLen = 1491;
+		vrLoc = 0;
+	};
+	E16C837203F759D800050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: ICCF_DEBUG";
+		rLen = 0;
+		rLoc = 305;
+		rType = 0;
+		vrLen = 1334;
+		vrLoc = 0;
+	};
+	E16C837303F759D800050002 = {
+		fRef = F56276BA03796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.m: preferencesWithApplication:";
+		rLen = 0;
+		rLoc = 4288;
+		rType = 0;
+		vrLen = 1196;
+		vrLoc = 3353;
+	};
+	E16C837403F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: commandClickEnabled:";
+		rLen = 0;
+		rLoc = 3745;
+		rType = 0;
+		vrLen = 1523;
+		vrLoc = 2978;
+	};
+	E16C837503F759D800050002 = {
+		fRef = F56276BA03796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.m: preferencesWithApplication:";
+		rLen = 0;
+		rLoc = 4288;
+		rType = 0;
+		vrLen = 1196;
+		vrLoc = 3353;
+	};
+	E16C837603F759D800050002 = {
+		fRef = E1BF15BF03DBBE8900050002;
+		isa = PBXTextBookmark;
+		name = "VERSION: 1";
+		rLen = 0;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 6;
+		vrLoc = 0;
+	};
+	E16C837703F759D800050002 = {
+		fRef = 29B97319FDCFA39411CA2CEA;
+		isa = PBXBookmark;
+	};
+	E16C837803F759D800050002 = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	E16C837903F759D800050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 105";
+		rLen = 0;
+		rLoc = 3435;
+		rType = 0;
+		vrLen = 1477;
+		vrLoc = 1958;
+	};
+	E16C837A03F759D800050002 = {
+		fRef = 29B97319FDCFA39411CA2CEA;
+		isa = PBXBookmark;
+	};
+	E16C837B03F759D800050002 = {
+		isa = PBXTargetBookmark;
+		trg = F57E31A00379599E01AA4DA5;
+	};
+	E16C837C03F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: commandClickEnabled:";
+		rLen = 0;
+		rLoc = 3745;
+		rType = 0;
+		vrLen = 1526;
+		vrLoc = 1584;
+	};
+	E16C837D03F759D800050002 = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: kIC12PrefExcludedAppSpecifierBundleID";
+		rLen = 0;
+		rLoc = 590;
+		rType = 0;
+		vrLen = 1491;
+		vrLoc = 0;
+	};
+	E16C837E03F759D800050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: ICCF_ReloadPrefs";
+		rLen = 16;
+		rLoc = 10939;
+		rType = 0;
+		vrLen = 2080;
+		vrLoc = 6895;
+	};
+	E16C837F03F759D800050002 = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: __VERSION__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1491;
+		vrLoc = 0;
+	};
+	E16C838003F759D800050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1362;
+		vrLoc = 0;
+	};
+	E16C838103F759D800050002 = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: kICCommandClickEnabled";
+		rLen = 20;
+		rLoc = 627;
+		rType = 0;
+		vrLen = 1581;
+		vrLoc = 0;
+	};
+	E16C838203F759D800050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: ICCF_ReloadPrefs";
+		rLen = 16;
+		rLoc = 10939;
+		rType = 0;
+		vrLen = 1876;
+		vrLoc = 7132;
+	};
+	E16C838303F759D800050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: ICCF_DEBUG";
+		rLen = 0;
+		rLoc = 305;
+		rType = 0;
+		vrLen = 1362;
+		vrLoc = 0;
+	};
+	E16C838403F759D800050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: ICCF_PatchMethod";
+		rLen = 0;
+		rLoc = 1786;
+		rType = 0;
+		vrLen = 1776;
+		vrLoc = 1437;
+	};
+	E16C838503F759D800050002 = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: kICCommandClickEnabled";
+		rLen = 0;
+		rLoc = 705;
+		rType = 0;
+		vrLen = 1587;
+		vrLoc = 0;
+	};
+	E16C838603F759D800050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 119;
+		rLoc = 2450;
+		rType = 0;
+		vrLen = 1776;
+		vrLoc = 1437;
+	};
+	E16C838703F759D800050002 = {
+		fRef = F56276BA03796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.m: preferencesWithApplication:";
+		rLen = 0;
+		rLoc = 4288;
+		rType = 0;
+		vrLen = 1196;
+		vrLoc = 3353;
+	};
+	E16C838803F759D800050002 = {
+		fRef = F56276B903796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.h: 22";
+		rLen = 0;
+		rLoc = 618;
+		rType = 0;
+		vrLen = 897;
+		vrLoc = 0;
+	};
+	E16C838903F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: 23";
+		rLen = 1;
+		rLoc = 727;
+		rType = 0;
+		vrLen = 1455;
+		vrLoc = 0;
+	};
+	E16C838A03F759D800050002 = {
+		fRef = F56276BA03796C8B01AA4DA5;
+		isa = PBXTextBookmark;
+		name = "CFPreferencesWrapper.m: preferencesWithApplication:";
+		rLen = 0;
+		rLoc = 4288;
+		rType = 0;
+		vrLen = 1196;
+		vrLoc = 3353;
+	};
+	E16C838C03F759D800050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 119;
+		rLoc = 2450;
+		rType = 0;
+		vrLen = 1777;
+		vrLoc = 1436;
+	};
+	E16C838D03F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: initWithAPE:andBundle:";
+		rLen = 0;
+		rLoc = 1092;
+		rType = 0;
+		vrLen = 1449;
+		vrLoc = 38;
+	};
+	E16C838E03F759D800050002 = {
+		fRef = F9A6987003BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.h: setBundle:";
+		rLen = 0;
+		rLoc = 799;
+		rType = 0;
+		vrLen = 1164;
+		vrLoc = 0;
+	};
+	E16C838F03F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: initWithAPE:andBundle:";
+		rLen = 0;
+		rLoc = 1092;
+		rType = 0;
+		vrLen = 1449;
+		vrLoc = 38;
+	};
+	E16C839003F759D800050002 = {
+		fRef = F9A6987003BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.h: bundle";
+		rLen = 78;
+		rLoc = 722;
+		rType = 0;
+		vrLen = 1190;
+		vrLoc = 0;
+	};
+	E16C839103F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: prefPaneHandlerForAPE:andBundle:";
+		rLen = 78;
+		rLoc = 3111;
+		rType = 0;
+		vrLen = 1630;
+		vrLoc = 1638;
+	};
+	E16C839203F759D800050002 = {
+		fRef = F9A6987003BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.h: bundle";
+		rLen = 78;
+		rLoc = 722;
+		rType = 0;
+		vrLen = 1190;
+		vrLoc = 0;
+	};
+	E16C839303F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: setAPEBundle:prefPaneBundle:";
+		rLen = 0;
+		rLoc = 3261;
+		rType = 0;
+		vrLen = 1671;
+		vrLoc = 1636;
+	};
+	E16C839503F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: awakeFromNib";
+		rLen = 0;
+		rLoc = 2157;
+		rType = 0;
+		vrLen = 1706;
+		vrLoc = 1471;
+	};
+	E16C839603F759D800050002 = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 15";
+		rLen = 0;
+		rLoc = 304;
+		rType = 0;
+		vrLen = 1716;
+		vrLoc = 218;
+	};
+	E16C839703F759D800050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: __PTRDIFF_TYPE__";
+		rLen = 0;
+		rLoc = 197;
+		rType = 0;
+		vrLen = 1599;
+		vrLoc = 0;
+	};
+	E16C839803F759D800050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: icVersionRef";
+		rLen = 0;
+		rLoc = 2438;
+		rType = 0;
+		vrLen = 1850;
+		vrLoc = 1513;
+	};
+	E16C839903F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: awakeFromNib";
+		rLen = 13;
+		rLoc = 2077;
+		rType = 0;
+		vrLen = 1726;
+		vrLoc = 1450;
+	};
+	E16C839A03F759D800050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: __PTRDIFF_TYPE__";
+		rLen = 0;
+		rLoc = 197;
+		rType = 0;
+		vrLen = 1599;
+		vrLoc = 0;
+	};
+	E16C839B03F759D800050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 0;
+		rLoc = 2485;
+		rType = 0;
+		vrLen = 1620;
+		vrLoc = 504;
+	};
+	E16C839C03F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: awakeFromNib";
+		rLen = 24;
+		rLoc = 2119;
+		rType = 0;
+		vrLen = 1747;
+		vrLoc = 1358;
+	};
+	E16C839D03F759D800050002 = {
+		fRef = F9A6987003BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.h: setAPEBundle:prefPaneBundle:";
+		rLen = 78;
+		rLoc = 722;
+		rType = 0;
+		vrLen = 1190;
+		vrLoc = 0;
+	};
+	E16C839E03F759D800050002 = {
+		fRef = F9A6987103BE1DFF00AA4DA5;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEController.m: apeBundle";
+		rLen = 0;
+		rLoc = 1967;
+		rType = 0;
+		vrLen = 1561;
+		vrLoc = 1219;
+	};
+	E16C83A003F759D800050002 = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: kICLastLoadedVersion";
+		rLen = 0;
+		rLoc = 705;
+		rType = 0;
+		vrLen = 1587;
+		vrLoc = 0;
+	};
+	E16C83A203F759D800050002 = {
+		fRef = E1BF15BF03DBBE8900050002;
+		isa = PBXTextBookmark;
+		name = "VERSION: 1";
+		rLen = 0;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 6;
+		vrLoc = 0;
+	};
+	E16C83A303F759D800050002 = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	E16C83A403F759D800050002 = {
+		fRef = E1BF15BD03DBBD3E00050002;
+		isa = PBXTextBookmark;
+		name = "package-ICeCoffEE.sh: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1161;
+		vrLoc = 0;
+	};
+	E16C83A503F759D800050002 = {
+		fRef = E1BF15A503DBAA5600050002;
+		isa = PBXTextBookmark;
+		name = "ui.plist: 37";
+		rLen = 0;
+		rLoc = 1081;
+		rType = 0;
+		vrLen = 1325;
+		vrLoc = 0;
+	};
+	E16C83A603F759D800050002 = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: icVersionRef";
+		rLen = 0;
+		rLoc = 2366;
+		rType = 0;
+		vrLen = 1887;
+		vrLoc = 1341;
+	};
+	E16C83A703F759D800050002 = {
+		fRef = E1BF15BF03DBBE8900050002;
+		isa = PBXTextBookmark;
+		name = "VERSION: 1";
+		rLen = 0;
+		rLoc = 7;
+		rType = 0;
+		vrLen = 6;
+		vrLoc = 0;
+	};
+	E16C83A803F759D800050002 = {
+		fRef = E1BF15A503DBAA5600050002;
+		isa = PBXTextBookmark;
+		name = "ui.plist: 37";
+		rLen = 0;
+		rLoc = 1081;
+		rType = 0;
+		vrLen = 1325;
+		vrLoc = 0;
+	};
+	E16C83A903F759D800050002 = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: ICCF_DEBUG";
+		rLen = 0;
+		rLoc = 305;
+		rType = 0;
+		vrLen = 1362;
+		vrLoc = 0;
+	};
+	E16C83AF03F759D800050002 = {
+		isa = PBXFileReference;
+		name = CFPreferences.h;
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFPreferences.h;
+		refType = 0;
+	};
+	E16C83B103F759D800050002 = {
+		isa = PBXFileReference;
+		name = Miscellaneous.html;
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Resources/English.lproj/Documentation/BundleServices/Bundle_Services/Functions/Miscellaneous.html;
+		refType = 0;
+	};
+	E16C83B203F759D800050002 = {
+		isa = PBXFileReference;
+		name = NSTabView.h;
+		path = /System/Library/Frameworks/AppKit.framework/Versions/C/Headers/NSTabView.h;
+		refType = 0;
+	};
+	E16C83B303F759D800050002 = {
+		isa = PBXFileReference;
+		name = NSPrinter.h;
+		path = /System/Library/Frameworks/AppKit.framework/Versions/C/Headers/NSPrinter.h;
+		refType = 0;
+	};
+	E16C83B503F759D800050002 = {
+		isa = PBXFileReference;
+		name = MacTypes.h;
+		path = /System/Library/Frameworks/CoreServices.framework/Versions/A/Frameworks/CarbonCore.framework/Versions/A/Headers/MacTypes.h;
+		refType = 0;
+	};
+	E16C83B603F759D800050002 = {
+		isa = PBXFileReference;
+		name = CFNumber.h;
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFNumber.h;
+		refType = 0;
+	};
+	E16C83B703F759D800050002 = {
+		isa = PBXFileReference;
+		name = CFBundle.h;
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFBundle.h;
+		refType = 0;
+	};
+	E16C83B803F759D800050002 = {
+		isa = PBXFileReference;
+		name = NSURL.h;
+		path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSURL.h;
+		refType = 0;
+	};
+	E16C83BD03F759D800050002 = {
+		isa = PBXFileReference;
+		name = NSBundle.h;
+		path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSBundle.h;
+		refType = 0;
+	};
+	E16C842703FB6A7200050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: 73";
+		rLen = 19;
+		rLoc = 3370;
+		rType = 0;
+		vrLen = 1796;
+		vrLoc = 2836;
+	};
+	E175F28303E7445700050002 = {
+		activeArgIndex = 2147483647;
+		activeArgIndices = (
+		);
+		argumentStrings = (
+		);
+		configStateDict = {
+		};
+		debuggerPlugin = GDBDebugging;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+		);
+		isa = PBXExecutable;
+		launchableReference = E175F28403E7445700050002;
+		name = SimpleText;
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	E175F28403E7445700050002 = {
+		isa = PBXApplicationReference;
+		name = SimpleText.app;
+		path = /Developer/Applications/Extras/SimpleText.app;
+		refType = 0;
+	};
+	E182C8ED03DE6ED300050002 = {
+		children = (
+			E182C8F403DE7F3200050002,
+			E14994BA03DE8A4D00050002,
+			E1317B3203DFC56300050002,
+			E136EA9603E3A1AD00050002,
+			E136EAA003E3A98600050002,
+			E136EAA303E436C500050002,
+			E169DBA603E4F62F00050002,
+			E165AB3B03E7B35000050002,
+		);
+		isa = PBXBookmarkGroup;
+		name = Root;
+	};
+	E182C8F403DE7F3200050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: __VERSION__";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1997;
+		vrLoc = 1921;
+	};
+	E18A7D2903ED430100050001 = {
+		fileReference = E14343B403DB4CF200050002;
+		isa = PBXFileBreakpoint;
+		lineNumber = 144;
+		state = 1;
+	};
+	E1937CF1040C300300050002 = {
+		fRef = E1F6E3AC040BCC5700050002;
+		isa = PBXTextBookmark;
+		name = "Japanese: 78";
+		rLen = 0;
+		rLoc = 2422;
+		rType = 0;
+		vrLen = 1300;
+		vrLoc = 1327;
+	};
+	E1937CF2040C300300050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: ICCF_NameWithLocation";
+		rLen = 0;
+		rLoc = 1063;
+		rType = 0;
+		vrLen = 1799;
+		vrLoc = 0;
+	};
+	E19EB4E703DD355C00050002 = {
+		activeExec = 0;
+		executables = (
+			E19EB4E903DD355C00050002,
+		);
+	};
+	E19EB4E903DD355C00050002 = {
+		activeArgIndex = 2147483647;
+		activeArgIndices = (
+		);
+		argumentStrings = (
+		);
+		configStateDict = {
+		};
+		debuggerPlugin = GDBDebugging;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+		);
+		isa = PBXExecutable;
+		name = ICFindFilesToRemove;
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	E1ABE98B040D48E700050002 = {
+		activeArgIndex = 2147483647;
+		activeArgIndices = (
+		);
+		argumentStrings = (
+		);
+		configStateDict = {
+		};
+		debuggerPlugin = GDBDebugging;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+		);
+		isa = PBXExecutable;
+		launchableReference = E1ABE98C040D48E700050002;
+		name = Safari;
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	E1ABE98C040D48E700050002 = {
+		isa = PBXApplicationReference;
+		name = Safari.app;
+		path = /Users/nicholas/Applications/Safari.app;
+		refType = 0;
+	};
+	E1ABE98F040D4E8F00050002 = {
+		exec = E104851C040C1E3900050002;
+		isa = PBXExecutableBookmark;
+	};
+	E1ABE990040D4E8F00050002 = {
+		exec = E1ABE98B040D48E700050002;
+		isa = PBXExecutableBookmark;
+	};
+	E1ABE991040D4E8F00050002 = {
+		fRef = E1BF167203DBEAA000050002;
+		isa = PBXTextBookmark;
+		name = "WebCoreBridge.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1686;
+		vrLoc = 0;
+	};
+	E1ABE993040D4E8F00050002 = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: ICCF_CheckRange";
+		rLen = 0;
+		rLoc = 2426;
+		rType = 0;
+		vrLen = 1872;
+		vrLoc = 2204;
+	};
+	E1ABE994040D4E8F00050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: ICCF_NameWithLocation";
+		rLen = 0;
+		rLoc = 1063;
+		rType = 0;
+		vrLen = 1799;
+		vrLoc = 0;
+	};
+	E1ABE995040D4E8F00050002 = {
+		fRef = E1BF166A03DBE27000050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEWebKit.m: 37";
+		rLen = 0;
+		rLoc = 796;
+		rType = 0;
+		vrLen = 1018;
+		vrLoc = 0;
+	};
+	E1ABE996040D4E8F00050002 = {
+		exec = E104851C040C1E3900050002;
+		isa = PBXExecutableBookmark;
+	};
+	E1ABE997040D4E8F00050002 = {
+		exec = E1ABE98B040D48E700050002;
+		isa = PBXExecutableBookmark;
+	};
+	E1ABE998040D4E8F00050002 = {
+		fRef = E1BF166A03DBE27000050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEWebKit.m: mouseUp:";
+		rLen = 0;
+		rLoc = 3048;
+		rType = 0;
+		vrLen = 1810;
+		vrLoc = 792;
+	};
+	E1ABE999040D4E8F00050002 = {
+		fRef = E1BF167203DBEAA000050002;
+		isa = PBXTextBookmark;
+		name = "WebCoreBridge.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 1686;
+		vrLoc = 0;
+	};
+	E1ABE99D040D623300050002 = {
+		fRef = E1BF166A03DBE27000050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEWebKit.m: mouseUp:";
+		rLen = 0;
+		rLoc = 4793;
+		rType = 0;
+		vrLen = 1807;
+		vrLoc = 3386;
+	};
+	E1ABE99E040D623300050002 = {
+		isa = PBXTargetBookmark;
+		trg = F5CD5E9D02DAE2C901AA4DA5;
+	};
+	E1BF159B03DBA71000050002 = {
+		activeExec = 0;
+		executables = (
+			E1BF159D03DBA71000050002,
+		);
+	};
+	E1BF159D03DBA71000050002 = {
+		activeArgIndex = 2147483647;
+		activeArgIndices = (
+		);
+		argumentStrings = (
+		);
+		configStateDict = {
+		};
+		debuggerPlugin = GDBDebugging;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+		);
+		isa = PBXExecutable;
+		name = "ICeCoffEE Installer";
+		shlibInfoDictList = (
+		);
+		sourceDirectories = (
+		);
+	};
+	E1BFDA5C0418987900050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: ICCF_AddAppItemTitle";
+		rLen = 0;
+		rLoc = 3589;
+		rType = 0;
+		vrLen = 1993;
+		vrLoc = 2440;
+	};
+	E1BFDA5D0418987900050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 96";
+		rLen = 0;
+		rLoc = 3113;
+		rType = 0;
+		vrLen = 1336;
+		vrLoc = 1953;
+	};
+	E1C59B0403FDE6DD00050002 = {
+		fRef = E13762D203EC636D00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEBookmarks.c: ICCF_AddBookmark";
+		rLen = 0;
+		rLoc = 3887;
+		rType = 0;
+		vrLen = 1922;
+		vrLoc = 2897;
+	};
+	E1DEF10F03FF95C900050002 = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEActionMenu.c: ICCF_AddAppItemTitle";
+		rLen = 19;
+		rLoc = 3370;
+		rType = 0;
+		vrLen = 2207;
+		vrLoc = 8984;
+	};
+	E1DEF11003FF95C900050002 = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	E1DEF11103FF95C900050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 74";
+		rLen = 0;
+		rLoc = 2509;
+		rType = 0;
+		vrLen = 1563;
+		vrLoc = 0;
+	};
+	E1EAD74C0419ECC600050002 = {
+		fRef = E1BF15A503DBAA5600050002;
+		isa = PBXTextBookmark;
+		name = "ui.plist: 22";
+		rLen = 0;
+		rLoc = 635;
+		rType = 0;
+		vrLen = 1318;
+		vrLoc = 0;
+	};
+	E1EAD74D0419ECC600050002 = {
+		isa = PBXTargetBookmark;
+		trg = F5CD5E9D02DAE2C901AA4DA5;
+	};
+	E1EAD74E0419ECC600050002 = {
+		isa = PBXTargetBookmark;
+		trg = E1BF159B03DBA71000050002;
+	};
+	E1EAD7500419ECC600050002 = {
+		isa = PBXTargetBookmark;
+		trg = E1BF159B03DBA71000050002;
+	};
+	E1EAD7520419ECC600050002 = {
+		fRef = E140C475040BB997009FF178;
+		isa = PBXTextBookmark;
+		name = "Japanese: 48";
+		rLen = 0;
+		rLoc = 2166;
+		rType = 0;
+		vrLen = 0;
+		vrLoc = 10546;
+	};
+	E1F6E3AF040BD0C700050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 63";
+		rLen = 0;
+		rLoc = 2133;
+		rType = 0;
+		vrLen = 1477;
+		vrLoc = 1958;
+	};
+	E1F6E3B0040BD0C700050002 = {
+		fRef = E1F6E3AC040BCC5700050002;
+		isa = PBXTextBookmark;
+		name = "Japanese: 8";
+		rLen = 0;
+		rLoc = 447;
+		rType = 0;
+		vrLen = 1435;
+		vrLoc = 0;
+	};
+	E1F6E3B1040BD0C700050002 = {
+		fRef = E1CBC99803E7602700050002;
+		isa = PBXTextBookmark;
+		name = "English: 96";
+		rLen = 0;
+		rLoc = 3113;
+		rType = 0;
+		vrLen = 1477;
+		vrLoc = 1958;
+	};
+	E1F7C3BE041B372700FEF34D = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: kICLastLoadedVersion";
+		rLen = 0;
+		rLoc = 705;
+		rType = 0;
+		vrLen = 1587;
+		vrLoc = 0;
+	};
+	E1F7C3C0041B372700FEF34D = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 16";
+		rLen = 0;
+		rLoc = 304;
+		rType = 0;
+		vrLen = 1672;
+		vrLoc = 291;
+	};
+	E1F7C3C2041B372700FEF34D = {
+		isa = PBXTargetBookmark;
+		trg = E1BF159B03DBA71000050002;
+	};
+	E1F7C3C3041B372700FEF34D = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 0;
+		rLoc = 6165;
+		rType = 0;
+		vrLen = 2224;
+		vrLoc = 4832;
+	};
+	E1F7C3C4041B372700FEF34D = {
+		fRef = E14343B403DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.m: mouseDown:";
+		rLen = 0;
+		rLoc = 18064;
+		rType = 0;
+		vrLen = 1708;
+		vrLoc = 13239;
+	};
+	E1F7C3C5041B372700FEF34D = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 59";
+		rLen = 31;
+		rLoc = 1932;
+		rType = 0;
+		vrLen = 1672;
+		vrLoc = 291;
+	};
+	E1F7C3C6041B372700FEF34D = {
+		fRef = E14343B303DB4CF200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEE.h: ICCF_KeyboardAction";
+		rLen = 0;
+		rLoc = 1152;
+		rType = 0;
+		vrLen = 1761;
+		vrLoc = 0;
+	};
+	E1F7C3C7041B372700FEF34D = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: ICapeprintf";
+		rLen = 0;
+		rLoc = 417;
+		rType = 0;
+		vrLen = 1308;
+		vrLoc = 0;
+	};
+	E1F7C3C8041B372700FEF34D = {
+		fRef = E165AB3603E7A7FC00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEAction.c: ICCF_DoURLActionMenu";
+		rLen = 0;
+		rLoc = 10752;
+		rType = 0;
+		vrLen = 1764;
+		vrLoc = 0;
+	};
+	E1F7C3C9041B372700FEF34D = {
+		fRef = E182C8F603DE817F00050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.m: kICLastLoadedVersion";
+		rLen = 0;
+		rLoc = 705;
+		rType = 0;
+		vrLen = 1587;
+		vrLoc = 0;
+	};
+	E1F7C3CA041B372700FEF34D = {
+		fRef = E135625E03DC9FC200050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEShared.h: kICLastLoadedVersion";
+		rLen = 0;
+		rLoc = 693;
+		rType = 0;
+		vrLen = 1369;
+		vrLoc = 46;
+	};
+	E1F7C3CB041B372700FEF34D = {
+		fRef = E169DBA703E4F6A400050002;
+		isa = PBXTextBookmark;
+		name = "ICeCoffEEConfig.h: 16";
+		rLen = 0;
+		rLoc = 304;
+		rType = 0;
+		vrLen = 1672;
+		vrLoc = 291;
+	};
+	E1F7C604041B3F8300FEF34D = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 0;
+		rLoc = 6473;
+		rType = 0;
+		vrLen = 1971;
+		vrLoc = 5521;
+	};
+	E1F7C607041B3F8300FEF34D = {
+		fRef = F9A6986E03BE1DF000AA4DA5;
+		isa = PBXTextBookmark;
+		name = "APEMain.m: APEBundleMain";
+		rLen = 0;
+		rLoc = 6473;
+		rType = 0;
+		vrLen = 1971;
+		vrLoc = 5521;
+	};
+	E1F7C608041B3F8300FEF34D = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 2";
+		rLen = 0;
+		rLoc = 44;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	E1F7C60D041B404E00FEF34D = {
+		isa = PBXTargetBookmark;
+		trg = E1BF159B03DBA71000050002;
+	};
+	E1F7C60E041B404E00FEF34D = {
+		isa = PBXTargetBookmark;
+		trg = F5CD5E9D02DAE2C901AA4DA5;
+	};
+	E1F7C60F041B404E00FEF34D = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	E1F7C610041B404E00FEF34D = {
+		isa = PBXTargetBookmark;
+		trg = E1BF159B03DBA71000050002;
+	};
+	E1F7C611041B404E00FEF34D = {
+		isa = PBXTargetBookmark;
+		trg = F5CD5E9D02DAE2C901AA4DA5;
+	};
+	E1F7C612041B404E00FEF34D = {
+		fRef = 089C165DFE840E0CC02AAC07;
+		isa = PBXTextBookmark;
+		name = "English: 5";
+		rLen = 0;
+		rLoc = 151;
+		rType = 0;
+		vrLen = 234;
+		vrLoc = 0;
+	};
+	F57E31A00379599E01AA4DA5 = {
+		activeExec = 0;
+	};
+	F5CD5E9D02DAE2C901AA4DA5 = {
+		activeExec = 0;
+	};
+}
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE APE.pbproj/project.pbxproj
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE APE.pbproj/project.pbxproj	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE APE.pbproj/project.pbxproj	(revision 124)
@@ -0,0 +1,1436 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 38;
+	objects = {
+		089C165CFE840E0CC02AAC07 = {
+			children = (
+				089C165DFE840E0CC02AAC07,
+			);
+			isa = PBXVariantGroup;
+			name = InfoPlist.strings;
+			refType = 4;
+		};
+		089C165DFE840E0CC02AAC07 = {
+			fileEncoding = 10;
+			isa = PBXFileReference;
+			name = English;
+			path = English.lproj/InfoPlist.strings;
+			refType = 4;
+		};
+//080
+//081
+//082
+//083
+//084
+//190
+//191
+//192
+//193
+//194
+		19C28FACFE9D520D11CA2CBB = {
+			children = (
+				F5CD5E9E02DAE2C901AA4DA5,
+				F57E31A10379599E01AA4DA5,
+				E19EB4E803DD355C00050002,
+				E1BF159C03DBA71000050002,
+			);
+			isa = PBXGroup;
+			name = Products;
+			refType = 4;
+		};
+//190
+//191
+//192
+//193
+//194
+//290
+//291
+//292
+//293
+//294
+		29B97313FDCFA39411CA2CEA = {
+			buildStyles = (
+				4A9504CCFFE6A4B311CA0CBA,
+				4A9504CDFFE6A4B311CA0CBA,
+			);
+			hasScannedForEncodings = 1;
+			isa = PBXProject;
+			mainGroup = 29B97314FDCFA39411CA2CEA;
+			projectDirPath = "";
+			targets = (
+				F5CD5E9D02DAE2C901AA4DA5,
+				F57E31A00379599E01AA4DA5,
+				E19EB4E703DD355C00050002,
+				E1BF159B03DBA71000050002,
+			);
+		};
+		29B97314FDCFA39411CA2CEA = {
+			children = (
+				E14993A503DE868D00050002,
+				29B97315FDCFA39411CA2CEA,
+				E14343AE03DB48F700050002,
+				E1BF159F03DBA81600050002,
+				E1BF15BD03DBBD3E00050002,
+				E1BF154403DB950B00050002,
+				29B97317FDCFA39411CA2CEA,
+				29B97323FDCFA39411CA2CEA,
+				19C28FACFE9D520D11CA2CBB,
+			);
+			isa = PBXGroup;
+			name = PatchTest;
+			path = "";
+			refType = 4;
+		};
+		29B97315FDCFA39411CA2CEA = {
+			children = (
+				F9A6986E03BE1DF000AA4DA5,
+				E11854F703F2709E00050002,
+				E169DBA703E4F6A400050002,
+				E14343B303DB4CF200050002,
+				E14343B403DB4CF200050002,
+				E165AB3503E7A7FC00050002,
+				E165AB3603E7A7FC00050002,
+				E13762D103EC636D00050002,
+				E13762D203EC636D00050002,
+				E1AFA51C03ECFDB000050001,
+				E1AFA51D03ECFDBF00050001,
+				F5CD5EAA02DAE61A01AA4DA5,
+				F51250CA038BF76601AA4DA5,
+			);
+			isa = PBXGroup;
+			name = "APE sources";
+			path = "";
+			refType = 4;
+		};
+		29B97317FDCFA39411CA2CEA = {
+			children = (
+				E1BF15BF03DBBE8900050002,
+				29B97318FDCFA39411CA2CEA,
+				089C165CFE840E0CC02AAC07,
+				E1CBC99A03E7603400050002,
+			);
+			isa = PBXGroup;
+			name = Resources;
+			path = "";
+			refType = 4;
+		};
+		29B97318FDCFA39411CA2CEA = {
+			children = (
+				29B97319FDCFA39411CA2CEA,
+				E140C476040BBABD009FF178,
+			);
+			isa = PBXVariantGroup;
+			name = "APE Manager plugin.nib";
+			path = "";
+			refType = 4;
+		};
+		29B97319FDCFA39411CA2CEA = {
+			isa = PBXFileReference;
+			name = "APE Manager plugin.nib";
+			path = "English.lproj/APE Manager plugin.nib";
+			refType = 4;
+		};
+		29B97323FDCFA39411CA2CEA = {
+			children = (
+				E169DCAB03E4FF7A00050002,
+				F574113202F45276011A08DB,
+				F5D3F9FC0305A40D01FE0BDE,
+				E19EB50303DD36E600050002,
+			);
+			isa = PBXGroup;
+			name = Frameworks;
+			path = "";
+			refType = 4;
+		};
+//290
+//291
+//292
+//293
+//294
+//4A0
+//4A1
+//4A2
+//4A3
+//4A4
+		4A9504CCFFE6A4B311CA0CBA = {
+			buildRules = (
+			);
+			buildSettings = {
+				COPY_PHASE_STRIP = NO;
+				OPTIMIZATION_CFLAGS = "-O0";
+			};
+			isa = PBXBuildStyle;
+			name = Development;
+		};
+		4A9504CDFFE6A4B311CA0CBA = {
+			buildRules = (
+			);
+			buildSettings = {
+				COPY_PHASE_STRIP = YES;
+			};
+			isa = PBXBuildStyle;
+			name = Deployment;
+		};
+//4A0
+//4A1
+//4A2
+//4A3
+//4A4
+//E10
+//E11
+//E12
+//E13
+//E14
+		E11854F703F2709E00050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = CPS.h;
+			refType = 4;
+		};
+		E11854F903F270A700050002 = {
+			fileRef = E11854F703F2709E00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1317B2E03DFC4DE00050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEETerminal.h;
+			refType = 4;
+		};
+		E1317B2F03DFC4DE00050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEETerminal.m;
+			refType = 4;
+		};
+		E1317B3003DFC4DE00050002 = {
+			fileRef = E1317B2E03DFC4DE00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1317B3103DFC4DE00050002 = {
+			fileRef = E1317B2F03DFC4DE00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E135625E03DC9FC200050002 = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEEShared.h;
+			refType = 4;
+		};
+		E135625F03DC9FC200050002 = {
+			fileRef = E135625E03DC9FC200050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E13762D103EC636D00050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEBookmarks.h;
+			refType = 4;
+		};
+		E13762D203EC636D00050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEBookmarks.c;
+			refType = 4;
+		};
+		E13762D303EC636D00050002 = {
+			fileRef = E13762D103EC636D00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E13762D403EC636D00050002 = {
+			fileRef = E13762D203EC636D00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E140C472040BB987009FF178 = {
+			children = (
+				F56276C20379923401AA4DA5,
+				E140C475040BB997009FF178,
+			);
+			isa = PBXVariantGroup;
+			name = APEInfo.rtfd;
+			refType = 4;
+		};
+		E140C473040BB987009FF178 = {
+			fileRef = E140C472040BB987009FF178;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E140C475040BB997009FF178 = {
+			isa = PBXFileReference;
+			name = Japanese;
+			path = Japanese.lproj/APEInfo.rtfd;
+			refType = 4;
+		};
+		E140C476040BBABD009FF178 = {
+			isa = PBXFileReference;
+			name = Japanese;
+			path = "Japanese.lproj/APE Manager plugin.nib";
+			refType = 4;
+		};
+		E14343AE03DB48F700050002 = {
+			children = (
+				F9A6987003BE1DFF00AA4DA5,
+				F9A6987103BE1DFF00AA4DA5,
+				F56276B903796C8B01AA4DA5,
+				F56276BA03796C8B01AA4DA5,
+			);
+			isa = PBXGroup;
+			name = "APE Manager plugin sources";
+			path = "";
+			refType = 4;
+		};
+		E14343B303DB4CF200050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEE.h;
+			refType = 4;
+		};
+		E14343B403DB4CF200050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEE.m;
+			refType = 4;
+		};
+		E14343B503DB4CF200050002 = {
+			fileRef = E14343B303DB4CF200050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E14343B603DB4CF200050002 = {
+			fileRef = E14343B403DB4CF200050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E14343B703DB4CFE00050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEScanner.h;
+			refType = 4;
+		};
+		E14343B803DB4CFE00050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEScanner.m;
+			refType = 4;
+		};
+		E14343B903DB4CFE00050002 = {
+			fileRef = E14343B703DB4CFE00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E14343BA03DB4CFE00050002 = {
+			fileRef = E14343B803DB4CFE00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E14343CD03DB66E900050002 = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEESuper.h;
+			refType = 4;
+		};
+		E14343CE03DB66E900050002 = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEESuper.m;
+			refType = 4;
+		};
+		E14343CF03DB66E900050002 = {
+			fileRef = E14343CD03DB66E900050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E14343D003DB66E900050002 = {
+			fileRef = E14343CE03DB66E900050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E14993A503DE868D00050002 = {
+			children = (
+				E135625E03DC9FC200050002,
+				E182C8F603DE817F00050002,
+			);
+			isa = PBXGroup;
+			name = "Shared sources";
+			path = "";
+			refType = 4;
+		};
+		E14993B803DE872B00050002 = {
+			fileRef = E135625E03DC9FC200050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E165AB3503E7A7FC00050002 = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEEAction.h;
+			refType = 4;
+		};
+		E165AB3603E7A7FC00050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEAction.c;
+			refType = 4;
+		};
+		E165AB3703E7A7FC00050002 = {
+			fileRef = E165AB3503E7A7FC00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E165AB3803E7A7FC00050002 = {
+			fileRef = E165AB3603E7A7FC00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E169DBA103E4EF5E00050002 = {
+			fileEncoding = 4;
+			indentWidth = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEETextEdit.c;
+			refType = 4;
+			tabWidth = 4;
+			usesTabs = 0;
+		};
+		E169DBA303E4EF5E00050002 = {
+			fileRef = E169DBA103E4EF5E00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E169DBA403E4F27400050002 = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEETextEdit.h;
+			refType = 4;
+		};
+		E169DBA503E4F27400050002 = {
+			fileRef = E169DBA403E4F27400050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E169DBA703E4F6A400050002 = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEEConfig.h;
+			refType = 4;
+		};
+		E169DCAB03E4FF7A00050002 = {
+			isa = PBXFrameworkReference;
+			name = Carbon.framework;
+			path = /System/Library/Frameworks/Carbon.framework;
+			refType = 0;
+		};
+		E169DCAC03E4FF7A00050002 = {
+			fileRef = E169DCAB03E4FF7A00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E182C8F603DE817F00050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEShared.m;
+			refType = 4;
+		};
+		E182C8F803DE817F00050002 = {
+			fileRef = E182C8F603DE817F00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E182C8FA03DE817F00050002 = {
+			fileRef = E182C8F603DE817F00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E18A7D2703ED3FA400050001 = {
+			fileRef = E169DBA703E4F6A400050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E19EB4E303DD355C00050002 = {
+			buildActionMask = 2147483647;
+			files = (
+				E19EB4FD03DD35A700050002,
+				E19EB50003DD35A700050002,
+			);
+			isa = PBXHeadersBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		E19EB4E403DD355C00050002 = {
+			buildActionMask = 2147483647;
+			files = (
+				E19EB4FE03DD35A700050002,
+				E19EB4FF03DD35A700050002,
+			);
+			isa = PBXSourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		E19EB4E503DD355C00050002 = {
+			buildActionMask = 2147483647;
+			files = (
+				E19EB50403DD36E600050002,
+			);
+			isa = PBXFrameworksBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		E19EB4E703DD355C00050002 = {
+			buildPhases = (
+				E19EB4E303DD355C00050002,
+				E19EB4E403DD355C00050002,
+				E19EB4E503DD355C00050002,
+			);
+			buildSettings = {
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = "";
+				PRECOMPILE_PREFIX_HEADER = YES;
+				PREFIX_HEADER = ICFindFilesToRemove/ICFindFilesToRemove_Prefix.h;
+				PRODUCT_NAME = ICFindFilesToRemove;
+				REZ_EXECUTABLE = YES;
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+			};
+			dependencies = (
+			);
+			isa = PBXToolTarget;
+			name = ICFindFilesToRemove;
+			productInstallPath = /usr/local/bin;
+			productName = ICFindFilesToRemove;
+			productReference = E19EB4E803DD355C00050002;
+		};
+		E19EB4E803DD355C00050002 = {
+			isa = PBXExecutableFileReference;
+			path = ICFindFilesToRemove;
+			refType = 3;
+		};
+		E19EB4F503DD359100050002 = {
+			children = (
+				E19EB4FB03DD35A700050002,
+				E19EB4FC03DD35A700050002,
+				E19EB4FA03DD35A700050002,
+				E19EB4F903DD35A700050002,
+			);
+			isa = PBXGroup;
+			name = ICFindFilesToRemove;
+			refType = 4;
+		};
+		E19EB4F903DD35A700050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = ICFindFilesToRemove_Prefix.h;
+			path = ICFindFilesToRemove/ICFindFilesToRemove_Prefix.h;
+			refType = 4;
+		};
+		E19EB4FA03DD35A700050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = UICookieMonster.m;
+			path = ICFindFilesToRemove/UICookieMonster.m;
+			refType = 4;
+		};
+		E19EB4FB03DD35A700050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = main.m;
+			path = ICFindFilesToRemove/main.m;
+			refType = 4;
+		};
+		E19EB4FC03DD35A700050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			name = UICookieMonster.h;
+			path = ICFindFilesToRemove/UICookieMonster.h;
+			refType = 4;
+		};
+		E19EB4FD03DD35A700050002 = {
+			fileRef = E19EB4F903DD35A700050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E19EB4FE03DD35A700050002 = {
+			fileRef = E19EB4FA03DD35A700050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E19EB4FF03DD35A700050002 = {
+			fileRef = E19EB4FB03DD35A700050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E19EB50003DD35A700050002 = {
+			fileRef = E19EB4FC03DD35A700050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E19EB50203DD365D00050002 = {
+			fileRef = E19EB4E803DD355C00050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E19EB50303DD36E600050002 = {
+			isa = PBXFrameworkReference;
+			name = Foundation.framework;
+			path = /System/Library/Frameworks/Foundation.framework;
+			refType = 0;
+		};
+		E19EB50403DD36E600050002 = {
+			fileRef = E19EB50303DD36E600050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E19EB50503DD378B00050002 = {
+			isa = PBXTargetDependency;
+			target = E19EB4E703DD355C00050002;
+		};
+		E1AFA51C03ECFDB000050001 = {
+			children = (
+				E14343CD03DB66E900050002,
+				E14343CE03DB66E900050002,
+				E14343B703DB4CFE00050002,
+				E14343B803DB4CFE00050002,
+				E1317B2E03DFC4DE00050002,
+				E1317B2F03DFC4DE00050002,
+				E1BB268F03DB74B700050002,
+				E1BB269003DB74B700050002,
+				E1BB269303DB74C200050002,
+				E1BB269403DB74C200050002,
+				E1BF167203DBEAA000050002,
+				E1BF166D03DBE27000050002,
+				E1BF166A03DBE27000050002,
+				E1BF166B03DBE27000050002,
+				E1BF166C03DBE27000050002,
+			);
+			isa = PBXGroup;
+			name = Cocoa;
+			refType = 4;
+		};
+		E1AFA51D03ECFDBF00050001 = {
+			children = (
+				E169DBA403E4F27400050002,
+				E169DBA103E4EF5E00050002,
+			);
+			isa = PBXGroup;
+			name = Carbon;
+			refType = 4;
+		};
+		E1BB268F03DB74B700050002 = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEEMenuOnly.h;
+			refType = 4;
+		};
+		E1BB269003DB74B700050002 = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEEMenuOnly.m;
+			refType = 4;
+		};
+		E1BB269103DB74B700050002 = {
+			fileRef = E1BB268F03DB74B700050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BB269203DB74B700050002 = {
+			fileRef = E1BB269003DB74B700050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BB269303DB74C200050002 = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEEMenuSuper.h;
+			refType = 4;
+		};
+		E1BB269403DB74C200050002 = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = ICeCoffEEMenuSuper.m;
+			refType = 4;
+		};
+		E1BB269503DB74C200050002 = {
+			fileRef = E1BB269303DB74C200050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BB269603DB74C200050002 = {
+			fileRef = E1BB269403DB74C200050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF154403DB950B00050002 = {
+			children = (
+				E140C472040BB987009FF178,
+			);
+			isa = PBXGroup;
+			name = Documentation;
+			path = "";
+			refType = 4;
+		};
+		E1BF159B03DBA71000050002 = {
+			buildPhases = (
+				E1BF15AC03DBAA9F00050002,
+				E1BF166503DBD05E00050002,
+				E1BF159E03DBA73200050002,
+				E1BF15AB03DBAA9900050002,
+				E1BF15B103DBAB9200050002,
+			);
+			buildSettings = {
+				INSTALL_PATH = /;
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = "";
+				PRODUCT_NAME = "ICeCoffEE Installer";
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+				WRAPPER_EXTENSION = app;
+			};
+			dependencies = (
+				E19EB50503DD378B00050002,
+				E1BF15BE03DBBDFD00050002,
+			);
+			isa = PBXApplicationTarget;
+			name = "ICeCoffEE Installer";
+			productInstallPath = /;
+			productName = "ICeCoffEE Installer";
+			productReference = E1BF159C03DBA71000050002;
+			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+<plist version=\"1.0\">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string></string>
+	<key>CFBundleGetInfoString</key>
+	<string></string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string></string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string></string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string></string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>0.0.1d1</string>
+</dict>
+</plist>
+";
+		};
+		E1BF159C03DBA71000050002 = {
+			isa = PBXApplicationReference;
+			path = "ICeCoffEE Installer.app";
+			refType = 3;
+		};
+		E1BF159E03DBA73200050002 = {
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 7;
+			files = (
+				E1BF15A103DBAA4600050002,
+			);
+			isa = PBXCopyFilesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		E1BF159F03DBA81600050002 = {
+			children = (
+				E19EB4F503DD359100050002,
+				E1BF15A903DBAA9000050002,
+				E1BF15A003DBAA4600050002,
+				E1BF15A203DBAA5600050002,
+			);
+			isa = PBXGroup;
+			name = "Installer components";
+			path = "";
+			refType = 4;
+		};
+		E1BF15A003DBAA4600050002 = {
+			isa = PBXFileReference;
+			name = ui.icns;
+			path = "Installer components/ui.icns";
+			refType = 4;
+		};
+		E1BF15A103DBAA4600050002 = {
+			fileRef = E1BF15A003DBAA4600050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF15A203DBAA5600050002 = {
+			children = (
+				E1BF15A403DBAA5600050002,
+				E1BF15A503DBAA5600050002,
+			);
+			isa = PBXGroup;
+			name = ui;
+			path = "Installer components/ui";
+			refType = 4;
+		};
+		E1BF15A403DBAA5600050002 = {
+			fileEncoding = 30;
+			isa = PBXExecutableFileReference;
+			path = Preinstall.sh;
+			refType = 4;
+		};
+		E1BF15A503DBAA5600050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ui.plist;
+			refType = 4;
+		};
+		E1BF15A703DBAA5700050002 = {
+			fileRef = E1BF15A403DBAA5600050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF15A803DBAA5700050002 = {
+			fileRef = E1BF15A503DBAA5600050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF15A903DBAA9000050002 = {
+			isa = PBXApplicationReference;
+			name = "ICeCoffEE Installer.app";
+			path = "Installer components/ICeCoffEE Installer.app";
+			refType = 4;
+		};
+		E1BF15AA03DBAA9000050002 = {
+			fileRef = E1BF15A903DBAA9000050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF15AB03DBAA9900050002 = {
+			buildActionMask = 2147483647;
+			dstPath = ui;
+			dstSubfolderSpec = 7;
+			files = (
+				E1BF15A703DBAA5700050002,
+				E19EB50203DD365D00050002,
+				E1BF166803DBD09A00050002,
+				E1BF15A803DBAA5700050002,
+			);
+			isa = PBXCopyFilesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		E1BF15AC03DBAA9F00050002 = {
+			buildActionMask = 8;
+			dstPath = "";
+			dstSubfolderSpec = 0;
+			files = (
+				E1BF15AA03DBAA9000050002,
+			);
+			isa = PBXCopyFilesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 1;
+		};
+		E1BF15B103DBAB9200050002 = {
+			buildActionMask = 12;
+			files = (
+			);
+			generatedFileNames = (
+			);
+			isa = PBXShellScriptBuildPhase;
+			neededFileNames = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "cd \"${TARGET_BUILD_DIR}/ICeCoffEE Installer.app/Contents/Resources/\" && \\\n# printenv | sort\nfor i in ui/ICeCoffEE.ape/Contents/Resources/*.lproj\ndo\n    LPROJ=\"`basename $i`\"\n    mkdir -p \"${LPROJ}/ui\"\n    ln -s \"../../ui/ICeCoffEE.ape/Contents/Resources/$LPROJ/APEInfo.rtfd\" \"${LPROJ}/ui/ReadMe.rtfd\"\ndone";
+		};
+		E1BF15BD03DBBD3E00050002 = {
+			fileEncoding = 30;
+			isa = PBXExecutableFileReference;
+			name = "package-ICeCoffEE.sh";
+			path = "/Users/nicholas/Documents/Development/ICeCoffEE/package-ICeCoffEE.sh";
+			refType = 0;
+		};
+		E1BF15BE03DBBDFD00050002 = {
+			isa = PBXTargetDependency;
+			target = F5CD5E9D02DAE2C901AA4DA5;
+		};
+		E1BF15BF03DBBE8900050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = VERSION;
+			refType = 4;
+		};
+		E1BF166503DBD05E00050002 = {
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 16;
+			files = (
+				E1BF166603DBD07C00050002,
+			);
+			isa = PBXCopyFilesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		E1BF166603DBD07C00050002 = {
+			fileRef = E1BF15A903DBAA9000050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF166803DBD09A00050002 = {
+			fileRef = F5CD5E9E02DAE2C901AA4DA5;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF166A03DBE27000050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEWebKit.m;
+			refType = 4;
+		};
+		E1BF166B03DBE27000050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEWebKitSuper.h;
+			refType = 4;
+		};
+		E1BF166C03DBE27000050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEWebKitSuper.m;
+			refType = 4;
+		};
+		E1BF166D03DBE27000050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEWebKit.h;
+			refType = 4;
+		};
+		E1BF166E03DBE27000050002 = {
+			fileRef = E1BF166A03DBE27000050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF166F03DBE27000050002 = {
+			fileRef = E1BF166B03DBE27000050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF167003DBE27000050002 = {
+			fileRef = E1BF166C03DBE27000050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF167103DBE27000050002 = {
+			fileRef = E1BF166D03DBE27000050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1BF167203DBEAA000050002 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = WebCoreBridge.h;
+			refType = 4;
+		};
+		E1CBC99803E7602700050002 = {
+			fileEncoding = 10;
+			isa = PBXFileReference;
+			name = English;
+			path = English.lproj/Localizable.strings;
+			refType = 4;
+		};
+		E1CBC99A03E7603400050002 = {
+			children = (
+				E1CBC99803E7602700050002,
+				E1F6E3AC040BCC5700050002,
+			);
+			isa = PBXVariantGroup;
+			name = Localizable.strings;
+			refType = 4;
+		};
+		E1CBC99B03E7603400050002 = {
+			fileRef = E1CBC99A03E7603400050002;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		E1F6E3AC040BCC5700050002 = {
+			fileEncoding = 10;
+			isa = PBXFileReference;
+			name = Japanese;
+			path = Japanese.lproj/Localizable.strings;
+			refType = 4;
+		};
+//E10
+//E11
+//E12
+//E13
+//E14
+//F50
+//F51
+//F52
+//F53
+//F54
+		F512509E038BEF1501AA4DA5 = {
+			fileRef = F5D3F9FC0305A40D01FE0BDE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F51250CA038BF76601AA4DA5 = {
+			isa = PBXFileReference;
+			name = APETools.o;
+			path = /Library/Frameworks/ApplicationEnhancer.framework/Versions/A/Libraries/APETools.o;
+			refType = 0;
+		};
+		F51250CC038BF84F01AA4DA5 = {
+			fileRef = F51250CA038BF76601AA4DA5;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F56276AB0379633D01AA4DA5 = {
+			isa = PBXTargetDependency;
+			target = F57E31A00379599E01AA4DA5;
+		};
+		F56276B903796C8B01AA4DA5 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = CFPreferencesWrapper.h;
+			refType = 4;
+		};
+		F56276BA03796C8B01AA4DA5 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = CFPreferencesWrapper.m;
+			refType = 4;
+		};
+		F56276BB03796C8B01AA4DA5 = {
+			fileRef = F56276B903796C8B01AA4DA5;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F56276BC03796C8B01AA4DA5 = {
+			fileRef = F56276BA03796C8B01AA4DA5;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F56276C20379923401AA4DA5 = {
+			isa = PBXFileReference;
+			name = English;
+			path = English.lproj/APEInfo.rtfd;
+			refType = 4;
+		};
+		F574113202F45276011A08DB = {
+			isa = PBXFrameworkReference;
+			name = Cocoa.framework;
+			path = /System/Library/Frameworks/Cocoa.framework;
+			refType = 0;
+		};
+		F574113B02F45276011A08DB = {
+			fileRef = F574113202F45276011A08DB;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F57E319B0379599E01AA4DA5 = {
+			buildActionMask = 2147483647;
+			files = (
+				F56276BB03796C8B01AA4DA5,
+				F9A6987203BE1DFF00AA4DA5,
+				E14993B803DE872B00050002,
+			);
+			isa = PBXHeadersBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F57E319C0379599E01AA4DA5 = {
+			buildActionMask = 2147483647;
+			files = (
+				F57E31A703795CCF01AA4DA5,
+			);
+			isa = PBXResourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F57E319D0379599E01AA4DA5 = {
+			buildActionMask = 2147483647;
+			files = (
+				F56276BC03796C8B01AA4DA5,
+				F9A6987303BE1DFF00AA4DA5,
+				E182C8FA03DE817F00050002,
+			);
+			isa = PBXSourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F57E319E0379599E01AA4DA5 = {
+			buildActionMask = 2147483647;
+			files = (
+				F57E31A903795F0801AA4DA5,
+				F512509E038BEF1501AA4DA5,
+			);
+			isa = PBXFrameworksBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F57E319F0379599E01AA4DA5 = {
+			buildActionMask = 2147483647;
+			files = (
+			);
+			isa = PBXRezBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F57E31A00379599E01AA4DA5 = {
+			buildPhases = (
+				F57E319B0379599E01AA4DA5,
+				F57E319C0379599E01AA4DA5,
+				F57E319D0379599E01AA4DA5,
+				F57E319E0379599E01AA4DA5,
+				F57E319F0379599E01AA4DA5,
+			);
+			buildSettings = {
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = "";
+				PRODUCT_NAME = APEManagerPrefPane;
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+				WRAPPER_EXTENSION = plugin;
+			};
+			dependencies = (
+			);
+			isa = PBXBundleTarget;
+			name = APEManagerPrefPane;
+			productInstallPath = "$(USER_LIBRARY_DIR)/Bundles";
+			productName = APEManagerPrefPane;
+			productReference = F57E31A10379599E01AA4DA5;
+			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+<plist version=\"1.0\">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string></string>
+	<key>CFBundleGetInfoString</key>
+	<string></string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string></string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string></string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleShortVersionString</key>
+	<string></string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>1.0</string>
+	<key>NSMainNibFile</key>
+	<string>APE Manager plugin</string>
+	<key>NSPrincipalClass</key>
+	<string>ICeCoffEEController</string>
+</dict>
+</plist>
+";
+		};
+		F57E31A10379599E01AA4DA5 = {
+			isa = PBXBundleReference;
+			path = APEManagerPrefPane.plugin;
+			refType = 3;
+		};
+		F57E31A703795CCF01AA4DA5 = {
+			fileRef = 29B97318FDCFA39411CA2CEA;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F57E31A903795F0801AA4DA5 = {
+			fileRef = F574113202F45276011A08DB;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F57E31AA03795F6801AA4DA5 = {
+			buildActionMask = 2147483647;
+			dstPath = "";
+			dstSubfolderSpec = 7;
+			files = (
+				F57E31AD03795F7801AA4DA5,
+			);
+			isa = PBXCopyFilesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F57E31AD03795F7801AA4DA5 = {
+			fileRef = F57E31A10379599E01AA4DA5;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F5A6E007031F673B01AA4DA5 = {
+			buildActionMask = 2147483647;
+			files = (
+			);
+			generatedFileNames = (
+			);
+			isa = PBXShellScriptBuildPhase;
+			neededFileNames = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+			shellPath = /bin/sh;
+			shellScript = "/Developer/Tools/SetFile -a B \"$TARGET_BUILD_DIR/$PRODUCT_NAME.$WRAPPER_EXTENSION\"";
+		};
+		F5CD5E9802DAE2C901AA4DA5 = {
+			buildActionMask = 2147483647;
+			files = (
+				E14343B503DB4CF200050002,
+				E14343B903DB4CFE00050002,
+				E14343CF03DB66E900050002,
+				E1BB269103DB74B700050002,
+				E1BB269503DB74C200050002,
+				E1BF166F03DBE27000050002,
+				E1BF167103DBE27000050002,
+				E135625F03DC9FC200050002,
+				E1317B3003DFC4DE00050002,
+				E169DBA503E4F27400050002,
+				E165AB3703E7A7FC00050002,
+				E13762D303EC636D00050002,
+				E18A7D2703ED3FA400050001,
+				E11854F903F270A700050002,
+			);
+			isa = PBXHeadersBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F5CD5E9902DAE2C901AA4DA5 = {
+			buildActionMask = 2147483647;
+			files = (
+				E140C473040BB987009FF178,
+				E1CBC99B03E7603400050002,
+			);
+			isa = PBXResourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F5CD5E9A02DAE2C901AA4DA5 = {
+			buildActionMask = 2147483647;
+			files = (
+				F5CD5EAB02DAE61A01AA4DA5,
+				F9A6986F03BE1DF000AA4DA5,
+				E14343B603DB4CF200050002,
+				E14343BA03DB4CFE00050002,
+				E14343D003DB66E900050002,
+				E1BB269203DB74B700050002,
+				E1BB269603DB74C200050002,
+				E1BF166E03DBE27000050002,
+				E1BF167003DBE27000050002,
+				E182C8F803DE817F00050002,
+				E1317B3103DFC4DE00050002,
+				E169DBA303E4EF5E00050002,
+				E165AB3803E7A7FC00050002,
+				E13762D403EC636D00050002,
+			);
+			isa = PBXSourcesBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F5CD5E9B02DAE2C901AA4DA5 = {
+			buildActionMask = 2147483647;
+			files = (
+				F574113B02F45276011A08DB,
+				F5D3F9FE0305A40D01FE0BDE,
+				F51250CC038BF84F01AA4DA5,
+				E169DCAC03E4FF7A00050002,
+			);
+			isa = PBXFrameworksBuildPhase;
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+		F5CD5E9D02DAE2C901AA4DA5 = {
+			buildPhases = (
+				F5CD5E9802DAE2C901AA4DA5,
+				F5CD5E9902DAE2C901AA4DA5,
+				F5CD5E9A02DAE2C901AA4DA5,
+				F5CD5E9B02DAE2C901AA4DA5,
+				F57E31AA03795F6801AA4DA5,
+				F5A6E007031F673B01AA4DA5,
+			);
+			buildSettings = {
+				EXPORTED_SYMBOLS_FILE = Exports.exp;
+				FRAMEWORK_SEARCH_PATHS = "\"$(SYSTEM_LIBRARY_DIR)/PrivateFrameworks\"";
+				OTHER_CFLAGS = "";
+				OTHER_LDFLAGS = "";
+				OTHER_REZFLAGS = "";
+				PRODUCT_NAME = ICeCoffEE;
+				SECTORDER_FLAGS = "";
+				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
+				WRAPPER_EXTENSION = ape;
+			};
+			dependencies = (
+				F56276AB0379633D01AA4DA5,
+			);
+			isa = PBXBundleTarget;
+			name = "APE Module";
+			productInstallPath = "$(USER_LIBRARY_DIR)/Bundles";
+			productName = "Labels X";
+			productReference = F5CD5E9E02DAE2C901AA4DA5;
+			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
+<plist version=\"1.0\">
+<dict>
+	<key>APEHasExcludeList</key>
+	<true/>
+	<key>APEMatchInfo</key>
+	<dict>
+		<key>APEMatchFlavor</key>
+		<string>Cocoa</string>
+	</dict>
+	<key>APEVersionRequired</key>
+	<string>1.2.1</string>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>ICeCoffEE</string>
+	<key>CFBundleGetInfoString</key>
+	<string></string>
+	<key>CFBundleIconFile</key>
+	<string></string>
+	<key>CFBundleIdentifier</key>
+	<string>net.sabi.ICeCoffEE</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string></string>
+	<key>CFBundlePackageType</key>
+	<string>BNDL</string>
+	<key>CFBundleShortVersionString</key>
+	<string></string>
+	<key>CFBundleSignature</key>
+	<string>ICCF</string>
+	<key>CFBundleVersion</key>
+	<string>1.3.2</string>
+</dict>
+</plist>
+";
+		};
+		F5CD5E9E02DAE2C901AA4DA5 = {
+			isa = PBXBundleReference;
+			path = ICeCoffEE.ape;
+			refType = 3;
+		};
+		F5CD5EAA02DAE61A01AA4DA5 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = Exports.exp;
+			refType = 4;
+		};
+		F5CD5EAB02DAE61A01AA4DA5 = {
+			fileRef = F5CD5EAA02DAE61A01AA4DA5;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F5D3F9FC0305A40D01FE0BDE = {
+			isa = PBXFrameworkReference;
+			name = ApplicationEnhancer.framework;
+			path = /Library/Frameworks/ApplicationEnhancer.framework;
+			refType = 0;
+		};
+		F5D3F9FE0305A40D01FE0BDE = {
+			fileRef = F5D3F9FC0305A40D01FE0BDE;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+//F50
+//F51
+//F52
+//F53
+//F54
+//F90
+//F91
+//F92
+//F93
+//F94
+		F9A6986E03BE1DF000AA4DA5 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = APEMain.m;
+			refType = 4;
+		};
+		F9A6986F03BE1DF000AA4DA5 = {
+			fileRef = F9A6986E03BE1DF000AA4DA5;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F9A6987003BE1DFF00AA4DA5 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEController.h;
+			refType = 4;
+		};
+		F9A6987103BE1DFF00AA4DA5 = {
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = ICeCoffEEController.m;
+			refType = 4;
+		};
+		F9A6987203BE1DFF00AA4DA5 = {
+			fileRef = F9A6987003BE1DFF00AA4DA5;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		F9A6987303BE1DFF00AA4DA5 = {
+			fileRef = F9A6987103BE1DFF00AA4DA5;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+	};
+	rootObject = 29B97313FDCFA39411CA2CEA;
+}
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE.h	(revision 124)
@@ -0,0 +1,57 @@
+/* ICeCoffEE */
+
+#import "ICeCoffEESuper.h"
+#import "ICeCoffEEShared.h"
+#import "ICeCoffEEConfig.h"
+
+#define ICCF_OSErrAssert(err, context) NSAssert(err == noErr, ICCF_ErrString(err, context));
+#define ICCF_OSErrCAssert(err, context) NSCAssert(err == noErr, ICCF_ErrString(err, context));
+
+// search for: (?<!ICCF_LocalizedString\()(?<!ICLog\()(?<!ICapeprintf("\()(?<!%)(@"(?!Internal error: )[^"]+") replace with: ICCF_LocalizedString(\1)
+#define ICCF_LocalizedString(key) \
+    [(NSString *)CFBundleCopyLocalizedString(ICCF_bundle, (CFStringRef)(key), CFSTR(""), NULL) autorelease]
+
+// returns an explanation for the provided OSStatus in the supplied
+// if nil is returned, the error is harmless (e.g., user cancelled)
+NSString *ICCF_ErrString(OSStatus err, NSString *context);
+
+// handles an exception as specified by ICError* preferences
+// if NO is returned, the exception is harmless (e.g., user cancelled)
+BOOL ICCF_HandleException(NSException *e);
+
+// returns YES if the event is a command-mouse down
+BOOL ICCF_EventIsCommandMouseDown(NSEvent *e);
+
+// returns the action determined by the current state of keyboard modifiers
+iccfURLAction ICCF_KeyboardAction();
+
+// throws an exception if the URL range is nonexistent or too big
+void ICCF_CheckRange(NSRange range);
+
+// returns NSCharacterSets representing valid URL delimiters for left and right sides
+void ICCF_Delimiters(NSCharacterSet **leftPtr, NSCharacterSet **rightPtr);
+
+// start Internet Config (before ICCF_LaunchURL)
+void ICCF_StartIC();
+
+// stop Internet Config (after ICCF_LaunchURL)
+void ICCF_StopIC();
+
+// calls ICParseURL, returns output range
+void ICCF_ParseURL(NSString *string, NSRange *range);
+
+// calls ICCF_DoURLAction
+void ICCF_LaunchURL(NSString *string, iccfURLAction action);
+
+// launch URL from on selected text view cursor position or selection
+void ICCF_LaunchURLFromTextView(NSTextView *self);
+
+// returns contextual menu with Services item added, if selected
+NSMenu *ICCF_MenuForEvent(NSTextView *self, NSMenu *contextMenu, NSEvent *e);
+
+// adds or removes services menu in menu bar
+void ICCF_AddRemoveServicesMenu();
+
+@interface ICeCoffEE : ICeCoffEESuper
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEE.m	(revision 124)
@@ -0,0 +1,489 @@
+// ICeCoffEE - Internet Config Cocoa Editor Extension
+// Nicholas Riley <mailto:icecoffee@sabi.net>
+
+/* To do/think about:
+
+- TXNClick - MLTE has its own support in Jaguar and later, but it's lousy
+
+Done:
+
+- TEClick - TextEdit
+- flash on success (like BBEdit)
+- display dialog on failure (decode OSStatus)
+- adjust URL blinking
+- app exclusion list - make a pref pane (see AquaShade config)
+- _LSCopyApplicationURLsForItemURL - list apps
+- Menu on command-option-click: add bookmark, open with other helper, pass to configurable service, ...?
+
+*/
+
+#import "ICeCoffEE.h"
+#import <Carbon/Carbon.h>
+#include <unistd.h>
+#import "ICeCoffEESuper.h"
+
+iccfPrefRec ICCF_prefs;
+
+NSString *ICCF_ErrString(OSStatus err, NSString *context) {    
+    if (err == noErr || err == userCanceledErr) return nil;
+
+    NSString *errNum = [NSString stringWithFormat: @"%ld", err];
+    NSString *errDesc = ICCF_LocalizedString(errNum);
+
+    if (errDesc == NULL || errDesc == errNum)
+        errDesc = [NSString stringWithFormat: ICCF_LocalizedString(@"An unknown error occurred in %@"), context];
+
+    return [NSString stringWithFormat: @"%@ (%d)", errDesc, (int)err];
+}
+
+CFStringRef ICCF_CopyErrString(OSStatus err, CFStringRef context) {
+    if (err == noErr || err == userCanceledErr) return NULL;
+
+    CFStringRef errNum = CFStringCreateWithFormat(NULL, NULL, CFSTR("%ld"), err);
+    CFStringRef errDesc = ICCF_CopyLocalizedString(errNum);
+
+    if (errDesc == NULL || errDesc == errNum) {
+        CFStringRef errDescFormat = ICCF_CopyLocalizedString(CFSTR("An unknown error occurred in %@"));
+        if (errDesc != NULL) CFRelease(errDesc);
+        errDesc = CFStringCreateWithFormat(NULL, NULL, errDescFormat, context);
+    }
+
+    CFStringRef errStr = CFStringCreateWithFormat(NULL, NULL, CFSTR("%@ (%d)"), errDesc, (int)err);
+
+    if (errNum != NULL) CFRelease(errNum);
+    if (errDesc != NULL) CFRelease(errDesc);
+    return errStr;
+}
+
+BOOL ICCF_EventIsCommandMouseDown(NSEvent *e) {
+    return ([e type] == NSLeftMouseDown && ([e modifierFlags] & NSCommandKeyMask) != 0 && [e clickCount] == 1);
+}
+
+iccfURLAction ICCF_KeyboardAction() {
+    unsigned int modifierFlags = [[NSApp currentEvent] modifierFlags];
+    iccfURLAction action;
+    action.presentMenu = (modifierFlags & NSAlternateKeyMask) != 0;
+    action.launchInBackground = (modifierFlags & NSShiftKeyMask) != 0;
+    return action;
+}
+
+void ICCF_CheckRange(NSRange range) {
+    NSCAssert(range.length > 0, ICCF_LocalizedString(@"No URL is selected"));
+    NSCAssert1(range.length <= ICCF_MAX_URL_LEN, ICCF_LocalizedString(@"The potential URL is longer than %lu characters"), ICCF_MAX_URL_LEN);
+}
+
+void ICCF_Delimiters(NSCharacterSet **leftPtr, NSCharacterSet **rightPtr) {
+    static NSCharacterSet *urlLeftDelimiters = nil, *urlRightDelimiters = nil;
+
+    if (urlLeftDelimiters == nil || urlRightDelimiters == nil) {
+        NSMutableCharacterSet *set = [[NSCharacterSet whitespaceAndNewlineCharacterSet] mutableCopy];
+        NSMutableCharacterSet *tmpSet;
+        [urlLeftDelimiters release];
+        [urlRightDelimiters release];
+
+        [set autorelease];
+        [set formUnionWithCharacterSet: [NSCharacterSet punctuationCharacterSet]];
+        [set removeCharactersInString: @";/?:@&=+$,-_.!~*'()%#"]; // RFC 2396 ¤2.2, 2.3, 2.4, plus #
+
+        tmpSet = [[set mutableCopy] autorelease];
+        [tmpSet formUnionWithCharacterSet: [NSCharacterSet characterSetWithCharactersInString: @"><("]];
+        urlLeftDelimiters = [tmpSet copy]; // make immutable again - for efficiency
+
+        tmpSet = [[set mutableCopy] autorelease];
+        [tmpSet formUnionWithCharacterSet: [NSCharacterSet characterSetWithCharactersInString: @"><)"]];
+        urlRightDelimiters = [tmpSet copy]; // make immutable again - for efficiency
+    }
+
+    *leftPtr = urlLeftDelimiters; *rightPtr = urlRightDelimiters;
+}
+
+static ICInstance ICCF_icInst = NULL;
+
+void ICCF_StartIC() {
+    OSStatus err;
+    
+    if (ICCF_icInst != NULL) {
+        ICLog(@"ICCF_StartIC: Internet Config is already running!");
+        ICCF_StopIC();
+    }
+    err = ICStart(&ICCF_icInst, kICCFCreator);
+    NSCAssert1(err == noErr, ICCF_LocalizedString(@"Unable to start Internet Config (error %d)"), err);
+}
+
+void ICCF_StopIC() {
+    if (ICCF_icInst == NULL) {
+        ICLog(@"ICCF_StopIC: Internet Config is not running!");
+    } else {
+        ICStop(ICCF_icInst);
+        ICCF_icInst = NULL;
+    }
+}
+
+ICInstance ICCF_GetInst() {
+    NSCAssert(ICCF_icInst != NULL, @"Internal error: Called ICCF_GetInst without ICCF_StartIC");
+    return ICCF_icInst;
+}
+
+ConstStringPtr ICCF_GetHint(ICInstance inst, const char *urlData, Size length, long *selStart, long *selEnd, Boolean *needsSlashes) {
+    Handle h = NewHandle(0);
+    OSStatus err;
+
+    if (h == NULL) return NULL;
+
+    // parse the URL providing a bogus protocol, to get rid of escaped forms
+    err = ICParseURL(inst, "\p*", urlData, length, selStart, selEnd, h);
+    if (err != noErr) return NULL;
+
+    // scan through the parsed URL looking for characters not found in email addresses
+    Size hSize = GetHandleSize(h);
+    if (hSize == 0) return NULL;
+
+    const char *urlParsed = *h;
+    long i = 0;
+    Boolean sawAt = false;
+    if (hSize >= 2 && urlParsed[0] == '*' && urlParsed[1] == ':') {
+        // this is an IC-inserted protocol; skip over it
+        i = 2;
+        *needsSlashes = (hSize < i + 2 || urlParsed[i] != '/' || urlParsed[i + 1] != '/');
+    } else *needsSlashes = false;
+    for ( ; i < hSize ; i++) {
+        char c = urlParsed[i];
+        if (c == '@') {
+            sawAt = true;
+        } else if (!((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') ||
+                     (c == '+' || c == '-' || c == '_' || c == '!' || c == '.'))) {
+            DisposeHandle(h);
+            return "\phttp";
+        }
+    }
+    DisposeHandle(h);
+    if (sawAt) {
+        *needsSlashes = false;
+        return "\pmailto";
+    }
+    return "\phttp";
+}
+
+static const char *kICSlashes = "//";
+
+void ICCF_AddSlashes(Handle h, ConstStringPtr hint) {
+    Size sizeBefore = GetHandleSize(h);
+    unsigned char hintLength = StrLength(hint);
+    char *copy = (char *)malloc(sizeBefore);
+    memcpy(copy, *h, sizeBefore);
+    ICLog(@"ICCF_AddSlashes before: |%s|\n", *h);
+    ReallocateHandle(h, sizeBefore + 2);
+
+    // if *h begins with '<hint>:', then copy the slashes after it
+    if (sizeBefore > hintLength + 1 && strncmp(&hint[1], copy, hintLength) == 0 && copy[hintLength] == ':') {
+        memcpy(*h, copy, hintLength + 1);
+        memcpy(*h + hintLength + 1, kICSlashes, 2);
+        memcpy(*h + hintLength + 3, &copy[hintLength + 1], sizeBefore - hintLength - 1);
+    } else {
+        memcpy(*h, kICSlashes, 2);
+        memcpy(*h + 2, copy, sizeBefore);
+    }
+        
+    free(copy);
+    ICLog(@"ICCF_AddSlashes after: |%s|\n", *h);
+}
+
+void ICCF_ParseURL(NSString *string, NSRange *range) {
+    OSStatus err;
+    Handle h;
+    long selStart, selEnd;
+    char *urlData = NULL;
+
+    NSCAssert(range->length == [string length], @"Internal error: URL string is wrong length");
+    
+    NS_DURING
+        if ([[NSCharacterSet characterSetWithCharactersInString: @";,."] characterIsMember:
+            [string characterAtIndex: range->length - 1]]) {
+            range->length--;
+        }
+
+        string = [string substringToIndex: range->length];
+
+        ICLog(@"Parsing URL |%@|", string);
+
+        urlData = (char *)malloc( (range->length + 1) * sizeof(char));
+        NSCAssert(urlData != NULL, @"Internal error: canÕt allocate memory for URL string");
+
+        selStart = 0; selEnd = range->length;
+
+        [string getCString: urlData];
+
+        h = NewHandle(0);
+        NSCAssert(h != NULL, @"Internal error: canÕt allocate URL handle");
+
+        err = ICParseURL(ICCF_GetInst(), "\pmailto", urlData, range->length, &selStart, &selEnd, h);
+        DisposeHandle(h);
+
+        ICCF_OSErrCAssert(err, @"ICParseURL");
+    
+        range->length = selEnd - selStart;
+        range->location += selStart;
+    NS_HANDLER
+        free(urlData);
+        [localException raise];
+    NS_ENDHANDLER
+    
+    free(urlData);
+}
+
+void ICCF_LaunchURL(NSString *string, iccfURLAction action) {
+    OSStatus err;
+    long selStart, selEnd;
+    unsigned len = [string length];
+
+    Handle h = NULL;
+    
+    NS_DURING
+        h = NewHandle(len);
+        if (h == NULL)
+            ICCF_OSErrCAssert(MemError(), @"NewHandle");
+
+        if (CFStringGetBytes((CFStringRef)string, CFRangeMake(0, len), kCFStringEncodingASCII, '\0', false, *h, len, NULL) != len)
+            ICCF_OSErrCAssert(kTECNoConversionPathErr, @"CFStringGetBytes");
+
+        selStart = 0; selEnd = len;
+
+        Boolean needsSlashes;
+        ConstStringPtr hint = ICCF_GetHint(ICCF_GetInst(), *h, len, &selStart, &selEnd, &needsSlashes);
+        NSCAssert(hint != NULL, @"Internal error: canÕt get protocol hint for URL");
+
+        if (needsSlashes) {
+            ICCF_AddSlashes(h, hint);
+            len = selEnd = GetHandleSize(h);
+        }
+
+        err = ICCF_DoURLAction(ICCF_GetInst(), hint, *h, selStart, selEnd, action);
+        ICCF_OSErrCAssert(err, @"ICCF_DoURLAction");
+        
+    NS_HANDLER
+        DisposeHandle(h);
+        [localException raise];
+    NS_ENDHANDLER
+
+    DisposeHandle(h);    
+}
+
+// XXX not sure what to do if there's already a selection; BBEdit and MLTE extend it, Tex-Edit Plus doesn't.
+// RFC-ordained max URL length, just to avoid passing IC/LS multi-megabyte documents
+#if ICCF_DEBUG
+const long ICCF_MAX_URL_LEN = 60; // XXX change later
+#else
+const long ICCF_MAX_URL_LEN = 1024;
+#endif
+
+Boolean ICCF_enabled = true;
+
+BOOL ICCF_HandleException(NSException *e) {
+    if ([e reason] == nil || [[e reason] length] == 0)
+        return NO;
+    
+    if (ICCF_prefs.errorSoundEnabled) NSBeep();
+    if (!ICCF_prefs.errorDialogEnabled) return YES;
+    
+    int result = NSRunAlertPanel(ICCF_LocalizedString(@"AlertTitle"), ICCF_LocalizedString(@"AlertMessage%@"), nil, nil, ICCF_LocalizedString(@"AlertDisableButton"), e);
+    if (result != NSAlertDefaultReturn) {
+        result = NSRunAlertPanel(ICCF_LocalizedString(@"DisableAlertTitle"), ICCF_LocalizedString(@"DisableAlertMessage"), ICCF_LocalizedString(@"DisableAlertDisableButton"), ICCF_LocalizedString(@"DisableAlertDontDisableButton"), nil);
+        if (result == NSAlertDefaultReturn)
+            ICCF_enabled = NO;
+    }
+    return YES;
+}
+
+void ICCF_LaunchURLFromTextView(NSTextView *self) {
+    NSCharacterSet *urlLeftDelimiters = nil, *urlRightDelimiters = nil;
+    NSRange range = [self selectedRange], delimiterRange;
+    NSColor *insertionPointColor = [self insertionPointColor];
+    NSString *s = [[self textStorage] string]; // according to the class documentation, sending 'string' is guaranteed to be O(1)
+    unsigned extraLen;
+    int i;
+
+    NS_DURING
+
+        NSCAssert(range.location != NSNotFound, ICCF_LocalizedString(@"There is no insertion point or selection in the text field where you clicked"));
+        NSCAssert(s != nil, ICCF_LocalizedString(@"Sorry, ICeCoffEE is unable to locate the insertion point or selection"));
+
+        ICCF_StartIC();
+
+        NSCAssert([s length] != 0, ICCF_LocalizedString(@"No text was found"));
+
+        if (range.location == [s length]) range.location--; // work around bug in selectionRangeForProposedRange (r. 2845418)
+
+        range = [self selectionRangeForProposedRange: range granularity: NSSelectByWord];
+
+        // However, NSSelectByWord does not capture even the approximate boundaries of a URL
+        // (text to a space/line ending character); it'll stop at a period in the middle of a hostname.
+        // So, we expand it as follows:
+
+        ICCF_CheckRange(range);
+
+        ICCF_Delimiters(&urlLeftDelimiters, &urlRightDelimiters);
+
+        // XXX instead of 0, make this stop at the max URL length to prevent protracted searches
+        // add 1 to range to trap delimiters that are on the edge of the selection (i.e., <...)
+        delimiterRange = [s rangeOfCharacterFromSet: urlLeftDelimiters
+                                            options: NSLiteralSearch | NSBackwardsSearch
+                                              range: NSMakeRange(0, range.location + (range.location != [s length]))];
+        if (delimiterRange.location == NSNotFound) {
+            // extend to beginning of string
+            range.length += range.location;
+            range.location = 0;
+        } else {
+            NSCAssert(delimiterRange.length == 1, @"Internal error: delimiter matched range is not of length 1");
+            range.length += range.location - delimiterRange.location - 1;
+            range.location = delimiterRange.location + 1;
+        }
+
+        ICCF_CheckRange(range);
+
+        // XXX instead of length of string, make this stop at the max URL length to prevent protracted searches
+        // add 1 to range to trap delimiters that are on the edge of the selection (i.e., ...>)
+        extraLen = [s length] - range.location - range.length;
+        delimiterRange = [s rangeOfCharacterFromSet: urlRightDelimiters
+                                            options: NSLiteralSearch
+                                              range: NSMakeRange(range.location + range.length - (range.length != 0),
+                                                                 extraLen + (range.length != 0))];
+        if (delimiterRange.location == NSNotFound) {
+            // extend to end of string
+            range.length += extraLen;
+        } else {
+            NSCAssert(delimiterRange.length == 1, @"Internal error: delimiter matched range is not of length 1");
+            range.length += delimiterRange.location - range.location - range.length;
+        }
+
+        ICCF_CheckRange(range);
+
+        ICCF_ParseURL([s substringWithRange: range], &range);
+
+        [self setSelectedRange: range affinity: NSSelectionAffinityDownstream stillSelecting: NO];
+        [self display];
+
+        ICCF_LaunchURL([s substringWithRange: range], ICCF_KeyboardAction());
+
+        if (ICCF_prefs.textBlinkEnabled) {
+            for (i = 0 ; i < ICCF_prefs.textBlinkCount ; i++) {
+                NSRange emptyRange = {range.location, 0};
+                [self setSelectedRange: emptyRange affinity: NSSelectionAffinityDownstream stillSelecting: YES];
+                [self display];
+                usleep(kICBlinkDelayUsecs);
+                [self setInsertionPointColor: [self backgroundColor]];
+                [self setSelectedRange: range affinity: NSSelectionAffinityDownstream stillSelecting: YES];
+                [self display];
+                usleep(kICBlinkDelayUsecs);
+            }
+        }
+
+    NS_HANDLER
+        ICCF_HandleException(localException);
+    NS_ENDHANDLER
+
+    ICCF_StopIC();
+    [self setInsertionPointColor: insertionPointColor];
+}
+
+NSString * const ICCF_SERVICES_ITEM = @"ICeCoffEE Services Item";
+
+NSMenuItem *ICCF_ServicesMenuItem() {
+    NSMenuItem *servicesItem;
+    NSMenu *servicesMenu;
+    // XXX better to just use [[NSApp servicesMenu] title]?  That grabs the title from the existing Services submenu.
+    NSString *servicesTitle = [[NSBundle bundleWithIdentifier: @"com.apple.AppKit"] localizedStringForKey: @"Services" value: nil table: @"ServicesMenu"];
+    if (servicesTitle == nil) {
+        ICLog(@"CanÕt get localized text for ÒServicesÓ in AppKit.framework");
+        servicesTitle = @"Services";
+    }
+    servicesMenu = [[NSMenu alloc] initWithTitle: servicesTitle];
+    servicesItem = [[NSMenuItem alloc] initWithTitle: servicesTitle action:nil keyEquivalent:@""];
+    [[NSApplication sharedApplication] setServicesMenu: servicesMenu];
+    [servicesItem setSubmenu: servicesMenu];
+    [servicesItem setRepresentedObject: ICCF_SERVICES_ITEM];
+    [servicesMenu release];
+    return servicesItem;
+}
+
+void ICCF_AddRemoveServicesMenu() {
+    // needed because:
+    // (a) we get called before the runloop has properly started and will crash if we don't delay on app startup
+    // (b) the APE message handler calls us from another thread and nothing happens if we try to add a menu on it
+    [ICeCoffEE performSelectorOnMainThread: @selector(IC_addRemoveServicesMenu) withObject: nil waitUntilDone: NO];
+}
+
+NSMenu *ICCF_MenuForEvent(NSTextView *self, NSMenu *contextMenu, NSEvent *e) {    
+    if (contextMenu != nil && [e type] == NSRightMouseDown || ([e type] == NSLeftMouseDown && [e modifierFlags] & NSControlKeyMask)) {
+        int servicesItemIndex = [contextMenu indexOfItemWithRepresentedObject: ICCF_SERVICES_ITEM];
+        if (servicesItemIndex == -1 && ICCF_prefs.servicesInContextualMenu) {
+            [contextMenu addItem: [NSMenuItem separatorItem]];
+            [contextMenu addItem: ICCF_ServicesMenuItem()];
+        } else if (servicesItemIndex != -1 && !ICCF_prefs.servicesInContextualMenu) {
+            [contextMenu removeItemAtIndex: servicesItemIndex];
+            [contextMenu removeItemAtIndex: servicesItemIndex - 1];
+        }
+    }
+    return contextMenu;
+}
+
+@implementation ICeCoffEE
+
++ (void)IC_addRemoveServicesMenu;
+{
+    NSMenu *mainMenu = [[NSApplication sharedApplication] mainMenu];
+    static NSMenuItem *servicesItem = nil;
+    
+    if (servicesItem == nil && ICCF_prefs.servicesInMenuBar) {
+        servicesItem = [ICCF_ServicesMenuItem() retain];
+
+        int insertLoc = [mainMenu indexOfItemWithSubmenu: [NSApp windowsMenu]];
+        if (insertLoc == -1)
+            insertLoc = [mainMenu numberOfItems];
+
+        [mainMenu insertItem: servicesItem atIndex: insertLoc];
+    } else if (servicesItem != nil && !ICCF_prefs.servicesInMenuBar) {
+        [mainMenu removeItem: servicesItem];
+        [servicesItem release];
+        servicesItem = nil;
+    }
+}
+
+// XXX localization?
+- (NSMenu *)menuForEvent:(NSEvent *)e;
+{
+    NSMenu *myMenu = [super menuForEvent: e];
+    return ICCF_MenuForEvent(self, myMenu, e);
+}
+
+- (void)mouseDown:(NSEvent *)e;
+{
+#if ICCF_DEBUG
+    static BOOL down = NO;
+    if (down) {
+        ICLog(@"recursive invocation!");
+        return;
+    }
+    down = YES;
+    ICLog(@"ICeCoffEE down: %@", e);
+#endif
+    if (ICCF_enabled && ICCF_prefs.commandClickEnabled && ICCF_EventIsCommandMouseDown(e)) {
+        // don't want to trigger selection extension or anything else; pass through as a plain click
+        [super mouseDown: [NSEvent mouseEventWithType: NSLeftMouseDown location: [e locationInWindow] modifierFlags: 0 timestamp: [e timestamp] windowNumber: [e windowNumber] context: [e context] eventNumber: [e eventNumber] clickCount: 1 pressure: 0]];
+        // we don't actually get a mouseUp event, just wait for mouseDown to return
+        NSEvent *upEvent = [[self window] currentEvent];
+        NSPoint downPt = [e locationInWindow];
+        NSPoint upPt = [upEvent locationInWindow];
+        ICLog(@"next: %@", upEvent);
+        NSAssert([upEvent type] == NSLeftMouseUp, @"NSTextView mouseDown: did not return with current event as mouse up!");
+        if (abs(downPt.x - upPt.x) <= kICHysteresisPixels && abs(downPt.y - upPt.y) <= kICHysteresisPixels) {
+            ICCF_LaunchURLFromTextView(self);
+        }
+    } else {
+        [super mouseDown: e];
+    }
+#if ICCF_DEBUG
+    down = NO;
+#endif
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEAction.c
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEAction.c	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEAction.c	(revision 124)
@@ -0,0 +1,314 @@
+/*
+ *  ICeCoffEEAction.c
+ *  ICeCoffEE APE
+ *
+ *  Created by Nicholas Riley on Wed Jan 29 2003.
+ *  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+ *
+ */
+
+#include "ICeCoffEEAction.h"
+#include "ICeCoffEEConfig.h"
+#include "ICeCoffEEShared.h"
+#include "ICeCoffEEBookmarks.h"
+
+/* thanks to Slava Karpenko for this one! */
+OSStatus _LSCopyApplicationURLsForItemURL(CFURLRef inURL, LSRolesMask inRoleMask, CFArrayRef *outApps); // outApps to be CFReleased()
+
+#define THROW_ERR(e) { err = e; goto END; }
+
+static CFStringRef ICCF_NameWithLocation(CFStringRef name, CFURLRef url) {
+    CFURLRef urlMinus = CFURLCreateCopyDeletingLastPathComponent(NULL, url);
+    CFStringRef urlString = CFURLCopyFileSystemPath(urlMinus, kCFURLPOSIXPathStyle);
+    CFStringRef nameWithLocationTemplate = ICCF_CopyLocalizedString(CFSTR("App%@Location%@"));
+    CFStringRef nameWithLocation = CFStringCreateWithFormat(NULL, NULL, nameWithLocationTemplate, name, urlString);
+    
+    SAFE_RELEASE(nameWithLocationTemplate);
+    SAFE_RELEASE(urlMinus);
+    SAFE_RELEASE(urlString);
+    return nameWithLocation;
+}
+
+static const MenuItemIndex kICAppMenuItemHasPath = 0xfffe;
+
+typedef struct {
+    CFURLRef defaultAppURL; // URL of default app, set to NULL after added to menu
+    CFMutableSetRef appPaths;
+    CFMutableDictionaryRef appItemTitles; // keys: URLs; values: item titles (CFString)
+    CFMutableDictionaryRef appURLs; // keys: app display names (CFString), values: URL of item without path appended, or NULL if already appended (at least 2 items with this name exist)
+    MenuRef menu;
+} icAppMenuContext;
+
+static OSStatus ICCF_AddAppItemTitle(icAppMenuContext *ctx, CFURLRef appURL) {
+    CFStringRef appName = NULL, appItemTitle = NULL;
+    CFBundleRef appBundle = NULL;
+    OSStatus err = noErr;
+
+    CFStringRef appPath = CFURLCopyPath(appURL);
+    // only one entry for each path
+    if (CFSetContainsValue(ctx->appPaths, appPath))
+        return dupFNErr;
+    CFSetAddValue(ctx->appPaths, appPath);
+
+    if ( (err = LSCopyDisplayNameForURL(appURL, &appName)) != noErr)
+        return err;
+
+    // if we encounter multiple applications with the same display name, add locations to the menu item titles to disambiguate them
+    CFURLRef sameAppURL;
+    Boolean shouldAppendLocation;
+    if ( (shouldAppendLocation = CFDictionaryGetValueIfPresent(ctx->appURLs, appName, (const void **)&sameAppURL)) && (CFTypeRef)sameAppURL != kCFNull) {
+        // this app is the second encountered with the same name; go back and fix the menu item title of the first app
+        CFStringRef sameAppItemTitle = CFDictionaryGetValue(ctx->appItemTitles, sameAppURL);
+        CFStringRef appItemTitleWithVersion = ICCF_NameWithLocation(sameAppItemTitle, sameAppURL);
+        CFDictionarySetValue(ctx->appItemTitles, sameAppURL, appItemTitleWithVersion);
+        SAFE_RELEASE(appItemTitleWithVersion);
+        CFDictionarySetValue(ctx->appURLs, appName, kCFNull);
+    }
+
+    CFRetain(appName);
+    appItemTitle = appName;
+
+    if ( (appBundle = CFBundleCreate(NULL, appURL)) != NULL) {
+        // prefer a short version string, e.g. "1.0 Beta" instead of "51" for Safari
+        CFStringRef appVersion = CFBundleGetValueForInfoDictionaryKey(appBundle, CFSTR("CFBundleShortVersionString"));
+        if (appVersion == NULL)
+            appVersion = CFBundleGetValueForInfoDictionaryKey(appBundle, kCFBundleVersionKey);
+        if (appVersion != NULL) {
+            appItemTitle = CFStringCreateWithFormat(NULL, NULL, CFSTR("%@ (%@)"), appName, appVersion);
+            CFRelease(appName);
+        }
+        CFRelease(appBundle);
+    }
+
+    if (shouldAppendLocation) {
+        CFStringRef appItemTitleWithVersion = ICCF_NameWithLocation(appItemTitle, appURL);
+        CFRelease(appItemTitle);
+        appItemTitle = appItemTitleWithVersion;
+    } else {
+        CFDictionarySetValue(ctx->appURLs, appName, appURL);
+    }
+
+    if (ctx->defaultAppURL != NULL && CFEqual(appURL, ctx->defaultAppURL)) {
+        CFStringRef defaultFormat = ICCF_CopyLocalizedString(CFSTR("DefaultApp%@"));
+        CFStringRef appItemTitleWithDefault = CFStringCreateWithFormat(NULL, NULL, defaultFormat, appItemTitle);
+        CFRelease(appItemTitle);
+        appItemTitle = appItemTitleWithDefault;
+        ctx->defaultAppURL = NULL; // mark as added
+    }
+
+    CFDictionarySetValue(ctx->appItemTitles, appURL, appItemTitle);
+    CFRelease(appItemTitle);
+
+    return noErr;
+}
+
+static OSStatus ICCF_AddTitledAppToMenu(icAppMenuContext *ctx, CFURLRef appURL, MenuCommand menuCommand) {
+    CFStringRef appItemTitle = NULL;
+    IconRef appIcon = NULL;
+    FSRef appFSR;
+    SInt16 label;
+    MenuItemIndex menuItemIndex;
+    OSStatus err = noErr;
+
+    appItemTitle = CFDictionaryGetValue(ctx->appItemTitles, appURL);
+    if (appItemTitle == NULL) return fnfErr;
+    
+    err = AppendMenuItemTextWithCFString(ctx->menu, appItemTitle, 0, 0, &menuItemIndex);
+    if (err != noErr) return err;
+
+    if (!CFURLGetFSRef(appURL, &appFSR)) return paramErr;
+    err = GetIconRefFromFileInfo(&appFSR, 0, NULL, kFSCatInfoNone, NULL, kIconServicesNormalUsageFlag, &appIcon, &label);
+    if (err != noErr) return err;
+
+    SetMenuItemIconHandle(ctx->menu, menuItemIndex, kMenuIconRefType, (Handle)appIcon);
+    SetMenuItemCommandID(ctx->menu, menuItemIndex, menuCommand);
+    SetMenuItemRefCon(ctx->menu, menuItemIndex, (UInt32)appURL);
+    ReleaseIconRef(appIcon);
+
+    return err;
+}
+
+static OSStatus ICCF_AddAppToMenu(icAppMenuContext *ctx, CFURLRef appURL, MenuCommand menuCommand) {
+    OSStatus err = ICCF_AddAppItemTitle(ctx, appURL);
+    switch (err) {
+        case noErr: break;
+        case dupFNErr: return noErr;
+        default: return err;
+    }
+    return ICCF_AddTitledAppToMenu(ctx, appURL, menuCommand);
+}    
+
+CFComparisonResult ICCF_CompareURLsByItemTitle(const void *url1, const void *url2, void *appItemTitles) {
+    CFStringRef appItemTitle1 = CFDictionaryGetValue((CFDictionaryRef)appItemTitles, (CFURLRef)url1);
+    CFStringRef appItemTitle2 = CFDictionaryGetValue((CFDictionaryRef)appItemTitles, (CFURLRef)url2);
+    return CFStringCompareWithOptions(appItemTitle1, appItemTitle2,
+                                      CFRangeMake(0, CFStringGetLength(appItemTitle1)),
+                                      kCFCompareCaseInsensitive | kCFCompareNumerically);
+}
+
+enum {
+    kICURLActionOpenWith = 'OpnW',
+    kICURLActionAddBookmark = 'AddB'
+};
+
+OSStatus ICCF_DoURLActionMenu(ICInstance inst, CFURLRef url, LSLaunchFlags launchFlags) {
+    CFArrayRef appURLsUnsorted = NULL; // matching app URLs
+    CFMutableArrayRef appURLs = NULL; // matching app URLs sorted by item title
+    CFArrayRef urlArray = NULL; // single-URL array
+    icAppMenuContext ctx = {NULL, NULL, NULL, NULL};
+    OSStatus err;
+    
+    if ( (err = _LSCopyApplicationURLsForItemURL(url, kLSRolesAll, &appURLsUnsorted)) != noErr)
+        THROW_ERR(err);
+
+    CFIndex appCount = 0;
+    if (appURLsUnsorted == NULL || (appCount = CFArrayGetCount(appURLsUnsorted)) == 0)
+        THROW_ERR(kLSApplicationNotFoundErr);
+
+    if ( (appURLs = CFArrayCreateMutableCopy(NULL, appCount, appURLsUnsorted)) == NULL)
+        THROW_ERR(memFullErr);
+
+    if ( (ctx.appPaths = CFSetCreateMutable(NULL, appCount, &kCFCopyStringSetCallBacks)) == NULL)
+        THROW_ERR(memFullErr);
+
+    if ( (ctx.appItemTitles = CFDictionaryCreateMutable(NULL, appCount, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)) == NULL)
+        THROW_ERR(memFullErr);
+
+    if ( (ctx.appURLs = CFDictionaryCreateMutable(NULL, appCount, &kCFCopyStringDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks)) == NULL)
+        THROW_ERR(memFullErr);
+
+    LSGetApplicationForURL(url, kLSRolesAll, NULL, &ctx.defaultAppURL);
+
+    CFIndex appIndex;
+    CFURLRef appURL;
+    for (appIndex = 0 ; appIndex < appCount ; appIndex++) {
+        appURL = CFArrayGetValueAtIndex(appURLs, appIndex);
+        err = ICCF_AddAppItemTitle(&ctx, appURL);
+        switch (err) {
+            case noErr: break;
+            case dupFNErr:
+                CFArrayRemoveValueAtIndex(appURLs, appIndex);
+                appIndex--;
+                appCount--;
+                break;
+            default:
+                THROW_ERR(err);
+        } 
+    }
+
+    CFArraySortValues(appURLs, CFRangeMake(0, appCount), ICCF_CompareURLsByItemTitle, ctx.appItemTitles);
+    
+    if ( (err = CreateNewMenu(0, kMenuAttrExcludesMarkColumn, &ctx.menu)) != noErr)
+        THROW_ERR(err);
+    
+    MenuItemIndex menuItemIndex;
+    if ( (err = AppendMenuItemTextWithCFString(ctx.menu, ICCF_CopyLocalizedString(CFSTR("Open Location With")), kMenuItemAttrDisabled, 0, &menuItemIndex)) != noErr)
+        THROW_ERR(err);
+
+    if ( (urlArray = CFArrayCreate(NULL, (const void **)&url, 1, &kCFTypeArrayCallBacks)) == NULL)
+        THROW_ERR(memFullErr);
+
+    for (appIndex = 0 ; appIndex < appCount ; appIndex++) {
+        appURL = CFArrayGetValueAtIndex(appURLs, appIndex);
+
+        if ( (err = ICCF_AddTitledAppToMenu(&ctx, appURL, kICURLActionOpenWith)) != noErr)
+            THROW_ERR(err);
+    }
+    // sometimes the default protocol handler won't be on the list because it doesnÕt claim to handle that protocol; add it anyway
+    if (ctx.defaultAppURL != NULL) {
+        if ( (err = ICCF_AddAppToMenu(&ctx, ctx.defaultAppURL, kICURLActionOpenWith)) != noErr)
+            THROW_ERR(err);
+    }
+
+    appURL = ICCF_GetBookmarkHelperURL(inst);
+    if (appURL != NULL) {
+        if ( (err = AppendMenuItemTextWithCFString(ctx.menu, CFSTR(""), kMenuItemAttrSeparator, 0, NULL)) != noErr)
+            THROW_ERR(err);
+        if ( (err = AppendMenuItemTextWithCFString(ctx.menu, ICCF_CopyLocalizedString(CFSTR("Add Bookmark")), kMenuItemAttrDisabled, 0, &menuItemIndex)) != noErr)
+            THROW_ERR(err);
+        // the app won't show up at the bottom if someone cmd-option-clicks on 'bookmark:', but they'd have to be crazy to do that anyway
+        if ( (err = ICCF_AddAppToMenu(&ctx, appURL, kICURLActionAddBookmark)) != noErr)
+            THROW_ERR(err);
+    }
+    
+    InsertMenu(ctx.menu, -1);
+    Point mousePoint;
+    GetGlobalMouse(&mousePoint);
+    long selectedAppIndex = PopUpMenuSelect(ctx.menu, mousePoint.v + 18, mousePoint.h - 30, 0/*popUpItem*/);
+    if (selectedAppIndex == 0) {
+        err = userCanceledErr;
+    } else {
+        CFURLRef appURL = NULL;
+        MenuCommand menuCommand;
+        err = GetMenuItemRefCon(ctx.menu, selectedAppIndex, (void *)&appURL);
+        if (err == noErr) {
+            err = GetMenuItemCommandID(ctx.menu, selectedAppIndex, &menuCommand);
+            if (err == noErr) {
+                if (menuCommand == kICURLActionOpenWith) {
+                    LSLaunchURLSpec lsSpec = {appURL, urlArray, NULL, launchFlags};
+                    err = LSOpenFromURLSpec(&lsSpec, NULL);
+                } else if (menuCommand == kICURLActionAddBookmark) {
+                    err = ICCF_DoBookmarkDialog(inst, CFURLGetString(url));
+                }
+            }
+        }
+    }
+    
+END:
+    if (ctx.menu != NULL) {
+        DeleteMenu(GetMenuID(ctx.menu));
+        DisposeMenu(ctx.menu);
+    }
+    SAFE_RELEASE(urlArray);
+    SAFE_RELEASE(appURLsUnsorted);
+    SAFE_RELEASE(appURLs);
+    SAFE_RELEASE(ctx.appPaths);
+    SAFE_RELEASE(ctx.appItemTitles);
+    SAFE_RELEASE(ctx.appURLs);
+    
+    return err;
+}
+
+OSStatus ICCF_DoURLActionLaunch(ICInstance inst, CFURLRef url, LSLaunchFlags launchFlags) {
+    CFArrayRef urlArray = CFArrayCreate(NULL, (const void **)&url, 1, &kCFTypeArrayCallBacks);
+    LSLaunchURLSpec lsSpec = {NULL, urlArray, NULL, launchFlags, NULL};
+    OSStatus err;
+
+    if (urlArray == NULL)
+        THROW_ERR(memFullErr);
+
+    err = LSOpenFromURLSpec(&lsSpec, NULL);
+
+END:
+    SAFE_RELEASE(urlArray);
+
+    return err;
+}
+
+OSStatus ICCF_DoURLAction(ICInstance inst, ConstStr255Param hint, const char *urlData, long startIndex, long endIndex, iccfURLAction action) {
+    Handle h = NewHandle(0);
+    CFURLRef url = NULL;
+    LSLaunchFlags launchFlags = kLSLaunchDefaults;
+    OSStatus err;
+
+    if (h == NULL) return MemError();
+
+    if ( (err = ICParseURL(inst, hint, urlData + startIndex, endIndex - startIndex + 1,
+                           &startIndex, &endIndex, h)) != noErr) THROW_ERR(err);
+
+    if ( (url = CFURLCreateWithBytes(NULL, *h, GetHandleSize(h), kCFStringEncodingASCII,
+                                     NULL)) == NULL) THROW_ERR(paramErr);
+
+    if (action.launchInBackground) launchFlags |= kLSLaunchDontSwitch;
+
+    if (action.presentMenu)
+        err = ICCF_DoURLActionMenu(inst, url, launchFlags);
+    else
+        err = ICCF_DoURLActionLaunch(inst, url, launchFlags);
+
+END:
+    if (h != NULL) DisposeHandle(h);
+    SAFE_RELEASE(url);
+
+    return err;
+}
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEAction.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEAction.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEAction.h	(revision 124)
@@ -0,0 +1,24 @@
+/*
+ *  ICeCoffEEAction.h
+ *  ICeCoffEE APE
+ *
+ *  Created by Nicholas Riley on Wed Jan 29 2003.
+ *  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+ *
+ */
+
+#ifndef _H_ICeCoffEEAction
+#define _H_ICeCoffEEAction
+
+#include <Carbon/Carbon.h>
+
+// per-action options
+
+typedef struct {
+    Boolean presentMenu;
+    Boolean launchInBackground;
+} iccfURLAction;
+
+OSStatus ICCF_DoURLAction(ICInstance inst, ConstStr255Param hint, const char *urlData, long startIndex, long endIndex, iccfURLAction action);
+
+#endif /* _H_ICeCoffEEAction */
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEBookmarks.c
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEBookmarks.c	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEBookmarks.c	(revision 124)
@@ -0,0 +1,214 @@
+/*
+ *  ICeCoffEEBookmarks.c
+ *  ICeCoffEE APE
+ *
+ *  Created by Nicholas Riley on Sat Feb 01 2003.
+ *  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+ *
+ */
+
+#include "ICeCoffEEBookmarks.h"
+#include "ICeCoffEEConfig.h"
+
+// Make sure the encoding of this file is MacRoman, or this constant wonÕt work!
+#define kICBookmarkHelper		"\pHelper¥bookmark"
+#define kICBookmarkScheme		"bookmark"
+
+enum {
+    kICBookmarkURLTooLongErr = 93800,
+    kICBookmarkNameTooLongErr = 93801,
+    kICBookmarkDescriptionTooLongErr = 93802,
+    kICBookmarkNoHelperErr = 93803
+};
+
+CFURLRef ICCF_GetBookmarkHelperURL(ICInstance inst) {
+    OSStatus err;
+    CFURLRef helperURL;
+
+    // try to get creator from Internet Config
+    ICAttr junkAttr;
+    ICAppSpec helperSpec;
+    long helperSpecSize = sizeof(helperSpec);
+
+    err = ICGetPref(inst, kICBookmarkHelper, &junkAttr, (void *)&helperSpec, &helperSpecSize);
+    if (err == noErr && helperSpecSize == sizeof(helperSpec)) {
+        err = LSFindApplicationForInfo(helperSpec.fCreator, NULL, NULL, NULL, &helperURL);
+        if (err == noErr) return helperURL;
+    }
+
+    // try to use LaunchServices
+    CFURLRef bookmarkURL = CFURLCreateWithString(NULL, CFSTR(kICBookmarkScheme":"), NULL);
+    err = LSGetApplicationForURL(bookmarkURL, kLSRolesAll, NULL, &helperURL);
+    if (bookmarkURL != NULL) CFRelease(bookmarkURL);
+    if (err == noErr) return helperURL;
+
+    return NULL;
+}
+
+static const ProcessSerialNumber kICNoProcess = {0, kNoProcess};
+
+static OSStatus ICCF_GetPSNFromHelperURL(CFURLRef helperURL, ProcessSerialNumber *inPSN) {
+    if (helperURL == NULL) return kICBookmarkNoHelperErr;
+
+    FSRef helperFSR;
+    if (!CFURLGetFSRef(helperURL, &helperFSR)) return kICBookmarkNoHelperErr;
+
+    // locate running application
+    ProcessSerialNumber psn = kICNoProcess;
+    FSRef fsr;
+    OSStatus err;
+    while ( (err = GetNextProcess(&psn)) == noErr && psn.lowLongOfPSN != kNoProcess) {
+        err = GetProcessBundleLocation(&psn, &fsr);
+        if (err == noErr && FSCompareFSRefs(&fsr, &helperFSR) == noErr) {
+            *inPSN = psn;
+            return noErr;
+        }
+    }
+
+    // launch application
+    FSSpec fss;
+    err = FSGetCatalogInfo(&helperFSR, kFSCatInfoNone, NULL, NULL, &fss, NULL);
+    if (err != noErr) return err;
+    LaunchParamBlockRec launchPB = {
+        0, 0, extendedBlock, extendedBlockLen,
+        kNilOptions, launchNoFileFlags | launchContinue,
+        &fss, kICNoProcess, 0, 0, 0, NULL
+    };
+
+    err = LaunchApplication(&launchPB);
+    if (err != noErr) {
+        if (err == paramErr) return userCanceledErr; // if app force quit while launching
+        return err;
+    }
+
+    *inPSN = launchPB.launchProcessSN;
+    return noErr;
+}
+
+static OSStatus ICCF_AddBookmark(ICInstance inst, CFStringRef url, CFStringRef name, CFStringRef description) {
+
+    if (url == NULL || CFStringGetLength(url) == 0) return noErr;
+
+    CFURLRef helperURL = ICCF_GetBookmarkHelperURL(inst);
+    if (helperURL == NULL) return kICBookmarkNoHelperErr;
+
+    OSStatus err;
+    ProcessSerialNumber psn;
+    err = ICCF_GetPSNFromHelperURL(helperURL, &psn);
+    CFRelease(helperURL);
+    if (err != noErr) return err;
+    if (psn.highLongOfPSN == kICNoProcess.highLongOfPSN && psn.lowLongOfPSN == kICNoProcess.lowLongOfPSN)
+        return kICBookmarkNoHelperErr;
+
+    AppleEvent event;
+    char buf[1024]; // XXX make length a constant
+
+    if (!CFStringGetCString(url, buf, sizeof(buf), kCFStringEncodingASCII))
+        return kICBookmarkURLTooLongErr;
+
+    // XXX can I specify Unicode text ('utxt'?) here to get internationalization support?
+    err = AEBuildAppleEvent('SURL', 'SURL', typeProcessSerialNumber, &psn, sizeof(psn),
+                            kAutoGenerateReturnID, kAnyTransactionID,
+                            &event, NULL,
+                            "'----':TEXT(@)", buf);
+    if (err != noErr) return err;
+
+    if (name != NULL) {
+        if (!CFStringGetCString(name, buf, sizeof(buf), CFStringGetSystemEncoding()))
+            return kICBookmarkNameTooLongErr;
+
+        err = AEBuildParameters(&event, NULL, "'name':TEXT(@)", buf);
+        if (err != noErr) return err;
+    }
+
+    if (description != NULL) { // XXX 256 hard-coded from limit of URL Manager Pro notes field
+        if (!CFStringGetCString(description, buf, 256, CFStringGetSystemEncoding()))
+            return kICBookmarkDescriptionTooLongErr;
+
+        err = AEBuildParameters(&event, NULL, "'clip':TEXT(@)", buf);
+        if (err != noErr) return err;
+    }
+
+    AppleEvent nullReply = {typeNull, nil};
+
+    err = AESend(&event, &nullReply, kAENoReply, kAENormalPriority, kNoTimeOut, nil, nil);
+    (void)AEDisposeDesc(&event);
+    if (err != noErr) return err;
+
+    (void)AEDisposeDesc(&nullReply); // according to docs, don't call unless AESend returned successfully
+
+    return noErr;
+}
+
+// XXX workaround for CFUserNotificationCreate log message in 10.2.4 at least
+#include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
+// XXX end workaround
+
+OSStatus ICCF_DoBookmarkDialog(ICInstance inst, CFStringRef url) {
+
+    CFMutableDictionaryRef dict = CFDictionaryCreateMutable(NULL, 10, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
+
+    if (dict == NULL) return memFullErr;
+
+    OSStatus err;
+    
+    CFURLRef bundleURL = CFBundleCopyBundleURL(ICCF_bundle);
+    CFDictionaryAddValue(dict, kCFUserNotificationLocalizationURLKey, bundleURL);
+    SAFE_RELEASE(bundleURL);
+
+    const CFStringRef textFieldTitles[] = { ICCF_CopyLocalizedString(CFSTR("Location:")), ICCF_CopyLocalizedString(CFSTR("Name:")), ICCF_CopyLocalizedString(CFSTR("Description:")) };
+    const CFStringRef textFieldValues[] = { url, CFSTR(""), CFSTR("") };
+    CFArrayRef textFieldTitlesArray = CFArrayCreate(NULL, (const void **)&textFieldTitles, 3, &kCFTypeArrayCallBacks);
+    CFArrayRef textFieldValuesArray = CFArrayCreate(NULL, (const void **)&textFieldValues, 3, &kCFTypeArrayCallBacks);
+
+    CFDictionaryAddValue(dict, kCFUserNotificationAlertHeaderKey, ICCF_CopyLocalizedString(CFSTR("Add Bookmark")));
+    CFDictionaryAddValue(dict, kCFUserNotificationAlertMessageKey, ICCF_CopyLocalizedString(CFSTR("Bookmark name and description are optional.")));
+    CFDictionaryAddValue(dict, kCFUserNotificationTextFieldTitlesKey, textFieldTitlesArray);
+    CFDictionaryAddValue(dict, kCFUserNotificationTextFieldValuesKey, textFieldValuesArray);
+    CFDictionaryAddValue(dict, kCFUserNotificationDefaultButtonTitleKey, ICCF_CopyLocalizedString(CFSTR("Add")));
+    CFDictionaryAddValue(dict, kCFUserNotificationAlternateButtonTitleKey, ICCF_CopyLocalizedString(CFSTR("Cancel")));
+    if (textFieldTitlesArray != NULL) CFRelease(textFieldTitlesArray);
+    if (textFieldValuesArray != NULL) CFRelease(textFieldValuesArray);
+
+    // XXX suppress log message from Apple's code:
+    // 2003-02-02 17:48:26.896 TextEdit[2790] CFLog (20): Add Bookmark:  Bookmark name and description are optional.
+    int errfd = dup(STDERR_FILENO), nullfd = open("/dev/null", O_WRONLY, 0);
+    // need to have something open in STDERR_FILENO because if it isn't,
+    // CFLog will log to /dev/console
+    dup2(nullfd, STDERR_FILENO);
+    close(nullfd);
+    CFUserNotificationRef notification = CFUserNotificationCreate(NULL, 0, kCFUserNotificationPlainAlertLevel, &err, dict);
+    dup2(errfd, STDERR_FILENO);
+    close(errfd);
+    if (notification == NULL) {
+        CFRelease(dict);
+        return err;
+    }
+    
+    CFOptionFlags responseFlags;
+    CFUserNotificationReceiveResponse(notification, 0, &responseFlags);
+    if (responseFlags != kCFUserNotificationDefaultResponse)
+        return userCanceledErr;
+
+    CFDictionaryRef responseDict = CFUserNotificationGetResponseDictionary(notification);
+    if (responseDict == NULL)
+        return userCanceledErr;
+
+    textFieldValuesArray = CFDictionaryGetValue(responseDict, kCFUserNotificationTextFieldValuesKey);
+    if (textFieldValuesArray == NULL)
+        return userCanceledErr;
+
+    url = CFArrayGetValueAtIndex(textFieldValuesArray, 0);
+    CFStringRef name = CFArrayGetValueAtIndex(textFieldValuesArray, 1);
+    CFStringRef description = CFArrayGetValueAtIndex(textFieldValuesArray, 2);
+
+    err = ICCF_AddBookmark(inst, url, name, description);
+
+    SAFE_RELEASE(url);
+    SAFE_RELEASE(name);
+    SAFE_RELEASE(description);
+
+    return err;
+}
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEBookmarks.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEBookmarks.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEBookmarks.h	(revision 124)
@@ -0,0 +1,13 @@
+/*
+ *  ICeCoffEEBookmarks.h
+ *  ICeCoffEE APE
+ *
+ *  Created by Nicholas Riley on Sat Feb 01 2003.
+ *  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+ *
+ */
+
+#include <Carbon/Carbon.h>
+
+OSStatus ICCF_DoBookmarkDialog(ICInstance inst, CFStringRef url);
+CFURLRef ICCF_GetBookmarkHelperURL(ICInstance inst);
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEConfig.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEConfig.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEConfig.h	(revision 124)
@@ -0,0 +1,59 @@
+/*
+ *  ICeCoffEEConfig.h
+ *  ICeCoffEE APE
+ *
+ *  Created by Nicholas Riley on Sun Jan 26 2003.
+ *  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+ *
+ */
+
+#ifndef _H_ICeCoffEEConfig
+#define _H_ICeCoffEEConfig
+
+#include <CoreFoundation/CoreFoundation.h>
+#include "ICeCoffEEAction.h"
+
+// constants
+extern const long ICCF_MAX_URL_LEN;
+
+// per-app runtime configuration
+extern Boolean ICCF_enabled;
+
+typedef struct {
+    Boolean commandClickEnabled;
+    Boolean textBlinkEnabled;
+    CFIndex textBlinkCount; // ICeTEe used LMGetMenuFlash, no replacement in Carbon
+    Boolean servicesInContextualMenu;
+    Boolean servicesInMenuBar;
+    Boolean errorSoundEnabled;
+    Boolean errorDialogEnabled;
+} iccfPrefRec;
+
+extern iccfPrefRec ICCF_prefs;
+
+extern CFBundleRef ICCF_bundle;
+
+// CF conveniences
+
+#define ICCF_CopyLocalizedString(key) \
+    CFBundleCopyLocalizedString(ICCF_bundle, (key), CFSTR(""), NULL)
+
+#define SAFE_RELEASE(e) { if (e != NULL) CFRelease(e); }
+
+// functions shared between Cocoa and Carbon implementations
+
+// returns a Pascal string containing the corresponding protocol hint (e.g. http, mailto)
+// if the text surrounding the range *selStart to *selEnd in urlData likely represents
+// an email address or "slack" (e.g. web.sabi.net/bm) URL
+// needsSlashes is set to true if the URL needs a '//' after the colon to be valid
+ConstStringPtr ICCF_GetHint(ICInstance inst, const char *urlData, Size length, long *selStart, long *selEnd, Boolean *needsSlashes);
+
+// adds two slashes to the beginning of the string in the handle (e.g. web.sabi.net or http:web.sabi.net)
+void ICCF_AddSlashes(Handle h, ConstStringPtr hint);
+
+// returns an explanation for the provided OSStatus in the supplied context
+// (Cocoa clients should use ICCF_ErrString instead - it's simpler to use)
+// if NULL is returned, the error is harmless (e.g., user cancelled)
+CFStringRef ICCF_CopyErrString(OSStatus err, CFStringRef context);
+
+#endif /* _H_ICeCoffEEConfig */
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEController.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEController.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEController.h	(revision 124)
@@ -0,0 +1,35 @@
+#import <Cocoa/Cocoa.h>
+#import <ApplicationEnhancer/APEManagerPrefPane.h>
+#import "CFPreferencesWrapper.h"
+
+@interface ICeCoffEEController : NSObject <APEManagerPrefPane>
+{
+    CFPreferencesWrapper_ICeCoffEE *prefs;
+    NSBundle *_apeBundle;
+    NSBundle *_bundle;
+
+    IBOutlet NSWindow *window;
+    IBOutlet NSTabView *tabView;
+    
+    IBOutlet NSButton *commandClickEnabled;
+    IBOutlet NSButton *textBlinkEnabled;
+    IBOutlet NSPopUpButton *textBlinkCount;
+    IBOutlet NSButton *servicesInContextualMenu;
+    IBOutlet NSButton *servicesInMenuBar;
+    IBOutlet NSButton *errorSoundEnabled;
+    IBOutlet NSButton *errorDialogEnabled;
+}
+
+- (id)initWithAPE:(NSBundle *)apeBundle andBundle:(NSBundle *)prefPaneBundle;
+- (void)setAPEBundle:(NSBundle*)apeBundle prefPaneBundle:(NSBundle *)aBundle;
+- (NSBundle *)bundle;
+
+- (IBAction)commandClickEnabled:(NSButton *)sender;
+- (IBAction)textBlinkEnabled:(NSButton *)sender;
+- (IBAction)textBlinkCount:(NSPopUpButton *)sender;
+- (IBAction)servicesInContextualMenu:(NSButton *)sender;
+- (IBAction)servicesInMenuBar:(NSButton *)sender;
+- (IBAction)errorSoundEnabled:(NSButton *)sender;
+- (IBAction)errorDialogEnabled:(NSButton *)sender;
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEController.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEController.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEController.m	(revision 124)
@@ -0,0 +1,157 @@
+//
+//	File:		ICeCoffEEController.m
+//
+//	Contains:	ICeCoffEE APE preference pane controller
+//
+//	Copyright:	Copyright (c) 2003, Nicholas Riley
+//			All Rights Reserved.
+//
+//	Author(s):	Nicholas Riley (Sun Jan 19 2003)
+//
+// ===========================================================================
+
+#import <ApplicationEnhancer/ApplicationEnhancer.h>
+#import "ICeCoffEEController.h"
+#import "ICeCoffEEShared.h"
+
+// Just a handy macro for localized strings from our bundle; unused in this project.
+#define NSLocalizedString_(key, comment) [[self bundle] localizedStringForKey:(key) value:@"" table:nil]
+
+@implementation ICeCoffEEController
+
+// This method should return an id of a class that implements the protocol
+// required by APE Manager.
+
++ (id)prefPaneHandlerForAPE:(NSBundle*)apeBundle andBundle:(NSBundle*)prefPaneBundle
+{
+    return [[self alloc] initWithAPE:apeBundle andBundle:prefPaneBundle];
+}
+
+// Init the instance of our class
+- (id)initWithAPE:(NSBundle*)apeBundle andBundle:(NSBundle*)prefPaneBundle
+{
+    [self setAPEBundle:apeBundle prefPaneBundle:prefPaneBundle];
+    
+    [NSBundle loadNibNamed:@"APE Manager plugin" owner:self];	// load our nib file; it will call our awakeFromNib method
+    
+    return self;
+}
+
+// This method is called when the preference pane is about to be shown.
+- (void)willLoad
+{
+    // we do nothing here
+}
+
+// This method is called when the preference pane will be dismissed.
+- (void)willUnload
+{
+    [prefs release];
+    prefs = nil;
+}
+
+// This method should return an NSView to be loaded into APE Manager preference
+// area.
+- (NSView *)mainView
+{
+    return [window contentView];
+}
+
+#define ICP(pref) (NSString *)kIC ## pref
+
+// This method is called once our nib file is loaded (we load it in the init method)
+- (void)awakeFromNib
+{
+    // load the preferences for our APE module
+    prefs = [[CFPreferencesWrapper_ICeCoffEE preferencesWithApplication: (NSString *)kICBundleIdentifier] retain];
+
+    CFBundleRef apeBundle = CFBundleCreate(NULL, (CFURLRef)[NSURL fileURLWithPath: [_apeBundle bundlePath]]);
+    if ([prefs integerForKey: ICP(LastLoadedVersion)] != CFBundleGetVersionNumber(apeBundle)) {
+        [tabView selectTabViewItemWithIdentifier: @"noPrefs"];
+        CFRelease(apeBundle);
+        return;
+    }
+    CFRelease(apeBundle);
+    [tabView selectTabViewItemWithIdentifier: @"prefs"];
+
+    [commandClickEnabled setState: [prefs boolForKey: ICP(CommandClickEnabled)]];
+    [self commandClickEnabled: nil];
+    [textBlinkEnabled setState: [prefs boolForKey: ICP(TextBlinkEnabled)]];
+    [self textBlinkEnabled: nil];
+    int blink = [prefs integerForKey: ICP(TextBlinkCount)];
+    if (blink != -1 && (blink = [textBlinkCount indexOfItemWithTag: blink]) != -1)
+        [textBlinkCount selectItemAtIndex: blink];
+    [servicesInContextualMenu setState: [prefs boolForKey: ICP(ServicesInContextualMenu)]];
+    [servicesInMenuBar setState: [prefs boolForKey: ICP(ServicesInMenuBar)]];
+    [errorSoundEnabled setState: [prefs boolForKey: ICP(ErrorSoundEnabled)]];
+    [errorDialogEnabled setState: [prefs boolForKey: ICP(ErrorDialogEnabled)]];
+}
+
+- (void)setAPEBundle:(NSBundle*)apeBundle prefPaneBundle:(NSBundle *)aBundle;
+{
+    [apeBundle retain];
+    [_apeBundle release];
+    _apeBundle = apeBundle;
+    [aBundle retain];
+    [_bundle release];
+    _bundle = aBundle;
+}
+
+- (NSBundle *)bundle;
+{
+    [_bundle autorelease];
+    return [_bundle retain];
+}
+
+- (void)prefsChanged;
+{
+    [prefs synchronize];
+    APEMessageBroadcast(kICBundleIdentifier, kICPreferencesChanged, NULL);
+}
+
+- (IBAction)commandClickEnabled:(NSButton *)sender;
+{
+    BOOL enabled = [commandClickEnabled state];
+    if (sender != nil) {
+        [prefs setBool: enabled forKey: ICP(CommandClickEnabled)];
+        [self prefsChanged];
+    }
+    [textBlinkEnabled setEnabled: enabled];
+    [textBlinkCount setEnabled: enabled ? [textBlinkEnabled state] : NO];
+}
+- (IBAction)textBlinkEnabled:(NSButton *)sender;
+{
+    BOOL enabled = [textBlinkEnabled state];
+    if (sender != nil) {
+        [prefs setBool: enabled forKey: ICP(TextBlinkEnabled)];
+        [self prefsChanged];
+    }
+    [textBlinkCount setEnabled: enabled];
+}
+- (IBAction)textBlinkCount:(NSPopUpButton *)sender;
+{
+    [prefs setInteger: [[textBlinkCount selectedItem] tag] forKey: ICP(TextBlinkCount)];
+    [self prefsChanged];
+}
+- (IBAction)servicesInContextualMenu:(NSButton *)sender;
+{
+    [prefs setBool: [servicesInContextualMenu state] forKey: ICP(ServicesInContextualMenu)];
+    [self prefsChanged];
+}
+- (IBAction)servicesInMenuBar:(NSButton *)sender;
+{
+    [prefs setBool: [servicesInMenuBar state] forKey: ICP(ServicesInMenuBar)];
+    [self prefsChanged];
+}
+- (IBAction)errorSoundEnabled:(NSButton *)sender;
+{
+    [prefs setBool: [errorSoundEnabled state] forKey: ICP(ErrorSoundEnabled)];
+    [self prefsChanged];
+}
+- (IBAction)errorDialogEnabled:(NSButton *)sender;
+{
+    [prefs setBool: [errorDialogEnabled state] forKey: ICP(ErrorDialogEnabled)];
+    [self prefsChanged];
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuOnly.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuOnly.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuOnly.h	(revision 124)
@@ -0,0 +1,16 @@
+//
+//  ICeCoffEEMenuOnly.h
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on Sun Jan 19 2003.
+//  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEEMenuSuper.h"
+
+
+@interface ICeCoffEEMenuOnly : ICeCoffEEMenuSuper {
+
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuOnly.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuOnly.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuOnly.m	(revision 124)
@@ -0,0 +1,20 @@
+//
+//  ICeCoffEEMenuOnly.m
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on Sun Jan 19 2003.
+//  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEEMenuOnly.h"
+
+
+@implementation ICeCoffEEMenuOnly
+
+- (NSMenu *)menuForEvent:(NSEvent *)e;
+{
+    NSMenu *myMenu = [super menuForEvent: e];
+    return ICCF_MenuForEvent(self, myMenu, e);
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuSuper.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuSuper.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuSuper.h	(revision 124)
@@ -0,0 +1,16 @@
+//
+//  ICeCoffEEMenuSuper.h
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on Sun Jan 19 2003.
+//  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEE.h"
+
+
+@interface ICeCoffEEMenuSuper : NSTextView {
+
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuSuper.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuSuper.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEMenuSuper.m	(revision 124)
@@ -0,0 +1,19 @@
+//
+//  ICeCoffEEMenuSuper.m
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on Sun Jan 19 2003.
+//  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEEMenuSuper.h"
+
+
+@implementation ICeCoffEEMenuSuper
+
+- (NSMenu *)menuForEvent:(NSEvent *)e;
+{
+    return [super menuForEvent: e];
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEScanner.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEScanner.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEScanner.h	(revision 124)
@@ -0,0 +1,27 @@
+//
+//  ICeCoffEEScanner.h
+//  ICeCoffEE
+//
+//  Created by Nicholas Riley on Fri Feb 08 2002.
+//  Copyright (c) 2002 Nicholas Riley. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+
+
+@interface ICeCoffEEScanner : NSObject {
+    NSString *source;
+    NSMutableString *dest;
+    int length;
+    unsigned loc;
+}
+
+- (id)initWithSource:(NSString *)aSource destination:(NSMutableString *)aDest;
+- (void)breakWithString:(NSString *)breakString atWidth:(unsigned)width;
+- (BOOL)appendUpToString:(NSString *)string;
+- (void)appendUpToEnd;
+- (BOOL)isAtEnd;
+- (unsigned)scanLocation;
+- (unsigned)remainingLength;
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEScanner.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEScanner.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEScanner.m	(revision 124)
@@ -0,0 +1,98 @@
+//
+//  ICeCoffEEScanner.m
+//  ICeCoffEE
+//
+//  Created by Nicholas Riley on Fri Feb 08 2002.
+//  Copyright (c) 2002 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEEScanner.h"
+
+
+@implementation ICeCoffEEScanner
+
+- (id)initWithSource:(NSString *)aSource destination:(NSMutableString *)aDest;
+{
+    if ( (self = [super init]) != nil) {
+        source = [aSource retain];
+        length = [source length];
+        dest = [aDest retain];
+    }
+    return self;
+}
+
+- (void)dealloc;
+{
+    [source release];
+    [dest release];
+    [super dealloc];
+}
+
+- (NSRange)_nextMatchRangeForString:(NSString *)string;
+{
+    return [source rangeOfString: string options: NSLiteralSearch range: NSMakeRange(loc, length - loc)];
+}
+
+- (void)_breakWithString:(NSString *)breakString atWidth:(unsigned)width forChars:(unsigned)charsToCopy;
+{
+    while (charsToCopy > width) {
+        [dest appendString: [source substringWithRange: NSMakeRange(loc, width)]];
+        charsToCopy -= width;
+        loc += width;
+        [dest appendString: breakString];
+    }
+}
+
+- (void)breakWithString:(NSString *)breakString atWidth:(unsigned)width;
+{
+    NSRange matchRange = {1, 1};
+
+    while ( (matchRange = [self _nextMatchRangeForString: breakString]).location != NSNotFound) {
+        [self _breakWithString: breakString atWidth: width forChars: matchRange.location - loc];
+        [dest appendString: [source substringWithRange: NSMakeRange(loc, matchRange.location + matchRange.length - loc)]];
+        loc = matchRange.location + matchRange.length;
+    }
+
+    if (![self isAtEnd]) {
+        [self _breakWithString: breakString atWidth: width forChars: [self remainingLength]];
+        [self appendUpToEnd];
+        [dest appendString: breakString];
+    }
+
+}
+
+- (BOOL)appendUpToString:(NSString *)string;
+{
+    NSRange matchRange = [self _nextMatchRangeForString: string];
+
+    if (matchRange.location == NSNotFound) return NO;
+
+    [dest appendString: [source substringWithRange: NSMakeRange(loc, matchRange.location - loc)]];
+
+    loc = matchRange.location + matchRange.length;
+
+    return YES;
+}
+
+- (void)appendUpToEnd;
+{
+    [dest appendString: [source substringFromIndex: loc]];
+    loc = length;
+}
+
+- (BOOL)isAtEnd;
+{
+    return (loc >= length);
+}
+
+- (unsigned)scanLocation;
+{
+    return loc;
+}
+
+- (unsigned)remainingLength;
+{
+    return (length - loc);
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEShared.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEShared.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEShared.h	(revision 124)
@@ -0,0 +1,51 @@
+/*
+ *  ICeCoffEEShared.h
+ *  ICeCoffEE APE
+ *
+ *  Created by Nicholas Riley on Mon Jan 20 2003.
+ *  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+ *
+ */
+
+#ifndef _H_ICeCoffEEShared
+#define _H_ICeCoffEEShared
+
+#include <CoreFoundation/CoreFoundation.h>
+
+#define ICCF_DEBUG 0
+#define ICCF_WEBKIT 0
+
+#if ICCF_DEBUG
+#define ICLog NSLog
+#define ICapeprintf apeprintf
+#else
+#define ICLog (void)
+#define ICapeprintf (void)
+#endif
+
+extern const OSType kICCFCreator;
+
+extern const CFStringRef kICBundleIdentifier;
+
+// ICeCoffEE 1.1/1.2 CFPreferences
+extern const CFStringRef kIC12PrefExcluded;
+extern const CFStringRef kIC12PrefExcludedAppSpecifierBundleID;
+
+// CFPreferences
+extern const CFStringRef kICLastLoadedVersion; // CFString
+extern const CFStringRef kICCommandClickEnabled; // CFNumber (Boolean)
+extern const CFStringRef kICTextBlinkEnabled; // CFNumber (Boolean)
+extern const CFStringRef kICTextBlinkCount; // CFNumber (int)
+extern const CFStringRef kICServicesInContextualMenu; // CFNumber (Boolean)
+extern const CFStringRef kICServicesInMenuBar; // CFNumber (Boolean)
+extern const CFStringRef kICErrorSoundEnabled; // CFNumber (Boolean)
+extern const CFStringRef kICErrorDialogEnabled; // CFNumber (Boolean)
+
+// APEBundleMessages
+extern const CFStringRef kICPreferencesChanged;
+
+// UI constants
+extern const int kICHysteresisPixels;
+extern const int kICBlinkDelayUsecs;
+
+#endif /* _H_ICeCoffEEShared */
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEShared.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEShared.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEShared.m	(revision 124)
@@ -0,0 +1,35 @@
+/*
+ *  ICeCoffEEShared.m
+ *  ICeCoffEE APE
+ *
+ *  Created by Nicholas Riley on Wed Jan 22 2003.
+ *  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+ *
+ */
+
+#include "ICeCoffEEShared.h"
+#import <Foundation/NSString.h>
+
+const OSType      kICCFCreator = 'ICCF';
+const CFStringRef kICBundleIdentifier = (CFStringRef)@"net.sabi.ICeCoffEE";
+
+// ICeCoffEE 1.1/1.2 CFPreferences
+const CFStringRef kIC12PrefExcluded = (CFStringRef)@"Excluded Applications"; // CFArray of CFDictionaries
+const CFStringRef kIC12PrefExcludedAppSpecifierBundleID = (CFStringRef)@"CFBundleID"; // CFDictionary key
+
+// CFPreferences
+const CFStringRef kICLastLoadedVersion = (CFStringRef)@"ICLastLoadedVersion"; // CFNumber (bool)
+const CFStringRef kICCommandClickEnabled = (CFStringRef)@"ICCommandClickEnabled"; // CFNumber (bool)
+const CFStringRef kICTextBlinkEnabled = (CFStringRef)@"ICTextBlinkEnabled"; // CFNumber (bool)
+const CFStringRef kICTextBlinkCount = (CFStringRef)@"ICTextBlinkCount"; // CFNumber (int)
+const CFStringRef kICServicesInContextualMenu = (CFStringRef)@"ICServicesInContextualMenu"; // CFNumber (bool)
+const CFStringRef kICServicesInMenuBar = (CFStringRef)@"ICServicesInMenuBar"; // CFNumber (bool)
+const CFStringRef kICErrorSoundEnabled = (CFStringRef)@"ICErrorSoundEnabled"; // CFNumber (bool)
+const CFStringRef kICErrorDialogEnabled = (CFStringRef)@"ICErrorDialogEnabled"; // CFNumber (bool)
+
+// APEBundleMessages
+const CFStringRef kICPreferencesChanged = (CFStringRef)@"ICPreferencesChanged";
+
+// UI constants
+const int kICHysteresisPixels = 4;
+const int kICBlinkDelayUsecs = 60000;
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEESuper.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEESuper.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEESuper.h	(revision 124)
@@ -0,0 +1,16 @@
+//
+//  ICeCoffEESuper.h
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on Sun Jan 19 2003.
+//  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+//
+
+#import <AppKit/AppKit.h>
+
+
+@interface ICeCoffEESuper : NSTextView {
+
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEESuper.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEESuper.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEESuper.m	(revision 124)
@@ -0,0 +1,24 @@
+//
+//  ICeCoffEESuper.m
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on Sun Jan 19 2003.
+//  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEESuper.h"
+
+
+@implementation ICeCoffEESuper
+
+- (NSMenu *)menuForEvent:(NSEvent *)e;
+{
+    return [super menuForEvent: e];
+}
+
+- (void)mouseDown:(NSEvent *)e;
+{
+    [super mouseDown: e];
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETerminal.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETerminal.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETerminal.h	(revision 124)
@@ -0,0 +1,27 @@
+//
+//  ICeCoffEETerminal.h
+//  ICeCoffEE
+//
+//  Created by Nicholas Riley on Mon Jan 28 2002.
+//  Copyright (c) 2002 Nicholas Riley. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+struct _FSelPt {
+    unsigned int line;
+    unsigned short col;
+};
+
+@interface ICECoffEETermSubviewSuper:NSView <NSTextInput>
+{
+}
+
+- (void)_optionClickEvent:(NSEvent *)event:(unsigned int)row:(unsigned short)column;
+- (void)setNeedsDisplay;
+
+@end
+
+@interface ICeCoffEETerminal : ICECoffEETermSubviewSuper
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETerminal.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETerminal.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETerminal.m	(revision 124)
@@ -0,0 +1,434 @@
+//
+//  ICeCoffEETerminal.m
+//  ICeCoffEE
+//
+//  Created by Nicholas Riley on Mon Jan 28 2002.
+//  Copyright (c) 2002 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEETerminal.h"
+#import "ICeCoffEEScanner.h"
+#import "ICeCoffEE.h"
+#import <Carbon/Carbon.h>
+#include <unistd.h>
+
+static NSRange ICCF_zeroRange = { NSNotFound, 5 };
+
+#define min(a,b)        (a < b ? a : b)
+#define max(a,b)        (a > b ? a : b)
+
+@interface TermStorage:NSObject
+- (struct _FSelPt)selPt0;
+- (struct _FSelPt)selPt1;
+- (BOOL)hasSelection;
+- (void)startSelectionAtLine:(unsigned int)row column:(unsigned short)column;
+- (void)startSelectionAtLine:(unsigned int)row offset:(unsigned short)offset;
+- (void)endSelectionAtLine:(unsigned int)row offset:(unsigned short)offset;
+- (void)selectWhitespaceDelimitedTextAtLine:(unsigned int)line offset:(unsigned short)offset;
+- (void)selectWordAtLine:(unsigned int)line offset:(unsigned short)offset;
+- (NSString *)selectedString;
+- (unsigned int)numberOfLines;
+- (unsigned int)effectiveColumnsForLine:(unsigned int)line;
+- (void)clearSelection;
+- (BOOL)isSelected:(unsigned int)line :(unsigned int)column;
+@end
+
+@interface TermController:NSObject
+- (TermStorage *)storage;
+@end
+
+@implementation ICECoffEETermSubviewSuper
+// NSTextInput implementation
+- (void)insertText:(id)aString {}
+- (void)doCommandBySelector:(SEL)aSelector {}
+- (void)setMarkedText:(id)aString selectedRange:(NSRange)selRange {}
+- (void)unmarkText {}
+- (BOOL)hasMarkedText { return NO; }
+- (long)conversationIdentifier { return 0; }
+- (NSAttributedString *)attributedSubstringFromRange:(NSRange)theRange { return nil; }
+- (NSRange)markedRange { return ICCF_zeroRange; }
+- (NSRange)selectedRange { return ICCF_zeroRange; }
+- (NSRect)firstRectForCharacterRange:(NSRange)theRange { return NSZeroRect; }
+- (unsigned int)characterIndexForPoint:(NSPoint)thePoint { return 0; }
+- (NSArray*)validAttributesForMarkedText { return nil; }
+
+// misc. other stuff
+- (void)_optionClickEvent:(NSEvent *)event:(unsigned int)row:(unsigned short)column {}
+- (void)setNeedsDisplay; {}
+
+@end
+
+@interface ICeCoffEETerminalRange : NSObject
+{
+    TermStorage *storage;
+    struct _FSelPt pt0;
+    struct _FSelPt pt1;
+    unsigned int width;
+    unsigned int height;
+}
+
++ (ICeCoffEETerminalRange *)rangeWithTerminal:(ICeCoffEETerminal *)terminal;
++ (ICeCoffEETerminalRange *)rangeWithTerminal:(ICeCoffEETerminal *)terminal pt0:(struct _FSelPt)selPt0 pt1:(struct _FSelPt)selPt1;
+
+- (id)initWithTerminal:(ICeCoffEETerminal *)terminal;
+- (id)initWithTerminal:(ICeCoffEETerminal *)terminal pt0:(struct _FSelPt)selPt0 pt1:(struct _FSelPt)selPt1;
+
+- (struct _FSelPt)pt0;
+- (struct _FSelPt)pt1;
+
+- (NSString *)stringFromRange;
+
+- (void)growBackwardByLength:(unsigned long)length;
+- (void)growForwardByLength:(unsigned long)length;
+
+- (void)shrinkBackByLength:(unsigned long)length;
+- (void)shrinkFrontByLength:(unsigned long)length;
+
+- (BOOL)rangeIsEmpty;
+
+- (void)select;
+
+@end
+
+@implementation ICeCoffEETerminalRange
+
++ (ICeCoffEETerminalRange *)rangeWithTerminal:(ICeCoffEETerminal *)terminal;
+{
+    return [[[self alloc] initWithTerminal: terminal] autorelease];
+}
+
++ (ICeCoffEETerminalRange *)rangeWithTerminal:(ICeCoffEETerminal *)terminal pt0:(struct _FSelPt)selPt0 pt1:(struct _FSelPt)selPt1;
+{
+    return [[[self alloc] initWithTerminal: terminal pt0: selPt0 pt1: selPt1] autorelease];
+}
+
+- (id)initWithTerminal:(ICeCoffEETerminal *)terminal;
+{
+    if ( (self = [self init]) != nil) {
+        storage = [(TermController *)[terminal valueForKey: @"controller"] storage];
+        pt0 = [storage selPt0];
+        pt1 = [storage selPt1];
+        width = [storage effectiveColumnsForLine: pt0.line];
+        height = [storage numberOfLines];
+    }
+    return self;
+}
+
+- (id)initWithTerminal:(ICeCoffEETerminal *)terminal pt0:(struct _FSelPt)selPt0 pt1:(struct _FSelPt)selPt1;
+{
+    if ( (self = [self initWithTerminal: terminal]) != nil) {
+        pt0 = selPt0;
+        pt1 = selPt1;
+    }
+    return self;
+}
+
+- (struct _FSelPt)pt0;
+{
+    return pt0;
+}
+
+- (struct _FSelPt)pt1;
+{
+    return pt1;
+}
+
+- (NSString *)stringFromRange;
+{
+    struct _FSelPt oldPt0 = [storage selPt0], oldPt1 = [storage selPt1];
+    NSString *str;
+
+    [storage startSelectionAtLine: pt0.line offset: pt0.col];
+    [storage endSelectionAtLine: pt1.line offset: pt1.col];
+
+    str = [storage selectedString];
+
+    [storage startSelectionAtLine: oldPt0.line offset: oldPt0.col];
+    [storage endSelectionAtLine: oldPt1.line offset: oldPt1.col];
+
+    return str;
+}
+
+- (struct _FSelPt)_moveBack:(struct _FSelPt)pt byLength:(unsigned long)length;
+{
+    unsigned int extraLines = length / width;
+    if ((long)(pt.line - extraLines) < 0) {
+        pt.line = 0;
+        pt.col = 0;
+    } else if (pt.line - extraLines == 0) {
+        pt.line = 0;
+        pt.col += width - (length % height);
+        if (pt.col < width) pt.col = 0;
+        else pt.col -= width;
+    } else {
+        pt.line -= extraLines;
+        pt.col += width - (length % height);
+        if (pt.col < width) pt.line--;
+        else pt.col -= width;
+    }
+    return pt;
+}
+
+- (struct _FSelPt)_moveForward:(struct _FSelPt)pt byLength:(unsigned long)length;
+{
+    unsigned int extraLines = length / width;
+    if (pt.line + extraLines >= height) {
+        pt.line = height - 1;
+        pt.col = width - 1;
+    } else if (pt.line + extraLines == height - 1) {
+        pt.line = height - 1;
+        pt.col += length % height;
+        if (pt.col >= width) pt.col = width - 1;
+    } else {
+        pt.line += extraLines;
+        pt.col = pt.col + (length % height);
+        if (pt.col > width) {
+            pt.line++;
+            pt.col -= width;
+        }
+    }
+    return pt;
+}
+
+- (BOOL)rangeIsEmpty;
+{
+    return (pt1.line < pt0.line) || (pt1.line == pt0.line && pt1.col <= pt0.col);
+}
+
+- (void)growBackwardByLength:(unsigned long)length;
+{
+    pt0 = [self _moveBack: pt0 byLength: length];
+}
+
+- (void)growForwardByLength:(unsigned long)length;
+{
+    pt1 = [self _moveForward: pt1 byLength: length];
+}
+
+- (void)shrinkFrontByLength:(unsigned long)length;
+{
+    pt0 = [self _moveForward: pt0 byLength: length];
+}
+
+- (void)shrinkBackByLength:(unsigned long)length;
+{
+    pt1 = [self _moveBack: pt1 byLength: length];
+}
+
+- (void)select;
+{
+    [storage startSelectionAtLine: pt0.line offset: pt0.col];
+    [storage endSelectionAtLine: pt1.line offset: pt1.col];
+}
+
+- (NSString *)description;
+{
+    return [NSString stringWithFormat: @"L%uC%hu - L%uC%hu: |%@|", pt0.line, pt0.col, pt1.line, pt1.col, [[self stringFromRange] stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]];
+}
+
+@end
+
+// TermSubview's NSTextInput implementation is essentially a noop: make one that does something
+@implementation ICeCoffEETerminal // XXX normally in category (NSTextInput), but APE doesnÕt work if I do that
+
+- (NSRange)selectedRange {
+    TermStorage *storage = [(TermController *)[self valueForKey: @"controller"] storage];
+    struct _FSelPt selPt0 = [storage selPt0], selPt1 = [storage selPt1];
+    unsigned width = [storage effectiveColumnsForLine: selPt0.line];
+    unsigned pt0 = selPt0.line * width + selPt0.col;
+    ICLog(@"selPt0 %d x %d selPt1 %d x %d", selPt0.line, selPt0.col, selPt1.line, selPt1.col);
+    return NSMakeRange(pt0, selPt1.line * width + selPt1.col - pt0);
+}
+
+// XXX string isn't padded: what we need is something like the ICeCoffEE 1.2.x method, adapted to Terminal 1.2, but we've chosen another way
+- (NSAttributedString *)attributedSubstringFromRange:(NSRange)theRange;
+{
+    TermStorage *storage = [(TermController *)[self valueForKey: @"controller"] storage];
+    struct _FSelPt oldPt0 = [storage selPt0], oldPt1 = [storage selPt1], realPt0, realPt1;
+    unsigned pt1 = theRange.location + theRange.length;
+    unsigned width = [storage effectiveColumnsForLine: 0];
+    NSAttributedString *str;
+
+    realPt0.line = theRange.location / width;
+    realPt0.col = theRange.location % width;
+    realPt1.line = pt1 / width;
+    realPt1.col = pt1 % width;
+
+    [storage startSelectionAtLine: realPt0.line offset: realPt0.col];
+    [storage endSelectionAtLine: realPt1.line offset: realPt1.col];
+
+    str = [[NSAttributedString alloc] initWithString: [storage selectedString]];
+
+    NSAssert2([str length] == theRange.length, @"Substring has length %lu when we expected %lu", [str length], theRange.length);
+
+    [storage startSelectionAtLine: oldPt0.line offset: oldPt0.col];
+    [storage endSelectionAtLine: oldPt1.line offset: oldPt1.col];
+    
+    return [str autorelease];
+}
+
+static NSEvent *ICCF_downEvent;
+static unsigned int ICCF_line;
+static unsigned short ICCF_col;
+static BOOL ICCF_optionClickRegistered;
+
+- (void)setSelectedRange:(NSRange)charRange affinity:(NSSelectionAffinity)affinity stillSelecting:(BOOL)stillSelectingFlag;
+{
+    TermStorage *storage = [(TermController *)[self valueForKey: @"controller"] storage];
+    unsigned width = [storage effectiveColumnsForLine: 0];
+    unsigned pt1 = charRange.location + charRange.length;
+    [storage startSelectionAtLine: charRange.location / width offset: charRange.location % width];
+    [storage endSelectionAtLine: pt1 / width offset: pt1 % width];
+    // [self refresh];
+}
+
+void ICCF_LaunchURLFromTerminal(ICeCoffEETerminal *self) {
+    NSCharacterSet *urlLeftDelimiters = nil, *urlRightDelimiters = nil;
+
+    ICeCoffEETerminalRange *termRange = nil, *selRange = nil;
+    NSString *s;
+    NSRange range, delimiterRange;
+
+    NS_DURING
+
+        TermStorage *storage = [(TermController *)[self valueForKey: @"controller"] storage];
+
+        if ([storage hasSelection] && [storage isSelected: ICCF_line : ICCF_col]) {
+            selRange = [ICeCoffEETerminalRange rangeWithTerminal: self];
+        } else { // select something
+            [storage selectWordAtLine: ICCF_line offset: ICCF_col];
+            selRange = [ICeCoffEETerminalRange rangeWithTerminal: self];
+            NSCAssert(![selRange rangeIsEmpty], ICCF_LocalizedString(@"Sorry, ICeCoffEE was unable to find anything to select"));
+        }
+
+        // However, word selection does not capture even the approximate boundaries of a URL
+        // (text to a space/line ending character); it'll stop at a period in the middle of a hostname.
+        // So, we expand it as follows:
+
+        ICCF_Delimiters(&urlLeftDelimiters, &urlRightDelimiters);
+
+        termRange = [ICeCoffEETerminalRange rangeWithTerminal: self pt0: [selRange pt0] pt1: [selRange pt0]];
+        // add 1 to range to trap delimiters that are on the edge of the selection (i.e., <...)
+        [termRange growForwardByLength: 1];
+        [termRange growBackwardByLength: ICCF_MAX_URL_LEN]; // potentially too big
+        s = [termRange stringFromRange];
+        ICLog(@"front %@", termRange);
+        delimiterRange = [s rangeOfCharacterFromSet: urlLeftDelimiters
+                                            options: NSLiteralSearch | NSBackwardsSearch];
+        if (delimiterRange.location == NSNotFound) {
+            // extend to beginning of string (as much as possible)
+            [selRange growBackwardByLength: [s length] - 1];
+        } else {
+            NSCAssert(delimiterRange.length == 1, @"Internal error: delimiter matched range is not of length 1");
+            [selRange growBackwardByLength: [s length] - delimiterRange.location - 2];
+        }
+
+        ICLog(@"parsed front %@", selRange);
+
+        termRange = [ICeCoffEETerminalRange rangeWithTerminal: self pt0: [selRange pt1] pt1: [selRange pt1]];
+        // subtract 1 from range to trap delimiters that are on the edge of the selection (i.e., ...>)
+        [termRange growBackwardByLength: 1];
+        [termRange growForwardByLength: ICCF_MAX_URL_LEN]; // potentially too big
+        s = [termRange stringFromRange];
+        ICLog(@"back %@", termRange);
+        delimiterRange = [s rangeOfCharacterFromSet: urlRightDelimiters
+                                            options: NSLiteralSearch];
+        if (delimiterRange.location == NSNotFound) {
+            // extend to end of string
+            [selRange growForwardByLength: [s length] - 1];
+        } else {
+            NSCAssert(delimiterRange.length == 1, @"Internal error: delimiter matched range is not of length 1");
+            [selRange growForwardByLength: delimiterRange.location - 1];
+        }
+
+        ICCF_StartIC();
+
+        s = [selRange stringFromRange];
+
+        range = NSMakeRange(0, [s length]);
+
+        ICCF_CheckRange(range);
+
+        ICLog(@"parsed back %@", selRange);
+        NSLog(@"range of string %@", NSStringFromRange(range));
+        ICCF_ParseURL(s, &range);
+        ICLog(@"parsed range %@ |%@|", NSStringFromRange(range), [s substringWithRange: range]);
+
+        [selRange shrinkFrontByLength: range.location];
+        [selRange shrinkBackByLength: [s length] - range.length - range.location];
+
+        s = [selRange stringFromRange];
+        ICLog(@"reconstituted URL %@", selRange);
+
+        [selRange select];
+        [self setNeedsDisplay];
+        [[self superview] display];
+
+        ICCF_LaunchURL(s, ICCF_KeyboardAction());
+        
+        if (ICCF_prefs.textBlinkEnabled) {
+            int i;
+            // Terminal flashes the selection one more time, so blink one fewer
+            for (i = 1 ; i < ICCF_prefs.textBlinkCount ; i++) {
+                [storage clearSelection];
+                [self setNeedsDisplay];
+                [[self superview] display];
+                usleep(kICBlinkDelayUsecs);
+                [selRange select];
+                [self setNeedsDisplay];
+                [[self superview] display];
+                usleep(kICBlinkDelayUsecs);
+            }
+        }
+    NS_HANDLER
+        ICCF_HandleException(localException);
+    NS_ENDHANDLER
+
+    ICCF_StopIC();
+}
+
+- (void)_optionClickEvent:(NSEvent *)event:(unsigned int)row:(unsigned short)column;
+{
+    if (ICCF_downEvent != nil) {
+        ICCF_line = row; // XXX are these lines or rows? check with wrapping
+        ICCF_col = column;
+        ICCF_optionClickRegistered = YES;
+    } else {
+        [super _optionClickEvent: event :row :column];
+    }
+}
+
+- (void)mouseUp:(NSEvent *)upEvent;
+{
+    ICLog(@"ICeCoffEE Terminal up: %@", upEvent);
+    [super mouseUp: upEvent];
+    if (ICCF_downEvent != nil) {
+        NSPoint downPt = [ICCF_downEvent locationInWindow];
+        NSPoint upPt = [upEvent locationInWindow];
+        [ICCF_downEvent release];
+        ICCF_downEvent = nil;
+        if (abs(downPt.x - upPt.x) <= kICHysteresisPixels && abs(downPt.y - upPt.y) <= kICHysteresisPixels) {
+            if (ICCF_optionClickRegistered) {
+                ICCF_optionClickRegistered = NO;
+                ICLog(@"========= launching... %d x %d", ICCF_line, ICCF_col);
+                ICCF_LaunchURLFromTerminal(self);
+            }
+        }
+    }
+}
+
+- (void)mouseDown:(NSEvent *)downEvent;
+{
+    if (ICCF_enabled && ICCF_prefs.commandClickEnabled && ICCF_EventIsCommandMouseDown(downEvent)) {
+        NSEvent *optionClickEvent = [NSEvent mouseEventWithType: NSLeftMouseDown location: [downEvent locationInWindow] modifierFlags: NSAlternateKeyMask timestamp: [downEvent timestamp] windowNumber: [downEvent windowNumber] context: [downEvent context] eventNumber: [downEvent eventNumber] clickCount: 1 pressure: 0];
+        [ICCF_downEvent release];
+        ICCF_downEvent = [downEvent retain];
+        ICLog(@"ICeCoffEE Terminal constructed: %@", optionClickEvent);
+        ICCF_optionClickRegistered = NO;
+        [super mouseDown: optionClickEvent];
+    } else {
+        [super mouseDown: downEvent];
+    }
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETestWController.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETestWController.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETestWController.h	(revision 124)
@@ -0,0 +1,18 @@
+//
+//  ICeCoffEETestWController.h
+//  ICeCoffEE
+//
+//  Created by Nicholas Riley on Mon Jan 28 2002.
+//  Copyright (c) 2001 Nicholas Riley. All rights reserved.
+//
+
+#import <AppKit/AppKit.h>
+
+
+@interface ICeCoffEETestWController : NSWindowController {
+
+}
+
+- (IBAction)toggleDrawer:(NSButton *)sender;
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETestWController.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETestWController.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETestWController.m	(revision 124)
@@ -0,0 +1,24 @@
+//
+//  ICeCoffEETestWController.m
+//  ICeCoffEE
+//
+//  Created by Nicholas Riley on Mon Jan 28 2002.
+//  Copyright (c) 2001 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEETestWController.h"
+
+
+@implementation ICeCoffEETestWController
+
+- (IBAction)toggleDrawer:(NSButton *)sender {
+    NSDrawer *drawer = [[[self window] drawers] objectAtIndex: 0];
+    NSSize size;
+    // work around bug that sets content size to 200x200 no matter what (!?)
+    size = [drawer contentSize];
+    size.height = 56;
+    [drawer setContentSize: size];
+    [drawer toggle: self];
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETextEdit.c
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETextEdit.c	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETextEdit.c	(revision 124)
@@ -0,0 +1,187 @@
+/*
+ *  ICeCoffEETextEdit.c
+ *  ICeCoffEE APE
+ *
+ *  Created by Nicholas Riley on Sun Jan 26 2003.
+ *  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+ *
+ */
+
+// based on ICeTEe.c by Michael Schürig
+
+#include "ICeCoffEETextEdit.h"
+#include "ICeCoffEEConfig.h"
+#include "ICeCoffEEShared.h"
+#include <ApplicationEnhancer/ApplicationEnhancer.h>
+
+//=============================================================================
+//		Global Variables
+//-----------------------------------------------------------------------------
+TEClickProcPtr	gTEClick = NULL;
+
+//=============================================================================
+//		Private function prototypes
+//-----------------------------------------------------------------------------
+void	ICCF_LaunchURLFromTEClick(TEHandle teH, short oldSelStart, short oldSelEnd, iccfURLAction action);
+OSStatus ICCF_DoCommandClick(TEHandle teH, long selStart, long selEnd, iccfURLAction action);
+
+//=============================================================================
+//		ICCF_LaunchURLFromTEClick : TEClick addition.
+//-----------------------------------------------------------------------------
+void	ICCF_LaunchURLFromTEClick(TEHandle teH, short oldSelStart, short oldSelEnd, iccfURLAction action)
+{
+    OSStatus			err;
+    ICapeprintf("ICCF_LaunchURLFromTEClick entered\n");
+    if (ICCF_enabled && ICCF_prefs.commandClickEnabled) {
+        if ( !(		(oldSelStart <= (**teH).selStart) && ((**teH).selStart <= oldSelEnd)
+                 &&	(oldSelStart <= (**teH).selEnd) && ((**teH).selEnd <= oldSelEnd) ) ) {
+            oldSelStart = (**teH).selStart;
+            oldSelEnd = (**teH).selEnd;
+        }
+        err = ICCF_DoCommandClick(teH, oldSelStart, oldSelEnd, action);
+        if (err != noErr && err != userCanceledErr) {
+            ICapeprintf("ICCF_DoCommandClick failed: %ld\n", err);
+            if (ICCF_prefs.errorSoundEnabled) SysBeep(10);
+            if (ICCF_prefs.errorDialogEnabled) {
+                CFStringRef alertTitle = ICCF_CopyLocalizedString(CFSTR("AlertTitle"));
+                CFStringRef alertMessageTemplate = ICCF_CopyLocalizedString(CFSTR("AlertMessage%@"));
+                CFStringRef errStr = ICCF_CopyErrString(err, CFSTR("ICCF_DoCommandClick"));
+                CFStringRef alertMessage = CFStringCreateWithFormat(NULL, NULL, alertMessageTemplate, errStr);
+                CFStringRef disableButton = ICCF_CopyLocalizedString(CFSTR("AlertDisableButton"));
+                AlertStdCFStringAlertParamRec paramRec = { kStdCFStringAlertVersionOne, true, false, NULL, disableButton, NULL, kStdOkItemIndex, 0, kWindowDefaultPosition, kNilOptions };
+
+                DialogRef alertRef = NULL;
+                DialogItemIndex itemHit = kStdOkItemIndex;
+                err = CreateStandardAlert(kAlertNoteAlert, alertTitle, alertMessage, &paramRec, &alertRef);
+
+                if (err != noErr) { // last resort: should be apeprintf, not ICapeprintf
+                    apeprintf("ICCF_DoCommandClick failed, couldn't create alert (%ld): %@\n", err, errStr);
+                } else {
+                    err = RunStandardAlert(alertRef, NULL, &itemHit);
+                    if (err != noErr) { // last resort: should be apeprintf, not ICapeprintf
+                        apeprintf("ICCF_DoCommandClick failed, couldn't run alert (%ld): %@\n", err, errStr);
+                    }
+                }
+                
+                if (alertTitle != NULL) CFRelease(alertTitle);
+                if (alertMessageTemplate != NULL) CFRelease(alertMessageTemplate);
+                if (alertMessage != NULL) CFRelease(alertMessage);
+                if (disableButton != NULL) CFRelease(disableButton);
+                if (errStr != NULL) CFRelease(errStr);
+
+                if (itemHit == kStdCancelItemIndex) {
+                    alertTitle = ICCF_CopyLocalizedString(CFSTR("DisableAlertTitle"));
+                    alertMessage = ICCF_CopyLocalizedString(CFSTR("DisableAlertMessage"));
+                    disableButton = ICCF_CopyLocalizedString(CFSTR("DisableAlertDisableButton"));
+                    CFStringRef dontDisableButton = ICCF_CopyLocalizedString(CFSTR("DisableAlertDontDisableButton"));
+                    
+                    AlertStdCFStringAlertParamRec disableParamRec = { kStdCFStringAlertVersionOne, true, false, disableButton, dontDisableButton, NULL, kStdOkItemIndex, kStdCancelItemIndex, kWindowDefaultPosition, kNilOptions };
+
+                    itemHit = kStdCancelItemIndex;
+                    err = CreateStandardAlert(kAlertNoteAlert, alertTitle, alertMessage, &disableParamRec, &alertRef);
+
+                    if (err != noErr) { // last resort: should be apeprintf, not ICapeprintf
+                        apeprintf("ICCF_DoCommandClick couldn't create alert (%ld)\n", err);
+                    } else {
+                        err = RunStandardAlert(alertRef, NULL, &itemHit);
+                        if (err != noErr) { // last resort: should be apeprintf, not ICapeprintf
+                            apeprintf("ICCF_DoCommandClick couldn't run alert (%ld)\n", err);
+                        }
+                    }
+                    if (alertTitle != NULL) CFRelease(alertTitle);
+                    if (alertMessage != NULL) CFRelease(alertMessage);
+                    if (disableButton != NULL) CFRelease(disableButton);
+                    if (dontDisableButton != NULL) CFRelease(dontDisableButton);
+
+                    if (itemHit == kStdOkItemIndex) ICCF_enabled = false;
+                }
+            }                
+        }
+    }
+    ICapeprintf("ICCF_LaunchURLFromTEClick exit\n");
+}
+
+//=============================================================================
+//		ICCF_DoCommandClick : Handle the click.
+//-----------------------------------------------------------------------------
+OSStatus	ICCF_DoCommandClick(TEHandle teH, long selStart, long selEnd, iccfURLAction action)
+{
+    ICInstance inst = NULL;
+    OSStatus	err = noErr, err2;
+    ICapeprintf("ICCF_DoCommandClick entered\n");
+    if (inst == NULL) {
+        if ( (err = ICStart(&inst, kICCFCreator)) != noErr)
+            return err;
+    }
+    Handle		textH;
+    SInt8		s;
+    ConstStringPtr hint;
+    Boolean		needsSlashes;
+    textH = (Handle)TEGetText(teH);
+    s = HGetState(textH);
+    HLock(textH);
+    hint = ICCF_GetHint(inst, *textH, GetHandleSize(textH), &selStart, &selEnd, &needsSlashes);
+    ICapeprintf("ICCF_DoCommandClick: %sneedsSlashes\n", needsSlashes ? "" : "doesn't ");
+    if (hint != NULL) {
+        CGrafPtr thePort = teH[0]->inPort;
+        if (!QDIsPortBuffered(thePort)) thePort = NULL;
+        TESetSelect(selStart, selEnd, teH);
+        if (thePort != NULL) QDFlushPortBuffer(thePort, NULL);
+
+        Handle urlH = NewHandle(0);
+        if (urlH == NULL) {
+            err = MemError();
+        } else {
+            err = ICParseURL(inst, hint, *textH, GetHandleSize(textH), &selStart, &selEnd, urlH);
+            if (err == noErr) {
+                if (needsSlashes) ICCF_AddSlashes(urlH, hint);
+                err = ICCF_DoURLAction(inst, hint, *urlH, 0, GetHandleSize(urlH), action);
+            }
+            DisposeHandle(urlH);
+        }
+        
+        if (err == noErr) {
+            SInt32	junk;
+            SInt16	i = ICCF_prefs.textBlinkCount;
+            SInt32  blinkDelay = kICBlinkDelayUsecs / 10000; // XXX incorrect, fix
+            TESetSelect(selStart, selEnd, teH);
+            if (thePort != NULL) QDFlushPortBuffer(thePort, NULL);
+            while (i--) {
+                Delay(blinkDelay, &junk);
+                TEDeactivate(teH);
+                if (thePort != NULL) QDFlushPortBuffer(thePort, NULL);
+                Delay(blinkDelay, &junk);
+                TEActivate(teH);
+                if (thePort != NULL) QDFlushPortBuffer(thePort, NULL);
+            }
+        }
+    }
+    HSetState(textH, s);
+    err2 = ICStop(inst);
+    if (err == noErr)
+        err = err2;
+    ICapeprintf("ICCF_DoCommandClick exit\n");
+    return(err);
+}
+
+void ICCF_TEClick(Point pt, Boolean fExtend, TEHandle teH) {
+    short				oldSelStart, oldSelEnd;
+
+    ICapeprintf("ICCF_TEClick entered\n");
+
+    // Save old selection
+    oldSelStart = (**teH).selStart;
+    oldSelEnd = (**teH).selEnd;
+    // Get modifier keys
+    UInt32 modifiers = GetCurrentEventKeyModifiers();
+    // Call the original TEClick()
+    gTEClick(pt, fExtend, teH);
+    // Do our thing
+    if (modifiers & cmdKey) {
+        iccfURLAction action;
+        action.presentMenu = (modifiers & optionKey) != 0;
+        action.launchInBackground = (modifiers & shiftKey) != 0;
+        ICCF_LaunchURLFromTEClick(teH, oldSelStart, oldSelEnd, action);
+    }
+    ICapeprintf("ICCF_TEClick exited\n");
+}
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETextEdit.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETextEdit.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEETextEdit.h	(revision 124)
@@ -0,0 +1,15 @@
+/*
+ *  ICeCoffEETextEdit.h
+ *  ICeCoffEE APE
+ *
+ *  Created by Nicholas Riley on Sun Jan 26 2003.
+ *  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+ *
+ */
+
+#include <Carbon/Carbon.h>
+
+typedef void (*TEClickProcPtr)(Point pt, Boolean fExtend, TEHandle h);
+extern TEClickProcPtr gTEClick;
+
+void ICCF_TEClick(Point pt, Boolean fExtend, TEHandle h);
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKit.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKit.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKit.h	(revision 124)
@@ -0,0 +1,16 @@
+//
+//  ICeCoffEEWebKit.h
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on Sun Jan 19 2003.
+//  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEEWebKitSuper.h"
+
+
+@interface ICeCoffEEWebKit : ICeCoffEEWebKitSuper {
+
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKit.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKit.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKit.m	(revision 124)
@@ -0,0 +1,153 @@
+//
+//  ICeCoffEEWebKit.m
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on Sun Jan 19 2003.
+//  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEEWebKit.h"
+#import <unistd.h>
+
+// from WebCoreBridge.h
+@interface WebCoreBridge
+
+- (NSDictionary *)elementAtPoint:(NSPoint)point;
+
+- (void)setSelectionFrom:(id /* WebDOMNode */)start startOffset:(int)startOffset to:(id /* WebDOMNode */)end endOffset:(int) endOffset;
+- (void)deselectAll;
+
+- (void)forceLayout;
+
+- (NSString *)selectedString;
+
+- (id /* WebDOMNode */)selectionStart;
+- (int)selectionStartOffset;
+- (id /* WebDOMNode */)selectionEnd;
+- (int)selectionEndOffset;
+
+@end
+
+// from WebKit, not yet public
+@interface WebHTMLView
+
+- (WebCoreBridge *)_bridge;
+- (NSDictionary *)_elementAtPoint:(NSPoint)point;
+
+@end
+
+@implementation ICeCoffEEWebKit
+
+- (NSMenu *)menuForEvent:(NSEvent *)e;
+{
+    NSMenu *myMenu = [super menuForEvent: e];
+    return ICCF_MenuForEvent(self, myMenu, e);
+}
+
+static NSEvent *downEvent = nil;
+typedef struct {
+    int startOffset;
+    int endOffset;
+    id fromNode;
+    id toNode;
+} ICCF_WebCoreSelection;
+static NSString *selectedString = nil; // XXX remove when we can do this properly
+
+static ICCF_WebCoreSelection selection = {nil, nil, 0, 0};
+
+void ICCF_GetWebCoreBridgeSelection(WebCoreBridge *bridge, ICCF_WebCoreSelection *ioSel) {
+    [ioSel->fromNode release]; ioSel->fromNode = nil;
+    [ioSel->toNode release]; ioSel->toNode = nil;
+    ioSel->startOffset = [bridge selectionStartOffset];
+    ioSel->endOffset = [bridge selectionEndOffset];
+    if (ioSel->startOffset != 0 && ioSel->endOffset != 0) {
+        ioSel->fromNode = [[bridge selectionStart] retain];
+        ioSel->toNode = [[bridge selectionEnd] retain];
+    }
+}
+
+void ICCF_SetWebCoreBridgeSelection(WebCoreBridge *bridge, ICCF_WebCoreSelection *inSel) {
+    if (inSel->fromNode == nil || inSel->toNode == nil)
+        [bridge deselectAll];
+    [bridge setSelectionFrom: inSel->fromNode
+                 startOffset: inSel->startOffset
+                          to: inSel->toNode
+                   endOffset: inSel->endOffset];
+}
+
+- (void)mouseDown:(NSEvent *)e;
+{
+    // don't want command-option-click, command-shift-click, etc. to trigger
+    if (ICCF_enabled && ICCF_prefs.commandClickEnabled && ICCF_EventIsCommandMouseDown(e)) {
+        // save selection: it will be deselected on super mouseDown
+        WebCoreBridge *bridge = [(WebHTMLView *)self _bridge];
+        ICCF_GetWebCoreBridgeSelection(bridge, &selection);
+        ICLog(@"selection start %d@%@ end %d@%@ string %@", [bridge selectionStartOffset], [bridge selectionStart], [bridge selectionEndOffset], [bridge selectionEnd], [bridge selectedString]);
+        // XXX hack until we have something better
+        [selectedString release]; selectedString = nil;
+        selectedString = [[bridge selectedString] retain];
+        downEvent = e;
+    } else {
+        downEvent = nil;
+    }
+    [super mouseDown: e];
+}
+
+- (void)mouseUp:(NSEvent *)e;
+{
+    [super mouseUp: e];
+    if (downEvent != nil) {
+        NSPoint downPt = [downEvent locationInWindow];
+        NSPoint upPt = [e locationInWindow];
+        downEvent = nil;
+        if (abs(downPt.x - upPt.x) > kICHysteresisPixels && abs(downPt.y - upPt.y) > kICHysteresisPixels)
+            return;
+
+        NS_DURING
+            WebCoreBridge *bridge = [(WebHTMLView *)self _bridge];
+            NSPoint viewClickPt = [self convertPoint: downPt fromView: nil];
+            NSDictionary *elementDict = [(WebHTMLView *)self _elementAtPoint: viewClickPt];
+            ICLog(@"elementDict: %@", elementDict);
+            NSAssert([elementDict count] != 0, @"ShouldnÕt get empty element dictionary"); // XXX clarify
+            if ([elementDict objectForKey: @"WebElementLinkURL"] != nil) {
+                ICLog(@"got a link");
+                NS_VOIDRETURN; // donÕt activate on links
+            }
+            if (selectedString == nil || [selectedString length] == 0)
+                NS_VOIDRETURN;
+            // XXX works, but doesn't update
+            ICCF_StartIC();
+            ICCF_LaunchURL(selectedString, ICCF_KeyboardAction());
+            // breaks in Safari v62 and before
+            ICCF_SetWebCoreBridgeSelection(bridge, &selection);
+            if (ICCF_prefs.textBlinkEnabled) {
+                int i;
+                for (i = 0 ; i < ICCF_prefs.textBlinkCount ; i++) {
+                    [bridge deselectAll];
+                    usleep(kICBlinkDelayUsecs);
+                    ICCF_SetWebCoreBridgeSelection(bridge, &selection);
+                    usleep(kICBlinkDelayUsecs);
+                }
+            }
+        NS_HANDLER
+            ICCF_HandleException(localException);
+        NS_ENDHANDLER
+
+        ICCF_StopIC();
+        // XXX need to release fromNode, toNode
+
+        // [bridge forceLayout];
+        // ICLog(@"force start %d end %d string %@", [bridge selectionStartOffset], [bridge selectionEndOffset], [bridge selectedString]);
+
+        // check selected string, first
+        // fabricate triple-click, examine selected string
+
+        // setSelectionFrom:startOffset:to:endOffset:
+
+        // ICCF_LaunchURLFromTextView(self);
+    }        
+}
+
+
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKitSuper.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKitSuper.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKitSuper.h	(revision 124)
@@ -0,0 +1,16 @@
+//
+//  ICeCoffEEWebKitSuper.h
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on Sun Jan 19 2003.
+//  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEE.h"
+
+
+@interface ICeCoffEEWebKitSuper : NSTextView {
+
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKitSuper.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKitSuper.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/ICeCoffEEWebKitSuper.m	(revision 124)
@@ -0,0 +1,29 @@
+//
+//  ICeCoffEEWebKitSuper.m
+//  ICeCoffEE APE
+//
+//  Created by Nicholas Riley on Sun Jan 19 2003.
+//  Copyright (c) 2003 Nicholas Riley. All rights reserved.
+//
+
+#import "ICeCoffEEWebKitSuper.h"
+
+
+@implementation ICeCoffEEWebKitSuper
+
+- (NSMenu *)menuForEvent:(NSEvent *)e;
+{
+    return [super menuForEvent: e];
+}
+
+- (void)mouseUp:(NSEvent *)e;
+{
+    [super mouseUp: e];
+}
+
+- (void)mouseDown:(NSEvent *)e;
+{
+    [super mouseDown: e];
+}
+
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Info.plist
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Info.plist	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Info.plist	(revision 124)
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>English</string>
+	<key>CFBundleExecutable</key>
+	<string>Unsanity Installer</string>
+	<key>CFBundleGetInfoString</key>
+	<string>Unsanity Installer version 3.0, Copyright 2002 Unsanity LLC.</string>
+	<key>CFBundleIconFile</key>
+	<string>ui.icns</string>
+	<key>CFBundleIdentifier</key>
+	<string>com.unsanity.installer</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundlePackageType</key>
+	<string>APPL</string>
+	<key>CFBundleShortVersionString</key>
+	<string>Unsanity Installer version 3.0</string>
+	<key>CFBundleSignature</key>
+	<string>????</string>
+	<key>CFBundleVersion</key>
+	<string>3.0</string>
+	<key>NSMainNibFile</key>
+	<string>MainMenu</string>
+	<key>NSPrincipalClass</key>
+	<string>NSApplication</string>
+</dict>
+</plist>
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/PkgInfo
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/PkgInfo	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/PkgInfo	(revision 124)
@@ -0,0 +1,1 @@
+APPL????
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Resources/English.lproj/Localizable.strings
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Resources/English.lproj/Localizable.strings	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Resources/English.lproj/Localizable.strings	(revision 124)
@@ -0,0 +1,79 @@
+/* Incompatible OSX Panel */
+"Incompatible Mac OS X Version" = "Incompatible Mac OS X Version";
+"%@ reqires at least Mac OS X %@. You have an older version installed. Please upgrade or download an older version of %@ that will be compatible with your system." = "%@ reqires at least Mac OS X %@. You have an older version installed. Please upgrade or download an older version of %@ that will be compatible with your system.";
+
+/* Ready Tab */
+"%@ was already installed for all users on this machine, and you are trying to install a local version. Doing so will result in two copies of %@ running on your Macintosh, which is not a good idea. You can either Cancel, try to Remove for All Users or try to Install for All Users (you will need administrator priviliges for latter two)." = "%@ was already installed for all users on this machine, and you are trying to install a local version. Doing so will result in two copies of %@ running on your Macintosh, which is not a good idea. You can either Cancel, try to Remove for All Users or try to Install for All Users (you will need administrator priviliges for latter two).";
+"%@ was already installed for this user, and you're about to do an install for all users on this machine. Doing so will result in two copies of %@ running on your Macintosh, which is not a good idea. If you Continue, this installer will first remove the version installed for this user, then proceed with all users installation." = "%@ was already installed for this user, and you're about to do an install for all users on this machine. Doing so will result in two copies of %@ running on your Macintosh, which is not a good idea. If you Continue, this installer will first remove the version installed for this user, then proceed with all users installation.";
+"Already Installed For All Users" = "Already Installed For All Users";
+"Already Installed For This User" = "Already Installed For This User";
+"Install For All Users" = "Install For All Users";
+"When you click \"Continue\", you will be asked to authenticate with your administrator password, if needed. This is done because certain components of this software has to be installed system-wide in order to function properly." = "When you click \"Continue\", you will be asked to authenticate with your administrator password, if needed. This is done because certain components of this software has to be installed system-wide in order to function properly.";
+
+/* Install Table Strings */
+"Application Enhancer" = "Application Enhancer";
+"Installed \"%@\"" = "Installed \"%@\"";
+"Created folder \"%@\"" = "Created folder \"%@\"";
+"Uninstalled previously installed" = "Uninstalled previously installed";
+"(files were moved to the Trash)" = "(files were moved to the Trash)";
+
+/* Uninstall Panel */
+"Are you sure you want to uninstall %@ %@ %@? Please note that this installer will automatically uninstall an older version of the product during the installation." = "Are you sure you want to uninstall %@ %@ %@? Please note that this installer will automatically uninstall an older version of the product during the installation.";
+"globally installed" = "globally installed";
+"locally installed" = "locally installed";
+
+/* Authentication Failed Panel */
+"Authentication Failed" = "Authentication Failed";
+"You have failed to enter the administrator password; this installer requires Administrator privileges to install the software you have selected. Please try again." = "You have failed to enter the administrator password; this installer requires Administrator privileges to install the software you have selected. Please try again.";
+
+/* Button Titles */
+"OK" = "OK";
+"Cancel" = "Cancel";
+"Continue" = "Continue";
+"Go Back" = "Go Back";
+"Quit" = "Quit";
+"Uninstall" = "Uninstall";
+
+/* Version n/a */
+"n/a" = "n/a";
+
+/* Install paths for Show Files window */
+"%@ or %@" = "%@ or %@";
+
+/* Options Tab */
+"Open \"%@\" %@ Upon Completion" = "Open \"%@\" %@ Upon Completion";
+
+/* Ready Tab */
+"Remove For All Users" = "Remove For All Users";
+
+/* Step N of M strings */
+"Step %d of %d" = "Step %d of %d";
+"Step %d of %d: %@" = "Step %d of %d: %@";
+
+/* Installer Information Missing Panel */
+"Installer Information Missing" = "Installer Information Missing";
+"This installer cannot find or read the required information about the installable product.\n\nThe installer is unable to continue. Please contact the author of the software or re-download the package." = "This installer cannot find or read the required information about the installable product.\n\nThe installer is unable to continue. Please contact the author of the software or re-download the package.";
+
+/* Uninstall Panel */
+"Uninstall Complete" = "Uninstall Complete";
+"Uninstall Failed" = "Uninstall Failed";
+"We were unable to uninstall %@ from your system. Please check if you have entered your administrator password correctly and that you have sufficient privileges and try again (or remove the files manually)." = "We were unable to uninstall %@ from your system. Please check if you have entered your administrator password correctly and that you have sufficient privileges and try again (or remove the files manually).";
+"You will be asked for your administrator password when you click Uninstall." = "You will be asked for your administrator password when you click Uninstall.";
+"%@ was successfully uninstalled from your system. Thank you for evaluating our product!" = "%@ was successfully uninstalled from your system. Thank you for evaluating our product!";
+
+/* Default Product Name */
+"Untitled Product" = "Untitled Product";
+
+/* Default Product Version */
+"1.0" = "1.0";
+
+/* Default Product Type */
+"Application" = "Application";
+
+/* Window title */
+"Installer" = "Installer"; /* (ProductName) Installer */
+
+/* Done Tab */
+"When you click the \"Quit\" button below, the installed product will be launched, and this Installer will quit." = "When you click the \"Quit\" button below, the installed product will be launched, and this Installer will quit.";
+"When you click the \"Quit\" button below, this Installer will quit." = "When you click the \"Quit\" button below, this Installer will quit.";
+"You are strongly advised to log out or restart your computer in order for the installed product to completely take effect. Thank you!" = "You are strongly advised to log out or restart your computer in order for the installed product to completely take effect. Thank you!";
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Resources/English.lproj/MainMenu.nib/classes.nib
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Resources/English.lproj/MainMenu.nib/classes.nib	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Resources/English.lproj/MainMenu.nib/classes.nib	(revision 124)
@@ -0,0 +1,46 @@
+{
+    IBClasses = (
+        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
+        {
+            ACTIONS = {
+                doAPEHomePage = id; 
+                doBackButton = id; 
+                doContinueButton = id; 
+                doLicenseAgree = id; 
+                doLicenseDisagree = id; 
+                doShowInstallFiles = id; 
+                doUninstallCancel = id; 
+                doUninstallConfirm = id; 
+            }; 
+            CLASS = UIController; 
+            LANGUAGE = ObjC; 
+            OUTLETS = {
+                apeCurrentVersionText = id; 
+                apeInstallVersionText = id; 
+                donLogOutText = id; 
+                donQuitText = id; 
+                filFilesTable = id; 
+                filWindow = id; 
+                genBackButton = id; 
+                genContinueButton = id; 
+                genStepText = id; 
+                insFilesTable = id; 
+                licAgreePanel = id; 
+                licTextView = id; 
+                optCreateLog = id; 
+                optGlobalInstallMatrix = id; 
+                optOpenUponCompletion = id; 
+                redExplanationText = id; 
+                remTextView = id; 
+                tabView = id; 
+                uniAuthRequiredText = id; 
+                uniExplanationText = id; 
+                uniFilesTable = id; 
+                uniPanel = id; 
+            }; 
+            SUPERCLASS = NSWindowController; 
+        }, 
+        {CLASS = URLTextView; LANGUAGE = ObjC; SUPERCLASS = NSTextView; }
+    ); 
+    IBVersion = 1; 
+}
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Resources/English.lproj/MainMenu.nib/info.nib
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Resources/English.lproj/MainMenu.nib/info.nib	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ICeCoffEE Installer.app/Contents/Resources/English.lproj/MainMenu.nib/info.nib	(revision 124)
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IBDocumentLocation</key>
+	<string>63 116 356 240 0 0 1280 1002 </string>
+	<key>IBEditorPositions</key>
+	<dict>
+		<key>29</key>
+		<string>371 197 202 44 0 0 1280 1002 </string>
+	</dict>
+	<key>IBFramework Version</key>
+	<string>291.0</string>
+	<key>IBOpenObjects</key>
+	<array>
+		<integer>29</integer>
+		<integer>21</integer>
+	</array>
+	<key>IBSystem Version</key>
+	<string>6G19</string>
+</dict>
+</plist>
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ui/Preinstall.sh
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ui/Preinstall.sh	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ui/Preinstall.sh	(revision 124)
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+rm -f ~/Library/Caches/com.apple.preferencepanes.cache
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ui/ui.plist
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ui/ui.plist	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/Installer components/ui/ui.plist	(revision 124)
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>APERequired</key>
+	<string>YES</string>
+	<key>Files</key>
+	<array>
+		<dict>
+			<key>FileName</key>
+			<string>ICeCoffEE.ape</string>
+			<key>GlobalInstallPath</key>
+			<string>/Library/Application Enhancers</string>
+			<key>InstallPath</key>
+			<string>~/Library/Application Enhancers</string>
+		</dict>
+	</array>
+	<key>HasGlobalInstall</key>
+	<string>YES</string>
+	<key>HasLaunchUponCompletion</key>
+	<string>NO</string>
+	<key>LogoutSuggested</key>
+	<string>YES</string>
+	<key>MinimalAllowedSystemVersion</key>
+	<integer>4128</integer>
+	<key>MinimalAllowedSystemVersionString</key>
+	<string>10.2.0</string>
+	<key>PreInstallKillProcesses</key>
+	<array>
+		<string>com.apple.systempreferences</string>
+	</array>
+	<key>InstallerLaunchScript</key>
+	<string>ICFindFilesToRemove</string>
+	<key>PreInstallScript</key>
+	<string>Preinstall.sh</string>
+	<key>ProductID</key>
+	<string>net.sabi.ICeCoffEE</string>
+	<key>ProductName</key>
+	<string>ICeCoffEE</string>
+	<key>ProductNumVersion</key>
+	<integer>20086784</integer>
+	<key>ProductType</key>
+	<string>Preference Pane</string>
+	<key>ProductVersion</key>
+	<string>1.3.2</string>
+</dict>
+</plist>
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/Japanese.lproj/APE Manager plugin.nib/classes.nib
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/Japanese.lproj/APE Manager plugin.nib/classes.nib	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/Japanese.lproj/APE Manager plugin.nib/classes.nib	(revision 124)
@@ -0,0 +1,31 @@
+{
+    IBClasses = (
+        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
+        {
+            ACTIONS = {
+                commandClickEnabled = id; 
+                errorDialogEnabled = id; 
+                errorSoundEnabled = id; 
+                servicesInContextualMenu = id; 
+                servicesInMenuBar = id; 
+                textBlinkCount = id; 
+                textBlinkEnabled = id; 
+            }; 
+            CLASS = ICeCoffEEController; 
+            LANGUAGE = ObjC; 
+            OUTLETS = {
+                commandClickEnabled = NSButton; 
+                errorDialogEnabled = NSButton; 
+                errorSoundEnabled = NSButton; 
+                servicesInContextualMenu = NSButton; 
+                servicesInMenuBar = NSButton; 
+                tabView = NSTabView; 
+                textBlinkCount = NSPopUpButton; 
+                textBlinkEnabled = NSButton; 
+                window = NSWindow; 
+            }; 
+            SUPERCLASS = NSObject; 
+        }
+    ); 
+    IBVersion = 1; 
+}
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/Japanese.lproj/APE Manager plugin.nib/info.nib
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/Japanese.lproj/APE Manager plugin.nib/info.nib	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/Japanese.lproj/APE Manager plugin.nib/info.nib	(revision 124)
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>IBDocumentLocation</key>
+	<string>355 114 356 240 0 0 1280 832 </string>
+	<key>IBFramework Version</key>
+	<string>291.0</string>
+	<key>IBGroupedObjects</key>
+	<dict>
+		<key>1</key>
+		<array>
+			<string>253</string>
+			<string>256</string>
+			<string>258</string>
+			<string>260</string>
+			<string>262</string>
+			<string>263</string>
+			<string>264</string>
+			<string>266</string>
+			<string>270</string>
+		</array>
+	</dict>
+	<key>IBLastGroupID</key>
+	<string>3</string>
+	<key>IBOpenObjects</key>
+	<array>
+		<integer>195</integer>
+	</array>
+	<key>IBSystem Version</key>
+	<string>6I32</string>
+	<key>IBUserGuides</key>
+	<dict>
+		<key>195</key>
+		<dict>
+			<key>guideLocations</key>
+			<array>
+				<string>Horizontal:245.000000</string>
+			</array>
+			<key>guidesLocked</key>
+			<false/>
+		</dict>
+	</dict>
+</dict>
+</plist>
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/VERSION
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/VERSION	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/VERSION	(revision 124)
@@ -0,0 +1,1 @@
+1.3.2
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/WebCoreBridge.h
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/WebCoreBridge.h	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/WebCoreBridge.h	(revision 124)
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2002 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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 APPLE COMPUTER, INC. ``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 APPLE COMPUTER, INC. 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 <Foundation/Foundation.h>
+
+#ifdef __cplusplus
+
+class KWQKHTMLPart;
+class KHTMLView;
+class RenderArena;
+
+namespace khtml {
+    class RenderPart;
+    class RenderObject;
+}
+
+typedef khtml::RenderPart KHTMLRenderPart;
+
+#else
+
+@class KWQKHTMLPart;
+@class KHTMLView;
+@class KHTMLRenderPart;
+@class RenderArena;
+
+#endif
+
+@class WebError;
+@class WebFrame;
+
+@protocol WebCoreDOMTreeCopier;
+@protocol WebCoreRenderTreeCopier;
+@protocol WebCoreResourceHandle;
+@protocol WebCoreResourceLoader;
+@protocol WebDOMDocument;
+@protocol WebDOMNode;
+
+extern NSString *WebCoreElementFrameKey;
+extern NSString *WebCoreElementImageAltStringKey;
+extern NSString *WebCoreElementImageKey;
+extern NSString *WebCoreElementImageLocationKey;
+extern NSString *WebCoreElementImageURLKey;
+extern NSString *WebCoreElementLinkURLKey;
+extern NSString *WebCoreElementLinkTargetFrameKey;
+extern NSString *WebCoreElementLinkLabelKey;
+extern NSString *WebCoreElementLinkTitleKey;
+extern NSString *WebCoreElementStringKey;
+
+// WebCoreBridge objects are used by WebCore to abstract away operations that need
+// to be implemented by library clients, for example WebKit. The objects are also
+// used in the opposite direction, for simple access to WebCore functions without dealing
+// directly with the KHTML C++ classes.
+
+// A WebCoreBridge creates and holds a reference to a KHTMLPart.
+
+// The WebCoreBridge interface contains methods for use by the non-WebCore side of the bridge.
+
+enum FrameBorderStyle {
+    NoFrameBorder = 1,
+    SunkenFrameBorder = 2,
+    PlainFrameBorder = 4
+};
+
+@interface WebCoreBridge : NSObject
+{
+    KWQKHTMLPart *_part;
+    KHTMLRenderPart *_renderPart;
+    RenderArena *_renderPartArena;
+}
+
+- (void)setRenderPart:(KHTMLRenderPart *)renderPart;
+- (KHTMLRenderPart *)renderPart;
+
+- (void)setName:(NSString *)name;
+- (NSString *)name;
+
+- (KWQKHTMLPart *)part;
+
+- (void)setParent:(WebCoreBridge *)parent;
+
+- (void)openURL:(NSString *)URL reload:(BOOL)reload headers:(NSDictionary *)headers lastModified:(NSDate *)lastModified pageCache:(NSDictionary *)pageCache;
+- (void)addData:(NSData *)data withEncoding:(NSString *)encoding;
+- (void)addData:(NSData *)data withOverrideEncoding:(NSString *)encoding;
+- (void)closeURL;
+- (void)saveDocumentState;
+- (void)restoreDocumentState;
+
+- (BOOL)canCachePage;
+- (BOOL)saveDocumentToPageCache;
+
+- (void)end;
+
+- (NSString *)URL;
+- (NSString *)referrer;
+
+- (void)installInFrame:(NSView *)view;
+- (void)removeFromFrame;
+
+- (void)scrollToAnchor:(NSString *)anchor;
+- (void)scrollToAnchorWithURL:(NSString *)URL;
+
+- (void)createKHTMLViewWithNSView:(NSView *)view marginWidth:(int)mw marginHeight:(int)mh;
+
+- (BOOL)isFrameSet;
+
+- (void)reapplyStyles;
+- (void)forceLayout;
+- (BOOL)needsLayout;
+- (void)adjustFrames:(NSRect)rect;
+- (void)drawRect:(NSRect)rect;
+
+- (void)mouseDown:(NSEvent *)event;
+- (void)mouseUp:(NSEvent *)event;
+- (void)mouseMoved:(NSEvent *)event;
+- (void)mouseDragged:(NSEvent *)event;
+
+- (NSView *)nextKeyView;
+- (NSView *)previousKeyView;
+
+- (NSView *)nextKeyViewInsideWebViews;
+- (NSView *)previousKeyViewInsideWebViews;
+
+- (NSObject *)copyDOMTree:(id <WebCoreDOMTreeCopier>)copier;
+- (NSObject *)copyRenderTree:(id <WebCoreRenderTreeCopier>)copier;
+
+- (NSDictionary *)elementAtPoint:(NSPoint)point;
+
+- (BOOL)searchFor:(NSString *)string direction:(BOOL)forward caseSensitive:(BOOL)caseFlag;
+- (void)jumpToSelection;
+
+- (void)setTextSizeMultiplier:(float)multiplier;
+
+- (CFStringEncoding)textEncoding;
+
+- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)string;
+
+- (id <WebDOMDocument>)DOMDocument;
+
+- (void)setSelectionFrom:(id <WebDOMNode>)start startOffset:(int)startOffset to:(id <WebDOMNode>)end endOffset:(int) endOffset;
+
+- (NSString *)selectedString;
+- (NSAttributedString *)selectedAttributedString;
+
+- (void)selectAll;
+- (void)deselectAll;
+
+- (id <WebDOMNode>)selectionStart;
+- (int)selectionStartOffset;
+- (id <WebDOMNode>)selectionEnd;
+- (int)selectionEndOffset;
+
+- (NSAttributedString *)attributedStringFrom:(id <WebDOMNode>)startNode startOffset:(int)startOffset to:(id <WebDOMNode>)endNode endOffset:(int)endOffset;
+
+- (int)frameBorderStyle;
+
++ (NSString *)stringWithData:(NSData *)data textEncoding:(CFStringEncoding)textEncoding;
++ (NSString *)stringWithData:(NSData *)data textEncodingName:(NSString *)textEncodingName;
+
+- (BOOL)interceptKeyEvent:(NSEvent *)event toView:(NSView *)view;
+
+@end
+
+// The WebCoreBridge protocol contains methods for use by the WebCore side of the bridge.
+
+@protocol WebCoreBridge
+
+- (NSArray *)childFrames; // WebCoreBridge objects
+- (WebCoreBridge *)mainFrame;
+- (WebCoreBridge *)findFramedNamed:(NSString *)name;
+- (WebCoreBridge *)findOrCreateFramedNamed:(NSString *)name;
+/* Creates a name for an frame unnamed in the HTML.  It should produce repeatable results for loads of the same frameset. */
+- (NSString *)generateFrameName;
+
+- (void)loadURL:(NSString *)URL reload:(BOOL)reload triggeringEvent:(NSEvent *)event isFormSubmission:(BOOL)isFormSubmission;
+- (void)postWithURL:(NSString *)URL data:(NSData *)data contentType:(NSString *)contentType triggeringEvent:(NSEvent *)event;
+
+- (WebCoreBridge *)createWindowWithURL:(NSString *)URL frameName:(NSString *)name;
+- (void)showWindow;
+
+- (NSString *)userAgentForURL:(NSString *)URL;
+
+- (void)setTitle:(NSString *)title;
+- (void)setStatusText:(NSString *)status;
+
+- (void)setIconURL:(NSString *)URL;
+- (void)setIconURL:(NSString *)URL withType:(NSString *)string;
+
+- (WebCoreBridge *)createChildFrameNamed:(NSString *)frameName withURL:(NSString *)URL
+    renderPart:(KHTMLRenderPart *)renderPart
+    allowsScrolling:(BOOL)allowsScrolling marginWidth:(int)width marginHeight:(int)height;
+
+- (BOOL)areToolbarsVisible;
+- (void)setToolbarsVisible:(BOOL)visible;
+- (BOOL)isStatusBarVisible;
+- (void)setStatusBarVisible:(BOOL)visible;
+- (BOOL)areScrollbarsVisible;
+- (void)setScrollbarsVisible:(BOOL)visible;
+- (NSWindow *)window;
+- (void)setWindowFrame:(NSRect)frame;
+
+- (id <WebCoreResourceHandle>)startLoadingResource:(id <WebCoreResourceLoader>)loader withURL:(NSString *)URL;
+- (void)objectLoadedFromCacheWithURL:(NSString *)URL response:(id)response size:(unsigned)bytes;
+- (BOOL)isReloading;
+
+- (void)reportClientRedirectToURL:(NSString *)URL delay:(NSTimeInterval)seconds fireDate:(NSDate *)date lockHistory:(BOOL)lockHistory;
+- (void)reportClientRedirectCancelled;
+
+- (void)unfocusWindow;
+
+- (NSView *)nextKeyViewOutsideWebViews;
+- (NSView *)previousKeyViewOutsideWebViews;
+
+- (BOOL)defersLoading;
+- (void)setDefersLoading:(BOOL)loading;
+- (void)saveDocumentState:(NSArray *)documentState;
+- (NSArray *)documentState;
+
+- (void)setNeedsReapplyStyles;
+- (void)setNeedsLayout;
+
+- (NSString *)requestedURL;
+
+- (NSView *)viewForPluginWithURL:(NSString *)URL attributes:(NSArray *)attributesArray baseURL:(NSString *)baseURL MIMEType:(NSString *)MIMEType;
+- (NSView *)viewForJavaAppletWithFrame:(NSRect)frame attributes:(NSDictionary *)attributes baseURL:(NSString *)baseURL;
+
+- (BOOL)saveDocumentToPageCache:(id)documentInfo;
+
+- (int)getObjectCacheSize;
+
+- (void)loadEmptyDocumentSynchronously;
+
+- (NSString *)MIMETypeForPath:(NSString *)path;
+
+- (void)handleMouseDragged:(NSEvent *)event;
+- (void)handleAutoscrollForMouseDragged:(NSEvent *)event;
+- (BOOL)mayStartDragWithMouseDown:(NSEvent *)event;
+
+@end
+
+// This interface definition allows those who hold a WebCoreBridge * to call all the methods
+// in the WebCoreBridge protocol without requiring the base implementation to supply the methods.
+// This idiom is appropriate because WebCoreBridge is an abstract class.
+
+@interface WebCoreBridge (SubclassResponsibility) <WebCoreBridge>
+@end
+
+@protocol WebCoreDOMTreeCopier <NSObject>
+- (NSObject *)nodeWithName:(NSString *)name value:(NSString *)value source:(NSString *)source children:(NSArray *)children;
+@end
+
+@protocol WebCoreRenderTreeCopier <NSObject>
+- (NSObject *)nodeWithName:(NSString *)name position:(NSPoint)p rect:(NSRect)rect view:(NSView *)view children:(NSArray *)children;
+@end
Index: releases/ICeCoffEE/1.3.2/ICeCoffEE/main.m
===================================================================
--- releases/ICeCoffEE/1.3.2/ICeCoffEE/main.m	(revision 124)
+++ releases/ICeCoffEE/1.3.2/ICeCoffEE/main.m	(revision 124)
@@ -0,0 +1,14 @@
+//
+//  main.m
+//  ICeCoffEE
+//
+//  Created by Nicholas Riley on Sun Jan 20 2002.
+//  Copyright (c) 2001 Nicholas Riley. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+
+int main(int argc, const char *argv[])
+{
+    return NSApplicationMain(argc, argv);
+}
Index: releases/ICeCoffEE/1.3.2/TranslateNib.sh
===================================================================
--- releases/ICeCoffEE/1.3.2/TranslateNib.sh	(revision 124)
+++ releases/ICeCoffEE/1.3.2/TranslateNib.sh	(revision 124)
@@ -0,0 +1,114 @@
+#!/bin/sh
+#
+# TranslateNib.sh
+#
+# This tools helps creating localized nib files,
+# using nibtool.
+#
+# Copyright Stephane Corthesy 2001-2003, stephane@sente.ch
+#
+# Mar 7 2002: v1, initial public release
+# Jul 12 2002: v2, corrected CVS problem
+# Jan 3 2003: v3, adapted for Dec 2002 Dev Tools; added Subversion support
+#
+
+usage ( ) {
+	echo "Usage: `basename $0` operation language file"
+	echo "       operation must be 'start' or 'end'"
+	echo "       language must be English, French, Spanish, ..."
+	echo "       file is the original nib file"
+	echo "       (Output directory must be writable)"
+}
+
+if [ $# -ne 3 ] ; then \
+	usage ; \
+	exit 1
+fi
+
+operation="$1"
+editor="/Applications/TextEdit.app"
+
+if [ "$operation" != "start" -a "$operation" != "end" ] ; then \
+	usage ; \
+	exit 1
+fi
+
+# Let's remove .nib/ suffix, if any
+filename=`basename "$3" .nib`
+inputDir=`dirname "$3"`
+inputFile="$inputDir/$filename.nib"
+
+# Now we check that source nib exists
+if [ ! -d "$inputFile" ] ; then \
+	echo "No such file "$inputFile ; \
+	exit 1
+fi
+
+language="$2"
+outputDir="$inputDir/../$language.lproj"
+tempStringFile="$outputDir/___$filename.strings"
+outputFile="$outputDir/$filename.nib"
+
+if [ ! -d "$outputDir" ] ; then \
+	mkdir "$outputDir"
+fi
+
+# If user already translated nib in the past, we update it:
+# We use old translation strings + layout, merged with
+# new strings+elements
+
+if [ "$operation" = "start" ] ; then {
+	if [ -d "$outputFile" ] ; then
+		rm -rf "$tempStringFile" ; \
+		nibtool --previous "$outputFile" \
+			--localizable-strings \
+			--incremental "$outputFile" "$inputFile"\
+			> "$tempStringFile" ; \
+		open "$inputFile"
+	else
+		rm -rf "$tempStringFile" ; \
+		nibtool --localizable-strings "$inputFile" \
+			> "$tempStringFile" ; \
+		open "$inputFile"
+	fi
+	open -a "$editor" "$tempStringFile"
+} else {
+    # Verify that .strings file format is correct
+	pl < "$tempStringFile" > /dev/null
+	if [ -d "$outputFile" ] ; then {
+		# Let's preserve CVS/Subversion information, as nibtool doesn't...
+		if [ -d "$outputFile/CVS" ] ; then
+			cp -pR "$outputFile/CVS" "$outputFile/../CVS.tmp"
+		fi
+		if [ -d "$outputFile/.svn" ] ; then
+			cp -pR "$outputFile/.svn" "$outputFile/../.svn.tmp"
+		fi
+		nibtool --dictionary "$tempStringFile" \
+			--Write "$outputFile" \
+			--incremental "$outputFile" \
+			"$inputFile" ; \
+		if [ -d "$outputFile/../CVS.tmp" ] ; then
+			mv "$outputFile/../CVS.tmp" "$outputFile/CVS"
+		fi
+		if [ -d "$outputFile/../.svn.tmp" ] ; then
+			mv "$outputFile/../.svn.tmp" "$outputFile/.svn"
+		fi
+	} else
+		nibtool --dictionary "$tempStringFile" \
+			--write "$outputFile" \
+			"$inputFile"
+	fi
+	rm -rf "$tempStringFile"
+	open "$outputFile"
+} fi
+
+# If file has only 2 bytes, it is empty
+#if [ -z `cut -b "3,4" < "$tempStringFile"` ] ; then \
+#	echo "Nothing to translate" 
+#	rm -rf "$tempStringFile" ; \
+#else
+#	open "$inputFile"
+#	open -a "$editor" "$tempStringFile"
+#fi
+
+exit 0
Index: releases/ICeCoffEE/1.3.2/package-ICeCoffEE.sh
===================================================================
--- releases/ICeCoffEE/1.3.2/package-ICeCoffEE.sh	(revision 124)
+++ releases/ICeCoffEE/1.3.2/package-ICeCoffEE.sh	(revision 124)
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+set -x -v
+
+PACKAGEDIR="$PWD"
+PRODUCT="ICeCoffEE"
+
+cd "$PRODUCT" && \
+find . -name \*~ -exec rm '{}' \; && \
+VERSION=`cat VERSION` && \
+DMG="$PRODUCT-$VERSION.dmg" VOL="$PRODUCT $VERSION" && \
+DSTROOT="$PACKAGEDIR/$VOL" && \
+sudo rm -fr "$DSTROOT" && \
+sudo rm -rf build/ && \
+rm -rf build/ && \
+pbxbuild install -target "ICeCoffEE Installer" "DSTROOT=$DSTROOT" && \
+sudo rm -rf build/ && \
+mv "$DSTROOT/$PRODUCT Installer.app" "$DSTROOT/$PRODUCT $VERSION Installer.app" && \
+find "$DSTROOT" -name ".svn" -exec sudo /bin/rm -rf "{}" \; ; \
+cd "$PACKAGEDIR" && \
+rm -f "$DMG" && \
+hdiutil create "$DMG" -megabytes 5 -ov -layout NONE -fs 'HFS+' -volname "$VOL" && \
+MOUNT=`hdiutil attach "$DMG"` && \
+DISK=`echo "$MOUNT" | sed -ne ' s|^/dev/\([^ ]*\).*$|\1|p'` && \
+MOUNTPOINT=`echo "$MOUNT" | sed -ne 's|^.*\(/Volumes/.*\)$|\1|p'` && \
+ditto -rsrc "$DSTROOT" "$MOUNTPOINT" && \
+chmod -R a+rX,u+w "$MOUNTPOINT" && \
+openUp "$MOUNTPOINT" && \
+hdiutil detach $DISK && \
+hdiutil resize -sectors min "$DMG" && \
+hdiutil convert "$DMG" -format UDZO -imagekey zlib-level=9 -o "z$DMG" && \
+mv "z$DMG" "$DMG" && \
+hdiutil internet-enable "$DMG" && \
+scp "$DMG" ainaz:web/nriley/software/
+:
+
