├── .gitignore ├── Hooks ├── Hooks.xmi ├── Makefile └── SpireHooks.plist ├── Injector ├── Injector.xmi ├── Makefile └── SpireInjector.plist ├── Installer ├── Installer.m ├── Makefile ├── Remover.m ├── filelist.py ├── layout │ └── var │ │ └── spire │ │ ├── dirs.txt │ │ └── files.txt ├── partial.c └── partial.h ├── Makefile ├── Preferences ├── Makefile ├── Preferences.mm ├── Resources │ ├── Info.plist │ ├── SpirePreferences.plist │ ├── SpirePreferences.png │ ├── SpirePreferences@2x.png │ ├── SpirePreferences@2x~ipad.png │ └── SpirePreferences~ipad.png ├── Spire-legacy.psd ├── Spire.plist └── Spire.psd ├── README ├── SPLogging.h ├── SPPreferences.h ├── TODO └── layout ├── DEBIAN ├── control ├── extrainst_ └── prerm └── System └── Library └── Extensions └── IMGSGX535GLDriver.bundle └── IMGSGX535GLDriver /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | obj 4 | *.deb 5 | _ 6 | 7 | theos 8 | .theos 9 | -------------------------------------------------------------------------------- /Hooks/Hooks.xmi: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #import "SPPreferences.h" 4 | 5 | static BOOL shouldOverrideUnavailableText = NO; 6 | 7 | %hook AFConnection 8 | 9 | + (BOOL)isAvailable { 10 | SPPreferences *preferences = SPLoadPreferences(); 11 | 12 | if (!SPPreferencesHasProxyURL(preferences)) { 13 | return NO; 14 | } else { 15 | return %orig; 16 | } 17 | } 18 | 19 | %end 20 | 21 | %hook SBAssistantUnavailableView 22 | 23 | - (id)initWithFrame:(CGRect)frame { 24 | SPPreferences *preferences = SPLoadPreferences(); 25 | 26 | if (!SPPreferencesHasProxyURL(preferences)) { 27 | shouldOverrideUnavailableText = YES; 28 | self = %orig; 29 | shouldOverrideUnavailableText = NO; 30 | } else { 31 | self = %orig; 32 | } 33 | 34 | return self; 35 | } 36 | 37 | %end 38 | 39 | %hook NSBundle 40 | 41 | - (NSString *)localizedStringForKey:(NSString *)key value:(NSString *)value table:(NSString *)tableName { 42 | if (shouldOverrideUnavailableText) { 43 | if ([key isEqual:@"ASSISTANT_NOT_AVAILABLE_TITLE"]) return @"Spire Not Configured"; 44 | if ([key isEqual:@"ASSISTANT_NOT_AVAILABLE_SUBTITLE"]) return @"Open Settings to configure proxy server."; 45 | } 46 | 47 | return %orig; 48 | } 49 | 50 | %end 51 | 52 | 53 | -------------------------------------------------------------------------------- /Hooks/Makefile: -------------------------------------------------------------------------------- 1 | 2 | include theos/makefiles/common.mk 3 | 4 | TWEAK_NAME = SpireHooks 5 | SpireHooks_FILES = Hooks.xmi 6 | SpireHooks_OBJCFLAGS = -I$(THEOS_PROJECT_DIR) -F$(THEOS_PROJECT_DIR) 7 | 8 | include $(THEOS_MAKE_PATH)/tweak.mk 9 | 10 | -------------------------------------------------------------------------------- /Hooks/SpireHooks.plist: -------------------------------------------------------------------------------- 1 | { Filter = { Bundles = ( "com.apple.springboard" ); }; } 2 | -------------------------------------------------------------------------------- /Injector/Injector.xmi: -------------------------------------------------------------------------------- 1 | 2 | #import "SPPreferences.h" 3 | 4 | %hook ADAccount 5 | 6 | - (NSString *)hostname { 7 | SPPreferences *preferences = SPLoadPreferences(); 8 | 9 | // Only use the proxy URL if one is set. 10 | if (SPPreferencesHasProxyURL(preferences)) { 11 | return SPPreferencesGetProxyURL(preferences); 12 | } else { 13 | return %orig; 14 | } 15 | } 16 | 17 | %end 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /Injector/Makefile: -------------------------------------------------------------------------------- 1 | 2 | include theos/makefiles/common.mk 3 | 4 | TWEAK_NAME = SpireInjector 5 | SpireInjector_FILES = Injector.xmi 6 | SpireInjector_OBJCFLAGS = -I$(THEOS_PROJECT_DIR) -F$(THEOS_PROJECT_DIR) 7 | 8 | include $(THEOS_MAKE_PATH)/tweak.mk 9 | 10 | -------------------------------------------------------------------------------- /Injector/SpireInjector.plist: -------------------------------------------------------------------------------- 1 | { Filter = { Executables = ( "assistantd" ); }; } 2 | -------------------------------------------------------------------------------- /Installer/Installer.m: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "partial.h" 11 | #import "SPLogging.h" 12 | 13 | #define kSPUpdateZIPURL @"http://appldnld.apple.com/iPhone4/041-3249.20111103.Qswe3/com_apple_MobileAsset_SoftwareUpdate/554f7813ac09d45256faad560b566814c983bd4b.zip" 14 | #define kSPUpdateZIPRootPath @"AssetData/payload/replace/" 15 | #define kSPWorkingDirectory @"/tmp/spire/" 16 | 17 | 18 | void SavePropertyList(CFPropertyListRef plist, char *path, CFURLRef url, CFPropertyListFormat format) { 19 | if (path[0] != '\0') 20 | url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (uint8_t *) path, strlen(path), false); 21 | CFWriteStreamRef stream = CFWriteStreamCreateWithFile(kCFAllocatorDefault, url); 22 | CFWriteStreamOpen(stream); 23 | CFPropertyListWriteToStream(plist, stream, format, NULL); 24 | CFWriteStreamClose(stream); 25 | } 26 | 27 | 28 | @interface SPSiriInstaller : NSObject { 29 | 30 | } 31 | 32 | @end 33 | 34 | 35 | @implementation SPSiriInstaller 36 | 37 | - (NSArray *)directories { 38 | static NSArray *cached = nil; 39 | 40 | if (cached == nil) { 41 | NSMutableArray *valid = [NSMutableArray array]; 42 | NSArray *files = [[NSString stringWithContentsOfFile:@"/var/spire/dirs.txt" encoding:NSUTF8StringEncoding error:NULL] componentsSeparatedByString:@"\n"]; 43 | 44 | for (NSString *file in files) { 45 | if ([[file stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0) { 46 | [valid addObject:file]; 47 | } 48 | } 49 | 50 | // FIXME: this is a memory leak 51 | cached = [valid copy]; 52 | } 53 | 54 | return cached; 55 | } 56 | 57 | - (NSArray *)files { 58 | static NSArray *cached = nil; 59 | 60 | if (cached == nil) { 61 | NSMutableArray *valid = [NSMutableArray array]; 62 | NSArray *files = [[NSString stringWithContentsOfFile:@"/var/spire/files.txt" encoding:NSUTF8StringEncoding error:NULL] componentsSeparatedByString:@"\n"]; 63 | 64 | for (NSString *file in files) { 65 | if ([[file stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0) { 66 | [valid addObject:file]; 67 | } 68 | } 69 | 70 | // FIXME: this is a memory leak 71 | cached = [valid copy]; 72 | } 73 | 74 | return cached; 75 | } 76 | 77 | typedef struct { 78 | CDFile *lastFile; 79 | FILE *fd; 80 | size_t charactersToSkip; 81 | } downloadCurrentFileData; 82 | 83 | size_t downloadFileCallback(ZipInfo* info, CDFile* file, unsigned char *buffer, size_t size, void *userInfo) 84 | { 85 | downloadCurrentFileData *fileData = userInfo; 86 | if (fileData->lastFile != file) { 87 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 88 | if (fileData->lastFile) 89 | fclose(fileData->fd); 90 | fileData->lastFile = file; 91 | if (file) { 92 | unsigned char *zipFileName = PartialZipCopyFileName(info, file); 93 | NSString *diskFileName = [kSPWorkingDirectory stringByAppendingFormat:@"%s", zipFileName + fileData->charactersToSkip]; 94 | free(zipFileName); 95 | 96 | [[NSFileManager defaultManager] createDirectoryAtPath:[diskFileName stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:NULL]; 97 | fileData->fd = fopen([diskFileName UTF8String], "wb"); 98 | } 99 | [pool drain]; 100 | } 101 | return fwrite(buffer, size, 1, fileData->fd) ? size : 0; 102 | } 103 | 104 | - (ZipInfo *)openZipFile { 105 | ZipInfo *info = PartialZipInit([kSPUpdateZIPURL UTF8String]); 106 | return info; 107 | } 108 | 109 | - (BOOL)downloadFilesFromZip:(ZipInfo *)info { 110 | BOOL success = YES; 111 | 112 | NSArray *files = [self files]; 113 | 114 | NSInteger count = [files count]; 115 | CDFile *fileReferences[count]; 116 | int i = 0; 117 | for (NSString *path in files) { 118 | NSString *zipPath = [kSPUpdateZIPRootPath stringByAppendingString:path]; 119 | CDFile *file = PartialZipFindFile(info, [zipPath UTF8String]); 120 | if (file == NULL) { 121 | SPLog(@"Unable to find file %@", path); 122 | return NO; 123 | } 124 | fileReferences[i++] = file; 125 | } 126 | 127 | downloadCurrentFileData data = { NULL, NULL, 26 }; 128 | PartialZipGetFiles(info, fileReferences, count, downloadFileCallback, &data); 129 | downloadFileCallback(info, NULL, NULL, 0, &data); 130 | 131 | return success; 132 | } 133 | 134 | - (BOOL)installItemAtCachePath:(NSString *)cachePath intoPath:(NSString *)path { 135 | BOOL success = YES; 136 | NSError *error = nil; 137 | 138 | NSString *resolvedCachePath = [kSPWorkingDirectory stringByAppendingString:cachePath]; 139 | NSString *resolvedGlobalPath = [@"/" stringByAppendingString:path]; 140 | 141 | // Assume that any file already there is valid (XXX: is this a valid assumption?) 142 | if (![[NSFileManager defaultManager] fileExistsAtPath:resolvedGlobalPath]) { 143 | success = [[NSFileManager defaultManager] moveItemAtPath:resolvedCachePath toPath:resolvedGlobalPath error:&error]; 144 | if (!success) { SPLog(@"Unable to move item into installed position. (%@)", [error localizedDescription]); return success; } 145 | 146 | int ret = chmod([resolvedGlobalPath UTF8String], 0755); 147 | if (ret != 0) { success = NO; SPLog(@"Unable to chmod file: %d", errno); return success; } 148 | } 149 | 150 | return success; 151 | } 152 | 153 | - (BOOL)installFiles { 154 | BOOL success = YES; 155 | 156 | for (NSString *path in [self files]) { 157 | success = [self installItemAtCachePath:path intoPath:path]; 158 | if (!success) { SPLog(@"Unable to install file: %@", path); break; } 159 | } 160 | 161 | return success; 162 | } 163 | 164 | - (BOOL)createDirectoriesInRootPath:(NSString *)path { 165 | BOOL success = YES; 166 | 167 | for (NSString *dir in [self directories]) { 168 | // creating directories is always successful: if it fails, the directory is already there! 169 | [[NSFileManager defaultManager] createDirectoryAtPath:[path stringByAppendingString:dir] withIntermediateDirectories:NO attributes:nil error:NULL]; 170 | } 171 | 172 | return success; 173 | } 174 | 175 | - (BOOL)createDirectories { 176 | return [self createDirectoriesInRootPath:@"/"]; 177 | } 178 | 179 | - (void)applyAlternativeSharedCacheToEnvironmentVariables:(NSMutableDictionary *)ev { 180 | if ([[ev objectForKey:@"DYLD_SHARED_CACHE_DIR"] length] == 0) { 181 | [ev setObject:@"/var/spire" forKey:@"DYLD_SHARED_CACHE_DIR"]; 182 | } 183 | 184 | if ([[ev objectForKey:@"DYLD_SHARED_REGION"] length] == 0) { 185 | [ev setObject:@"private" forKey:@"DYLD_SHARED_REGION"]; 186 | } 187 | 188 | if ([[ev objectForKey:@"DYLD_SHARED_CACHE_DONT_VALIDATE"] length] == 0) { 189 | [ev setObject:@"1" forKey:@"DYLD_SHARED_CACHE_DONT_VALIDATE"]; 190 | } 191 | } 192 | 193 | - (void)applyMobileSubstrateToEnvironmentVariables:(NSMutableDictionary *)ev { 194 | if ([[ev objectForKey:@"DYLD_INSERT_LIBRARIES"] length] == 0) { 195 | [ev setObject:@"/Library/MobileSubstrate/MobileSubstrate.dylib" forKey:@"DYLD_INSERT_LIBRARIES"]; 196 | } 197 | } 198 | 199 | - (BOOL)applyMobileSubstrateToDaemonAtPath:(const char *)path { 200 | CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (uint8_t *) path, strlen(path), false); 201 | 202 | CFPropertyListRef plist; { 203 | CFReadStreamRef stream = CFReadStreamCreateWithFile(kCFAllocatorDefault, url); 204 | CFReadStreamOpen(stream); 205 | plist = CFPropertyListCreateFromStream(kCFAllocatorDefault, stream, 0, kCFPropertyListMutableContainers, NULL, NULL); 206 | CFReadStreamClose(stream); 207 | } 208 | 209 | NSMutableDictionary *root = (NSMutableDictionary *) plist; 210 | if (root == nil) return NO; 211 | NSMutableDictionary *ev = [root objectForKey:@"EnvironmentVariables"]; 212 | if (ev == nil) { 213 | ev = [NSMutableDictionary dictionary]; 214 | [root setObject:ev forKey:@"EnvironmentVariables"]; 215 | } 216 | 217 | [self applyMobileSubstrateToEnvironmentVariables:ev]; 218 | 219 | SavePropertyList(plist, "", url, kCFPropertyListBinaryFormat_v1_0); 220 | return YES; 221 | } 222 | 223 | - (BOOL)applyAlternativeCacheToDaemonAtPath:(const char *)path { 224 | CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (uint8_t *) path, strlen(path), false); 225 | 226 | CFPropertyListRef plist; { 227 | CFReadStreamRef stream = CFReadStreamCreateWithFile(kCFAllocatorDefault, url); 228 | CFReadStreamOpen(stream); 229 | plist = CFPropertyListCreateFromStream(kCFAllocatorDefault, stream, 0, kCFPropertyListMutableContainers, NULL, NULL); 230 | CFReadStreamClose(stream); 231 | } 232 | 233 | NSMutableDictionary *root = (NSMutableDictionary *) plist; 234 | if (root == nil) return NO; 235 | NSMutableDictionary *ev = [root objectForKey:@"EnvironmentVariables"]; 236 | if (ev == nil) { 237 | ev = [NSMutableDictionary dictionary]; 238 | [root setObject:ev forKey:@"EnvironmentVariables"]; 239 | } 240 | 241 | [self applyAlternativeSharedCacheToEnvironmentVariables:ev]; 242 | 243 | SavePropertyList(plist, "", url, kCFPropertyListBinaryFormat_v1_0); 244 | return YES; 245 | } 246 | 247 | - (BOOL)applyAlternativeCacheToAppAtPath:(const char *)path { 248 | CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (uint8_t *) path, strlen(path), false); 249 | 250 | CFPropertyListRef plist; { 251 | CFReadStreamRef stream = CFReadStreamCreateWithFile(kCFAllocatorDefault, url); 252 | CFReadStreamOpen(stream); 253 | plist = CFPropertyListCreateFromStream(kCFAllocatorDefault, stream, 0, kCFPropertyListMutableContainers, NULL, NULL); 254 | CFReadStreamClose(stream); 255 | } 256 | 257 | NSMutableDictionary *root = (NSMutableDictionary *) plist; 258 | if (root == nil) return NO; 259 | NSMutableDictionary *ev = [root objectForKey:@"LSEnvironment"]; 260 | if (ev == nil) { 261 | ev = [NSMutableDictionary dictionary]; 262 | [root setObject:ev forKey:@"LSEnvironment"]; 263 | } 264 | 265 | [self applyAlternativeSharedCacheToEnvironmentVariables:ev]; 266 | 267 | SavePropertyList(plist, "", url, kCFPropertyListBinaryFormat_v1_0); 268 | return YES; 269 | } 270 | 271 | - (BOOL)setupSharedCacheFromZip:(ZipInfo *)info { 272 | BOOL success = YES; 273 | 274 | NSString *zipPath = [kSPUpdateZIPRootPath stringByAppendingString:@"System/Library/Caches/com.apple.dyld/dyld_shared_cache_armv7"]; 275 | CDFile *file = PartialZipFindFile(info, [zipPath UTF8String]); 276 | if (!file) { SPLog(@"Failed to find dyld_shared_cache_armv7"); return NO; } 277 | 278 | downloadCurrentFileData data = { NULL, NULL, 63 }; 279 | success = PartialZipGetFile(info, file, downloadFileCallback, &data); 280 | if (!success) { SPLog(@"Failed downloading shared cache."); return success; } 281 | downloadFileCallback(info, NULL, NULL, 0, &data); 282 | 283 | success = [self installItemAtCachePath:@"dyld_shared_cache_armv7" intoPath:@"var/spire/dyld_shared_cache_armv7"]; 284 | if (!success) { SPLog(@"Failed installing cache."); return success; } 285 | 286 | success = [self applyAlternativeCacheToAppAtPath:"/Applications/Preferences.app/Info.plist"]; 287 | if (!success) { SPLog(@"Failed applying cache to Preferences."); return success; } 288 | 289 | success = [self applyAlternativeCacheToDaemonAtPath:"/System/Library/LaunchDaemons/com.apple.SpringBoard.plist"]; 290 | if (!success) { SPLog(@"Failed applying cache to SpringBoard."); return success; } 291 | 292 | success = [self applyAlternativeCacheToDaemonAtPath:"/System/Library/LaunchDaemons/com.apple.assistantd.plist"]; 293 | if (!success) { SPLog(@"Failed applying cache to assistantd."); return success; } 294 | 295 | success = [self applyMobileSubstrateToDaemonAtPath:"/System/Library/LaunchDaemons/com.apple.assistantd.plist"]; 296 | if (!success) { SPLog(@"Failed applying MobileSubstrate to assistantd."); return success; } 297 | 298 | success = [self applyAlternativeCacheToDaemonAtPath:"/System/Library/LaunchDaemons/com.apple.assistant_service.plist"]; 299 | if (!success) { SPLog(@"Failed applying MobileSubstrate to assistantd."); return success; } 300 | 301 | return success; 302 | } 303 | 304 | - (BOOL)addCapabilities { 305 | static char platform[1024]; 306 | size_t len = sizeof(platform); 307 | int ret = sysctlbyname("hw.model", &platform, &len, NULL, 0); 308 | if (ret == -1) { SPLog(@"sysctlbyname failed."); return NO; } 309 | 310 | NSString *platformPath = [NSString stringWithFormat:@"/System/Library/CoreServices/SpringBoard.app/%s.plist", platform]; 311 | const char *path = [platformPath UTF8String]; 312 | 313 | CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (uint8_t *) path, strlen(path), false); 314 | 315 | CFPropertyListRef plist; { 316 | CFReadStreamRef stream = CFReadStreamCreateWithFile(kCFAllocatorDefault, url); 317 | CFReadStreamOpen(stream); 318 | plist = CFPropertyListCreateFromStream(kCFAllocatorDefault, stream, 0, kCFPropertyListMutableContainers, NULL, NULL); 319 | CFReadStreamClose(stream); 320 | } 321 | 322 | NSMutableDictionary *root = (NSMutableDictionary *) plist; 323 | if (root == nil) return NO; 324 | NSMutableDictionary *capabilities = [root objectForKey:@"capabilities"]; 325 | if (capabilities == nil) return NO; 326 | 327 | NSNumber *yes = [NSNumber numberWithBool:YES]; 328 | [capabilities setObject:yes forKey:@"mars-volta"]; 329 | [capabilities setObject:yes forKey:@"assistant"]; 330 | 331 | SavePropertyList(plist, "", url, kCFPropertyListBinaryFormat_v1_0); 332 | 333 | return YES; 334 | } 335 | 336 | - (BOOL)createCache { 337 | BOOL success = YES; 338 | 339 | success = [[NSFileManager defaultManager] createDirectoryAtPath:kSPWorkingDirectory withIntermediateDirectories:NO attributes:nil error:NULL]; 340 | success = [self createDirectoriesInRootPath:kSPWorkingDirectory]; 341 | 342 | return success; 343 | } 344 | 345 | - (BOOL)cleanUp { 346 | return [[NSFileManager defaultManager] removeItemAtPath:kSPWorkingDirectory error:NULL]; 347 | } 348 | 349 | - (BOOL)install { 350 | BOOL success = YES; 351 | 352 | SPLog(@"Preparing..."); 353 | [self cleanUp]; 354 | 355 | SPLog(@"Creating download cache."); 356 | success = [self createCache]; 357 | if (!success) { SPLog(@"Failed creating cache."); return success; } 358 | 359 | SPLog(@"Opening remote ZIP."); 360 | ZipInfo *info = [self openZipFile]; 361 | if (!info) { [self cleanUp]; return false; } 362 | 363 | SPLog(@"Downloading files to cache."); 364 | success = [self downloadFilesFromZip:info]; 365 | if (!success) { PartialZipRelease(info); [self cleanUp]; SPLog(@"Failed downloading files."); return success; } 366 | 367 | SPLog(@"Creating install directories."); 368 | success = [self createDirectories]; 369 | if (!success) { PartialZipRelease(info); [self cleanUp]; SPLog(@"Failed creating directories."); return success; } 370 | 371 | SPLog(@"Installing downloaded files."); 372 | success = [self installFiles]; 373 | if (!success) { PartialZipRelease(info); [self cleanUp]; SPLog(@"Failed installing files."); return success; } 374 | 375 | SPLog(@"Setting up shared cache."); 376 | success = [self setupSharedCacheFromZip:info]; 377 | if (!success) { PartialZipRelease(info); [self cleanUp]; SPLog(@"Failed setting up shared cache."); return success; } 378 | 379 | PartialZipRelease(info); 380 | 381 | SPLog(@"Modifying system files."); 382 | success = [self addCapabilities]; 383 | if (!success) { [self cleanUp]; SPLog(@"Failed adding capabilities."); return success; } 384 | 385 | SPLog(@"Cleaning up."); 386 | [self cleanUp]; 387 | 388 | SPLog(@"Done!"); 389 | return success; 390 | } 391 | 392 | @end 393 | 394 | 395 | int main(int argc, char **argv, char **envp) { 396 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 397 | 398 | SPSiriInstaller *installer = [[SPSiriInstaller alloc] init]; 399 | BOOL success = [installer install]; 400 | [installer release]; 401 | 402 | [pool release]; 403 | 404 | return (success ? 0 : 1); 405 | } 406 | 407 | 408 | -------------------------------------------------------------------------------- /Installer/Makefile: -------------------------------------------------------------------------------- 1 | 2 | include theos/makefiles/common.mk 3 | 4 | TOOL_NAME = SpireInstaller SpireRemover 5 | 6 | SpireInstaller_FILES = Installer.m partial.c 7 | SpireInstaller_FRAMEWORKS = Foundation CoreFoundation 8 | SpireInstaller_LDFLAGS = -lcurl -lz 9 | SpireInstaller_OBJCFLAGS = -I$(THEOS_PROJECT_DIR) -F$(THEOS_PROJECT_DIR) 10 | 11 | SpireRemover_FILES = Remover.m 12 | SpireRemover_FRAMEWORKS = Foundation CoreFoundation 13 | SpireRemover_OBJCFLAGS = -I$(THEOS_PROJECT_DIR) -F$(THEOS_PROJECT_DIR) 14 | 15 | include $(THEOS_MAKE_PATH)/tool.mk 16 | 17 | -------------------------------------------------------------------------------- /Installer/Remover.m: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #import "SPLogging.h" 10 | 11 | void SavePropertyList(CFPropertyListRef plist, char *path, CFURLRef url, CFPropertyListFormat format) { 12 | if (path[0] != '\0') 13 | url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (uint8_t *) path, strlen(path), false); 14 | CFWriteStreamRef stream = CFWriteStreamCreateWithFile(kCFAllocatorDefault, url); 15 | CFWriteStreamOpen(stream); 16 | CFPropertyListWriteToStream(plist, stream, format, NULL); 17 | CFWriteStreamClose(stream); 18 | } 19 | 20 | 21 | @interface SPSiriRemover : NSObject { 22 | } 23 | 24 | @end 25 | 26 | @implementation SPSiriRemover 27 | 28 | - (NSArray *)directories { 29 | static NSArray *cached = nil; 30 | 31 | if (cached == nil) { 32 | NSMutableArray *valid = [NSMutableArray array]; 33 | NSArray *files = [[NSString stringWithContentsOfFile:@"/var/spire/dirs.txt" encoding:NSUTF8StringEncoding error:NULL] componentsSeparatedByString:@"\n"]; 34 | 35 | for (NSString *file in files) { 36 | if ([[file stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0) { 37 | [valid addObject:file]; 38 | } 39 | } 40 | 41 | // FIXME: this is a memory leak 42 | cached = [valid copy]; 43 | } 44 | 45 | return cached; 46 | } 47 | 48 | - (NSArray *)files { 49 | static NSArray *cached = nil; 50 | 51 | if (cached == nil) { 52 | NSMutableArray *valid = [NSMutableArray array]; 53 | NSArray *files = [[NSString stringWithContentsOfFile:@"/var/spire/files.txt" encoding:NSUTF8StringEncoding error:NULL] componentsSeparatedByString:@"\n"]; 54 | 55 | for (NSString *file in files) { 56 | if ([[file stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length] != 0) { 57 | [valid addObject:file]; 58 | } 59 | } 60 | 61 | // FIXME: this is a memory leak 62 | cached = [valid copy]; 63 | } 64 | 65 | return cached; 66 | } 67 | 68 | - (BOOL)removeFileAtPath:(NSString *)file { 69 | NSString *path = [@"/" stringByAppendingString:file]; 70 | 71 | return [[NSFileManager defaultManager] removeItemAtPath:path error:NULL]; 72 | } 73 | 74 | - (BOOL)removeDirectoryAtPath:(NSString *)dir { 75 | NSString *path = [@"/" stringByAppendingString:dir]; 76 | 77 | // strangely, NSFileManager has no method to remove a directory only if 78 | // it is empty. therefore, use the POSIX rmdir, which does exactly that. 79 | rmdir([path UTF8String]); 80 | 81 | // directories might be still used for other things (including, even, stuff 82 | // like /System!), so if they can't be removed, that's not a big deal. 83 | return YES; 84 | } 85 | 86 | - (BOOL)removeFiles { 87 | BOOL success = YES; 88 | 89 | for (NSString *file in [self files]) { 90 | // Ignore errors here: even if one doesn't exist, still remove the others. 91 | success = [self removeFileAtPath:file]; 92 | if (!success) { SPLog(@"Failed removing file at path: /%@.", file); } 93 | } 94 | 95 | for (NSString *dir in [self directories]) { 96 | // Ignore errors here: even if one doesn't exist, still remove the others. 97 | success = [self removeDirectoryAtPath:dir]; 98 | if (!success) { SPLog(@"Failed removing directory at path: /%@.", dir); } 99 | } 100 | 101 | return success; 102 | } 103 | 104 | - (void)removeAlternativeSharedCacheFromEnvironmentVariables:(NSMutableDictionary *)ev { 105 | if ([[ev objectForKey:@"DYLD_SHARED_CACHE_DIR"] isEqual:@"/var/spire"]) { 106 | [ev removeObjectForKey:@"DYLD_SHARED_CACHE_DIR"]; 107 | } 108 | 109 | if ([[ev objectForKey:@"DYLD_SHARED_REGION"] isEqual:@"private"]) { 110 | [ev removeObjectForKey:@"DYLD_SHARED_REGION"]; 111 | } 112 | 113 | if ([[ev objectForKey:@"DYLD_SHARED_CACHE_DONT_VALIDATE"] isEqual:@"1"]) { 114 | [ev removeObjectForKey:@"DYLD_SHARED_CACHE_DONT_VALIDATE"]; 115 | } 116 | } 117 | 118 | - (BOOL)removeAlternativeCacheFromDaemonAtPath:(const char *)path { 119 | CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (uint8_t *) path, strlen(path), false); 120 | 121 | CFPropertyListRef plist; { 122 | CFReadStreamRef stream = CFReadStreamCreateWithFile(kCFAllocatorDefault, url); 123 | CFReadStreamOpen(stream); 124 | plist = CFPropertyListCreateFromStream(kCFAllocatorDefault, stream, 0, kCFPropertyListMutableContainers, NULL, NULL); 125 | CFReadStreamClose(stream); 126 | } 127 | 128 | NSMutableDictionary *root = (NSMutableDictionary *) plist; 129 | if (root == nil) return NO; 130 | NSMutableDictionary *ev = [root objectForKey:@"EnvironmentVariables"]; 131 | if (ev == nil) { 132 | ev = [NSMutableDictionary dictionary]; 133 | [root setObject:ev forKey:@"EnvironmentVariables"]; 134 | } 135 | 136 | [self removeAlternativeSharedCacheFromEnvironmentVariables:ev]; 137 | 138 | SavePropertyList(plist, "", url, kCFPropertyListBinaryFormat_v1_0); 139 | return YES; 140 | } 141 | 142 | - (BOOL)removeAlternativeCacheFromAppAtPath:(const char *)path { 143 | CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (uint8_t *) path, strlen(path), false); 144 | 145 | CFPropertyListRef plist; { 146 | CFReadStreamRef stream = CFReadStreamCreateWithFile(kCFAllocatorDefault, url); 147 | CFReadStreamOpen(stream); 148 | plist = CFPropertyListCreateFromStream(kCFAllocatorDefault, stream, 0, kCFPropertyListMutableContainers, NULL, NULL); 149 | CFReadStreamClose(stream); 150 | } 151 | 152 | NSMutableDictionary *root = (NSMutableDictionary *) plist; 153 | if (root == nil) return NO; 154 | NSMutableDictionary *ev = [root objectForKey:@"LSEnvironment"]; 155 | if (ev == nil) { 156 | ev = [NSMutableDictionary dictionary]; 157 | [root setObject:ev forKey:@"LSEnvironment"]; 158 | } 159 | 160 | [self removeAlternativeSharedCacheFromEnvironmentVariables:ev]; 161 | 162 | SavePropertyList(plist, "", url, kCFPropertyListBinaryFormat_v1_0); 163 | return YES; 164 | } 165 | 166 | - (BOOL)removeSharedCache { 167 | BOOL success = YES; 168 | 169 | success = [self removeFileAtPath:@"var/spire/dyld_shared_cache_armv7"]; 170 | if (!success) { SPLog(@"Failed removing cache."); return success; } 171 | 172 | success = [self removeAlternativeCacheFromAppAtPath:"/Applications/Preferences.app/Info.plist"]; 173 | if (!success) { SPLog(@"Failed removing cache from Preferences."); return success; } 174 | 175 | success = [self removeAlternativeCacheFromDaemonAtPath:"/System/Library/LaunchDaemons/com.apple.SpringBoard.plist"]; 176 | if (!success) { SPLog(@"Failed removing cache from SpringBoard."); return success; } 177 | 178 | return success; 179 | } 180 | 181 | - (BOOL)removeCapabilities { 182 | static char platform[1024]; 183 | size_t len = sizeof(platform); 184 | int ret = sysctlbyname("hw.model", &platform, &len, NULL, 0); 185 | if (ret == -1) { SPLog(@"sysctlbyname failed."); return NO; } 186 | 187 | NSString *platformPath = [NSString stringWithFormat:@"/System/Library/CoreServices/SpringBoard.app/%s.plist", platform]; 188 | const char *path = [platformPath UTF8String]; 189 | 190 | CFURLRef url = CFURLCreateFromFileSystemRepresentation(kCFAllocatorDefault, (uint8_t *) path, strlen(path), false); 191 | 192 | CFPropertyListRef plist; { 193 | CFReadStreamRef stream = CFReadStreamCreateWithFile(kCFAllocatorDefault, url); 194 | CFReadStreamOpen(stream); 195 | plist = CFPropertyListCreateFromStream(kCFAllocatorDefault, stream, 0, kCFPropertyListMutableContainers, NULL, NULL); 196 | CFReadStreamClose(stream); 197 | } 198 | 199 | NSMutableDictionary *root = (NSMutableDictionary *) plist; 200 | if (root == nil) return NO; 201 | NSMutableDictionary *capabilities = [root objectForKey:@"capabilities"]; 202 | if (capabilities == nil) return NO; 203 | 204 | [capabilities removeObjectForKey:@"mars-volta"]; 205 | [capabilities removeObjectForKey:@"assistant"]; 206 | 207 | SavePropertyList(plist, "", url, kCFPropertyListBinaryFormat_v1_0); 208 | return YES; 209 | } 210 | 211 | - (BOOL)remove { 212 | BOOL success = YES; 213 | 214 | SPLog(@"Removing files."); 215 | success = [self removeFiles]; 216 | if (!success) { SPLog(@"Failed removing files."); } 217 | 218 | SPLog(@"Removing shared cache."); 219 | success = [self removeSharedCache]; 220 | if (!success) { SPLog(@"Failed removing shared cache."); } 221 | 222 | SPLog(@"Removing system file patches."); 223 | success = [self removeCapabilities]; 224 | if (!success) { SPLog(@"Failed removing capabilities."); } 225 | 226 | // removing always succeeded: if something above failed, 227 | // it's only because it wasn't installed in the first place. 228 | return YES; 229 | } 230 | 231 | @end 232 | 233 | 234 | int main(int argc, char **argv, char **envp) { 235 | NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 236 | 237 | SPSiriRemover *remover = [[SPSiriRemover alloc] init]; 238 | BOOL success = [remover remove]; 239 | [remover release]; 240 | 241 | [pool release]; 242 | 243 | return (success ? 0 : 1); 244 | } 245 | 246 | 247 | -------------------------------------------------------------------------------- /Installer/filelist.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import os, sys 4 | 5 | filefd = open("layout/var/spire/files.txt", "w") 6 | dirfd = open("layout/var/spire/dirs.txt", "w") 7 | 8 | # this requires the siri files to be in a sirifiles/ directory here 9 | # that (obviously) cannot be included, so you'll have to get it yourself 10 | # or just use the file and directory lists that I've provided 11 | os.chdir("sirifiles") 12 | 13 | for root, dirs, files in os.walk(".", topdown=True): 14 | # use [2:] to remove the ./ at the start of the path 15 | for dir in dirs: 16 | dirfd.write(os.path.join(root, dir)[2:] + "\n") 17 | for file in files: 18 | filefd.write(os.path.join(root, file)[2:] + "\n") 19 | 20 | 21 | -------------------------------------------------------------------------------- /Installer/layout/var/spire/dirs.txt: -------------------------------------------------------------------------------- 1 | Applications 2 | System 3 | Applications/Preferences.app 4 | Applications/Preferences.app/ar.lproj 5 | Applications/Preferences.app/ca.lproj 6 | Applications/Preferences.app/cs.lproj 7 | Applications/Preferences.app/da.lproj 8 | Applications/Preferences.app/Dutch.lproj 9 | Applications/Preferences.app/el.lproj 10 | Applications/Preferences.app/en_GB.lproj 11 | Applications/Preferences.app/English.lproj 12 | Applications/Preferences.app/fi.lproj 13 | Applications/Preferences.app/French.lproj 14 | Applications/Preferences.app/German.lproj 15 | Applications/Preferences.app/he.lproj 16 | Applications/Preferences.app/hr.lproj 17 | Applications/Preferences.app/hu.lproj 18 | Applications/Preferences.app/id.lproj 19 | Applications/Preferences.app/Italian.lproj 20 | Applications/Preferences.app/Japanese.lproj 21 | Applications/Preferences.app/ko.lproj 22 | Applications/Preferences.app/ms.lproj 23 | Applications/Preferences.app/no.lproj 24 | Applications/Preferences.app/pl.lproj 25 | Applications/Preferences.app/pt.lproj 26 | Applications/Preferences.app/pt_PT.lproj 27 | Applications/Preferences.app/ro.lproj 28 | Applications/Preferences.app/ru.lproj 29 | Applications/Preferences.app/sk.lproj 30 | Applications/Preferences.app/Spanish.lproj 31 | Applications/Preferences.app/sv.lproj 32 | Applications/Preferences.app/th.lproj 33 | Applications/Preferences.app/tr.lproj 34 | Applications/Preferences.app/uk.lproj 35 | Applications/Preferences.app/vi.lproj 36 | Applications/Preferences.app/zh_CN.lproj 37 | Applications/Preferences.app/zh_TW.lproj 38 | System/Library 39 | System/Library/Assistant 40 | System/Library/CoreServices 41 | System/Library/LaunchDaemons 42 | System/Library/PreferenceBundles 43 | System/Library/PrivateFrameworks 44 | System/Library/UserEventPlugins 45 | System/Library/Assistant/Plugins 46 | System/Library/Assistant/UIPlugins 47 | System/Library/Assistant/Plugins/AddressBook.assistantBundle 48 | System/Library/Assistant/Plugins/Calendar.assistantBundle 49 | System/Library/Assistant/Plugins/ChatKitAssistant.assistantBundle 50 | System/Library/Assistant/Plugins/FMF.assistantBundle 51 | System/Library/Assistant/Plugins/Mail.assistantBundle 52 | System/Library/Assistant/Plugins/Maps.assistantBundle 53 | System/Library/Assistant/Plugins/Media.assistantBundle 54 | System/Library/Assistant/Plugins/MobileTimer.assistantBundle 55 | System/Library/Assistant/Plugins/Notes.assistantBundle 56 | System/Library/Assistant/Plugins/Phone.assistantBundle 57 | System/Library/Assistant/Plugins/Reminders.assistantBundle 58 | System/Library/Assistant/Plugins/Stocks.assistantBundle 59 | System/Library/Assistant/Plugins/WebSearch.assistantBundle 60 | System/Library/Assistant/Plugins/AddressBook.assistantBundle/_CodeSignature 61 | System/Library/Assistant/Plugins/Calendar.assistantBundle/_CodeSignature 62 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ar.lproj 63 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ca.lproj 64 | System/Library/Assistant/Plugins/Calendar.assistantBundle/cs.lproj 65 | System/Library/Assistant/Plugins/Calendar.assistantBundle/da.lproj 66 | System/Library/Assistant/Plugins/Calendar.assistantBundle/Dutch.lproj 67 | System/Library/Assistant/Plugins/Calendar.assistantBundle/el.lproj 68 | System/Library/Assistant/Plugins/Calendar.assistantBundle/en_GB.lproj 69 | System/Library/Assistant/Plugins/Calendar.assistantBundle/English.lproj 70 | System/Library/Assistant/Plugins/Calendar.assistantBundle/fi.lproj 71 | System/Library/Assistant/Plugins/Calendar.assistantBundle/French.lproj 72 | System/Library/Assistant/Plugins/Calendar.assistantBundle/German.lproj 73 | System/Library/Assistant/Plugins/Calendar.assistantBundle/he.lproj 74 | System/Library/Assistant/Plugins/Calendar.assistantBundle/hr.lproj 75 | System/Library/Assistant/Plugins/Calendar.assistantBundle/hu.lproj 76 | System/Library/Assistant/Plugins/Calendar.assistantBundle/id.lproj 77 | System/Library/Assistant/Plugins/Calendar.assistantBundle/Italian.lproj 78 | System/Library/Assistant/Plugins/Calendar.assistantBundle/Japanese.lproj 79 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ko.lproj 80 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ms.lproj 81 | System/Library/Assistant/Plugins/Calendar.assistantBundle/no.lproj 82 | System/Library/Assistant/Plugins/Calendar.assistantBundle/pl.lproj 83 | System/Library/Assistant/Plugins/Calendar.assistantBundle/pt.lproj 84 | System/Library/Assistant/Plugins/Calendar.assistantBundle/pt_PT.lproj 85 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ro.lproj 86 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ru.lproj 87 | System/Library/Assistant/Plugins/Calendar.assistantBundle/sk.lproj 88 | System/Library/Assistant/Plugins/Calendar.assistantBundle/Spanish.lproj 89 | System/Library/Assistant/Plugins/Calendar.assistantBundle/sv.lproj 90 | System/Library/Assistant/Plugins/Calendar.assistantBundle/th.lproj 91 | System/Library/Assistant/Plugins/Calendar.assistantBundle/tr.lproj 92 | System/Library/Assistant/Plugins/Calendar.assistantBundle/uk.lproj 93 | System/Library/Assistant/Plugins/Calendar.assistantBundle/vi.lproj 94 | System/Library/Assistant/Plugins/Calendar.assistantBundle/zh_CN.lproj 95 | System/Library/Assistant/Plugins/Calendar.assistantBundle/zh_TW.lproj 96 | System/Library/Assistant/Plugins/ChatKitAssistant.assistantBundle/_CodeSignature 97 | System/Library/Assistant/Plugins/FMF.assistantBundle/_CodeSignature 98 | System/Library/Assistant/Plugins/FMF.assistantBundle/ar.lproj 99 | System/Library/Assistant/Plugins/FMF.assistantBundle/ca.lproj 100 | System/Library/Assistant/Plugins/FMF.assistantBundle/cs.lproj 101 | System/Library/Assistant/Plugins/FMF.assistantBundle/da.lproj 102 | System/Library/Assistant/Plugins/FMF.assistantBundle/de.lproj 103 | System/Library/Assistant/Plugins/FMF.assistantBundle/el.lproj 104 | System/Library/Assistant/Plugins/FMF.assistantBundle/en.lproj 105 | System/Library/Assistant/Plugins/FMF.assistantBundle/en_GB.lproj 106 | System/Library/Assistant/Plugins/FMF.assistantBundle/es.lproj 107 | System/Library/Assistant/Plugins/FMF.assistantBundle/fi.lproj 108 | System/Library/Assistant/Plugins/FMF.assistantBundle/fr.lproj 109 | System/Library/Assistant/Plugins/FMF.assistantBundle/he.lproj 110 | System/Library/Assistant/Plugins/FMF.assistantBundle/hr.lproj 111 | System/Library/Assistant/Plugins/FMF.assistantBundle/hu.lproj 112 | System/Library/Assistant/Plugins/FMF.assistantBundle/id.lproj 113 | System/Library/Assistant/Plugins/FMF.assistantBundle/it.lproj 114 | System/Library/Assistant/Plugins/FMF.assistantBundle/ja.lproj 115 | System/Library/Assistant/Plugins/FMF.assistantBundle/ko.lproj 116 | System/Library/Assistant/Plugins/FMF.assistantBundle/ms.lproj 117 | System/Library/Assistant/Plugins/FMF.assistantBundle/nl.lproj 118 | System/Library/Assistant/Plugins/FMF.assistantBundle/no.lproj 119 | System/Library/Assistant/Plugins/FMF.assistantBundle/pl.lproj 120 | System/Library/Assistant/Plugins/FMF.assistantBundle/pt.lproj 121 | System/Library/Assistant/Plugins/FMF.assistantBundle/pt_PT.lproj 122 | System/Library/Assistant/Plugins/FMF.assistantBundle/ro.lproj 123 | System/Library/Assistant/Plugins/FMF.assistantBundle/ru.lproj 124 | System/Library/Assistant/Plugins/FMF.assistantBundle/sk.lproj 125 | System/Library/Assistant/Plugins/FMF.assistantBundle/sv.lproj 126 | System/Library/Assistant/Plugins/FMF.assistantBundle/th.lproj 127 | System/Library/Assistant/Plugins/FMF.assistantBundle/tr.lproj 128 | System/Library/Assistant/Plugins/FMF.assistantBundle/uk.lproj 129 | System/Library/Assistant/Plugins/FMF.assistantBundle/vi.lproj 130 | System/Library/Assistant/Plugins/FMF.assistantBundle/zh_CN.lproj 131 | System/Library/Assistant/Plugins/FMF.assistantBundle/zh_TW.lproj 132 | System/Library/Assistant/Plugins/Mail.assistantBundle/_CodeSignature 133 | System/Library/Assistant/Plugins/Maps.assistantBundle/_CodeSignature 134 | System/Library/Assistant/Plugins/Media.assistantBundle/_CodeSignature 135 | System/Library/Assistant/Plugins/MobileTimer.assistantBundle/_CodeSignature 136 | System/Library/Assistant/Plugins/Notes.assistantBundle/_CodeSignature 137 | System/Library/Assistant/Plugins/Phone.assistantBundle/_CodeSignature 138 | System/Library/Assistant/Plugins/Reminders.assistantBundle/_CodeSignature 139 | System/Library/Assistant/Plugins/Stocks.assistantBundle/_CodeSignature 140 | System/Library/Assistant/Plugins/WebSearch.assistantBundle/_CodeSignature 141 | System/Library/Assistant/UIPlugins/AddressBook.assistantUIBundle 142 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle 143 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle 144 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle 145 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle 146 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle 147 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle 148 | System/Library/Assistant/UIPlugins/Notes.assistantUIBundle 149 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle 150 | System/Library/Assistant/UIPlugins/SpringBoard.assistantUIBundle 151 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle 152 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle 153 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle 154 | System/Library/Assistant/UIPlugins/AddressBook.assistantUIBundle/_CodeSignature 155 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/_CodeSignature 156 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ar.lproj 157 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ca.lproj 158 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/cs.lproj 159 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/da.lproj 160 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/de.lproj 161 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/el.lproj 162 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/en.lproj 163 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/en_GB.lproj 164 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/es.lproj 165 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/fi.lproj 166 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/fr.lproj 167 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/he.lproj 168 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/hr.lproj 169 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/hu.lproj 170 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/id.lproj 171 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/it.lproj 172 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ja.lproj 173 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ko.lproj 174 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ms.lproj 175 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/nl.lproj 176 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/no.lproj 177 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/pl.lproj 178 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/pt.lproj 179 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/pt_PT.lproj 180 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ro.lproj 181 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ru.lproj 182 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/sk.lproj 183 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/sv.lproj 184 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/th.lproj 185 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/tr.lproj 186 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/uk.lproj 187 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/vi.lproj 188 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/zh_CN.lproj 189 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/zh_TW.lproj 190 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/_CodeSignature 191 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ar.lproj 192 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ca.lproj 193 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/cs.lproj 194 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/da.lproj 195 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/de.lproj 196 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/el.lproj 197 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/en.lproj 198 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/en_GB.lproj 199 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/es.lproj 200 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/fi.lproj 201 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/fr.lproj 202 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/he.lproj 203 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/hr.lproj 204 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/hu.lproj 205 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/id.lproj 206 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/it.lproj 207 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ja.lproj 208 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ko.lproj 209 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ms.lproj 210 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/nl.lproj 211 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/no.lproj 212 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/pl.lproj 213 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/pt.lproj 214 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/pt_PT.lproj 215 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ro.lproj 216 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ru.lproj 217 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/sk.lproj 218 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/sv.lproj 219 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/th.lproj 220 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/tr.lproj 221 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/uk.lproj 222 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/vi.lproj 223 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/zh_CN.lproj 224 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/zh_TW.lproj 225 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/_CodeSignature 226 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ar.lproj 227 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ca.lproj 228 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/cs.lproj 229 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/da.lproj 230 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/de.lproj 231 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/el.lproj 232 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/en.lproj 233 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/en_GB.lproj 234 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/es.lproj 235 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/fi.lproj 236 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/fr.lproj 237 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/he.lproj 238 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/hr.lproj 239 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/hu.lproj 240 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/id.lproj 241 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/it.lproj 242 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ja.lproj 243 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ko.lproj 244 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ms.lproj 245 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/nl.lproj 246 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/no.lproj 247 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/pl.lproj 248 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/pt.lproj 249 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/pt_PT.lproj 250 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ro.lproj 251 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ru.lproj 252 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/sk.lproj 253 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/sv.lproj 254 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/th.lproj 255 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/tr.lproj 256 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/uk.lproj 257 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/vi.lproj 258 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/zh_CN.lproj 259 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/zh_TW.lproj 260 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/_CodeSignature 261 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ar.lproj 262 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ca.lproj 263 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/cs.lproj 264 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/da.lproj 265 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Dutch.lproj 266 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/el.lproj 267 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/en_GB.lproj 268 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/English.lproj 269 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/fi.lproj 270 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/French.lproj 271 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/German.lproj 272 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/he.lproj 273 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/hr.lproj 274 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/hu.lproj 275 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/id.lproj 276 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Italian.lproj 277 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Japanese.lproj 278 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ko.lproj 279 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ms.lproj 280 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/no.lproj 281 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/pl.lproj 282 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/pt.lproj 283 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/pt_PT.lproj 284 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ro.lproj 285 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ru.lproj 286 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/sk.lproj 287 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Spanish.lproj 288 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/sv.lproj 289 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/th.lproj 290 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/tr.lproj 291 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/uk.lproj 292 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/vi.lproj 293 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/zh_CN.lproj 294 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/zh_TW.lproj 295 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/_CodeSignature 296 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/_CodeSignature 297 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ar.lproj 298 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ca.lproj 299 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/cs.lproj 300 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/da.lproj 301 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Dutch.lproj 302 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/el.lproj 303 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/en_GB.lproj 304 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/English.lproj 305 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/fi.lproj 306 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/French.lproj 307 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/German.lproj 308 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/he.lproj 309 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/hr.lproj 310 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/hu.lproj 311 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/id.lproj 312 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Italian.lproj 313 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Japanese.lproj 314 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ko.lproj 315 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ms.lproj 316 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/no.lproj 317 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/pl.lproj 318 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/pt.lproj 319 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/pt_PT.lproj 320 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ro.lproj 321 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ru.lproj 322 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/sk.lproj 323 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Spanish.lproj 324 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/sv.lproj 325 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/th.lproj 326 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/tr.lproj 327 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/uk.lproj 328 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/vi.lproj 329 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/zh_CN.lproj 330 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/zh_TW.lproj 331 | System/Library/Assistant/UIPlugins/Notes.assistantUIBundle/_CodeSignature 332 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/_CodeSignature 333 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ar.lproj 334 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ca.lproj 335 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/cs.lproj 336 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/da.lproj 337 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/de.lproj 338 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/el.lproj 339 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/en.lproj 340 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/en_GB.lproj 341 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/es.lproj 342 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/fi.lproj 343 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/fr.lproj 344 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/he.lproj 345 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/hr.lproj 346 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/hu.lproj 347 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/id.lproj 348 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/it.lproj 349 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ja.lproj 350 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ko.lproj 351 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ms.lproj 352 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/nl.lproj 353 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/no.lproj 354 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/pl.lproj 355 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/pt.lproj 356 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/pt_PT.lproj 357 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ro.lproj 358 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ru.lproj 359 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/sk.lproj 360 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/sv.lproj 361 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/th.lproj 362 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/tr.lproj 363 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/uk.lproj 364 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/vi.lproj 365 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/zh_CN.lproj 366 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/zh_TW.lproj 367 | System/Library/Assistant/UIPlugins/SpringBoard.assistantUIBundle/_CodeSignature 368 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle/_CodeSignature 369 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/_CodeSignature 370 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/en.lproj 371 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/_CodeSignature 372 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ar.lproj 373 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ca.lproj 374 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/cs.lproj 375 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/da.lproj 376 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Dutch.lproj 377 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/el.lproj 378 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/en_GB.lproj 379 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/English.lproj 380 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/fi.lproj 381 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/French.lproj 382 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/German.lproj 383 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/he.lproj 384 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/hr.lproj 385 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/hu.lproj 386 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/id.lproj 387 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Italian.lproj 388 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Japanese.lproj 389 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ko.lproj 390 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ms.lproj 391 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/no.lproj 392 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/pl.lproj 393 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/pt.lproj 394 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/pt_PT.lproj 395 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ro.lproj 396 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ru.lproj 397 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/sk.lproj 398 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Spanish.lproj 399 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/sv.lproj 400 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/th.lproj 401 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/tr.lproj 402 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/uk.lproj 403 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/vi.lproj 404 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/zh_CN.lproj 405 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/zh_TW.lproj 406 | System/Library/CoreServices/SpringBoard.app 407 | System/Library/CoreServices/SpringBoard.app/ar.lproj 408 | System/Library/CoreServices/SpringBoard.app/ca.lproj 409 | System/Library/CoreServices/SpringBoard.app/cs.lproj 410 | System/Library/CoreServices/SpringBoard.app/da.lproj 411 | System/Library/CoreServices/SpringBoard.app/Dutch.lproj 412 | System/Library/CoreServices/SpringBoard.app/el.lproj 413 | System/Library/CoreServices/SpringBoard.app/en_GB.lproj 414 | System/Library/CoreServices/SpringBoard.app/English.lproj 415 | System/Library/CoreServices/SpringBoard.app/fi.lproj 416 | System/Library/CoreServices/SpringBoard.app/French.lproj 417 | System/Library/CoreServices/SpringBoard.app/German.lproj 418 | System/Library/CoreServices/SpringBoard.app/he.lproj 419 | System/Library/CoreServices/SpringBoard.app/hr.lproj 420 | System/Library/CoreServices/SpringBoard.app/hu.lproj 421 | System/Library/CoreServices/SpringBoard.app/id.lproj 422 | System/Library/CoreServices/SpringBoard.app/Italian.lproj 423 | System/Library/CoreServices/SpringBoard.app/Japanese.lproj 424 | System/Library/CoreServices/SpringBoard.app/ko.lproj 425 | System/Library/CoreServices/SpringBoard.app/ms.lproj 426 | System/Library/CoreServices/SpringBoard.app/no.lproj 427 | System/Library/CoreServices/SpringBoard.app/pl.lproj 428 | System/Library/CoreServices/SpringBoard.app/pt.lproj 429 | System/Library/CoreServices/SpringBoard.app/pt_PT.lproj 430 | System/Library/CoreServices/SpringBoard.app/ro.lproj 431 | System/Library/CoreServices/SpringBoard.app/ru.lproj 432 | System/Library/CoreServices/SpringBoard.app/sk.lproj 433 | System/Library/CoreServices/SpringBoard.app/Spanish.lproj 434 | System/Library/CoreServices/SpringBoard.app/sv.lproj 435 | System/Library/CoreServices/SpringBoard.app/th.lproj 436 | System/Library/CoreServices/SpringBoard.app/tr.lproj 437 | System/Library/CoreServices/SpringBoard.app/uk.lproj 438 | System/Library/CoreServices/SpringBoard.app/vi.lproj 439 | System/Library/CoreServices/SpringBoard.app/zh_CN.lproj 440 | System/Library/CoreServices/SpringBoard.app/zh_TW.lproj 441 | System/Library/PreferenceBundles/Assistant.bundle 442 | System/Library/PreferenceBundles/Assistant.bundle/_CodeSignature 443 | System/Library/PreferenceBundles/Assistant.bundle/ar.lproj 444 | System/Library/PreferenceBundles/Assistant.bundle/ca.lproj 445 | System/Library/PreferenceBundles/Assistant.bundle/cs.lproj 446 | System/Library/PreferenceBundles/Assistant.bundle/da.lproj 447 | System/Library/PreferenceBundles/Assistant.bundle/Dutch.lproj 448 | System/Library/PreferenceBundles/Assistant.bundle/el.lproj 449 | System/Library/PreferenceBundles/Assistant.bundle/en_GB.lproj 450 | System/Library/PreferenceBundles/Assistant.bundle/English.lproj 451 | System/Library/PreferenceBundles/Assistant.bundle/fi.lproj 452 | System/Library/PreferenceBundles/Assistant.bundle/French.lproj 453 | System/Library/PreferenceBundles/Assistant.bundle/German.lproj 454 | System/Library/PreferenceBundles/Assistant.bundle/he.lproj 455 | System/Library/PreferenceBundles/Assistant.bundle/hr.lproj 456 | System/Library/PreferenceBundles/Assistant.bundle/hu.lproj 457 | System/Library/PreferenceBundles/Assistant.bundle/id.lproj 458 | System/Library/PreferenceBundles/Assistant.bundle/Italian.lproj 459 | System/Library/PreferenceBundles/Assistant.bundle/Japanese.lproj 460 | System/Library/PreferenceBundles/Assistant.bundle/ko.lproj 461 | System/Library/PreferenceBundles/Assistant.bundle/ms.lproj 462 | System/Library/PreferenceBundles/Assistant.bundle/no.lproj 463 | System/Library/PreferenceBundles/Assistant.bundle/pl.lproj 464 | System/Library/PreferenceBundles/Assistant.bundle/pt.lproj 465 | System/Library/PreferenceBundles/Assistant.bundle/pt_PT.lproj 466 | System/Library/PreferenceBundles/Assistant.bundle/ro.lproj 467 | System/Library/PreferenceBundles/Assistant.bundle/ru.lproj 468 | System/Library/PreferenceBundles/Assistant.bundle/sk.lproj 469 | System/Library/PreferenceBundles/Assistant.bundle/Spanish.lproj 470 | System/Library/PreferenceBundles/Assistant.bundle/sv.lproj 471 | System/Library/PreferenceBundles/Assistant.bundle/th.lproj 472 | System/Library/PreferenceBundles/Assistant.bundle/tr.lproj 473 | System/Library/PreferenceBundles/Assistant.bundle/uk.lproj 474 | System/Library/PreferenceBundles/Assistant.bundle/vi.lproj 475 | System/Library/PreferenceBundles/Assistant.bundle/zh_CN.lproj 476 | System/Library/PreferenceBundles/Assistant.bundle/zh_TW.lproj 477 | System/Library/PrivateFrameworks/AssistantServices.framework 478 | System/Library/PrivateFrameworks/AssistantUI.framework 479 | System/Library/PrivateFrameworks/SAObjects.framework 480 | System/Library/PrivateFrameworks/AssistantServices.framework/_CodeSignature 481 | System/Library/PrivateFrameworks/AssistantServices.framework/ar.lproj 482 | System/Library/PrivateFrameworks/AssistantServices.framework/ca.lproj 483 | System/Library/PrivateFrameworks/AssistantServices.framework/cs.lproj 484 | System/Library/PrivateFrameworks/AssistantServices.framework/da.lproj 485 | System/Library/PrivateFrameworks/AssistantServices.framework/Dutch.lproj 486 | System/Library/PrivateFrameworks/AssistantServices.framework/el.lproj 487 | System/Library/PrivateFrameworks/AssistantServices.framework/en_GB.lproj 488 | System/Library/PrivateFrameworks/AssistantServices.framework/English.lproj 489 | System/Library/PrivateFrameworks/AssistantServices.framework/fi.lproj 490 | System/Library/PrivateFrameworks/AssistantServices.framework/French.lproj 491 | System/Library/PrivateFrameworks/AssistantServices.framework/German.lproj 492 | System/Library/PrivateFrameworks/AssistantServices.framework/he.lproj 493 | System/Library/PrivateFrameworks/AssistantServices.framework/hr.lproj 494 | System/Library/PrivateFrameworks/AssistantServices.framework/hu.lproj 495 | System/Library/PrivateFrameworks/AssistantServices.framework/id.lproj 496 | System/Library/PrivateFrameworks/AssistantServices.framework/Italian.lproj 497 | System/Library/PrivateFrameworks/AssistantServices.framework/Japanese.lproj 498 | System/Library/PrivateFrameworks/AssistantServices.framework/ko.lproj 499 | System/Library/PrivateFrameworks/AssistantServices.framework/ms.lproj 500 | System/Library/PrivateFrameworks/AssistantServices.framework/no.lproj 501 | System/Library/PrivateFrameworks/AssistantServices.framework/pl.lproj 502 | System/Library/PrivateFrameworks/AssistantServices.framework/pt.lproj 503 | System/Library/PrivateFrameworks/AssistantServices.framework/pt_PT.lproj 504 | System/Library/PrivateFrameworks/AssistantServices.framework/ro.lproj 505 | System/Library/PrivateFrameworks/AssistantServices.framework/ru.lproj 506 | System/Library/PrivateFrameworks/AssistantServices.framework/sk.lproj 507 | System/Library/PrivateFrameworks/AssistantServices.framework/Spanish.lproj 508 | System/Library/PrivateFrameworks/AssistantServices.framework/sv.lproj 509 | System/Library/PrivateFrameworks/AssistantServices.framework/th.lproj 510 | System/Library/PrivateFrameworks/AssistantServices.framework/tr.lproj 511 | System/Library/PrivateFrameworks/AssistantServices.framework/uk.lproj 512 | System/Library/PrivateFrameworks/AssistantServices.framework/vi.lproj 513 | System/Library/PrivateFrameworks/AssistantServices.framework/zh_CN.lproj 514 | System/Library/PrivateFrameworks/AssistantServices.framework/zh_TW.lproj 515 | System/Library/PrivateFrameworks/AssistantUI.framework/_CodeSignature 516 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj 517 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj 518 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj 519 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj 520 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj 521 | System/Library/PrivateFrameworks/SAObjects.framework/_CodeSignature 522 | System/Library/UserEventPlugins/AssistantUEA.plugin 523 | System/Library/UserEventPlugins/AssistantUEA.plugin/_CodeSignature 524 | -------------------------------------------------------------------------------- /Installer/layout/var/spire/files.txt: -------------------------------------------------------------------------------- 1 | Applications/Preferences.app/5.0~General Assistant.plist 2 | Applications/Preferences.app/5.0~Passcode Lock Assistant.plist 3 | Applications/Preferences.app/5.0~Restrictions-Assistant.plist 4 | Applications/Preferences.app/ar.lproj/5.0~General Assistant.strings 5 | Applications/Preferences.app/ar.lproj/5.0~Passcode Lock Assistant.strings 6 | Applications/Preferences.app/ar.lproj/5.0~Restrictions-Assistant.strings 7 | Applications/Preferences.app/ca.lproj/5.0~General Assistant.strings 8 | Applications/Preferences.app/ca.lproj/5.0~Passcode Lock Assistant.strings 9 | Applications/Preferences.app/ca.lproj/5.0~Restrictions-Assistant.strings 10 | Applications/Preferences.app/cs.lproj/5.0~General Assistant.strings 11 | Applications/Preferences.app/cs.lproj/5.0~Passcode Lock Assistant.strings 12 | Applications/Preferences.app/cs.lproj/5.0~Restrictions-Assistant.strings 13 | Applications/Preferences.app/da.lproj/5.0~General Assistant.strings 14 | Applications/Preferences.app/da.lproj/5.0~Passcode Lock Assistant.strings 15 | Applications/Preferences.app/da.lproj/5.0~Restrictions-Assistant.strings 16 | Applications/Preferences.app/Dutch.lproj/5.0~General Assistant.strings 17 | Applications/Preferences.app/Dutch.lproj/5.0~Passcode Lock Assistant.strings 18 | Applications/Preferences.app/Dutch.lproj/5.0~Restrictions-Assistant.strings 19 | Applications/Preferences.app/el.lproj/5.0~General Assistant.strings 20 | Applications/Preferences.app/el.lproj/5.0~Passcode Lock Assistant.strings 21 | Applications/Preferences.app/el.lproj/5.0~Restrictions-Assistant.strings 22 | Applications/Preferences.app/en_GB.lproj/5.0~General Assistant.strings 23 | Applications/Preferences.app/en_GB.lproj/5.0~Passcode Lock Assistant.strings 24 | Applications/Preferences.app/en_GB.lproj/5.0~Restrictions-Assistant.strings 25 | Applications/Preferences.app/English.lproj/5.0~General Assistant.strings 26 | Applications/Preferences.app/English.lproj/5.0~Passcode Lock Assistant.strings 27 | Applications/Preferences.app/English.lproj/5.0~Restrictions-Assistant.strings 28 | Applications/Preferences.app/fi.lproj/5.0~General Assistant.strings 29 | Applications/Preferences.app/fi.lproj/5.0~Passcode Lock Assistant.strings 30 | Applications/Preferences.app/fi.lproj/5.0~Restrictions-Assistant.strings 31 | Applications/Preferences.app/French.lproj/5.0~General Assistant.strings 32 | Applications/Preferences.app/French.lproj/5.0~Passcode Lock Assistant.strings 33 | Applications/Preferences.app/French.lproj/5.0~Restrictions-Assistant.strings 34 | Applications/Preferences.app/German.lproj/5.0~General Assistant.strings 35 | Applications/Preferences.app/German.lproj/5.0~Passcode Lock Assistant.strings 36 | Applications/Preferences.app/German.lproj/5.0~Restrictions-Assistant.strings 37 | Applications/Preferences.app/he.lproj/5.0~General Assistant.strings 38 | Applications/Preferences.app/he.lproj/5.0~Passcode Lock Assistant.strings 39 | Applications/Preferences.app/he.lproj/5.0~Restrictions-Assistant.strings 40 | Applications/Preferences.app/hr.lproj/5.0~General Assistant.strings 41 | Applications/Preferences.app/hr.lproj/5.0~Passcode Lock Assistant.strings 42 | Applications/Preferences.app/hr.lproj/5.0~Restrictions-Assistant.strings 43 | Applications/Preferences.app/hu.lproj/5.0~General Assistant.strings 44 | Applications/Preferences.app/hu.lproj/5.0~Passcode Lock Assistant.strings 45 | Applications/Preferences.app/hu.lproj/5.0~Restrictions-Assistant.strings 46 | Applications/Preferences.app/id.lproj/5.0~General Assistant.strings 47 | Applications/Preferences.app/id.lproj/5.0~Passcode Lock Assistant.strings 48 | Applications/Preferences.app/id.lproj/5.0~Restrictions-Assistant.strings 49 | Applications/Preferences.app/Italian.lproj/5.0~General Assistant.strings 50 | Applications/Preferences.app/Italian.lproj/5.0~Passcode Lock Assistant.strings 51 | Applications/Preferences.app/Italian.lproj/5.0~Restrictions-Assistant.strings 52 | Applications/Preferences.app/Japanese.lproj/5.0~General Assistant.strings 53 | Applications/Preferences.app/Japanese.lproj/5.0~Passcode Lock Assistant.strings 54 | Applications/Preferences.app/Japanese.lproj/5.0~Restrictions-Assistant.strings 55 | Applications/Preferences.app/ko.lproj/5.0~General Assistant.strings 56 | Applications/Preferences.app/ko.lproj/5.0~Passcode Lock Assistant.strings 57 | Applications/Preferences.app/ko.lproj/5.0~Restrictions-Assistant.strings 58 | Applications/Preferences.app/ms.lproj/5.0~General Assistant.strings 59 | Applications/Preferences.app/ms.lproj/5.0~Passcode Lock Assistant.strings 60 | Applications/Preferences.app/ms.lproj/5.0~Restrictions-Assistant.strings 61 | Applications/Preferences.app/no.lproj/5.0~General Assistant.strings 62 | Applications/Preferences.app/no.lproj/5.0~Passcode Lock Assistant.strings 63 | Applications/Preferences.app/no.lproj/5.0~Restrictions-Assistant.strings 64 | Applications/Preferences.app/pl.lproj/5.0~General Assistant.strings 65 | Applications/Preferences.app/pl.lproj/5.0~Passcode Lock Assistant.strings 66 | Applications/Preferences.app/pl.lproj/5.0~Restrictions-Assistant.strings 67 | Applications/Preferences.app/pt.lproj/5.0~General Assistant.strings 68 | Applications/Preferences.app/pt.lproj/5.0~Passcode Lock Assistant.strings 69 | Applications/Preferences.app/pt.lproj/5.0~Restrictions-Assistant.strings 70 | Applications/Preferences.app/pt_PT.lproj/5.0~General Assistant.strings 71 | Applications/Preferences.app/pt_PT.lproj/5.0~Passcode Lock Assistant.strings 72 | Applications/Preferences.app/pt_PT.lproj/5.0~Restrictions-Assistant.strings 73 | Applications/Preferences.app/ro.lproj/5.0~General Assistant.strings 74 | Applications/Preferences.app/ro.lproj/5.0~Passcode Lock Assistant.strings 75 | Applications/Preferences.app/ro.lproj/5.0~Restrictions-Assistant.strings 76 | Applications/Preferences.app/ru.lproj/5.0~General Assistant.strings 77 | Applications/Preferences.app/ru.lproj/5.0~Passcode Lock Assistant.strings 78 | Applications/Preferences.app/ru.lproj/5.0~Restrictions-Assistant.strings 79 | Applications/Preferences.app/sk.lproj/5.0~General Assistant.strings 80 | Applications/Preferences.app/sk.lproj/5.0~Passcode Lock Assistant.strings 81 | Applications/Preferences.app/sk.lproj/5.0~Restrictions-Assistant.strings 82 | Applications/Preferences.app/Spanish.lproj/5.0~General Assistant.strings 83 | Applications/Preferences.app/Spanish.lproj/5.0~Passcode Lock Assistant.strings 84 | Applications/Preferences.app/Spanish.lproj/5.0~Restrictions-Assistant.strings 85 | Applications/Preferences.app/sv.lproj/5.0~General Assistant.strings 86 | Applications/Preferences.app/sv.lproj/5.0~Passcode Lock Assistant.strings 87 | Applications/Preferences.app/sv.lproj/5.0~Restrictions-Assistant.strings 88 | Applications/Preferences.app/th.lproj/5.0~General Assistant.strings 89 | Applications/Preferences.app/th.lproj/5.0~Passcode Lock Assistant.strings 90 | Applications/Preferences.app/th.lproj/5.0~Restrictions-Assistant.strings 91 | Applications/Preferences.app/tr.lproj/5.0~General Assistant.strings 92 | Applications/Preferences.app/tr.lproj/5.0~Passcode Lock Assistant.strings 93 | Applications/Preferences.app/tr.lproj/5.0~Restrictions-Assistant.strings 94 | Applications/Preferences.app/uk.lproj/5.0~General Assistant.strings 95 | Applications/Preferences.app/uk.lproj/5.0~Passcode Lock Assistant.strings 96 | Applications/Preferences.app/uk.lproj/5.0~Restrictions-Assistant.strings 97 | Applications/Preferences.app/vi.lproj/5.0~General Assistant.strings 98 | Applications/Preferences.app/vi.lproj/5.0~Passcode Lock Assistant.strings 99 | Applications/Preferences.app/vi.lproj/5.0~Restrictions-Assistant.strings 100 | Applications/Preferences.app/zh_CN.lproj/5.0~General Assistant.strings 101 | Applications/Preferences.app/zh_CN.lproj/5.0~Passcode Lock Assistant.strings 102 | Applications/Preferences.app/zh_CN.lproj/5.0~Restrictions-Assistant.strings 103 | Applications/Preferences.app/zh_TW.lproj/5.0~General Assistant.strings 104 | Applications/Preferences.app/zh_TW.lproj/5.0~Passcode Lock Assistant.strings 105 | Applications/Preferences.app/zh_TW.lproj/5.0~Restrictions-Assistant.strings 106 | System/Library/Assistant/Plugins/AddressBook.assistantBundle/AddressBook 107 | System/Library/Assistant/Plugins/AddressBook.assistantBundle/Info.plist 108 | System/Library/Assistant/Plugins/Calendar.assistantBundle/Calendar 109 | System/Library/Assistant/Plugins/Calendar.assistantBundle/Info.plist 110 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ar.lproj/Localizable.strings 111 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ca.lproj/Localizable.strings 112 | System/Library/Assistant/Plugins/Calendar.assistantBundle/cs.lproj/Localizable.strings 113 | System/Library/Assistant/Plugins/Calendar.assistantBundle/da.lproj/Localizable.strings 114 | System/Library/Assistant/Plugins/Calendar.assistantBundle/Dutch.lproj/Localizable.strings 115 | System/Library/Assistant/Plugins/Calendar.assistantBundle/el.lproj/Localizable.strings 116 | System/Library/Assistant/Plugins/Calendar.assistantBundle/en_GB.lproj/Localizable.strings 117 | System/Library/Assistant/Plugins/Calendar.assistantBundle/English.lproj/Localizable.strings 118 | System/Library/Assistant/Plugins/Calendar.assistantBundle/fi.lproj/Localizable.strings 119 | System/Library/Assistant/Plugins/Calendar.assistantBundle/French.lproj/Localizable.strings 120 | System/Library/Assistant/Plugins/Calendar.assistantBundle/German.lproj/Localizable.strings 121 | System/Library/Assistant/Plugins/Calendar.assistantBundle/he.lproj/Localizable.strings 122 | System/Library/Assistant/Plugins/Calendar.assistantBundle/hr.lproj/Localizable.strings 123 | System/Library/Assistant/Plugins/Calendar.assistantBundle/hu.lproj/Localizable.strings 124 | System/Library/Assistant/Plugins/Calendar.assistantBundle/id.lproj/Localizable.strings 125 | System/Library/Assistant/Plugins/Calendar.assistantBundle/Italian.lproj/Localizable.strings 126 | System/Library/Assistant/Plugins/Calendar.assistantBundle/Japanese.lproj/Localizable.strings 127 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ko.lproj/Localizable.strings 128 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ms.lproj/Localizable.strings 129 | System/Library/Assistant/Plugins/Calendar.assistantBundle/no.lproj/Localizable.strings 130 | System/Library/Assistant/Plugins/Calendar.assistantBundle/pl.lproj/Localizable.strings 131 | System/Library/Assistant/Plugins/Calendar.assistantBundle/pt.lproj/Localizable.strings 132 | System/Library/Assistant/Plugins/Calendar.assistantBundle/pt_PT.lproj/Localizable.strings 133 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ro.lproj/Localizable.strings 134 | System/Library/Assistant/Plugins/Calendar.assistantBundle/ru.lproj/Localizable.strings 135 | System/Library/Assistant/Plugins/Calendar.assistantBundle/sk.lproj/Localizable.strings 136 | System/Library/Assistant/Plugins/Calendar.assistantBundle/Spanish.lproj/Localizable.strings 137 | System/Library/Assistant/Plugins/Calendar.assistantBundle/sv.lproj/Localizable.strings 138 | System/Library/Assistant/Plugins/Calendar.assistantBundle/th.lproj/Localizable.strings 139 | System/Library/Assistant/Plugins/Calendar.assistantBundle/tr.lproj/Localizable.strings 140 | System/Library/Assistant/Plugins/Calendar.assistantBundle/uk.lproj/Localizable.strings 141 | System/Library/Assistant/Plugins/Calendar.assistantBundle/vi.lproj/Localizable.strings 142 | System/Library/Assistant/Plugins/Calendar.assistantBundle/zh_CN.lproj/Localizable.strings 143 | System/Library/Assistant/Plugins/Calendar.assistantBundle/zh_TW.lproj/Localizable.strings 144 | System/Library/Assistant/Plugins/ChatKitAssistant.assistantBundle/ChatKitAssistant 145 | System/Library/Assistant/Plugins/ChatKitAssistant.assistantBundle/Info.plist 146 | System/Library/Assistant/Plugins/FMF.assistantBundle/FMF 147 | System/Library/Assistant/Plugins/FMF.assistantBundle/Info.plist 148 | System/Library/Assistant/Plugins/FMF.assistantBundle/ar.lproj/Localizable.strings 149 | System/Library/Assistant/Plugins/FMF.assistantBundle/ca.lproj/Localizable.strings 150 | System/Library/Assistant/Plugins/FMF.assistantBundle/cs.lproj/Localizable.strings 151 | System/Library/Assistant/Plugins/FMF.assistantBundle/da.lproj/Localizable.strings 152 | System/Library/Assistant/Plugins/FMF.assistantBundle/de.lproj/Localizable.strings 153 | System/Library/Assistant/Plugins/FMF.assistantBundle/el.lproj/Localizable.strings 154 | System/Library/Assistant/Plugins/FMF.assistantBundle/en.lproj/Localizable.strings 155 | System/Library/Assistant/Plugins/FMF.assistantBundle/en_GB.lproj/Localizable.strings 156 | System/Library/Assistant/Plugins/FMF.assistantBundle/es.lproj/Localizable.strings 157 | System/Library/Assistant/Plugins/FMF.assistantBundle/fi.lproj/Localizable.strings 158 | System/Library/Assistant/Plugins/FMF.assistantBundle/fr.lproj/Localizable.strings 159 | System/Library/Assistant/Plugins/FMF.assistantBundle/he.lproj/Localizable.strings 160 | System/Library/Assistant/Plugins/FMF.assistantBundle/hr.lproj/Localizable.strings 161 | System/Library/Assistant/Plugins/FMF.assistantBundle/hu.lproj/Localizable.strings 162 | System/Library/Assistant/Plugins/FMF.assistantBundle/id.lproj/Localizable.strings 163 | System/Library/Assistant/Plugins/FMF.assistantBundle/it.lproj/Localizable.strings 164 | System/Library/Assistant/Plugins/FMF.assistantBundle/ja.lproj/Localizable.strings 165 | System/Library/Assistant/Plugins/FMF.assistantBundle/ko.lproj/Localizable.strings 166 | System/Library/Assistant/Plugins/FMF.assistantBundle/ms.lproj/Localizable.strings 167 | System/Library/Assistant/Plugins/FMF.assistantBundle/nl.lproj/Localizable.strings 168 | System/Library/Assistant/Plugins/FMF.assistantBundle/no.lproj/Localizable.strings 169 | System/Library/Assistant/Plugins/FMF.assistantBundle/pl.lproj/Localizable.strings 170 | System/Library/Assistant/Plugins/FMF.assistantBundle/pt.lproj/Localizable.strings 171 | System/Library/Assistant/Plugins/FMF.assistantBundle/pt_PT.lproj/Localizable.strings 172 | System/Library/Assistant/Plugins/FMF.assistantBundle/ro.lproj/Localizable.strings 173 | System/Library/Assistant/Plugins/FMF.assistantBundle/ru.lproj/Localizable.strings 174 | System/Library/Assistant/Plugins/FMF.assistantBundle/sk.lproj/Localizable.strings 175 | System/Library/Assistant/Plugins/FMF.assistantBundle/sv.lproj/Localizable.strings 176 | System/Library/Assistant/Plugins/FMF.assistantBundle/th.lproj/Localizable.strings 177 | System/Library/Assistant/Plugins/FMF.assistantBundle/tr.lproj/Localizable.strings 178 | System/Library/Assistant/Plugins/FMF.assistantBundle/uk.lproj/Localizable.strings 179 | System/Library/Assistant/Plugins/FMF.assistantBundle/vi.lproj/Localizable.strings 180 | System/Library/Assistant/Plugins/FMF.assistantBundle/zh_CN.lproj/Localizable.strings 181 | System/Library/Assistant/Plugins/FMF.assistantBundle/zh_TW.lproj/Localizable.strings 182 | System/Library/Assistant/Plugins/Mail.assistantBundle/Info.plist 183 | System/Library/Assistant/Plugins/Mail.assistantBundle/Mail 184 | System/Library/Assistant/Plugins/Maps.assistantBundle/Info.plist 185 | System/Library/Assistant/Plugins/Maps.assistantBundle/Maps 186 | System/Library/Assistant/Plugins/Media.assistantBundle/Info.plist 187 | System/Library/Assistant/Plugins/Media.assistantBundle/Media 188 | System/Library/Assistant/Plugins/MobileTimer.assistantBundle/Info.plist 189 | System/Library/Assistant/Plugins/MobileTimer.assistantBundle/MobileTimer 190 | System/Library/Assistant/Plugins/Notes.assistantBundle/Info.plist 191 | System/Library/Assistant/Plugins/Notes.assistantBundle/Notes 192 | System/Library/Assistant/Plugins/Phone.assistantBundle/Info.plist 193 | System/Library/Assistant/Plugins/Phone.assistantBundle/Phone 194 | System/Library/Assistant/Plugins/Reminders.assistantBundle/Info.plist 195 | System/Library/Assistant/Plugins/Reminders.assistantBundle/Reminders 196 | System/Library/Assistant/Plugins/Stocks.assistantBundle/Info.plist 197 | System/Library/Assistant/Plugins/Stocks.assistantBundle/Stocks 198 | System/Library/Assistant/Plugins/WebSearch.assistantBundle/Info.plist 199 | System/Library/Assistant/Plugins/WebSearch.assistantBundle/WebSearch 200 | System/Library/Assistant/UIPlugins/AddressBook.assistantUIBundle/ABSnippetTiledPaper_2only_@2x~iphone.png 201 | System/Library/Assistant/UIPlugins/AddressBook.assistantUIBundle/AddressBook 202 | System/Library/Assistant/UIPlugins/AddressBook.assistantUIBundle/disambiguationStar_2only_@2x~iphone.png 203 | System/Library/Assistant/UIPlugins/AddressBook.assistantUIBundle/Info.plist 204 | System/Library/Assistant/UIPlugins/AddressBook.assistantUIBundle/snippetStar_2only_@2x~iphone.png 205 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/birthday_2only_@2x~iphone.png 206 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/Calendar 207 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/dashborder-bottomleftcorner_2only_@2x~iphone.png 208 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/dashborder-bottomrightcorner_2only_@2x~iphone.png 209 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/dashborder-horizontal_2only_@2x~iphone.png 210 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/dashborder-leftT_2only_@2x~iphone.png 211 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/dashborder-rightT_2only_@2x~iphone.png 212 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/dashborder-topleftcorner_2only_@2x~iphone.png 213 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/dashborder-toprightcorner_2only_@2x~iphone.png 214 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/dashborder-vertical_2only_@2x~iphone.png 215 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/day-selected_2only_@2x~iphone.png 216 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/dot-effects_2only_@2x~iphone.png 217 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/dot-mask_2only_@2x~iphone.png 218 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/Icon-Small@2x.png 219 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/Info.plist 220 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/solidborder-bottomleftcorner_2only_@2x~iphone.png 221 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/solidborder-bottomrightcorner_2only_@2x~iphone.png 222 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/solidborder-horizontal_2only_@2x~iphone.png 223 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/solidborder-leftT_2only_@2x~iphone.png 224 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/solidborder-rightT_2only_@2x~iphone.png 225 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/solidborder-topleftcorner_2only_@2x~iphone.png 226 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/solidborder-toprightcorner_2only_@2x~iphone.png 227 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/solidborder-vertical_2only_@2x~iphone.png 228 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/today-selected_2only_@2x~iphone.png 229 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ar.lproj/Localizable.strings 230 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ca.lproj/Localizable.strings 231 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/cs.lproj/Localizable.strings 232 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/da.lproj/Localizable.strings 233 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/de.lproj/Localizable.strings 234 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/el.lproj/Localizable.strings 235 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/en.lproj/Localizable.strings 236 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/en_GB.lproj/Localizable.strings 237 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/es.lproj/Localizable.strings 238 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/fi.lproj/Localizable.strings 239 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/fr.lproj/Localizable.strings 240 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/he.lproj/Localizable.strings 241 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/hr.lproj/Localizable.strings 242 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/hu.lproj/Localizable.strings 243 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/id.lproj/Localizable.strings 244 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/it.lproj/Localizable.strings 245 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ja.lproj/Localizable.strings 246 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ko.lproj/Localizable.strings 247 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ms.lproj/Localizable.strings 248 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/nl.lproj/Localizable.strings 249 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/no.lproj/Localizable.strings 250 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/pl.lproj/Localizable.strings 251 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/pt.lproj/Localizable.strings 252 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/pt_PT.lproj/Localizable.strings 253 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ro.lproj/Localizable.strings 254 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/ru.lproj/Localizable.strings 255 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/sk.lproj/Localizable.strings 256 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/sv.lproj/Localizable.strings 257 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/th.lproj/Localizable.strings 258 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/tr.lproj/Localizable.strings 259 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/uk.lproj/Localizable.strings 260 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/vi.lproj/Localizable.strings 261 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/zh_CN.lproj/Localizable.strings 262 | System/Library/Assistant/UIPlugins/Calendar.assistantUIBundle/zh_TW.lproj/Localizable.strings 263 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/BlueChatBubble@2x.png 264 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ChatKitAssistantUI 265 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/icon@2x.png 266 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/Info.plist 267 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/UnsentDashed@2x.png 268 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ar.lproj/CKAssistantUISnippet.strings 269 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ca.lproj/CKAssistantUISnippet.strings 270 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/cs.lproj/CKAssistantUISnippet.strings 271 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/da.lproj/CKAssistantUISnippet.strings 272 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/de.lproj/CKAssistantUISnippet.strings 273 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/el.lproj/CKAssistantUISnippet.strings 274 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/en.lproj/CKAssistantUISnippet.strings 275 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/en_GB.lproj/CKAssistantUISnippet.strings 276 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/es.lproj/CKAssistantUISnippet.strings 277 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/fi.lproj/CKAssistantUISnippet.strings 278 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/fr.lproj/CKAssistantUISnippet.strings 279 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/he.lproj/CKAssistantUISnippet.strings 280 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/hr.lproj/CKAssistantUISnippet.strings 281 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/hu.lproj/CKAssistantUISnippet.strings 282 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/id.lproj/CKAssistantUISnippet.strings 283 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/it.lproj/CKAssistantUISnippet.strings 284 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ja.lproj/CKAssistantUISnippet.strings 285 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ko.lproj/CKAssistantUISnippet.strings 286 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ms.lproj/CKAssistantUISnippet.strings 287 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/nl.lproj/CKAssistantUISnippet.strings 288 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/no.lproj/CKAssistantUISnippet.strings 289 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/pl.lproj/CKAssistantUISnippet.strings 290 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/pt.lproj/CKAssistantUISnippet.strings 291 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/pt_PT.lproj/CKAssistantUISnippet.strings 292 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ro.lproj/CKAssistantUISnippet.strings 293 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/ru.lproj/CKAssistantUISnippet.strings 294 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/sk.lproj/CKAssistantUISnippet.strings 295 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/sv.lproj/CKAssistantUISnippet.strings 296 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/th.lproj/CKAssistantUISnippet.strings 297 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/tr.lproj/CKAssistantUISnippet.strings 298 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/uk.lproj/CKAssistantUISnippet.strings 299 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/vi.lproj/CKAssistantUISnippet.strings 300 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/zh_CN.lproj/CKAssistantUISnippet.strings 301 | System/Library/Assistant/UIPlugins/ChatKitAssistantUI.assistantUIBundle/zh_TW.lproj/CKAssistantUISnippet.strings 302 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/FMF 303 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/FMF-ListTop@2x.png 304 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/FMF-PaperTile@2x.png 305 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/FMF-SnippetOverflowEven@2x.png 306 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/FMF-SnippetOverflowUneven@2x.png 307 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/FMF-SnippetRowEndEven@2x.png 308 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/FMF-SnippetRowEndUneven@2x.png 309 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/FMF-SnippetRowEven@2x.png 310 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/FMF-SnippetRowSingle@2x.png 311 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/FMF-SnippetRowUneven@2x.png 312 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/green-sign@2x.png 313 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/icon_silhouette@2x.png 314 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/Info.plist 315 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/location_dot_purple@2x.png 316 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/Marion-Bold.ttf 317 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/photo-overlay@2x.png 318 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/separator-noperf@2x.png 319 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ar.lproj/InfoPlist.strings 320 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ar.lproj/Localizable.strings 321 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ca.lproj/InfoPlist.strings 322 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ca.lproj/Localizable.strings 323 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/cs.lproj/InfoPlist.strings 324 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/cs.lproj/Localizable.strings 325 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/da.lproj/InfoPlist.strings 326 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/da.lproj/Localizable.strings 327 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/de.lproj/InfoPlist.strings 328 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/de.lproj/Localizable.strings 329 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/el.lproj/InfoPlist.strings 330 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/el.lproj/Localizable.strings 331 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/en.lproj/InfoPlist.strings 332 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/en.lproj/Localizable.strings 333 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/en_GB.lproj/InfoPlist.strings 334 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/en_GB.lproj/Localizable.strings 335 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/es.lproj/InfoPlist.strings 336 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/es.lproj/Localizable.strings 337 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/fi.lproj/InfoPlist.strings 338 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/fi.lproj/Localizable.strings 339 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/fr.lproj/InfoPlist.strings 340 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/fr.lproj/Localizable.strings 341 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/he.lproj/InfoPlist.strings 342 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/he.lproj/Localizable.strings 343 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/hr.lproj/InfoPlist.strings 344 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/hr.lproj/Localizable.strings 345 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/hu.lproj/InfoPlist.strings 346 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/hu.lproj/Localizable.strings 347 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/id.lproj/InfoPlist.strings 348 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/id.lproj/Localizable.strings 349 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/it.lproj/InfoPlist.strings 350 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/it.lproj/Localizable.strings 351 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ja.lproj/InfoPlist.strings 352 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ja.lproj/Localizable.strings 353 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ko.lproj/InfoPlist.strings 354 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ko.lproj/Localizable.strings 355 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ms.lproj/InfoPlist.strings 356 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ms.lproj/Localizable.strings 357 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/nl.lproj/InfoPlist.strings 358 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/nl.lproj/Localizable.strings 359 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/no.lproj/InfoPlist.strings 360 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/no.lproj/Localizable.strings 361 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/pl.lproj/InfoPlist.strings 362 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/pl.lproj/Localizable.strings 363 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/pt.lproj/InfoPlist.strings 364 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/pt.lproj/Localizable.strings 365 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/pt_PT.lproj/InfoPlist.strings 366 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/pt_PT.lproj/Localizable.strings 367 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ro.lproj/InfoPlist.strings 368 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ro.lproj/Localizable.strings 369 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ru.lproj/InfoPlist.strings 370 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/ru.lproj/Localizable.strings 371 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/sk.lproj/InfoPlist.strings 372 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/sk.lproj/Localizable.strings 373 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/sv.lproj/InfoPlist.strings 374 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/sv.lproj/Localizable.strings 375 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/th.lproj/InfoPlist.strings 376 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/th.lproj/Localizable.strings 377 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/tr.lproj/InfoPlist.strings 378 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/tr.lproj/Localizable.strings 379 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/uk.lproj/InfoPlist.strings 380 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/uk.lproj/Localizable.strings 381 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/vi.lproj/InfoPlist.strings 382 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/vi.lproj/Localizable.strings 383 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/zh_CN.lproj/InfoPlist.strings 384 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/zh_CN.lproj/Localizable.strings 385 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/zh_TW.lproj/InfoPlist.strings 386 | System/Library/Assistant/UIPlugins/FMF.assistantUIBundle/zh_TW.lproj/Localizable.strings 387 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Attachment@2x.png 388 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ComposeViewDividerLine@2x.png 389 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/CustomStampBackground@2x.png 390 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/DefaultStamp@2x.png 391 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Flag@2x.png 392 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Forwarded@2x.png 393 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Icon-Small@2x.png 394 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Info.plist 395 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Mail 396 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/MessageHeaderDividerLine_2only_@2x.png 397 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/PlaceStampHere@2x.png 398 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Postmark@2x.png 399 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Replied@2x.png 400 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/StampPictureMask@2x.png 401 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Unread@2x.png 402 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ar.lproj/Assistant.strings 403 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ca.lproj/Assistant.strings 404 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/cs.lproj/Assistant.strings 405 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/da.lproj/Assistant.strings 406 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Dutch.lproj/Assistant.strings 407 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/el.lproj/Assistant.strings 408 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/en_GB.lproj/Assistant.strings 409 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/English.lproj/Assistant.strings 410 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/fi.lproj/Assistant.strings 411 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/French.lproj/Assistant.strings 412 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/German.lproj/Assistant.strings 413 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/he.lproj/Assistant.strings 414 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/hr.lproj/Assistant.strings 415 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/hu.lproj/Assistant.strings 416 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/id.lproj/Assistant.strings 417 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Italian.lproj/Assistant.strings 418 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Japanese.lproj/Assistant.strings 419 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ko.lproj/Assistant.strings 420 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ms.lproj/Assistant.strings 421 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/no.lproj/Assistant.strings 422 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/pl.lproj/Assistant.strings 423 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/pt.lproj/Assistant.strings 424 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/pt_PT.lproj/Assistant.strings 425 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ro.lproj/Assistant.strings 426 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/ru.lproj/Assistant.strings 427 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/sk.lproj/Assistant.strings 428 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/Spanish.lproj/Assistant.strings 429 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/sv.lproj/Assistant.strings 430 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/th.lproj/Assistant.strings 431 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/tr.lproj/Assistant.strings 432 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/uk.lproj/Assistant.strings 433 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/vi.lproj/Assistant.strings 434 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/zh_CN.lproj/Assistant.strings 435 | System/Library/Assistant/UIPlugins/Mail.assistantUIBundle/zh_TW.lproj/Assistant.strings 436 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/Info.plist 437 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/ListEndEven_2only_@2x~iphone.png 438 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/ListEndUneven_2only_@2x~iphone.png 439 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/ListTop_2only_@2x~iphone.png 440 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/Maps 441 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/SnippetRowEven_2only_@2x~iphone.png 442 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/SnippetRowUneven_2only_@2x~iphone.png 443 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/StarEmpty_2only_@2x~iphone.png 444 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/StarEmptyGray_2only_@2x~iphone.png 445 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/StarFull_2only_@2x~iphone.png 446 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/YelpLogo_2only_@2x~iphone.png 447 | System/Library/Assistant/UIPlugins/Maps.assistantUIBundle/YelpLogoPressedState_2only_@2x~iphone.png 448 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/0_2only_@2x.png 449 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/1_2only_@2x.png 450 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/2_2only_@2x.png 451 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/3_2only_@2x.png 452 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/4_2only_@2x.png 453 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/5_2only_@2x.png 454 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/6_2only_@2x.png 455 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/7_2only_@2x.png 456 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/8_2only_@2x.png 457 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/9_2only_@2x.png 458 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/AlarmFrame_2only_@2x.png 459 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/AM_2only_@2x.png 460 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/base_2only_@2x.png 461 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ClockPlateBottom_2only_@2x.png 462 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ClockPlateBreaker_2only_@2x.png 463 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ClockPlateMiddle_2only_@2x.png 464 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ClockPlateTop_2only_@2x.png 465 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Gloss_2only_@2x.png 466 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/hour.pdf 467 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Info.plist 468 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/MaskLeft_2only_@2x.png 469 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/MaskRight_2only_@2x.png 470 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/mins.pdf 471 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/MobileTimer 472 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Needle_2only_@2x.png 473 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/PM_2only_@2x.png 474 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/pmbase_2only_@2x.png 475 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/pmhour.pdf 476 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/pmmins.pdf 477 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/secs.pdf 478 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/TimerFrame_2only_@2x.png 479 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ar.lproj/Localizable.strings 480 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ca.lproj/Localizable.strings 481 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/cs.lproj/Localizable.strings 482 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/da.lproj/Localizable.strings 483 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Dutch.lproj/Localizable.strings 484 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/el.lproj/Localizable.strings 485 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/en_GB.lproj/Localizable.strings 486 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/English.lproj/Localizable.strings 487 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/fi.lproj/Localizable.strings 488 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/French.lproj/Localizable.strings 489 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/German.lproj/Localizable.strings 490 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/he.lproj/Localizable.strings 491 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/hr.lproj/Localizable.strings 492 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/hu.lproj/Localizable.strings 493 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/id.lproj/Localizable.strings 494 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Italian.lproj/Localizable.strings 495 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Japanese.lproj/Localizable.strings 496 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ko.lproj/Localizable.strings 497 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ms.lproj/Localizable.strings 498 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/no.lproj/Localizable.strings 499 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/pl.lproj/Localizable.strings 500 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/pt.lproj/Localizable.strings 501 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/pt_PT.lproj/Localizable.strings 502 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ro.lproj/Localizable.strings 503 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/ru.lproj/Localizable.strings 504 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/sk.lproj/Localizable.strings 505 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/Spanish.lproj/Localizable.strings 506 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/sv.lproj/Localizable.strings 507 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/th.lproj/Localizable.strings 508 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/tr.lproj/Localizable.strings 509 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/uk.lproj/Localizable.strings 510 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/vi.lproj/Localizable.strings 511 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/zh_CN.lproj/Localizable.strings 512 | System/Library/Assistant/UIPlugins/MobileTimer.assistantUIBundle/zh_TW.lproj/Localizable.strings 513 | System/Library/Assistant/UIPlugins/Notes.assistantUIBundle/Info.plist 514 | System/Library/Assistant/UIPlugins/Notes.assistantUIBundle/Notes 515 | System/Library/Assistant/UIPlugins/Notes.assistantUIBundle/verticalLines@2x.png 516 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/checkboxChecked@2x.png 517 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/checkboxUnchecked@2x.png 518 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/dashborder-bottomleftcorner_2only_@2x~iphone.png 519 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/dashborder-bottomrightcorner_2only_@2x~iphone.png 520 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/dashborder-horizontal_2only_@2x~iphone.png 521 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/dashborder-leftT_2only_@2x~iphone.png 522 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/dashborder-rightT_2only_@2x~iphone.png 523 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/dashborder-topleftcorner_2only_@2x~iphone.png 524 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/dashborder-toprightcorner_2only_@2x~iphone.png 525 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/dashborder-vertical_2only_@2x~iphone.png 526 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/Info.plist 527 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/location@2x.png 528 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/Reminders 529 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/solidborder-bottomleftcorner_2only_@2x~iphone.png 530 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/solidborder-bottomrightcorner_2only_@2x~iphone.png 531 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/solidborder-horizontal_2only_@2x~iphone.png 532 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/solidborder-leftT_2only_@2x~iphone.png 533 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/solidborder-rightT_2only_@2x~iphone.png 534 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/solidborder-topleftcorner_2only_@2x~iphone.png 535 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/solidborder-toprightcorner_2only_@2x~iphone.png 536 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/solidborder-vertical_2only_@2x~iphone.png 537 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/vertical-rule@2x~iphone.png 538 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ar.lproj/General.strings 539 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ca.lproj/General.strings 540 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/cs.lproj/General.strings 541 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/da.lproj/General.strings 542 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/de.lproj/General.strings 543 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/el.lproj/General.strings 544 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/en.lproj/General.strings 545 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/en_GB.lproj/General.strings 546 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/es.lproj/General.strings 547 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/fi.lproj/General.strings 548 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/fr.lproj/General.strings 549 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/he.lproj/General.strings 550 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/hr.lproj/General.strings 551 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/hu.lproj/General.strings 552 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/id.lproj/General.strings 553 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/it.lproj/General.strings 554 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ja.lproj/General.strings 555 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ko.lproj/General.strings 556 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ms.lproj/General.strings 557 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/nl.lproj/General.strings 558 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/no.lproj/General.strings 559 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/pl.lproj/General.strings 560 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/pt.lproj/General.strings 561 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/pt_PT.lproj/General.strings 562 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ro.lproj/General.strings 563 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/ru.lproj/General.strings 564 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/sk.lproj/General.strings 565 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/sv.lproj/General.strings 566 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/th.lproj/General.strings 567 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/tr.lproj/General.strings 568 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/uk.lproj/General.strings 569 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/vi.lproj/General.strings 570 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/zh_CN.lproj/General.strings 571 | System/Library/Assistant/UIPlugins/Reminders.assistantUIBundle/zh_TW.lproj/General.strings 572 | System/Library/Assistant/UIPlugins/SpringBoard.assistantUIBundle/Info.plist 573 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle/DownChangeArrow@2x.png 574 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle/Icon-Small@2x.png 575 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle/Info.plist 576 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle/StockDown_2only_@2x~iphone.png 577 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle/Stocks 578 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle/StockUp_2only_@2x~iphone.png 579 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle/TickerTape_2only_@2x~iphone.png 580 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle/UpChangeArrow@2x.png 581 | System/Library/Assistant/UIPlugins/Stocks.assistantUIBundle/YahooLogo_2only_@2x~iphone.png 582 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/icon_2only_@2x.png 583 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/Info.plist 584 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/microperf_2only_@2x~iphone.png 585 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/perforation_2only_@2x~iphone.png 586 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/sidepapertile_2only_@2x~iphone.png 587 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/WAAnswer 588 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/wapaper_2only_@2x~iphone.png 589 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/wolframAttribution_2only_@2x~iphone.png 590 | System/Library/Assistant/UIPlugins/WAAnswer.assistantUIBundle/en.lproj/InfoPlist.strings 591 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/day_rowBottomDown@2x.png 592 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/day_rowBottomUp@2x.png 593 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/day_rowDown@2x.png 594 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/day_rowUp@2x.png 595 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/day_top@2x.png 596 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Icon-Small-Celsius@2x.png 597 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Icon-Small@2x.png 598 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Info.plist 599 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mask@2x.png 600 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-clearNight@2x.png 601 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-cloudrain@2x.png 602 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-clouds@2x.png 603 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-flurries@2x.png 604 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-fog@2x.png 605 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-hail@2x.png 606 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-ice@2x.png 607 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-lightning@2x.png 608 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-rain@2x.png 609 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-snow@2x.png 610 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-snowrain@2x.png 611 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-sun@2x.png 612 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-suncloud@2x.png 613 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-sunhaze@2x.png 614 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-sunrain@2x.png 615 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/mini-wind@2x.png 616 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/night_rowBottomDown@2x.png 617 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/night_rowBottomUp@2x.png 618 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/night_rowDown@2x.png 619 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/night_rowUp@2x.png 620 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/night_top@2x.png 621 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/WeatherAssistantUI 622 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/WeatherBG_Day@2x.png 623 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/WeatherBG_Day_Headless@2x.png 624 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/WeatherBG_Night@2x.png 625 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/WeatherBG_Night_Headless@2x.png 626 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ar.lproj/AssistantUILocalizableStrings.strings 627 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ca.lproj/AssistantUILocalizableStrings.strings 628 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/cs.lproj/AssistantUILocalizableStrings.strings 629 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/da.lproj/AssistantUILocalizableStrings.strings 630 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Dutch.lproj/AssistantUILocalizableStrings.strings 631 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/el.lproj/AssistantUILocalizableStrings.strings 632 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/en_GB.lproj/AssistantUILocalizableStrings.strings 633 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/English.lproj/AssistantUILocalizableStrings.strings 634 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/fi.lproj/AssistantUILocalizableStrings.strings 635 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/French.lproj/AssistantUILocalizableStrings.strings 636 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/German.lproj/AssistantUILocalizableStrings.strings 637 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/he.lproj/AssistantUILocalizableStrings.strings 638 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/hr.lproj/AssistantUILocalizableStrings.strings 639 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/hu.lproj/AssistantUILocalizableStrings.strings 640 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/id.lproj/AssistantUILocalizableStrings.strings 641 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Italian.lproj/AssistantUILocalizableStrings.strings 642 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Japanese.lproj/AssistantUILocalizableStrings.strings 643 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ko.lproj/AssistantUILocalizableStrings.strings 644 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ms.lproj/AssistantUILocalizableStrings.strings 645 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/no.lproj/AssistantUILocalizableStrings.strings 646 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/pl.lproj/AssistantUILocalizableStrings.strings 647 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/pt.lproj/AssistantUILocalizableStrings.strings 648 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/pt_PT.lproj/AssistantUILocalizableStrings.strings 649 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ro.lproj/AssistantUILocalizableStrings.strings 650 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/ru.lproj/AssistantUILocalizableStrings.strings 651 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/sk.lproj/AssistantUILocalizableStrings.strings 652 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/Spanish.lproj/AssistantUILocalizableStrings.strings 653 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/sv.lproj/AssistantUILocalizableStrings.strings 654 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/th.lproj/AssistantUILocalizableStrings.strings 655 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/tr.lproj/AssistantUILocalizableStrings.strings 656 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/uk.lproj/AssistantUILocalizableStrings.strings 657 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/vi.lproj/AssistantUILocalizableStrings.strings 658 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/zh_CN.lproj/AssistantUILocalizableStrings.strings 659 | System/Library/Assistant/UIPlugins/WeatherAssistantUI.assistantUIBundle/zh_TW.lproj/AssistantUILocalizableStrings.strings 660 | System/Library/CoreServices/SpringBoard.app/AssistantButtonCancel_2only_@2x~iphone.png 661 | System/Library/CoreServices/SpringBoard.app/AssistantButtonCancelPressed_2only_@2x~iphone.png 662 | System/Library/CoreServices/SpringBoard.app/AssistantButtonConfirm_2only_@2x~iphone.png 663 | System/Library/CoreServices/SpringBoard.app/AssistantButtonConfirmPressed_2only_@2x~iphone.png 664 | System/Library/CoreServices/SpringBoard.app/AssistantDisambiguationBot_2only_@2x~iphone.png 665 | System/Library/CoreServices/SpringBoard.app/AssistantDisambiguationMid_2only_@2x~iphone.png 666 | System/Library/CoreServices/SpringBoard.app/AssistantDisambiguationRow_2only_@2x~iphone.png 667 | System/Library/CoreServices/SpringBoard.app/AssistantDisambiguationSelectBot_2only_@2x~iphone.png 668 | System/Library/CoreServices/SpringBoard.app/AssistantDisambiguationSelectMid_2only_@2x~iphone.png 669 | System/Library/CoreServices/SpringBoard.app/AssistantDisambiguationSelectTop_2only_@2x~iphone.png 670 | System/Library/CoreServices/SpringBoard.app/AssistantDisambiguationTop_2only_@2x~iphone.png 671 | System/Library/CoreServices/SpringBoard.app/AssistantGuideBack_2only_@2x~iphone.png 672 | System/Library/CoreServices/SpringBoard.app/AssistantGuideBackPressed_2only_@2x~iphone.png 673 | System/Library/CoreServices/SpringBoard.app/AssistantGuideBG_2only_@2x~iphone.png 674 | System/Library/CoreServices/SpringBoard.app/AssistantGuideCellPressed_2only_@2x~iphone.png 675 | System/Library/CoreServices/SpringBoard.app/AssistantGuideChevron_2only_@2x~iphone.png 676 | System/Library/CoreServices/SpringBoard.app/AssistantGuideLineBottom_2only_@2x~iphone.png 677 | System/Library/CoreServices/SpringBoard.app/AssistantGuideLineTop_2only_@2x~iphone.png 678 | System/Library/CoreServices/SpringBoard.app/AssistantGuideRowSeparator_2only_@2x~iphone.png 679 | System/Library/CoreServices/SpringBoard.app/AssistantGuideShadowBottom_2only_@2x~iphone.png 680 | System/Library/CoreServices/SpringBoard.app/AssistantGuideShadowTop_2only_@2x~iphone.png 681 | System/Library/CoreServices/SpringBoard.app/AssistantLinen_2only_@2x~iphone.png 682 | System/Library/CoreServices/SpringBoard.app/AssistantMagicPocket_2only_@2x~iphone.png 683 | System/Library/CoreServices/SpringBoard.app/AssistantMic.artwork 684 | System/Library/CoreServices/SpringBoard.app/AssistantMicPressed_2only_@2x~iphone.png 685 | System/Library/CoreServices/SpringBoard.app/AssistantNotConnected_2only_@2x~iphone.png 686 | System/Library/CoreServices/SpringBoard.app/AssistantStatusShadow_2only_@2x~iphone.png 687 | System/Library/CoreServices/SpringBoard.app/ar.lproj/Assistant.strings 688 | System/Library/CoreServices/SpringBoard.app/ar.lproj/BulletinBoard.strings 689 | System/Library/CoreServices/SpringBoard.app/ar.lproj/FolderNaming.strings 690 | System/Library/CoreServices/SpringBoard.app/ar.lproj/Jibbler.strings 691 | System/Library/CoreServices/SpringBoard.app/ar.lproj/SpringBoard.strings 692 | System/Library/CoreServices/SpringBoard.app/ar.lproj/USSD.strings 693 | System/Library/CoreServices/SpringBoard.app/ca.lproj/Assistant.strings 694 | System/Library/CoreServices/SpringBoard.app/cs.lproj/Assistant.strings 695 | System/Library/CoreServices/SpringBoard.app/da.lproj/Assistant.strings 696 | System/Library/CoreServices/SpringBoard.app/Dutch.lproj/Assistant.strings 697 | System/Library/CoreServices/SpringBoard.app/el.lproj/Assistant.strings 698 | System/Library/CoreServices/SpringBoard.app/en_GB.lproj/Assistant.strings 699 | System/Library/CoreServices/SpringBoard.app/English.lproj/Assistant.strings 700 | System/Library/CoreServices/SpringBoard.app/fi.lproj/Assistant.strings 701 | System/Library/CoreServices/SpringBoard.app/French.lproj/Assistant.strings 702 | System/Library/CoreServices/SpringBoard.app/German.lproj/Assistant.strings 703 | System/Library/CoreServices/SpringBoard.app/he.lproj/Assistant.strings 704 | System/Library/CoreServices/SpringBoard.app/hr.lproj/Assistant.strings 705 | System/Library/CoreServices/SpringBoard.app/hu.lproj/Assistant.strings 706 | System/Library/CoreServices/SpringBoard.app/id.lproj/Assistant.strings 707 | System/Library/CoreServices/SpringBoard.app/Italian.lproj/Assistant.strings 708 | System/Library/CoreServices/SpringBoard.app/Japanese.lproj/Assistant.strings 709 | System/Library/CoreServices/SpringBoard.app/ko.lproj/Assistant.strings 710 | System/Library/CoreServices/SpringBoard.app/ms.lproj/Assistant.strings 711 | System/Library/CoreServices/SpringBoard.app/no.lproj/Assistant.strings 712 | System/Library/CoreServices/SpringBoard.app/pl.lproj/Assistant.strings 713 | System/Library/CoreServices/SpringBoard.app/pt.lproj/Assistant.strings 714 | System/Library/CoreServices/SpringBoard.app/pt_PT.lproj/Assistant.strings 715 | System/Library/CoreServices/SpringBoard.app/ro.lproj/Assistant.strings 716 | System/Library/CoreServices/SpringBoard.app/ru.lproj/Assistant.strings 717 | System/Library/CoreServices/SpringBoard.app/sk.lproj/Assistant.strings 718 | System/Library/CoreServices/SpringBoard.app/Spanish.lproj/Assistant.strings 719 | System/Library/CoreServices/SpringBoard.app/sv.lproj/Assistant.strings 720 | System/Library/CoreServices/SpringBoard.app/th.lproj/Assistant.strings 721 | System/Library/CoreServices/SpringBoard.app/tr.lproj/Assistant.strings 722 | System/Library/CoreServices/SpringBoard.app/uk.lproj/Assistant.strings 723 | System/Library/CoreServices/SpringBoard.app/vi.lproj/Assistant.strings 724 | System/Library/CoreServices/SpringBoard.app/zh_CN.lproj/Assistant.strings 725 | System/Library/CoreServices/SpringBoard.app/zh_TW.lproj/Assistant.strings 726 | System/Library/LaunchDaemons/com.apple.assistant_service.plist 727 | System/Library/LaunchDaemons/com.apple.assistantd.plist 728 | System/Library/PreferenceBundles/Assistant.bundle/Assistant 729 | System/Library/PreferenceBundles/Assistant.bundle/Assistant.plist 730 | System/Library/PreferenceBundles/Assistant.bundle/Info.plist 731 | System/Library/PreferenceBundles/Assistant.bundle/ar.lproj/Assistant.strings 732 | System/Library/PreferenceBundles/Assistant.bundle/ar.lproj/InfoPlist.strings 733 | System/Library/PreferenceBundles/Assistant.bundle/ca.lproj/Assistant.strings 734 | System/Library/PreferenceBundles/Assistant.bundle/ca.lproj/InfoPlist.strings 735 | System/Library/PreferenceBundles/Assistant.bundle/cs.lproj/Assistant.strings 736 | System/Library/PreferenceBundles/Assistant.bundle/cs.lproj/InfoPlist.strings 737 | System/Library/PreferenceBundles/Assistant.bundle/da.lproj/Assistant.strings 738 | System/Library/PreferenceBundles/Assistant.bundle/da.lproj/InfoPlist.strings 739 | System/Library/PreferenceBundles/Assistant.bundle/Dutch.lproj/Assistant.strings 740 | System/Library/PreferenceBundles/Assistant.bundle/Dutch.lproj/InfoPlist.strings 741 | System/Library/PreferenceBundles/Assistant.bundle/el.lproj/Assistant.strings 742 | System/Library/PreferenceBundles/Assistant.bundle/el.lproj/InfoPlist.strings 743 | System/Library/PreferenceBundles/Assistant.bundle/en_GB.lproj/Assistant.strings 744 | System/Library/PreferenceBundles/Assistant.bundle/en_GB.lproj/InfoPlist.strings 745 | System/Library/PreferenceBundles/Assistant.bundle/English.lproj/Assistant.strings 746 | System/Library/PreferenceBundles/Assistant.bundle/English.lproj/InfoPlist.strings 747 | System/Library/PreferenceBundles/Assistant.bundle/fi.lproj/Assistant.strings 748 | System/Library/PreferenceBundles/Assistant.bundle/fi.lproj/InfoPlist.strings 749 | System/Library/PreferenceBundles/Assistant.bundle/French.lproj/Assistant.strings 750 | System/Library/PreferenceBundles/Assistant.bundle/French.lproj/InfoPlist.strings 751 | System/Library/PreferenceBundles/Assistant.bundle/German.lproj/Assistant.strings 752 | System/Library/PreferenceBundles/Assistant.bundle/German.lproj/InfoPlist.strings 753 | System/Library/PreferenceBundles/Assistant.bundle/he.lproj/Assistant.strings 754 | System/Library/PreferenceBundles/Assistant.bundle/he.lproj/InfoPlist.strings 755 | System/Library/PreferenceBundles/Assistant.bundle/hr.lproj/Assistant.strings 756 | System/Library/PreferenceBundles/Assistant.bundle/hr.lproj/InfoPlist.strings 757 | System/Library/PreferenceBundles/Assistant.bundle/hu.lproj/Assistant.strings 758 | System/Library/PreferenceBundles/Assistant.bundle/hu.lproj/InfoPlist.strings 759 | System/Library/PreferenceBundles/Assistant.bundle/id.lproj/Assistant.strings 760 | System/Library/PreferenceBundles/Assistant.bundle/id.lproj/InfoPlist.strings 761 | System/Library/PreferenceBundles/Assistant.bundle/Italian.lproj/Assistant.strings 762 | System/Library/PreferenceBundles/Assistant.bundle/Italian.lproj/InfoPlist.strings 763 | System/Library/PreferenceBundles/Assistant.bundle/Japanese.lproj/Assistant.strings 764 | System/Library/PreferenceBundles/Assistant.bundle/Japanese.lproj/InfoPlist.strings 765 | System/Library/PreferenceBundles/Assistant.bundle/ko.lproj/Assistant.strings 766 | System/Library/PreferenceBundles/Assistant.bundle/ko.lproj/InfoPlist.strings 767 | System/Library/PreferenceBundles/Assistant.bundle/ms.lproj/Assistant.strings 768 | System/Library/PreferenceBundles/Assistant.bundle/ms.lproj/InfoPlist.strings 769 | System/Library/PreferenceBundles/Assistant.bundle/no.lproj/Assistant.strings 770 | System/Library/PreferenceBundles/Assistant.bundle/no.lproj/InfoPlist.strings 771 | System/Library/PreferenceBundles/Assistant.bundle/pl.lproj/Assistant.strings 772 | System/Library/PreferenceBundles/Assistant.bundle/pl.lproj/InfoPlist.strings 773 | System/Library/PreferenceBundles/Assistant.bundle/pt.lproj/Assistant.strings 774 | System/Library/PreferenceBundles/Assistant.bundle/pt.lproj/InfoPlist.strings 775 | System/Library/PreferenceBundles/Assistant.bundle/pt_PT.lproj/Assistant.strings 776 | System/Library/PreferenceBundles/Assistant.bundle/pt_PT.lproj/InfoPlist.strings 777 | System/Library/PreferenceBundles/Assistant.bundle/ro.lproj/Assistant.strings 778 | System/Library/PreferenceBundles/Assistant.bundle/ro.lproj/InfoPlist.strings 779 | System/Library/PreferenceBundles/Assistant.bundle/ru.lproj/Assistant.strings 780 | System/Library/PreferenceBundles/Assistant.bundle/ru.lproj/InfoPlist.strings 781 | System/Library/PreferenceBundles/Assistant.bundle/sk.lproj/Assistant.strings 782 | System/Library/PreferenceBundles/Assistant.bundle/sk.lproj/InfoPlist.strings 783 | System/Library/PreferenceBundles/Assistant.bundle/Spanish.lproj/Assistant.strings 784 | System/Library/PreferenceBundles/Assistant.bundle/Spanish.lproj/InfoPlist.strings 785 | System/Library/PreferenceBundles/Assistant.bundle/sv.lproj/Assistant.strings 786 | System/Library/PreferenceBundles/Assistant.bundle/sv.lproj/InfoPlist.strings 787 | System/Library/PreferenceBundles/Assistant.bundle/th.lproj/Assistant.strings 788 | System/Library/PreferenceBundles/Assistant.bundle/th.lproj/InfoPlist.strings 789 | System/Library/PreferenceBundles/Assistant.bundle/tr.lproj/Assistant.strings 790 | System/Library/PreferenceBundles/Assistant.bundle/tr.lproj/InfoPlist.strings 791 | System/Library/PreferenceBundles/Assistant.bundle/uk.lproj/Assistant.strings 792 | System/Library/PreferenceBundles/Assistant.bundle/uk.lproj/InfoPlist.strings 793 | System/Library/PreferenceBundles/Assistant.bundle/vi.lproj/Assistant.strings 794 | System/Library/PreferenceBundles/Assistant.bundle/vi.lproj/InfoPlist.strings 795 | System/Library/PreferenceBundles/Assistant.bundle/zh_CN.lproj/Assistant.strings 796 | System/Library/PreferenceBundles/Assistant.bundle/zh_CN.lproj/InfoPlist.strings 797 | System/Library/PreferenceBundles/Assistant.bundle/zh_TW.lproj/Assistant.strings 798 | System/Library/PreferenceBundles/Assistant.bundle/zh_TW.lproj/InfoPlist.strings 799 | System/Library/PrivateFrameworks/AssistantServices.framework/assistant_service 800 | System/Library/PrivateFrameworks/AssistantServices.framework/assistantd 801 | System/Library/PrivateFrameworks/AssistantServices.framework/AssistantSettingsIcon_2only_@2x.png 802 | System/Library/PrivateFrameworks/AssistantServices.framework/dt-begin.caf 803 | System/Library/PrivateFrameworks/AssistantServices.framework/dt-cancel.caf 804 | System/Library/PrivateFrameworks/AssistantServices.framework/dt-confirm.caf 805 | System/Library/PrivateFrameworks/AssistantServices.framework/Info.plist 806 | System/Library/PrivateFrameworks/AssistantServices.framework/ar.lproj/InfoPlist.strings 807 | System/Library/PrivateFrameworks/AssistantServices.framework/ca.lproj/InfoPlist.strings 808 | System/Library/PrivateFrameworks/AssistantServices.framework/cs.lproj/InfoPlist.strings 809 | System/Library/PrivateFrameworks/AssistantServices.framework/da.lproj/InfoPlist.strings 810 | System/Library/PrivateFrameworks/AssistantServices.framework/Dutch.lproj/InfoPlist.strings 811 | System/Library/PrivateFrameworks/AssistantServices.framework/el.lproj/InfoPlist.strings 812 | System/Library/PrivateFrameworks/AssistantServices.framework/en_GB.lproj/InfoPlist.strings 813 | System/Library/PrivateFrameworks/AssistantServices.framework/English.lproj/InfoPlist.strings 814 | System/Library/PrivateFrameworks/AssistantServices.framework/fi.lproj/InfoPlist.strings 815 | System/Library/PrivateFrameworks/AssistantServices.framework/French.lproj/InfoPlist.strings 816 | System/Library/PrivateFrameworks/AssistantServices.framework/German.lproj/InfoPlist.strings 817 | System/Library/PrivateFrameworks/AssistantServices.framework/he.lproj/InfoPlist.strings 818 | System/Library/PrivateFrameworks/AssistantServices.framework/hr.lproj/InfoPlist.strings 819 | System/Library/PrivateFrameworks/AssistantServices.framework/hu.lproj/InfoPlist.strings 820 | System/Library/PrivateFrameworks/AssistantServices.framework/id.lproj/InfoPlist.strings 821 | System/Library/PrivateFrameworks/AssistantServices.framework/Italian.lproj/InfoPlist.strings 822 | System/Library/PrivateFrameworks/AssistantServices.framework/Japanese.lproj/InfoPlist.strings 823 | System/Library/PrivateFrameworks/AssistantServices.framework/ko.lproj/InfoPlist.strings 824 | System/Library/PrivateFrameworks/AssistantServices.framework/ms.lproj/InfoPlist.strings 825 | System/Library/PrivateFrameworks/AssistantServices.framework/no.lproj/InfoPlist.strings 826 | System/Library/PrivateFrameworks/AssistantServices.framework/pl.lproj/InfoPlist.strings 827 | System/Library/PrivateFrameworks/AssistantServices.framework/pt.lproj/InfoPlist.strings 828 | System/Library/PrivateFrameworks/AssistantServices.framework/pt_PT.lproj/InfoPlist.strings 829 | System/Library/PrivateFrameworks/AssistantServices.framework/ro.lproj/InfoPlist.strings 830 | System/Library/PrivateFrameworks/AssistantServices.framework/ru.lproj/InfoPlist.strings 831 | System/Library/PrivateFrameworks/AssistantServices.framework/sk.lproj/InfoPlist.strings 832 | System/Library/PrivateFrameworks/AssistantServices.framework/Spanish.lproj/InfoPlist.strings 833 | System/Library/PrivateFrameworks/AssistantServices.framework/sv.lproj/InfoPlist.strings 834 | System/Library/PrivateFrameworks/AssistantServices.framework/th.lproj/InfoPlist.strings 835 | System/Library/PrivateFrameworks/AssistantServices.framework/tr.lproj/InfoPlist.strings 836 | System/Library/PrivateFrameworks/AssistantServices.framework/uk.lproj/InfoPlist.strings 837 | System/Library/PrivateFrameworks/AssistantServices.framework/vi.lproj/InfoPlist.strings 838 | System/Library/PrivateFrameworks/AssistantServices.framework/zh_CN.lproj/InfoPlist.strings 839 | System/Library/PrivateFrameworks/AssistantServices.framework/zh_TW.lproj/InfoPlist.strings 840 | System/Library/PrivateFrameworks/AssistantUI.framework/AssistantEditUserUtterance_2only_@2x~iphone.png 841 | System/Library/PrivateFrameworks/AssistantUI.framework/AssistantServerUtterance_2only_@2x~iphone.png 842 | System/Library/PrivateFrameworks/AssistantUI.framework/AssistantUserUtterance_2only_@2x~iphone.png 843 | System/Library/PrivateFrameworks/AssistantUI.framework/Info.plist 844 | System/Library/PrivateFrameworks/AssistantUI.framework/Snippet-Bottom-Closed-Gradient_2only_@2x~iphone.png 845 | System/Library/PrivateFrameworks/AssistantUI.framework/SnippetEndQuote_2only_@2x~iphone.png 846 | System/Library/PrivateFrameworks/AssistantUI.framework/SnippetInfoImage_2only_@2x~iphone.png 847 | System/Library/PrivateFrameworks/AssistantUI.framework/SnippetPaperBevel_2only_@2x~iphone.png 848 | System/Library/PrivateFrameworks/AssistantUI.framework/SnippetPerforation_2only_@2x~iphone.png 849 | System/Library/PrivateFrameworks/AssistantUI.framework/SnippetShadow_2only_@2x~iphone.png 850 | System/Library/PrivateFrameworks/AssistantUI.framework/SnippetStartQuote_2only_@2x~iphone.png 851 | System/Library/PrivateFrameworks/AssistantUI.framework/SnippetTiledPaper_2only_@2x~iphone.png 852 | System/Library/PrivateFrameworks/AssistantUI.framework/SnippetTriangleLess_2only_@2x~iphone.png 853 | System/Library/PrivateFrameworks/AssistantUI.framework/SnippetTriangleMore_2only_@2x~iphone.png 854 | System/Library/PrivateFrameworks/AssistantUI.framework/StampCanceled_de_2only_@2x~iphone.png 855 | System/Library/PrivateFrameworks/AssistantUI.framework/StampCanceled_en_2only_@2x~iphone.png 856 | System/Library/PrivateFrameworks/AssistantUI.framework/StampCanceled_fr_2only_@2x~iphone.png 857 | System/Library/PrivateFrameworks/AssistantUI.framework/StampCanceled_ja_2only_@2x~iphone.png 858 | System/Library/PrivateFrameworks/AssistantUI.framework/TableViewSeparator_2only_@2x~iphone.png 859 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/AddressBook.plist 860 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/AllDomains.plist 861 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/Calendar.plist 862 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/ClockAlarmTimer.plist 863 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/Email.plist 864 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/FindMyFriends.plist 865 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/Messages.plist 866 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/Music.plist 867 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/Notes.plist 868 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/Phone.plist 869 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/Reminders.plist 870 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/Stocks.plist 871 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/Weather.plist 872 | System/Library/PrivateFrameworks/AssistantUI.framework/de.lproj/WebSearch.plist 873 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/AddressBook.plist 874 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/AllDomains.plist 875 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/Calendar.plist 876 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/ClockAlarmTimer.plist 877 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/Email.plist 878 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/FindMyFriends.plist 879 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/Messages.plist 880 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/Music.plist 881 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/Notes.plist 882 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/Phone.plist 883 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/Reminders.plist 884 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/Stocks.plist 885 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/Weather.plist 886 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/WebSearch.plist 887 | System/Library/PrivateFrameworks/AssistantUI.framework/en_AU.lproj/WolframAlpha.plist 888 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/AddressBook.plist 889 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/AllDomains.plist 890 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/Calendar.plist 891 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/ClockAlarmTimer.plist 892 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/Email.plist 893 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/FindMyFriends.plist 894 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/Messages.plist 895 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/Music.plist 896 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/Notes.plist 897 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/Phone.plist 898 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/Reminders.plist 899 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/Stocks.plist 900 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/Weather.plist 901 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/WebSearch.plist 902 | System/Library/PrivateFrameworks/AssistantUI.framework/en_GB.lproj/WolframAlpha.plist 903 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/AddressBook.plist 904 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/AllDomains.plist 905 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/Calendar.plist 906 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/ClockAlarmTimer.plist 907 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/Email.plist 908 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/FindMyFriends.plist 909 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/InfoPlist.strings 910 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/MapsAndLocal.plist 911 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/Messages.plist 912 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/Music.plist 913 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/Notes.plist 914 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/Phone.plist 915 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/Reminders.plist 916 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/Stocks.plist 917 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/Weather.plist 918 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/WebSearch.plist 919 | System/Library/PrivateFrameworks/AssistantUI.framework/English.lproj/WolframAlpha.plist 920 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/AddressBook.plist 921 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/AllDomains.plist 922 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/Calendar.plist 923 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/ClockAlarmTimer.plist 924 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/Email.plist 925 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/FindMyFriends.plist 926 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/Messages.plist 927 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/Music.plist 928 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/Notes.plist 929 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/Phone.plist 930 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/Reminders.plist 931 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/Stocks.plist 932 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/Weather.plist 933 | System/Library/PrivateFrameworks/AssistantUI.framework/fr.lproj/WebSearch.plist 934 | System/Library/PrivateFrameworks/SAObjects.framework/Info.plist 935 | System/Library/UserEventPlugins/AssistantUEA.plugin/AssistantUEA 936 | System/Library/UserEventPlugins/AssistantUEA.plugin/Info.plist 937 | -------------------------------------------------------------------------------- /Installer/partial.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | #include 10 | 11 | #include "partial.h" 12 | 13 | #define FLIPENDIANLE(x) flipEndianLE((unsigned char *)(&(x)), sizeof(x)) 14 | 15 | static inline void flipEndianLE(unsigned char* x, int length) { 16 | #if BYTE_ORDER == BIG_ENDIAN 17 | int i; 18 | unsigned char tmp; 19 | 20 | for(i = 0; i < (length / 2); i++) { 21 | tmp = x[i]; 22 | x[i] = x[length - i - 1]; 23 | x[length - i - 1] = tmp; 24 | } 25 | #endif 26 | } 27 | 28 | 29 | static size_t dummyReceive(void* data, size_t size, size_t nmemb, void* info) { 30 | return size * nmemb; 31 | } 32 | 33 | static size_t receiveCentralDirectoryEnd(void* data, size_t size, size_t nmemb, ZipInfo* info) { 34 | memcpy(info->centralDirectoryEnd + info->centralDirectoryEndRecvd, data, size * nmemb); 35 | info->centralDirectoryEndRecvd += size * nmemb; 36 | return size * nmemb; 37 | } 38 | 39 | static size_t receiveCentralDirectory(void* data, size_t size, size_t nmemb, ZipInfo* info) { 40 | memcpy(info->centralDirectory + info->centralDirectoryRecvd, data, size * nmemb); 41 | info->centralDirectoryRecvd += size * nmemb; 42 | return size * nmemb; 43 | } 44 | 45 | static void flipFiles(ZipInfo* info) 46 | { 47 | char* cur = info->centralDirectory; 48 | 49 | unsigned int i; 50 | for(i = 0; i < info->centralDirectoryDesc->CDEntries; i++) 51 | { 52 | CDFile* candidate = (CDFile*) cur; 53 | FLIPENDIANLE(candidate->signature); 54 | FLIPENDIANLE(candidate->version); 55 | FLIPENDIANLE(candidate->versionExtract); 56 | // FLIPENDIANLE(candidate->flags); 57 | FLIPENDIANLE(candidate->method); 58 | FLIPENDIANLE(candidate->modTime); 59 | FLIPENDIANLE(candidate->modDate); 60 | // FLIPENDIANLE(candidate->crc32); 61 | FLIPENDIANLE(candidate->compressedSize); 62 | FLIPENDIANLE(candidate->size); 63 | FLIPENDIANLE(candidate->lenFileName); 64 | FLIPENDIANLE(candidate->lenExtra); 65 | FLIPENDIANLE(candidate->lenComment); 66 | FLIPENDIANLE(candidate->diskStart); 67 | // FLIPENDIANLE(candidate->internalAttr); 68 | // FLIPENDIANLE(candidate->externalAttr); 69 | FLIPENDIANLE(candidate->offset); 70 | 71 | cur += sizeof(CDFile) + candidate->lenFileName + candidate->lenExtra + candidate->lenComment; 72 | } 73 | } 74 | 75 | ZipInfo* PartialZipInit(const char* url) 76 | { 77 | ZipInfo* info = (ZipInfo*) malloc(sizeof(ZipInfo)); 78 | info->url = strdup(url); 79 | info->centralDirectoryRecvd = 0; 80 | info->centralDirectoryEndRecvd = 0; 81 | info->centralDirectoryDesc = NULL; 82 | 83 | info->hCurl = curl_easy_init(); 84 | 85 | curl_easy_setopt(info->hCurl, CURLOPT_URL, info->url); 86 | curl_easy_setopt(info->hCurl, CURLOPT_FOLLOWLOCATION, 1); 87 | curl_easy_setopt(info->hCurl, CURLOPT_NOBODY, 1); 88 | curl_easy_setopt(info->hCurl, CURLOPT_WRITEFUNCTION, dummyReceive); 89 | 90 | if(strncmp(info->url, "file://", 7) == 0) 91 | { 92 | char path[1024]; 93 | strcpy(path, info->url + 7); 94 | char* filePath = (char*) curl_easy_unescape(info->hCurl, path, 0, NULL); 95 | FILE* f = fopen(filePath, "rb"); 96 | if(!f) 97 | { 98 | curl_free(filePath); 99 | curl_easy_cleanup(info->hCurl); 100 | free(info->url); 101 | free(info); 102 | 103 | return NULL; 104 | } 105 | 106 | fseek(f, 0, SEEK_END); 107 | info->length = ftell(f); 108 | fclose(f); 109 | 110 | curl_free(filePath); 111 | } 112 | else 113 | { 114 | curl_easy_perform(info->hCurl); 115 | 116 | double dFileLength; 117 | curl_easy_getinfo(info->hCurl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &dFileLength); 118 | info->length = dFileLength; 119 | } 120 | 121 | char sRange[100]; 122 | uint64_t start; 123 | 124 | if(info->length > (0xffff + sizeof(EndOfCD))) 125 | start = info->length - 0xffff - sizeof(EndOfCD); 126 | else 127 | start = 0; 128 | 129 | uint64_t end = info->length - 1; 130 | 131 | sprintf(sRange, "%" PRIu64 "-%" PRIu64, start, end); 132 | 133 | curl_easy_setopt(info->hCurl, CURLOPT_WRITEFUNCTION, receiveCentralDirectoryEnd); 134 | curl_easy_setopt(info->hCurl, CURLOPT_WRITEDATA, info); 135 | curl_easy_setopt(info->hCurl, CURLOPT_RANGE, sRange); 136 | curl_easy_setopt(info->hCurl, CURLOPT_HTTPGET, 1); 137 | 138 | curl_easy_perform(info->hCurl); 139 | 140 | char* cur; 141 | for(cur = info->centralDirectoryEnd; cur < (info->centralDirectoryEnd + (end - start - 1)); cur++) 142 | { 143 | EndOfCD* candidate = (EndOfCD*) cur; 144 | uint32_t signature = candidate->signature; 145 | FLIPENDIANLE(signature); 146 | if(signature == 0x06054b50) 147 | { 148 | uint16_t lenComment = candidate->lenComment; 149 | FLIPENDIANLE(lenComment); 150 | if((cur + lenComment + sizeof(EndOfCD)) == (info->centralDirectoryEnd + info->centralDirectoryEndRecvd)) 151 | { 152 | FLIPENDIANLE(candidate->diskNo); 153 | FLIPENDIANLE(candidate->CDDiskNo); 154 | FLIPENDIANLE(candidate->CDDiskEntries); 155 | FLIPENDIANLE(candidate->CDEntries); 156 | FLIPENDIANLE(candidate->CDSize); 157 | FLIPENDIANLE(candidate->CDOffset); 158 | FLIPENDIANLE(candidate->lenComment); 159 | info->centralDirectoryDesc = candidate; 160 | break; 161 | } 162 | } 163 | 164 | } 165 | 166 | if(info->centralDirectoryDesc) 167 | { 168 | info->centralDirectory = malloc(info->centralDirectoryDesc->CDSize); 169 | start = info->centralDirectoryDesc->CDOffset; 170 | end = start + info->centralDirectoryDesc->CDSize - 1; 171 | sprintf(sRange, "%" PRIu64 "-%" PRIu64, start, end); 172 | curl_easy_setopt(info->hCurl, CURLOPT_WRITEFUNCTION, receiveCentralDirectory); 173 | curl_easy_setopt(info->hCurl, CURLOPT_WRITEDATA, info); 174 | curl_easy_setopt(info->hCurl, CURLOPT_RANGE, sRange); 175 | curl_easy_setopt(info->hCurl, CURLOPT_HTTPGET, 1); 176 | curl_easy_perform(info->hCurl); 177 | 178 | flipFiles(info); 179 | 180 | return info; 181 | } 182 | else 183 | { 184 | curl_easy_cleanup(info->hCurl); 185 | free(info->url); 186 | free(info); 187 | return NULL; 188 | } 189 | } 190 | 191 | CDFile* PartialZipFindFile(ZipInfo* info, const char* fileName) 192 | { 193 | char* cur = info->centralDirectory; 194 | unsigned int i; 195 | size_t fileNameLength = strlen(fileName); 196 | for(i = 0; i < info->centralDirectoryDesc->CDEntries; i++) 197 | { 198 | CDFile* candidate = (CDFile*) cur; 199 | const char* curFileName = cur + sizeof(CDFile); 200 | 201 | if(fileNameLength == candidate->lenFileName && strncmp(fileName, curFileName, candidate->lenFileName) == 0) 202 | return candidate; 203 | 204 | cur += sizeof(CDFile) + candidate->lenFileName + candidate->lenExtra + candidate->lenComment; 205 | } 206 | 207 | return NULL; 208 | } 209 | 210 | CDFile* PartialZipListFiles(ZipInfo* info) 211 | { 212 | char* cur = info->centralDirectory; 213 | unsigned int i; 214 | for(i = 0; i < info->centralDirectoryDesc->CDEntries; i++) 215 | { 216 | CDFile* candidate = (CDFile*) cur; 217 | const char* curFileName = cur + sizeof(CDFile); 218 | char* myFileName = (char*) malloc(candidate->lenFileName + 1); 219 | memcpy(myFileName, curFileName, candidate->lenFileName); 220 | myFileName[candidate->lenFileName] = '\0'; 221 | 222 | printf("%s: method: %d, compressed size: %d, size: %d\n", myFileName, candidate->method, 223 | candidate->compressedSize, candidate->size); 224 | 225 | free(myFileName); 226 | 227 | cur += sizeof(CDFile) + candidate->lenFileName + candidate->lenExtra + candidate->lenComment; 228 | } 229 | 230 | return NULL; 231 | } 232 | 233 | unsigned char* PartialZipCopyFileName(ZipInfo* info, CDFile* file) 234 | { 235 | const unsigned char* curFileName = (const unsigned char*)file + sizeof(CDFile); 236 | unsigned char* result = malloc(file->lenFileName + 1); 237 | memcpy(result, curFileName, file->lenFileName); 238 | result[file->lenFileName] = '\0'; 239 | return result; 240 | } 241 | 242 | typedef struct ReceiveBodyData* ReceiveDataBodyDataRef; 243 | 244 | typedef struct ReceiveBodyFileData { 245 | CDFile *file; 246 | union { 247 | LocalFile localFile; 248 | char localFileBytes[sizeof(LocalFile)]; 249 | }; 250 | size_t rangeSize; 251 | size_t bytesLeftInLocalFile; 252 | size_t bytesLeftBeforeData; 253 | size_t bytesLeftInData; 254 | void (*startBodyCallback)(ReceiveDataBodyDataRef); 255 | size_t (*processBodyCallback)(unsigned char*, size_t, ReceiveDataBodyDataRef); 256 | void (*finishBodyCallback)(ReceiveDataBodyDataRef); 257 | } ReceiveBodyFileData; 258 | 259 | typedef enum { 260 | MultipartDecodeStateInHeader, 261 | MultipartDecodeStateFoundFirstCR, 262 | MultipartDecodeStateFoundFirstNL, 263 | MultipartDecodeStateFoundSecondCR, 264 | MultipartDecodeStateInBody, 265 | } MultipartDecodeState; 266 | 267 | typedef struct ReceiveBodyData { 268 | ZipInfo *info; 269 | PartialZipGetFileCallback callback; 270 | void *userInfo; 271 | ReceiveBodyFileData *currentFile; 272 | bool foundMultipartBoundary; 273 | MultipartDecodeState multipartDecodeState; 274 | size_t bytesRemainingInRange; 275 | z_stream stream; // Reused for each compressed stream 276 | } ReceiveDataBodyData; 277 | 278 | // Uncompressed File Data 279 | 280 | static void startBodyUncompressed(ReceiveDataBodyDataRef bodyData) 281 | { 282 | } 283 | 284 | static size_t receiveDataBodyUncompressed(unsigned char* data, size_t size, ReceiveDataBodyDataRef bodyData) 285 | { 286 | return bodyData->callback(bodyData->info, bodyData->currentFile->file, data, size, bodyData->userInfo); 287 | } 288 | 289 | static void finishBodyUncompressed(ReceiveDataBodyDataRef bodyData) 290 | { 291 | } 292 | 293 | // ZLIB Compressed File Data 294 | 295 | #define ZLIB_BUFFER_SIZE 16384 296 | 297 | static void startBodyZLIBCompressed(ReceiveDataBodyDataRef bodyData) 298 | { 299 | bodyData->stream.zalloc = Z_NULL; 300 | bodyData->stream.zfree = Z_NULL; 301 | bodyData->stream.opaque = Z_NULL; 302 | bodyData->stream.avail_in = 0; 303 | bodyData->stream.next_in = NULL; 304 | inflateInit2(&bodyData->stream, -MAX_WBITS); 305 | } 306 | 307 | static size_t receiveDataBodyZLIBCompressed(unsigned char* data, size_t size, ReceiveDataBodyDataRef bodyData) 308 | { 309 | ReceiveBodyFileData *fileData = bodyData->currentFile; 310 | bodyData->stream.next_in = data; 311 | bodyData->stream.avail_in = size; 312 | unsigned char buffer[ZLIB_BUFFER_SIZE]; 313 | do { 314 | bodyData->stream.next_out = buffer; 315 | bodyData->stream.avail_out = ZLIB_BUFFER_SIZE; 316 | int err = inflate(&bodyData->stream, Z_NO_FLUSH); 317 | if (bodyData->stream.avail_out != ZLIB_BUFFER_SIZE) { 318 | size_t new_bytes = ZLIB_BUFFER_SIZE - bodyData->stream.avail_out; 319 | size_t bytes_read = bodyData->callback(bodyData->info, fileData->file, buffer, new_bytes, bodyData->userInfo); 320 | if (bytes_read != new_bytes) { 321 | // Abort if callback doesn't read all data 322 | return 0; 323 | } 324 | } 325 | switch (err) { 326 | case Z_BUF_ERROR: 327 | case Z_OK: 328 | continue; 329 | case Z_STREAM_END: 330 | return size; 331 | default: 332 | // Abort if there's some sort of zlib stream error 333 | return 0; 334 | } 335 | } while (bodyData->stream.avail_out == 0); 336 | return size; 337 | } 338 | 339 | static void finishBodyZLIBCompressed(ReceiveDataBodyDataRef bodyData) 340 | { 341 | unsigned char buffer[ZLIB_BUFFER_SIZE]; 342 | int err; 343 | do { 344 | bodyData->stream.next_out = buffer; 345 | bodyData->stream.avail_out = ZLIB_BUFFER_SIZE; 346 | err = inflate(&bodyData->stream, Z_SYNC_FLUSH); 347 | if (bodyData->stream.avail_out != ZLIB_BUFFER_SIZE) { 348 | size_t new_bytes = ZLIB_BUFFER_SIZE - bodyData->stream.avail_out; 349 | size_t bytes_read = bodyData->callback(bodyData->info, bodyData->currentFile->file, buffer, new_bytes, bodyData->userInfo); 350 | if (bytes_read != new_bytes) { 351 | // Abort if callback doesn't read all data 352 | break; 353 | } 354 | } 355 | } while (err == Z_OK); 356 | inflateEnd(&bodyData->stream); 357 | } 358 | 359 | // Single part responses (single range) 360 | 361 | static size_t receiveDataBodySingle(unsigned char* data, size_t size, size_t nmemb, ReceiveDataBodyDataRef bodyData) 362 | { 363 | size_t byteCount = size * nmemb; 364 | ReceiveBodyFileData *pFileData = bodyData->currentFile; 365 | // Read LocalFile header 366 | if (pFileData->bytesLeftInLocalFile) { 367 | if (byteCount < pFileData->bytesLeftInLocalFile) { 368 | memcpy(&pFileData->localFileBytes[sizeof(LocalFile) - pFileData->bytesLeftInLocalFile], data, byteCount); 369 | pFileData->bytesLeftInLocalFile -= byteCount; 370 | return size * nmemb; 371 | } 372 | memcpy(&pFileData->localFileBytes[sizeof(LocalFile) - pFileData->bytesLeftInLocalFile], data, pFileData->bytesLeftInLocalFile); 373 | data += pFileData->bytesLeftInLocalFile; 374 | byteCount -= pFileData->bytesLeftInLocalFile; 375 | pFileData->bytesLeftInLocalFile = 0; 376 | FLIPENDIANLE(pFileData->localFile.signature); 377 | FLIPENDIANLE(pFileData->localFile.versionExtract); 378 | // FLIPENDIANLE(pFileData->localFile.flags); 379 | FLIPENDIANLE(pFileData->localFile.method); 380 | FLIPENDIANLE(pFileData->localFile.modTime); 381 | FLIPENDIANLE(pFileData->localFile.modDate); 382 | // FLIPENDIANLE(pFileData->localFile.crc32); 383 | FLIPENDIANLE(pFileData->localFile.compressedSize); 384 | FLIPENDIANLE(pFileData->localFile.size); 385 | FLIPENDIANLE(pFileData->localFile.lenFileName); 386 | FLIPENDIANLE(pFileData->localFile.lenExtra); 387 | pFileData->bytesLeftBeforeData = pFileData->localFile.lenFileName + pFileData->localFile.lenExtra; 388 | } 389 | // Read file name and extra bytes before body 390 | if (pFileData->bytesLeftBeforeData) { 391 | if (byteCount < pFileData->bytesLeftBeforeData) { 392 | pFileData->bytesLeftBeforeData -= byteCount; 393 | return size * nmemb; 394 | } 395 | data += pFileData->bytesLeftBeforeData; 396 | byteCount -= pFileData->bytesLeftBeforeData; 397 | pFileData->bytesLeftBeforeData = 0; 398 | pFileData->startBodyCallback(bodyData); 399 | } 400 | // Read body 401 | if (pFileData->bytesLeftInData) { 402 | if (byteCount < pFileData->bytesLeftInData) { 403 | if (pFileData->processBodyCallback(data, byteCount, bodyData) != byteCount) 404 | return 0; 405 | pFileData->bytesLeftInData -= byteCount; 406 | return size * nmemb; 407 | } 408 | if (pFileData->processBodyCallback(data, pFileData->bytesLeftInData, bodyData) != pFileData->bytesLeftInData) 409 | return 0; 410 | pFileData->finishBodyCallback(bodyData); 411 | pFileData->bytesLeftInData = 0; 412 | } 413 | return size * nmemb; 414 | } 415 | 416 | // Multi-part responses 417 | 418 | #define BOUNDARY_HEADER_PREFIX "Content-Type: multipart/byteranges; boundary=" 419 | 420 | static size_t receiveHeaderMulti(unsigned char* data, size_t size, size_t nmemb, ReceiveDataBodyDataRef bodyData) 421 | { 422 | size_t byteCount = size * nmemb; 423 | if (byteCount > sizeof(BOUNDARY_HEADER_PREFIX)) { 424 | if (memcmp(data, BOUNDARY_HEADER_PREFIX, sizeof(BOUNDARY_HEADER_PREFIX)-1) == 0) { 425 | bodyData->foundMultipartBoundary = true; 426 | } 427 | } 428 | return byteCount; 429 | } 430 | 431 | static size_t receiveDataBodyMulti(unsigned char* data, size_t size, size_t nmemb, ReceiveDataBodyDataRef bodyData) 432 | { 433 | // Check if server Returned a multipart/byteranges 434 | if (!bodyData->foundMultipartBoundary) 435 | return 0; 436 | size_t byteCount = size * nmemb; 437 | MultipartDecodeState state = bodyData->multipartDecodeState; 438 | do { 439 | switch (state) { 440 | case MultipartDecodeStateInHeader: 441 | if (*data == '\r') 442 | state = MultipartDecodeStateFoundFirstCR; 443 | byteCount--; 444 | data++; 445 | break; 446 | case MultipartDecodeStateFoundFirstCR: 447 | state = (*data == '\n') ? MultipartDecodeStateFoundFirstNL : MultipartDecodeStateInHeader; 448 | byteCount--; 449 | data++; 450 | break; 451 | case MultipartDecodeStateFoundFirstNL: 452 | state = (*data == '\r') ? MultipartDecodeStateFoundSecondCR : MultipartDecodeStateInHeader; 453 | byteCount--; 454 | data++; 455 | break; 456 | case MultipartDecodeStateFoundSecondCR: 457 | if (*data == '\n') { 458 | state = MultipartDecodeStateInBody; 459 | bodyData->bytesRemainingInRange = bodyData->currentFile->rangeSize; 460 | } else { 461 | state = MultipartDecodeStateInHeader; 462 | } 463 | byteCount--; 464 | data++; 465 | break; 466 | case MultipartDecodeStateInBody: { 467 | if (byteCount < bodyData->bytesRemainingInRange) { 468 | if (receiveDataBodySingle(data, 1, byteCount, bodyData) != byteCount) 469 | return 0; 470 | bodyData->bytesRemainingInRange -= byteCount; 471 | byteCount = 0; 472 | } else { 473 | if (receiveDataBodySingle(data, 1, bodyData->bytesRemainingInRange, bodyData) != bodyData->bytesRemainingInRange) 474 | return 0; 475 | byteCount -= bodyData->bytesRemainingInRange; 476 | data += bodyData->bytesRemainingInRange; 477 | bodyData->bytesRemainingInRange = 0; 478 | bodyData->currentFile++; 479 | state = MultipartDecodeStateInHeader; 480 | } 481 | break; 482 | } 483 | } 484 | } while(byteCount); 485 | bodyData->multipartDecodeState = state; 486 | return size * nmemb; 487 | } 488 | 489 | 490 | static uint64_t PartialZipFileMaximumEndpoint(ZipInfo* info, CDFile* file) 491 | { 492 | char* cur = info->centralDirectory; 493 | size_t result = info->centralDirectoryDesc->CDOffset; 494 | size_t fileOffset = file->offset; 495 | unsigned int i; 496 | for(i = 0; i < info->centralDirectoryDesc->CDEntries; i++) { 497 | CDFile* candidate = (CDFile*) cur; 498 | size_t candidateOffset = candidate->offset; 499 | if ((candidateOffset > fileOffset) && (candidateOffset < result)) 500 | result = candidateOffset; 501 | cur += sizeof(CDFile) + candidate->lenFileName + candidate->lenExtra + candidate->lenComment; 502 | } 503 | 504 | return result; 505 | } 506 | 507 | bool PartialZipGetFiles(ZipInfo* info, CDFile* files[], size_t count, PartialZipGetFileCallback callback, void *userInfo) 508 | { 509 | if (!count) 510 | return true; 511 | 512 | ReceiveBodyFileData *fileData = malloc(sizeof(ReceiveBodyFileData) * count); 513 | curl_easy_setopt(info->hCurl, CURLOPT_HTTPGET, 1); 514 | 515 | // Apply Range string 516 | size_t i; 517 | size_t rangeLength = 0; 518 | for (i = 0; i < count; i++) { 519 | uint64_t start = files[i]->offset; 520 | uint64_t end = PartialZipFileMaximumEndpoint(info, files[i]); 521 | fileData[i].rangeSize = end - start; 522 | char temp[100]; 523 | rangeLength += sprintf(temp, "%" PRIu64 "%" PRIu64, start, end) + 2; 524 | } 525 | char range[rangeLength]; 526 | char *rangeCurrent = range; 527 | for (i = 0; i < count; i++) { 528 | uint64_t start = files[i]->offset; 529 | uint64_t end = start + fileData[i].rangeSize - 1; 530 | rangeCurrent += sprintf(rangeCurrent, "%" PRIu64 "-%" PRIu64 ",", start, end); 531 | } 532 | rangeCurrent[-1] = '\0'; 533 | curl_easy_setopt(info->hCurl, CURLOPT_RANGE, range); 534 | 535 | // Build file data for each file 536 | for (i = 0; i < count; i++) { 537 | fileData[i].file = files[i]; 538 | fileData[i].bytesLeftInLocalFile = sizeof(LocalFile); 539 | fileData[i].bytesLeftInData = files[i]->compressedSize; 540 | switch (files[i]->method) { 541 | case 8: 542 | fileData[i].startBodyCallback = startBodyZLIBCompressed; 543 | fileData[i].processBodyCallback = receiveDataBodyZLIBCompressed; 544 | fileData[i].finishBodyCallback = finishBodyZLIBCompressed; 545 | break; 546 | default: 547 | fileData[i].startBodyCallback = startBodyUncompressed; 548 | fileData[i].processBodyCallback = receiveDataBodyUncompressed; 549 | fileData[i].finishBodyCallback = finishBodyUncompressed; 550 | break; 551 | } 552 | } 553 | 554 | // Build body data 555 | ReceiveDataBodyData bodyData; 556 | bodyData.info = info; 557 | bodyData.callback = callback; 558 | bodyData.userInfo = userInfo; 559 | bodyData.currentFile = &fileData[0]; 560 | 561 | // Make request 562 | curl_easy_setopt(info->hCurl, CURLOPT_WRITEDATA, &bodyData); 563 | int curl_result; 564 | if (count == 1) { 565 | curl_easy_setopt(info->hCurl, CURLOPT_WRITEFUNCTION, receiveDataBodySingle); 566 | curl_easy_setopt(info->hCurl, CURLOPT_HEADERDATA, NULL); 567 | curl_easy_setopt(info->hCurl, CURLOPT_HEADERFUNCTION, NULL); 568 | curl_result = curl_easy_perform(info->hCurl); 569 | free(fileData); 570 | } else { 571 | curl_easy_setopt(info->hCurl, CURLOPT_WRITEFUNCTION, receiveDataBodyMulti); 572 | curl_easy_setopt(info->hCurl, CURLOPT_HEADERDATA, &bodyData); 573 | curl_easy_setopt(info->hCurl, CURLOPT_HEADERFUNCTION, receiveHeaderMulti); 574 | bodyData.foundMultipartBoundary = false; 575 | bodyData.multipartDecodeState = MultipartDecodeStateInHeader; 576 | curl_result = curl_easy_perform(info->hCurl); 577 | free(fileData); 578 | if (!bodyData.foundMultipartBoundary) { 579 | // Multi-part failed, fallback to a single request per file 580 | for (i = 0; i < count; i++) 581 | if (!PartialZipGetFiles(info, &files[i], 1, callback, userInfo)) 582 | return false; 583 | return true; 584 | } 585 | } 586 | 587 | return curl_result == 0; 588 | } 589 | 590 | bool PartialZipGetFile(ZipInfo* info, CDFile* file, PartialZipGetFileCallback callback, void *userInfo) 591 | { 592 | CDFile *files[1] = { file }; 593 | return PartialZipGetFiles(info, files, 1, callback, userInfo); 594 | } 595 | 596 | void PartialZipRelease(ZipInfo* info) 597 | { 598 | curl_easy_cleanup(info->hCurl); 599 | free(info->centralDirectory); 600 | free(info->url); 601 | free(info); 602 | 603 | curl_global_cleanup(); 604 | } 605 | 606 | -------------------------------------------------------------------------------- /Installer/partial.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | typedef struct EndOfCD { 6 | uint32_t signature; 7 | uint16_t diskNo; 8 | uint16_t CDDiskNo; 9 | uint16_t CDDiskEntries; 10 | uint16_t CDEntries; 11 | uint32_t CDSize; 12 | uint32_t CDOffset; 13 | uint16_t lenComment; 14 | } __attribute__ ((packed)) EndOfCD; 15 | 16 | typedef struct CDFile { 17 | uint32_t signature; 18 | uint16_t version; 19 | uint16_t versionExtract; 20 | uint16_t flags; 21 | uint16_t method; 22 | uint16_t modTime; 23 | uint16_t modDate; 24 | uint32_t crc32; 25 | uint32_t compressedSize; 26 | uint32_t size; 27 | uint16_t lenFileName; 28 | uint16_t lenExtra; 29 | uint16_t lenComment; 30 | uint16_t diskStart; 31 | uint16_t internalAttr; 32 | uint32_t externalAttr; 33 | uint32_t offset; 34 | } __attribute__ ((packed)) CDFile; 35 | 36 | typedef struct LocalFile { 37 | uint32_t signature; 38 | uint16_t versionExtract; 39 | uint16_t flags; 40 | uint16_t method; 41 | uint16_t modTime; 42 | uint16_t modDate; 43 | uint32_t crc32; 44 | uint32_t compressedSize; 45 | uint32_t size; 46 | uint16_t lenFileName; 47 | uint16_t lenExtra; 48 | } __attribute__ ((packed)) LocalFile; 49 | 50 | typedef struct ZipInfo ZipInfo; 51 | 52 | typedef size_t (*PartialZipGetFileCallback)(ZipInfo* info, CDFile* file, unsigned char *buffer, size_t size, void *userInfo); 53 | 54 | struct ZipInfo { 55 | char* url; 56 | uint64_t length; 57 | CURL* hCurl; 58 | char* centralDirectory; 59 | size_t centralDirectoryRecvd; 60 | EndOfCD* centralDirectoryDesc; 61 | char centralDirectoryEnd[0xffff + sizeof(EndOfCD)]; 62 | size_t centralDirectoryEndRecvd; 63 | }; 64 | 65 | #ifdef __cplusplus 66 | extern "C" { 67 | #endif 68 | 69 | ZipInfo* PartialZipInit(const char* url); 70 | 71 | CDFile* PartialZipFindFile(ZipInfo* info, const char* fileName); 72 | unsigned char* PartialZipCopyFileName(ZipInfo* info, CDFile* file); 73 | 74 | CDFile* PartialZipListFiles(ZipInfo* info); 75 | 76 | bool PartialZipGetFile(ZipInfo* info, CDFile* file, PartialZipGetFileCallback callback, void *userInfo); 77 | bool PartialZipGetFiles(ZipInfo* info, CDFile* files[], size_t count, PartialZipGetFileCallback callback, void *userInfo); 78 | 79 | void PartialZipRelease(ZipInfo* info); 80 | 81 | #ifdef __cplusplus 82 | } 83 | #endif 84 | 85 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | 2 | include theos/makefiles/common.mk 3 | 4 | AGGREGATE_NAME = Spire 5 | SUBPROJECTS = Preferences Installer Hooks Injector 6 | 7 | include $(THEOS_MAKE_PATH)/aggregate.mk 8 | 9 | -------------------------------------------------------------------------------- /Preferences/Makefile: -------------------------------------------------------------------------------- 1 | 2 | include ../theos/makefiles/common.mk 3 | 4 | BUNDLE_NAME = SpirePreferences 5 | SpirePreferences_FILES = Preferences.mm 6 | SpirePreferences_OBJCFLAGS = -I$(THEOS_PROJECT_DIR) -F$(THEOS_PROJECT_DIR) 7 | SpirePreferences_FRAMEWORKS = UIKit 8 | SpirePreferences_PRIVATE_FRAMEWORKS = Preferences 9 | SpirePreferences_INSTALL_PATH = /Library/PreferenceBundles 10 | 11 | include $(THEOS_MAKE_PATH)/bundle.mk 12 | 13 | internal-stage:: 14 | $(ECHO_NOTHING)mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences$(ECHO_END) 15 | $(ECHO_NOTHING)cp Spire.plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/Spire.plist$(ECHO_END) 16 | 17 | -------------------------------------------------------------------------------- /Preferences/Preferences.mm: -------------------------------------------------------------------------------- 1 | #import 2 | 3 | @interface PSListController : UIViewController { 4 | id _specifiers; 5 | } 6 | - (id)loadSpecifiersFromPlistName:(NSString *)name target:(id)target; 7 | @end 8 | 9 | @interface SPPreferencesListController : PSListController 10 | @end 11 | 12 | @implementation SPPreferencesListController 13 | 14 | - (NSArray *)specifiers { 15 | if (!_specifiers) { 16 | _specifiers = [[self loadSpecifiersFromPlistName:@"SpirePreferences" target:self] mutableCopy]; 17 | } 18 | 19 | return _specifiers; 20 | } 21 | 22 | - (void)moreInfoPressed:(id)specifier { 23 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://chpwn.com/apps/spire"]]; 24 | } 25 | 26 | - (void)donatePressed:(id)specifier { 27 | [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://chpwn.com/apps/spire/donate"]]; 28 | } 29 | 30 | @end 31 | 32 | -------------------------------------------------------------------------------- /Preferences/Resources/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | English 7 | CFBundleExecutable 8 | SpirePreferences 9 | CFBundleIdentifier 10 | com.chpwn.spire.preferences 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundlePackageType 14 | BNDL 15 | CFBundleShortVersionString 16 | 1.0.0 17 | CFBundleSignature 18 | ???? 19 | CFBundleVersion 20 | 1.0 21 | DTPlatformName 22 | iphoneos 23 | MinimumOSVersion 24 | 3.0 25 | NSPrincipalClass 26 | SPPreferencesListController 27 | 28 | 29 | -------------------------------------------------------------------------------- /Preferences/Resources/SpirePreferences.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | items 6 | 7 | 8 | cell 9 | PSGroupCell 10 | footerText 11 | Please note that personal information /will/ be sent through the server URL above. This may include your location, emails, contacts, messages, calendar, reminders, and speech recordings. 12 | 13 | Please be sure you understand this before entering a proxy URL above. 14 | 15 | 16 | cell 17 | PSEditTextCell 18 | default 19 | 20 | placeholder 21 | http://example.com 22 | defaults 23 | com.chpwn.spire.preferences 24 | PostNotification 25 | com.chpwn.spire.preferences.changed 26 | key 27 | SPProxyURL 28 | label 29 | Proxy Host 30 | 31 | 32 | cell 33 | PSGroupCell 34 | footerText 35 | Spire by Grant Paul (chpwn) and Ryan Petrich. Includes PartialZip by planetbeing and icons by mvit. 36 | 37 | 38 | cell 39 | PSButtonCell 40 | label 41 | More Info 42 | action 43 | moreInfoPressed: 44 | 45 | 46 | cell 47 | PSButtonCell 48 | label 49 | Donate 50 | action 51 | donatePressed: 52 | 53 | 54 | title 55 | Spire 56 | 57 | 58 | -------------------------------------------------------------------------------- /Preferences/Resources/SpirePreferences.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grp/Spire/33e26bcd301b9c799507d034f7c84e7eddac911c/Preferences/Resources/SpirePreferences.png -------------------------------------------------------------------------------- /Preferences/Resources/SpirePreferences@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grp/Spire/33e26bcd301b9c799507d034f7c84e7eddac911c/Preferences/Resources/SpirePreferences@2x.png -------------------------------------------------------------------------------- /Preferences/Resources/SpirePreferences@2x~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grp/Spire/33e26bcd301b9c799507d034f7c84e7eddac911c/Preferences/Resources/SpirePreferences@2x~ipad.png -------------------------------------------------------------------------------- /Preferences/Resources/SpirePreferences~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grp/Spire/33e26bcd301b9c799507d034f7c84e7eddac911c/Preferences/Resources/SpirePreferences~ipad.png -------------------------------------------------------------------------------- /Preferences/Spire-legacy.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grp/Spire/33e26bcd301b9c799507d034f7c84e7eddac911c/Preferences/Spire-legacy.psd -------------------------------------------------------------------------------- /Preferences/Spire.plist: -------------------------------------------------------------------------------- 1 | { 2 | entry = { 3 | bundle = SpirePreferences; 4 | cell = PSLinkCell; 5 | detail = SPPreferencesListController; 6 | icon = SpirePreferences.png; 7 | isController = 1; 8 | label = Spire; 9 | }; 10 | } 11 | -------------------------------------------------------------------------------- /Preferences/Spire.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grp/Spire/33e26bcd301b9c799507d034f7c84e7eddac911c/Preferences/Spire.psd -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Spire: Siri installer. 2 | 3 | Note: Spire's source code is provided for reference purposes only. Modification and redistribution are *not* permitted. 4 | -------------------------------------------------------------------------------- /SPLogging.h: -------------------------------------------------------------------------------- 1 | 2 | #define SPLog(...) ((^{printf("%s\n", [[NSString stringWithFormat:__VA_ARGS__] UTF8String]);fflush(stdout);})()) 3 | 4 | -------------------------------------------------------------------------------- /SPPreferences.h: -------------------------------------------------------------------------------- 1 | 2 | #import 3 | 4 | typedef NSDictionary SPPreferences; 5 | 6 | static NSDictionary *SPLoadPreferences() { 7 | return [NSDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/Preferences/com.chpwn.spire.preferences.plist"]; 8 | } 9 | 10 | static NSString *SPPreferencesGetProxyURL(SPPreferences *preferences) { 11 | return [preferences objectForKey:@"SPProxyURL"]; 12 | } 13 | 14 | static BOOL SPPreferencesHasProxyURL(SPPreferences *preferences) { 15 | NSString *proxy = SPPreferencesGetProxyURL(preferences); 16 | return proxy != nil && [[proxy stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] length] > 0; 17 | } 18 | 19 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | - blog posts, more info/help pages, "why do i need a proxy" info page 2 | -------------------------------------------------------------------------------- /layout/DEBIAN/control: -------------------------------------------------------------------------------- 1 | Package: com.chpwn.spire 2 | Name: Spire 3 | Section: System 4 | Description: A simple Siri installer. 5 | Version: 1.0.1 6 | Icon: file:///Library/PreferenceBundles/SpirePreferences.bundle/SpirePreferences@2x.png 7 | Pre-Depends: firmware (>= 5.0), firmware (<< 5.1) 8 | Conflicts: gsc.ipad, semitether, com.iphonerepocenter.enablemtgesturestheme, com.brbortscheller.homewallpaperkiller, com.brbortscheller.speedbooster, com.iphonerepocenter.disablemultitasking4xtheme, com.modmyi.ipadvoicecontrolenabler, com.modmyi.multitaskingdisabler, com.modmyi.windows7bluepad3as, com.modmyi.windows7bluepadas 9 | Depends: mobilesubstrate, preferenceloader 10 | Architecture: iphoneos-arm 11 | Depiction: http://chpwn.com/cydia/spire.html 12 | Homepage: http://chpwn.com/cydia/spire.html 13 | Author: chpwn 14 | Maintainer: chpwn 15 | Sponsor: thebigboss.org 16 | Tag: purpose::extension 17 | dev: chpwn 18 | -------------------------------------------------------------------------------- /layout/DEBIAN/extrainst_: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | declare -a cydia 4 | cydia=($CYDIA) 5 | 6 | if [[ $1 == install ]]; then 7 | # XXX: this is not a good test as future devices might include siri 8 | if [[ "$(uname -m)" == "iPhone4,1" ]]; then 9 | echo "Not re-installing Siri on an iPhone 4S." 10 | else 11 | # install only on install, not if upgrading, etc. 12 | # FIXME: for future ugprades, this logic may need to change 13 | SpireInstaller 14 | 15 | if [ $? = 0 ]; then 16 | # force a reboot on a successful install 17 | if [[ ${CYDIA+@} ]]; then 18 | eval "echo 'finish:reboot' >&${cydia[0]}" 19 | fi 20 | 21 | exit 0 22 | else 23 | # cleanup to remove partial installs 24 | SpireRemover 25 | 26 | exit 1 27 | fi 28 | fi 29 | fi 30 | 31 | 32 | -------------------------------------------------------------------------------- /layout/DEBIAN/prerm: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | declare -a cydia 4 | cydia=($CYDIA) 5 | 6 | if [[ $1 == remove ]]; then 7 | # XXX: this is not a good test as future devices might include siri 8 | if [[ "$(uname -m)" == "iPhone4,1" ]]; then 9 | echo "Not removing Siri on an iPhone 4S." 10 | else 11 | # FIXME: this may need to be changed when we have updates 12 | SpireRemover 13 | 14 | # force a reboot after uninstallation 15 | if [[ ${CYDIA+@} ]]; then 16 | eval "echo 'finish:reboot' >&${cydia[0]}" 17 | fi 18 | fi 19 | fi 20 | 21 | exit 0 22 | 23 | -------------------------------------------------------------------------------- /layout/System/Library/Extensions/IMGSGX535GLDriver.bundle/IMGSGX535GLDriver: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/grp/Spire/33e26bcd301b9c799507d034f7c84e7eddac911c/layout/System/Library/Extensions/IMGSGX535GLDriver.bundle/IMGSGX535GLDriver --------------------------------------------------------------------------------