Flesh out KerberosAgent Select Identity dialog. Can now add, edit, and remove favorit...
authorJustin Anderson <jander@mit.edu>
Sun, 28 Sep 2008 22:16:09 +0000 (22:16 +0000)
committerJustin Anderson <jander@mit.edu>
Sun, 28 Sep 2008 22:16:09 +0000 (22:16 +0000)
Also, make formatters in KerberosFormatters.[hm] localizable.

Still need to add principal validation and prevent duplicates.

ticket: 6055

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20771 dc483132-0cff-0310-8789-dd5450dbe970

src/kim/agent/mac/Identities.h
src/kim/agent/mac/Identities.m
src/kim/agent/mac/KIMUtilities.h [new file with mode: 0644]
src/kim/agent/mac/KIMUtilities.m [new file with mode: 0644]
src/kim/agent/mac/KerberosFormatters.h
src/kim/agent/mac/KerberosFormatters.m
src/kim/agent/mac/SelectIdentityController.h
src/kim/agent/mac/SelectIdentityController.m
src/kim/agent/mac/resources/English.lproj/SelectIdentity.xib
src/kim/agent/mac/resources/KerberosFormatters.strings [new file with mode: 0644]

index 82819f8ee2c622671f5e3be574a0be18033bccf3..cdb3167ace5f34c0e87d80fbf3e892c56b3d9043 100644 (file)
  */
 
 #import <Cocoa/Cocoa.h>
+#import <Kerberos/kim.h>
+#import "KIMUtilities.h"
 
 @interface Identity : NSObject {
     kim_identity kimIdentity;
-    int state;
-    cc_time_t expirationTime;
-    int favorite;
-    
+    kim_options kimOptions;
+    kim_credential_state state;
+    cc_time_t expiration_time;
+    BOOL favorite;
 }
-@property(readonly) NSString *principal;
-@property(readonly) NSString *timeRemaining;
-@property           int       state;
-@property           cc_time_t expirationTime;
-@property(readonly) int       favorite;
 
-- (id) initWithIdentity: (kim_identity) identity;
-- (id) initWithFavoriteIdentity: (kim_identity) identity;
+@property          kim_identity         kimIdentity;
+@property          kim_options          kimOptions;
+@property           kim_credential_state state;
+@property           BOOL                favorite;
+@property           cc_time_t           expiration_time;
+
+// derived properties
+@property(readonly) NSString    *principalString;
+@property(readonly) NSString    *componentsString;
+@property(readonly) NSString    *realmString;
+@property(readonly) NSDate      *expirationDate;
+@property(readonly) NSString    *expirationString;
+@property(readonly) NSString    *validLifetimeString;
+@property(readonly) NSString    *renewableLifetimeString;
+@property(readonly) BOOL        hasCCache;
+@property(readwrite) BOOL       isRenewable;
+@property(readwrite) BOOL       isForwardable;
+@property(readwrite) BOOL       isAddressless;
+@property(readwrite) BOOL       isProxiable;
+@property(readwrite) NSUInteger validLifetime;
+@property(readwrite) NSUInteger renewableLifetime;
+
+- (id) initWithIdentity: (kim_identity) identity options: (kim_options) options;
+- (id) initWithFavoriteIdentity: (kim_identity) identity options: (kim_options) options;
 
 - (BOOL) isEqualToKIMIdentity: (kim_identity) identity;
+- (BOOL) isEqual: (Identity *)otherIdentity;
+
+- (kim_error) setPrincipalComponents: (NSString *) componentsString realm: (NSString *) realmString;
+
+- (void) resetOptions;
+- (void) toggleFavorite;
+- (BOOL) addToFavorites;
+- (BOOL) removeFromFavorites;
 
 @end
 
     NSArray *favoriteIdentities;
     NSArray *identities;
     NSConnection *threadConnection;
-
 }
-@property(readonly, copy) NSArray *identities;
 
+@property(readonly, retain) NSArray *identities;
+@property(readonly) NSUInteger minimumValidLifetime;
+@property(readonly) NSUInteger maximumValidLifetime;
+@property(readonly) NSUInteger minimumRenewableLifetime;
+@property(readonly) NSUInteger maximumRenewableLifetime;
+
+- (void) reload;
 - (int) update;
+- (kim_error) addIdentity: (Identity *) anIdentity;
+- (void) synchronizePreferences;
 
 @end
index 211d980ee92074a6c1edb319d29e52a8724e0478..e7cd31ae9a1a85b977e91eafddee234e8b116ac6 100644 (file)
  */
 
 #import "Identities.h"
-#import <Kerberos/kim.h>
+#import <Kerberos/Kerberos.h>
+
+#define VALID_LIFETIME_INCREMENT (5 * 60)
+#define RENEWABLE_LIFETIME_INCREMENT (15 * 60)
+
+@interface Identity ()
+
+- (NSString *)stringForLifetime:(NSUInteger)lifetime;
+
+@end
+
 
 @implementation Identity
 
 @synthesize state;
-@synthesize expirationTime;
+@synthesize expiration_time;
 @synthesize favorite;
 
+#pragma mark Initialization & Comparison
+
 // ---------------------------------------------------------------------------
 
-- (id) initWithIdentity: (kim_identity) identity
++ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key
+{
+    NSMutableSet *result = [[super keyPathsForValuesAffectingValueForKey:key] mutableCopy];
+    NSSet *otherKeys = nil;
+    
+    if ([key isEqualToString:@"principalString"]) {
+        otherKeys = [NSSet setWithObjects:@"kimIdentity", nil];
+    } 
+    else if ([key isEqualToString:@"expirationDate"]) {
+        otherKeys = [NSSet setWithObjects:@"kimOptions", @"state", @"expirationTime", nil];
+    } 
+    else if ([key isEqualToString:@"expirationString"]) {
+        otherKeys = [NSSet setWithObjects:@"kimOptions", @"state", @"expirationTime", nil];
+    }
+    else if ([key isEqualToString:@"isProxiable"]) {
+        otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+    }
+    else if ([key isEqualToString:@"isForwardable"]) {
+        otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+    }
+    else if ([key isEqualToString:@"isAddressless"]) {
+        otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+    }
+    else if ([key isEqualToString:@"isRenewable"]) {
+        otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+    }
+    else if ([key isEqualToString:@"validLifetime"]) {
+        otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+    }
+    else if ([key isEqualToString:@"renewableLifetime"]) {
+        otherKeys = [NSSet setWithObjects:@"kimOptions", nil];
+    }
+    else if ([key isEqualToString:@"validLifetimeString"]) {
+        otherKeys = [NSSet setWithObjects:@"kimOptions", @"validLifetime", nil];
+    }
+    else if ([key isEqualToString:@"renewableLifetimeString"]) {
+        otherKeys = [NSSet setWithObjects:@"kimOptions", @"renewableLifetime", nil];
+    }
+    
+    [result unionSet:otherKeys];
+    
+    return [result autorelease];
+}
+
+// ---------------------------------------------------------------------------
+
+- (id) init
+{
+    return [self initWithIdentity: NULL options: NULL];
+}
+
+// ---------------------------------------------------------------------------
+
+- (id) initWithIdentity: (kim_identity) identity options: (kim_options) options
 {
     if ((self = [super init])) {
-        kimIdentity = identity;
-        state = kim_credentials_state_not_yet_valid;
-        expirationTime = 0;
-        favorite = FALSE;
+        self.kimIdentity = identity;
+        self.kimOptions = options;
+        self.state = kim_credentials_state_not_yet_valid;
+        self.expiration_time = 0;
+        self.favorite = FALSE;
     }
     
     return self;
 
 // ---------------------------------------------------------------------------
 
-- (id) initWithFavoriteIdentity: (kim_identity) identity
+- (id) initWithFavoriteIdentity: (kim_identity) identity options: (kim_options) options
 {
-    if ((self = [self initWithIdentity: identity])) {
-        favorite = TRUE;
+    if ((self = [self initWithIdentity: identity options: options])) {
+        self.favorite = TRUE;
     }
     
     return self;
 
 // ---------------------------------------------------------------------------
 
-- (NSString *)principal
+- (BOOL) isEqual: (Identity *)otherIdentity
+{
+    return ([self isEqualToKIMIdentity:otherIdentity.kimIdentity]);
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger)hash
+{
+    return [self.principalString hash];
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSComparisonResult) compare: (Identity *)otherIdentity
+{
+    return ([self.principalString compare:otherIdentity.principalString]);
+}
+
+#pragma mark Actions
+
+// ---------------------------------------------------------------------------
+
+- (void) resetOptions
+{
+    // property setter converts NULL into actual kim_options with default settings
+    self.kimOptions = NULL;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) toggleFavorite
+{
+    if (self.favorite) {
+       [self removeFromFavorites];
+    } else {
+       [self addToFavorites];
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) addToFavorites
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_preferences preferences = NULL;
+    kim_options options = NULL;
+    kim_string error_string = NULL;
+    err = kim_preferences_create(&preferences);
+    
+    if (!err) {
+       err = kim_options_create(&options);
+    }
+    
+    if (!err) {
+       err = kim_preferences_add_favorite_identity(preferences, self.kimIdentity, options);
+    }
+    if (!err) {
+       err = kim_preferences_synchronize(preferences);
+    }
+    if (options) {
+       kim_options_free(&options);
+    }
+    kim_preferences_free(&preferences);
+    if (!err) {
+       self.favorite = true;
+    } else {
+       kim_string_create_for_last_error(&error_string, err);
+       NSLog(@"%s failed with %s", _cmd, error_string);
+    }
+    return (err != KIM_NO_ERROR);
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) removeFromFavorites
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_preferences preferences = NULL;
+    kim_options options = NULL;
+    kim_string error_string = NULL;
+    err = kim_preferences_create(&preferences);
+    
+    if (!err) {
+       err = kim_options_create(&options);
+    }
+    
+    if (!err) {
+       err = kim_preferences_remove_favorite_identity(preferences, self.kimIdentity);
+    }
+    if (!err) {
+       err = kim_preferences_synchronize(preferences);
+    }
+    if (options) {
+       kim_options_free(&options);
+    }
+    kim_preferences_free(&preferences);
+    if (!err) {
+       self.favorite = false;
+    } else {
+       kim_string_create_for_last_error(&error_string, err);
+       NSLog(@"%s failed with %s", _cmd, error_string);
+    }
+    return (err != KIM_NO_ERROR);
+}
+
+#pragma mark Accessors
+
+// ---------------------------------------------------------------------------
+
+- (NSDate *) expirationDate
+{
+    return [NSDate dateWithTimeIntervalSince1970:expiration_time];
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) hasCCache
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_ccache ccache = NULL;
+    
+    err = kim_ccache_create_from_client_identity(&ccache, self.kimIdentity);
+    
+    if (!err && ccache) {
+        return TRUE;
+    }
+    
+    return FALSE;
+}
+
+
+// ---------------------------------------------------------------------------
+
+- (kim_identity) kimIdentity
+{
+    return kimIdentity;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setKimIdentity:(kim_identity)newKimIdentity
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_string string = NULL;
+
+    if (!kimIdentity || kimIdentity != newKimIdentity) {
+        [self willChangeValueForKey:@"kimOptions"];
+
+        kim_identity_free(&kimIdentity);
+        kimIdentity = NULL;
+        if (newKimIdentity != NULL) {
+            kim_identity_get_display_string(newKimIdentity, &string);
+            err = kim_identity_copy(&kimIdentity, newKimIdentity);
+        }
+        
+        [self didChangeValueForKey:@"kimOptions"];
+    }
+    
+    if (err) {
+        NSLog(@"%s got error %s", _cmd, error_message(err));
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+- (kim_options) kimOptions
+{
+    return kimOptions;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setKimOptions:(kim_options)newKimOptions
+{
+    // Passing NULL resets to default options
+    kim_error err = KIM_NO_ERROR;
+    
+    if (!kimOptions || kimOptions != newKimOptions) {
+        [self willChangeValueForKey:@"kimOptions"];
+        
+        kim_options_free(&kimOptions);
+        kimOptions = NULL;
+
+        if (newKimOptions == NULL) {
+            err = kim_options_create(&kimOptions);
+        } else {
+            err = kim_options_copy(&kimOptions, newKimOptions);
+        }
+
+        [self didChangeValueForKey:@"kimOptions"];
+    }
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) isRenewable
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_boolean result = FALSE;
+    kim_options options = self.kimOptions;
+    
+    err = kim_options_get_renewable(options, &result);
+    
+    return (result != 0);
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setIsRenewable: (BOOL) value
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_options options = self.kimOptions;
+    
+    err = kim_options_set_renewable(options, value);
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) isForwardable
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_boolean result = FALSE;
+    kim_options options = self.kimOptions;
+    
+    err = kim_options_get_forwardable(options, &result);
+    
+    return (result != 0);
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setIsForwardable: (BOOL) value
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_options options = self.kimOptions;
+    
+    err = kim_options_set_forwardable(options, value);
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) isAddressless
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_boolean result = FALSE;
+    kim_options options = self.kimOptions;
+    
+    err = kim_options_get_addressless(options, &result);
+    
+    return (result != 0);
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setIsAddressless: (BOOL) value
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_options options = self.kimOptions;
+    
+    err = kim_options_set_addressless(options, value);
+}
+
+// ---------------------------------------------------------------------------
+
+- (BOOL) isProxiable
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_boolean result = FALSE;
+    kim_options options = self.kimOptions;
+    
+    err = kim_options_get_proxiable(options, &result);
+    
+    return (result != 0);
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setIsProxiable: (BOOL) value
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_options options = self.kimOptions;
+    
+    err = kim_options_set_proxiable(options, value);
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger) validLifetime
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_lifetime value = 0;
+    kim_options options = self.kimOptions;
+
+    err = kim_options_get_lifetime(options, &value);
+    
+    return (NSUInteger) value;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setValidLifetime: (NSUInteger) newLifetime
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_options options = self.kimOptions;
+    
+    // round to nearest five minutes
+    newLifetime = (newLifetime / VALID_LIFETIME_INCREMENT) * VALID_LIFETIME_INCREMENT;
+    
+    err = kim_options_set_lifetime(options, (kim_lifetime) newLifetime);
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger) renewableLifetime
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_lifetime value = 0;
+    kim_options options = self.kimOptions;
+    
+    err = kim_options_get_renewal_lifetime(options, &value);
+
+    return (NSUInteger) value;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) setRenewableLifetime: (NSUInteger) newLifetime
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_options options = self.kimOptions;
+
+    // round to nearest five minutes
+    newLifetime = (newLifetime / RENEWABLE_LIFETIME_INCREMENT) * RENEWABLE_LIFETIME_INCREMENT;
+    
+    err = kim_options_set_renewal_lifetime(options, (kim_lifetime) newLifetime);
+}
+
+#pragma mark String representations
+
+// ---------------------------------------------------------------------------
+
+- (NSString *) principalString
 {
     kim_error err = KIM_NO_ERROR;
     kim_string display_string = NULL;
     NSString *result = nil;
     
-    err = kim_identity_get_display_string(kimIdentity, &display_string);
+    if (self.kimIdentity) {
+        err = kim_identity_get_display_string(self.kimIdentity, &display_string);
+    }
     
-    if (!err) {
-        result = [NSString stringWithCString:display_string encoding:NSUTF8StringEncoding];
+    if (!err && display_string) {
+        result = [NSString stringWithUTF8String:display_string];
     }
     else {
         result = @"-";
     }
+    
+    if (err) {
+        NSLog(@"%s got error %s", _cmd, error_message(err));
+    }
+    
+    kim_string_free(&display_string);
+    
     return result;
 }
 
 // ---------------------------------------------------------------------------
 
-- (NSDate *)expirationDate
+- (NSString *) componentsString
 {
-    return [NSDate dateWithTimeIntervalSince1970:expirationTime];
+    kim_error err = KIM_NO_ERROR;
+    kim_string display_string = NULL;
+    NSString *result = @"";
+    
+    err = kim_identity_get_display_string(kimIdentity, &display_string);
+    // err = kim_identity_get_components(kimIdentity, &display_string);
+    
+    if (!err) {
+        NSRange atRange;
+        
+        result = [NSString stringWithUTF8String:display_string];
+        atRange = [result rangeOfString:@"@" options:NSBackwardsSearch];
+        result = [result substringToIndex:atRange.location];
+    }
+    
+    kim_string_free(&display_string);
+    
+    return result;
 }
 
 // ---------------------------------------------------------------------------
 
-- (NSString *)timeRemaining
+- (NSString *) realmString
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_string display_string = NULL;
+    NSString *result = @"";
+    
+    err = kim_identity_get_realm(kimIdentity, &display_string);
+    
+    if (!err) {
+        result = [NSString stringWithUTF8String:display_string];
+    }
+    
+    kim_string_free(&display_string);
+    
+    return result;
+}
+
+// ---------------------------------------------------------------------------
+
+- (kim_error) setPrincipalComponents: (NSString *) componentsString realm: (NSString *) realmString
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_identity new_identity = NULL;
+    char *principal_string = NULL;
+    
+    asprintf(&principal_string, "%s@%s", 
+             [componentsString UTF8String], [realmString UTF8String]);
+    
+    if (principal_string) {
+        err = kim_identity_create_from_string(&new_identity, principal_string);
+    }
+        
+    self.kimIdentity = new_identity;
+    
+    kim_identity_free(&new_identity);
+    if (principal_string) {
+        free(principal_string);
+    }
+    
+    return err;
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSString *) expirationString
 {
     NSString *result = nil;
     
-    if (expirationTime > 0) {
+    if (expiration_time > 0) {
        time_t now = time(NULL);
-       time_t lifetime = expirationTime - now;
+       time_t lifetime = expiration_time - now;
        time_t seconds  = (lifetime % 60);
        time_t minutes  = (lifetime / 60 % 60);
        time_t hours    = (lifetime / 3600 % 24);
        
        result = [NSString stringWithFormat:@"%02ld:%02ld", hours, minutes];
     } else {
-       result = @"Expired";
+       result = @"--:--";
     }
     
-    
-    NSLog(@"timeRemaining = %@ (expirationTime == %ld)", result, expirationTime);
     return result;
 }
 
-- (NSString *)description
+// ---------------------------------------------------------------------------
+
+- (NSString *) validLifetimeString
+{
+    return [self stringForLifetime:self.validLifetime];
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSString *) renewableLifetimeString
 {
-    NSString *result = nil;
-    kim_error err = KIM_NO_ERROR;
-    kim_string display_name = NULL;
+    return [self stringForLifetime:self.renewableLifetime];
+}
+
+// ---------------------------------------------------------------------------
 
-    err = kim_identity_get_display_string(kimIdentity, &display_name);
+- (NSString *)stringForLifetime:(NSUInteger)lifetime
+{
+    NSMutableArray *parts = nil;
+    NSUInteger days, hours, minutes, seconds;
     
-    if (!err) {
-        result = [NSString stringWithCString:display_name encoding:NSUTF8StringEncoding];
+    days     = (lifetime / 86400);
+    hours    = (lifetime / (60 * 60) % 24);
+    minutes  = (lifetime / 60 % 60);
+    seconds  = (lifetime % 60);
+    
+    if (seconds >  0) { seconds = 0; minutes++; }
+    if (minutes > 59) { minutes = 0; hours++; }
+    if (hours   > 23) { hours   = 0; days++; }
+    
+    parts = [NSMutableArray arrayWithCapacity:3];
+    if (days > 0) {
+        [parts addObject:[NSString stringWithFormat:@"%d days", days]];
     }
-    return result;
+    if (hours > 0) {
+        [parts addObject:[NSString stringWithFormat:@"%d hours", hours]];
+    }
+    if (minutes > 0) {
+        [parts addObject:[NSString stringWithFormat:@"%d minutes", minutes]];
+    }
+    if ([parts count] == 0) {
+        [parts addObject:@"0 lifetime"];
+    }
+    return [parts componentsJoinedByString:@", "];
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSString *) description
+{
+    return [NSString stringWithFormat:@"%@ (%@) %@", self.principalString, self.expirationString, super.description];
 }
 
 @end
 
 @interface Identities ()
 
-@property(readwrite, copy) NSArray *identities;
+@property(readwrite, retain) NSArray *favoriteIdentities;
+@property(readwrite, retain) NSArray *identities;
 
 @end
 
 @implementation Identities
 
+@synthesize favoriteIdentities;
 @synthesize identities;
 
 // ---------------------------------------------------------------------------
 {
     if ((self = [super init])) {
         int err = 0;
-        NSMutableArray *newFavoriteIdentities = NULL;
-        
+
         threadConnection = NULL;
-        identities = NULL;
-        favoriteIdentities = NULL;
-    
-        if (!err) {
-            newFavoriteIdentities = [[[NSMutableArray alloc] init] autorelease];
-            if (!newFavoriteIdentities) { err = ENOMEM; }
-        }
-        
-        if (!err) {
-            kim_preferences kimPreferences = NULL;
-            kim_options kimOptions = NULL;
-            kim_count i;
-            kim_count count = 0;
-            
-            err = kim_preferences_create(&kimPreferences);
-            
-            if (!err) {
-                err = kim_preferences_get_number_of_favorite_identities(kimPreferences,
-                                                                        &count);
-            }
-            
-            for (i = 0; !err && i < count; i++) {
-                kim_identity kimIdentity = NULL;
-                Identity *identity = NULL;
-                
-                err = kim_preferences_get_favorite_identity_at_index(kimPreferences,
-                                                                     i,
-                                                                     &kimIdentity,
-                                                                     &kimOptions);
-                
-                if (!err) {
-                    identity = [[[Identity alloc] initWithFavoriteIdentity: kimIdentity] autorelease];
-                    if (!identity) { err = ENOMEM; }
-                }
-                
-                if (!err) {
-                    kimIdentity = NULL; /* take ownership */ 
-                    [newFavoriteIdentities addObject: identity];
-                }
-                
-                kim_identity_free (&kimIdentity);
-            }
         
-            kim_preferences_free(&kimPreferences);
-        }
-        
-        if (!err) {
-            favoriteIdentities = [[NSArray alloc] initWithArray: newFavoriteIdentities];
-            if (!favoriteIdentities) { err = ENOMEM; }            
-        }
-
-        if (!err) {
-            err = [self update];
-        }
+        [self reload];
         
         if (!err) {
             NSPort *port1 = [NSPort port];
 
 // ---------------------------------------------------------------------------
 
+- (void) reload
+{
+    kim_error err = KIM_NO_ERROR;
+
+    NSMutableArray *newFavoriteIdentities = NULL;
+    
+    favoriteIdentities = NULL;
+    
+    if (!err) {
+        newFavoriteIdentities = [[NSMutableArray alloc] init];
+        if (!newFavoriteIdentities) { err = ENOMEM; }
+    }
+    
+    if (!err) {
+        kim_preferences preferences = NULL;
+        kim_options kimOptions = NULL;
+        kim_count i;
+        kim_count count = 0;
+        
+        err = kim_preferences_create(&preferences);
+        
+        if (!err) {
+            err = kim_preferences_get_number_of_favorite_identities(preferences,
+                                                                    &count);
+        }
+        
+        for (i = 0; !err && i < count; i++) {
+            kim_identity kimIdentity = NULL;
+            Identity *identity = NULL;
+            
+            err = kim_preferences_get_favorite_identity_at_index(preferences,
+                                                                 i,
+                                                                 &kimIdentity,
+                                                                 &kimOptions);
+            
+            if (!err) {
+                identity = [[Identity alloc] initWithFavoriteIdentity: kimIdentity options: kimOptions];
+                if (!identity) { err = ENOMEM; }
+            }
+            
+            if (!err) {
+                kimIdentity = NULL; /* take ownership */ 
+                [newFavoriteIdentities addObject: identity];
+            }
+            
+            if (identity) {
+                [identity release];
+                identity = nil;
+            }
+            
+            kim_identity_free (&kimIdentity);
+        }
+        
+        kim_preferences_free(&preferences);
+    }
+    
+    if (!err) {
+        self.favoriteIdentities = newFavoriteIdentities;
+        if (!favoriteIdentities) { err = ENOMEM; }
+    }
+    
+    if (newFavoriteIdentities) {
+        [newFavoriteIdentities release];
+        newFavoriteIdentities = nil;
+    }
+    
+    if (!err) {
+        [identities release];
+        identities = nil;
+        err = [self update];
+    }
+}
+
+// ---------------------------------------------------------------------------
+
 - (int) update
 {
     kim_error err = KIM_NO_ERROR;
-    NSMutableArray *newIdentities = NULL;
+    NSMutableSet *newIdentities = NULL;
     kim_ccache_iterator iterator = NULL;
     
     if (!err) {
-        newIdentities = [NSMutableArray arrayWithArray: favoriteIdentities];
+        newIdentities = [NSMutableSet set];
         if (!newIdentities) { err = ENOMEM; }            
     }
 
         err = kim_ccache_iterator_create (&iterator);
     }
     
+    // Build list of identities with existing ccaches
+    
     while (!err) {
         kim_ccache ccache = NULL;
         kim_identity kimIdentity = NULL;
+        kim_options kimOptions = NULL;
         kim_credential_state state = kim_credentials_state_valid;
         kim_time expirationTime = 0;
+        kim_lifetime lifetime = 0;
         
         err = kim_ccache_iterator_next (iterator, &ccache);
         if (!err && !ccache) { break; }
             err = kim_ccache_get_expiration_time (ccache, &expirationTime);
         }
         
+        if (!err) { 
+            err = kim_ccache_get_options(ccache, &kimOptions);
+        }
+        
         if (!err) {
-            Identity *identity = NULL;
-            
-            for (Identity *i in newIdentities) {
-                if ([i isEqualToKIMIdentity: kimIdentity]) { identity = i; }
-            }
-
-            if (!identity) {
-                identity = [[[Identity alloc] initWithIdentity: kimIdentity] autorelease];
-                if (!identity) { err = ENOMEM; }
-                
-                if (!err) {
-                    kimIdentity = NULL; /* take ownership */ 
-                    [newIdentities addObject: identity];
-                }
-            }
+            err = kim_options_get_lifetime(kimOptions, &lifetime);
+        }
+        
+        if (!err) {
+            Identity *identity = [[Identity alloc] initWithIdentity: kimIdentity options: kimOptions];
+            if (!identity) { err = ENOMEM; }
             
             if (!err) {
+                kimIdentity = NULL; /* take ownership */ 
+                identity.kimOptions = kimOptions;
                 identity.state = state;
-                identity.expirationTime = expirationTime;
+                identity.expiration_time = expirationTime;
+                [newIdentities addObject: identity];
+            }
+            
+            if (identity) {
+                [identity release];
+                identity = nil;
             }
         }
         
             err = KIM_NO_ERROR;
         }
         
+        if (err) {
+            NSLog(@"%s got error %s", _cmd, error_message(err));
+        }
+        
+        kim_options_free (&kimOptions);
         kim_identity_free (&kimIdentity);
         kim_ccache_free (&ccache);
     }
-
+    
+    kim_ccache_iterator_free (&iterator);
+    
+    // Copy ccache state to favorites
+    for (Identity *identity in self.favoriteIdentities) {
+        Identity *matchingIdentity = [newIdentities member:identity];
+        if (matchingIdentity) {
+            identity.state = matchingIdentity.state;
+            identity.expiration_time = matchingIdentity.expiration_time;
+            [newIdentities removeObject:matchingIdentity];
+        } else {
+            identity.state = kim_credentials_state_expired;
+            identity.expiration_time = 0;
+        }
+    }
+        
+    // Add unused favorites
+    [newIdentities unionSet:[NSSet setWithArray:self.favoriteIdentities]];
+    
     if (!err) {
         /* Use @property setter to trigger KVO notifications */
-        self.identities = newIdentities;
+        self.identities = [[newIdentities allObjects] sortedArrayUsingSelector:@selector(compare:)];
         if (!identities) { err = ENOMEM; }            
+    } else {
+        NSLog (@"Got error %s", error_message (err));
     }
     
+    return err;
+}
+
+// ---------------------------------------------------------------------------
+
+- (kim_error) addIdentity: (Identity *) anIdentity
+{
+    kim_error err = KIM_NO_ERROR;
+    NSMutableArray *newIdentities = nil;
+    
+    if (![self.identities containsObject:anIdentity]) {
+        newIdentities = [self.identities mutableCopy];
+        [newIdentities addObject:anIdentity];
+        self.identities = newIdentities;
+        [newIdentities release];        
+    } else {
+        err = KIM_IDENTITY_ALREADY_IN_LIST_ERR;
+    }
     
-    kim_ccache_iterator_free (&iterator);
+    return err;
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) synchronizePreferences
+{
+    // Saves the kim_options for all identities in the list to disk, then rebuilds the Identities array from scratch
     
+    kim_error err = KIM_NO_ERROR;
+    kim_preferences prefs = NULL;
+    
+    err = kim_preferences_create(&prefs);
+    
+    if (!err) {
+        err = kim_preferences_remove_all_favorite_identities(prefs);
+    }
+    
+    for (Identity *identity in self.identities) {
+        if (!err && identity.favorite == TRUE) {
+            err = kim_preferences_add_favorite_identity(prefs, identity.kimIdentity, identity.kimOptions);
+        }
+    }
+    
+    if (!err) {
+        err = kim_preferences_synchronize(prefs);
+    }
+    
+    kim_preferences_free(&prefs);
+
     if (err) {
-        NSLog (@"Got error %s", error_message (err));
+        NSLog(@"%s received error %s", _cmd, error_message(err));
+    }
+
+    if (!err) {
+        [self reload];
     }
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger)minimumValidLifetime
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_preferences prefs = NULL;
+    kim_lifetime value = 0;
     
-    return err;
+    err = kim_preferences_create(&prefs);
+    
+    if (!err) {
+        kim_preferences_get_minimum_lifetime(prefs, &value);
+    }
+    
+    return (NSUInteger) value;
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger)maximumValidLifetime
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_preferences prefs = NULL;
+    kim_lifetime value = 0;
+
+    err = kim_preferences_create(&prefs);
+    
+    if (!err) {
+        kim_preferences_get_maximum_lifetime(prefs, &value);
+    }
+
+    return (NSUInteger) value;
+}
+
+// ---------------------------------------------------------------------------
+
+- (NSUInteger)minimumRenewableLifetime
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_preferences prefs = NULL;
+    kim_lifetime value = 0;
+    
+    err = kim_preferences_create(&prefs);
+    
+    if (!err) {
+        kim_preferences_get_minimum_renewal_lifetime(prefs, &value);
+    }
+    
+    return (NSUInteger) value;
 }
 
+// ---------------------------------------------------------------------------
+
+- (NSUInteger)maximumRenewableLifetime
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_preferences prefs = NULL;
+    kim_lifetime value = 0;
+    
+    err = kim_preferences_create(&prefs);
+    
+    if (!err) {
+        kim_preferences_get_maximum_renewal_lifetime(prefs, &value);
+    }
+    
+    return (NSUInteger) value;
+}
 
 @end
diff --git a/src/kim/agent/mac/KIMUtilities.h b/src/kim/agent/mac/KIMUtilities.h
new file mode 100644 (file)
index 0000000..790d238
--- /dev/null
@@ -0,0 +1,16 @@
+//
+//  KIMUtilities.h
+//  Kerberos5
+//
+//  Created by Justin Anderson on 9/28/08.
+//  Copyright 2008 MIT. All rights reserved.
+//
+
+#import <Cocoa/Cocoa.h>
+#import <Kerberos/kim.h>
+
+@interface NSString (KIMUtilities)
+
++ (NSString *) stringForLastKIMError: (kim_error) in_err;
+
+@end
diff --git a/src/kim/agent/mac/KIMUtilities.m b/src/kim/agent/mac/KIMUtilities.m
new file mode 100644 (file)
index 0000000..f8c7b85
--- /dev/null
@@ -0,0 +1,29 @@
+//
+//  KIMUtilities.m
+//  Kerberos5
+//
+//  Created by Justin Anderson on 9/28/08.
+//  Copyright 2008 MIT. All rights reserved.
+//
+
+#import "KIMUtilities.h"
+
+
+@implementation NSString (KIMUtilities)
+
++ (NSString *) stringForLastKIMError: (kim_error) in_err
+{
+    kim_error err = KIM_NO_ERROR;
+    kim_string string = NULL;
+    NSString *result = nil;
+    
+    err = kim_string_create_for_last_error(&string, in_err);
+    if (!err) {
+        result = [NSString stringWithUTF8String:string];
+    }
+    kim_string_free(&string);
+    
+    return result;
+}
+
+@end
index 2d5336fceba0a925a294f2ffd0db15951e34b86b..104ea5f42c58badecc8dbd73276c2d679a9426f1 100644 (file)
 
 
 @interface KerberosTimeFormatter : NSFormatter {
-
+    BOOL displaySeconds;
+    BOOL displayShortFormat;
 }
 
+@property BOOL displaySeconds;
+@property BOOL displayShortFormat;
+
 - (NSString *)stringForObjectValue:(id)anObject;
 
-- (BOOL)getObjectValue:(id *)anObject 
-            forString:(NSString *)string 
-      errorDescription:(NSString **)error;
+- (NSAttributedString *)attributedStringForObjectValue:(id)anObject 
+                                withDefaultAttributes:(NSDictionary *)attributes;
+
+- (NSString *) stringForLifetime: (time_t) lifetime;
+
+@end
+
+@interface KerberosFavoriteFormatter : NSFormatter {
+    
+}
+
+- (NSString *)stringForObjectValue:(id)anObject;
 
 - (NSAttributedString *)attributedStringForObjectValue:(id)anObject 
                                 withDefaultAttributes:(NSDictionary *)attributes;
index e1675bb7043c474d18af1fc57f54c126dc53dfec..b8a5b3aa4f631ae29a58fd2755d428c8e7bf42c2 100644 (file)
 
 #import "KerberosFormatters.h"
 
-#define EXPIRED_STRING @"Expired"
-
 @implementation KerberosTimeFormatter
 
+@synthesize displaySeconds;
+@synthesize displayShortFormat;
+
+- (id) init
+{
+    self = [super init];
+    if (self != nil) {
+        // default to --:-- style
+        self.displaySeconds = NO;
+        self.displayShortFormat = YES;
+    }
+    return self;
+}
+
 /*
  * For display of Kerberos expiration times.
  * Converts an NSDate into an NSString like "09:53" for 9 hours and 53 minutes
 - (NSString *)stringForObjectValue:(id)anObject
 {
     NSString *result = nil;
-    if (anObject == nil || ![anObject respondsToSelector:@selector(timeIntervalSince1970)]) {
-       result = [NSString stringWithFormat:@"%s given invalid object %@", 
-                  _cmd, NSStringFromClass([anObject class])];
+    
+    if (anObject == nil || ![anObject respondsToSelector:@selector(timeIntervalSinceNow)]) {
+       result = @"";
     }
     else {
-       time_t lifetime = [(NSDate *)anObject timeIntervalSince1970] - time(NULL);
-       
-       if (lifetime > 0) {
-           time_t seconds  = (lifetime % 60);
-           time_t minutes  = (lifetime / 60 % 60);
-           time_t hours    = (lifetime / 3600 % 24);
-           time_t days     = (lifetime / 86400);
-           
-           if (seconds >  0) { seconds = 0; minutes++; }
-           if (minutes > 59) { minutes = 0; hours++; }
-           if (hours   > 23) { hours   = 0; days++; }
-           
-           result = [NSString stringWithFormat:@"%02ld:%02ld", hours, minutes];
-       } else {
-           result = EXPIRED_STRING;
-       }
+        result = [self stringForLifetime:(time_t)[(NSDate *)anObject timeIntervalSinceNow]];
     }
     
     return result;
 }
 
-/*
- * Converts NSStrings like @"09:53" into NSDate representation of that point 
- * in the future. If string is @"Expired", NSDate is set to 1970.
- */
+- (NSAttributedString *)attributedStringForObjectValue:(id)anObject 
+                                withDefaultAttributes:(NSDictionary *)attributes
+{
+    return [[[NSAttributedString alloc] initWithString:[self stringForObjectValue:anObject] 
+                                            attributes:attributes] autorelease];
+}
 
-- (BOOL)getObjectValue:(id *)anObject 
-            forString:(NSString *)string 
-      errorDescription:(NSString **)error
+- (NSString *) stringForLifetime: (time_t) lifetime
 {
-    NSArray *tokens = [string componentsSeparatedByString:@":"];
-    *anObject = nil;
+    NSMutableString *string = [NSMutableString string];
+    NSString *separatorKey = (self.displayShortFormat) ? @"LifetimeStringSeparatorShortFormat" : 
+    @"LifetimeStringSeparatorLongFormat";
+    NSString *separator = NSLocalizedStringFromTable (separatorKey, @"KerberosFormatters", NULL);
+    NSString *key = NULL;
+    
+    // Break the lifetime up into time units
+    time_t days     = (lifetime / 86400);
+    time_t hours    = (lifetime / 3600 % 24);
+    time_t minutes  = (lifetime / 60 % 60);
+    time_t seconds  = (lifetime % 60);
     
-    if ([tokens count] == 2) {
-       NSInteger hours = [[tokens objectAtIndex:0] longValue];
-       NSInteger minutes = [[tokens objectAtIndex:1] longValue];
-       *anObject = [NSDate dateWithTimeIntervalSince1970:(hours * 60 * 60) + (minutes * 60)];
-    } else if ([string isEqualToString:EXPIRED_STRING]) {
-       *anObject = [NSDate dateWithTimeIntervalSince1970:0];
+    if (lifetime > 0) {
+        // If we aren't going to display seconds, round up
+        if (!self.displaySeconds) {
+            if (seconds >  0) { seconds = 0; minutes++; }
+            if (minutes > 59) { minutes = 0; hours++; }
+            if (hours   > 23) { hours   = 0; days++; }
+        }
+        
+        if (days > 0 && !self.displayShortFormat) {
+            if (self.displayShortFormat) { 
+                key = (days > 1) ? @"LifetimeStringDaysShortFormat" : @"LifetimeStringDayShortFormat"; 
+            } else { 
+                key = (days > 1) ? @"LifetimeStringDaysLongFormat" : @"LifetimeStringDayLongFormat";
+            }
+            [string appendFormat: NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL), days];
+        }
+        
+        if ((hours > 0) || self.displayShortFormat) {
+            if (self.displayShortFormat) { 
+                key = (hours > 1) ? @"LifetimeStringHoursShortFormat" : @"LifetimeStringHourShortFormat"; 
+                hours += days * 24;
+                days = 0;
+            } else { 
+                key = (hours > 1) ? @"LifetimeStringHoursLongFormat" : @"LifetimeStringHourLongFormat";
+            }
+            if ([string length] > 0) { [string appendString: separator]; }
+            [string appendFormat: NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL), hours];
+        }
+        
+        if ((minutes > 0) || self.displayShortFormat) {
+            if (self.displayShortFormat) { 
+                key = (minutes > 1) ? @"LifetimeStringMinutesShortFormat" : @"LifetimeStringMinuteShortFormat"; 
+            } else { 
+                key = (minutes > 1) ? @"LifetimeStringMinutesLongFormat" : @"LifetimeStringMinuteLongFormat";
+            }
+            if ([string length] > 0) { [string appendString: separator]; }
+            [string appendFormat: NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL), minutes];
+        }
+        
+        if (self.displaySeconds && ((seconds > 0) || self.displayShortFormat)) {
+            if (self.displayShortFormat) { 
+                key = (seconds > 1) ? @"LifetimeStringSecondsShortFormat" : @"LifetimeStringSecondShortFormat"; 
+            } else { 
+                key = (seconds > 1) ? @"LifetimeStringSecondsLongFormat" : @"LifetimeStringSecondLongFormat";
+            }
+            if ([string length] > 0) { [string appendString: separator]; }
+            [string appendFormat: NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL), seconds];
+        }
+    } else {
+        key = @"LifetimeStringExpired";
+        [string appendString: NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL)];
     }
     
-    if (*anObject == nil) {
-       return false;
+    // Return an NSString (non-mutable) from our mutable temporary
+    return [NSString stringWithString: string];
+}
+
+@end
+
+@implementation KerberosFavoriteFormatter
+
+/*
+ * For displaying favorite status of KIM identities.
+ * Converts an NSNumber containing a boolean value into an NSString.
+ * If true, returns a heart character, /u2665.
+ * If false, returns empty string @"".
+ */
+- (NSString *)stringForObjectValue:(id)anObject
+{
+    NSString *key = nil;
+    if (anObject == nil || 
+        ![anObject respondsToSelector:@selector(boolValue)] ||
+        ([(NSNumber *)anObject boolValue] == FALSE)) {
+        key = @"FavoriteStringNotFavorite";
     }
-    return true;
+    else {
+        key = @"FavoriteStringIsFavorite";
+    }
+    
+    return NSLocalizedStringFromTable (key, @"KerberosFormatters", NULL);
 }
 
 - (NSAttributedString *)attributedStringForObjectValue:(id)anObject 
                                 withDefaultAttributes:(NSDictionary *)attributes
 {
-    NSAttributedString *resultString = nil;
-    NSString *plainString = [self stringForObjectValue:anObject];
-    NSMutableDictionary *newAttributes = [attributes mutableCopy];
-    
-    if ([plainString isEqualToString:EXPIRED_STRING]) {
-       [newAttributes setObject:[NSColor redColor] 
-                         forKey:NSForegroundColorAttributeName];
-       [newAttributes setObject: [NSNumber numberWithFloat: 0.3]
-                         forKey: NSObliquenessAttributeName];
-    }
-    
-    resultString = [[NSAttributedString alloc] initWithString:plainString attributes:newAttributes];
-    [newAttributes release];
-    
-    return [resultString autorelease];
+    return [[[NSAttributedString alloc] initWithString:[self stringForObjectValue:anObject] 
+                                            attributes:attributes] autorelease];
 }
+
 @end
index 741f897f6b5c3ea5dd78a12c459717351c5a6264..01bcd92287d2a2832ea8330050d6fc1d30bfb94e 100644 (file)
 
 @interface SelectIdentityController : NSWindowController {
 
+    IBOutlet NSObjectController *identitiesController;
     IBOutlet NSArrayController *identityArrayController;
-    
+
     IBOutlet BadgedImageView *kerberosIconImageView;
     IBOutlet NSTextField *headerTextField;
     IBOutlet NSTextField *explanationTextField;
     
     IBOutlet NSTableView *identityTableView;
     IBOutlet NSTableColumn *identityTableColumn;
-    IBOutlet NSTableColumn *timeRemainingTableColumn;
     IBOutlet NSButton *addIdentityButton;
-    IBOutlet NSButton *removeIdentityButton;
+    IBOutlet NSPopUpButton *actionPopupButton;
     IBOutlet NSButton *selectIdentityButton;
     IBOutlet NSButton *cancelButton;
-    
+
     Identities *identities;
     NSTimer *refreshTimer;
+    
+    IBOutlet NSWindow *identityOptionsWindow;
+    IBOutlet NSObjectController *identityOptionsController;
+    IBOutlet NSTextField *nameField;
+    IBOutlet NSTextField *realmField;
 }
 
-- (IBAction) add: (id) sender;
-- (IBAction) remove: (id) sender;
+- (IBAction) newIdentity: (id) sender;
+- (IBAction) addToFavorites: (id) sender;
+- (IBAction) removeFromFavorites: (id) sender;
+
+- (IBAction) editOptions: (id) sender;
+- (IBAction) resetOptions: (id) sender;
+- (IBAction) cancelOptions: (id) sender;
+- (IBAction) doneOptions: (id) sender;
 
 - (IBAction) select: (id) sender;
 - (IBAction) cancel: (id) sender;
 
 - (int) runWindow;
+- (void) showOptions: (NSString *) contextInfo;
+- (void) didEndSheet: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo;
+- (void) saveOptions;
+
+- (void) reloadData;
+- (void) refreshTable;
 
 - (void) timedRefresh:(NSTimer *)timer;
 
index e7453a90621710f1086ad2a0cb19506091257fc9..b26eaaa00c70666ce33694f36ec91cb8ce81a882 100644 (file)
@@ -24,6 +24,7 @@
 
 #import "SelectIdentityController.h"
 
+#define identities_key_path @"identities"
 
 @implementation SelectIdentityController
 
 - (id) initWithWindowNibName: (NSString *) windowNibName
 {
     if ((self = [super initWithWindowNibName: windowNibName])) {
-        NSLog (@"SelectIdentityController initializing");
         identities = [[Identities alloc] init];
         [identities addObserver:self 
-                     forKeyPath:@"identities" 
+                     forKeyPath:identities_key_path 
                         options:NSKeyValueObservingOptionNew 
-                        context:@"SelectIdentityController"];
+                        context:@"selectIdentityController"];
         refreshTimer = [NSTimer scheduledTimerWithTimeInterval:60.0 target:self selector:@selector(timedRefresh:) userInfo:nil repeats:true];
     }
     
@@ -56,7 +56,7 @@
 - (void) dealloc
 {
     [refreshTimer release];
-    [identities removeObserver:self forKeyPath:@"identities"];
+    [identities removeObserver:self forKeyPath:identities_key_path];
     [identities release];
     [super dealloc];
 }
 
 - (void) awakeFromNib 
 {
-    [headerTextField setStringValue: @"Some header text"];    
+    [headerTextField setStringValue: @"Some header text"];
+    [identityTableView setDoubleAction:@selector(select:)];
 }
 
 // ---------------------------------------------------------------------------
 
 - (void) windowDidLoad
 {
-    
     [explanationTextField setStringValue: @"Some explanation text"];
-    
+    [identitiesController setContent:identities];
 }    
 
 // ---------------------------------------------------------------------------
 
-- (IBAction) add: (id) sender
+- (IBAction) newIdentity: (id) sender
 {
-    NSLog(@"Add identity");
+    Identity *newIdentity = [[Identity alloc] init];
+
+    newIdentity.favorite = TRUE;
+    identityOptionsController.content = newIdentity;
+    [newIdentity release];
+
+    NSLog(@"New identity %@", [newIdentity description]);
+    [self showOptions:@"new"];
 }
 
 // ---------------------------------------------------------------------------
 
-- (IBAction) remove: (id) sender
+- (IBAction) addToFavorites: (id) sender
 {
-    NSLog(@"Remove identity");
+    Identity *anIdentity = [identityArrayController.selectedObjects lastObject];
+    identityOptionsController.content = nil;
+    NSLog(@"Add %@ to favorites", [anIdentity description]);
+    anIdentity.favorite = TRUE;
+    
+    [self saveOptions];
+}
+
+// ---------------------------------------------------------------------------
+
+- (IBAction) removeFromFavorites: (id) sender
+{
+    Identity *anIdentity = [identityArrayController.selectedObjects lastObject];
+    identityOptionsController.content = anIdentity;
+    NSLog(@"Remove %@ from favorites", [anIdentity description]);
+    anIdentity.favorite = FALSE;
+    
+    [self saveOptions];
 }
 
 // ---------------------------------------------------------------------------
 
 - (IBAction) select: (id) sender
 {
+    // ignore double-click on header
+    if ([sender respondsToSelector:@selector(clickedRow)] && [sender clickedRow] < 0) {
+        return;
+    }
     NSLog(@"Select identity: %@", identityArrayController.selectedObjects.description);
 }
 
 
 // ---------------------------------------------------------------------------
 
+- (IBAction) editOptions: (id) sender
+{
+    Identity *anIdentity = [identityArrayController.selectedObjects lastObject];
+    anIdentity.favorite = TRUE;
+    [identityOptionsController setContent: anIdentity];
+    
+    [self showOptions:@"edit"];
+}
+
+// ---------------------------------------------------------------------------
+
+- (IBAction) resetOptions: (id) sender
+{
+    Identity *anIdentity = identityOptionsController.content;
+    // reset options to default settings
+    [anIdentity resetOptions];
+}
+
+// ---------------------------------------------------------------------------
+
+- (IBAction) cancelOptions: (id) sender
+{
+    identityOptionsController.content = nil;
+    [NSApp endSheet:identityOptionsWindow returnCode:NSUserCancelledError];
+    
+    // dump changed settings
+    [identities reload];
+}
+
+// ---------------------------------------------------------------------------
+
+- (IBAction) doneOptions: (id) sender
+{
+    Identity *anIdentity = identityOptionsController.content;
+    
+    [anIdentity setPrincipalComponents: [nameField stringValue] 
+                                 realm: [realmField stringValue]];
+    
+    [NSApp endSheet: identityOptionsWindow];
+}
+
+// ---------------------------------------------------------------------------
+
 - (int) runWindow
 {
     //[[NSApp delegate] addActiveWindow: [self window]];
 
 // ---------------------------------------------------------------------------
 
+- (void) showOptions: (NSString *) contextInfo
+{
+    Identity *anIdentity = identityOptionsController.content;
+    
+    [nameField setStringValue:anIdentity.componentsString];
+    [realmField setStringValue:anIdentity.realmString];
+    
+    [NSApp beginSheet: identityOptionsWindow 
+       modalForWindow: [self window] 
+        modalDelegate: self 
+       didEndSelector: @selector(didEndSheet:returnCode:contextInfo:)
+          contextInfo: contextInfo];
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) didEndSheet: (NSWindow *) sheet returnCode: (int) returnCode contextInfo: (void *) contextInfo
+{
+    kim_error err = KIM_NO_ERROR;
+    if (returnCode != NSUserCancelledError) {
+        if ([(NSString *)contextInfo isEqualToString:@"new"]) {
+            Identity *newIdentity = identityOptionsController.content;
+            err = [identities addIdentity:newIdentity];
+            
+#warning Add validation to prevent the addition of existing principals and invalid principals
+            if (err) {
+                NSLog(@"%s received error %@ trying to add identity %@", _cmd, [NSString stringForLastKIMError:err], [newIdentity description]);
+            }
+            [self saveOptions];
+        }
+        else if ([(NSString *)contextInfo isEqualToString:@"edit"]) {
+            [self saveOptions];
+        }
+    }
+    [sheet orderOut:self];
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) saveOptions
+{
+    // attempt to preserve the selection
+    Identity *anIdentity = [[identityArrayController selectedObjects] lastObject];
+    NSUInteger a, b, c;
+    
+    a = [identityArrayController.content indexOfObject: anIdentity];
+    b = NSNotFound;
+    
+    [identities synchronizePreferences];
+    
+    /*
+     * select same object as before if it's still in the array
+     * if not, select same index as before or end of array, whichever is less
+     */
+    
+    b = [identityArrayController.content indexOfObject:anIdentity];
+    c = [identityArrayController.content count] - 1;
+    
+    [identityArrayController setSelectionIndex: (b == NSNotFound) ? (a > c) ? c : a : b];
+}
+
+// ---------------------------------------------------------------------------
+
 - (void) observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
 {
-    if ([(NSString *)context isEqualToString:@"SelectIdentityController"]) {
-        NSLog(@"========== identities array changed ==========");
-        identityArrayController.content = [[identities.identities mutableCopy] autorelease];
+    if ([(NSString *) context isEqualToString:@"selectIdentityController"]) {
+       if ([keyPath isEqualToString:identities_key_path]) {
+//            [self reloadData];
+       }
     }
     else {
         [super observeValueForKeyPath:keyPath ofObject:object change:change context:context];
     }
 }
 
-- (void) timedRefresh:(NSTimer *)timer
+// ---------------------------------------------------------------------------
+
+- (void) reloadData
+{
+    // Preserve selection
+    Identity *selectedIdentity = [[identityArrayController.selectedObjects lastObject] retain];
+    NSUInteger a, b, c;
+    a = [identityArrayController selectionIndex];
+    b = [[identityArrayController content] count];
+    c = NSNotFound;
+    
+    NSLog(@"== updating table == %s", _cmd);
+    identityArrayController.content = identities.identities;
+
+    c = [identityArrayController.content indexOfObject:selectedIdentity];
+    if ([[identityArrayController content] count] >= a)
+        [identityArrayController setSelectionIndex:(c == NSNotFound) ? (a > b) ? b : a : c];
+    
+    [selectedIdentity release];
+}
+
+// ---------------------------------------------------------------------------
+
+- (void) refreshTable
 {
     [identityArrayController rearrangeObjects];
 }
 
+// ---------------------------------------------------------------------------
+
+- (void) timedRefresh:(NSTimer *)timer
+{
+    // refetch data to update expiration times
+    [self refreshTable];
+}
 
 @end
index 8e912b20398c0277e5c3a4d91ffa87597af4115b..bf65e894d4ca071d1d3fcc2207dfcc13a00ebfdf 100644 (file)
@@ -8,7 +8,8 @@
                <string key="IBDocument.HIToolboxVersion">352.00</string>
                <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
                        <bool key="EncodedWithXMLCoder">YES</bool>
-                       <integer value="6"/>
+                       <integer value="300428"/>
+                       <integer value="300295"/>
                </object>
                <object class="NSArray" key="IBDocument.PluginDependencies">
                        <bool key="EncodedWithXMLCoder">YES</bool>
@@ -28,7 +29,7 @@
                        <object class="NSWindowTemplate" id="224590347">
                                <int key="NSWindowStyleMask">13</int>
                                <int key="NSWindowBacking">2</int>
-                               <string key="NSWindowRect">{{279, 513}, {491, 315}}</string>
+                               <string key="NSWindowRect">{{279, 512}, {491, 316}}</string>
                                <int key="NSWTFlags">1886913536</int>
                                <string key="NSWindowTitle">Select a Kerberos Identity</string>
                                <object class="NSMutableString" key="NSWindowClass">
@@ -47,7 +48,7 @@
                                                <object class="NSTextField" id="499468804">
                                                        <reference key="NSNextResponder" ref="928852707"/>
                                                        <int key="NSvFlags">266</int>
-                                                       <string key="NSFrame">{{101, 264}, {373, 17}}</string>
+                                                       <string key="NSFrame">{{101, 265}, {373, 17}}</string>
                                                        <reference key="NSSuperview" ref="928852707"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSTextFieldCell" key="NSCell" id="82820472">
@@ -83,7 +84,7 @@
                                                <object class="NSTextField" id="675887072">
                                                        <reference key="NSNextResponder" ref="928852707"/>
                                                        <int key="NSvFlags">266</int>
-                                                       <string key="NSFrame">{{101, 219}, {373, 37}}</string>
+                                                       <string key="NSFrame">{{101, 220}, {373, 37}}</string>
                                                        <reference key="NSSuperview" ref="928852707"/>
                                                        <bool key="NSEnabled">YES</bool>
                                                        <object class="NSTextFieldCell" key="NSCell" id="542766611">
                                                                <reference key="NSTextColor" ref="883746258"/>
                                                        </object>
                                                </object>
-                                               <object class="NSScrollView" id="147207906">
+                                               <object class="NSButton" id="426244837">
+                                                       <reference key="NSNextResponder" ref="928852707"/>
+                                                       <int key="NSvFlags">289</int>
+                                                       <string key="NSFrame">{{390, 13}, {87, 32}}</string>
+                                                       <reference key="NSSuperview" ref="928852707"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="686991406">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <string key="NSContents">Select</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="426244837"/>
+                                                               <int key="NSButtonFlags">-2038284033</int>
+                                                               <int key="NSButtonFlags2">1</int>
+                                                               <reference key="NSAlternateImage" ref="604532625"/>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                               </object>
+                                               <object class="NSButton" id="505388869">
+                                                       <reference key="NSNextResponder" ref="928852707"/>
+                                                       <int key="NSvFlags">289</int>
+                                                       <string key="NSFrame">{{308, 13}, {82, 32}}</string>
+                                                       <reference key="NSSuperview" ref="928852707"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="720384657">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <string key="NSContents">Cancel</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="505388869"/>
+                                                               <int key="NSButtonFlags">-2038284033</int>
+                                                               <int key="NSButtonFlags2">1</int>
+                                                               <reference key="NSAlternateImage" ref="604532625"/>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
+                                                       </object>
+                                               </object>
+                                               <object class="NSCustomView" id="700535463">
+                                                       <reference key="NSNextResponder" ref="928852707"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{20, 232}, {64, 64}}</string>
+                                                       <reference key="NSSuperview" ref="928852707"/>
+                                                       <string key="NSClassName">BadgedImageView</string>
+                                               </object>
+                                               <object class="NSButton" id="949861041">
+                                                       <reference key="NSNextResponder" ref="928852707"/>
+                                                       <int key="NSvFlags">292</int>
+                                                       <string key="NSFrame">{{20, 19}, {28, 24}}</string>
+                                                       <reference key="NSSuperview" ref="928852707"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="871232847">
+                                                               <int key="NSCellFlags">-2080244224</int>
+                                                               <int key="NSCellFlags2">134217728</int>
+                                                               <string key="NSContents"/>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="949861041"/>
+                                                               <int key="NSButtonFlags">-2030812929</int>
+                                                               <int key="NSButtonFlags2">162</int>
+                                                               <object class="NSCustomResource" key="NSNormalImage">
+                                                                       <string key="NSClassName">NSImage</string>
+                                                                       <string key="NSResourceName">NSAddTemplate</string>
+                                                               </object>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string key="NSKeyEquivalent"/>
+                                                               <int key="NSPeriodicDelay">400</int>
+                                                               <int key="NSPeriodicInterval">75</int>
+                                                       </object>
+                                               </object>
+                                               <object class="NSScrollView" id="616284695">
                                                        <reference key="NSNextResponder" ref="928852707"/>
                                                        <int key="NSvFlags">274</int>
                                                        <object class="NSMutableArray" key="NSSubviews">
                                                                <bool key="EncodedWithXMLCoder">YES</bool>
-                                                               <object class="NSClipView" id="750193364">
-                                                                       <reference key="NSNextResponder" ref="147207906"/>
+                                                               <object class="NSClipView" id="568659409">
+                                                                       <reference key="NSNextResponder" ref="616284695"/>
                                                                        <int key="NSvFlags">2304</int>
                                                                        <object class="NSMutableArray" key="NSSubviews">
                                                                                <bool key="EncodedWithXMLCoder">YES</bool>
-                                                                               <object class="NSTableView" id="988096643">
-                                                                                       <reference key="NSNextResponder" ref="750193364"/>
+                                                                               <object class="NSTableView" id="631507655">
+                                                                                       <reference key="NSNextResponder" ref="568659409"/>
                                                                                        <int key="NSvFlags">256</int>
                                                                                        <string key="NSFrameSize">{449, 133}</string>
-                                                                                       <reference key="NSSuperview" ref="750193364"/>
+                                                                                       <reference key="NSSuperview" ref="568659409"/>
                                                                                        <bool key="NSEnabled">YES</bool>
-                                                                                       <object class="NSTableHeaderView" key="NSHeaderView" id="401017936">
-                                                                                               <reference key="NSNextResponder" ref="320641129"/>
+                                                                                       <object class="NSTableHeaderView" key="NSHeaderView" id="282626403">
+                                                                                               <reference key="NSNextResponder" ref="71614719"/>
                                                                                                <int key="NSvFlags">256</int>
                                                                                                <string key="NSFrameSize">{449, 17}</string>
-                                                                                               <reference key="NSSuperview" ref="320641129"/>
-                                                                                               <reference key="NSTableView" ref="988096643"/>
+                                                                                               <reference key="NSSuperview" ref="71614719"/>
+                                                                                               <reference key="NSTableView" ref="631507655"/>
                                                                                        </object>
-                                                                                       <object class="_NSCornerView" key="NSCornerView" id="907434254">
-                                                                                               <reference key="NSNextResponder" ref="147207906"/>
+                                                                                       <object class="_NSCornerView" key="NSCornerView" id="865861000">
+                                                                                               <reference key="NSNextResponder" ref="616284695"/>
                                                                                                <int key="NSvFlags">-2147483392</int>
                                                                                                <string key="NSFrame">{{-26, 0}, {16, 17}}</string>
-                                                                                               <reference key="NSSuperview" ref="147207906"/>
+                                                                                               <reference key="NSSuperview" ref="616284695"/>
                                                                                        </object>
                                                                                        <object class="NSMutableArray" key="NSTableColumns">
                                                                                                <bool key="EncodedWithXMLCoder">YES</bool>
-                                                                                               <object class="NSTableColumn" id="697375404">
-                                                                                                       <string key="NSIdentifier">principal</string>
-                                                                                                       <double key="NSWidth">3.429741e+02</double>
-                                                                                                       <double key="NSMinWidth">1.499741e+02</double>
+                                                                                               <object class="NSTableColumn" id="1025403577">
+                                                                                                       <string key="NSIdentifier">identityColumn</string>
+                                                                                                       <double key="NSWidth">2.670000e+02</double>
+                                                                                                       <double key="NSMinWidth">4.000000e+01</double>
                                                                                                        <double key="NSMaxWidth">1.000000e+03</double>
                                                                                                        <object class="NSTableHeaderCell" key="NSHeaderCell">
                                                                                                                <int key="NSCellFlags">75628032</int>
                                                                                                                <int key="NSCellFlags2">0</int>
                                                                                                                <string key="NSContents">Identity</string>
                                                                                                                <reference key="NSSupport" ref="26"/>
-                                                                                                               <object class="NSColor" key="NSBackgroundColor">
+                                                                                                               <object class="NSColor" key="NSBackgroundColor" id="975820753">
                                                                                                                        <int key="NSColorSpace">3</int>
                                                                                                                        <bytes key="NSWhite">MC4zMzMzMzI5OQA</bytes>
                                                                                                                </object>
                                                                                                                        <reference key="NSColor" ref="18538584"/>
                                                                                                                </object>
                                                                                                        </object>
-                                                                                                       <object class="NSTextFieldCell" key="NSDataCell" id="325541546">
-                                                                                                               <int key="NSCellFlags">1411513920</int>
-                                                                                                               <int key="NSCellFlags2">272761856</int>
+                                                                                                       <object class="NSTextFieldCell" key="NSDataCell" id="475156882">
+                                                                                                               <int key="NSCellFlags">337772096</int>
+                                                                                                               <int key="NSCellFlags2">2048</int>
                                                                                                                <string key="NSContents">Text Cell</string>
-                                                                                                               <reference key="NSSupport" ref="26"/>
-                                                                                                               <reference key="NSControlView" ref="988096643"/>
-                                                                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                                                                               <object class="NSFont" key="NSSupport" id="445233186">
+                                                                                                                       <string key="NSName">LucidaGrande</string>
+                                                                                                                       <double key="NSSize">1.100000e+01</double>
+                                                                                                                       <int key="NSfFlags">16</int>
+                                                                                                               </object>
+                                                                                                               <reference key="NSControlView" ref="631507655"/>
+                                                                                                               <object class="NSColor" key="NSBackgroundColor" id="1015612366">
+                                                                                                                       <int key="NSColorSpace">6</int>
+                                                                                                                       <string key="NSCatalogName">System</string>
+                                                                                                                       <string key="NSColorName">controlBackgroundColor</string>
+                                                                                                                       <reference key="NSColor" ref="31892828"/>
+                                                                                                               </object>
                                                                                                                <reference key="NSTextColor" ref="883746258"/>
                                                                                                        </object>
                                                                                                        <int key="NSResizingMask">3</int>
                                                                                                        <bool key="NSIsResizeable">YES</bool>
-                                                                                                       <bool key="NSIsEditable">YES</bool>
-                                                                                                       <reference key="NSTableView" ref="988096643"/>
+                                                                                                       <reference key="NSTableView" ref="631507655"/>
                                                                                                </object>
-                                                                                               <object class="NSTableColumn" id="1004662124">
-                                                                                                       <string key="NSIdentifier">timeRemaining</string>
-                                                                                                       <double key="NSWidth">1.003135e+02</double>
+                                                                                               <object class="NSTableColumn" id="917941739">
+                                                                                                       <string key="NSIdentifier">timeRemainingColumn</string>
+                                                                                                       <double key="NSWidth">1.500000e+02</double>
                                                                                                        <double key="NSMinWidth">1.000000e+02</double>
-                                                                                                       <double key="NSMaxWidth">1.500000e+02</double>
+                                                                                                       <double key="NSMaxWidth">2.000000e+02</double>
                                                                                                        <object class="NSTableHeaderCell" key="NSHeaderCell">
-                                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                                               <int key="NSCellFlags">75628032</int>
                                                                                                                <int key="NSCellFlags2">67108864</int>
                                                                                                                <string key="NSContents">Time Remaining</string>
                                                                                                                <reference key="NSSupport" ref="26"/>
+                                                                                                               <reference key="NSBackgroundColor" ref="975820753"/>
+                                                                                                               <reference key="NSTextColor" ref="223105710"/>
+                                                                                                       </object>
+                                                                                                       <object class="NSTextFieldCell" key="NSDataCell" id="519561276">
+                                                                                                               <int key="NSCellFlags">67239488</int>
+                                                                                                               <int key="NSCellFlags2">67110912</int>
+                                                                                                               <string key="NSContents">Text Cell</string>
+                                                                                                               <reference key="NSSupport" ref="445233186"/>
+                                                                                                               <reference key="NSControlView" ref="631507655"/>
+                                                                                                               <reference key="NSBackgroundColor" ref="1015612366"/>
+                                                                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                                                                       </object>
+                                                                                                       <int key="NSResizingMask">2</int>
+                                                                                                       <bool key="NSIsResizeable">YES</bool>
+                                                                                                       <reference key="NSTableView" ref="631507655"/>
+                                                                                               </object>
+                                                                                               <object class="NSTableColumn" id="850969979">
+                                                                                                       <string key="NSIdentifier">favoriteColumn</string>
+                                                                                                       <double key="NSWidth">2.300000e+01</double>
+                                                                                                       <double key="NSMinWidth">1.000000e+01</double>
+                                                                                                       <double key="NSMaxWidth">2.800000e+01</double>
+                                                                                                       <object class="NSTableHeaderCell" key="NSHeaderCell">
+                                                                                                               <int key="NSCellFlags">75628032</int>
+                                                                                                               <int key="NSCellFlags2">134217728</int>
+                                                                                                               <string type="base64-UTF8" key="NSContents">4pmlA</string>
+                                                                                                               <reference key="NSSupport" ref="26"/>
                                                                                                                <object class="NSColor" key="NSBackgroundColor">
                                                                                                                        <int key="NSColorSpace">6</int>
                                                                                                                        <string key="NSCatalogName">System</string>
                                                                                                                </object>
                                                                                                                <reference key="NSTextColor" ref="223105710"/>
                                                                                                        </object>
-                                                                                                       <object class="NSTextFieldCell" key="NSDataCell" id="618557697">
-                                                                                                               <int key="NSCellFlags">1140981312</int>
-                                                                                                               <int key="NSCellFlags2">-2076048384</int>
+                                                                                                       <object class="NSTextFieldCell" key="NSDataCell" id="968276158">
+                                                                                                               <int key="NSCellFlags">67239488</int>
+                                                                                                               <int key="NSCellFlags2">134219776</int>
                                                                                                                <string key="NSContents">Text Cell</string>
-                                                                                                               <reference key="NSSupport" ref="26"/>
-                                                                                                               <reference key="NSControlView" ref="988096643"/>
-                                                                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                                                                               <reference key="NSSupport" ref="445233186"/>
+                                                                                                               <reference key="NSControlView" ref="631507655"/>
+                                                                                                               <reference key="NSBackgroundColor" ref="1015612366"/>
                                                                                                                <reference key="NSTextColor" ref="883746258"/>
                                                                                                        </object>
-                                                                                                       <int key="NSResizingMask">3</int>
-                                                                                                       <bool key="NSIsResizeable">YES</bool>
-                                                                                                       <bool key="NSIsEditable">YES</bool>
-                                                                                                       <reference key="NSTableView" ref="988096643"/>
+                                                                                                       <reference key="NSTableView" ref="631507655"/>
                                                                                                </object>
                                                                                        </object>
                                                                                        <double key="NSIntercellSpacingWidth">3.000000e+00</double>
                                                                                                </object>
                                                                                        </object>
                                                                                        <double key="NSRowHeight">1.700000e+01</double>
-                                                                                       <int key="NSTvFlags">1119879168</int>
-                                                                                       <int key="NSColumnAutoresizingStyle">5</int>
+                                                                                       <int key="NSTvFlags">-1010827264</int>
+                                                                                       <string key="NSAutosaveName">SelectIdentityTable</string>
+                                                                                       <int key="NSColumnAutoresizingStyle">2</int>
                                                                                        <int key="NSDraggingSourceMaskForLocal">15</int>
                                                                                        <int key="NSDraggingSourceMaskForNonLocal">0</int>
                                                                                        <bool key="NSAllowsTypeSelect">YES</bool>
                                                                                </object>
                                                                        </object>
                                                                        <string key="NSFrame">{{1, 17}, {449, 133}}</string>
-                                                                       <reference key="NSSuperview" ref="147207906"/>
-                                                                       <reference key="NSNextKeyView" ref="988096643"/>
-                                                                       <reference key="NSDocView" ref="988096643"/>
-                                                                       <object class="NSColor" key="NSBGColor" id="1015612366">
-                                                                               <int key="NSColorSpace">6</int>
-                                                                               <string key="NSCatalogName">System</string>
-                                                                               <string key="NSColorName">controlBackgroundColor</string>
-                                                                               <reference key="NSColor" ref="31892828"/>
-                                                                       </object>
+                                                                       <reference key="NSSuperview" ref="616284695"/>
+                                                                       <reference key="NSNextKeyView" ref="631507655"/>
+                                                                       <reference key="NSDocView" ref="631507655"/>
+                                                                       <reference key="NSBGColor" ref="1015612366"/>
                                                                        <int key="NScvFlags">4</int>
                                                                </object>
-                                                               <object class="NSScroller" id="80966883">
-                                                                       <reference key="NSNextResponder" ref="147207906"/>
+                                                               <object class="NSScroller" id="810829004">
+                                                                       <reference key="NSNextResponder" ref="616284695"/>
                                                                        <int key="NSvFlags">-2147483392</int>
-                                                                       <string key="NSFrame">{{-30, 17}, {15, 285}}</string>
-                                                                       <reference key="NSSuperview" ref="147207906"/>
-                                                                       <reference key="NSTarget" ref="147207906"/>
+                                                                       <string key="NSFrame">{{224, 17}, {15, 117}}</string>
+                                                                       <reference key="NSSuperview" ref="616284695"/>
+                                                                       <reference key="NSTarget" ref="616284695"/>
                                                                        <string key="NSAction">_doScroller:</string>
-                                                                       <double key="NSPercent">9.684210e-01</double>
+                                                                       <double key="NSCurValue">3.700000e+01</double>
+                                                                       <double key="NSPercent">1.947368e-01</double>
                                                                </object>
-                                                               <object class="NSScroller" id="564144656">
-                                                                       <reference key="NSNextResponder" ref="147207906"/>
-                                                                       <int key="NSvFlags">-2147483392</int>
-                                                                       <string key="NSFrame">{{-100, -100}, {362, 15}}</string>
-                                                                       <reference key="NSSuperview" ref="147207906"/>
+                                                               <object class="NSScroller" id="836592269">
+                                                                       <reference key="NSNextResponder" ref="616284695"/>
+                                                                       <int key="NSvFlags">256</int>
+                                                                       <string key="NSFrame">{{-100, -100}, {223, 15}}</string>
+                                                                       <reference key="NSSuperview" ref="616284695"/>
                                                                        <int key="NSsFlags">1</int>
-                                                                       <reference key="NSTarget" ref="147207906"/>
+                                                                       <reference key="NSTarget" ref="616284695"/>
                                                                        <string key="NSAction">_doScroller:</string>
-                                                                       <double key="NSPercent">9.040768e-01</double>
+                                                                       <double key="NSPercent">7.689655e-01</double>
                                                                </object>
-                                                               <object class="NSClipView" id="320641129">
-                                                                       <reference key="NSNextResponder" ref="147207906"/>
+                                                               <object class="NSClipView" id="71614719">
+                                                                       <reference key="NSNextResponder" ref="616284695"/>
                                                                        <int key="NSvFlags">2304</int>
                                                                        <object class="NSMutableArray" key="NSSubviews">
                                                                                <bool key="EncodedWithXMLCoder">YES</bool>
-                                                                               <reference ref="401017936"/>
+                                                                               <reference ref="282626403"/>
                                                                        </object>
                                                                        <string key="NSFrame">{{1, 0}, {449, 17}}</string>
-                                                                       <reference key="NSSuperview" ref="147207906"/>
-                                                                       <reference key="NSNextKeyView" ref="401017936"/>
-                                                                       <reference key="NSDocView" ref="401017936"/>
+                                                                       <reference key="NSSuperview" ref="616284695"/>
+                                                                       <reference key="NSNextKeyView" ref="282626403"/>
+                                                                       <reference key="NSDocView" ref="282626403"/>
                                                                        <reference key="NSBGColor" ref="1015612366"/>
                                                                        <int key="NScvFlags">4</int>
                                                                </object>
-                                                               <reference ref="907434254"/>
+                                                               <reference ref="865861000"/>
                                                        </object>
-                                                       <string key="NSFrame">{{20, 60}, {451, 151}}</string>
+                                                       <string key="NSFrame">{{20, 61}, {451, 151}}</string>
                                                        <reference key="NSSuperview" ref="928852707"/>
-                                                       <reference key="NSNextKeyView" ref="750193364"/>
+                                                       <reference key="NSNextKeyView" ref="568659409"/>
                                                        <int key="NSsFlags">530</int>
-                                                       <reference key="NSVScroller" ref="80966883"/>
-                                                       <reference key="NSHScroller" ref="564144656"/>
-                                                       <reference key="NSContentView" ref="750193364"/>
-                                                       <reference key="NSHeaderClipView" ref="320641129"/>
-                                                       <reference key="NSCornerView" ref="907434254"/>
+                                                       <reference key="NSVScroller" ref="810829004"/>
+                                                       <reference key="NSHScroller" ref="836592269"/>
+                                                       <reference key="NSContentView" ref="568659409"/>
+                                                       <reference key="NSHeaderClipView" ref="71614719"/>
+                                                       <reference key="NSCornerView" ref="865861000"/>
                                                        <bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
                                                </object>
-                                               <object class="NSButton" id="426244837">
+                                               <object class="NSPopUpButton" id="263312988">
                                                        <reference key="NSNextResponder" ref="928852707"/>
-                                                       <int key="NSvFlags">289</int>
-                                                       <string key="NSFrame">{{390, 12}, {87, 32}}</string>
+                                                       <int key="NSvFlags">292</int>
+                                                       <string key="NSFrame">{{47, 19}, {54, 24}}</string>
                                                        <reference key="NSSuperview" ref="928852707"/>
                                                        <bool key="NSEnabled">YES</bool>
-                                                       <object class="NSButtonCell" key="NSCell" id="686991406">
+                                                       <object class="NSPopUpButtonCell" key="NSCell" id="659813048">
+                                                               <int key="NSCellFlags">-2076049856</int>
+                                                               <int key="NSCellFlags2">134219776</int>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="263312988"/>
+                                                               <int key="NSButtonFlags">-2034220801</int>
+                                                               <int key="NSButtonFlags2">162</int>
+                                                               <string key="NSAlternateContents"/>
+                                                               <string key="NSKeyEquivalent"/>
+                                                               <int key="NSPeriodicDelay">400</int>
+                                                               <int key="NSPeriodicInterval">75</int>
+                                                               <object class="NSMenuItem" key="NSMenuItem" id="354283131">
+                                                                       <reference key="NSMenu" ref="600123164"/>
+                                                                       <bool key="NSIsHidden">YES</bool>
+                                                                       <string key="NSTitle"/>
+                                                                       <string key="NSKeyEquiv"/>
+                                                                       <int key="NSKeyEquivModMask">1048576</int>
+                                                                       <int key="NSMnemonicLoc">2147483647</int>
+                                                                       <int key="NSState">1</int>
+                                                                       <object class="NSCustomResource" key="NSImage">
+                                                                               <string key="NSClassName">NSImage</string>
+                                                                               <string key="NSResourceName">NSActionTemplate</string>
+                                                                       </object>
+                                                                       <object class="NSCustomResource" key="NSOnImage" id="514331248">
+                                                                               <string key="NSClassName">NSImage</string>
+                                                                               <string key="NSResourceName">NSMenuCheckmark</string>
+                                                                       </object>
+                                                                       <object class="NSCustomResource" key="NSMixedImage" id="572887887">
+                                                                               <string key="NSClassName">NSImage</string>
+                                                                               <string key="NSResourceName">NSMenuMixedState</string>
+                                                                       </object>
+                                                                       <string key="NSAction">_popUpItemAction:</string>
+                                                                       <reference key="NSTarget" ref="659813048"/>
+                                                               </object>
+                                                               <bool key="NSMenuItemRespectAlignment">YES</bool>
+                                                               <object class="NSMenu" key="NSMenu" id="600123164">
+                                                                       <string key="NSTitle">OtherViews</string>
+                                                                       <object class="NSMutableArray" key="NSMenuItems">
+                                                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                               <reference ref="354283131"/>
+                                                                               <object class="NSMenuItem" id="136217401">
+                                                                                       <reference key="NSMenu" ref="600123164"/>
+                                                                                       <bool key="NSIsHidden">YES</bool>
+                                                                                       <string key="NSTitle">Remember Identity</string>
+                                                                                       <string key="NSKeyEquiv"/>
+                                                                                       <int key="NSKeyEquivModMask">1048576</int>
+                                                                                       <int key="NSMnemonicLoc">2147483647</int>
+                                                                                       <reference key="NSOnImage" ref="514331248"/>
+                                                                                       <reference key="NSMixedImage" ref="572887887"/>
+                                                                                       <string key="NSAction">_popUpItemAction:</string>
+                                                                                       <reference key="NSTarget" ref="659813048"/>
+                                                                               </object>
+                                                                               <object class="NSMenuItem" id="778570067">
+                                                                                       <reference key="NSMenu" ref="600123164"/>
+                                                                                       <string key="NSTitle">Forget Identity</string>
+                                                                                       <string key="NSKeyEquiv"/>
+                                                                                       <int key="NSKeyEquivModMask">1048576</int>
+                                                                                       <int key="NSMnemonicLoc">2147483647</int>
+                                                                                       <reference key="NSOnImage" ref="514331248"/>
+                                                                                       <reference key="NSMixedImage" ref="572887887"/>
+                                                                                       <string key="NSAction">_popUpItemAction:</string>
+                                                                                       <reference key="NSTarget" ref="659813048"/>
+                                                                               </object>
+                                                                               <object class="NSMenuItem" id="553755370">
+                                                                                       <reference key="NSMenu" ref="600123164"/>
+                                                                                       <string type="base64-UTF8" key="NSTitle">VGlja2V0IE9wdGlvbnPigKY</string>
+                                                                                       <string key="NSKeyEquiv"/>
+                                                                                       <int key="NSKeyEquivModMask">1048576</int>
+                                                                                       <int key="NSMnemonicLoc">2147483647</int>
+                                                                                       <reference key="NSOnImage" ref="514331248"/>
+                                                                                       <reference key="NSMixedImage" ref="572887887"/>
+                                                                                       <string key="NSAction">_popUpItemAction:</string>
+                                                                                       <reference key="NSTarget" ref="659813048"/>
+                                                                               </object>
+                                                                       </object>
+                                                               </object>
+                                                               <int key="NSSelectedIndex">1</int>
+                                                               <bool key="NSPullDown">YES</bool>
+                                                               <int key="NSPreferredEdge">2</int>
+                                                               <bool key="NSUsesItemFromMenu">YES</bool>
+                                                               <bool key="NSAltersState">YES</bool>
+                                                               <int key="NSArrowPosition">2</int>
+                                                       </object>
+                                               </object>
+                                       </object>
+                                       <string key="NSFrameSize">{491, 316}</string>
+                                       <reference key="NSSuperview"/>
+                               </object>
+                               <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
+                               <string key="NSMinSize">{419, 320}</string>
+                               <string key="NSMaxSize">{600, 622}</string>
+                               <string key="NSFrameAutosaveName">SelectIdentityWindow</string>
+                       </object>
+                       <object class="NSArrayController" id="333357907">
+                               <object class="NSMutableArray" key="NSDeclaredKeys">
+                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                       <string>timeRemaining</string>
+                                       <string>isFavorite</string>
+                                       <string>principalString</string>
+                                       <string>favorite</string>
+                               </object>
+                               <string key="NSObjectClassName">Identity</string>
+                               <bool key="NSEditable">YES</bool>
+                               <object class="_NSManagedProxy" key="_NSManagedProxy"/>
+                               <bool key="NSAvoidsEmptySelection">YES</bool>
+                               <bool key="NSPreservesSelection">YES</bool>
+                               <bool key="NSFilterRestrictsInsertion">YES</bool>
+                               <bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
+                       </object>
+                       <object class="NSCustomObject" id="307777557">
+                               <string key="NSClassName">KerberosTimeFormatter</string>
+                       </object>
+                       <object class="NSCustomObject" id="355705187">
+                               <string key="NSClassName">KerberosFavoriteFormatter</string>
+                       </object>
+                       <object class="NSWindowTemplate" id="370461416">
+                               <int key="NSWindowStyleMask">7</int>
+                               <int key="NSWindowBacking">2</int>
+                               <string key="NSWindowRect">{{196, 132}, {427, 378}}</string>
+                               <int key="NSWTFlags">603979776</int>
+                               <string key="NSWindowTitle">Window</string>
+                               <string key="NSWindowClass">NSWindow</string>
+                               <nil key="NSViewClass"/>
+                               <string key="NSWindowContentMaxSize">{3.40282e+38, 3.40282e+38}</string>
+                               <object class="NSView" key="NSWindowView" id="1019868804">
+                                       <reference key="NSNextResponder"/>
+                                       <int key="NSvFlags">258</int>
+                                       <object class="NSMutableArray" key="NSSubviews">
+                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                               <object class="NSTextField" id="485004197">
+                                                       <reference key="NSNextResponder" ref="1019868804"/>
+                                                       <int key="NSvFlags">266</int>
+                                                       <string key="NSFrame">{{69, 336}, {338, 22}}</string>
+                                                       <reference key="NSSuperview" ref="1019868804"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="1047482753">
+                                                               <int key="NSCellFlags">-1804468671</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents"/>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <string key="NSPlaceholderString">user</string>
+                                                               <reference key="NSControlView" ref="485004197"/>
+                                                               <bool key="NSDrawsBackground">YES</bool>
+                                                               <object class="NSColor" key="NSBackgroundColor" id="830301085">
+                                                                       <int key="NSColorSpace">6</int>
+                                                                       <string key="NSCatalogName">System</string>
+                                                                       <string key="NSColorName">textBackgroundColor</string>
+                                                                       <reference key="NSColor" ref="591379363"/>
+                                                               </object>
+                                                               <object class="NSColor" key="NSTextColor" id="894652286">
+                                                                       <int key="NSColorSpace">6</int>
+                                                                       <string key="NSCatalogName">System</string>
+                                                                       <string key="NSColorName">textColor</string>
+                                                                       <reference key="NSColor" ref="18538584"/>
+                                                               </object>
+                                                       </object>
+                                               </object>
+                                               <object class="NSTextField" id="404880622">
+                                                       <reference key="NSNextResponder" ref="1019868804"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{19, 338}, {45, 17}}</string>
+                                                       <reference key="NSSuperview" ref="1019868804"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="775341038">
+                                                               <int key="NSCellFlags">68288064</int>
+                                                               <int key="NSCellFlags2">71304192</int>
+                                                               <string key="NSContents">Name:</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="404880622"/>
+                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                       </object>
+                                               </object>
+                                               <object class="NSTextField" id="623163777">
+                                                       <reference key="NSNextResponder" ref="1019868804"/>
+                                                       <int key="NSvFlags">266</int>
+                                                       <string key="NSFrame">{{69, 306}, {338, 22}}</string>
+                                                       <reference key="NSSuperview" ref="1019868804"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="327568348">
+                                                               <int key="NSCellFlags">-1804468671</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents"/>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <string key="NSPlaceholderString">REALM.ORG</string>
+                                                               <reference key="NSControlView" ref="623163777"/>
+                                                               <bool key="NSDrawsBackground">YES</bool>
+                                                               <reference key="NSBackgroundColor" ref="830301085"/>
+                                                               <reference key="NSTextColor" ref="894652286"/>
+                                                       </object>
+                                               </object>
+                                               <object class="NSTextField" id="609534695">
+                                                       <reference key="NSNextResponder" ref="1019868804"/>
+                                                       <int key="NSvFlags">268</int>
+                                                       <string key="NSFrame">{{17, 308}, {47, 17}}</string>
+                                                       <reference key="NSSuperview" ref="1019868804"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="424319976">
+                                                               <int key="NSCellFlags">68288064</int>
+                                                               <int key="NSCellFlags2">71304192</int>
+                                                               <string key="NSContents">Realm:</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="609534695"/>
+                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                       </object>
+                                               </object>
+                                               <object class="NSBox" id="282101470">
+                                                       <reference key="NSNextResponder" ref="1019868804"/>
+                                                       <int key="NSvFlags">266</int>
+                                                       <object class="NSMutableArray" key="NSSubviews">
+                                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                                               <object class="NSView" id="929379">
+                                                                       <reference key="NSNextResponder" ref="282101470"/>
+                                                                       <int key="NSvFlags">256</int>
+                                                                       <object class="NSMutableArray" key="NSSubviews">
+                                                                               <bool key="EncodedWithXMLCoder">YES</bool>
+                                                                               <object class="NSSlider" id="552234083">
+                                                                                       <reference key="NSNextResponder" ref="929379"/>
+                                                                                       <int key="NSvFlags">266</int>
+                                                                                       <string key="NSFrame">{{24, 179}, {337, 25}}</string>
+                                                                                       <reference key="NSSuperview" ref="929379"/>
+                                                                                       <bool key="NSEnabled">YES</bool>
+                                                                                       <object class="NSSliderCell" key="NSCell" id="629844970">
+                                                                                               <int key="NSCellFlags">67501824</int>
+                                                                                               <int key="NSCellFlags2">0</int>
+                                                                                               <object class="NSMutableString" key="NSContents">
+                                                                                                       <characters key="NS.bytes"/>
+                                                                                               </object>
+                                                                                               <reference key="NSSupport" ref="604532625"/>
+                                                                                               <reference key="NSControlView" ref="552234083"/>
+                                                                                               <double key="NSMaxValue">1.000000e+02</double>
+                                                                                               <double key="NSMinValue">0.000000e+00</double>
+                                                                                               <double key="NSValue">0.000000e+00</double>
+                                                                                               <double key="NSAltIncValue">0.000000e+00</double>
+                                                                                               <int key="NSNumberOfTickMarks">11</int>
+                                                                                               <int key="NSTickMarkPosition">0</int>
+                                                                                               <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+                                                                                               <bool key="NSVertical">NO</bool>
+                                                                                       </object>
+                                                                               </object>
+                                                                               <object class="NSTextField" id="576071402">
+                                                                                       <reference key="NSNextResponder" ref="929379"/>
+                                                                                       <int key="NSvFlags">268</int>
+                                                                                       <string key="NSFrame">{{13, 211}, {185, 17}}</string>
+                                                                                       <reference key="NSSuperview" ref="929379"/>
+                                                                                       <bool key="NSEnabled">YES</bool>
+                                                                                       <object class="NSTextFieldCell" key="NSCell" id="380679549">
+                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                               <int key="NSCellFlags2">4194304</int>
+                                                                                               <string key="NSContents">Get tickets that are valid for:</string>
+                                                                                               <reference key="NSSupport" ref="604532625"/>
+                                                                                               <reference key="NSControlView" ref="576071402"/>
+                                                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                                                       </object>
+                                                                               </object>
+                                                                               <object class="NSTextField" id="54325332">
+                                                                                       <reference key="NSNextResponder" ref="929379"/>
+                                                                                       <int key="NSvFlags">266</int>
+                                                                                       <string key="NSFrame">{{23, 157}, {339, 14}}</string>
+                                                                                       <reference key="NSSuperview" ref="929379"/>
+                                                                                       <bool key="NSEnabled">YES</bool>
+                                                                                       <object class="NSTextFieldCell" key="NSCell" id="584202005">
+                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                               <int key="NSCellFlags2">4325376</int>
+                                                                                               <string key="NSContents">10 hours</string>
+                                                                                               <reference key="NSSupport" ref="26"/>
+                                                                                               <reference key="NSControlView" ref="54325332"/>
+                                                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                                                       </object>
+                                                                               </object>
+                                                                               <object class="NSTextField" id="240805237">
+                                                                                       <reference key="NSNextResponder" ref="929379"/>
+                                                                                       <int key="NSvFlags">268</int>
+                                                                                       <string key="NSFrame">{{13, 132}, {133, 17}}</string>
+                                                                                       <reference key="NSSuperview" ref="929379"/>
+                                                                                       <bool key="NSEnabled">YES</bool>
+                                                                                       <object class="NSTextFieldCell" key="NSCell" id="638526338">
+                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                               <int key="NSCellFlags2">71303168</int>
+                                                                                               <string key="NSContents">Kerberos 5 Options:</string>
+                                                                                               <reference key="NSSupport" ref="604532625"/>
+                                                                                               <reference key="NSControlView" ref="240805237"/>
+                                                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                                                       </object>
+                                                                               </object>
+                                                                               <object class="NSSlider" id="373804676">
+                                                                                       <reference key="NSNextResponder" ref="929379"/>
+                                                                                       <int key="NSvFlags">266</int>
+                                                                                       <string key="NSFrame">{{42, 34}, {301, 25}}</string>
+                                                                                       <reference key="NSSuperview" ref="929379"/>
+                                                                                       <bool key="NSEnabled">YES</bool>
+                                                                                       <object class="NSSliderCell" key="NSCell" id="84127609">
+                                                                                               <int key="NSCellFlags">67501824</int>
+                                                                                               <int key="NSCellFlags2">0</int>
+                                                                                               <object class="NSMutableString" key="NSContents">
+                                                                                                       <characters key="NS.bytes"/>
+                                                                                               </object>
+                                                                                               <object class="NSFont" key="NSSupport">
+                                                                                                       <string key="NSName">Helvetica</string>
+                                                                                                       <double key="NSSize">1.200000e+01</double>
+                                                                                                       <int key="NSfFlags">16</int>
+                                                                                               </object>
+                                                                                               <reference key="NSControlView" ref="373804676"/>
+                                                                                               <double key="NSMaxValue">1.000000e+05</double>
+                                                                                               <double key="NSMinValue">0.000000e+00</double>
+                                                                                               <double key="NSValue">2.484663e+04</double>
+                                                                                               <double key="NSAltIncValue">0.000000e+00</double>
+                                                                                               <int key="NSNumberOfTickMarks">8</int>
+                                                                                               <int key="NSTickMarkPosition">0</int>
+                                                                                               <bool key="NSAllowsTickMarkValuesOnly">NO</bool>
+                                                                                               <bool key="NSVertical">NO</bool>
+                                                                                       </object>
+                                                                               </object>
+                                                                               <object class="NSButton" id="910622795">
+                                                                                       <reference key="NSNextResponder" ref="929379"/>
+                                                                                       <int key="NSvFlags">268</int>
+                                                                                       <string key="NSFrame">{{24, 86}, {303, 18}}</string>
+                                                                                       <reference key="NSSuperview" ref="929379"/>
+                                                                                       <bool key="NSEnabled">YES</bool>
+                                                                                       <object class="NSButtonCell" key="NSCell" id="878349972">
+                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                               <int key="NSCellFlags2">0</int>
+                                                                                               <string key="NSContents">Get tickets without IP addresses (NAT mode)</string>
+                                                                                               <reference key="NSSupport" ref="604532625"/>
+                                                                                               <reference key="NSControlView" ref="910622795"/>
+                                                                                               <int key="NSButtonFlags">1211912703</int>
+                                                                                               <int key="NSButtonFlags2">2</int>
+                                                                                               <object class="NSButtonImageSource" key="NSAlternateImage" id="565361234">
+                                                                                                       <string key="NSImageName">NSSwitch</string>
+                                                                                               </object>
+                                                                                               <string key="NSAlternateContents"/>
+                                                                                               <string key="NSKeyEquivalent"/>
+                                                                                               <int key="NSPeriodicDelay">200</int>
+                                                                                               <int key="NSPeriodicInterval">25</int>
+                                                                                       </object>
+                                                                               </object>
+                                                                               <object class="NSButton" id="415869872">
+                                                                                       <reference key="NSNextResponder" ref="929379"/>
+                                                                                       <int key="NSvFlags">268</int>
+                                                                                       <string key="NSFrame">{{24, 108}, {351, 18}}</string>
+                                                                                       <reference key="NSSuperview" ref="929379"/>
+                                                                                       <bool key="NSEnabled">YES</bool>
+                                                                                       <object class="NSButtonCell" key="NSCell" id="77611886">
+                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                               <int key="NSCellFlags2">0</int>
+                                                                                               <string key="NSContents">Get tickets that can be forwarded to other machines</string>
+                                                                                               <reference key="NSSupport" ref="604532625"/>
+                                                                                               <reference key="NSControlView" ref="415869872"/>
+                                                                                               <int key="NSButtonFlags">1211912703</int>
+                                                                                               <int key="NSButtonFlags2">2</int>
+                                                                                               <reference key="NSAlternateImage" ref="565361234"/>
+                                                                                               <string key="NSAlternateContents"/>
+                                                                                               <string key="NSKeyEquivalent"/>
+                                                                                               <int key="NSPeriodicDelay">200</int>
+                                                                                               <int key="NSPeriodicInterval">25</int>
+                                                                                       </object>
+                                                                               </object>
+                                                                               <object class="NSButton" id="606962746">
+                                                                                       <reference key="NSNextResponder" ref="929379"/>
+                                                                                       <int key="NSvFlags">268</int>
+                                                                                       <string key="NSFrame">{{24, 64}, {248, 18}}</string>
+                                                                                       <reference key="NSSuperview" ref="929379"/>
+                                                                                       <bool key="NSEnabled">YES</bool>
+                                                                                       <object class="NSButtonCell" key="NSCell" id="583273626">
+                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                               <int key="NSCellFlags2">0</int>
+                                                                                               <string key="NSContents">Get tickets that can be renewed for:</string>
+                                                                                               <reference key="NSSupport" ref="604532625"/>
+                                                                                               <reference key="NSControlView" ref="606962746"/>
+                                                                                               <int key="NSButtonFlags">1211912703</int>
+                                                                                               <int key="NSButtonFlags2">2</int>
+                                                                                               <reference key="NSAlternateImage" ref="565361234"/>
+                                                                                               <string key="NSAlternateContents"/>
+                                                                                               <string key="NSKeyEquivalent"/>
+                                                                                               <int key="NSPeriodicDelay">200</int>
+                                                                                               <int key="NSPeriodicInterval">25</int>
+                                                                                       </object>
+                                                                               </object>
+                                                                               <object class="NSTextField" id="956800130">
+                                                                                       <reference key="NSNextResponder" ref="929379"/>
+                                                                                       <int key="NSvFlags">266</int>
+                                                                                       <string key="NSFrame">{{41, 12}, {303, 14}}</string>
+                                                                                       <reference key="NSSuperview" ref="929379"/>
+                                                                                       <bool key="NSEnabled">YES</bool>
+                                                                                       <object class="NSTextFieldCell" key="NSCell" id="596249502">
+                                                                                               <int key="NSCellFlags">67239424</int>
+                                                                                               <int key="NSCellFlags2">4325376</int>
+                                                                                               <string key="NSContents">6 days, 17 hours, 45 minutes</string>
+                                                                                               <reference key="NSSupport" ref="26"/>
+                                                                                               <reference key="NSControlView" ref="956800130"/>
+                                                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                                                       </object>
+                                                                               </object>
+                                                                       </object>
+                                                                       <string key="NSFrame">{{3, 3}, {387, 238}}</string>
+                                                                       <reference key="NSSuperview" ref="282101470"/>
+                                                               </object>
+                                                       </object>
+                                                       <string key="NSFrame">{{17, 56}, {393, 244}}</string>
+                                                       <reference key="NSSuperview" ref="1019868804"/>
+                                                       <string key="NSOffsets">{0, 0}</string>
+                                                       <object class="NSTextFieldCell" key="NSTitleCell">
+                                                               <int key="NSCellFlags">67239424</int>
+                                                               <int key="NSCellFlags2">0</int>
+                                                               <string key="NSContents">Ticket Options</string>
+                                                               <reference key="NSSupport" ref="445233186"/>
+                                                               <reference key="NSBackgroundColor" ref="830301085"/>
+                                                               <object class="NSColor" key="NSTextColor">
+                                                                       <int key="NSColorSpace">3</int>
+                                                                       <bytes key="NSWhite">MCAwLjgwMDAwMDAxAA</bytes>
+                                                               </object>
+                                                       </object>
+                                                       <reference key="NSContentView" ref="929379"/>
+                                                       <int key="NSBorderType">2</int>
+                                                       <int key="NSBoxType">1</int>
+                                                       <int key="NSTitlePosition">0</int>
+                                                       <bool key="NSTransparent">NO</bool>
+                                               </object>
+                                               <object class="NSButton" id="932240937">
+                                                       <reference key="NSNextResponder" ref="1019868804"/>
+                                                       <int key="NSvFlags">289</int>
+                                                       <string key="NSFrame">{{331, 12}, {82, 32}}</string>
+                                                       <reference key="NSSuperview" ref="1019868804"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSButtonCell" key="NSCell" id="870649207">
                                                                <int key="NSCellFlags">67239424</int>
                                                                <int key="NSCellFlags2">134217728</int>
-                                                               <string key="NSContents">Select</string>
+                                                               <string key="NSContents">OK</string>
                                                                <reference key="NSSupport" ref="604532625"/>
-                                                               <reference key="NSControlView" ref="426244837"/>
+                                                               <reference key="NSControlView" ref="932240937"/>
                                                                <int key="NSButtonFlags">-2038284033</int>
-                                                               <int key="NSButtonFlags2">1</int>
-                                                               <reference key="NSAlternateImage" ref="604532625"/>
+                                                               <int key="NSButtonFlags2">129</int>
                                                                <string key="NSAlternateContents"/>
                                                                <string type="base64-UTF8" key="NSKeyEquivalent">DQ</string>
                                                                <int key="NSPeriodicDelay">200</int>
                                                                <int key="NSPeriodicInterval">25</int>
                                                        </object>
                                                </object>
-                                               <object class="NSButton" id="505388869">
-                                                       <reference key="NSNextResponder" ref="928852707"/>
+                                               <object class="NSButton" id="871834199">
+                                                       <reference key="NSNextResponder" ref="1019868804"/>
                                                        <int key="NSvFlags">289</int>
-                                                       <string key="NSFrame">{{308, 12}, {82, 32}}</string>
-                                                       <reference key="NSSuperview" ref="928852707"/>
+                                                       <string key="NSFrame">{{249, 12}, {82, 32}}</string>
+                                                       <reference key="NSSuperview" ref="1019868804"/>
                                                        <bool key="NSEnabled">YES</bool>
-                                                       <object class="NSButtonCell" key="NSCell" id="720384657">
+                                                       <object class="NSButtonCell" key="NSCell" id="754483226">
                                                                <int key="NSCellFlags">67239424</int>
                                                                <int key="NSCellFlags2">134217728</int>
                                                                <string key="NSContents">Cancel</string>
                                                                <reference key="NSSupport" ref="604532625"/>
-                                                               <reference key="NSControlView" ref="505388869"/>
+                                                               <reference key="NSControlView" ref="871834199"/>
                                                                <int key="NSButtonFlags">-2038284033</int>
-                                                               <int key="NSButtonFlags2">1</int>
-                                                               <reference key="NSAlternateImage" ref="604532625"/>
+                                                               <int key="NSButtonFlags2">129</int>
                                                                <string key="NSAlternateContents"/>
                                                                <string type="base64-UTF8" key="NSKeyEquivalent">Gw</string>
                                                                <int key="NSPeriodicDelay">200</int>
                                                                <int key="NSPeriodicInterval">25</int>
                                                        </object>
                                                </object>
-                                               <object class="NSButton" id="818868322">
-                                                       <reference key="NSNextResponder" ref="928852707"/>
-                                                       <int key="NSvFlags">292</int>
-                                                       <string key="NSFrame">{{43, 30}, {22, 22}}</string>
-                                                       <reference key="NSSuperview" ref="928852707"/>
+                                               <object class="NSButton" id="669516699">
+                                                       <reference key="NSNextResponder" ref="1019868804"/>
+                                                       <int key="NSvFlags">289</int>
+                                                       <string key="NSFrame">{{129, 12}, {120, 32}}</string>
+                                                       <reference key="NSSuperview" ref="1019868804"/>
                                                        <bool key="NSEnabled">YES</bool>
-                                                       <object class="NSButtonCell" key="NSCell" id="872529405">
+                                                       <object class="NSButtonCell" key="NSCell" id="362266618">
                                                                <int key="NSCellFlags">67239424</int>
                                                                <int key="NSCellFlags2">134217728</int>
-                                                               <string key="NSContents"/>
+                                                               <string key="NSContents">Use Defaults</string>
                                                                <reference key="NSSupport" ref="604532625"/>
-                                                               <reference key="NSControlView" ref="818868322"/>
-                                                               <int key="NSButtonFlags">-2042347265</int>
-                                                               <int key="NSButtonFlags2">134</int>
-                                                               <object class="NSCustomResource" key="NSNormalImage">
-                                                                       <string key="NSClassName">NSImage</string>
-                                                                       <string key="NSResourceName">Remove</string>
-                                                               </object>
-                                                               <object class="NSCustomResource" key="NSAlternateImage">
-                                                                       <string key="NSClassName">NSImage</string>
-                                                                       <string key="NSResourceName">Remove_Pressed</string>
-                                                               </object>
+                                                               <reference key="NSControlView" ref="669516699"/>
+                                                               <int key="NSButtonFlags">-2038284033</int>
+                                                               <int key="NSButtonFlags2">129</int>
                                                                <string key="NSAlternateContents"/>
                                                                <string key="NSKeyEquivalent"/>
-                                                               <int key="NSPeriodicDelay">400</int>
-                                                               <int key="NSPeriodicInterval">75</int>
+                                                               <int key="NSPeriodicDelay">200</int>
+                                                               <int key="NSPeriodicInterval">25</int>
                                                        </object>
                                                </object>
-                                               <object class="NSButton" id="774532696">
-                                                       <reference key="NSNextResponder" ref="928852707"/>
-                                                       <int key="NSvFlags">292</int>
-                                                       <string key="NSFrame">{{20, 30}, {23, 22}}</string>
-                                                       <reference key="NSSuperview" ref="928852707"/>
+                                               <object class="NSTextField" id="958176038">
+                                                       <reference key="NSNextResponder" ref="1019868804"/>
+                                                       <int key="NSvFlags">-2147483380</int>
+                                                       <string key="NSFrame">{{66, 338}, {344, 17}}</string>
+                                                       <reference key="NSSuperview" ref="1019868804"/>
                                                        <bool key="NSEnabled">YES</bool>
-                                                       <object class="NSButtonCell" key="NSCell" id="958553500">
-                                                               <int key="NSCellFlags">67239424</int>
-                                                               <int key="NSCellFlags2">134217728</int>
-                                                               <string key="NSContents"/>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="196100637">
+                                                               <int key="NSCellFlags">68288064</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents">Label</string>
                                                                <reference key="NSSupport" ref="604532625"/>
-                                                               <reference key="NSControlView" ref="774532696"/>
-                                                               <int key="NSButtonFlags">-2042347265</int>
-                                                               <int key="NSButtonFlags2">134</int>
-                                                               <object class="NSCustomResource" key="NSNormalImage">
-                                                                       <string key="NSClassName">NSImage</string>
-                                                                       <string key="NSResourceName">Add</string>
-                                                               </object>
-                                                               <object class="NSCustomResource" key="NSAlternateImage">
-                                                                       <string key="NSClassName">NSImage</string>
-                                                                       <string key="NSResourceName">Add_Pressed</string>
-                                                               </object>
-                                                               <string key="NSAlternateContents"/>
-                                                               <string key="NSKeyEquivalent"/>
-                                                               <int key="NSPeriodicDelay">400</int>
-                                                               <int key="NSPeriodicInterval">75</int>
+                                                               <reference key="NSControlView" ref="958176038"/>
+                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                               <reference key="NSTextColor" ref="883746258"/>
                                                        </object>
                                                </object>
-                                               <object class="NSCustomView" id="700535463">
-                                                       <reference key="NSNextResponder" ref="928852707"/>
-                                                       <int key="NSvFlags">268</int>
-                                                       <string key="NSFrame">{{20, 231}, {64, 64}}</string>
-                                                       <reference key="NSSuperview" ref="928852707"/>
-                                                       <string key="NSClassName">BadgedImageView</string>
+                                               <object class="NSTextField" id="546844125">
+                                                       <reference key="NSNextResponder" ref="1019868804"/>
+                                                       <int key="NSvFlags">-2147483380</int>
+                                                       <string key="NSFrame">{{66, 308}, {344, 17}}</string>
+                                                       <reference key="NSSuperview" ref="1019868804"/>
+                                                       <bool key="NSEnabled">YES</bool>
+                                                       <object class="NSTextFieldCell" key="NSCell" id="725579124">
+                                                               <int key="NSCellFlags">68288064</int>
+                                                               <int key="NSCellFlags2">272630784</int>
+                                                               <string key="NSContents">Label</string>
+                                                               <reference key="NSSupport" ref="604532625"/>
+                                                               <reference key="NSControlView" ref="546844125"/>
+                                                               <reference key="NSBackgroundColor" ref="876444531"/>
+                                                               <reference key="NSTextColor" ref="883746258"/>
+                                                       </object>
                                                </object>
                                        </object>
-                                       <string key="NSFrameSize">{491, 315}</string>
+                                       <string key="NSFrameSize">{427, 378}</string>
                                        <reference key="NSSuperview"/>
                                </object>
-                               <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
-                               <string key="NSMinSize">{419, 320}</string>
-                               <string key="NSMaxSize">{600, 622}</string>
+                               <string key="NSScreenRect">{{0, 0}, {1280, 778}}</string>
+                               <string key="NSMaxSize">{3.40282e+38, 3.40282e+38}</string>
                        </object>
-                       <object class="NSArrayController" id="333357907">
+                       <object class="NSObjectController" id="196152721">
                                <object class="NSMutableArray" key="NSDeclaredKeys">
                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                       <string>timeRemaining</string>
-                                       <string>principal</string>
-                                       <string>isFavorite</string>
-                                       <string>description</string>
-                                       <string>expirationDate</string>
+                                       <string>realmString</string>
+                                       <string>isForwardable</string>
+                                       <string>isProxiable</string>
+                                       <string>isRenewable</string>
+                                       <string>renewableLifetime</string>
+                                       <string>componentsString</string>
+                                       <string>favorite</string>
+                                       <string>isAddressless</string>
+                                       <string>validLifetime</string>
+                                       <string>renewableLifetimeString</string>
+                                       <string>validLifetimeString</string>
+                                       <string>hasCCache</string>
                                </object>
+                               <string key="NSObjectClassName">Identity</string>
                                <bool key="NSEditable">YES</bool>
                                <object class="_NSManagedProxy" key="_NSManagedProxy"/>
-                               <bool key="NSAvoidsEmptySelection">YES</bool>
-                               <bool key="NSPreservesSelection">YES</bool>
-                               <bool key="NSSelectsInsertedObjects">YES</bool>
-                               <bool key="NSFilterRestrictsInsertion">YES</bool>
-                               <bool key="NSClearsFilterPredicateOnInsertion">YES</bool>
                        </object>
-                       <object class="NSCustomObject" id="307777557">
-                               <string key="NSClassName">KerberosTimeFormatter</string>
+                       <object class="NSObjectController" id="1031761104">
+                               <object class="NSMutableArray" key="NSDeclaredKeys">
+                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                       <string>minimumValidLifetime</string>
+                                       <string>maximumValidLifetime</string>
+                                       <string>minimumRenewableLifetime</string>
+                                       <string>maximumRenewableLifetime</string>
+                                       <string>favorite</string>
+                                       <string>identities</string>
+                               </object>
+                               <string key="NSObjectClassName">Identities</string>
+                               <object class="_NSManagedProxy" key="_NSManagedProxy"/>
                        </object>
                </object>
                <object class="IBObjectContainer" key="IBDocument.Objects">
                                <bool key="EncodedWithXMLCoder">YES</bool>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">identityTableColumn</string>
+                                               <string key="label">kerberosIconImageView</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="697375404"/>
+                                               <reference key="destination" ref="700535463"/>
                                        </object>
-                                       <int key="connectionID">300157</int>
+                                       <int key="connectionID">300158</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">kerberosIconImageView</string>
+                                               <string key="label">headerTextField</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="700535463"/>
+                                               <reference key="destination" ref="499468804"/>
                                        </object>
-                                       <int key="connectionID">300158</int>
+                                       <int key="connectionID">300163</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">timeRemainingTableColumn</string>
+                                               <string key="label">explanationTextField</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="1004662124"/>
+                                               <reference key="destination" ref="675887072"/>
                                        </object>
-                                       <int key="connectionID">300159</int>
+                                       <int key="connectionID">300164</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">removeIdentityButton</string>
+                                               <string key="label">cancelButton</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="818868322"/>
+                                               <reference key="destination" ref="505388869"/>
                                        </object>
-                                       <int key="connectionID">300161</int>
+                                       <int key="connectionID">300165</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">headerTextField</string>
+                                               <string key="label">selectIdentityButton</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="499468804"/>
+                                               <reference key="destination" ref="426244837"/>
                                        </object>
-                                       <int key="connectionID">300163</int>
+                                       <int key="connectionID">300167</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">cancel:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="505388869"/>
+                                       </object>
+                                       <int key="connectionID">300169</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">explanationTextField</string>
+                                               <string key="label">window</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="675887072"/>
+                                               <reference key="destination" ref="224590347"/>
                                        </object>
-                                       <int key="connectionID">300164</int>
+                                       <int key="connectionID">300181</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">cancelButton</string>
+                                               <string key="label">identityArrayController</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="505388869"/>
+                                               <reference key="destination" ref="333357907"/>
                                        </object>
-                                       <int key="connectionID">300165</int>
+                                       <int key="connectionID">300184</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">enabled: canAdd</string>
+                                               <reference key="source" ref="949861041"/>
+                                               <reference key="destination" ref="333357907"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="949861041"/>
+                                                       <reference key="NSDestination" ref="333357907"/>
+                                                       <string key="NSLabel">enabled: canAdd</string>
+                                                       <string key="NSBinding">enabled</string>
+                                                       <string key="NSKeyPath">canAdd</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300210</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
                                                <string key="label">addIdentityButton</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="774532696"/>
+                                               <reference key="destination" ref="949861041"/>
+                                       </object>
+                                       <int key="connectionID">300214</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">content: arrangedObjects</string>
+                                               <reference key="source" ref="631507655"/>
+                                               <reference key="destination" ref="333357907"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="355877009">
+                                                       <reference key="NSSource" ref="631507655"/>
+                                                       <reference key="NSDestination" ref="333357907"/>
+                                                       <string key="NSLabel">content: arrangedObjects</string>
+                                                       <string key="NSBinding">content</string>
+                                                       <string key="NSKeyPath">arrangedObjects</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300229</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">selectionIndexes: selectionIndexes</string>
+                                               <reference key="source" ref="631507655"/>
+                                               <reference key="destination" ref="333357907"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="824847554">
+                                                       <reference key="NSSource" ref="631507655"/>
+                                                       <reference key="NSDestination" ref="333357907"/>
+                                                       <string key="NSLabel">selectionIndexes: selectionIndexes</string>
+                                                       <string key="NSBinding">selectionIndexes</string>
+                                                       <string key="NSKeyPath">selectionIndexes</string>
+                                                       <reference key="NSPreviousConnector" ref="355877009"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
                                        </object>
-                                       <int key="connectionID">300166</int>
+                                       <int key="connectionID">300230</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">selectIdentityButton</string>
-                                               <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="426244837"/>
+                                               <string key="label">formatter</string>
+                                               <reference key="source" ref="519561276"/>
+                                               <reference key="destination" ref="307777557"/>
                                        </object>
-                                       <int key="connectionID">300167</int>
+                                       <int key="connectionID">300242</int>
                                </object>
                                <object class="IBConnectionRecord">
-                                       <object class="IBActionConnection" key="connection">
-                                               <string key="label">select:</string>
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">formatter</string>
+                                               <reference key="source" ref="968276158"/>
+                                               <reference key="destination" ref="355705187"/>
+                                       </object>
+                                       <int key="connectionID">300245</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: arrangedObjects.principalString</string>
+                                               <reference key="source" ref="1025403577"/>
+                                               <reference key="destination" ref="333357907"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="1025403577"/>
+                                                       <reference key="NSDestination" ref="333357907"/>
+                                                       <string key="NSLabel">value: arrangedObjects.principalString</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">arrangedObjects.principalString</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSConditionallySetsEditable</string>
+                                                               <integer value="1" key="NS.object.0" id="9"/>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300246</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="224590347"/>
+                                               <reference key="destination" ref="262677138"/>
+                                       </object>
+                                       <int key="connectionID">300251</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">identityTableView</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="426244837"/>
+                                               <reference key="destination" ref="631507655"/>
                                        </object>
-                                       <int key="connectionID">300168</int>
+                                       <int key="connectionID">300252</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBActionConnection" key="connection">
                                                <string key="label">cancel:</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="505388869"/>
+                                               <reference key="destination" ref="968276158"/>
                                        </object>
-                                       <int key="connectionID">300169</int>
+                                       <int key="connectionID">300253</int>
                                </object>
                                <object class="IBConnectionRecord">
-                                       <object class="IBOutletConnection" key="connection">
-                                               <string key="label">identityTableView</string>
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: arrangedObjects.expirationDate</string>
+                                               <reference key="source" ref="917941739"/>
+                                               <reference key="destination" ref="333357907"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="917941739"/>
+                                                       <reference key="NSDestination" ref="333357907"/>
+                                                       <string key="NSLabel">value: arrangedObjects.expirationDate</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">arrangedObjects.expirationDate</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSConditionallySetsEditable</string>
+                                                               <reference key="NS.object.0" ref="9"/>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300255</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">sortDescriptors: sortDescriptors</string>
+                                               <reference key="source" ref="631507655"/>
+                                               <reference key="destination" ref="333357907"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="631507655"/>
+                                                       <reference key="NSDestination" ref="333357907"/>
+                                                       <string key="NSLabel">sortDescriptors: sortDescriptors</string>
+                                                       <string key="NSBinding">sortDescriptors</string>
+                                                       <string key="NSKeyPath">sortDescriptors</string>
+                                                       <reference key="NSPreviousConnector" ref="824847554"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300259</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">select:</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="988096643"/>
+                                               <reference key="destination" ref="426244837"/>
                                        </object>
-                                       <int key="connectionID">300172</int>
+                                       <int key="connectionID">300293</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
                                                <string key="label">delegate</string>
-                                               <reference key="source" ref="224590347"/>
-                                               <reference key="destination" ref="262677138"/>
+                                               <reference key="source" ref="54325332"/>
+                                               <reference key="destination" ref="552234083"/>
                                        </object>
-                                       <int key="connectionID">300174</int>
+                                       <int key="connectionID">300325</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">window</string>
-                                               <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="224590347"/>
+                                               <string key="label">delegate</string>
+                                               <reference key="source" ref="956800130"/>
+                                               <reference key="destination" ref="373804676"/>
                                        </object>
-                                       <int key="connectionID">300181</int>
+                                       <int key="connectionID">300328</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">enabled: selection.isRenewable</string>
+                                               <reference key="source" ref="373804676"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="373804676"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">enabled: selection.isRenewable</string>
+                                                       <string key="NSBinding">enabled</string>
+                                                       <string key="NSKeyPath">selection.isRenewable</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300356</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBOutletConnection" key="connection">
-                                               <string key="label">identityArrayController</string>
+                                               <string key="label">identityOptionsController</string>
                                                <reference key="source" ref="262677138"/>
-                                               <reference key="destination" ref="333357907"/>
+                                               <reference key="destination" ref="196152721"/>
                                        </object>
-                                       <int key="connectionID">300184</int>
+                                       <int key="connectionID">300357</int>
                                </object>
                                <object class="IBConnectionRecord">
                                        <object class="IBBindingConnection" key="connection">
-                                               <string key="label">content: arrangedObjects</string>
-                                               <reference key="source" ref="988096643"/>
+                                               <string key="label">value: selection.isRenewable</string>
+                                               <reference key="source" ref="606962746"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="606962746"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">value: selection.isRenewable</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.isRenewable</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300366</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: arrangedObjects.favorite</string>
+                                               <reference key="source" ref="850969979"/>
                                                <reference key="destination" ref="333357907"/>
-                                               <object class="NSNibBindingConnector" key="connector" id="355877009">
-                                                       <reference key="NSSource" ref="988096643"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="850969979"/>
                                                        <reference key="NSDestination" ref="333357907"/>
-                                                       <string key="NSLabel">content: arrangedObjects</string>
-                                                       <string key="NSBinding">content</string>
-                                                       <string key="NSKeyPath">arrangedObjects</string>
+                                                       <string key="NSLabel">value: arrangedObjects.favorite</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">arrangedObjects.favorite</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300367</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.isForwardable</string>
+                                               <reference key="source" ref="415869872"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="415869872"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">value: selection.isForwardable</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.isForwardable</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300368</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.isAddressless</string>
+                                               <reference key="source" ref="910622795"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="910622795"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">value: selection.isAddressless</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.isAddressless</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300369</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">maxValue: selection.maximumValidLifetime</string>
+                                               <reference key="source" ref="552234083"/>
+                                               <reference key="destination" ref="1031761104"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="716397596">
+                                                       <reference key="NSSource" ref="552234083"/>
+                                                       <reference key="NSDestination" ref="1031761104"/>
+                                                       <string key="NSLabel">maxValue: selection.maximumValidLifetime</string>
+                                                       <string key="NSBinding">maxValue</string>
+                                                       <string key="NSKeyPath">selection.maximumValidLifetime</string>
                                                        <int key="NSNibBindingConnectorVersion">2</int>
                                                </object>
                                        </object>
-                                       <int key="connectionID">300185</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBBindingConnection" key="connection">
-                                               <string key="label">value: arrangedObjects.principal</string>
-                                               <reference key="source" ref="697375404"/>
-                                               <reference key="destination" ref="333357907"/>
-                                               <object class="NSNibBindingConnector" key="connector">
-                                                       <reference key="NSSource" ref="697375404"/>
-                                                       <reference key="NSDestination" ref="333357907"/>
-                                                       <string key="NSLabel">value: arrangedObjects.principal</string>
-                                                       <string key="NSBinding">value</string>
-                                                       <string key="NSKeyPath">arrangedObjects.principal</string>
-                                                       <int key="NSNibBindingConnectorVersion">2</int>
-                                               </object>
+                                       <int key="connectionID">300372</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">minValue: selection.minimumValidLifetime</string>
+                                               <reference key="source" ref="552234083"/>
+                                               <reference key="destination" ref="1031761104"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="445222138">
+                                                       <reference key="NSSource" ref="552234083"/>
+                                                       <reference key="NSDestination" ref="1031761104"/>
+                                                       <string key="NSLabel">minValue: selection.minimumValidLifetime</string>
+                                                       <string key="NSBinding">minValue</string>
+                                                       <string key="NSKeyPath">selection.minimumValidLifetime</string>
+                                                       <reference key="NSPreviousConnector" ref="716397596"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300373</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.validLifetime</string>
+                                               <reference key="source" ref="552234083"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="552234083"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">value: selection.validLifetime</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.validLifetime</string>
+                                                       <reference key="NSPreviousConnector" ref="445222138"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300378</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">identitiesController</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="1031761104"/>
+                                       </object>
+                                       <int key="connectionID">300380</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">maxValue: selection.maximumRenewableLifetime</string>
+                                               <reference key="source" ref="373804676"/>
+                                               <reference key="destination" ref="1031761104"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="436583425">
+                                                       <reference key="NSSource" ref="373804676"/>
+                                                       <reference key="NSDestination" ref="1031761104"/>
+                                                       <string key="NSLabel">maxValue: selection.maximumRenewableLifetime</string>
+                                                       <string key="NSBinding">maxValue</string>
+                                                       <string key="NSKeyPath">selection.maximumRenewableLifetime</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300381</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">minValue: selection.minimumRenewableLifetime</string>
+                                               <reference key="source" ref="373804676"/>
+                                               <reference key="destination" ref="1031761104"/>
+                                               <object class="NSNibBindingConnector" key="connector" id="601981852">
+                                                       <reference key="NSSource" ref="373804676"/>
+                                                       <reference key="NSDestination" ref="1031761104"/>
+                                                       <string key="NSLabel">minValue: selection.minimumRenewableLifetime</string>
+                                                       <string key="NSBinding">minValue</string>
+                                                       <string key="NSKeyPath">selection.minimumRenewableLifetime</string>
+                                                       <reference key="NSPreviousConnector" ref="436583425"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300384</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.renewableLifetime</string>
+                                               <reference key="source" ref="373804676"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="373804676"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">value: selection.renewableLifetime</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.renewableLifetime</string>
+                                                       <reference key="NSPreviousConnector" ref="601981852"/>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300385</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.renewableLifetimeString</string>
+                                               <reference key="source" ref="956800130"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="956800130"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">value: selection.renewableLifetimeString</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.renewableLifetimeString</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300386</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.validLifetimeString</string>
+                                               <reference key="source" ref="54325332"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="54325332"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">value: selection.validLifetimeString</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.validLifetimeString</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300388</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">nameField</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="485004197"/>
+                                       </object>
+                                       <int key="connectionID">300396</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">realmField</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="623163777"/>
+                                       </object>
+                                       <int key="connectionID">300397</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.componentsString</string>
+                                               <reference key="source" ref="958176038"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="958176038"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">value: selection.componentsString</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.componentsString</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300404</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">value: selection.realmString</string>
+                                               <reference key="source" ref="546844125"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="546844125"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">value: selection.realmString</string>
+                                                       <string key="NSBinding">value</string>
+                                                       <string key="NSKeyPath">selection.realmString</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300411</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">hidden: selection.hasCCache</string>
+                                               <reference key="source" ref="623163777"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="623163777"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">hidden: selection.hasCCache</string>
+                                                       <string key="NSBinding">hidden</string>
+                                                       <string key="NSKeyPath">selection.hasCCache</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300419</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">hidden: selection.hasCCache</string>
+                                               <reference key="source" ref="546844125"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="546844125"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">hidden: selection.hasCCache</string>
+                                                       <string key="NSBinding">hidden</string>
+                                                       <string key="NSKeyPath">selection.hasCCache</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSValueTransformerName</string>
+                                                               <string key="NS.object.0">NSNegateBoolean</string>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300420</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">hidden: selection.hasCCache</string>
+                                               <reference key="source" ref="958176038"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="958176038"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">hidden: selection.hasCCache</string>
+                                                       <string key="NSBinding">hidden</string>
+                                                       <string key="NSKeyPath">selection.hasCCache</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSValueTransformerName</string>
+                                                               <string key="NS.object.0">NSNegateBoolean</string>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300421</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">hidden: selection.hasCCache</string>
+                                               <reference key="source" ref="485004197"/>
+                                               <reference key="destination" ref="196152721"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="485004197"/>
+                                                       <reference key="NSDestination" ref="196152721"/>
+                                                       <string key="NSLabel">hidden: selection.hasCCache</string>
+                                                       <string key="NSBinding">hidden</string>
+                                                       <string key="NSKeyPath">selection.hasCCache</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300422</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">hidden: selection.favorite</string>
+                                               <reference key="source" ref="136217401"/>
+                                               <reference key="destination" ref="333357907"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="136217401"/>
+                                                       <reference key="NSDestination" ref="333357907"/>
+                                                       <string key="NSLabel">hidden: selection.favorite</string>
+                                                       <string key="NSBinding">hidden</string>
+                                                       <string key="NSKeyPath">selection.favorite</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300438</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">hidden: selection.favorite</string>
+                                               <reference key="source" ref="778570067"/>
+                                               <reference key="destination" ref="333357907"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="778570067"/>
+                                                       <reference key="NSDestination" ref="333357907"/>
+                                                       <string key="NSLabel">hidden: selection.favorite</string>
+                                                       <string key="NSBinding">hidden</string>
+                                                       <string key="NSKeyPath">selection.favorite</string>
+                                                       <object class="NSDictionary" key="NSOptions">
+                                                               <string key="NS.key.0">NSValueTransformerName</string>
+                                                               <string key="NS.object.0">NSNegateBoolean</string>
+                                                       </object>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300440</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">addToFavorites:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="136217401"/>
+                                       </object>
+                                       <int key="connectionID">300441</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">removeFromFavorites:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="778570067"/>
+                                       </object>
+                                       <int key="connectionID">300442</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBBindingConnection" key="connection">
+                                               <string key="label">contentArray: selection.identities</string>
+                                               <reference key="source" ref="333357907"/>
+                                               <reference key="destination" ref="1031761104"/>
+                                               <object class="NSNibBindingConnector" key="connector">
+                                                       <reference key="NSSource" ref="333357907"/>
+                                                       <reference key="NSDestination" ref="1031761104"/>
+                                                       <string key="NSLabel">contentArray: selection.identities</string>
+                                                       <string key="NSBinding">contentArray</string>
+                                                       <string key="NSKeyPath">selection.identities</string>
+                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                               </object>
+                                       </object>
+                                       <int key="connectionID">300444</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">newIdentity:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="949861041"/>
+                                       </object>
+                                       <int key="connectionID">300450</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBOutletConnection" key="connection">
+                                               <string key="label">identityOptionsWindow</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="370461416"/>
+                                       </object>
+                                       <int key="connectionID">300451</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">editOptions:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="553755370"/>
+                                       </object>
+                                       <int key="connectionID">300452</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">cancelOptions:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="871834199"/>
+                                       </object>
+                                       <int key="connectionID">300453</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">resetOptions:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="669516699"/>
+                                       </object>
+                                       <int key="connectionID">300454</int>
+                               </object>
+                               <object class="IBConnectionRecord">
+                                       <object class="IBActionConnection" key="connection">
+                                               <string key="label">doneOptions:</string>
+                                               <reference key="source" ref="262677138"/>
+                                               <reference key="destination" ref="932240937"/>
+                                       </object>
+                                       <int key="connectionID">300455</int>
+                               </object>
+                       </object>
+                       <object class="IBMutableOrderedSet" key="objectRecords">
+                               <object class="NSArray" key="orderedObjects">
+                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">0</int>
+                                               <object class="NSArray" key="object" id="0">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                               </object>
+                                               <reference key="children" ref="1000842439"/>
+                                               <nil key="parent"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">-2</int>
+                                               <reference key="object" ref="262677138"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">-1</int>
+                                               <reference key="object" ref="553445653"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">First Responder</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">5</int>
+                                               <reference key="object" ref="224590347"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="928852707"/>
+                                               </object>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">Select a Kerberos Identity</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">6</int>
+                                               <reference key="object" ref="928852707"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="499468804"/>
+                                                       <reference ref="675887072"/>
+                                                       <reference ref="505388869"/>
+                                                       <reference ref="700535463"/>
+                                                       <reference ref="426244837"/>
+                                                       <reference ref="949861041"/>
+                                                       <reference ref="616284695"/>
+                                                       <reference ref="263312988"/>
+                                               </object>
+                                               <reference key="parent" ref="224590347"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">8</int>
+                                               <reference key="object" ref="499468804"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="82820472"/>
+                                               </object>
+                                               <reference key="parent" ref="928852707"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">15</int>
+                                               <reference key="object" ref="426244837"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="686991406"/>
+                                               </object>
+                                               <reference key="parent" ref="928852707"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">16</int>
+                                               <reference key="object" ref="505388869"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="720384657"/>
+                                               </object>
+                                               <reference key="parent" ref="928852707"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">100008</int>
+                                               <reference key="object" ref="82820472"/>
+                                               <reference key="parent" ref="499468804"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">100015</int>
+                                               <reference key="object" ref="686991406"/>
+                                               <reference key="parent" ref="426244837"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">100016</int>
+                                               <reference key="object" ref="720384657"/>
+                                               <reference key="parent" ref="505388869"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">-3</int>
+                                               <reference key="object" ref="714830734"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">Application</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300118</int>
+                                               <reference key="object" ref="675887072"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="542766611"/>
+                                               </object>
+                                               <reference key="parent" ref="928852707"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300119</int>
+                                               <reference key="object" ref="542766611"/>
+                                               <reference key="parent" ref="675887072"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300156</int>
+                                               <reference key="object" ref="700535463"/>
+                                               <reference key="parent" ref="928852707"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300183</int>
+                                               <reference key="object" ref="333357907"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">Identities Array Controller</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300196</int>
+                                               <reference key="object" ref="307777557"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">Time Formatter</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300206</int>
+                                               <reference key="object" ref="949861041"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="871232847"/>
+                                               </object>
+                                               <reference key="parent" ref="928852707"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300207</int>
+                                               <reference key="object" ref="871232847"/>
+                                               <reference key="parent" ref="949861041"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300216</int>
+                                               <reference key="object" ref="616284695"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="810829004"/>
+                                                       <reference ref="836592269"/>
+                                                       <reference ref="631507655"/>
+                                                       <reference ref="282626403"/>
+                                               </object>
+                                               <reference key="parent" ref="928852707"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300217</int>
+                                               <reference key="object" ref="810829004"/>
+                                               <reference key="parent" ref="616284695"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300218</int>
+                                               <reference key="object" ref="836592269"/>
+                                               <reference key="parent" ref="616284695"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300219</int>
+                                               <reference key="object" ref="631507655"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="1025403577"/>
+                                                       <reference ref="917941739"/>
+                                                       <reference ref="850969979"/>
+                                               </object>
+                                               <reference key="parent" ref="616284695"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300220</int>
+                                               <reference key="object" ref="282626403"/>
+                                               <reference key="parent" ref="616284695"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300221</int>
+                                               <reference key="object" ref="1025403577"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="475156882"/>
+                                               </object>
+                                               <reference key="parent" ref="631507655"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300222</int>
+                                               <reference key="object" ref="917941739"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="519561276"/>
+                                               </object>
+                                               <reference key="parent" ref="631507655"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300223</int>
+                                               <reference key="object" ref="519561276"/>
+                                               <reference key="parent" ref="917941739"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300224</int>
+                                               <reference key="object" ref="475156882"/>
+                                               <reference key="parent" ref="1025403577"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300225</int>
+                                               <reference key="object" ref="850969979"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="968276158"/>
+                                               </object>
+                                               <reference key="parent" ref="631507655"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300226</int>
+                                               <reference key="object" ref="968276158"/>
+                                               <reference key="parent" ref="850969979"/>
                                        </object>
-                                       <int key="connectionID">300187</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBActionConnection" key="connection">
-                                               <string key="label">remove:</string>
-                                               <reference key="source" ref="333357907"/>
-                                               <reference key="destination" ref="818868322"/>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300244</int>
+                                               <reference key="object" ref="355705187"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">Favorite Formatter</string>
                                        </object>
-                                       <int key="connectionID">300189</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBActionConnection" key="connection">
-                                               <string key="label">insert:</string>
-                                               <reference key="source" ref="333357907"/>
-                                               <reference key="destination" ref="774532696"/>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300294</int>
+                                               <reference key="object" ref="370461416"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="1019868804"/>
+                                               </object>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">Ticket Options Sheet</string>
                                        </object>
-                                       <int key="connectionID">300191</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBOutletConnection" key="connection">
-                                               <string key="label">formatter</string>
-                                               <reference key="source" ref="618557697"/>
-                                               <reference key="destination" ref="307777557"/>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300295</int>
+                                               <reference key="object" ref="1019868804"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="609534695"/>
+                                                       <reference ref="623163777"/>
+                                                       <reference ref="404880622"/>
+                                                       <reference ref="485004197"/>
+                                                       <reference ref="932240937"/>
+                                                       <reference ref="871834199"/>
+                                                       <reference ref="282101470"/>
+                                                       <reference ref="669516699"/>
+                                                       <reference ref="958176038"/>
+                                                       <reference ref="546844125"/>
+                                               </object>
+                                               <reference key="parent" ref="370461416"/>
                                        </object>
-                                       <int key="connectionID">300197</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBBindingConnection" key="connection">
-                                               <string key="label">value: arrangedObjects.expirationDate</string>
-                                               <reference key="source" ref="1004662124"/>
-                                               <reference key="destination" ref="333357907"/>
-                                               <object class="NSNibBindingConnector" key="connector">
-                                                       <reference key="NSSource" ref="1004662124"/>
-                                                       <reference key="NSDestination" ref="333357907"/>
-                                                       <string key="NSLabel">value: arrangedObjects.expirationDate</string>
-                                                       <string key="NSBinding">value</string>
-                                                       <string key="NSKeyPath">arrangedObjects.expirationDate</string>
-                                                       <object class="NSDictionary" key="NSOptions">
-                                                               <string key="NS.key.0">NSConditionallySetsEditable</string>
-                                                               <integer value="0" key="NS.object.0"/>
-                                                       </object>
-                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300296</int>
+                                               <reference key="object" ref="282101470"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="373804676"/>
+                                                       <reference ref="606962746"/>
+                                                       <reference ref="415869872"/>
+                                                       <reference ref="910622795"/>
+                                                       <reference ref="552234083"/>
+                                                       <reference ref="576071402"/>
+                                                       <reference ref="240805237"/>
+                                                       <reference ref="956800130"/>
+                                                       <reference ref="54325332"/>
                                                </object>
+                                               <reference key="parent" ref="1019868804"/>
                                        </object>
-                                       <int key="connectionID">300198</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBBindingConnection" key="connection">
-                                               <string key="label">selectionIndexes: selectionIndexes</string>
-                                               <reference key="source" ref="988096643"/>
-                                               <reference key="destination" ref="333357907"/>
-                                               <object class="NSNibBindingConnector" key="connector">
-                                                       <reference key="NSSource" ref="988096643"/>
-                                                       <reference key="NSDestination" ref="333357907"/>
-                                                       <string key="NSLabel">selectionIndexes: selectionIndexes</string>
-                                                       <string key="NSBinding">selectionIndexes</string>
-                                                       <string key="NSKeyPath">selectionIndexes</string>
-                                                       <reference key="NSPreviousConnector" ref="355877009"/>
-                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300298</int>
+                                               <reference key="object" ref="609534695"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="424319976"/>
                                                </object>
+                                               <reference key="parent" ref="1019868804"/>
                                        </object>
-                                       <int key="connectionID">300199</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBBindingConnection" key="connection">
-                                               <string key="label">enabled: canRemove</string>
-                                               <reference key="source" ref="818868322"/>
-                                               <reference key="destination" ref="333357907"/>
-                                               <object class="NSNibBindingConnector" key="connector">
-                                                       <reference key="NSSource" ref="818868322"/>
-                                                       <reference key="NSDestination" ref="333357907"/>
-                                                       <string key="NSLabel">enabled: canRemove</string>
-                                                       <string key="NSBinding">enabled</string>
-                                                       <string key="NSKeyPath">canRemove</string>
-                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300299</int>
+                                               <reference key="object" ref="623163777"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="327568348"/>
                                                </object>
+                                               <reference key="parent" ref="1019868804"/>
                                        </object>
-                                       <int key="connectionID">300200</int>
-                               </object>
-                               <object class="IBConnectionRecord">
-                                       <object class="IBBindingConnection" key="connection">
-                                               <string key="label">enabled: canInsert</string>
-                                               <reference key="source" ref="774532696"/>
-                                               <reference key="destination" ref="333357907"/>
-                                               <object class="NSNibBindingConnector" key="connector">
-                                                       <reference key="NSSource" ref="774532696"/>
-                                                       <reference key="NSDestination" ref="333357907"/>
-                                                       <string key="NSLabel">enabled: canInsert</string>
-                                                       <string key="NSBinding">enabled</string>
-                                                       <string key="NSKeyPath">canInsert</string>
-                                                       <int key="NSNibBindingConnectorVersion">2</int>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300300</int>
+                                               <reference key="object" ref="404880622"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="775341038"/>
                                                </object>
+                                               <reference key="parent" ref="1019868804"/>
                                        </object>
-                                       <int key="connectionID">300201</int>
-                               </object>
-                       </object>
-                       <object class="IBMutableOrderedSet" key="objectRecords">
-                               <object class="NSArray" key="orderedObjects">
-                                       <bool key="EncodedWithXMLCoder">YES</bool>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">0</int>
-                                               <object class="NSArray" key="object" id="0">
+                                               <int key="objectID">300301</int>
+                                               <reference key="object" ref="485004197"/>
+                                               <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="1047482753"/>
                                                </object>
-                                               <reference key="children" ref="1000842439"/>
-                                               <nil key="parent"/>
+                                               <reference key="parent" ref="1019868804"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">-2</int>
-                                               <reference key="object" ref="262677138"/>
-                                               <reference key="parent" ref="0"/>
-                                               <string type="base64-UTF8" key="objectName">RmlsZSdzIE93bmVyA</string>
+                                               <int key="objectID">300302</int>
+                                               <reference key="object" ref="1047482753"/>
+                                               <reference key="parent" ref="485004197"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">-1</int>
-                                               <reference key="object" ref="553445653"/>
-                                               <reference key="parent" ref="0"/>
-                                               <string key="objectName">First Responder</string>
+                                               <int key="objectID">300303</int>
+                                               <reference key="object" ref="775341038"/>
+                                               <reference key="parent" ref="404880622"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">5</int>
-                                               <reference key="object" ref="224590347"/>
+                                               <int key="objectID">300304</int>
+                                               <reference key="object" ref="327568348"/>
+                                               <reference key="parent" ref="623163777"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300305</int>
+                                               <reference key="object" ref="424319976"/>
+                                               <reference key="parent" ref="609534695"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300307</int>
+                                               <reference key="object" ref="373804676"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="928852707"/>
+                                                       <reference ref="84127609"/>
                                                </object>
-                                               <reference key="parent" ref="0"/>
-                                               <string key="objectName">Select a Kerberos Identity</string>
+                                               <reference key="parent" ref="282101470"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">6</int>
-                                               <reference key="object" ref="928852707"/>
+                                               <int key="objectID">300308</int>
+                                               <reference key="object" ref="956800130"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="499468804"/>
-                                                       <reference ref="818868322"/>
-                                                       <reference ref="774532696"/>
-                                                       <reference ref="675887072"/>
-                                                       <reference ref="505388869"/>
-                                                       <reference ref="700535463"/>
-                                                       <reference ref="426244837"/>
-                                                       <reference ref="147207906"/>
+                                                       <reference ref="596249502"/>
                                                </object>
-                                               <reference key="parent" ref="224590347"/>
+                                               <reference key="parent" ref="282101470"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">8</int>
-                                               <reference key="object" ref="499468804"/>
+                                               <int key="objectID">300309</int>
+                                               <reference key="object" ref="606962746"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="82820472"/>
+                                                       <reference ref="583273626"/>
                                                </object>
-                                               <reference key="parent" ref="928852707"/>
+                                               <reference key="parent" ref="282101470"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">9</int>
-                                               <reference key="object" ref="147207906"/>
+                                               <int key="objectID">300310</int>
+                                               <reference key="object" ref="415869872"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="988096643"/>
-                                                       <reference ref="80966883"/>
-                                                       <reference ref="564144656"/>
-                                                       <reference ref="401017936"/>
+                                                       <reference ref="77611886"/>
                                                </object>
-                                               <reference key="parent" ref="928852707"/>
+                                               <reference key="parent" ref="282101470"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">10</int>
-                                               <reference key="object" ref="988096643"/>
+                                               <int key="objectID">300311</int>
+                                               <reference key="object" ref="910622795"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="697375404"/>
-                                                       <reference ref="1004662124"/>
+                                                       <reference ref="878349972"/>
                                                </object>
-                                               <reference key="parent" ref="147207906"/>
+                                               <reference key="parent" ref="282101470"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">11</int>
-                                               <reference key="object" ref="697375404"/>
+                                               <int key="objectID">300312</int>
+                                               <reference key="object" ref="54325332"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="325541546"/>
+                                                       <reference ref="584202005"/>
                                                </object>
-                                               <reference key="parent" ref="988096643"/>
+                                               <reference key="parent" ref="282101470"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">18</int>
-                                               <reference key="object" ref="1004662124"/>
+                                               <int key="objectID">300313</int>
+                                               <reference key="object" ref="552234083"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="618557697"/>
+                                                       <reference ref="629844970"/>
                                                </object>
-                                               <reference key="parent" ref="988096643"/>
+                                               <reference key="parent" ref="282101470"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">15</int>
-                                               <reference key="object" ref="426244837"/>
+                                               <int key="objectID">300314</int>
+                                               <reference key="object" ref="576071402"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="686991406"/>
+                                                       <reference ref="380679549"/>
                                                </object>
-                                               <reference key="parent" ref="928852707"/>
+                                               <reference key="parent" ref="282101470"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">16</int>
-                                               <reference key="object" ref="505388869"/>
+                                               <int key="objectID">300315</int>
+                                               <reference key="object" ref="240805237"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="720384657"/>
+                                                       <reference ref="638526338"/>
                                                </object>
-                                               <reference key="parent" ref="928852707"/>
+                                               <reference key="parent" ref="282101470"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">100008</int>
-                                               <reference key="object" ref="82820472"/>
-                                               <reference key="parent" ref="499468804"/>
+                                               <int key="objectID">300316</int>
+                                               <reference key="object" ref="638526338"/>
+                                               <reference key="parent" ref="240805237"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">100015</int>
-                                               <reference key="object" ref="686991406"/>
-                                               <reference key="parent" ref="426244837"/>
+                                               <int key="objectID">300317</int>
+                                               <reference key="object" ref="380679549"/>
+                                               <reference key="parent" ref="576071402"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">100016</int>
-                                               <reference key="object" ref="720384657"/>
-                                               <reference key="parent" ref="505388869"/>
+                                               <int key="objectID">300318</int>
+                                               <reference key="object" ref="629844970"/>
+                                               <reference key="parent" ref="552234083"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">100009</int>
-                                               <reference key="object" ref="80966883"/>
-                                               <reference key="parent" ref="147207906"/>
+                                               <int key="objectID">300319</int>
+                                               <reference key="object" ref="584202005"/>
+                                               <reference key="parent" ref="54325332"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">200009</int>
-                                               <reference key="object" ref="564144656"/>
-                                               <reference key="parent" ref="147207906"/>
+                                               <int key="objectID">300320</int>
+                                               <reference key="object" ref="878349972"/>
+                                               <reference key="parent" ref="910622795"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300009</int>
-                                               <reference key="object" ref="401017936"/>
-                                               <reference key="parent" ref="147207906"/>
+                                               <int key="objectID">300321</int>
+                                               <reference key="object" ref="77611886"/>
+                                               <reference key="parent" ref="415869872"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">-3</int>
-                                               <reference key="object" ref="714830734"/>
+                                               <int key="objectID">300322</int>
+                                               <reference key="object" ref="583273626"/>
+                                               <reference key="parent" ref="606962746"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300323</int>
+                                               <reference key="object" ref="596249502"/>
+                                               <reference key="parent" ref="956800130"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300324</int>
+                                               <reference key="object" ref="84127609"/>
+                                               <reference key="parent" ref="373804676"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300329</int>
+                                               <reference key="object" ref="932240937"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="870649207"/>
+                                               </object>
+                                               <reference key="parent" ref="1019868804"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300330</int>
+                                               <reference key="object" ref="870649207"/>
+                                               <reference key="parent" ref="932240937"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300331</int>
+                                               <reference key="object" ref="196152721"/>
                                                <reference key="parent" ref="0"/>
-                                               <string key="objectName">Application</string>
+                                               <string key="objectName">Identity Options Controller</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300334</int>
+                                               <reference key="object" ref="871834199"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="754483226"/>
+                                               </object>
+                                               <reference key="parent" ref="1019868804"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300018</int>
-                                               <reference key="object" ref="325541546"/>
-                                               <reference key="parent" ref="697375404"/>
+                                               <int key="objectID">300335</int>
+                                               <reference key="object" ref="754483226"/>
+                                               <reference key="parent" ref="871834199"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300019</int>
-                                               <reference key="object" ref="618557697"/>
+                                               <int key="objectID">300358</int>
+                                               <reference key="object" ref="669516699"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="362266618"/>
                                                </object>
-                                               <reference key="parent" ref="1004662124"/>
+                                               <reference key="parent" ref="1019868804"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300118</int>
-                                               <reference key="object" ref="675887072"/>
+                                               <int key="objectID">300359</int>
+                                               <reference key="object" ref="362266618"/>
+                                               <reference key="parent" ref="669516699"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300370</int>
+                                               <reference key="object" ref="1031761104"/>
+                                               <reference key="parent" ref="0"/>
+                                               <string key="objectName">Identities Controller</string>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300402</int>
+                                               <reference key="object" ref="958176038"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="542766611"/>
+                                                       <reference ref="196100637"/>
                                                </object>
-                                               <reference key="parent" ref="928852707"/>
+                                               <reference key="parent" ref="1019868804"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300119</int>
-                                               <reference key="object" ref="542766611"/>
-                                               <reference key="parent" ref="675887072"/>
+                                               <int key="objectID">300403</int>
+                                               <reference key="object" ref="196100637"/>
+                                               <reference key="parent" ref="958176038"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300152</int>
-                                               <reference key="object" ref="774532696"/>
+                                               <int key="objectID">300407</int>
+                                               <reference key="object" ref="546844125"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="958553500"/>
+                                                       <reference ref="725579124"/>
                                                </object>
-                                               <reference key="parent" ref="928852707"/>
+                                               <reference key="parent" ref="1019868804"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300153</int>
-                                               <reference key="object" ref="958553500"/>
-                                               <reference key="parent" ref="774532696"/>
+                                               <int key="objectID">300408</int>
+                                               <reference key="object" ref="725579124"/>
+                                               <reference key="parent" ref="546844125"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300154</int>
-                                               <reference key="object" ref="818868322"/>
+                                               <int key="objectID">300426</int>
+                                               <reference key="object" ref="263312988"/>
                                                <object class="NSMutableArray" key="children">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <reference ref="872529405"/>
+                                                       <reference ref="659813048"/>
                                                </object>
                                                <reference key="parent" ref="928852707"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300155</int>
-                                               <reference key="object" ref="872529405"/>
-                                               <reference key="parent" ref="818868322"/>
+                                               <int key="objectID">300427</int>
+                                               <reference key="object" ref="659813048"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="600123164"/>
+                                               </object>
+                                               <reference key="parent" ref="263312988"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300156</int>
-                                               <reference key="object" ref="700535463"/>
-                                               <reference key="parent" ref="928852707"/>
+                                               <int key="objectID">300428</int>
+                                               <reference key="object" ref="600123164"/>
+                                               <object class="NSMutableArray" key="children">
+                                                       <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <reference ref="354283131"/>
+                                                       <reference ref="136217401"/>
+                                                       <reference ref="553755370"/>
+                                                       <reference ref="778570067"/>
+                                               </object>
+                                               <reference key="parent" ref="659813048"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300183</int>
-                                               <reference key="object" ref="333357907"/>
-                                               <reference key="parent" ref="0"/>
-                                               <string key="objectName">Identity Array Controller</string>
+                                               <int key="objectID">300429</int>
+                                               <reference key="object" ref="354283131"/>
+                                               <reference key="parent" ref="600123164"/>
                                        </object>
                                        <object class="IBObjectRecord">
-                                               <int key="objectID">300196</int>
-                                               <reference key="object" ref="307777557"/>
-                                               <reference key="parent" ref="0"/>
+                                               <int key="objectID">300430</int>
+                                               <reference key="object" ref="136217401"/>
+                                               <reference key="parent" ref="600123164"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300431</int>
+                                               <reference key="object" ref="553755370"/>
+                                               <reference key="parent" ref="600123164"/>
+                                       </object>
+                                       <object class="IBObjectRecord">
+                                               <int key="objectID">300432</int>
+                                               <reference key="object" ref="778570067"/>
+                                               <reference key="parent" ref="600123164"/>
                                        </object>
                                </object>
                        </object>
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        <string>-1.IBPluginDependency</string>
                                        <string>-2.IBPluginDependency</string>
-                                       <string>10.IBPluginDependency</string>
-                                       <string>10.ImportedFromIB2</string>
-                                       <string>100009.IBShouldRemoveOnLegacySave</string>
-                                       <string>11.IBPluginDependency</string>
-                                       <string>11.ImportedFromIB2</string>
                                        <string>15.IBPluginDependency</string>
                                        <string>15.ImportedFromIB2</string>
                                        <string>16.IBPluginDependency</string>
                                        <string>16.ImportedFromIB2</string>
-                                       <string>18.IBPluginDependency</string>
-                                       <string>18.ImportedFromIB2</string>
-                                       <string>200009.IBShouldRemoveOnLegacySave</string>
-                                       <string>300009.IBShouldRemoveOnLegacySave</string>
-                                       <string>300018.IBPluginDependency</string>
-                                       <string>300019.IBPluginDependency</string>
                                        <string>300118.IBPluginDependency</string>
                                        <string>300118.ImportedFromIB2</string>
-                                       <string>300152.IBPluginDependency</string>
-                                       <string>300153.IBPluginDependency</string>
-                                       <string>300154.IBPluginDependency</string>
-                                       <string>300155.IBPluginDependency</string>
                                        <string>300156.IBPluginDependency</string>
                                        <string>300183.IBPluginDependency</string>
                                        <string>300196.IBPluginDependency</string>
+                                       <string>300206.IBPluginDependency</string>
+                                       <string>300207.IBPluginDependency</string>
+                                       <string>300216.IBPluginDependency</string>
+                                       <string>300217.IBPluginDependency</string>
+                                       <string>300218.IBPluginDependency</string>
+                                       <string>300219.IBPluginDependency</string>
+                                       <string>300220.IBPluginDependency</string>
+                                       <string>300220.IBViewIntegration.shadowBlurRadius</string>
+                                       <string>300220.IBViewIntegration.shadowColor</string>
+                                       <string>300220.IBViewIntegration.shadowOffsetHeight</string>
+                                       <string>300220.IBViewIntegration.shadowOffsetWidth</string>
+                                       <string>300221.IBPluginDependency</string>
+                                       <string>300222.IBPluginDependency</string>
+                                       <string>300223.IBPluginDependency</string>
+                                       <string>300224.IBPluginDependency</string>
+                                       <string>300244.IBPluginDependency</string>
+                                       <string>300294.IBEditorWindowLastContentRect</string>
+                                       <string>300294.IBPluginDependency</string>
+                                       <string>300294.IBWindowTemplateEditedContentRect</string>
+                                       <string>300294.NSWindowTemplate.visibleAtLaunch</string>
+                                       <string>300294.windowTemplate.hasMaxSize</string>
+                                       <string>300294.windowTemplate.maxSize</string>
+                                       <string>300295.IBPluginDependency</string>
+                                       <string>300296.IBPluginDependency</string>
+                                       <string>300296.ImportedFromIB2</string>
+                                       <string>300298.IBPluginDependency</string>
+                                       <string>300299.IBPluginDependency</string>
+                                       <string>300300.IBPluginDependency</string>
+                                       <string>300301.IBPluginDependency</string>
+                                       <string>300302.IBPluginDependency</string>
+                                       <string>300303.IBPluginDependency</string>
+                                       <string>300304.IBPluginDependency</string>
+                                       <string>300305.IBPluginDependency</string>
+                                       <string>300307.IBPluginDependency</string>
+                                       <string>300307.ImportedFromIB2</string>
+                                       <string>300308.IBPluginDependency</string>
+                                       <string>300308.ImportedFromIB2</string>
+                                       <string>300309.IBPluginDependency</string>
+                                       <string>300309.ImportedFromIB2</string>
+                                       <string>300310.IBPluginDependency</string>
+                                       <string>300310.ImportedFromIB2</string>
+                                       <string>300311.IBPluginDependency</string>
+                                       <string>300311.ImportedFromIB2</string>
+                                       <string>300312.IBPluginDependency</string>
+                                       <string>300312.ImportedFromIB2</string>
+                                       <string>300313.IBPluginDependency</string>
+                                       <string>300313.ImportedFromIB2</string>
+                                       <string>300314.IBPluginDependency</string>
+                                       <string>300314.ImportedFromIB2</string>
+                                       <string>300315.IBPluginDependency</string>
+                                       <string>300315.ImportedFromIB2</string>
+                                       <string>300329.IBPluginDependency</string>
+                                       <string>300330.IBPluginDependency</string>
+                                       <string>300331.IBPluginDependency</string>
+                                       <string>300334.IBPluginDependency</string>
+                                       <string>300335.IBPluginDependency</string>
+                                       <string>300358.IBPluginDependency</string>
+                                       <string>300359.IBPluginDependency</string>
+                                       <string>300370.IBPluginDependency</string>
+                                       <string>300402.IBPluginDependency</string>
+                                       <string>300403.IBPluginDependency</string>
+                                       <string>300407.IBPluginDependency</string>
+                                       <string>300408.IBPluginDependency</string>
+                                       <string>300426.IBPluginDependency</string>
+                                       <string>300427.IBPluginDependency</string>
+                                       <string>300428.IBEditorWindowLastContentRect</string>
+                                       <string>300428.IBPluginDependency</string>
+                                       <string>300429.IBPluginDependency</string>
+                                       <string>300430.IBPluginDependency</string>
+                                       <string>300431.IBPluginDependency</string>
+                                       <string>300432.IBPluginDependency</string>
                                        <string>5.IBEditorWindowLastContentRect</string>
                                        <string>5.IBPluginDependency</string>
                                        <string>5.IBWindowTemplateEditedContentRect</string>
                                        <string>6.ImportedFromIB2</string>
                                        <string>8.IBPluginDependency</string>
                                        <string>8.ImportedFromIB2</string>
-                                       <string>9.IBPluginDependency</string>
-                                       <string>9.ImportedFromIB2</string>
                                </object>
                                <object class="NSMutableArray" key="dict.values">
                                        <bool key="EncodedWithXMLCoder">YES</bool>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <integer value="1" id="5"/>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <real value="0.000000e+00" id="75542549"/>
+                                       <reference ref="18538584"/>
+                                       <reference ref="75542549"/>
+                                       <reference ref="75542549"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>{{360, 291}, {427, 378}}</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>{{360, 291}, {427, 378}}</string>
+                                       <integer value="0"/>
+                                       <reference ref="75542549"/>
+                                       <string>{10000, 354}</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
-                                       <reference ref="5"/>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{606, 541}, {491, 315}}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <string>{{606, 541}, {491, 315}}</string>
-                                       <reference ref="5"/>
-                                       <reference ref="5"/>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>{{535, 102}, {198, 83}}</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>{{499, 142}, {491, 316}}</string>
+                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
+                                       <string>{{499, 142}, {491, 316}}</string>
+                                       <reference ref="9"/>
+                                       <reference ref="9"/>
                                        <string>{{503, 256}, {419, 465}}</string>
-                                       <reference ref="5"/>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
+                                       <reference ref="9"/>
                                        <string>{600, 600}</string>
                                        <string>{419, 298}</string>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                        <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
-                                       <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
-                                       <reference ref="5"/>
+                                       <reference ref="9"/>
                                </object>
                        </object>
                        <object class="NSMutableDictionary" key="unlocalizedProperties">
                                </object>
                        </object>
                        <nil key="sourceID"/>
-                       <int key="maxID">300201</int>
+                       <int key="maxID">300455</int>
                </object>
                <object class="IBClassDescriber" key="IBDocument.Classes">
                        <object class="NSMutableArray" key="referencedPartialClassDescriptions">
                                        </object>
                                </object>
                                <object class="IBPartialClassDescription">
-                                       <string key="className">KerberosTimeFormatter</string>
+                                       <string key="className">KerberosFavoriteFormatter</string>
                                        <string key="superclassName">NSFormatter</string>
-                                       <object class="IBClassDescriptionSource" key="sourceIdentifier">
+                                       <object class="IBClassDescriptionSource" key="sourceIdentifier" id="136421570">
                                                <string key="majorKey">IBProjectSource</string>
                                                <string key="minorKey">../Sources/kim/agent/mac/KerberosFormatters.h</string>
                                        </object>
                                </object>
+                               <object class="IBPartialClassDescription">
+                                       <string key="className">KerberosTimeFormatter</string>
+                                       <string key="superclassName">NSFormatter</string>
+                                       <reference key="sourceIdentifier" ref="136421570"/>
+                               </object>
                                <object class="IBPartialClassDescription">
                                        <string key="className">SelectIdentityController</string>
                                        <string key="superclassName">NSWindowController</string>
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                <object class="NSMutableArray" key="dict.sortedKeys">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
-                                                       <string>add:</string>
+                                                       <string>addToFavorites:</string>
                                                        <string>cancel:</string>
-                                                       <string>remove:</string>
+                                                       <string>cancelOptions:</string>
+                                                       <string>doneOptions:</string>
+                                                       <string>editOptions:</string>
+                                                       <string>newIdentity:</string>
+                                                       <string>removeFromFavorites:</string>
+                                                       <string>resetOptions:</string>
                                                        <string>select:</string>
                                                </object>
                                                <object class="NSMutableArray" key="dict.values">
                                                        <string>id</string>
                                                        <string>id</string>
                                                        <string>id</string>
+                                                       <string>id</string>
+                                                       <string>id</string>
+                                                       <string>id</string>
+                                                       <string>id</string>
+                                                       <string>id</string>
                                                </object>
                                        </object>
                                        <object class="NSMutableDictionary" key="outlets">
                                                <bool key="EncodedWithXMLCoder">YES</bool>
                                                <object class="NSMutableArray" key="dict.sortedKeys">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <string>actionPopupButton</string>
                                                        <string>addIdentityButton</string>
                                                        <string>cancelButton</string>
                                                        <string>explanationTextField</string>
                                                        <string>headerTextField</string>
+                                                       <string>identitiesController</string>
                                                        <string>identityArrayController</string>
+                                                       <string>identityOptionsController</string>
+                                                       <string>identityOptionsWindow</string>
                                                        <string>identityTableColumn</string>
                                                        <string>identityTableView</string>
                                                        <string>kerberosIconImageView</string>
-                                                       <string>removeIdentityButton</string>
+                                                       <string>nameField</string>
+                                                       <string>realmField</string>
                                                        <string>selectIdentityButton</string>
-                                                       <string>timeRemainingTableColumn</string>
                                                </object>
                                                <object class="NSMutableArray" key="dict.values">
                                                        <bool key="EncodedWithXMLCoder">YES</bool>
+                                                       <string>NSPopUpButton</string>
                                                        <string>NSButton</string>
                                                        <string>NSButton</string>
                                                        <string>NSTextField</string>
                                                        <string>NSTextField</string>
+                                                       <string>NSObjectController</string>
                                                        <string>NSArrayController</string>
+                                                       <string>NSObjectController</string>
+                                                       <string>NSWindow</string>
                                                        <string>NSTableColumn</string>
                                                        <string>NSTableView</string>
                                                        <string>BadgedImageView</string>
+                                                       <string>NSTextField</string>
+                                                       <string>NSTextField</string>
                                                        <string>NSButton</string>
-                                                       <string>NSButton</string>
-                                                       <string>NSTableColumn</string>
                                                </object>
                                        </object>
                                        <object class="IBClassDescriptionSource" key="sourceIdentifier">
diff --git a/src/kim/agent/mac/resources/KerberosFormatters.strings b/src/kim/agent/mac/resources/KerberosFormatters.strings
new file mode 100644 (file)
index 0000000..707ba53
Binary files /dev/null and b/src/kim/agent/mac/resources/KerberosFormatters.strings differ